Added command line options to rebuild-kernel.sh
[systemrescuecd.git] / buildscripts / rebuild-kernel.sh
index 0ef5ad5635ee7afe9c5e6c0e8c8c97a412d8b067..546bd38d4e4fd042ed47cb29c0504abcca55352b 100755 (executable)
@@ -1,43 +1,90 @@
 #!/bin/bash
 
-imagename="$1"
+PROG="${0}"
+ISODIR=/worksrc/isofiles
+REPOSRC=/worksrc/sysresccd-src
+REPOBIN=/worksrc/sysresccd-bin
+CATALYSTDIR=/var/tmp/catalyst
 
-case ${imagename} in
+usage()
+{
+       cat <<EOF
+Usage: ${PROG} [options] <imagename>
+
+Build the distribution kernel (and other things?)
+
+imagename: rescue64 | altker32 | altker64
+
+Options:
+ -h|--help         Display this screen and exit
+ -i ISODIR         Directory containing the iso file to rebuild ($ISODIR)
+                     <isodir>/systemrescuecd-<arch>-current.iso
+ -r REPOSRC        Location of git systemrescuecd repo ($REPOSRC)
+ -b REPOBIN        ? ($REPOBIN)
+ -m CATALYSTDIR    Set catalyst's output directory ($CATALYSTDIR)
+
+Distributed under the GNU Public License version 2 - http://www.sysresccd.org
+EOF
+}
+
+while getopts "i:r:b:c:" Option
+do
+       case $Option in
+               i ) ISODIR="$OPTARG";;
+               r ) REPOSRC="$OPTARG";;
+               b ) REPOBIN="$OPTARG";;
+               c ) CATALYSTDIR="$OPTARG";;
+               * ) usage; exit 1;;  # Default, handles -h
+       esac
+done
+shift $(($OPTIND - 1))
+
+IMAGENAME="$1"
+case ${IMAGENAME} in
        rescue64)
                KERTYPE=std
-               ARCHNAME=amd64
+               ARCH=amd64
+               BASEARCH=x86
                LIBDIR=lib64
                ;;
        altker32)
                KERTYPE=alt
-               ARCHNAME=i386
+               ARCH=i386
+               BASEARCH=x86
                LIBDIR=lib
                ;;
        altker64)
                KERTYPE=alt
-               ARCHNAME=amd64
+               ARCH=amd64
+               BASEARCH=x86
                LIBDIR=lib64
                ;;
        *)
-               echo "$0: invalid argument"
+               usage
                exit 1
                ;;
 esac
+VERSION=$(cat ${REPOSRC}/overlay-squashfs-${BASEARCH}/root/version)
 
-(cd /worksrc/sysresccd-src/mainfiles ; nice catalyst -a -f sysresccd-stage2-${imagename}.spec)
+SPEC=$(cat ${REPOSRC}/mainfiles/sysresccd-stage2-${IMAGENAME}.spec \
+    | sed "s!VERSION_STAMP!${VERSION}-${KERTYPE}!" \
+    | sed "s!ISODIR!${ISODIR}!" \
+    | sed "s!REPOSRC!${REPOSRC}!" \
+    | sed "s!REPOBIN!${REPOBIN}!" \
+    )
+(cd ${REPOSRC}/mainfiles ; nice catalyst -a -f <(echo "$SPEC") )
 
-targetdir="/worksrc/sysresccd-bin/overlay-squashfs-x86/${LIBDIR}/modules"
-rootkernel=$(ls -d /var/tmp/catalyst/builds/default/livecd-stage2-${ARCHNAME}-*-${KERTYPE}/isolinux)
-rootmodule=$(ls -d /var/tmp/catalyst/tmp/default/livecd-stage2-${ARCHNAME}-*-${KERTYPE}/${LIBDIR}/modules)
+targetdir="${REPOBIN}/overlay-squashfs-x86/${LIBDIR}/modules"
+rootkernel=$(ls -d ${CATALYSTDIR}/builds/default/livecd-stage2-${ARCH}-*-${KERTYPE}/isolinux)
+rootmodule=$(ls -d ${CATALYSTDIR}/tmp/default/livecd-stage2-${ARCH}-*-${KERTYPE}/${LIBDIR}/modules)
 kerversion=$(ls ${rootmodule})
 
 echo "rootkernel=[${rootkernel}]"
 echo "rootmodule=[${rootmodule}]"
 echo "kerversion=[${rootmodule}]"
 
-echo "cp ${rootkernel}/${imagename}* /worksrc/sysresccd-bin/kernels-x86/"
-cp ${rootkernel}/${imagename}* /worksrc/sysresccd-bin/kernels-x86/
+echo "cp ${rootkernel}/${IMAGENAME}* ${REPOBIN}/kernels-x86/"
+cp ${rootkernel}/${IMAGENAME}* ${REPOBIN}/kernels-x86/
 
 echo "(cd ${rootmodule} ; tar cfj ${targetdir}/${kerversion}.tar.bz2 ${kerversion})"
 (cd ${rootmodule} ; tar cfj ${targetdir}/${kerversion}.tar.bz2 ${kerversion})
-