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: 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 # set profile symlink to the hardcoded PORDIR
ln -sf ../.."${PORTDIR}/profiles/${GENTOO_PROFILE}" /etc/portage/make.profile 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 # get the directories in order
mkdir -p /etc/portage/profile mkdir -p /etc/portage/profile
mkdir -p /etc/portage/package.accept_keywords
if [ -f /etc/portage/package.keywords ]; then if [ -f /etc/portage/package.keywords ]; then
mv /etc/portage/package.keywords /etc/portage/package.keywords.bak mv /etc/portage/package.keywords /etc/portage/package.accept_keywords/prebuilt-1
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
fi 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.mask
mkdir -p /etc/portage/package.unmask mkdir -p /etc/portage/package.unmask
mkdir -p /etc/portage/package.use 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 echo 'sys-boot/grub device-mapper' >> /etc/portage/package.use/grub
# needed in order to install pip packages as root # 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 if [[ "${GENTOO_PROFILE}" == *"systemd"* ]]; then
# systemd import-tar is broken, use a more recent (fixed) version # 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 fi
if [[ "${GENTOO_PROFILE}" == *"musl"* ]]; then if [[ "${GENTOO_PROFILE}" == *"musl"* ]]; then
echo "dev-vcs/git -gpg" >> /etc/portage/package.use/musl # gpg doesn't build on musl profiles 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-iscsi-2.0.874-r1 ~amd64" >> /etc/portage/package.accept_keywords/musl
echo "=sys-block/open-isns-0.97 ~amd64" >> /etc/portage/package.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 echo "sys-libs/pam cracklib" >> /etc/portage/package.use/musl
fi fi

View File

@ -21,7 +21,7 @@ if [[ ${GENTOO_OVERLAYS} != '' ]]; then
# upstream has problems with supporting other libcs still # upstream has problems with supporting other libcs still
if [[ "${GENTOO_PROFILE}" == *"musl"* ]]; then 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 fi
emerge ${GENTOO_EMERGE_DEFAULT_OPTS} --oneshot openssl openssh emerge ${GENTOO_EMERGE_DEFAULT_OPTS} --oneshot openssl openssh
# install layman # 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 for PACKAGE in ${PYTHON_PACKAGES}; do
emerge ${GENTOO_EMERGE_DEFAULT_OPTS} --oneshot --update --newuse --deep --nodeps "${PACKAGE}" emerge ${GENTOO_EMERGE_DEFAULT_OPTS} --oneshot --update --newuse --deep --nodeps "${PACKAGE}"
done 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 emerge ${GENTOO_EMERGE_DEFAULT_OPTS} --oneshot --update --newuse --deep --complete-graph=y sys-apps/portage dev-python/pyxattr
# set the active python version # set the active python version
eselect python set ${GENTOO_PYTHON_ACTIVE_VERSION} eselect python set ${GENTOO_PYTHON_ACTIVE_VERSION}

View File

@ -40,20 +40,20 @@ fi
# hardened/linux/amd64/no-multilib # hardened/linux/amd64/no-multilib
GENTOO_PROFILE=${GENTOO_PROFILE:-'default/linux/amd64/17.1'} GENTOO_PROFILE=${GENTOO_PROFILE:-'default/linux/amd64/17.1'}
if [[ "${GENTOO_PROFILE}" == "default/linux/amd64/17.1" ]]; then if [[ "${GENTOO_PROFILE}" == "default/linux/amd64/17.1" ]]; then
FILENAME_BASE='gentoo-stage4' FILENAME_BASE='gentoo-stage3'
SIGNED_SOURCE_SUFFIX='minimal' SIGNED_SOURCE_SUFFIX=''
elif [[ "${GENTOO_PROFILE}" == "default/linux/amd64/17.1/no-multilib" ]]; then elif [[ "${GENTOO_PROFILE}" == "default/linux/amd64/17.1/no-multilib" ]]; then
FILENAME_BASE='gentoo-stage4-nomultilib' FILENAME_BASE='gentoo-stage3-nomultilib'
SIGNED_SOURCE_SUFFIX='minimal-nomultilib' SIGNED_SOURCE_SUFFIX='-nomultilib'
elif [[ "${GENTOO_PROFILE}" == "default/linux/amd64/17.1/hardened" ]]; then elif [[ "${GENTOO_PROFILE}" == "default/linux/amd64/17.1/hardened" ]]; then
FILENAME_BASE='gentoo-stage4-hardened' FILENAME_BASE='gentoo-stage3-hardened'
SIGNED_SOURCE_SUFFIX='hardened+minimal' SIGNED_SOURCE_SUFFIX='-hardened'
elif [[ "${GENTOO_PROFILE}" == "default/linux/amd64/17.1/no-multilib/hardened" ]]; then elif [[ "${GENTOO_PROFILE}" == "default/linux/amd64/17.1/no-multilib/hardened" ]]; then
FILENAME_BASE='gentoo-stage4-hardened-nomultilib' FILENAME_BASE='gentoo-stage3-hardened-nomultilib'
SIGNED_SOURCE_SUFFIX='hardened+minimal-nomultilib' SIGNED_SOURCE_SUFFIX='-hardened+nomultilib'
elif [[ "${GENTOO_PROFILE}" == "default/linux/amd64/17.1/systemd" ]]; then elif [[ "${GENTOO_PROFILE}" == "default/linux/amd64/17.1/systemd" ]]; then
FILENAME_BASE='gentoo-stage4-systemd' FILENAME_BASE='gentoo-stage3-systemd'
SIGNED_SOURCE_SUFFIX='systemd' SIGNED_SOURCE_SUFFIX='-systemd'
else else
echo 'invalid profile, please select from the following profiles' echo 'invalid profile, please select from the following profiles'
echo 'default/linux/amd64/17.1' echo 'default/linux/amd64/17.1'
@ -64,7 +64,7 @@ else
exit 1 exit 1
fi 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=${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)"} 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}" 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 # Extract the base image (use --numeric-owner to avoid UID/GID mismatch between
# image tarball and host OS) # image tarball and host OS)
sudo tar -C "${TARGET_ROOT}" --numeric-owner --xattrs -xf "${CACHED_FILE}" 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