[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