mirror of
https://gitlab.archlinux.org/tpowa/archboot.git
synced 2024-09-20 12:00:37 +02:00
137 lines
6.6 KiB
Text
137 lines
6.6 KiB
Text
# Created by Tobias Powalowski <tpowa@archlinux.org>
|
|
|
|
build ()
|
|
{
|
|
SCRIPT=
|
|
BINARIES=
|
|
### check for root
|
|
if ! [ $UID -eq 0 ]; then
|
|
echo "ERROR: Please run as root user!"
|
|
exit 1
|
|
fi
|
|
|
|
### check for TEMPDIR
|
|
if [ $TEMPDIR = "" ]; then
|
|
echo "ERROR: No TEMPDIR was set, please set TEMPDIR first!"
|
|
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
|
|
### setting up directories
|
|
if ! [ "${LOCALSETUP}" = "yes" ]; then
|
|
SVNTREE=$(mktemp /tmp/svntree.XXXX)
|
|
rm ${SVNTREE}
|
|
mkdir -p ${SVNTREE}
|
|
else
|
|
SVNTREE=${SVNTREE}
|
|
fi
|
|
cd ${SVNTREE}
|
|
if ! [ "${LOCALSETUP}" = "yes" ]; then
|
|
# generate base
|
|
BASE=""
|
|
for i in $(pacman -Sg base | sed -e "s/base//g"); do
|
|
BASE="$BASE $(echo $i)"
|
|
done
|
|
# generate base-devel
|
|
DEVEL=""
|
|
for i in $(pacman -Sg base-devel | sed -e "s/base-devel//g"); do
|
|
DEVEL="$DEVEL $(echo $i)"
|
|
done
|
|
SUPPORT=""
|
|
SUPPORT="$(echo -n $(pacman -Ss | grep -e ^core | grep -v '(' | sed -e 's/\ .*/ /g' -e 's#core/##g')) dmidecode gnu-netcat dosfstools ntfs-3g_ntfsprogs fuse dhclient v86d"
|
|
for i in base devel lib support; do
|
|
mkdir $i
|
|
svn co -N ${SVNSETUP} $i
|
|
done
|
|
cd base; svn up $BASE; cd ..
|
|
cd devel; svn up $DEVEL; cd ..
|
|
cd support; svn up $SUPPORT; cd ..
|
|
cd ${SVNTREE}
|
|
SEARCHSVN="$(find ./ -type d -name *"$(uname -m)" ! -name "testing*") $(find ./ -type d -name *"any")"
|
|
else
|
|
cd ${SVNTREE}
|
|
SEARCHSVN="$(find ./ -type d -name *"$(uname -m)" ! -name "testing*") $(find ./ -type d -name *"any")"
|
|
fi
|
|
# Download all packages
|
|
PACKAGES=$(for i in ${SEARCHSVN};do ! [ "$(echo $i | awk -F/ '{print $3}')" = "" ] && (. $i/PKGBUILD; echo ${pkgname[@]});unset pkgname;done)
|
|
pacman -Sy
|
|
pacman -Sw --noconfirm ${PACKAGES}
|
|
# collect the packages
|
|
mkdir -p ${TEMPDIR}/core-$(uname -m)/pkg/
|
|
mkdir -p ${TEMPDIR}/core-any/pkg/
|
|
for COPY in ${SEARCHSVN};do
|
|
if ! [ "$(echo ${COPY} | awk -F/ '{print $3}')" = "" ]; then
|
|
#local pkgname pkgrel pkgver depends install
|
|
. "${COPY}/PKGBUILD"
|
|
if [ "$(echo ${arch} | grep 'any')" ]; then
|
|
for i in ${pkgname[@]}; do
|
|
if [ "${epoch}" = "" ]; then
|
|
cp /var/cache/pacman/pkg/${i}-${pkgver}-${pkgrel}-any.pkg.tar.* ${TEMPDIR}/core-any/pkg/
|
|
echo "$(echo ${COPY}| awk -F/ '{print $2}')/${i}-${pkgver}-${pkgrel}-any.pkg.tar.*" >> ${TEMPDIR}/core-$(uname -m)/pkg/packages.txt
|
|
repo-add ${TEMPDIR}/core-$(uname -m)/pkg/core.db.tar.gz /var/cache/pacman/pkg/${i}-${pkgver}-${pkgrel}-any.pkg.tar.* || return 1
|
|
else
|
|
cp /var/cache/pacman/pkg/${i}-${epoch}:${pkgver}-${pkgrel}-any.pkg.tar.* ${TEMPDIR}/core-any/pkg/
|
|
echo "$(echo ${COPY}| awk -F/ '{print $2}')/${i}-${epoch}:${pkgver}-${pkgrel}-any.pkg.tar.*" >> ${TEMPDIR}/core-$(uname -m)/pkg/packages.txt
|
|
repo-add ${TEMPDIR}/core-$(uname -m)/pkg/core.db.tar.gz /var/cache/pacman/pkg/${i}-${epoch}:${pkgver}-${pkgrel}-any.pkg.tar.* || return 1
|
|
fi
|
|
done
|
|
else
|
|
for i in ${pkgname[@]}; do
|
|
if [ "${epoch}" = "" ]; then
|
|
cp /var/cache/pacman/pkg/${i}-${pkgver}-${pkgrel}-$(uname -m).pkg.tar.* ${TEMPDIR}/core-$(uname -m)/pkg/
|
|
echo "$(echo ${COPY}| awk -F/ '{print $2}')/${i}-${pkgver}-${pkgrel}-$(uname -m).pkg.tar.*" >> ${TEMPDIR}/core-$(uname -m)/pkg/packages.txt
|
|
repo-add ${TEMPDIR}/core-$(uname -m)/pkg/core.db.tar.gz /var/cache/pacman/pkg/${i}-${pkgver}-${pkgrel}-$(uname -m).pkg.tar.* || return 1
|
|
else
|
|
cp /var/cache/pacman/pkg/${i}-${epoch}:${pkgver}-${pkgrel}-$(uname -m).pkg.tar.* ${TEMPDIR}/core-$(uname -m)/pkg/
|
|
echo "$(echo ${COPY}| awk -F/ '{print $2}')/${i}-${epoch}:${pkgver}-${pkgrel}-$(uname -m).pkg.tar.*" >> ${TEMPDIR}/core-$(uname -m)/pkg/packages.txt
|
|
repo-add ${TEMPDIR}/core-$(uname -m)/pkg/core.db.tar.gz /var/cache/pacman/pkg/${i}-${epoch}:${pkgver}-${pkgrel}-$(uname -m).pkg.tar.* || return 1
|
|
fi
|
|
done
|
|
fi
|
|
unset pkgname
|
|
unset pkgrel
|
|
unset epoch
|
|
unset pkgver
|
|
unset install
|
|
fi
|
|
done
|
|
rm ${TEMPDIR}/core-$(uname -m)/pkg/core.db.tar.gz.old
|
|
### HACK put udev-compat and kernel26-docs to support category!
|
|
sed -i -e 's#base/udev-compat#support/udev-compat#g' ${TEMPDIR}/core-$(uname -m)/pkg/packages.txt
|
|
sed -i -e 's#base/kernel26-docs#support/kernel26-docs#g' ${TEMPDIR}/core-$(uname -m)/pkg/packages.txt
|
|
# generate packages.txt
|
|
sort -u ${TEMPDIR}/core-$(uname -m)/pkg/packages.txt -o ${TEMPDIR}/core-$(uname -m)/pkg/packages.txt
|
|
### HACK add grub2 and syslinux packages to image, with separate extra db file
|
|
# set LANG to US we parse language output here
|
|
LANG=US
|
|
for i in grub2-common grub2-bios grub2-efi-x86_64 efibootmgr freetype2 syslinux mtools perl-passwd-md5 perl-digest-sha1; do
|
|
pacman -Sw --noconfirm $i
|
|
pkgver="$(echo $(pacman -Si $i | grep -m 1 Version | cut -d ":" -f 2,3))"
|
|
pkgarch="$(echo $(pacman -Si $i | grep -m 1 Architecture | cut -d ":" -f 2))"
|
|
if [ "${pkgarch}" = 'any' ]; then
|
|
cp /var/cache/pacman/pkg/$i-${pkgver}-any.pkg.tar.* ${TEMPDIR}/core-any/pkg/
|
|
repo-add ${TEMPDIR}/core-$(uname -m)/pkg/extra.db.tar.gz /var/cache/pacman/pkg/${i}-${pkgver}-any.pkg.tar.* || return 1
|
|
else
|
|
cp /var/cache/pacman/pkg/$i-${pkgver}-$(uname -m).pkg.tar.* ${TEMPDIR}/core-$(uname -m)/pkg/
|
|
repo-add ${TEMPDIR}/core-$(uname -m)/pkg/extra.db.tar.gz /var/cache/pacman/pkg/${i}-${pkgver}-$(uname -m).pkg.tar.* || return 1
|
|
fi
|
|
done
|
|
rm ${TEMPDIR}/core-$(uname -m)/pkg/extra.db.tar.gz.old
|
|
# generate iso title name
|
|
[ "${RUNPROGRAM}" = "mkisolinux" ] && echo "Arch_Linux_CORE $(uname -m)" >> ${ISONAME}
|
|
}
|
|
|
|
help ()
|
|
{
|
|
cat <<HELPEOF
|
|
This hook sets up all you need for an core install image.
|
|
HELPEOF
|
|
}
|