aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app-emulation/opennebula/opennebula-5.4.6.ebuild')
-rw-r--r--app-emulation/opennebula/opennebula-5.4.6.ebuild186
1 files changed, 186 insertions, 0 deletions
diff --git a/app-emulation/opennebula/opennebula-5.4.6.ebuild b/app-emulation/opennebula/opennebula-5.4.6.ebuild
new file mode 100644
index 0000000..9d48554
--- /dev/null
+++ b/app-emulation/opennebula/opennebula-5.4.6.ebuild
@@ -0,0 +1,186 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI=5
+USE_RUBY="ruby20 ruby21 ruby22 ruby23"
+
+inherit user eutils multilib ruby-ng systemd
+
+MY_P="opennebula-${PV/_/-}"
+
+DESCRIPTION="OpenNebula Virtual Infrastructure Engine"
+HOMEPAGE="http://www.opennebula.org/"
+SRC_URI="http://downloads.opennebula.org/packages/${PN}-${PV}/${PN}-${PV}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="qemu +mysql xen sqlite +extras systemd"
+
+RDEPEND=">=dev-libs/xmlrpc-c-1.18.02[abyss,cxx,threads]
+ dev-lang/ruby
+ extras? ( dev-libs/openssl
+ dev-ruby/libxml
+ net-misc/curl
+ dev-libs/libxslt
+ dev-libs/expat
+ dev-ruby/uuidtools
+ dev-ruby/amazon-ec2
+ dev-ruby/webmock
+ dev-ruby/mysql
+ dev-ruby/mysql2
+ dev-ruby/parse-cron
+ dev-ruby/sequel
+ dev-ruby/treetop
+ dev-ruby/xml-simple
+ dev-ruby/zendesk_api
+ dev-libs/log4cpp )
+ mysql? ( virtual/mysql )
+ dev-db/sqlite
+ net-misc/openssh
+ || ( app-cdr/cdrkit app-cdr/cdrtools )
+ sqlite? ( dev-ruby/sqlite3 )
+ qemu? ( app-emulation/libvirt[libvirtd,qemu] )
+ xen? ( app-emulation/xen-tools )"
+DEPEND="${RDEPEND}
+ >=dev-util/scons-1.2.0-r1
+ dev-ruby/nokogiri"
+
+# make sure no eclass is running tests
+RESTRICT="test"
+
+S="${WORKDIR}/${PN}-${PV}"
+
+ONEUSER="oneadmin"
+ONEGROUP="oneadmin"
+
+pkg_setup () {
+ enewgroup ${ONEGROUP}
+ enewuser ${ONEUSER} -1 /bin/bash /var/lib/one ${ONEGROUP}
+}
+
+src_unpack() {
+ default
+}
+
+src_prepare() {
+ sed -i -e 's|chmod|true|' install.sh || die "sed failed"
+}
+
+src_configure() {
+ :
+}
+
+src_compile() {
+
+ local myconf
+ use extras && myconf+="new_xmlrpc=yes "
+ 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 -u ${ONEUSER} -g ${ONEGROUP} || die "install failed"
+
+ cd "${T}"
+
+ # installing things for real
+ dobin bin/*
+
+ keepdir /var/{lib,run}/${PN} || die "keepdir failed"
+
+ dodir /usr/$(get_libdir)/one
+ dodir /var/lock/one
+ dodir /var/log/one
+ dodir /var/lib/one
+ dodir /var/run/one
+ dodir /var/tmp/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
+
+ dodir /var/lib/one
+ dodir /var/lib/one/vms
+ dodir /usr/share/one
+ dodir /etc/tmpfiles.d
+ # we have to preserve the executable bits
+ cp -a var/remotes "${D}/var/lib/one/" || die "copying remotes failed"
+ cp -a share/* "${D}/usr/share/one/" || die "copying share failed"
+
+ doenvd "${FILESDIR}/99one"
+
+ newinitd "${FILESDIR}/opennebula.initd" opennebula
+ newinitd "${FILESDIR}/sunstone-server.initd" sunstone-server
+ newinitd "${FILESDIR}/oneflow-server.initd" oneflow-server
+ newconfd "${FILESDIR}/opennebula.confd" opennebula
+ newconfd "${FILESDIR}/sunstone-server.confd" sunstone-server
+ newconfd "${FILESDIR}/oneflow-server.confd" oneflow-server
+
+ use systemd && systemd_dounit "${FILESDIR}"/opennebula{,-sunstone,-econe,-oneflow,-onegate}.service
+
+ insinto /etc/one
+ insopts -m 0640
+ doins -r etc/*
+ doins "${FILESDIR}/one_auth"
+
+ insinto /etc/tmpfiles.d
+ doins "${FILESDIR}/tmpfilesd.opennebula.conf"
+
+}
+
+pkg_postinst() {
+
+
+ chown -R oneadmin:oneadmin ${ROOT}var/{lock,lib,log,run,tmp}/one
+ chown -R oneadmin:oneadmin ${ROOT}usr/share/one
+ chown -R oneadmin:oneadmin ${ROOT}etc/one
+ chown -R oneadmin:oneadmin ${ROOT}usr/lib/one
+
+ 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-???"
+ echo ""
+ elog "OpenNebula doesn't allow you to specify the disc format."
+ elog "Unfortunately the default in libvirt is not to guess and"
+ elog "it therefores assumes a 'raw' format when using qemu/kvm."
+ elog "Set 'allow_disk_format_probing = 0' in /etc/libvirt/qemu.conf"
+ elog "to work around this until OpenNebula fixes it."
+ fi
+
+ elog "If you wish to use the sunstone server, please issue the command"
+ #elog "/usr/share/one/install_gems as oneadmin user"
+ elog "gem install sequel thin json rack sinatra builder treetop zendesk_api mysql parse-cron"
+
+
+}
+