[Fai-commit] r6524 - trunk/examples/simple/basefiles

Thomas Lange lange at alioth.debian.org
Thu May 5 07:20:08 UTC 2011


Author: lange
Date: 2011-05-05 07:19:51 +0000 (Thu, 05 May 2011)
New Revision: 6524

Added:
   trunk/examples/simple/basefiles/mk-basefile
Removed:
   trunk/examples/simple/basefiles/Makefile
Log:
replace Makefile implementation with shell script


Deleted: trunk/examples/simple/basefiles/Makefile
===================================================================
--- trunk/examples/simple/basefiles/Makefile	2011-05-03 17:34:37 UTC (rev 6523)
+++ trunk/examples/simple/basefiles/Makefile	2011-05-05 07:19:51 UTC (rev 6524)
@@ -1,123 +0,0 @@
-# basefiles/Makefile (c) 2011 Michael Goetze <mgoetze at mgoetze.net>
-#
-# Usage example: sudo make SQUEEZE64.tar.xz
-#
-# This Makefile can build .tar.xz and .tar.gz basefiles for:
-# Debian GNU/Linux 6.0 (SQUEEZE32, SQUEEZE64)
-# Ubuntu 10.04 (LUCID32, LUCID64)
-# CentOS 5 (CENTOS5_32, CENTOS5_64)
-#
-# Packages you might want to install to use this Makefile:
-# debootstrap, rinse, xz-utils
-
-ifndef BASEFILEDIR
-BASEFILEDIR:=$(shell mktemp -d /tmp/basefiles.XXXXXXXX)
-endif
-export BASEFILEDIR
-MIRROR_DEBIAN=http://cdn.debian.net/debian/
-MIRROR_UBUNTU=http://ftp.halifax.rwth-aachen.de/ubuntu/
-#MIRROR_CENTOS=http://mirror.netcologne.de/centos/
-# For the first stage, set the CentOS mirror in /etc/rinse/rinse.conf
-# For the second stage, it is not so easy, due to #612164
-EXCLUDE_SQUEEZE=isc-dhcp-client,isc-dhcp-common,info,tasksel,tasksel-data
-EXCLUDE_LUCID=dhcp3-client,dhcp3-common
-RINSEOPT_CENTOS=--distribution centos-5
-XZ=xz -8
-GZ=gzip -9
-
-.PHONY: check cleanup-deb cleanup-rinse all32 all64 all
-
-check::
-	@if [ `id -u` != 0 ]; then echo "You must be root to create chroots."; exit 1; fi
-	@mknod ${BASEFILEDIR}/test-dev-null c 1 3 || (echo "Cannot create device files on ${BASEFILEDIR}, aborting."; rm -rf ${BASEFILEDIR}; exit 1)
-	@echo test > ${BASEFILEDIR}/test-dev-null || (echo "Cannot use device files on ${BASEFILEDIR}, aborting."; rm -rf ${BASEFILEDIR}; exit 1)
-	@rm -f ${BASEFILEDIR}/test-dev-null
-
-cleanup-deb::
-	chroot ${BASEFILEDIR} aptitude clean
-	rm ${BASEFILEDIR}/etc/hostname
-	rm ${BASEFILEDIR}/etc/resolv.conf
-	rm ${BASEFILEDIR}/etc/udev/rules.d/70-persistent-net.rules || true
-	rm ${BASEFILEDIR}/var/lib/apt/lists/*_*
-
-cleanup-rinse::
-	rm ${BASEFILEDIR}/etc/resolv.conf
-	cp ${BASEFILEDIR}/etc/modprobe.d/modprobe.conf.dist ${BASEFILEDIR}/etc/modprobe.conf
-
-CENTOS5_32.tar.xz: check
-	linux32 rinse --directory ${BASEFILEDIR} ${RINSEOPT_CENTOS} --arch i386
-	$(MAKE) cleanup-rinse
-	tar --one-file-system -C ${BASEFILEDIR} -cf - . | ${XZ} > $@
-	rm -rf ${BASEFILEDIR}
-
-CENTOS5_32.tar.gz: check
-	linux32 rinse --directory ${BASEFILEDIR} ${RINSEOPT_CENTOS} --arch i386
-	$(MAKE) cleanup-rinse
-	tar --one-file-system -C ${BASEFILEDIR} -cf - . | ${GZ} > $@
-	rm -rf ${BASEFILEDIR}
-
-CENTOS5_64.tar.xz: check
-	rinse --directory ${BASEFILEDIR} ${RINSEOPT_CENTOS} --arch amd64
-	$(MAKE) cleanup-rinse
-	tar --one-file-system -C ${BASEFILEDIR} -cf - . | ${XZ} > $@
-	rm -rf ${BASEFILEDIR}
-
-CENTOS5_64.tar.gz: check
-	rinse --directory ${BASEFILEDIR} ${RINSEOPT_CENTOS} --arch amd64
-	$(MAKE) cleanup-rinse
-	tar --one-file-system -C ${BASEFILEDIR} -cf - . | ${GZ} > $@
-	rm -rf ${BASEFILEDIR}
-
-LUCID32.tar.xz: check
-	debootstrap --arch i386 --exclude=${EXCLUDE_LUCID} lucid ${BASEFILEDIR} ${MIRROR_UBUNTU}
-	$(MAKE) cleanup-deb
-	tar --one-file-system -C ${BASEFILEDIR} -cf - . | ${XZ} > $@
-	rm -rf ${BASEFILEDIR}
-
-LUCID32.tar.gz: check
-	debootstrap --arch i386 --exclude=${EXCLUDE_LUCID} lucid ${BASEFILEDIR} ${MIRROR_UBUNTU}
-	$(MAKE) cleanup-deb
-	tar --one-file-system -C ${BASEFILEDIR} -cf - . | ${GZ} > $@
-	rm -rf ${BASEFILEDIR}
-
-LUCID64.tar.xz: check
-	debootstrap --arch amd64 --exclude=${EXCLUDE_LUCID} lucid ${BASEFILEDIR} ${MIRROR_UBUNTU}
-	$(MAKE) cleanup-deb
-	tar --one-file-system -C ${BASEFILEDIR} -cf - . | ${XZ} > $@ 
-	rm -rf ${BASEFILEDIR}
-
-LUCID64.tar.gz: check
-	debootstrap --arch amd64 --exclude=${EXCLUDE_LUCID} lucid ${BASEFILEDIR} ${MIRROR_UBUNTU}
-	$(MAKE) cleanup-deb
-	tar --one-file-system -C ${BASEFILEDIR} -cf - . | ${GZ} > $@ 
-	rm -rf ${BASEFILEDIR}
-
-SQUEEZE32.tar.xz: check
-	debootstrap --arch i386 --exclude=${EXCLUDE_SQUEEZE} squeeze ${BASEFILEDIR} ${MIRROR_DEBIAN}
-	$(MAKE) cleanup-deb
-	tar --one-file-system -C ${BASEFILEDIR} -cf - . | ${XZ} > $@
-	rm -rf ${BASEFILEDIR}
-
-SQUEEZE32.tar.gz: check
-	debootstrap --arch i386 --exclude=${EXCLUDE_SQUEEZE} squeeze ${BASEFILEDIR} ${MIRROR_DEBIAN}
-	$(MAKE) cleanup-deb
-	tar --one-file-system -C ${BASEFILEDIR} -cf - . | ${GZ} > $@
-	rm -rf ${BASEFILEDIR}
-
-SQUEEZE64.tar.xz: check
-	debootstrap --arch amd64 --exclude=${EXCLUDE_SQUEEZE} squeeze ${BASEFILEDIR} ${MIRROR_DEBIAN}
-	$(MAKE) cleanup-deb
-	tar --one-file-system -C ${BASEFILEDIR} -cf - . | ${XZ} > $@ 
-	rm -rf ${BASEFILEDIR}
-
-SQUEEZE64.tar.gz: check
-	debootstrap --arch amd64 --exclude=${EXCLUDE_SQUEEZE} squeeze ${BASEFILEDIR} ${MIRROR_DEBIAN}
-	$(MAKE) cleanup-deb
-	tar --one-file-system -C ${BASEFILEDIR} -cf - . | ${GZ} > $@ 
-	rm -rf ${BASEFILEDIR}
-
-all32: CENTOS5_32.tar.xz LUCID32.tar.xz SQUEEZE32.tar.xz
-
-all64: CENTOS5_64.tar.xz LUCID64.tar.xz SQUEEZE64.tar.xz
-
-all: all32 all64

Added: trunk/examples/simple/basefiles/mk-basefile
===================================================================
--- trunk/examples/simple/basefiles/mk-basefile	                        (rev 0)
+++ trunk/examples/simple/basefiles/mk-basefile	2011-05-05 07:19:51 UTC (rev 6524)
@@ -0,0 +1,228 @@
+#! /bin/bash
+
+# mk-basefile, create basefiles for some distributions
+#
+# Thomas Lange, Uni Koeln, 2011
+# based on the Makefile implementation of Michael Goetze
+#
+# Usage example:  fai-mk-basefile -J SQUEEZE64
+# This will create a SQUEEZE64.tar.xz basefile.
+
+# Supported distributions (each i386/amd64):
+# Debian GNU/Linux 6.0
+# Ubuntu 10.04
+# CentOS 5
+# Scientific Linux Cern 5
+#
+# Packages you might want to install to use this command:
+# debootstrap, rinse, xz-utils
+
+
+xtmp=$(mktemp -d /tmp/basefiles.XXXXXXXX)
+xtmp=$(mktemp -d /mnt/basefiles.XXXXXXXX)
+if [ $? -eq 1 ]; then
+    echo "mktemp failed. Aborting."
+    exit 2
+fi
+
+# Define your local mirros here
+# For the first stage, set the CentOS/SLC mirror in /etc/rinse/rinse.conf
+MIRROR_DEBIAN=http://cdn.debian.net/debian/
+MIRROR_DEBIAN=http://kueppers/debian/
+MIRROR_UBUNTU=http://ftp.halifax.rwth-aachen.de/ubuntu/
+MIRROR_CENTOS=http://mirror.netcologne.de/
+#MIRROR_CENTOS=http://kueppers
+#MIRROR_SLC=http://kueppers
+
+EXCLUDE_SQUEEZE=isc-dhcp-client,isc-dhcp-common,info,tasksel,tasksel-data
+EXCLUDE_LUCID=dhcp3-client,dhcp3-common
+
+
+
+setarch() {
+
+    l32=
+    if [ X$1 = Xi386 ]; then
+	l32=linux32
+    fi
+}
+
+check() {
+
+    if [ `id -u` != 0 ]; then
+	echo "You must be root to create chroots."
+	exit 1
+    fi
+    mknod $xtmp/test-dev-null c 1 3
+    if [ $? -eq 1 ]; then
+	echo "Cannot create device files on $xtmp, aborting."
+	rm -rf $xtmp
+	exit 1
+    fi
+    echo test > $xtmp/test-dev-null
+    if [ $? -eq 1 ]; then
+	echo "Cannot use device files on $xtmp, aborting."
+	rm -rf $xtmp
+	exit 1
+    fi
+    rm -f $xtmp/test-dev-null
+}
+
+
+mkpost-centos() {
+
+    [ -z "$MIRROR_CENTOS" ] && return
+    cat <<EOM > $xtmp/post
+#! /bin/sh
+mkdir -p $xtmp/etc/yum.repos.d/orig
+cp -p $xtmp/etc/yum.repos.d/*.repo $xtmp/etc/yum.repos.d/orig
+perl -pi -e 's,mirrorlist=,#mirrorlist=,; s,#baseurl=http://mirror.centos.org,baseurl=$MIRROR_CENTOS,;' $xtmp/etc/yum.repos.d/CentOS-Base.repo
+EOM
+    chmod 555 $xtmp/post
+}
+
+
+mkpost-slc() {
+
+    ver=$1
+    [ -z "$MIRROR_SLC"] && return
+    cat <<EOM > $xtmp/post
+#! /bin/sh
+mkdir -p $xtmp/etc/yum.repos.d/orig
+cp -p $xtmp/etc/yum.repos.d/*.repo $xtmp/etc/yum.repos.d/orig
+perl -pi -e 's,baseurl=http://linuxsoft.cern.ch,baseurl=$MIRROR_SLC,;' $xtmp/etc/yum.repos.d/slc$ver-os.repo 
+perl -pi -e 's,baseurl=http://linuxsoft.cern.ch,baseurl=$MIRROR_SLC,;' $xtmp/etc/yum.repos.d/slc$ver-updates.repo 
+
+EOM
+    chmod 555 $xtmp/post
+}
+
+
+cleanup-deb() {
+
+    chroot $xtmp aptitude clean
+    rm $xtmp/etc/hostname $xtmp/etc/resolv.conf
+    rm $xtmp/var/lib/apt/lists/*_*
+    rm -f $xtmp/etc/udev/rules.d/70-persistent-net.rules 
+}
+
+
+cleanup-rinse() {
+
+    # check if chroot works
+    echo "Installed packages in chroot:"
+    chroot $xtmp rpm -qa
+    echo -n "CHROOT rpm -qa: "
+    chroot $xtmp rpm -qa|wc -l
+
+    rm -f $xtmp/etc/resolv.conf $xtmp/post
+    if [ -d $xtmp/etc/yum.repos.d/orig ]; then
+	mv $xtmp/etc/yum.repos.d/orig/* $xtmp/etc/yum.repos.d/
+	rm -rf $xtmp/etc/yum.repos.d/orig
+    fi
+}
+
+
+tarit() {
+
+    tar --one-file-system -C $xtmp -cf - . | $zip > $target.$ext
+}
+
+
+centos() {
+
+    local arch=$1
+    local domain=$(domainname)
+
+    check
+    setarch $arch
+    mkpost-centos
+    $l32 rinse --directory $xtmp --distribution centos-5 --arch $arch --before-post-install $xtmp/post
+    domainname $domain # workaround for #613377
+    cleanup-rinse
+    tarit
+}
+
+
+slc() {
+
+    local arch=$1
+    local vers=$2
+
+    check
+    setarch $arch
+    mkpost-slc $vers
+    $l32 rinse --directory $xtmp --distribution slc-$vers --arch $arch --before-post-install $xtmp/post
+    cleanup-rinse
+    tarit
+}
+
+
+squeeze() {
+
+    local arch=$1
+
+    check
+    debootstrap --arch $arch --exclude=${EXCLUDE_SQUEEZE} squeeze $xtmp ${MIRROR_DEBIAN}
+    cleanup-deb
+    tarit
+}
+
+lucid() {
+
+    local arch=$1
+
+    check
+    debootstrap --arch $arch --exclude=${EXCLUDE_LUCID} lucid $xtmp ${MIRROR_UBUNTU}
+    cleanup-deb
+    tarit
+}
+
+
+unknown() {
+
+    echo "Unknown distribution. Aborting."
+    echo "Available:
+
+    CENTOS5_32   CENTOS5_64
+    SLC5_32      SLC5_64
+    SLC6_32      SLC6_64
+    LUCID32      LUCID64
+    SQUEEZE32    SQUEEZE64
+"
+    exit 99
+}
+
+
+# main routine
+
+ext=tar
+zip=cat
+
+while getopts zJ opt ; do
+    case "$opt" in
+	z) zip="gzip -9"; ext=tar.gz ;;
+	J) zip="xz -8" ext=tar.xz ;;
+    esac
+done
+shift $(($OPTIND - 1))
+
+
+target=$1 # also the name of the output file
+
+case "$target" in
+    CENTOS5_32) centos i386 ;;
+    CENTOS5_64) centos amd64 ;;
+    SLC5_32) slc i386 5 ;;
+    SLC5_64) slc amd64 5 ;;
+    SLC6_32) slc i386 6 ;;
+    SLC6_64) slc amd64 6 ;;
+    LUCID32) lucid i386 ;;
+    LUCID64) lucid amd64 ;;
+    SQUEEZE32) squeeze i386 ;;
+    SQUEEZE64) squeeze amd64 ;;
+    *) unknown ;;
+esac
+
+# cleanup
+rm -rf $xtmp


Property changes on: trunk/examples/simple/basefiles/mk-basefile
___________________________________________________________________
Added: svn:executable
   + *




More information about the Fai-commit mailing list