blob: 5547cee7903f67479dfc739e6de76435571e137b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
|
# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sys-apps/baselayout-prefix/baselayout-prefix-1.12.14.ebuild,v 1.7 2012/02/19 19:32:40 grobian Exp $
EAPI=3
inherit eutils toolchain-funcs multilib prefix flag-o-matic autotools
# last part in e.g. 1.12.14.1704
PVER=1709
DESCRIPTION="Baselayout for Gentoo Prefix installs"
HOMEPAGE="http://prefix.gentoo.org/"
SRC_URI="http://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-${PV}-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}"/baselayout-1.12.5-prefix-no-consoletype.patch
cd "${S}"
eprefixify \
etc/env.d/00basic \
etc/profile \
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"
# avoid a re-automake run
touch -r gnulib/configure.ac gnulib/Makefile.in gnulib/aclocal.m4 || die
}
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 (buildsystem doesn't respect cppflags)
append-cflags -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}")
# CFLAGS in LD for #370695
make -C "${S}"/src \
CC="$(tc-getCC)" \
LD="$(tc-getCC) ${CFLAGS} ${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
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
}
|