Roland McGrath 11487c5
#!/bin/bash
Roland McGrath 11487c5
Kyle McMartin 1314bc4
KORG26="http://ftp.kernel.org/pub/linux/kernel/v2.6"
Kyle McMartin 1314bc4
KORG26SNAPS="${KORG26}/snapshots"
Kyle McMartin 1314bc4
KORG26TESTING="${KORG26}/testing"
Kyle McMartin 1314bc4
Roland McGrath 11487c5
if [ ! -f /usr/bin/curl ]; then
Roland McGrath 11487c5
  echo yum install curl
Roland McGrath 11487c5
  exit 0
Roland McGrath 11487c5
fi
Roland McGrath 11487c5
Roland McGrath 11487c5
# Current kernel bits
Kyle McMartin 1314bc4
if [ `grep -c patch-2.6 sources` -ge 1 ]; then
Kyle McMartin 1314bc4
  export OLD=`grep patch-2.6 sources | awk '{print $2}' | tail -n1 | sed s/patch-// | sed s/\.bz2//`
Roland McGrath 11487c5
else
Kyle McMartin 1314bc4
  export OLD=`grep linux-2.6 sources | awk '{print $2}' | tail -n1 | sed s/linux-// | sed s/\.tar\.bz2//`
Roland McGrath 11487c5
fi
Roland McGrath 11487c5
export OLDBASE=`echo $OLD | sed s/-/\ /g | sed s/2\.6\.// | awk '{ print $1 }'`
Roland McGrath 11487c5
if [ `echo $OLD | grep -c rc` -ge 1 ]; then
Roland McGrath 11487c5
  export OLDRC=`echo $OLD | sed s/-/\ /g | sed s/rc// | awk '{ print $2 }'`
Roland McGrath 11487c5
  if [ `echo $OLD | grep -c git` -ge 1 ]; then
Roland McGrath 11487c5
    export OLDGIT=`echo $OLD | sed s/-/\ /g | sed s/git// | awk '{ print $3 }'`
Roland McGrath 11487c5
  else
Roland McGrath 11487c5
    export OLDGIT=0
Roland McGrath 11487c5
  fi
Roland McGrath 11487c5
else
Roland McGrath 11487c5
  export OLDRC=0
Roland McGrath 11487c5
  if [ `echo $OLD | grep -c git` -ge 1 ]; then
Roland McGrath 11487c5
    export OLDGIT=`echo $OLD | sed s/-/\ /g | sed s/git// | awk '{ print $2 }'`
Roland McGrath 11487c5
  else
Roland McGrath 11487c5
    export OLDGIT=0
Roland McGrath 11487c5
  fi
Roland McGrath 11487c5
fi
Roland McGrath 11487c5
Roland McGrath 11487c5
# Is there a new snapshot or prepatch ?
Roland McGrath 11487c5
NEW=`curl -s http://www.kernel.org/kdist/finger_banner | grep "latest snapshot 2.6 version"`
Roland McGrath 11487c5
if [ -z "$NEW" ] ; then
Roland McGrath 11487c5
  NEW=`curl -s http://www.kernel.org/kdist/finger_banner | grep "latest mainline 2.6 version"`
Roland McGrath 11487c5
  if [ -z "$NEW" ] ; then
Roland McGrath 11487c5
    if [ "$OLDRC" -ne 0 ] ; then
Roland McGrath 11487c5
      NEW=`curl -s http://www.kernel.org/kdist/finger_banner | grep "latest stable 2.6." | head -n1`
Roland McGrath 11487c5
    else
Roland McGrath 11487c5
      echo "No new rc or git snapshot of stable branch".
Roland McGrath 11487c5
      exit 0
Roland McGrath 11487c5
    fi
Roland McGrath 11487c5
  fi
Roland McGrath 11487c5
fi
Roland McGrath 11487c5
export N=`echo $NEW | awk '{ print $11 }'`
Roland McGrath 11487c5
if [ -z "$N" ]; then
Roland McGrath 11487c5
  # "Stable version"
Roland McGrath 11487c5
  export NEW=`echo $NEW | awk '{ print $10 }'`
Roland McGrath 11487c5
else
Roland McGrath 11487c5
  export NEW=`echo $NEW | awk '{ print $11 }'`
Roland McGrath 11487c5
fi
Roland McGrath 11487c5
Roland McGrath 11487c5
export NEWBASE=`echo $NEW | sed s/-/\ /g | sed s/2\.6\.// | awk '{ print $1 }'`
Roland McGrath 11487c5
if [ `echo $NEW | grep -c rc` -ge 1 ]; then
Roland McGrath 11487c5
  export NEWRC=`echo $NEW | sed s/-/\ /g | sed s/rc// | awk '{ print $2 }'`
Roland McGrath 11487c5
  if [ `echo $NEW | grep -c git` -ge 1 ]; then
Roland McGrath 11487c5
    export NEWGIT=`echo $NEW | sed s/-/\ /g | sed s/git// | awk '{ print $3 }'`
Roland McGrath 11487c5
  else
Roland McGrath 11487c5
    export NEWGIT=0
Roland McGrath 11487c5
  fi
Roland McGrath 11487c5
else
Roland McGrath 11487c5
  export NEWRC=0
Roland McGrath 11487c5
  if [ `echo $NEW | grep -c git` -ge 1 ]; then
Roland McGrath 11487c5
    export NEWGIT=`echo $NEW | sed s/-/\ /g | sed s/git// | awk '{ print $2 }'`
Roland McGrath 11487c5
  else
Roland McGrath 11487c5
    export NEWGIT=0
Roland McGrath 11487c5
  fi
Roland McGrath 11487c5
fi
Roland McGrath 11487c5
Roland McGrath 11487c5
echo "OLD kernel was $OLD  BASE=$OLDBASE RC=$OLDRC GIT=$OLDGIT"
Roland McGrath 11487c5
echo "NEW kernel is  $NEW  BASE=$NEWBASE RC=$NEWRC GIT=$NEWGIT"
Roland McGrath 11487c5
Roland McGrath 11487c5
if [ "$OLDRC" -eq 0 -a "$OLDGIT" -eq 0 -a "$OLDGIT" -ne "$NEWGIT" ]; then
Roland McGrath 11487c5
  echo "Rebasing from a stable release to a new git snapshot"
Roland McGrath 11487c5
  perl -p -i -e 's/^%define\ released_kernel\ 1/\%define\ released_kernel\ 0/' kernel.spec
Roland McGrath 11487c5
  perl -p -i -e 's/^%define\ rawhide_skip_docs\ 1/\%define\ rawhide_skip_docs\ 0/' kernel.spec
Roland McGrath 11487c5
  # force these to zero in this case, they may not have been when we rebased to stable
Roland McGrath 11487c5
  perl -p -i -e 's/^%define\ rcrev.*/\%define\ rcrev\ 0/' kernel.spec
Roland McGrath 11487c5
  perl -p -i -e 's/^%define\ gitrev.*/\%define\ gitrev\ 0/' kernel.spec
Roland McGrath 11487c5
fi
Roland McGrath 11487c5
Roland McGrath 11487c5
# make sure we build docs at least once per -rc kernel, shut it off otherwise
Roland McGrath 11487c5
if [ "$OLDRC" -ne 0 -a "$NEWRC" -gt "$OLDRC" ]; then
Roland McGrath 11487c5
  perl -p -i -e 's/^%define\ rawhide_skip_docs\ 1/\%define\ rawhide_skip_docs\ 0/' kernel.spec
Roland McGrath 11487c5
else
Roland McGrath 11487c5
  if [ "$NEWRC" -eq "$OLDRC" -a "$NEWGIT" -gt "$OLDGIT" ]; then
Roland McGrath 11487c5
    # common case, same -rc, new -git, make sure docs are off.
Roland McGrath 11487c5
    perl -p -i -e 's/^%define\ rawhide_skip_docs\ 0/\%define\ rawhide_skip_docs\ 1/' kernel.spec
Roland McGrath 11487c5
  fi
Roland McGrath 11487c5
fi
Roland McGrath 11487c5
Roland McGrath 11487c5
if [ "$NEWRC" -eq 0 -a "$NEWGIT" -eq 0 ]; then
Roland McGrath 11487c5
  echo "Rebasing from -rc to final release."
Roland McGrath 11487c5
  perl -p -i -e 's/^%define\ released_kernel\ 0/\%define\ released_kernel\ 1/' kernel.spec
Roland McGrath 11487c5
  perl -p -i -e 's/^%define\ rawhide_skip_docs\ 1/\%define\ rawhide_skip_docs\ 0/' kernel.spec
Roland McGrath 11487c5
  export OLD_TARBALL_BASE=$(($OLDBASE-1))
Roland McGrath 11487c5
  perl -p -i -e 's/^%define\ base_sublevel\ $ENV{OLD_TARBALL_BASE}/%define\ base_sublevel\ $ENV{NEWBASE}/' kernel.spec
Roland McGrath 11487c5
  perl -p -i -e 's/^%define\ rcrev.*/\%define\ rcrev\ 0/' kernel.spec
Roland McGrath 11487c5
  perl -p -i -e 's/^%define\ gitrev.*/\%define\ gitrev\ 0/' kernel.spec
Roland McGrath 11487c5
Kyle McMartin 1314bc4
  grep -v kernel-2.6.$OLD_TARBALL_BASE .gitignore >.gitignore.tmp ; mv .gitignore.tmp .gitignore
Kyle McMartin 1314bc4
  echo kernel-2.6.$NEWBASE >> .gitignore
Roland McGrath 11487c5
Kyle McMartin 1314bc4
  for i in sources .gitignore
Roland McGrath 11487c5
  do
Roland McGrath 11487c5
   grep -v linux-2.6.$OLD_TARBALL_BASE.tar.bz2 $i > .$i.tmp; mv .$i.tmp $i
Roland McGrath 11487c5
   grep -v patch-2.6.$OLDBASE-rc$OLDRC.bz2 $i > .$i.tmp; mv .$i.tmp $i
Roland McGrath 11487c5
   grep -v patch-2.6.$OLDBASE-rc$OLDRC-git$OLDGIT.bz2 $i > .$i.tmp; mv .$i.tmp $i
Roland McGrath 11487c5
  done
Roland McGrath 11487c5
Roland McGrath 11487c5
  rm -f linux-2.6.$OLD_TARBALL_BASE.tar.bz2
Roland McGrath 11487c5
  rm -f patch-2.6.$OLDBASE-rc$OLDRC.bz2
Roland McGrath 11487c5
  rm -f patch-2.6.$OLDBASE-rc$OLDRC-git$OLDGIT.bz2
Roland McGrath 11487c5
Kyle McMartin 1314bc4
  curl -O $KORG26/linux-$NEW.tar.bz2
Kyle McMartin 1314bc4
  fedpkg upload linux-$NEW.tar.bz2
Roland McGrath 11487c5
Roland McGrath 11487c5
  exit 1
Roland McGrath 11487c5
fi
Roland McGrath 11487c5
Roland McGrath 11487c5
if [ "$OLDRC" != "$NEWRC" ]; then
Roland McGrath 11487c5
  echo "Different rc. Rebasing from $OLDRC to $NEWRC"
Roland McGrath 11487c5
  perl -p -i -e 's/^%define\ rcrev.*/\%define\ rcrev\ $ENV{"NEWRC"}/' kernel.spec
Kyle McMartin 1314bc4
  perl -p -i -e 's/$ENV{OLDBASE}-rc$ENV{OLDRC}.bz2/$ENV{NEWBASE}-rc$ENV{NEWRC}.bz2/' .gitignore
Roland McGrath 11487c5
  grep -v patch-2.6.$OLDBASE-rc$OLDRC.bz2 sources > .sources.tmp; mv .sources.tmp sources
Kyle McMartin 1314bc4
  grep -v patch-2.6.$OLDBASE-rc$OLDRC-git$OLDGIT.bz2 .gitignore >.gitignore.tmp ; mv .gitignore.tmp .gitignore
Kyle McMartin 1314bc4
  if [ `grep -c patch-2.6.$NEWBASE-rc$NEWRC.bz2 sources` -eq 0 ]; then
Kyle McMartin 1314bc4
    echo patch-2.6.$NEWBASE-rc$NEWRC.bz2 >> .gitignore
Roland McGrath 11487c5
  fi
Roland McGrath 11487c5
  rm -f patch-2.6.$OLDBASE-rc$OLDRC.bz2
Kyle McMartin 1314bc4
Kyle McMartin 1314bc4
  curl -O $KORG26TESTING/patch-2.6.$NEWBASE-rc$NEWRC.bz2
Kyle McMartin b2d50f4
  fedpkg upload patch-2.6.$NEWBASE-rc$NEWRC.bz2
Roland McGrath 11487c5
Roland McGrath 11487c5
  # Another awkward (albeit unlikely) corner case.
Roland McGrath 11487c5
  # Moving from say 26-rc3-git1 to 26-rc4-git1
Roland McGrath 11487c5
  # The above will grab the new -rc, but the below will
Roland McGrath 11487c5
  # think that the -git hasn't changed.
Roland McGrath 11487c5
  # Fudge around this, by pretending the old git was something crazy.
Roland McGrath 11487c5
  OLDGIT=99
Roland McGrath 11487c5
fi
Roland McGrath 11487c5
Roland McGrath 11487c5
if [ "$OLDGIT" != "$NEWGIT" ]; then
Roland McGrath 11487c5
  if [ "$OLDRC" -eq 0 -a "$OLDGIT" -eq 0 ]; then
Roland McGrath 11487c5
    echo "Rebasing to pre-rc git$NEWGIT"
Roland McGrath 11487c5
  else
Roland McGrath 11487c5
    echo "Different git. Rebasing from git$OLDGIT to git$NEWGIT"
Roland McGrath 11487c5
  fi
Roland McGrath 11487c5
  perl -p -i -e 's/^%define\ gitrev.*/\%define\ gitrev\ $ENV{"NEWGIT"}/' kernel.spec
Roland McGrath 11487c5
  if [ "$OLDGIT" -ne 0 ]; then
Roland McGrath 11487c5
    if [ "$NEWGIT" -ne 0 ]; then
Kyle McMartin 1314bc4
      perl -p -i -e 's/$ENV{OLD}/$ENV{NEW}/' .gitignore
Roland McGrath 11487c5
    fi
Roland McGrath 11487c5
    grep -v patch-$OLD.bz2 sources > .sources.tmp; mv .sources.tmp sources
Roland McGrath 11487c5
  else
Kyle McMartin 1314bc4
    echo patch-$NEW.bz2 >> .gitignore
Roland McGrath 11487c5
  fi
Roland McGrath 11487c5
Kyle McMartin 1314bc4
  if [ "$NEWGIT" -ne 0 ]; then
Kyle McMartin 1314bc4
  	curl -O $KORG26SNAPS/patch-$NEW.bz2
Kyle McMartin 1314bc4
  fi
Kyle McMartin 1314bc4
  fedpkg upload patch-$NEW.bz2
Roland McGrath 11487c5
Roland McGrath 11487c5
  if [ "$OLDGIT" -ne 0 ]; then
Roland McGrath 11487c5
    rm -f patch-$OLD.bz2
Roland McGrath 11487c5
  fi
Roland McGrath 11487c5
fi
Roland McGrath 11487c5
Roland McGrath 11487c5
if [ "$OLDRC" != "$NEWRC" -o "$OLDGIT" != "$NEWGIT" ]; then
Roland McGrath 11487c5
  perl -p -i -e 's|^ApplyPatch\ git-linus.diff|#ApplyPatch\ git-linus.diff|' kernel.spec
Roland McGrath 11487c5
  > git-linus.diff
Kyle McMartin 1314bc4
  fedpkg clog
Roland McGrath 11487c5
  exit 1
Roland McGrath 11487c5
else
Roland McGrath 11487c5
  exit 0
Roland McGrath 11487c5
fi