diff -Nur run.orig/cachepacs run/cachepacs --- run.orig/cachepacs 1970-01-01 00:00:00.000000000 +0000 +++ run/cachepacs 2008-08-29 02:34:57.000000000 +0000 @@ -0,0 +1,139 @@ +#! /bin/bash +# +# cachepacs - install pkgs to cache dir, but don't isntall +# +# Author: James Meyer (based on inpacs) + + +# Working directory: +TMPDIR=/tmp/inpacs$$ +# File containing (filtered) list of base packages + added packages +basepacks=${TMPDIR}/basepacks + +APP="$( basename $0 )" + +exitfunc () { + # Remove temporary files + rm -rf ${TMPDIR} + exit $1 +} + +# Default pacman db path (this is a statement, not a configuration, so +# do not change it!) +DBPATH="/var/lib/pacman" + +# Default package cache, on the target +TARGETCACHE="${CACHE}" +# A host or remote package cache: +HOSTCACHE="" +# Absolute /path/to/file containing list of packages for 2nd install phase: +ADDEDPACKS="" +# Source file for base package list: +BASEPACKSFILE="" +# Source file for list of vetoed base packages: +VETOFILE="" +# Source directory for pacman database directories: +DBDIR="" +# pacman executable: +PACMANX="pacman -f" +# pacman configuration file +PACMANK="/etc/pacman.conf" + +checkfile () +{ + f=$( readlink -m $1 ) + if ! [ -f "${f}" ]; then + echo "ERROR: File doesn't exist: ${f}" + exitfunc + fi +} + +checkdir () +{ + f=$( readlink -m $1 ) + if ! [ -d "${f}" ]; then + echo "ERROR: Directory doesn't exist: ${f}" + exitfunc + fi +} + + +while getopts ":k:a:c:b:x:y:P:" Option +do + case ${Option} in + k ) checkfile ${OPTARG} + PACMANK=${f} ;; + a ) checkfile ${OPTARG} + CACHEPACKSFILE=${f} ;; + y ) checkdir ${OPTARG} + DBDIR=${f} ;; + P ) checkfile ${OPTARG} + PACMANX=${f} ;; + #* ) usage ;; + esac +done +shift $((${OPTIND} - 1)) +INSTLDIR="$1" + + +# grep the cachedir out of the installed pacman.conf +PCCACHE=`grep CacheDir $INSTLDIR/etc/pacman.conf|cut -d= -f2|cut -d\/ -f2-` +CACHEDIR=${INSTLDIR}/$PCCACHE + +echo "INSTLDIR=${INSTLDIR}" +echo "PACMANK=${PACMANK}" +echo "CACHEDIR=${CACHEDIR}" +echo "DBDIR=${DBDIR}" +echo "PACMANX=${PACMANX}" +echo + + +# test if the script is started by root user. If not, exit +if [ $UID -ne 0 ]; then + echo "Only root can run ${APP}"; exitfunc 1 +fi + +echo "//" +echo "// downloading packages to ${CACHEDIR}" + +PACMAN="${PACMANX} --config ${PACMANK} --noconfirm" + +rm -rf ${TMPDIR} +mkdir -p ${TMPDIR} + +# Helper function for installing a list of packages +doInstall() { + mkdir -p ${INSTLDIR}/sys + mkdir -p ${INSTLDIR}/proc + mount --bind /sys ${INSTLDIR}/sys + mount --bind /proc ${INSTLDIR}/proc + ${PACMAN} -r ${INSTLDIR} -Sw $1 + RET=$? + umount ${INSTLDIR}/proc + umount ${INSTLDIR}/sys + if [ ${RET} -ne 0 ]; then + echo "//" + echo "// Package $1 FAILED." + echo "//" + return 1 + fi +} + + +PACMAN="${PACMAN} --cachedir $CACHEDIR" + +########## GET LIST OF CACHE PACKAGES +echo "//" +echo "// ** Getting cache package list ..." +if [ -n "${CACHEPACKSFILE}" ]; then + echo "// from: ${CACHEPACKSFILE}" + CACHEPKGS=$( cat ${CACHEPACKSFILE} | grep -v "#" ) +else + echo " no cache package file found" + exit 0 +fi + + +doInstall "${CACHEPKGS}" +if [ $? -ne 0 ]; then exitfunc 1; fi +exitfunc diff -Nur run.orig/inpacs run/inpacs --- run.orig/inpacs 2008-08-10 10:51:15.000000000 +0000 +++ run/inpacs 2008-08-29 02:29:31.000000000 +0000 @@ -116,7 +116,7 @@ # Source directory for pacman database directories: DBDIR="" # pacman executable: -PACMANX="pacman" +PACMANX="pacman -f" # pacman configuration file PACMANK="/etc/pacman.conf" diff -Nur run.orig/jams.larch.patch run/jams.larch.patch --- run.orig/jams.larch.patch 1970-01-01 00:00:00.000000000 +0000 +++ run/jams.larch.patch 2008-08-29 02:34:34.000000000 +0000 @@ -0,0 +1,110 @@ +Only in run/: cachepacs +diff -wU4 run.orig/inpacs run/inpacs +--- run.orig/inpacs 2008-08-10 10:51:15.000000000 +0000 ++++ run/inpacs 2008-08-29 02:29:31.000000000 +0000 +@@ -115,9 +115,9 @@ + VETOFILE="" + # Source directory for pacman database directories: + DBDIR="" + # pacman executable: +-PACMANX="pacman" ++PACMANX="pacman -f" + # pacman configuration file + PACMANK="/etc/pacman.conf" + + checkfile () +diff -wU4 run.orig/mklarch run/mklarch +--- run.orig/mklarch 2008-08-10 10:51:15.000000000 +0000 ++++ run/mklarch 2008-08-29 02:29:45.000000000 +0000 +@@ -22,9 +22,8 @@ + # + #---------------------------------------------------------------------------- + # 2008.06.22 + +- + # directory to use for building the CD - the installation root + # It must have LOTS of space, ~ 4GB for a 700MB CD + INSTLDIR=/home/larchroot + +@@ -162,8 +161,9 @@ + fi + + for fd in $( ls -A ${INSTLDIR} ); do + rm -rf ${INSTLDIR}/${fd} ++#lookforme + done + mkdir -p ${LARCHBUILD} + + ############### Call 'inpacs' to do the installation +@@ -186,9 +186,8 @@ + exit 1 + fi + fi + INPACSO="${INPACSO} -k pacman.conf" +- + # If necessary add the larch repository to pacman.conf + if ! grep '^[larch5]' pacman.conf &>/dev/null; then + if [ -d larchrepo ]; then + larch5path="file://$( readlink -f larchrepo )" +@@ -198,14 +197,15 @@ + sysarch="i686" + fi + larch5path="${larch5path}/${sysarch}" + fi +- sed "/\[testing\]/ i \ +-[larch5]\n\ +-Server = ${larch5path}\n\ +-#larch5---\n" -i pacman.conf ++ #sed "/\[testing\]/ i \ ++ echo "[larch5] " >> pacman.conf ++ echo "Server = ${larch5path}" >> pacman.conf + fi + ++ ++ + if ! which pacman &>/dev/null; then + if ! [ -x ${startdir}/pacman ]; then + echo "ERROR: Couldn't find pacman executable" + exit 1 +@@ -217,17 +217,21 @@ + if [ $? -ne 0 ]; then exit 1; fi + + # Use build version of pacman.conf in live system, without [larch5] repository. + # This can be overwritten by a pacman.conf in the profile's overlay. ++ + rm -f ${INSTLDIR}/etc/pacman.conf +-if [ -f pacman.conf.0 ]; then ++if [ -f ${PROFILE}/pacman.conf ]; then + # This file should be used in preference to pacman.conf - it is created by + # larch-setup on non-Arch systems before commenting out the 'Include' lines. +- cp pacman.conf.0 ${INSTLDIR}/etc/pacman.conf ++ cp ${PROFILE}/pacman.conf ${INSTLDIR}/etc/pacman.conf + else + sed '/^\[larch5\]/,/^ *$/ d' ${INSTLDIR}/etc/pacman.conf + fi + ++cachepacs -a ${PROFILE}/cache_packs $INPACSO -d ${INSTLDIR} ++ ++ + # Generate glibc locales + if [ -f ${PROFILE}/locale.gen ]; then + echo + echo "********** Generating locales **********" +@@ -247,8 +251,17 @@ + fi + + echo "// ${APP} finished installation of Arch system" + echo "//" ++ ++#run script to post-process the new installation ++if [ -f ${PROFILE}/post-process.sh ] ++then ++ ${PROFILE}/post-process.sh ${INSTLDIR} ${PROFILE} ++ echo ${PROFILE}/post-process.sh ${INSTLDIR} ${PROFILE} ++fi ++ ++ + if [ -z "${NOLIVE}" ]; then + # Get live CD build functions + . ${LARCHDATA}/buildlive + mklive diff -Nur run.orig/mklarch run/mklarch --- run.orig/mklarch 2008-08-10 10:51:15.000000000 +0000 +++ run/mklarch 2008-08-29 02:29:45.000000000 +0000 @@ -23,7 +23,6 @@ #---------------------------------------------------------------------------- # 2008.06.22 - # directory to use for building the CD - the installation root # It must have LOTS of space, ~ 4GB for a 700MB CD INSTLDIR=/home/larchroot @@ -163,6 +162,7 @@ for fd in $( ls -A ${INSTLDIR} ); do rm -rf ${INSTLDIR}/${fd} +#lookforme done mkdir -p ${LARCHBUILD} @@ -187,7 +187,6 @@ fi fi INPACSO="${INPACSO} -k pacman.conf" - # If necessary add the larch repository to pacman.conf if ! grep '^[larch5]' pacman.conf &>/dev/null; then if [ -d larchrepo ]; then @@ -199,12 +198,13 @@ fi larch5path="${larch5path}/${sysarch}" fi - sed "/\[testing\]/ i \ -[larch5]\n\ -Server = ${larch5path}\n\ -#larch5---\n" -i pacman.conf + #sed "/\[testing\]/ i \ + echo "[larch5] " >> pacman.conf + echo "Server = ${larch5path}" >> pacman.conf fi + + if ! which pacman &>/dev/null; then if ! [ -x ${startdir}/pacman ]; then echo "ERROR: Couldn't find pacman executable" @@ -218,15 +218,19 @@ # Use build version of pacman.conf in live system, without [larch5] repository. # This can be overwritten by a pacman.conf in the profile's overlay. + rm -f ${INSTLDIR}/etc/pacman.conf -if [ -f pacman.conf.0 ]; then +if [ -f ${PROFILE}/pacman.conf ]; then # This file should be used in preference to pacman.conf - it is created by # larch-setup on non-Arch systems before commenting out the 'Include' lines. - cp pacman.conf.0 ${INSTLDIR}/etc/pacman.conf + cp ${PROFILE}/pacman.conf ${INSTLDIR}/etc/pacman.conf else sed '/^\[larch5\]/,/^ *$/ d' ${INSTLDIR}/etc/pacman.conf fi +cachepacs -a ${PROFILE}/cache_packs $INPACSO -d ${INSTLDIR} + + # Generate glibc locales if [ -f ${PROFILE}/locale.gen ]; then echo @@ -248,6 +252,15 @@ echo "// ${APP} finished installation of Arch system" echo "//" + +#run script to post-process the new installation +if [ -f ${PROFILE}/post-process.sh ] +then + ${PROFILE}/post-process.sh ${INSTLDIR} ${PROFILE} + echo ${PROFILE}/post-process.sh ${INSTLDIR} ${PROFILE} +fi + + if [ -z "${NOLIVE}" ]; then # Get live CD build functions . ${LARCHDATA}/buildlive