mirror of
https://github.com/flatcar/scripts.git
synced 2025-09-27 16:41:11 +02:00
commit
9f79898507
@ -213,7 +213,7 @@ _crossdev_info() {
|
||||
local cross_chost="$1"; shift
|
||||
echo -n "# "; crossdev --version
|
||||
echo "# $@"
|
||||
crossdev --show-target-cfg "${cross_chost}"
|
||||
crossdev "$@" --show-target-cfg
|
||||
}
|
||||
|
||||
# Build/install a toolchain w/ crossdev.
|
||||
@ -221,13 +221,17 @@ _crossdev_info() {
|
||||
install_cross_toolchain() {
|
||||
local cross_chost="$1"; shift
|
||||
local cross_pkgs=( $(get_cross_pkgs $cross_chost) )
|
||||
# gdb doesn't respect the --stable flag, set it stable explicitly
|
||||
local cross_flags=( --gdb '[stable]' --ex-gdb --stable --target "${cross_chost}" )
|
||||
local cross_cfg="/usr/${cross_chost}/etc/portage/${cross_chost}-crossdev"
|
||||
local cross_cfg_data=$(_crossdev_info "${cross_chost}" stable)
|
||||
local cross_cfg_data=$(_crossdev_info "${cross_flags[@]}")
|
||||
local emerge_flags=( "$@" --binpkg-respect-use=y --update --newuse )
|
||||
|
||||
# Forcing binary packages for toolchain packages breaks crossdev since it
|
||||
# prevents it from rebuilding with different use flags during bootstrap.
|
||||
local safe_flags=( "${@/#--useoldpkg-atoms=*/}" )
|
||||
safe_flags=( "${safe_flags[@]/#--rebuild-exclude=*/}" )
|
||||
cross_flags+=( --portage "${safe_flags[*]}" )
|
||||
|
||||
# may be called from either catalyst (root) or upgrade_chroot (user)
|
||||
local sudo=
|
||||
@ -238,30 +242,25 @@ install_cross_toolchain() {
|
||||
# Only call crossdev to regenerate configs if something has changed
|
||||
if ! cmp --quiet - "${cross_cfg}" <<<"${cross_cfg_data}"
|
||||
then
|
||||
$sudo crossdev --stable --portage "${safe_flags[*]}" \
|
||||
--init-target --target "${cross_chost}"
|
||||
$sudo crossdev "${cross_flags[@]}" --init-target
|
||||
$sudo tee "${cross_cfg}" <<<"${cross_cfg_data}" >/dev/null
|
||||
fi
|
||||
|
||||
# Check if any packages need to be built from source. If so do a full
|
||||
# bootstrap via crossdev, otherwise just install the binaries (if enabled).
|
||||
if emerge "$@" --binpkg-respect-use=y --update --newuse \
|
||||
# It is ok to build gdb from source outside of crossdev.
|
||||
if emerge "${emerge_flags[@]}" \
|
||||
--pretend "${cross_pkgs[@]}" | grep -q '^\[ebuild'
|
||||
then
|
||||
$sudo crossdev --stable --portage "${safe_flags[*]}" \
|
||||
--stage4 --target "${cross_chost}"
|
||||
$sudo crossdev "${cross_flags[@]}" --stage4
|
||||
else
|
||||
$sudo emerge "$@" --binpkg-respect-use=y --update --newuse \
|
||||
"${cross_pkgs[@]}"
|
||||
$sudo emerge "${emerge_flags[@]}" \
|
||||
"cross-${cross_chost}/gdb" "${cross_pkgs[@]}"
|
||||
fi
|
||||
|
||||
# Setup wrappers for our shiny new toolchain
|
||||
if [[ ! -e "/usr/lib/ccache/bin/${cross_chost}-gcc" ]]; then
|
||||
$sudo ccache-config --install-links "${cross_chost}"
|
||||
fi
|
||||
if [[ ! -e "/usr/lib/sysroot-wrappers/bin/${cross_chost}-gcc" ]]; then
|
||||
$sudo sysroot-config --install-links "${cross_chost}"
|
||||
fi
|
||||
$sudo CC_QUIET=1 ccache-config --install-links "${cross_chost}"
|
||||
$sudo CC_QUIET=1 sysroot-config --install-links "${cross_chost}"
|
||||
}
|
||||
|
||||
# Build/install toolchain dependencies into the cross sysroot for a
|
||||
|
11
setup_board
11
setup_board
@ -103,6 +103,13 @@ exec cros_workon --board ${BOARD_VARIANT} "\$@"
|
||||
EOF
|
||||
wrappers+=( "${wrapper}" )
|
||||
|
||||
wrapper="/usr/local/bin/gdb-${BOARD_VARIANT}"
|
||||
sudo_clobber "${wrapper}" <<EOF
|
||||
#!/bin/bash
|
||||
exec ${BOARD_CHOST}-gdb -iex 'set sysroot ${BOARD_ROOT}' "\$@"
|
||||
EOF
|
||||
wrappers+=( "${wrapper}" )
|
||||
|
||||
cmds+=(
|
||||
"chmod a+rx ${wrappers[*]}"
|
||||
"chown root:root ${wrappers[*]}"
|
||||
@ -252,6 +259,10 @@ EOF
|
||||
|
||||
sudo cp /etc/portage/repos.conf/* "${BOARD_ETC}"/portage/repos.conf/
|
||||
|
||||
# make it easy to find debug symbols
|
||||
sudo mkdir -p /usr/lib/debug/build
|
||||
sudo ln -sfT /build/amd64-usr/usr/lib/debug /usr/lib/debug/build/amd64-usr
|
||||
|
||||
generate_all_wrappers
|
||||
|
||||
if [[ ${FLAGS_regen_configs} -eq ${FLAGS_FALSE} ]]; then
|
||||
|
Loading…
x
Reference in New Issue
Block a user