Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--make_offline71
1 files changed, 71 insertions, 0 deletions
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."