archboot/lib/initcpio/install/arch_core_install

138 lines
6.6 KiB
Text
Raw Normal View History

2007-10-22 07:56:38 +02:00
# Created by Tobias Powalowski <tpowa@archlinux.org>
build ()
2007-10-22 07:56:38 +02:00
{
2009-05-24 15:47:17 +02:00
SCRIPT=
BINARIES=
2008-10-20 22:39:25 +02:00
### check for root
2007-10-22 07:56:38 +02:00
if ! [ $UID -eq 0 ]; then
2009-05-24 15:47:17 +02:00
echo "ERROR: Please run as root user!"
exit 1
2007-10-22 07:56:38 +02:00
fi
2008-10-20 22:39:25 +02:00
### check for TEMPDIR
if [ $TEMPDIR = "" ]; then
2009-05-24 15:47:17 +02:00
echo "ERROR: No TEMPDIR was set, please set TEMPDIR first!"
exit 1
2008-10-20 22:39:25 +02:00
fi
2007-10-22 07:56:38 +02:00
### check for activated testing repository
if ! [ "$(grep '^\[testing\]' /etc/pacman.conf)" = "" ]; then
2009-05-24 15:47:17 +02:00
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
2007-10-22 07:56:38 +02:00
fi
2008-10-20 22:39:25 +02:00
### setting up directories
2007-10-22 07:56:38 +02:00
if ! [ "${LOCALSETUP}" = "yes" ]; then
2009-05-24 15:47:17 +02:00
SVNTREE=$(mktemp /tmp/svntree.XXXX)
rm ${SVNTREE}
mkdir -p ${SVNTREE}
2007-10-22 07:56:38 +02:00
else
2009-05-24 15:47:17 +02:00
SVNTREE=${SVNTREE}
2007-10-22 07:56:38 +02:00
fi
2008-10-20 22:39:25 +02:00
cd ${SVNTREE}
2007-10-22 07:56:38 +02:00
if ! [ "${LOCALSETUP}" = "yes" ]; then
2009-05-24 15:47:17 +02:00
# 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=""
2012-01-09 13:54:09 +01:00
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 nouveau-drm-lts nouveau-firmware"
2009-05-24 15:47:17 +02:00
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}
2009-09-13 18:52:40 +02:00
SEARCHSVN="$(find ./ -type d -name *"$(uname -m)" ! -name "testing*") $(find ./ -type d -name *"any")"
2007-10-22 07:56:38 +02:00
else
2009-05-24 15:47:17 +02:00
cd ${SVNTREE}
2009-09-13 18:52:40 +02:00
SEARCHSVN="$(find ./ -type d -name *"$(uname -m)" ! -name "testing*") $(find ./ -type d -name *"any")"
2007-10-22 07:56:38 +02:00
fi
2008-10-20 22:39:25 +02:00
# Download all packages
2009-12-06 23:49:28 +01:00
PACKAGES=$(for i in ${SEARCHSVN};do ! [ "$(echo $i | awk -F/ '{print $3}')" = "" ] && (. $i/PKGBUILD; echo ${pkgname[@]});unset pkgname;done)
2008-10-20 22:39:25 +02:00
pacman -Sy
pacman -Sw --noconfirm ${PACKAGES}
# collect the packages
mkdir -p ${TEMPDIR}/core-$(uname -m)/pkg/
2009-07-24 07:23:02 +02:00
mkdir -p ${TEMPDIR}/core-any/pkg/
2008-10-20 22:39:25 +02:00
for COPY in ${SEARCHSVN};do
2009-05-24 15:47:17 +02:00
if ! [ "$(echo ${COPY} | awk -F/ '{print $3}')" = "" ]; then
2011-05-11 14:54:51 +02:00
#local pkgname pkgrel pkgver depends install
. "${COPY}/PKGBUILD"
2009-07-21 23:24:49 +02:00
if [ "$(echo ${arch} | grep 'any')" ]; then
2011-05-09 16:39:33 +02:00
for i in ${pkgname[@]}; do
if [ "${epoch}" = "" ]; then
2011-05-09 16:13:57 +02:00
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
2011-05-09 16:39:33 +02:00
else
2011-05-09 16:13:57 +02:00
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
2011-05-09 16:39:33 +02:00
fi
done
2009-07-21 23:24:49 +02:00
else
2011-05-09 16:39:33 +02:00
for i in ${pkgname[@]}; do
if [ "${epoch}" = "" ]; then
2011-05-09 16:13:57 +02:00
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
2011-05-09 16:39:33 +02:00
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/
2011-05-09 16:13:57 +02:00
echo "$(echo ${COPY}| awk -F/ '{print $2}')/${i}-${epoch}:${pkgver}-${pkgrel}-$(uname -m).pkg.tar.*" >> ${TEMPDIR}/core-$(uname -m)/pkg/packages.txt
2011-05-09 16:39:33 +02:00
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
2009-07-21 23:24:49 +02:00
fi
2009-12-06 23:49:28 +01:00
unset pkgname
unset pkgrel
unset epoch
2011-05-11 14:54:51 +02:00
unset pkgver
unset install
2009-05-24 15:47:17 +02:00
fi
2008-10-20 22:39:25 +02:00
done
2009-05-30 21:11:53 +02:00
rm ${TEMPDIR}/core-$(uname -m)/pkg/core.db.tar.gz.old
2011-03-13 10:33:08 +01:00
### HACK put udev-compat and kernel26-docs to support category!
2010-02-11 17:10:24 +01:00
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
2008-10-20 22:39:25 +02:00
# generate packages.txt
sort -u ${TEMPDIR}/core-$(uname -m)/pkg/packages.txt -o ${TEMPDIR}/core-$(uname -m)/pkg/packages.txt
2010-03-17 00:09:17 +01:00
### HACK add grub2 and syslinux packages to image, with separate extra db file
2011-02-05 22:51:32 +01:00
# set LANG to US we parse language output here
LANG=US
2012-01-09 13:54:09 +01:00
for i in grub2-common grub2-bios grub2-efi-x86_64 efibootmgr freetype2 syslinux mtools perl-passwd-md5 perl-digest-sha1; do
2010-02-21 18:04:17 +01:00
pacman -Sw --noconfirm $i
2011-06-17 12:28:45 +02:00
pkgver="$(echo $(pacman -Si $i | grep -m 1 Version | cut -d ":" -f 2,3))"
2011-02-06 10:15:15 +01:00
pkgarch="$(echo $(pacman -Si $i | grep -m 1 Architecture | cut -d ":" -f 2))"
2011-02-03 12:11:22 +01:00
if [ "${pkgarch}" = 'any' ]; then
2011-02-03 17:49:52 +01:00
cp /var/cache/pacman/pkg/$i-${pkgver}-any.pkg.tar.* ${TEMPDIR}/core-any/pkg/
2011-02-03 12:11:22 +01:00
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
2010-02-21 18:04:17 +01:00
done
2010-03-16 23:48:39 +01:00
rm ${TEMPDIR}/core-$(uname -m)/pkg/extra.db.tar.gz.old
2007-10-22 07:56:38 +02:00
# generate iso title name
2008-12-06 19:12:19 +01:00
[ "${RUNPROGRAM}" = "mkisolinux" ] && echo "Arch_Linux_CORE $(uname -m)" >> ${ISONAME}
2007-10-22 07:56:38 +02:00
}
help ()
{
cat <<HELPEOF
2008-12-06 19:12:19 +01:00
This hook sets up all you need for an core install image.
2007-10-22 07:56:38 +02:00
HELPEOF
}