blob: 393d10b3d962d429da6afd4b0bab4527c360f41a (
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
|
# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/app-emulation/opennebula/opennebula-2.0_beta1.ebuild,v 1.1 2010/08/11 16:07:58 dev-zero Exp $
EAPI=3
USE_RUBY="ruby18"
inherit eutils multilib ruby-ng
MY_P="one-${PV/_/-}"
DOWNLOAD_ID="177"
DESCRIPTION="OpenNebula Virtual Infrastructure Engine"
HOMEPAGE="http://www.opennebula.org/"
SRC_URI="http://dev.opennebula.org/attachments/download/${DOWNLOAD_ID}/${MY_P}.tar.gz"
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="~amd64"
IUSE="qemu mysql sqlite xen"
RDEPEND=">=dev-libs/xmlrpc-c-1.18.02[abyss,cxx,threads]
dev-lang/ruby:1.8
mysql? ( dev-db/mysql )
dev-db/sqlite:3[threadsafe]
net-misc/openssh
qemu? ( app-emulation/libvirt[libvirtd,qemu] )
xen? ( app-emulation/xen-tools )"
DEPEND="${RDEPEND}
>=dev-util/scons-1.2.0-r1"
ruby_add_rdepend "dev-ruby/nokogiri
dev-ruby/crack"
# make sure no eclass is running tests
RESTRICT="test"
S="${WORKDIR}/${MY_P}"
ONEUSER="oneadmin"
ONEGROUP="oneadmin"
pkg_setup () {
enewgroup ${ONEGROUP}
enewuser ${ONEUSER} -1 /bin/bash /var/lib/one ${ONEGROUP}
}
src_unpack() {
default
}
src_prepare() {
epatch \
"${FILESDIR}/${PV}-respect_flags.patch" \
"${FILESDIR}/${PV}-o_creat.patch"
sed -i -e 's|chmod|true|' install.sh || die "sed failed"
}
src_configure() {
:
}
src_compile() {
local myconf
use mysql && myconf+="mysql=yes " || myconf+="mysql=no "
scons \
${myconf} \
$(sed -r 's/.*(-j\s*|--jobs=)([0-9]+).*/-j\2/' <<< ${MAKEOPTS}) \
|| die "building ${PN} failed"
}
src_install() {
DESTDIR=${T} ./install.sh || die "install failed"
cd "${T}"
# fixing paths
sed -i \
-e 's|//share/hooks|/usr/share/one/hooks|' \
etc/oned.conf || die "sed failed"
# installing things for real
dobin bin/*
dodir /usr/$(get_libdir)/one
# we have to preserve the executable bits
cp -a lib/* "${D}/usr/$(get_libdir)/one/" || die "copying lib files failed"
insinto /usr/share/doc/${PF}
doins -r share/examples
insinto /usr/share/one
doins -r share/hooks
keepdir /var/lock/one
keepdir /var/lib/one
keepdir /var/log/one
keepdir /var/run/one
keepdir /var/images
fowners ${ONEUSER}:${ONEGROUP} /var/{lock,lib,log,run}/one /var/images
fperms 3770 /var/images
doenvd "${FILESDIR}/99one"
newinitd "${FILESDIR}/opennebula.initd" opennebula
newconfd "${FILESDIR}/opennebula.confd" opennebula
insinto /etc/one
insopts -m 0640
doins -r etc/*
doins "${FILESDIR}/one_auth"
fowners -R root:${ONEGROUP} /etc/one
fowners ${ONEUSER}:${ONEGROUP} /etc/one/one_auth
}
pkg_postinst() {
local onedir="${EROOT}var/lib/one"
if [ ! -d "${onedir}/.ssh" ] ; then
einfo "Generating ssh-key..."
umask 0027 || die "setting umask failed"
mkdir "${onedir}/.ssh" || die "creating ssh directory failed"
ssh-keygen -q -t dsa -N "" -f "${onedir}/.ssh/id_dsa" || die "ssh-keygen failed"
cat > "${onedir}/.ssh/config" <<EOF
UserKnownHostsFile /dev/null
Host *
StrictHostKeyChecking no
EOF
cat "${onedir}/.ssh/id_dsa.pub" >> "${onedir}/.ssh/authorized_keys" || die "adding key failed"
chown -R ${ONEUSER}:${ONEGROUP} "${onedir}/.ssh" || die "changing owner failed"
fi
if use qemu ; then
elog "Make sure that the user ${ONEUSER} has access to the libvirt control socket"
elog " /var/run/libvirt/libvirt-sock"
elog "You can easily check this by executing the following command as ${ONEUSER} user"
elog " virsh -c qemu:///system nodeinfo"
elog "If not using using policykit in libvirt, the file you should take a look at is:"
elog " /etc/libvirt/libvirtd.conf (look for the unix_sock_*_perms parameters)"
elog "Failure to do so may lead to nodes hanging in PENDING state forever without further notice."
echo ""
elog "Should a node hang in PENDING state even with correct permissions, try the following to get more information."
elog "In /tmp/one-im execute the following command for the biggest one_im-* file:"
elog " ruby -wd one_im-???"
fi
}
|