From c6ff4058cf235d3fa9754e5fa4484dd43699abbf Mon Sep 17 00:00:00 2001 From: Ultrabug Date: Fri, 2 Sep 2016 08:32:47 +0200 Subject: dev-db/rethinkdb: new package Package-Manager: portage-2.2.27 --- dev-db/rethinkdb/Manifest | 1 + dev-db/rethinkdb/files/rethinkdb.confd | 12 +++ dev-db/rethinkdb/files/rethinkdb.initd | 50 +++++++++++ dev-db/rethinkdb/files/rethinkdb.service | 13 +++ dev-db/rethinkdb/files/rethinkdb.tmpfilesd | 1 + dev-db/rethinkdb/metadata.xml | 19 +++++ dev-db/rethinkdb/rethinkdb-2.3.4.ebuild | 133 +++++++++++++++++++++++++++++ 7 files changed, 229 insertions(+) create mode 100644 dev-db/rethinkdb/Manifest create mode 100644 dev-db/rethinkdb/files/rethinkdb.confd create mode 100644 dev-db/rethinkdb/files/rethinkdb.initd create mode 100644 dev-db/rethinkdb/files/rethinkdb.service create mode 100644 dev-db/rethinkdb/files/rethinkdb.tmpfilesd create mode 100644 dev-db/rethinkdb/metadata.xml create mode 100644 dev-db/rethinkdb/rethinkdb-2.3.4.ebuild (limited to 'dev-db/rethinkdb') diff --git a/dev-db/rethinkdb/Manifest b/dev-db/rethinkdb/Manifest new file mode 100644 index 000000000000..ae41ede7360e --- /dev/null +++ b/dev-db/rethinkdb/Manifest @@ -0,0 +1 @@ +DIST rethinkdb-2.3.4.tgz 76811758 SHA256 93a7927d1ed785d084be3b8bac3f9af2d89c86de16e003848acbe21a32a9e1a7 SHA512 47e62ef57de112129b7409027017882bc31bb2403287845253a0fe0f61d0977f2e37ba487506853ed3421ac57b2558cabde4f8aee4b9723e4c61300b447e1e19 WHIRLPOOL ce956ad5b7f5f6a38500e501b104571d819e0292cfd1a922ef4f6395ad4e48242456759dad399f5ed2048dee6680df645f54b8ef18e2eebc7f904abe5a2be91c diff --git a/dev-db/rethinkdb/files/rethinkdb.confd b/dev-db/rethinkdb/files/rethinkdb.confd new file mode 100644 index 000000000000..af65794a44bd --- /dev/null +++ b/dev-db/rethinkdb/files/rethinkdb.confd @@ -0,0 +1,12 @@ +# !! IMPORTANT !! +# +# This file is ONLY used to override some of the init script configuration. +# +# You should NOT use this file to configure your rethinkdb instance, +# see the /etc/rethinkdb/default.conf.sample file instead. +# +# Available init script modifiers : +# - config_file : the configuration file to use (default : /etc/rethinkdb/instance.d/.conf) +# - user : the user used to run your rethinkdb instance (default : rethinkdb) +# - group : the group used to run your rethinkdb instance (default : rethinkdb) +# - run_dir : the run directory for your PID files (default : /run/rethinkdb) \ No newline at end of file diff --git a/dev-db/rethinkdb/files/rethinkdb.initd b/dev-db/rethinkdb/files/rethinkdb.initd new file mode 100644 index 000000000000..193f0710043e --- /dev/null +++ b/dev-db/rethinkdb/files/rethinkdb.initd @@ -0,0 +1,50 @@ +#!/sbin/openrc-run +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +instance_name=${SVCNAME/*.} +config_file=${config_file:-/etc/rethinkdb/instances.d/${instance_name}.conf} +run_dir=${run_dir:-/run/rethinkdb} + +command="/usr/bin/rethinkdb" +command_args="--config-file ${config_file}" +command_background="true" +pidfile=${run_dir}/${instance_name}.pid +user=${user:-rethinkdb} +group=${group:-rethinkdb} +start_stop_daemon_args="--user ${user} --group ${group} --wait 2000" + +depend() { + use net +} + +start_pre() { + checkpath -d -m 0750 -o "${user}":"${group}" "${run_dir}" + if [ "${instance_name}" == "rethinkdb" ]; then + eerror "You should not run this default init script directly" + eerror "Create a symlink to an instance name" + eerror "and create a configuration file in /etc/rethinkdb/instances.d/" + eerror "then run this instance init script instead." + return 1 + fi + if [ ! -f ${config_file} ]; then + eerror "Missing configuration file ${config_file}" + return 1 + else + # respect configured directory or set a default + directory=$(egrep -e '^directory=' "${config_file}" | cut -d'=' -f2) + if [ -z "${directory}" ]; then + directory=/var/lib/rethinkdb/instances.d/"${instance_name}" + fi + checkpath -d -m 0750 -o "${user}":"${group}" "${directory}" + command_args="${command_args} --directory ${directory}" + + # respect configured log-file or set a default + log_file=$(egrep -e '^log_file=' "${config_file}" | cut -d'=' -f2) + if [ -z "${log_file}" ]; then + log_file=/var/log/rethinkdb/"${instance_name}".log + fi + command_args="${command_args} --log-file ${log_file}" + fi +} diff --git a/dev-db/rethinkdb/files/rethinkdb.service b/dev-db/rethinkdb/files/rethinkdb.service new file mode 100644 index 000000000000..09645c2ae6ab --- /dev/null +++ b/dev-db/rethinkdb/files/rethinkdb.service @@ -0,0 +1,13 @@ +[Unit] +Description=RethinkDB database server for instance '%i' + +[Service] +User=rethinkdb +Group=rethinkdb +ExecStart=/usr/bin/rethinkdb serve --config-file /etc/rethinkdb/instances.d/%i.conf +KillMode=process +PrivateTmp=true + +[Install] +WantedBy=multi-user.target + diff --git a/dev-db/rethinkdb/files/rethinkdb.tmpfilesd b/dev-db/rethinkdb/files/rethinkdb.tmpfilesd new file mode 100644 index 000000000000..694501e8ab55 --- /dev/null +++ b/dev-db/rethinkdb/files/rethinkdb.tmpfilesd @@ -0,0 +1 @@ +d /run/rethinkdb 0755 rethinkdb rethinkdb - \ No newline at end of file diff --git a/dev-db/rethinkdb/metadata.xml b/dev-db/rethinkdb/metadata.xml new file mode 100644 index 000000000000..91224a49a819 --- /dev/null +++ b/dev-db/rethinkdb/metadata.xml @@ -0,0 +1,19 @@ + + + + + ultrabug@gentoo.org + Ultrabug + + + + Use dev-libs/jemalloc for allocations (default). + + + Use tcmalloc from dev-util/google-perftools for allocations. + + + + https://github.com/rethinkdb/rethinkdb/issues + + diff --git a/dev-db/rethinkdb/rethinkdb-2.3.4.ebuild b/dev-db/rethinkdb/rethinkdb-2.3.4.ebuild new file mode 100644 index 000000000000..cbd2f672909d --- /dev/null +++ b/dev-db/rethinkdb/rethinkdb-2.3.4.ebuild @@ -0,0 +1,133 @@ +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI="6" + +inherit systemd user + +DESCRIPTION="The open-source database for the realtime web." +HOMEPAGE="http://www.rethinkdb.com" +LICENSE="AGPL-3" +SLOT="0" +SRC_URI="http://download.rethinkdb.com/dist/${P}.tgz" + +KEYWORDS="~amd64 ~x86" +IUSE="doc +jemalloc tcmalloc" + +# TODO: rly need some webui libs ? +DEPEND="dev-cpp/gtest + dev-libs/boost + dev-libs/protobuf-c + >=dev-libs/re2-0.2016.05.01 + sys-libs/libunwind + sys-libs/ncurses:= + jemalloc? ( >=dev-libs/jemalloc-3.2 ) + tcmalloc? ( dev-util/google-perftools )" +RDEPEND="${DEPEND}" +REQUIRED_USE="?? ( tcmalloc jemalloc )" + +pkg_setup() { + enewgroup rethinkdb + enewuser rethinkdb -1 -1 /var/lib/${PN} rethinkdb +} + +src_prepare() { + eapply_user + + # don't use predefined configuration + rm configure.default + + # fix doc and init script auto installation + sed -e 's/ install-docs / /g' -e 's/ install-init / /g' -i mk/install.mk || die + + # default config for Gentoo + # fix default pid-file path + # fix default directory path + # fix default log-file path + sed -e 's@/var/run/@/run/@g' \ + -e 's@/var/lib/rethinkdb/@/var/lib/rethinkdb/instances.d/@g' \ + -e 's@/var/log/rethinkdb@/var/log/rethinkdb/default.log@g' \ + -i packaging/assets/config/default.conf.sample || die + + # proper CXX declaration + sed -e "s/CXX=\$(.*/CXX=$(tc-getCXX)/g" -i configure || die + + # respect user CXXFLAGS optimizations + sed -e 's/-O3//g' -i src/build.mk || die +} + +src_configure() { + local conf_opts=( + --prefix="/usr" + --sysconfdir="/etc" + --localstatedir="/var" + --static=none + --dynamic=gtest + --dynamic=re2 + ) + if use jemalloc; then + conf_opts+=(--with-jemalloc) + elif use tcmalloc; then + conf_opts+=(--with-tcmalloc) + else + conf_opts+=(--with-system-malloc) + fi + ./configure "${conf_opts[@]}" +} + +src_compile() { + emake VERBOSE=1 +} + +src_install() { + emake DESTDIR="${D}" VERBOSE=1 install + + for x in /var/{lib,log}/${PN}; do + keepdir "${x}" + fowners rethinkdb:rethinkdb "${x}" + done + + newconfd "${FILESDIR}/rethinkdb.confd" rethinkdb + newinitd "${FILESDIR}/rethinkdb.initd" rethinkdb + + systemd_newunit "${FILESDIR}/"${PN}.service "rethinkdb@.service" + systemd_newtmpfilesd "${FILESDIR}"/${PN}.tmpfilesd "rethinkdb.conf" + + use doc && dodoc COPYRIGHT NOTES.md README.md +} + +pkg_config() { + einfo "This will prepare a new RethinkDB instance. Press Control-C to abort." + + einfo "Enter the name for the new instance: " + read instance_name + [[ -z "${instance_name}" ]] && die "Invalid instance name" + + local instance_data="/var/lib/rethinkdb/instances.d/${instance_name}" + local instance_config="/etc/rethinkdb/instances.d/${instance_name}.conf" + if [[ -e "${instance_data}" || -e "${instance_config}" ]]; then + eerror "An instance with the same name already exists:" + eerror "Check ${instance_data} or ${instance_config}." + die "Instance already exists" + fi + + /usr/bin/rethinkdb create -d "${instance_data}" &>/dev/null \ + || die "Creating instance failed" + chown -R rethinkdb:rethinkdb "${instance_data}" \ + || die "Correcting permissions for instance failed" + cp /etc/rethinkdb/default.conf.sample "${instance_config}" \ + || die "Creating configuration file failed" + sed -e "s:^# \(directory=\).*$:\1${instance_data}:" \ + -i "${instance_config}" \ + || die "Modifying configuration file failed" + ln -s /etc/init.d/rethinkdb "/etc/init.d/rethinkdb.${instance_name}" \ + || die "Creating init script symlink failed" + + einfo "Successfully created the instance at ${instance_data}." + einfo "To change the default settings edit the configuration file:" + einfo "${instance_config}" + einfo " " + einfo "To start your instance, run:" + einfo "/etc/init.d/rethinkdb.${instance_name}" +} -- cgit v1.2.3-65-gdbad