updated on Thu Jan 26 16:09:46 UTC 2012
[aur-mirror.git] / archbootstrap-ee / archbootstrap-ee.sh
blobf342d2b02661c37752c36103b1b00da3d4ca7c33
1 #!/bin/bash
3 #####################################################
4 # This program is licensed under GPL v2 only #
5 # See LICENSE for more details #
6 #####################################################
8 source /etc/makepkg.conf
11 function GetCorePkgs {
12 if [ "${PACKAGES}" ]; then
13 cat ${PACKAGES}
14 else
15 pacman -Sql core
19 function BootstrapCore {
20 COREPKGS=$(GetCorePkgs)
22 mkdir -p ${TMPROOT}/var/lib/pacman/
23 mkdir -p ${TMPROOT}/dev
24 mkdir -p ${TMPROOT}/etc
25 mount --bind /dev ${TMPROOT}/dev
26 echo "[core]" > ${TMPROOT}/etc/pacman.conf.bootstrap
27 echo "Server = $MIRROR" >> ${TMPROOT}/etc/pacman.conf.bootstrap
28 echo "[extra]" >> ${TMPROOT}/etc/pacman.conf.bootstrap
29 echo "Server = $MIRROR" >> ${TMPROOT}/etc/pacman.conf.bootstrap
30 pacman -Sy --verbose --root ${TMPROOT} --config ${TMPROOT}/etc/pacman.conf.bootstrap --noconfirm --cachedir ${PKGCACHE}
31 pacman -S $COREPKGS --cachedir ${PKGCACHE} --root ${TMPROOT}/ --config ${TMPROOT}/etc/pacman.conf.bootstrap
32 umount ${TMPROOT}/dev
33 rm ${TMPROOT}/etc/pacman.conf.bootstrap
36 function DisplaySyntax {
37 echo 'Usage: archbootstrap-ee --target=<dir> [--arch=<arch>] [--mirror=<url>] [--pkgcache=<dir>] [--packages=<file>]'
38 exit 1
41 if [ "$(whoami)" != "root" ]; then
42 echo "You need to be root."
43 exit 1
46 echo "Archbootstrap-ee 0.5"
47 echo "Bootstraps a new Arch Linux system."
48 echo
50 TARCH=$(uname -m)
51 TMPROOT=""
52 MIRROR=""
53 PKGCACHE=""
54 PACKAGES=""
56 for i in $@; do
57 if [ ${i/--arch/} != $i ]; then
58 TARCH=${i/--arch=/}
60 if [ ${i/--target/} != $i ]; then
61 TMPROOT=${i/--target=/}
63 if [ ${i/--mirror/} != $i ]; then
64 MIRROR=${i/--mirror=/}
66 if [ ${i/--pkgcache/} != $i ]; then
67 PKGCACHE=${i/--pkgcache=/}
69 if [ ${i/--packages/} != $i ]; then
70 PACKAGES=${i/--packages=/}
72 done
74 [ "$1" == "--help" ] && DisplaySyntax
75 [ -z "${TARCH}" ] && DisplaySyntax
76 [ -z "${TMPROOT}" ] && DisplaySyntax
77 [ -z "${MIRROR}" ] && MIRROR="ftp://ftp.archlinux.org/\$repo/os/$TARCH"
80 if [ -z "${PKGCACHE}" ]; then
81 if [ "${CARCH}" == "${TARCH}" ]; then
82 PKGCACHE=/var/cache/pacman/pkg
83 else
84 if [ "${TARCH}" == "i686" ]; then
85 PKGCACHE=/var/cache/pacman/pkg32
87 if [ "${TARCH}" == "x86_64" ]; then
88 PKGCACHE=/var/cache/pacman/pkg64
91 if [ -z "${PKGCACHE}" ]; then
92 echo "Archbootstrap does not support this host/target architecture."
93 exit 1
98 echo "Bootstrap summary:"
99 echo "Host architecture: $CARCH"
100 echo "Target architecture: $TARCH"
101 echo "Target directory: $TMPROOT"
102 echo "Mirror: $MIRROR"
103 echo "Package cache directory: $PKGCACHE"
104 [ "${PACKAGES}" ] && echo "Package list: ${PACKAGES}"
106 BootstrapCore