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.

Co-authored-by: Dongsu Park <dpark@linux.microsoft.com>
Co-authored-by: Jeremi Piotrowski <jpiotrowski@microsoft.com>
This commit is contained in:
Thilo Fromm 2021-03-02 13:52:48 +01:00 committed by Krzesimir Nowak
parent 5fcd463a96
commit 9ee5c87c96

View File

@ -277,6 +277,10 @@ for atom in portage.settings.packages:
[[ -z ${myTEXINFO} ]] && myTEXINFO="sys-apps/texinfo" [[ -z ${myTEXINFO} ]] && myTEXINFO="sys-apps/texinfo"
[[ -z ${myZLIB} ]] && myZLIB="sys-libs/zlib" [[ -z ${myZLIB} ]] && myZLIB="sys-libs/zlib"
[[ -z ${myNCURSES} ]] && myNCURSES="sys-libs/ncurses" [[ -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? # Do we really want gettext/nls?
[[ ${USE_NLS} != 1 ]] && myGETTEXT= [[ ${USE_NLS} != 1 ]] && myGETTEXT=
@ -298,6 +302,10 @@ einfo "Using libc : ${myLIBC}"
einfo "Using texinfo : ${myTEXINFO}" einfo "Using texinfo : ${myTEXINFO}"
einfo "Using zlib : ${myZLIB}" einfo "Using zlib : ${myZLIB}"
einfo "Using ncurses : ${myNCURSES}" 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 ------------------------------------------------------------------------------- echo -------------------------------------------------------------------------------
show_status 1 Configuring environment show_status 1 Configuring environment
echo ------------------------------------------------------------------------------- echo -------------------------------------------------------------------------------
@ -320,7 +328,8 @@ if [ ${BOOTSTRAP_STAGE} -le 1 ] ; then
echo ------------------------------------------------------------------------------- echo -------------------------------------------------------------------------------
set_bootstrap_stage 2 set_bootstrap_stage 2
fi 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 # 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 # 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" STRAP_EMERGE_OPTS="${STRAP_EMERGE_OPTS} --resume"
cp /var/run/bootstrap-mtimedb /var/cache/edb cp /var/run/bootstrap-mtimedb /var/cache/edb
else else
# Flatcar: install curl with BOOTSTRAP_USE=ssl to fetch from https URLs
STRAP_EMERGE_POSARGS="\ STRAP_EMERGE_POSARGS="\
${myOS_HEADERS} ${myTEXINFO} ${myGETTEXT} ${myBINUTILS} \ ${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 fi
${V_ECHO} emerge ${STRAP_EMERGE_OPTS} ${STRAP_EMERGE_POSARGS} || cleanup 1 ${V_ECHO} emerge ${STRAP_EMERGE_OPTS} ${STRAP_EMERGE_POSARGS} || cleanup 1
echo ------------------------------------------------------------------------------- echo -------------------------------------------------------------------------------