Merge pull request #835 from dm0-/portage

Work with new portage sysroot behavior
This commit is contained in:
David Michael 2018-08-31 13:38:52 -04:00 committed by GitHub
commit 237569143f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 42 additions and 14 deletions

View File

@ -19,17 +19,22 @@ configure_target_root() {
CBUILD="$(portageq envvar CBUILD)" \
CHOST="${cross_chost}" \
ROOT="/build/${board}" \
SYSROOT="/usr/${cross_chost}" \
SYSROOT="/build/${board}" \
_configure_sysroot "${profile}"
}
build_target_toolchain() {
local board="$1"
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=
PORTAGE_CONFIGROOT="$ROOT" \
run_merge -u --root="$ROOT" "${TOOLCHAIN_PKGS[@]}"
run_merge -u --root="$ROOT" --sysroot="$ROOT" "${TOOLCHAIN_PKGS[@]}"
}
configure_crossdev_overlay / /tmp/crossdev

View File

@ -257,7 +257,7 @@ _configure_sysroot() {
$sudo eselect profile set --force "$profile"
$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)
HOSTCC=\${CBUILD}-gcc
PKG_CONFIG_PATH="\${SYSROOT}/usr/lib/pkgconfig/"
@ -372,7 +372,7 @@ install_cross_libs() {
done | $sudo tee "${package_provided}/cross-${cross_chost}" >/dev/null
# 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

View File

@ -464,7 +464,7 @@ install_oem_package() {
# build anything else from source here. emerge doesn't have a way to
# enforce this in a single command.
info "Building ${oem_pkg}"
USE="${oem_use}" emerge-${BOARD} --root="${oem_tmp}" \
USE="${oem_use}" emerge-${BOARD} \
--nodeps --buildpkgonly --usepkg n \
--quiet "${oem_pkg}"
@ -474,7 +474,8 @@ install_oem_package() {
fi
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} \
--quiet --jobs=2 "${oem_pkg}"
sudo rsync -a "${oem_tmp}/usr/share/oem/" "${VM_TMP_ROOT}/usr/share/oem/"

View File

@ -79,12 +79,25 @@ function torcx_build() (
[ -s "${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} \
--nodeps \
--oneshot \
--quiet \
--root="${tmproot}" \
--root-deps=rdeps \
--quiet \
--sysroot="${tmproot}" \
--usepkgonly \
"${pkg}"
)

View File

@ -305,19 +305,28 @@ if [[ ${FLAGS_regen_configs} -eq ${FLAGS_FALSE} ]]; then
EMERGE_FLAGS+=" --usepkg"
fi
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
info "Installing 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"
SYSROOT="/usr/${BOARD_CHOST}" "${EMERGE_WRAPPER}" \
"${EMERGE_WRAPPER}" \
--usepkgonly --getbinpkg --rebuilt-binaries n \
${EMERGE_TOOLCHAIN_FLAGS} "${TOOLCHAIN_PKGS[@]}"
fi