mirror of
https://github.com/flatcar/scripts.git
synced 2025-09-23 14:41:31 +02:00
Merge pull request #835 from dm0-/portage
Work with new portage sysroot behavior
This commit is contained in:
commit
237569143f
@ -19,17 +19,22 @@ configure_target_root() {
|
|||||||
CBUILD="$(portageq envvar CBUILD)" \
|
CBUILD="$(portageq envvar CBUILD)" \
|
||||||
CHOST="${cross_chost}" \
|
CHOST="${cross_chost}" \
|
||||||
ROOT="/build/${board}" \
|
ROOT="/build/${board}" \
|
||||||
SYSROOT="/usr/${cross_chost}" \
|
SYSROOT="/build/${board}" \
|
||||||
_configure_sysroot "${profile}"
|
_configure_sysroot "${profile}"
|
||||||
}
|
}
|
||||||
|
|
||||||
build_target_toolchain() {
|
build_target_toolchain() {
|
||||||
local board="$1"
|
local board="$1"
|
||||||
local ROOT="/build/${board}"
|
local ROOT="/build/${board}"
|
||||||
|
local SYSROOT="/usr/$(get_board_chost "${board}")"
|
||||||
|
|
||||||
|
mkdir -p "${ROOT}/usr"
|
||||||
|
cp -at "${ROOT}" "${SYSROOT}"/lib*
|
||||||
|
cp -at "${ROOT}"/usr "${SYSROOT}"/usr/include "${SYSROOT}"/usr/lib*
|
||||||
|
|
||||||
# --root is required because run_merge overrides ROOT=
|
# --root is required because run_merge overrides ROOT=
|
||||||
PORTAGE_CONFIGROOT="$ROOT" \
|
PORTAGE_CONFIGROOT="$ROOT" \
|
||||||
run_merge -u --root="$ROOT" "${TOOLCHAIN_PKGS[@]}"
|
run_merge -u --root="$ROOT" --sysroot="$ROOT" "${TOOLCHAIN_PKGS[@]}"
|
||||||
}
|
}
|
||||||
|
|
||||||
configure_crossdev_overlay / /tmp/crossdev
|
configure_crossdev_overlay / /tmp/crossdev
|
||||||
|
@ -257,7 +257,7 @@ _configure_sysroot() {
|
|||||||
$sudo eselect profile set --force "$profile"
|
$sudo eselect profile set --force "$profile"
|
||||||
|
|
||||||
$sudo tee "${ROOT}/etc/portage/make.conf" >/dev/null <<EOF
|
$sudo tee "${ROOT}/etc/portage/make.conf" >/dev/null <<EOF
|
||||||
$(portageq envvar -v CHOST CBUILD ROOT SYSROOT \
|
$(portageq envvar -v CHOST CBUILD ROOT \
|
||||||
PORTDIR PORTDIR_OVERLAY DISTDIR PKGDIR)
|
PORTDIR PORTDIR_OVERLAY DISTDIR PKGDIR)
|
||||||
HOSTCC=\${CBUILD}-gcc
|
HOSTCC=\${CBUILD}-gcc
|
||||||
PKG_CONFIG_PATH="\${SYSROOT}/usr/lib/pkgconfig/"
|
PKG_CONFIG_PATH="\${SYSROOT}/usr/lib/pkgconfig/"
|
||||||
@ -372,7 +372,7 @@ install_cross_libs() {
|
|||||||
done | $sudo tee "${package_provided}/cross-${cross_chost}" >/dev/null
|
done | $sudo tee "${package_provided}/cross-${cross_chost}" >/dev/null
|
||||||
|
|
||||||
# OK, clear as mud? Install those dependencies now!
|
# OK, clear as mud? Install those dependencies now!
|
||||||
PORTAGE_CONFIGROOT="$ROOT" ROOT="$ROOT" $sudo emerge "$@" -u $cross_deps
|
PORTAGE_CONFIGROOT="$ROOT" $sudo emerge --root="$ROOT" --sysroot="$ROOT" "$@" -u $cross_deps
|
||||||
}
|
}
|
||||||
|
|
||||||
# Get the latest GCC profile for a given CHOST
|
# Get the latest GCC profile for a given CHOST
|
||||||
|
@ -464,7 +464,7 @@ install_oem_package() {
|
|||||||
# build anything else from source here. emerge doesn't have a way to
|
# build anything else from source here. emerge doesn't have a way to
|
||||||
# enforce this in a single command.
|
# enforce this in a single command.
|
||||||
info "Building ${oem_pkg}"
|
info "Building ${oem_pkg}"
|
||||||
USE="${oem_use}" emerge-${BOARD} --root="${oem_tmp}" \
|
USE="${oem_use}" emerge-${BOARD} \
|
||||||
--nodeps --buildpkgonly --usepkg n \
|
--nodeps --buildpkgonly --usepkg n \
|
||||||
--quiet "${oem_pkg}"
|
--quiet "${oem_pkg}"
|
||||||
|
|
||||||
@ -474,7 +474,8 @@ install_oem_package() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
info "Installing ${oem_pkg} to OEM partition"
|
info "Installing ${oem_pkg} to OEM partition"
|
||||||
USE="${oem_use}" emerge-${BOARD} --root="${oem_tmp}" \
|
USE="${oem_use}" emerge-${BOARD} \
|
||||||
|
--root="${oem_tmp}" --sysroot="${oem_tmp}" \
|
||||||
--root-deps=rdeps --usepkgonly ${getbinpkg} \
|
--root-deps=rdeps --usepkgonly ${getbinpkg} \
|
||||||
--quiet --jobs=2 "${oem_pkg}"
|
--quiet --jobs=2 "${oem_pkg}"
|
||||||
sudo rsync -a "${oem_tmp}/usr/share/oem/" "${VM_TMP_ROOT}/usr/share/oem/"
|
sudo rsync -a "${oem_tmp}/usr/share/oem/" "${VM_TMP_ROOT}/usr/share/oem/"
|
||||||
|
@ -79,12 +79,25 @@ function torcx_build() (
|
|||||||
[ -s "${tmproot}/etc/portage/bashrc" ] &&
|
[ -s "${tmproot}/etc/portage/bashrc" ] &&
|
||||||
. "${tmproot}/etc/portage/bashrc"
|
. "${tmproot}/etc/portage/bashrc"
|
||||||
|
|
||||||
|
# Build binary packages using dev files in the board root.
|
||||||
|
emerge-${BOARD} \
|
||||||
|
--buildpkg \
|
||||||
|
--buildpkgonly \
|
||||||
|
--nodeps \
|
||||||
|
--oneshot \
|
||||||
|
--quiet \
|
||||||
|
--root-deps=rdeps \
|
||||||
|
"${pkg}"
|
||||||
|
|
||||||
|
# Install the binary packages in the temporary torcx image root.
|
||||||
emerge-${BOARD} \
|
emerge-${BOARD} \
|
||||||
--nodeps \
|
--nodeps \
|
||||||
--oneshot \
|
--oneshot \
|
||||||
|
--quiet \
|
||||||
--root="${tmproot}" \
|
--root="${tmproot}" \
|
||||||
--root-deps=rdeps \
|
--root-deps=rdeps \
|
||||||
--quiet \
|
--sysroot="${tmproot}" \
|
||||||
|
--usepkgonly \
|
||||||
"${pkg}"
|
"${pkg}"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
23
setup_board
23
setup_board
@ -305,19 +305,28 @@ if [[ ${FLAGS_regen_configs} -eq ${FLAGS_FALSE} ]]; then
|
|||||||
EMERGE_FLAGS+=" --usepkg"
|
EMERGE_FLAGS+=" --usepkg"
|
||||||
fi
|
fi
|
||||||
EMERGE_FLAGS+=" --getbinpkg"
|
EMERGE_FLAGS+=" --getbinpkg"
|
||||||
EMERGE_TOOLCHAIN_FLAGS+=" --usepkgonly --getbinpkg --rebuilt-binaries n"
|
|
||||||
else
|
|
||||||
# When binary packages are disabled we need to make sure the cross
|
|
||||||
# sysroot includes any build dependencies for the toolchain.
|
|
||||||
info "Installing toolchain build dependencies"
|
|
||||||
install_cross_libs "${BOARD_CHOST}" ${EMERGE_FLAGS} --buildpkg=n
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
info "Installing baselayout"
|
info "Installing baselayout"
|
||||||
"${EMERGE_WRAPPER}" ${EMERGE_FLAGS} --nodeps sys-apps/baselayout
|
"${EMERGE_WRAPPER}" ${EMERGE_FLAGS} --nodeps sys-apps/baselayout
|
||||||
|
|
||||||
|
if [[ "${FLAGS_usepkg}" -ne "${FLAGS_TRUE}" ||
|
||||||
|
"${FLAGS_getbinpkg}" -ne "${FLAGS_TRUE}" ]]
|
||||||
|
then
|
||||||
|
# When binary packages are disabled we need to make sure the cross
|
||||||
|
# sysroot includes any build dependencies for the toolchain.
|
||||||
|
info "Installing toolchain build dependencies"
|
||||||
|
install_cross_libs "${BOARD_CHOST}" ${EMERGE_FLAGS} --buildpkg=n
|
||||||
|
|
||||||
|
info "Building toolchain"
|
||||||
|
"${EMERGE_WRAPPER}" --buildpkg --buildpkgonly \
|
||||||
|
--root="/usr/${BOARD_CHOST}" --sysroot="/usr/${BOARD_CHOST}" \
|
||||||
|
${EMERGE_TOOLCHAIN_FLAGS} "${TOOLCHAIN_PKGS[@]}"
|
||||||
|
fi
|
||||||
|
|
||||||
info "Installing toolchain"
|
info "Installing toolchain"
|
||||||
SYSROOT="/usr/${BOARD_CHOST}" "${EMERGE_WRAPPER}" \
|
"${EMERGE_WRAPPER}" \
|
||||||
|
--usepkgonly --getbinpkg --rebuilt-binaries n \
|
||||||
${EMERGE_TOOLCHAIN_FLAGS} "${TOOLCHAIN_PKGS[@]}"
|
${EMERGE_TOOLCHAIN_FLAGS} "${TOOLCHAIN_PKGS[@]}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user