blob: e9cd762ac9862525ae7193f38654cfcfeadfffea (
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
|
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI="7"
inherit autotools
MY_PV="${PV//_beta/b}"
MY_PV="${MY_PV/_p/p}"
MY_P="${PN}-${MY_PV}"
DESCRIPTION="An suite of programs for configuring and maintaining Unix-like computers"
HOMEPAGE="http://www.cfengine.org/"
SRC_URI="http://cfengine.package-repos.s3.amazonaws.com/tarballs/${MY_P}.tar.gz
masterfiles? ( http://cfengine.package-repos.s3.amazonaws.com/tarballs/masterfiles-${MY_PV}.tar.gz -> ${PN}-masterfiles-${MY_PV}.tar.gz )"
LICENSE="GPL-3"
SLOT="3"
KEYWORDS="~amd64 ~x86"
IUSE="acl examples libvirt mysql masterfiles postgres +qdbm selinux tokyocabinet vim-syntax xml"
DEPEND="acl? ( virtual/acl )
mysql? ( virtual/mysql )
postgres? ( dev-db/postgresql:= )
selinux? ( sys-libs/libselinux )
tokyocabinet? ( dev-db/tokyocabinet )
qdbm? ( dev-db/qdbm )
libvirt? ( app-emulation/libvirt )
xml? ( dev-libs/libxml2:2 ) \
dev-libs/openssl:=
dev-libs/libpcre:=
net-libs/libnsl:="
RDEPEND="${DEPEND}"
PDEPEND="vim-syntax? ( app-vim/cfengine-syntax )"
REQUIRED_USE="^^ ( qdbm tokyocabinet )"
S="${WORKDIR}/${MY_P}"
src_prepare() {
local PATCHES=(
"${FILESDIR}/${P}-ifconfig.patch"
"${FILESDIR}/${P}-sysmacros.patch"
)
default
eautoreconf
}
src_unpack() {
unpack ${MY_P}.tar.gz
if use masterfiles; then
unpack ${PN}-masterfiles-${MY_PV}.tar.gz
fi
}
src_configure() {
# Enforce /var/cfengine for historical compatibility
econf \
--enable-fhs \
--docdir=/usr/share/doc/${PF} \
--with-workdir=/var/cfengine \
--with-pcre \
$(use_with acl libacl) \
$(use_with qdbm) \
$(use_with tokyocabinet) \
$(use_with postgres postgresql) \
$(use_with mysql mysql check) \
$(use_with libvirt) \
$(use_enable selinux)
# Fix Makefile to skip inputs, see below "examples"
#sed -i -e 's/\(SUBDIRS.*\) inputs/\1/' Makefile || die
# We install the documentation through portage
sed -i -e 's/\(install-data-am.*\) install-docDATA/\1/' Makefile || die
}
src_install() {
newinitd "${FILESDIR}"/cf-serverd.rc6 cf-serverd
newinitd "${FILESDIR}"/cf-monitord.rc6 cf-monitord
newinitd "${FILESDIR}"/cf-execd.rc6 cf-execd
emake DESTDIR="${D}" install
# fix ifconfig path in provided promises
find "${ED}"/usr/share -name "*.cf" | xargs sed -i "s,/sbin/ifconfig,$(which ifconfig),g"
# Evil workaround for now..
mv "${ED}"/usr/share/doc/${PN}/ "${ED}"/usr/share/doc/${PF}
dodoc AUTHORS
if ! use examples; then
rm -rf "${ED}"/usr/share/doc/${PF}/example*
fi
# Create cfengine working directory
dodir /var/cfengine/bin
fperms 700 /var/cfengine
# Copy cfagent into the cfengine tree otherwise cfexecd won't
# find it. Most hosts cache their copy of the cfengine
# binaries here. This is the default search location for the
# binaries.
for bin in promises agent monitord serverd execd runagent key; do
dosym ../../../usr/sbin/cf-$bin /var/cfengine/bin/cf-$bin
done
if use masterfiles; then
insinto /var/cfengine
doins -r "${WORKDIR}/masterfiles"
fi
dodir /etc/env.d
echo 'CONFIG_PROTECT=/var/cfengine/masterfiles' >"${ED}/etc/env.d/99${PN}" || die
}
pkg_postinst() {
echo
elog "NOTE: BDB (BerkelyDB) support has been removed as of ${PN}-3.3.0"
echo
einfo "Init scripts for cf-serverd, cf-monitord, and cf-execd are provided."
einfo
einfo "To run cfengine out of cron every half hour modify your crontab:"
einfo "0,30 * * * * /usr/sbin/cf-execd -F"
echo
elog "If you run cfengine the very first time, you MUST generate the keys for cfengine by running:"
elog "emerge --config ${CATEGORY}/${PN}"
# Fix old cf-servd, remove it after some releases.
local found=0
for fname in $(find "${EROOT}"/etc/runlevels/ -type f -or -type l -name 'cf-servd'); do
found=1
rm "$fname"
ln -s /etc/init.d/cf-serverd $(echo "$fname" | sed 's:cf-servd:cf-serverd:')
done
if [ "${found}" -eq 1 ]; then
echo
elog "/etc/init.d/cf-servd has been renamed to /etc/init.d/cf-serverd"
fi
}
pkg_config() {
if [[ -z ${ROOT} ]]; then
if [ ! -f "/var/cfengine/ppkeys/localhost.priv" ]; then
einfo "Generating keys for localhost."
/usr/sbin/cf-key
fi
else
die "cfengine cfkey does not support any value of ROOT other than /."
fi
}
|