summaryrefslogtreecommitdiff
path: root/newroot
diff options
context:
space:
mode:
Diffstat (limited to 'newroot')
-rwxr-xr-xnewroot49
1 files changed, 49 insertions, 0 deletions
diff --git a/newroot b/newroot
new file mode 100755
index 0000000..dff1003
--- /dev/null
+++ b/newroot
@@ -0,0 +1,49 @@
+#!/bin/bash
+# Copyleft 2012 - Nicolás Reynolds <fauno@parabola.nu>
+# Bootstraps a Parabola root, useful for base systems, build chroots, etc.
+# Note: this is a very basic script that let's you do whatever you want, so
+# it's not foolproof ;)
+
+# Attempt to provide some help
+if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
+ echo "Installs a Parabola root on the current dir"
+ echo "Usage: newroot [custom package1 ...]"
+ echo ""
+ echo "Environment variables:"
+ echo -e "WORKDIR \tThe install dir"
+ echo -e "LOGFILE \tAn alternate logfile ($PWD/pacman.log)"
+ echo -e "PACCACHE\tThe pacman cache (guessed)"
+ exit
+fi
+
+# Fail at any error
+set -E
+
+if [ ! -w / ]; then echo "Run as root."; exit 1; fi
+
+# Should work unless you have a messy pacman.conf
+function find_cache() {
+ grep "CacheDir\s*=\s*" /etc/pacman.conf | tail -n1 | cut -d"=" -f2 | tr -d " "
+}
+
+# Build on the current dir or WORKDIR env var
+WORKDIR="${WORKDIR:-${PWD}}"
+LOGFILE="${LOGFILE:-${WORKDIR}/pacman.log}"
+PACCACHE="${PACCACHE:-$(find_cache)}"
+# Do a last attempt to have a pacman cache
+PACCACHE="${PACCACHE:-/var/cache/pacman/pkg}"
+
+export WORKDIR LOGFILE PACCACHE
+
+function pacman() {
+ pacman -r "${WORKDIR}" \
+ --logfile "${LOGFILE}" \
+ --noconfirm \
+ --cachedir "${PACCACHE}" \
+ --config /etc/pacman.conf $@
+}
+
+# Bootstrap!
+mkdir -p "${WORKDIR}"/var/lib/pacman
+
+pacman -Sy base ${@}