index : archinstall32 | |
Archlinux32 installer | gitolite user |
summaryrefslogtreecommitdiff |
-rw-r--r-- | make_offline | 71 |
diff --git a/make_offline b/make_offline new file mode 100644 index 00000000..0b79871b --- /dev/null +++ b/make_offline @@ -0,0 +1,71 @@ +#!/bin/bash + +work_dir=$1 +arch=$2 + +# A func to download, build ... +build_aur () { + old_dir=`pwd` + # Prep with a build-user: + useradd -m -G wheel builder + sed -i 's/# %wheel ALL=(ALL) NO/%wheel ALL=(ALL) NO/' /etc/sudoers + + cd /tmp + rm -rf $1 $1.tar.gz + wget "https://aur.archlinux.org/cgit/aur.git/snapshot/$1.tar.gz" + tar xvzf "$1.tar.gz" + + cd $1 + build_dir=$(pwd) + chown -R builder.builder /tmp/$1 + echo " => Buiilding $1" + su - builder -c "(cd ${build_dir}; makepkg -s --noconfirm)" >/dev/null 2>&1 + + if [[ -n $3 ]]; then + echo " => Adding $1 to local AUR mirror" + mkdir -p $3 + sh -c "cp *.xz $3/$1.pkg.tar.xz" + sh -c "repo-add $3/aur_offline.db.tar.gz $3/*.xz" + if [[ -z $(cat ${old_dir}/packages.both | grep $1) ]]; then + echo " => Adding $1 to packages.both (from AUR)" + echo "$1" >> ${old_dir}/packages.both + fi + fi + + sh -c "mv *.xz ${old_dir}/$2/$1.pkg.tar.xz" + + cd ${old_dir} + userdel builder + rm -rf /home/builder + rm -rf /tmp/$1 + rm /tmp/$1.tar.gz +} + +echo "Starting to sync upstream changes to mirror." + +mkdir -p ${work_dir}/${arch}/airootfs/srv/http/archlinux/arch_offline/os/x86_64 +rm -rf /tmp/sync /tmp/local + +echo " => Retrieving packages" +pacman --noconfirm --dbpath /tmp/ -Syu -w --cachedir ${work_dir}/${arch}/airootfs/srv/http/archlinux/arch_offline/os/${arch} base base-devel syslinux efitools haveged intel-ucode memtest86+ mkinitcpio-nfs-utils nbd zsh git python python-systemd nano sudo iptables dhclient dnsmasq openssh sshfs openssl openvpn gcc openvpn powerdns postgresql sqlite go c-ares http-parser libuv nodejs-less mariadb memcached bzip2 glib2 libev lua51 ragel zlib >/dev/null 2>&1 + +echo " => Retrieving ISO specific packages" +pacman --noconfirm --dbpath /tmp/ -Syu -w --cachedir ${work_dir}/${arch}/airootfs/srv/http/archlinux/arch_offline/os/${arch} $(cat ${work_dir}/../packages.both) + +echo " => Building AUR (Adding packages to packages.both as we go along)" +build_aur "gogs-git" "${work_dir}/${arch}/airootfs/srv/http/archlinux/arch_offline/os/${arch}" +build_aur "lighttpd2-git" "${work_dir}/${arch}/airootfs/srv/http/archlinux/arch_offline/os/${arch}" "/tmp/aur_offline" + +if [[ -z $(cat ${work_dir}/pacman.conf | grep '\[aur_offline\]') ]]; then + echo "Adding offline mirror to build bubble" + echo "[aur_offline]" >> ${work_dir}/pacman.conf + echo "Server = file:///tmp/aur_offline" >> ${work_dir}/pacman.conf + echo "SigLevel = Optional TrustAll" >> ${work_dir}/pacman.conf +fi + +echo " => Adding packages to offline database" +sh -c "repo-add --new ${work_dir}/${arch}/airootfs/srv/http/archlinux/arch_offline/os/${arch}/arch_offline.db.tar.gz ${work_dir}/${arch}/airootfs/srv/http/archlinux/arch_offline/os/${arch}/*.pkg.tar.xz" >/dev/null 2>&1 + +pacman --config ${work_dir}/pacman.conf -Sy +pacman -Sy +echo "Done syncing offline mirror." |