# Created by Tobias Powalowski install () { ### check for root if ! [ $UID -eq 0 ]; then echo "ERROR: only works when run as root!" exit 1 fi ### check for activated testing repository if ! [ "$(grep '^\[testing\]' /etc/pacman.conf)" = "" ]; then echo "WARNING: TESTING REPOSITORY ACTIVATED" echo "-------------------------------------" echo "POSSIBILITY OF BROKEN BINARY PACKAGES ON INSTALL MEDIA!" echo "Use a chroot instead to avoid those problems." echo "5 seconds time to cancel with CTRL+C" sleep 5 fi ### begin cvs part if ! [ "${LOCALSETUP}" = "yes" ]; then CVSTREE=$(mktemp /tmp/archcvs.XXXX) rm ${CVSTREE} mkdir -p ${CVSTREE} # checkout actual CURRENT cvs export CVSROOT=${CVSCURRENT} export CVSROOT_ARCH=${CVSARCH} else CVSTREE=${CVSTREE} fi cd ${CVSTREE} if ! [ "${LOCALSETUP}" = "yes" ]; then cvs -d ${CVSROOT} co -r ${TAG} current/base/ cvs -d ${CVSROOT} co -r ${TAG} current/kernels/ MAINCVSDIR="${CVSTREE}/current" cd ${MAINCVSDIR} SEARCHCVS=$(find ./ -type d ! -name "CVS") else cd ${MAINCVSDIR} SEARCHCVS=$(find ./base -type d ! -name "CVS") SEARCHCVS="${SEARCHCVS} $(find ./kernels -type d ! -name "CVS")" fi if ! [ "${TEMPDIR}" = "" ]; then mkdir -p ${TEMPDIR}/arch/pkg/setup # Download all packages PACKAGES=$(for i in ${SEARCHCVS};do ! [ "$(echo $i | awk -F/ '{print $3}')" = "" ] && echo -n "current/$(echo $i| awk -F/ '{print $3}') ";done) if ! [ "${LOCALSETUP}" = "yes" ]; then pacman -Sy if ! [ "$(pacman -Sw --noconfirm ${PACKAGES})" ]; then echo "ABORTING: Something went wrong in package retrieving or md5sum check." exit 1 fi else DBGENERATE="$(mktemp /tmp/db-generate.XXX)" rm ${DBGENERATE} mkdir -p ${DBGENERATE} gensync ${MAINCVSDIR}/base ${DBGENERATE}/db1.db.tar.gz ${PACKAGEDIR} gensync ${MAINCVSDIR}/kernels ${DBGENERATE}/db2.db.tar.gz ${PACKAGEDIR} mkdir -p ${DBGENERATE}/real-db cd ${DBGENERATE}/real-db tar xfz ../db1.db.tar.gz tar xfz ../db2.db.tar.gz tar cfz ../current.db.tar.gz * PACMANREPO="$(mktemp /tmp/pacman-repo.XXX)" rm ${PACMANREPO} mkdir -p ${PACMANREPO} mount --bind ${PACKAGEDIR} ${PACMANREPO} mv ${DBGENERATE}/current.db.tar.gz ${PACMANREPO}/ rm -r ${DBGENERATE} PACMANCONF="$(mktemp /tmp/pacman-conf.XXX)" echo "[current]" >> ${PACMANCONF} echo "Server = file://${PACMANREPO}" >> ${PACMANCONF} pacman -Sy --config ${PACMANCONF} if ! [ "$(pacman -Sw --noconfirm --config ${PACMANCONF} ${PACKAGES})" ]; then echo "ABORTING: Something went wrong in package retrieving or md5sum check." umount ${PACMANREPO} exit 1 fi fi # collect the packages cd ${MAINCVSDIR} for COPY in ${SEARCHCVS};do if ! [ "$(echo ${COPY} | awk -F/ '{print $3}')" = "" ]; then source "${COPY}/PKGBUILD" cp /var/cache/pacman/pkg/${pkgname}-${pkgver}-${pkgrel}.pkg.tar.gz ${TEMPDIR}/arch/pkg/ echo "$(echo ${COPY}| awk -F/ '{print $2}')/${pkgname}-${pkgver}-${pkgrel}.pkg.tar.gz" >> ${TEMPDIR}/arch/pkg/setup/packages.txt fi done # generate packages.txt sort -u ${TEMPDIR}/arch/pkg/setup/packages.txt -o ${TEMPDIR}/arch/pkg/setup/packages.txt fi SCRIPT= BINARIES= # always needed for every install cd ${CVSTREE} if ! [ "${LOCALSETUP}" = "yes" ]; then cvs -d $CVSROOT_ARCH} co arch/scripts/{km,setup,quickinst} cvs -d ${CVSROOT_ARCH} co arch/doc/en/guide/install/arch-install-guide.txt cvs -d ${CVSROOT_ARCH} co arch/mirrors.txt fi # fix km script KM=$(mktemp /tmp/km.XXXX) if ! [ "${LOCALSETUP}" = "yes" ]; then cp -f ${CVSTREE}/arch/scripts/km ${KM} else cp -f ${KMSCRIPT} ${KM} fi sed -i -e 's#$BASEDIR/keymaps/##g' ${KM} chmod 755 ${KM} mkdir -p ${TEMPDIR}/arch add_file "${KM}" "/bin/km" # fix mirrors.txt if ! [ "${LOCALSETUP}" = "yes" ]; then sed -i -e "s/i686/$(uname -m)/g" ${CVSTREE}/arch/mirrors.txt add_file "${CVSTREE}/arch/scripts/setup" "/arch/setup" add_file "${CVSTREE}/arch/scripts/quickinst" "/arch/quickinst" add_file "${CVSTREE}/arch/mirrors.txt" "/arch/mirrors.txt" else sed -i -e "s/i686/$(uname -m)/g" ${MIRRORS} add_file "${SETUP}" "/arch/setup" add_file "${QUICKINST}" "/arch/quickinst" add_file "${MIRRORS}" "/arch/mirrors.txt" fi DOCS=$(mktemp /tmp/docs.XXXX) if ! [ "${LOCALSETUP}" = "yes" ]; then cp -f ${CVSTREE}/arch/doc/en/guide/install/arch-install-guide.txt ${DOCS} else cp -f ${DOCUMENTATION} ${DOCS} fi gzip -9 ${DOCS} add_file "${DOCS}.gz" "/arch/archdoc.txt.gz" add_dir "/src" if ! [ "${LOCALSETUP}" = "yes" ]; then if ! [ "${TEMPDIR}" = "" ]; then cp ${CVSTREE}/arch/doc/en/guide/install/arch-install-guide.txt ${TEMPDIR}/arch/archdoc.txt cd ${TEMPDIR}/arch/pkg/setup/ wget ${FTPSERVER}/$(uname -m)/setup/pacman.pkg.tar.gz cd ${TEMPDIR}/arch/pkg/ wget ${FTPSERVER}/$(uname -m)/current.db.tar.gz fi else if ! [ "${TEMPDIR}" = "" ]; then cp -f ${DOCUMENTATION} ${TEMPDIR}/arch/archdoc.txt cp -f ${PACMANBINARY} ${TEMPDIR}/arch/pkg/setup/ mv ${PACMANREPO}/current.db.tar.gz ${TEMPDIR}/arch/pkg/ umount ${PACMANREPO} fi fi # generate iso title name [ "${RUNPROGRAM}" = "mkbootcd" -o "${RUNPROGRAM}" = "mkbootcd-grub" ] && echo "Arch Linux BASE $(uname -m)" >> ${ISONAME} } help () { cat <