archlinux: keep downloaded files in $CACHEDIR (new variable)

Do not download anything directly in template-builder root. Also do not
download and extract archlinux iso if existing file is current.
This commit is contained in:
Marek Marczykowski 2013-02-16 17:17:42 +01:00
parent 4123d2fdec
commit afc68b641c
7 changed files with 52 additions and 45 deletions

2
.gitignore vendored
View File

@ -1,5 +1,7 @@
*~ *~
appmenus appmenus
build_timestamp build_timestamp
cache_*
mnt_*
*.iso *.iso
*.fs *.fs

View File

@ -19,4 +19,6 @@ else
SCRIPTSDIR="scripts_$DISTRIBUTION" SCRIPTSDIR="scripts_$DISTRIBUTION"
fi fi
export SCRIPTSDIR CACHEDIR=cache_$DIST
export SCRIPTSDIR CACHEDIR

View File

@ -1,22 +1,25 @@
#!/bin/sh #!/bin/sh
ISO_VERSION=2013.02.01 ISO_VERSION=2013.02.01
mkdir -p $CACHEDIR
echo "Downloading Archlinux dvd..." echo "Downloading Archlinux dvd..."
wget -O "archlinux-$ISO_VERSION-dual.iso" "http://mir.archlinux.fr/iso/$ISO_VERSION/archlinux-$ISO_VERSION-dual.iso" --continue wget -N -P $CACHEDIR "http://mir.archlinux.fr/iso/$ISO_VERSION/archlinux-$ISO_VERSION-dual.iso"
echo "Verifying dvd..." echo "Verifying dvd..."
echo "If verification fails, ensure that you imported and verified the archlinux key" echo "If verification fails, ensure that you imported and verified the archlinux key"
echo "eg: gpg --recv-keys 9741E8AC" echo "eg: gpg --recv-keys 9741E8AC"
gpg --verify "./scripts_archlinux/archlinux-$ISO_VERSION-dual.iso.sig" "archlinux-$ISO_VERSION-dual.iso" || exit gpg --verify "$SCRIPTSDIR/archlinux-$ISO_VERSION-dual.iso.sig" "$CACHEDIR/archlinux-$ISO_VERSION-dual.iso" || exit
if [ "$CACHEDIR/archlinux-$ISO_VERSION-dual.iso" -nt $CACHEDIR/root-image.fs ]; then
echo "Extracting squash filesystem from DVD..." echo "Extracting squash filesystem from DVD..."
mkdir archlinux_dvd mkdir mnt_archlinux_dvd
sudo mount -o loop "archlinux-$ISO_VERSION-dual.iso" archlinux_dvd sudo mount -o loop "cache_$DIST/archlinux-$ISO_VERSION-dual.iso" mnt_archlinux_dvd
cp archlinux_dvd/arch/x86_64/root-image.fs.sfs . cp mnt_archlinux_dvd/arch/x86_64/root-image.fs.sfs $CACHEDIR/
sudo umount archlinux_dvd sudo umount mnt_archlinux_dvd
sudo mount -o loop root-image.fs.sfs archlinux_dvd sudo mount -o loop cache_$DIST/root-image.fs.sfs mnt_archlinux_dvd
cp archlinux_dvd/root-image.fs . cp mnt_archlinux_dvd/root-image.fs $CACHEDIR/
sudo umount archlinux_dvd sudo umount mnt_archlinux_dvd
rm root-image.fs.sfs rm $CACHEDIR/root-image.fs.sfs
fi

View File

@ -1,23 +1,23 @@
#!/bin/sh #!/bin/sh
echo "Mounting archlinux install system into archlinux_dvd..." echo "Mounting archlinux install system into mnt_archlinux_dvd..."
sudo mount root-image.fs archlinux_dvd sudo mount $CACHEDIR/root-image.fs mnt_archlinux_dvd
echo "Creating chroot bootstrap environment" echo "Creating chroot bootstrap environment"
sudo mount --bind $INSTALLDIR archlinux_dvd/mnt sudo mount --bind $INSTALLDIR mnt_archlinux_dvd/mnt
sudo cp /etc/resolv.conf archlinux_dvd/etc sudo cp /etc/resolv.conf mnt_archlinux_dvd/etc
echo "-> Initializing pacman keychain" echo "-> Initializing pacman keychain"
sudo ./archlinux_dvd/usr/bin/arch-chroot archlinux_dvd/ pacman-key --init sudo ./mnt_archlinux_dvd/usr/bin/arch-chroot mnt_archlinux_dvd/ pacman-key --init
sudo ./archlinux_dvd/usr/bin/arch-chroot archlinux_dvd/ pacman-key --populate sudo ./mnt_archlinux_dvd/usr/bin/arch-chroot mnt_archlinux_dvd/ pacman-key --populate
echo "-> Installing core pacman packages..." echo "-> Installing core pacman packages..."
sudo ./archlinux_dvd/usr/bin/arch-chroot archlinux_dvd/ sh -c 'pacstrap /mnt base' sudo ./mnt_archlinux_dvd/usr/bin/arch-chroot mnt_archlinux_dvd/ sh -c 'pacstrap /mnt base'
echo "-> Cleaning up bootstrap environment" echo "-> Cleaning up bootstrap environment"
sudo umount archlinux_dvd/mnt sudo umount mnt_archlinux_dvd/mnt
sudo umount archlinux_dvd sudo umount mnt_archlinux_dvd
cp scripts_"${DIST}"/resolv.conf $INSTALLDIR/etc cp $SCRIPTSDIR/resolv.conf $INSTALLDIR/etc

View File

@ -1,13 +1,13 @@
#!/bin/sh #!/bin/sh
echo "Mounting archlinux install system into archlinux_dvd..." echo "Mounting archlinux install system into mnt_archlinux_dvd..."
sudo mount root-image.fs archlinux_dvd sudo mount $CACHEDIR/root-image.fs mnt_archlinux_dvd
PKGGROUPS=`cat $SCRIPTSDIR/packages.list` PKGGROUPS=`cat $SCRIPTSDIR/packages.list`
echo "-> Installing archlinux package groups..." echo "-> Installing archlinux package groups..."
echo "-> Selected packages:" echo "-> Selected packages:"
echo "$PKGGROUPS" echo "$PKGGROUPS"
sudo ./archlinux_dvd/usr/bin/arch-chroot $INSTALLDIR pacman --needed --noconfirm -S $PKGGROUPS sudo ./mnt_archlinux_dvd/usr/bin/arch-chroot $INSTALLDIR pacman --needed --noconfirm -S $PKGGROUPS
sudo umount archlinux_dvd sudo umount mnt_archlinux_dvd

View File

@ -1,38 +1,38 @@
#!/bin/sh #!/bin/sh
echo "Mounting archlinux install system into archlinux_dvd..." echo "Mounting archlinux install system into mnt_archlinux_dvd..."
sudo mount root-image.fs archlinux_dvd sudo mount $CACHEDIR/root-image.fs mnt_archlinux_dvd
echo "--> Installing make dependencies..." echo "--> Installing make dependencies..."
sudo ./archlinux_dvd/usr/bin/arch-chroot $INSTALLDIR sh -c 'pacman -S --asdeps --needed --noconfirm binutils yajl gcc make' sudo ./mnt_archlinux_dvd/usr/bin/arch-chroot $INSTALLDIR sh -c 'pacman -S --asdeps --needed --noconfirm binutils yajl gcc make'
#echo "--> Installing yaourt..." #echo "--> Installing yaourt..."
#sudo ./archlinux_dvd/usr/bin/arch-chroot $INSTALLDIR sh -c 'cd tmp && wget https://aur.archlinux.org/packages/pa/package-query/package-query.tar.gz && tar xzvf package-query.tar.gz && cd package-query && makepkg --asroot && pacman --noconfirm -U package-query-*.pkg.tar.xz' #sudo ./mnt_archlinux_dvd/usr/bin/arch-chroot $INSTALLDIR sh -c 'cd tmp && wget https://aur.archlinux.org/packages/pa/package-query/package-query.tar.gz && tar xzvf package-query.tar.gz && cd package-query && makepkg --asroot && pacman --noconfirm -U package-query-*.pkg.tar.xz'
#sudo ./archlinux_dvd/usr/bin/arch-chroot $INSTALLDIR sh -c 'cd tmp && wget https://aur.archlinux.org/packages/ya/yaourt/yaourt.tar.gz && tar xzvf yaourt.tar.gz && cd yaourt && makepkg --asroot && pacman --noconfirm -U yaourt-*.pkg.tar.xz' #sudo ./mnt_archlinux_dvd/usr/bin/arch-chroot $INSTALLDIR sh -c 'cd tmp && wget https://aur.archlinux.org/packages/ya/yaourt/yaourt.tar.gz && tar xzvf yaourt.tar.gz && cd yaourt && makepkg --asroot && pacman --noconfirm -U yaourt-*.pkg.tar.xz'
echo "--> Preparing build environment inside the chroot..." echo "--> Preparing build environment inside the chroot..."
# Notes for qubes-vm-xen # Notes for qubes-vm-xen
# Note: we need more ram for /tmp (at least 700M of disk space for compiling XEN because of the sources...) # Note: we need more ram for /tmp (at least 700M of disk space for compiling XEN because of the sources...)
sudo sed 's:-t tmpfs -o mode=1777,strictatime,nodev,:-t tmpfs -o size=700M,mode=1777,strictatime,nodev,:' -i ./archlinux_dvd/usr/bin/arch-chroot sudo sed 's:-t tmpfs -o mode=1777,strictatime,nodev,:-t tmpfs -o size=700M,mode=1777,strictatime,nodev,:' -i ./mnt_archlinux_dvd/usr/bin/arch-chroot
sudo cp ./scripts_archlinux/build_package.sh $INSTALLDIR/etc/ sudo cp ./scripts_archlinux/build_package.sh $INSTALLDIR/etc/
sudo cp ./scripts_archlinux/CF8D4BBE.pub $INSTALLDIR/etc/ sudo cp ./scripts_archlinux/CF8D4BBE.pub $INSTALLDIR/etc/
sudo ./archlinux_dvd/usr/bin/arch-chroot $INSTALLDIR sh -c "gpg --import /etc/CF8D4BBE.pub" sudo ./mnt_archlinux_dvd/usr/bin/arch-chroot $INSTALLDIR sh -c "gpg --import /etc/CF8D4BBE.pub"
# Note: Enable x86 repos # Note: Enable x86 repos
su -c "echo '[multilib]' >> $INSTALLDIR/etc/pacman.conf" su -c "echo '[multilib]' >> $INSTALLDIR/etc/pacman.conf"
su -c "echo 'SigLevel = PackageRequired' >> $INSTALLDIR/etc/pacman.conf" su -c "echo 'SigLevel = PackageRequired' >> $INSTALLDIR/etc/pacman.conf"
su -c "echo 'Include = /etc/pacman.d/mirrorlist' >> $INSTALLDIR/etc/pacman.conf" su -c "echo 'Include = /etc/pacman.d/mirrorlist' >> $INSTALLDIR/etc/pacman.conf"
sudo ./archlinux_dvd/usr/bin/arch-chroot $INSTALLDIR sh -c "pacman -Sy" sudo ./mnt_archlinux_dvd/usr/bin/arch-chroot $INSTALLDIR sh -c "pacman -Sy"
echo "--> Compiling and installing qubes-packages..." echo "--> Compiling and installing qubes-packages..."
sudo cp ./scripts_archlinux/qubes-vm-xen.tar.gz.sig $INSTALLDIR/etc/package.sig sudo cp ./scripts_archlinux/qubes-vm-xen.tar.gz.sig $INSTALLDIR/etc/package.sig
sudo ./archlinux_dvd/usr/bin/arch-chroot $INSTALLDIR bash /etc/build_package.sh qubes-vm-xen sudo ./mnt_archlinux_dvd/usr/bin/arch-chroot $INSTALLDIR bash /etc/build_package.sh qubes-vm-xen
sudo cp ./scripts_archlinux/qubes-vm-core.tar.gz.sig $INSTALLDIR/etc/package.sig sudo cp ./scripts_archlinux/qubes-vm-core.tar.gz.sig $INSTALLDIR/etc/package.sig
sudo ./archlinux_dvd/usr/bin/arch-chroot $INSTALLDIR bash /etc/build_package.sh qubes-vm-core sudo ./mnt_archlinux_dvd/usr/bin/arch-chroot $INSTALLDIR bash /etc/build_package.sh qubes-vm-core
sudo cp ./scripts_archlinux/qubes-vm-gui.tar.gz.sig $INSTALLDIR/etc/package.sig sudo cp ./scripts_archlinux/qubes-vm-gui.tar.gz.sig $INSTALLDIR/etc/package.sig
sudo ./archlinux_dvd/usr/bin/arch-chroot $INSTALLDIR bash /etc/build_package.sh qubes-vm-gui sudo ./mnt_archlinux_dvd/usr/bin/arch-chroot $INSTALLDIR bash /etc/build_package.sh qubes-vm-gui
sudo cp ./scripts_archlinux/qubes-vm-kernel-modules.tar.gz.sig $INSTALLDIR/etc/package.sig sudo cp ./scripts_archlinux/qubes-vm-kernel-modules.tar.gz.sig $INSTALLDIR/etc/package.sig
sudo ./archlinux_dvd/usr/bin/arch-chroot $INSTALLDIR bash /etc/build_package.sh qubes-vm-kernel-modules sudo ./mnt_archlinux_dvd/usr/bin/arch-chroot $INSTALLDIR bash /etc/build_package.sh qubes-vm-kernel-modules
echo "--> Updating template fstab file..." echo "--> Updating template fstab file..."
sudo su -c "echo '/dev/mapper/dmroot / ext4 defaults,noatime 1 1' >> $INSTALLDIR/etc/fstab" sudo su -c "echo '/dev/mapper/dmroot / ext4 defaults,noatime 1 1' >> $INSTALLDIR/etc/fstab"
@ -41,4 +41,4 @@ sudo su -c "echo '/dev/xvdc1 swap swap defaults 0 0' >> $INSTALLDIR/etc/fstab"
sudo su -c "echo '/rw/home /home none noauto,bind,defaults 0 0' >> $INSTALLDIR/etc/fstab" sudo su -c "echo '/rw/home /home none noauto,bind,defaults 0 0' >> $INSTALLDIR/etc/fstab"
sudo su -c "echo '/dev/xvdd /usr/lib/modules ext3 defaults,noatime 0 0' >> $INSTALLDIR/etc/fstab" sudo su -c "echo '/dev/xvdd /usr/lib/modules ext3 defaults,noatime 0 0' >> $INSTALLDIR/etc/fstab"
sudo umount archlinux_dvd sudo umount mnt_archlinux_dvd

View File

@ -1,22 +1,22 @@
#!/bin/sh #!/bin/sh
echo "Mounting archlinux install system into archlinux_dvd..." echo "Mounting archlinux install system into mnt_archlinux_dvd..."
sudo mount root-image.fs archlinux_dvd sudo mount $CACHEDIR/root-image.fs mnt_archlinux_dvd
echo "--> Starting cleanup actions" echo "--> Starting cleanup actions"
# Remove unused packages and their dependencies (make dependencies) # Remove unused packages and their dependencies (make dependencies)
cleanuppkgs=`sudo ./archlinux_dvd/usr/bin/arch-chroot $INSTALLDIR pacman -Qdt | cut -d " " -f 1` cleanuppkgs=`sudo ./mnt_archlinux_dvd/usr/bin/arch-chroot $INSTALLDIR pacman -Qdt | cut -d " " -f 1`
sudo ./archlinux_dvd/usr/bin/arch-chroot $INSTALLDIR pacman --noconfirm -Rsc $cleanuppkgs sudo ./mnt_archlinux_dvd/usr/bin/arch-chroot $INSTALLDIR pacman --noconfirm -Rsc $cleanuppkgs
# Clean pacman cache # Clean pacman cache
sudo ./archlinux_dvd/usr/bin/arch-chroot $INSTALLDIR pacman --noconfirm -Scc sudo ./mnt_archlinux_dvd/usr/bin/arch-chroot $INSTALLDIR pacman --noconfirm -Scc
# Remove build data # Remove build data
rm $INSTALLDIR/etc/build_package.sh rm $INSTALLDIR/etc/build_package.sh
rm $INSTALLDIR/etc/CF8D4BBE.pub rm $INSTALLDIR/etc/CF8D4BBE.pub
rm $INSTALLDIR/etc/package.sig rm $INSTALLDIR/etc/package.sig
sudo umount archlinux_dvd sudo umount mnt_archlinux_dvd
#rm -f $INSTALLDIR/var/lib/rpm/__db.00* $INSTALLDIR/var/lib/rpm/.rpm.lock #rm -f $INSTALLDIR/var/lib/rpm/__db.00* $INSTALLDIR/var/lib/rpm/.rpm.lock
#yum -c $PWD/yum.conf $YUM_OPTS clean packages --installroot=$INSTALLDIR #yum -c $PWD/yum.conf $YUM_OPTS clean packages --installroot=$INSTALLDIR