| # Copyright 1999-2012 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| # $Id$ |
| |
| EAPI=3 |
| |
| inherit eutils toolchain-funcs multilib prefix flag-o-matic user |
| |
| # baselayout-prefix-1.12.5.1694.tar.bz2 |
| PVER=1701 |
| |
| DESCRIPTION="Baselayout for Gentoo Prefix installs" |
| HOMEPAGE="https://prefix.gentoo.org/" |
| SRC_URI="https://dev.gentoo.org/~grobian/distfiles/${P}.${PVER}.tar.bz2" |
| |
| LICENSE="GPL-2" |
| SLOT="0" |
| KEYWORDS="~ppc-aix ~x64-freebsd ~x86-freebsd ~hppa-hpux ~ia64-hpux ~x86-interix ~amd64-linux ~ia64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris ~x86-winnt" |
| IUSE="prefix-chaining" |
| DEPEND=">=sys-apps/portage-2.2.01" |
| RDEPEND=">=sys-libs/readline-5.0-r1 |
| >=app-shells/bash-3.1_p7 |
| >=sys-apps/coreutils-5.2.1 |
| kernel_Darwin? ( sys-process/pidof-bsd ) |
| kernel_FreeBSD? ( sys-process/pidof-bsd )" |
| |
| S=${WORKDIR}/${P}.${PVER} |
| |
| src_prepare() { |
| if use prefix-chaining; then |
| epatch "${S}"/baselayout-1.12.5-prefix-chaining.patch |
| |
| # need to set the PKG_CONFIG_PATH globally for this prefix, when |
| # chaining is enabled, since pkg-config may not be installed locally, |
| # but still .pc files should be found for all RDEPENDable prefixes in |
| # the chain. |
| echo "PKG_CONFIG_PATH=\"${EPREFIX}/usr/lib/pkgconfig:${EPREFIX}/usr/share/pkgconfig\"" >> "${S}"/etc/env.d/00basic |
| fi |
| |
| # The consoletype application in this form will only work on Linux |
| [[ ${CHOST} == *-linux-* ]] || epatch "${FILESDIR}"/${P/-prefix/}-prefix-no-consoletype.patch |
| |
| cd "${S}" |
| eprefixify \ |
| etc/env.d/00basic \ |
| etc/profile \ |
| sbin/env-update.sh \ |
| sbin/functions.sh \ |
| sbin/runscript.sh \ |
| src/runscript.c \ |
| sbin/depscan.sh \ |
| sbin/rc-daemon.sh \ |
| sbin/rc-services.sh |
| # add the host OS MANPATH |
| echo 'MANPATH="/usr/share/man"' > etc/env.d/99basic || die "can't make file" |
| } |
| |
| src_configure() { |
| cd gnulib || die |
| default |
| } |
| |
| src_compile() { |
| # build gnulib first |
| pushd gnulib > /dev/null || die |
| emake || die "Cannot build gnulib" |
| popd > /dev/null |
| |
| # use gnulib |
| append-flags -I../gnulib -I../gnulib/gllib |
| append-ldflags -L../gnulib/gllib |
| append-libs gnu |
| |
| local libdir="lib" |
| |
| [[ ${SYMLINK_LIB} == "yes" ]] && libdir=$(get_abi_LIBDIR "${DEFAULT_ABI}") |
| |
| make -C "${S}"/src \ |
| CC="$(tc-getCC)" \ |
| LD="$(tc-getCC) ${LDFLAGS}" \ |
| CFLAGS="${CFLAGS}" \ |
| LIBDIR="${libdir}" || die |
| } |
| |
| src_install() { |
| local dir libdirs libdirs_env rcscripts_dir |
| |
| dodir /etc |
| dodir /etc/env.d |
| dodir /etc/init.d # .keep file might mess up init.d stuff |
| |
| libdirs=$(get_all_libdirs) |
| : ${libdirs:=lib} # it isn't that we don't trust multilib.eclass... |
| |
| rcscripts_dir="/lib/rcscripts" |
| |
| for dir in ${libdirs}; do |
| libdirs_env=${libdirs_env:+$libdirs_env:}/${dir}:/usr/${dir}:/usr/local/${dir} |
| [[ ${dir} == "lib" && ${SYMLINK_LIB} == "yes" ]] && continue |
| dodir /"${dir}" |
| dodir /usr/"${dir}" |
| dodir /usr/local/"${dir}" |
| done |
| |
| # Ugly compatibility with stupid ebuilds and old profiles symlinks |
| if [[ ${SYMLINK_LIB} == "yes" ]] ; then |
| rm -r "${ED}"/{lib,usr/lib,usr/local/lib} &> /dev/null |
| dosym $(get_abi_LIBDIR ${DEFAULT_ABI}) /lib |
| dosym $(get_abi_LIBDIR ${DEFAULT_ABI}) /usr/lib |
| dosym $(get_abi_LIBDIR ${DEFAULT_ABI}) /usr/local/lib |
| fi |
| |
| # FHS compatibility symlinks stuff |
| dosym /var/tmp /usr/tmp |
| |
| # rc-scripts version for testing of features that *should* be present |
| echo "Gentoo Prefix Base System version ${PV}" > ${ED}/etc/gentoo-release |
| |
| # get the basic stuff in there |
| doenvd "${S}"/etc/env.d/* || die "doenvd" |
| |
| # copy the profile |
| cp "${S}"/etc/profile "${ED}"/etc/profile |
| |
| # Setup files in /sbin |
| # |
| cd "${S}"/sbin |
| into / |
| # These moved from /etc/init.d/ to /sbin to help newb systems |
| # from breaking |
| dosbin runscript.sh functions.sh |
| |
| # Compat symlinks between /etc/init.d and /sbin |
| # (some stuff have hardcoded paths) |
| dosym ../../sbin/depscan.sh /etc/init.d/depscan.sh |
| dosym ../../sbin/runscript.sh /etc/init.d/runscript.sh |
| dosym ../../sbin/functions.sh /etc/init.d/functions.sh |
| |
| cd "${S}"/sbin |
| into / |
| dosbin depscan.sh |
| dosbin env-update.sh |
| insinto ${rcscripts_dir}/awk |
| doins "${S}"/src/awk/functions.awk |
| |
| # |
| # Install baselayout utilities |
| # |
| local libdir="lib" |
| [[ ${SYMLINK_LIB} == "yes" ]] && libdir=$(get_abi_LIBDIR "${DEFAULT_ABI}") |
| |
| cd "${S}"/src |
| make DESTDIR="${ED}" LIBDIR="${libdir}" install || die |
| |
| insinto ${rcscripts_dir}/sh |
| doins "${S}"/sbin/rc-* |
| } |
| |
| pkg_postinst() { |
| if [[ ${EUID} == 0 ]] ; then |
| # setup portage user, such that things that require root privs |
| # don't fail, bug #321623 |
| enewgroup portage 250 |
| enewuser portage 250 -1 "${EPREFIX}"/var/tmp/portage portage |
| fi |
| |
| # This is also written in src_install (so it's in CONTENTS), but |
| # write it here so that the new version is immediately in the file |
| # (without waiting for the user to do etc-update) |
| rm -f "${EROOT}"/etc/._cfg????_gentoo-release |
| echo "Gentoo Prefix Base System version ${PV}" > "${EROOT}"/etc/gentoo-release |
| |
| echo |
| einfo "Please be sure to update all pending '._cfg*' files in /etc," |
| einfo "else things might break! You can use 'etc-update'" |
| einfo "to accomplish this:" |
| einfo |
| einfo " # etc-update" |
| echo |
| } |