use stage3 instead of stage4 for gentoo builds

The main reason for using the stage4 is now gone (kernel compile).
Install and use the distro provided binary kernel package.

In addition to this, set the locale and timezone, beyond that very
little was done in the gentoo stage4.

Change-Id: I541b7d9b807e2357398ae1c249b1978958dd1137
Signed-off-by: Matthew Thode <mthode@mthode.org>
This commit is contained in:
Matthew Thode 2020-04-03 00:50:14 -05:00
parent 339d713527
commit 041bdd331a
No known key found for this signature in database
GPG Key ID: 64A37BEAAE19A4E8
6 changed files with 46 additions and 24 deletions

View File

@ -1,2 +1,3 @@
sys-fs/dosfstools:
app-admin/sudo:
sys-fs/dosfstools:
sys-kernel/gentoo-kernel-bin:

View File

@ -8,3 +8,12 @@ set -o pipefail
# set profile symlink to the hardcoded PORDIR
ln -sf ../.."${PORTDIR}/profiles/${GENTOO_PROFILE}" /etc/portage/make.profile
# Set timezone
echo 'UTC' > /etc/timezone
# Set locale
echo 'en_US.UTF-8 UTF-8' >> /etc/locale.gen
echo 'en_US ISO-8859-1' >> /etc/locale.gen
locale-gen -q
eselect locale set en_US.utf8

View File

@ -8,15 +8,10 @@ set -o pipefail
# get the directories in order
mkdir -p /etc/portage/profile
mkdir -p /etc/portage/package.accept_keywords
if [ -f /etc/portage/package.keywords ]; then
mv /etc/portage/package.keywords /etc/portage/package.keywords.bak
mkdir -p /etc/portage/package.keywords
mv /etc/portage/package.keywords.bak /etc/portage/package.keywords/prebuilt-1
else
mkdir -p /etc/portage/package.keywords
mv /etc/portage/package.keywords /etc/portage/package.accept_keywords/prebuilt-1
fi
[ -d /etc/portage/package.accept_keywords ] && mv /etc/portage/package.accept_keywords/* /etc/portage/package.keywords/ && rmdir /etc/portage/package.accept_keywords
[ -f /etc/portage/package.accept_keywords ] && mv /etc/portage/package.accept_keywords /etc/portage/package.keywords/prebuilt-2
mkdir -p /etc/portage/package.mask
mkdir -p /etc/portage/package.unmask
mkdir -p /etc/portage/package.use
@ -28,16 +23,23 @@ echo 'sys-fs/lvm2 -thin' >> /etc/portage/package.use/grub
echo 'sys-boot/grub device-mapper' >> /etc/portage/package.use/grub
# needed in order to install pip packages as root
echo '=dev-python/pip-9.0.1-r2 ~amd64' >> /etc/portage/package.keywords/pip
echo '=dev-python/pip-9.0.1-r2 ~amd64' >> /etc/portage/package.accept_keywords/pip
# needed to install static kernel
echo '~sys-apps/debianutils-4.9.1 ~amd64' >> /etc/portage/package.accept_keywords/kernel
echo 'sys-kernel/installkernel-gentoo ~amd64' >> /etc/portage/package.accept_keywords/kernel
echo 'sys-kernel/gentoo-kernel-bin ~amd64' >> /etc/portage/package.accept_keywords/kernel
# needed for sfdisk to work
echo '~sys-apps/util-linux-2.35.2 ~amd64 # sfdisk growpart fix' >> /etc/portage/package.accept_keywords/util-linux
if [[ "${GENTOO_PROFILE}" == *"systemd"* ]]; then
# systemd import-tar is broken, use a more recent (fixed) version
echo '~sys-apps/systemd-241 ~amd64' >> /etc/portage/package.keywords/systemd
echo '~sys-apps/systemd-241 ~amd64' >> /etc/portage/package.accept_keywords/systemd
fi
if [[ "${GENTOO_PROFILE}" == *"musl"* ]]; then
echo "dev-vcs/git -gpg" >> /etc/portage/package.use/musl # gpg doesn't build on musl profiles
echo "=sys-block/open-iscsi-2.0.874-r1 ~amd64" >> /etc/portage/package.keywords/musl
echo "=sys-block/open-isns-0.97 ~amd64" >> /etc/portage/package.keywords/musl
echo "=sys-block/open-iscsi-2.0.874-r1 ~amd64" >> /etc/portage/package.accept_keywords/musl
echo "=sys-block/open-isns-0.97 ~amd64" >> /etc/portage/package.accept_keywords/musl
echo "sys-libs/pam cracklib" >> /etc/portage/package.use/musl
fi

View File

@ -21,7 +21,7 @@ if [[ ${GENTOO_OVERLAYS} != '' ]]; then
# upstream has problems with supporting other libcs still
if [[ "${GENTOO_PROFILE}" == *"musl"* ]]; then
echo '=sys-block/open-iscsi-2.0.877' >> /etc/portage/package.keywords/open-iscsi
echo '=sys-block/open-iscsi-2.0.877' >> /etc/portage/package.accept_keywords/open-iscsi
fi
emerge ${GENTOO_EMERGE_DEFAULT_OPTS} --oneshot openssl openssh
# install layman

View File

@ -30,6 +30,8 @@ PYTHON_PACKAGES="dev-python/six dev-python/packaging dev-python/appdirs dev-pyth
for PACKAGE in ${PYTHON_PACKAGES}; do
emerge ${GENTOO_EMERGE_DEFAULT_OPTS} --oneshot --update --newuse --deep --nodeps "${PACKAGE}"
done
# install portage first due to bug in env vars not being passed when portage installs itself and re-inits
emerge ${GENTOO_EMERGE_DEFAULT_OPTS} --oneshot sys-apps/portage
emerge ${GENTOO_EMERGE_DEFAULT_OPTS} --oneshot --update --newuse --deep --complete-graph=y sys-apps/portage dev-python/pyxattr
# set the active python version
eselect python set ${GENTOO_PYTHON_ACTIVE_VERSION}

View File

@ -40,20 +40,20 @@ fi
# hardened/linux/amd64/no-multilib
GENTOO_PROFILE=${GENTOO_PROFILE:-'default/linux/amd64/17.1'}
if [[ "${GENTOO_PROFILE}" == "default/linux/amd64/17.1" ]]; then
FILENAME_BASE='gentoo-stage4'
SIGNED_SOURCE_SUFFIX='minimal'
FILENAME_BASE='gentoo-stage3'
SIGNED_SOURCE_SUFFIX=''
elif [[ "${GENTOO_PROFILE}" == "default/linux/amd64/17.1/no-multilib" ]]; then
FILENAME_BASE='gentoo-stage4-nomultilib'
SIGNED_SOURCE_SUFFIX='minimal-nomultilib'
FILENAME_BASE='gentoo-stage3-nomultilib'
SIGNED_SOURCE_SUFFIX='-nomultilib'
elif [[ "${GENTOO_PROFILE}" == "default/linux/amd64/17.1/hardened" ]]; then
FILENAME_BASE='gentoo-stage4-hardened'
SIGNED_SOURCE_SUFFIX='hardened+minimal'
FILENAME_BASE='gentoo-stage3-hardened'
SIGNED_SOURCE_SUFFIX='-hardened'
elif [[ "${GENTOO_PROFILE}" == "default/linux/amd64/17.1/no-multilib/hardened" ]]; then
FILENAME_BASE='gentoo-stage4-hardened-nomultilib'
SIGNED_SOURCE_SUFFIX='hardened+minimal-nomultilib'
FILENAME_BASE='gentoo-stage3-hardened-nomultilib'
SIGNED_SOURCE_SUFFIX='-hardened+nomultilib'
elif [[ "${GENTOO_PROFILE}" == "default/linux/amd64/17.1/systemd" ]]; then
FILENAME_BASE='gentoo-stage4-systemd'
SIGNED_SOURCE_SUFFIX='systemd'
FILENAME_BASE='gentoo-stage3-systemd'
SIGNED_SOURCE_SUFFIX='-systemd'
else
echo 'invalid profile, please select from the following profiles'
echo 'default/linux/amd64/17.1'
@ -64,7 +64,7 @@ else
exit 1
fi
DIB_CLOUD_SOURCE=${DIB_CLOUD_SOURCE:-"http://distfiles.gentoo.org/releases/amd64/autobuilds/latest-stage4-amd64-${SIGNED_SOURCE_SUFFIX}.txt"}
DIB_CLOUD_SOURCE=${DIB_CLOUD_SOURCE:-"http://distfiles.gentoo.org/releases/amd64/autobuilds/latest-stage3-amd64${SIGNED_SOURCE_SUFFIX}.txt"}
BASE_IMAGE_FILE=${BASE_IMAGE_FILE:-"http://distfiles.gentoo.org/releases/amd64/autobuilds/$(curl ${DIB_CLOUD_SOURCE} -s -f | tail -n 1 | cut -d\ -f 1)"}
BASE_IMAGE_FILE_SUFFIX=${BASE_IMAGE_FILE_SUFFIX:-"$(basename ${BASE_IMAGE_FILE} | cut -d. -f 2,3)"}
SIGNATURE_FILE="${SIGNATURE_FILE:-${BASE_IMAGE_FILE}.DIGESTS.asc}"
@ -106,3 +106,11 @@ fi
# Extract the base image (use --numeric-owner to avoid UID/GID mismatch between
# image tarball and host OS)
sudo tar -C "${TARGET_ROOT}" --numeric-owner --xattrs -xf "${CACHED_FILE}"
# Put in a dummy /etc/resolv.conf over the temporary one we used
# to bootstrap. systemd has a bug/feature [1] that it will assume
# you want systemd-networkd as the network manager and create a
# broken symlink to /run/... if the base image doesn't have one.
# This broken link confuses things like dhclient.
# [1] https://bugzilla.redhat.com/show_bug.cgi?id=1197204
echo -e "# This file intentionally left blank\n" | sudo tee "${TARGET_ROOT}"/etc/resolv.conf