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
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
|
# Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sys-apps/baselayout/baselayout-1.12.1.ebuild,v 1.1 2006/06/05 14:32:04 uberlord Exp $
inherit flag-o-matic eutils toolchain-funcs multilib
DESCRIPTION="Filesystem baselayout and init scripts"
HOMEPAGE="http://www.gentoo.org/"
SRC_URI="http://dev.gentoo.org/~hollow/distfiles/${P}.tar.bz2
http://dev.gentoo.org/~phreak/distfiles/${P}.tar.bz2"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86"
IUSE="bootstrap build pam static unicode"
# This version of baselayout needs gawk in /bin, but as we do not have
# a c++ compiler during bootstrap, we cannot depend on it if "bootstrap"
# or "build" are in USE.
RDEPEND=">=sys-apps/sysvinit-2.86-r3
!build? ( !bootstrap? (
>=sys-libs/readline-5.0-r1
>=app-shells/bash-3.1_p7
>=sys-apps/coreutils-5.2.1
) )
pam? ( virtual/pam )"
DEPEND="virtual/os-headers
>=sys-apps/portage-2.0.51"
PROVIDE="virtual/baselayout"
src_unpack() {
echo
ewarn "Warning: This package is early alpha and thus may screw your system."
ewarn "Be sure what you do if you proceed. If you don't know what"
ewarn "doing, press <CTRL>+<C> now!"
echo
epause 10
unpack ${A}
cd "${S}"
# Setup unicode defaults for silly unicode users
if use unicode ; then
sed -i -e '/^UNICODE=/s:no:yes:' etc/rc.conf
fi
}
make_opts() {
# Standard options
local opts="ROOT=\"${ROOT}\" DESTDIR=\"${D}\" ARCH=\"$(tc-arch)\""
opts="${opts} LIB=$(get_abi_LIBDIR "${DEFAULT_ABI}")"
if use kernel_linux ; then
opts="${opts} KERNEL=linux"
elif use kernel_FreeBSD ; then
opts="${opts} KERNEL=bsd"
fi
echo "${opts}"
}
src_compile() {
use static && append-ldflags -static
local PAMFLAGS=
use pam && PAMFLAGS="-DHAVE_PAM -lpam"
emake $(make_opts) PAMFLAGS="${PAMFLAGS}" || die
}
# Support function for remapping old wireless dns vars
remap_dns_vars() {
if [[ -f "${ROOT}/etc/conf.d/$1" ]]; then
sed -e 's/\<domain_/dns_domain_/g' \
-e 's/\<mac_domain_/mac_dns_domain_/g' \
-e 's/\<nameservers_/dns_servers_/g' \
-e 's/\<mac_nameservers_/mac_dns_servers_/g' \
-e 's/\<searchdomains_/dns_search_domains_/g' \
-e 's/\<mac_searchdomains_/mac_dns_search_domains_/g' \
"${ROOT}/etc/conf.d/$1" > "${IMAGE}/etc/conf.d/$1"
fi
}
pkg_preinst() {
cd "${S}"
if use build || use bootstrap ; then
make $(make_opts) layout || die "failed to layout filesystem"
# Create base directories
if [[ ! -e ${ROOT}/dev/.udev && ! -e ${ROOT}/dev/.devfsd ]] ; then
einfo "Creating dev nodes"
make $(make_opts) dev || die "failed to create /dev nodes"
fi
elif [[ -w ${ROOT} ]] ; then
# Ensure that we have /dev/null and /dev/console at least
einfo "Ensuring that /dev/null and /dev/console exist on ${ROOT}/dev"
mount -o bind / "${T}"
make DESTDIR="${T}" ARCH="$(tc-arch)" basedev &>/dev/null
umount "${T}"
fi
# Change some vars introduced in baselayout-1.11.0 before we go stable
# The new names make more sense and allow nis_domain
# for use in baselayout-1.12.0
remap_dns_vars net
remap_dns_vars wireless
}
src_install() {
local PAMFLAGS=
use pam && PAMFLAGS="-DHAVE_PAM -lpam"
make $(make_opts) PAMFLAGS="${PAMFLAGS}" install
dodoc ChangeLog "${FILESDIR}"/copyright
# Should this belong in another ebuild? Like say binutils?
# List all the multilib libdirs in /etc/env/04multilib (only if they're
# actually different from the normal
if has_multilib_profile || [[ $(get_libdir) != "lib" || -n ${CONF_MULTILIBDIR} ]]; then
local libdirs="$(get_all_libdirs)" libdirs_env=
: ${libdirs:=lib} # it isn't that we don't trust multilib.eclass...
for dir in ${libdirs}; do
libdirs_env=${libdirs_env:+$libdirs_env:}/${dir}:/usr/${dir}:/usr/local/${dir}
done
# Special-case uglyness... For people updating from lib32 -> lib amd64
# profiles, keep lib32 in the search path while it's around
if has_multilib_profile && [ -d /lib32 -o -d /usr/lib32 ] && ! hasq lib32 ${libdirs}; then
libdirs_env="${libdirs_env}:/lib32:/usr/lib32:/usr/local/lib32"
fi
echo "LDPATH=\"${libdirs_env}\"" > "${D}"/etc/env.d/04multilib
fi
# rc-scripts version for testing of features that *should* be present
echo "Gentoo Base System version ${PV}" > "${D}"/etc/gentoo-release
}
pkg_postinst() {
# Reload init to fix unmounting problems of / on next reboot.
# This is really needed, as without the new version of init cause init
# not to quit properly on reboot, and causes a fsck of / on next reboot.
if [[ ${ROOT} == / ]] && ! use build && ! use bootstrap; then
# Regenerate init.d dependency tree
/sbin/depscan.sh --update >/dev/null
# Regenerate /etc/modules.conf, else it will fail at next boot
einfo "Updating module dependencies..."
/sbin/modules-update force >/dev/null
else
rm -f "${ROOT}"/etc/modules.conf
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 "${ROOT}"/etc/._cfg????_gentoo-release
echo "Gentoo Base System version ${PV}" > "${ROOT}"/etc/gentoo-release
echo
einfo "Please be sure to update all pending '._cfg*' files in /etc,"
einfo "else things might break at your next reboot! You can use 'etc-update'"
einfo "to accomplish this:"
einfo
einfo " # etc-update"
echo
for f in /etc/init.d/net.eth*; do
[[ -L ${f} ]] && continue
echo
einfo "WARNING: You have older net.eth* files in ${ROOT}/etc/init.d/"
einfo "They need to be converted to symlinks to net.lo. If you haven't"
einfo "made personal changes to those files, you can update with the"
einfo "following command:"
einfo
einfo " # /bin/ls /etc/init.d/net.eth* | xargs -n1 ln -sfvn net.lo"
echo
break
done
if sed -e 's/#.*//' "${ROOT}"/etc/conf.d/{net,wireless} 2>/dev/null \
| egrep -q '\<(domain|nameservers|searchdomains)_' ; then
echo
ewarn "You have depreciated variables in ${ROOT}/etc/conf.d/net"
ewarn "or ${ROOT}/etc/conf.d/wireless"
ewarn
ewarn "domain_* -> dns_domain_*"
ewarn "nameservers_* -> dns_servers_*"
ewarn "searchdomains_* -> dns_search_domains_*"
ewarn
ewarn "They have been converted for you - ensure that you"
ewarn "update them via 'etc-update'"
echo
fi
if sed -e 's/#.*//' "${ROOT}"/etc/conf.d/net 2>/dev/null \
| egrep -q '\<(ifconfig|aliases|broadcasts|netmasks|inet6|ipaddr|iproute)_'; then
echo
ewarn "You are using deprecated variables in ${ROOT}/etc/conf.d/net"
ewarn
ewarn "You are advised to review the new configuration variables as"
ewarn "found in ${ROOT}/etc/conf.d/net.example as there is no"
ewarn "guarantee that they will work in future versions."
echo
fi
# Remove old stuff that may cause problems.
if [[ -e "${ROOT}"/etc/env.d/01hostname ]] ; then
rm -f "${ROOT}"/etc/env.d/01hostname
fi
if [[ -e "${ROOT}"/etc/init.d/domainname ]] ; then
rm -f "${ROOT}"/etc/{conf.d,init.d}/domainname \
"${ROOT}"/etc/runlevels/*/domainname
ewarn "The domainname init script has been removed in this version."
ewarn "Consult ${ROOT}/etc/conf.d/net.example for details about how"
ewarn "to apply dns/nis information to the loopback interface."
fi
echo
ewarn " !!! BIG FAT WARNING !!! "
ewarn
ewarn "This is an experimental snapshot"
ewarn
ewarn "!!! DO NOT FILE BUGS FOR IT !!!"
echo
}
|