summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarty E. Plummer <hanetzer@protonmail.com>2017-12-29 05:02:09 -0600
committerSergei Trofimovich <slyfox@gentoo.org>2017-12-29 18:21:44 +0000
commit0fcf2e327095c1329a4044950cadfda036db8245 (patch)
tree029f9a9d5a8a73e334795bdb9f244adf318be23e /sys-libs
parentmedia-gfx/ufraw: stable 0.22-r1 for ppc64, bug #636670 (diff)
downloadgentoo-0fcf2e327095c1329a4044950cadfda036db8245.tar.gz
gentoo-0fcf2e327095c1329a4044950cadfda036db8245.tar.bz2
gentoo-0fcf2e327095c1329a4044950cadfda036db8245.zip
sys-libs/musl: prefixify build
Currently building a musl libc toolchain inside of gentoo prefix with crossdev will fail, due to installing files outside of the prefix. Added ${EPREFIX} and ${ED} where apropriate fixed this issue. Tested in a prefix with toolchain x86_64-gentoo-linux-musl, and tested on bare gentoo with x86_64-gentoo-linux-musl. Acked-by: blueness Package-Manager: Portage-2.3.19, Repoman-2.3.6 Signed-off-by: Marty E. Plummer <hanetzer@protonmail.com> Closes: https://bugs.gentoo.org/642612 Closes: https://github.com/gentoo/gentoo/pull/6678
Diffstat (limited to 'sys-libs')
-rw-r--r--sys-libs/musl/musl-1.1.18-r1.ebuild118
-rw-r--r--sys-libs/musl/musl-9999.ebuild4
2 files changed, 120 insertions, 2 deletions
diff --git a/sys-libs/musl/musl-1.1.18-r1.ebuild b/sys-libs/musl/musl-1.1.18-r1.ebuild
new file mode 100644
index 000000000000..c4a1c90aaf5a
--- /dev/null
+++ b/sys-libs/musl/musl-1.1.18-r1.ebuild
@@ -0,0 +1,118 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit eutils flag-o-matic multilib toolchain-funcs
+if [[ ${PV} == "9999" ]] ; then
+ EGIT_REPO_URI="git://git.musl-libc.org/musl"
+ inherit git-r3
+ SRC_URI="
+ https://dev.gentoo.org/~blueness/musl-misc/getconf.c
+ https://dev.gentoo.org/~blueness/musl-misc/getent.c
+ https://dev.gentoo.org/~blueness/musl-misc/iconv.c"
+ KEYWORDS=""
+else
+ SRC_URI="http://www.musl-libc.org/releases/${P}.tar.gz
+ https://dev.gentoo.org/~blueness/musl-misc/getconf.c
+ https://dev.gentoo.org/~blueness/musl-misc/getent.c
+ https://dev.gentoo.org/~blueness/musl-misc/iconv.c"
+ KEYWORDS="-* ~amd64 ~arm ~mips ~ppc ~x86"
+fi
+
+export CBUILD=${CBUILD:-${CHOST}}
+export CTARGET=${CTARGET:-${CHOST}}
+if [[ ${CTARGET} == ${CHOST} ]] ; then
+ if [[ ${CATEGORY} == cross-* ]] ; then
+ export CTARGET=${CATEGORY#cross-}
+ fi
+fi
+
+DESCRIPTION="Light, fast and simple C library focused on standards-conformance and safety"
+HOMEPAGE="http://www.musl-libc.org/"
+LICENSE="MIT LGPL-2 GPL-2"
+SLOT="0"
+IUSE="crosscompile_opts_headers-only"
+
+QA_SONAME="/usr/lib/libc.so"
+QA_DT_NEEDED="/usr/lib/libc.so"
+
+is_crosscompile() {
+ [[ ${CHOST} != ${CTARGET} ]]
+}
+
+just_headers() {
+ use crosscompile_opts_headers-only && is_crosscompile
+}
+
+pkg_setup() {
+ if [ ${CTARGET} == ${CHOST} ] ; then
+ case ${CHOST} in
+ *-musl*) ;;
+ *) die "Use sys-devel/crossdev to build a musl toolchain" ;;
+ esac
+ fi
+}
+
+src_configure() {
+ tc-getCC ${CTARGET}
+ just_headers && export CC=true
+
+ local sysroot
+ is_crosscompile && sysroot="${EPREFIX}"/usr/${CTARGET}
+ ./configure \
+ --target=${CTARGET} \
+ --prefix=${sysroot}/usr \
+ --syslibdir=${sysroot}/lib \
+ --disable-gcc-wrapper || die
+}
+
+src_compile() {
+ emake obj/include/bits/alltypes.h
+ just_headers && return 0
+
+ emake
+ if [[ ${CATEGORY} != cross-* ]] ; then
+ $(tc-getCC) ${CFLAGS} "${DISTDIR}"/getconf.c -o "${T}"/getconf || die
+ $(tc-getCC) ${CFLAGS} "${DISTDIR}"/getent.c -o "${T}"/getent || die
+ $(tc-getCC) ${CFLAGS} "${DISTDIR}"/iconv.c -o "${T}"/iconv || die
+ fi
+}
+
+src_install() {
+ local target="install"
+ just_headers && target="install-headers"
+ emake DESTDIR="${D}" ${target}
+ just_headers && return 0
+
+ # musl provides ldd via a sym link to its ld.so
+ local sysroot
+ is_crosscompile && sysroot=/usr/${CTARGET}
+ local ldso=$(basename "${ED}"${sysroot}/lib/ld-musl-*)
+ dosym ${sysroot}/lib/${ldso} ${sysroot}/usr/bin/ldd
+
+ if [[ ${CATEGORY} != cross-* ]] ; then
+ local arch=$("${D}"usr/lib/libc.so 2>&1 | sed -n '1s/^musl libc (\(.*\))$/\1/p')
+ [[ -e "${D}"/lib/ld-musl-${arch}.so.1 ]] || die
+ cp "${FILESDIR}"/ldconfig.in "${T}" || die
+ sed -e "s|@@ARCH@@|${arch}|" "${T}"/ldconfig.in > "${T}"/ldconfig || die
+ into /
+ dosbin "${T}"/ldconfig
+ into /usr
+ dobin "${T}"/getconf
+ dobin "${T}"/getent
+ dobin "${T}"/iconv
+ echo 'LDPATH="include ld.so.conf.d/*.conf"' > "${T}"/00musl || die
+ doenvd "${T}"/00musl || die
+ fi
+}
+
+pkg_postinst() {
+ is_crosscompile && return 0
+
+ [ "${ROOT}" != "/" ] && return 0
+
+ ldconfig || die
+ # reload init ...
+ /sbin/telinit U 2>/dev/null
+}
diff --git a/sys-libs/musl/musl-9999.ebuild b/sys-libs/musl/musl-9999.ebuild
index 9e0e184d6562..c4a1c90aaf5a 100644
--- a/sys-libs/musl/musl-9999.ebuild
+++ b/sys-libs/musl/musl-9999.ebuild
@@ -59,7 +59,7 @@ src_configure() {
just_headers && export CC=true
local sysroot
- is_crosscompile && sysroot=/usr/${CTARGET}
+ is_crosscompile && sysroot="${EPREFIX}"/usr/${CTARGET}
./configure \
--target=${CTARGET} \
--prefix=${sysroot}/usr \
@@ -88,7 +88,7 @@ src_install() {
# musl provides ldd via a sym link to its ld.so
local sysroot
is_crosscompile && sysroot=/usr/${CTARGET}
- local ldso=$(basename "${D}"${sysroot}/lib/ld-musl-*)
+ local ldso=$(basename "${ED}"${sysroot}/lib/ld-musl-*)
dosym ${sysroot}/lib/${ldso} ${sysroot}/usr/bin/ldd
if [[ ${CATEGORY} != cross-* ]] ; then