mirror of
https://github.com/flatcar/scripts.git
synced 2025-09-28 09:01:55 +02:00
scripts/bootstrap: Apply Flatcar modifications
- add static-libs, openmp 'static-libs' and 'opempn' are added to the bootstrap emerge USE flags (stage 3 of the bootstrap-sh script, which is run in stage 2 of the SDK catalyst bootstrapping process): - 'static-libs' un-breaks the zlib build: zlib installed has this flag set and zlib requested per emerge command line in bootstrap.sh stage 3 needs this flag to prevent a slot conflict. - 'openmp' is to honor requirements of newer versions of GCC and is added according to Gentoo guidelines published here: https://wiki.gentoo.org/wiki/User:Sakaki/Sakaki%27s_EFI_Install_Guide/Building_the_Gentoo_Base_System_Minus_Kernel#Gentoo_Bootstrap_Remix:_Progressing_from_Stage_1_to_Stage_2 - install curl before baselayout Now that Github rejects access to an unauthenticated URL with `git://`, we have to make git and libcurl work with `https://`. However, during the SDK stage2, curl is not explicitly installed, but just inherited from the stage1. As a result, curl is built without the `ssl` USE flag. So installation of baselayout fails with: ``` git fetch https://github.com/flatcar-linux/baselayout.git --prune +HEAD:refs/git-r3/HEAD fatal: unable to access 'https://github.com/flatcar-linux/baselayout.git/': Protocol "https" not supported or disabled in libcurl ``` To resolve the issue, we need to install curl with `BOOTSTRAP_USE=ssl` before trying to install baselayout. - update openssl before stage3 Right now our bootstrap flow is different then gentoo's - we don't update the seed when building stage1 and use a different ebuilds snapshot for stage1 compared to stage2 and stage3. This is causing us trouble now, because we introduced openssl-3, but seed/stage1 still contains openssl-1.1. During `emerge -e @system` in stage3, some packages that depend on openssl may build against the stage1 version, which results in an error during depcleaning (they would need to be rebuilt instead). Stage3 is not extensible, so instead, explicitly update openssl in stage2. This workaround can be removed as soon as we release a seed with openssl-3. - fix bootstrap in verbose mode Verbose mode does not unset STRAP_RUN, thus the script tries to prune sys-devel/gcc at the later stage. Currently portage exits with an exit status 1 if a specific package was requested to be pruned and there was nothing to do. This results in a bootstrap failure. So before we try to prune, let's do a dry run to see if anything would be done. For the portage code that results in exit status 1, see the following link: https://gitweb.gentoo.org/proj/portage.git/tree/lib/_emerge/actions.py?id=bde2a895cf520687dce7a8e92601041a37529ba0#n1700 Fix can be dropped when https://github.com/gentoo/gentoo/pull/29612 gets merged. Co-authored-by: Dongsu Park <dpark@linux.microsoft.com> Co-authored-by: Jeremi Piotrowski <jpiotrowski@microsoft.com> Co-authored-by: Krzesimir Nowak <knowak@microsoft.com>
This commit is contained in:
parent
4c60474d8f
commit
9ef8b69e5c
@ -277,6 +277,10 @@ for atom in portage.settings.packages:
|
||||
[[ -z ${myTEXINFO} ]] && myTEXINFO="sys-apps/texinfo"
|
||||
[[ -z ${myZLIB} ]] && myZLIB="sys-libs/zlib"
|
||||
[[ -z ${myNCURSES} ]] && myNCURSES="sys-libs/ncurses"
|
||||
# Flatcar: install curl with BOOTSTRAP_USE=ssl to fetch from https URLs
|
||||
[[ -z ${myCURL} ]] && myCURL="net-misc/curl"
|
||||
# Flatcar: upgrade to openssl-3 before system rebuild in stage3
|
||||
[[ -z ${myOPENSSL} ]] && myOPENSSL="dev-libs/openssl"
|
||||
|
||||
# Do we really want gettext/nls?
|
||||
[[ ${USE_NLS} != 1 ]] && myGETTEXT=
|
||||
@ -298,6 +302,10 @@ einfo "Using libc : ${myLIBC}"
|
||||
einfo "Using texinfo : ${myTEXINFO}"
|
||||
einfo "Using zlib : ${myZLIB}"
|
||||
einfo "Using ncurses : ${myNCURSES}"
|
||||
# Flatcar: install curl with BOOTSTRAP_USE=ssl to fetch from https URLs
|
||||
einfo "Using curl : ${myCURL}"
|
||||
# Flatcar: upgrade to openssl-3 before system rebuild in stage3
|
||||
einfo "Using openssl : ${myOPENSSL}"
|
||||
echo -------------------------------------------------------------------------------
|
||||
show_status 1 Configuring environment
|
||||
echo -------------------------------------------------------------------------------
|
||||
@ -320,7 +328,8 @@ if [ ${BOOTSTRAP_STAGE} -le 1 ] ; then
|
||||
echo -------------------------------------------------------------------------------
|
||||
set_bootstrap_stage 2
|
||||
fi
|
||||
export USE="-* bootstrap ${ALLOWED_USE} ${BOOTSTRAP_USE}"
|
||||
# Flatcar: Add openmp and static-libs to fix catalyst bootstrap stage2.
|
||||
export USE="-* bootstrap ${ALLOWED_USE} ${BOOTSTRAP_USE} openmp static-libs"
|
||||
|
||||
# We can't unmerge headers which may or may not exist yet. If your
|
||||
# trying to use nptl, it may be needed to flush out any old headers
|
||||
@ -332,9 +341,12 @@ if [ ${BOOTSTRAP_STAGE} -le 2 ] ; then
|
||||
STRAP_EMERGE_OPTS="${STRAP_EMERGE_OPTS} --resume"
|
||||
cp /var/run/bootstrap-mtimedb /var/cache/edb
|
||||
else
|
||||
# Flatcar: install curl with BOOTSTRAP_USE=ssl to fetch from https URLs
|
||||
STRAP_EMERGE_POSARGS="\
|
||||
${myOS_HEADERS} ${myTEXINFO} ${myGETTEXT} ${myBINUTILS} \
|
||||
${myGCC} ${myLIBC} ${myBASELAYOUT} ${myZLIB}"
|
||||
${myGCC} ${myLIBC} ${myCURL} ${myBASELAYOUT} ${myZLIB}"
|
||||
# Flatcar: upgrade to openssl-3 before system rebuild in stage3
|
||||
STRAP_EMERGE_POSARGS="${STRAP_EMERGE_POSARGS} ${myOPENSSL}"
|
||||
fi
|
||||
${V_ECHO} emerge ${STRAP_EMERGE_OPTS} ${STRAP_EMERGE_POSARGS} || cleanup 1
|
||||
echo -------------------------------------------------------------------------------
|
||||
@ -345,10 +357,17 @@ fi
|
||||
if [[ -n ${STRAP_RUN} ]] ; then
|
||||
if [[ -x ${GCC_CONFIG} ]] && ${GCC_CONFIG} --get-current-profile &>/dev/null
|
||||
then
|
||||
# Make sure we get the old gcc unmerged ...
|
||||
${V_ECHO} emerge ${STRAP_EMERGE_OPTS} --prune sys-devel/gcc || cleanup 1
|
||||
# Make sure the profile and /lib/cpp and /usr/bin/cc are valid ...
|
||||
${GCC_CONFIG} "$(${GCC_CONFIG} --get-current-profile)" &>/dev/null
|
||||
# Flatcar: avoid failures when bootstraping in verbose mode
|
||||
output=$(${V_ECHO} emerge ${STRAP_EMERGE_OPTS} --prune --pretend --quiet sys-devel/gcc 2>/dev/null)
|
||||
if [[ ${DEBUG} = "1" ]] ; then
|
||||
echo "${output}"
|
||||
fi
|
||||
if [[ "${output}" = *'All selected packages:'* ]] ; then
|
||||
# Make sure we get the old gcc unmerged ...
|
||||
${V_ECHO} emerge ${STRAP_EMERGE_OPTS} --prune sys-devel/gcc || cleanup 1
|
||||
# Make sure the profile and /lib/cpp and /usr/bin/cc are valid ...
|
||||
${GCC_CONFIG} "$(${GCC_CONFIG} --get-current-profile)" &>/dev/null
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user