mirror of
https://gitlab.archlinux.org/tpowa/archboot.git
synced 2024-09-19 19:40:37 +02:00
156 lines
5.4 KiB
Text
156 lines
5.4 KiB
Text
# Created by Tobias Powalowski <tpowa@archlinux.org>
|
|
|
|
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/corecvs.XXXX)
|
|
GIT_INSTALLER_TREE=$(mktemp /tmp/installer.git.XXXX)
|
|
rm ${CVSTREE}
|
|
rm ${GIT_INSTALLER_TREE}
|
|
mkdir -p ${CVSTREE}
|
|
mkdir -p ${GIT_INSTALLER_TREE}
|
|
# checkout actual core cvs
|
|
export CVSROOT=${CVSSETUP}
|
|
else
|
|
CVSTREE=${CVSTREE}
|
|
GIT_INSTALLER_TREE=${GIT_INSTALLER_TREE}
|
|
fi
|
|
cd ${CVSTREE}
|
|
if ! [ "${LOCALSETUP}" = "yes" ]; then
|
|
cvs -z3 co -r ${TAG} core/
|
|
MAINCVSDIR="${CVSTREE}/core"
|
|
cd ${MAINCVSDIR}
|
|
SEARCHCVS=$(find ./ -type d ! -name "CVS")
|
|
else
|
|
cd ${MAINCVSDIR}
|
|
SEARCHCVS=$(find ./ -type d ! -name "CVS")
|
|
fi
|
|
|
|
if ! [ "${TEMPDIR}" = "" ]; then
|
|
mkdir -p ${TEMPDIR}/core/pkg/
|
|
# Download all packages
|
|
PACKAGES=$(for i in ${SEARCHCVS};do ! [ "$(echo $i | awk -F/ '{print $3}')" = "" ] && echo -n "core/$(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}/ ${DBGENERATE}/core.db.tar.gz ${PACKAGEDIR}
|
|
PACMANREPO="$(mktemp /tmp/pacman-repo.XXX)"
|
|
rm ${PACMANREPO}
|
|
mkdir -p ${PACMANREPO}
|
|
mount --bind ${PACKAGEDIR} ${PACMANREPO}
|
|
mv ${DBGENERATE}/core.db.tar.gz ${PACMANREPO}/
|
|
rm -r ${DBGENERATE}
|
|
PACMANCONF="$(mktemp /tmp/pacman-conf.XXX)"
|
|
echo "[core]" >> ${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}-$(uname -m).pkg.tar.gz ${TEMPDIR}/core/pkg/
|
|
echo "$(echo ${COPY}| awk -F/ '{print $2}')/${pkgname}-${pkgver}-${pkgrel}-$(uname -m).pkg.tar.gz" >> ${TEMPDIR}/core/pkg/packages.txt
|
|
fi
|
|
done
|
|
# generate packages.txt
|
|
sort -u ${TEMPDIR}/core/pkg/packages.txt -o ${TEMPDIR}/core/pkg/packages.txt
|
|
fi
|
|
SCRIPT=
|
|
BINARIES=
|
|
# always needed for every install
|
|
cd ${GIT_INSTALLER_TREE}
|
|
if ! [ "${LOCALSETUP}" = "yes" ]; then
|
|
git-clone ${GIT_INSTALLER}
|
|
fi
|
|
# fix km script
|
|
KM=$(mktemp /tmp/km.XXXX)
|
|
if ! [ "${LOCALSETUP}" = "yes" ]; then
|
|
cp -f /etc/archboot/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" ${GIT_INSTALLER_TREE}/installer/mirrors.txt
|
|
add_file "${GIT_INSTALLER_TREE}/installer/setup" "/arch/setup"
|
|
add_file "${GIT_INSTALLER_TREE}/installer/quickinst" "/arch/quickinst"
|
|
add_file "${GIT_INSTALLER_TREE}/installer/mirrors.txt" "/arch/mirrors.txt"
|
|
else
|
|
MIRRORTREE=$(mktemp /tmp/mirror.XXXX)
|
|
rm ${MIRRORTREE}
|
|
mkdir -p ${MIRRORTREE}
|
|
cp ${GIT_INSTALLER_TREE}/mirrors.txt ${MIRRORTREE}/
|
|
sed -i -e "s/i686/$(uname -m)/g" ${MIRRORTREE}/mirrors.txt
|
|
add_file "${SETUP}" "/arch/setup"
|
|
add_file "${QUICKINST}" "/arch/quickinst"
|
|
add_file "${MIRRORTREE}/mirrors.txt" "/arch/mirrors.txt"
|
|
fi
|
|
DOCS=$(mktemp /tmp/docs.XXXX)
|
|
if ! [ "${LOCALSETUP}" = "yes" ]; then
|
|
cp -f ${GIT_INSTALLER_TREE}/installer/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 ${GIT_INSTALLER_TREE}/installer/arch-install-guide.txt ${TEMPDIR}/arch/archdoc.txt
|
|
#cd ${TEMPDIR}/arch/pkg/setup/
|
|
#wget ${FTPSERVER}/$(uname -m)/setup/pacman.pkg.tar.gz
|
|
cd ${TEMPDIR}/core/pkg/
|
|
snarf ${FTPSERVER}/$(uname -m)/core.db.tar.gz
|
|
fi
|
|
else
|
|
if ! [ "${TEMPDIR}" = "" ]; then
|
|
cp -f ${DOCUMENTATION} ${TEMPDIR}/arch/archdoc.txt
|
|
#cp -f ${PACMANBINARY} ${TEMPDIR}/arch/pkg/setup/
|
|
mv ${PACMANREPO}/core.db.tar.gz ${TEMPDIR}/core/pkg/
|
|
umount ${PACMANREPO}
|
|
fi
|
|
fi
|
|
|
|
# generate iso title name
|
|
[ "${RUNPROGRAM}" = "mkbootcd" -o "${RUNPROGRAM}" = "mkbootcd-grub" ] && echo "Arch Linux CORE $(uname -m)" >> ${ISONAME}
|
|
}
|
|
|
|
help ()
|
|
{
|
|
cat <<HELPEOF
|
|
This hook sets up all you need for a arch core install image.
|
|
HELPEOF
|
|
}
|