commit: 393e1cd0c6d3ac81fa166bafe6065d42849f622c
Author: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Thu Apr 5 22:11:59 2018 +0000
Commit: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Thu Apr 5 22:11:59 2018 +0000
URL: https://gitweb.gentoo.org/proj/crossdev.git/commit/?id=393e1cd0
wrappers: create profile/ and override ARCH, LIBC and KERNEL there
Need for make.defaults:
portage does not allow ARCH override in make.conf anymore
Need for use.force:
embedded profile enforces linux target on us. It's ok as a default
but would be nice to be able to override it with nothing (bare-metal)
or other OS without existing profile.
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>
wrappers/emerge-wrapper | 21 +++++++++++++++++++--
wrappers/etc/portage/make.conf | 11 ++++++-----
wrappers/etc/portage/profile/make.defaults | 3 +++
wrappers/etc/portage/profile/use.force | 1 +
4 files changed, 29 insertions(+), 7 deletions(-)
diff --git a/wrappers/emerge-wrapper b/wrappers/emerge-wrapper
index 2a3a91d..d23d00e 100755
--- a/wrappers/emerge-wrapper
+++ b/wrappers/emerge-wrapper
@@ -38,7 +38,11 @@ cross_wrap_etc()
cp -a "${PREFIX}"/share/crossdev/etc ${SYSROOT}/ || return 1
- local conf=${SYSROOT}/etc/portage/make.conf
+ local confs=(
+ ${SYSROOT}/etc/portage/make.conf
+ ${SYSROOT}/etc/portage/profile/make.defaults
+ ${SYSROOT}/etc/portage/profile/use.force
+ )
# Re-use existing CHOST->portage ARCH mapping code
ARCH=$(
@@ -58,12 +62,25 @@ cross_wrap_etc()
*) emit_setup_warning "No LIBC is known for this target." ;;
esac
+ KERNEL="__KERNEL__"
+ case ${CHOST} in
+ *linux*) KERNEL=linux ;;
+ *) emit_setup_warning "No KERNEL is known for this target." ;;
+ esac
+ if [[ -n ${KERNEL} ]]; then
+ USE_FORCE_KERNEL="kernel_${KERNEL}"
+ else
+ USE_FORCE_KERNEL=""
+ fi
+
sed -i \
-e "s:__LIBC__:${LIBC}:g" \
-e "s:__ARCH__:${ARCH}:g" \
+ -e "s:__KERNEL__:${KERNEL}:g" \
+ -e "s:__USE_FORCE_KERNEL__:${USE_FORCE_KERNEL}:g" \
-e "s:__CHOST__:${CHOST}:g" \
-e "s:__CBUILD__:${CBUILD}:g" \
- "${conf}"
+ "${confs[@]}"
# Try to figure out the libc version & os headers to avoid installing
over top of it.
# XXX: Would be nice to use virtual/libc and virtual/os-headers here ...
diff --git a/wrappers/etc/portage/make.conf b/wrappers/etc/portage/make.conf
index 573ead0..eac5138 100644
--- a/wrappers/etc/portage/make.conf
+++ b/wrappers/etc/portage/make.conf
@@ -1,12 +1,15 @@
+# Note: profile variables are set/overridden in profile/ files:
+# etc/portage/profile/use.force (overrides kernel_* USE variables)
+# etc/portage/profile/make.defaults (overrides ARCH, KERNEL, ELIBC variables)
+
CHOST=__CHOST__
CBUILD=__CBUILD__
-ARCH=__ARCH__
-HOSTCC=__CBUILD__-gcc
+HOSTCC=${CBUILD}-gcc
ROOT=@GENTOO_PORTAGE_EPREFIX@/usr/${CHOST}/
-ACCEPT_KEYWORDS="__ARCH__ ~__ARCH__"
+ACCEPT_KEYWORDS="${ARCH} ~${ARCH}"
USE="${ARCH} -pam"
@@ -18,7 +21,5 @@ FEATURES="-collision-protect sandbox buildpkg noman noinfo
nodoc"
PKGDIR=${ROOT}packages/
PORTAGE_TMPDIR=${ROOT}tmp/
-ELIBC="__LIBC__"
-
PKG_CONFIG_PATH="${ROOT}usr/lib/pkgconfig/"
#PORTDIR_OVERLAY="/usr/portage/local/"
diff --git a/wrappers/etc/portage/profile/make.defaults
b/wrappers/etc/portage/profile/make.defaults
new file mode 100644
index 0000000..bf53068
--- /dev/null
+++ b/wrappers/etc/portage/profile/make.defaults
@@ -0,0 +1,3 @@
+ARCH="__ARCH__"
+KERNEL="-linux __KERNEL__"
+ELIBC="__LIBC__"
diff --git a/wrappers/etc/portage/profile/use.force
b/wrappers/etc/portage/profile/use.force
new file mode 100644
index 0000000..155b31d
--- /dev/null
+++ b/wrappers/etc/portage/profile/use.force
@@ -0,0 +1 @@
+-kernel_linux __USE_FORCE_KERNEL__