diff options
Diffstat (limited to 'newroot')
-rwxr-xr-x | newroot | 49 |
1 files changed, 49 insertions, 0 deletions
@@ -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 ${@} |