diff options
Diffstat (limited to 'dev-db/riak/riak-1.4.1.ebuild')
-rw-r--r-- | dev-db/riak/riak-1.4.1.ebuild | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/dev-db/riak/riak-1.4.1.ebuild b/dev-db/riak/riak-1.4.1.ebuild new file mode 100644 index 000000000..a6ab7fbf9 --- /dev/null +++ b/dev-db/riak/riak-1.4.1.ebuild @@ -0,0 +1,148 @@ +# Copyright 1999-2013 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +EAPI=5 + +inherit versionator eutils user multilib toolchain-funcs + +# build time dependency +# fork of the google project with riak specific changes +# is used to build the eleveldb lib and gets removed before install +LEVELDB_PV="${PV}" +LEVELDB_URI="https://github.com/basho/leveldb/archive/${LEVELDB_PV}.tar.gz" +LEVELDB_P="leveldb-${LEVELDB_PV}.tar.gz" +LEVELDB_WD="${WORKDIR}/leveldb-${LEVELDB_PV}" +LEVELDB_TARGET_LOCATION="${S}/deps/eleveldb/c_src/leveldb" + +DESCRIPTION="An open source, distributed database" +HOMEPAGE="http://www.basho.com/" +SRC_URI="http://s3.amazonaws.com/downloads.basho.com/${PN}/$(get_version_component_range 1-2)/${PV}/${P}.tar.gz + ${LEVELDB_URI} -> ${LEVELDB_P} +" + +# prestripped files +# bootstrapped from existing dev-lang/erlang install +QA_PRESTRIPPED=" + /usr/lib.*/riak/lib/asn1-.*/priv/lib/asn1_erl_nif.so + /usr/lib.*/riak/lib/crypto-.*/priv/lib/crypto.so + /usr/lib.*/riak/lib/os_mon-.*/priv/bin/memsup + /usr/lib.*/riak/lib/os_mon-.*/priv/bin/cpu_sup + /usr/lib.*/riak/lib/runtime_tools-.*/priv/lib/dyntrace.so + /usr/lib.*/riak/lib/runtime_tools-.*/priv/lib/trace_ip_drv.so + /usr/lib.*/riak/lib/runtime_tools-.*/priv/lib/trace_file_drv.so + /usr/lib.*/riak/erts-.*/bin/beam + /usr/lib.*/riak/erts-.*/bin/beam.smp + /usr/lib.*/riak/erts-.*/bin/child_setup + /usr/lib.*/riak/erts-.*/bin/inet_gethost + /usr/lib.*/riak/erts-.*/bin/heart + /usr/lib.*/riak/erts-.*/bin/erlexec + /usr/lib.*/riak/erts-.*/bin/erlc + /usr/lib.*/riak/erts-.*/bin/escript + /usr/lib.*/riak/erts-.*/bin/ct_run + /usr/lib.*/riak/erts-.*/bin/run_erl + /usr/lib.*/riak/erts-.*/bin/to_erl + /usr/lib.*/riak/erts-.*/bin/epmd +" + +LICENSE="Apache-2.0" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="doc" + +RDEPEND=" + dev-libs/openssl + sys-libs/ncurses + sys-libs/zlib +" +# TODO test non smp install +DEPEND=" + <dev-lang/erlang-16 + >=dev-lang/erlang-15.2.3.1[smp] + ${RDEPEND} +" + +pkg_setup() { + ebegin "Creating riak user and group" + local riak_home="/var/$(get_libdir)/riak" + enewgroup riak + enewuser riak -1 -1 $riak_home riak + eend $? +} + +src_prepare() { + # unpack source archives to patch with honor-cflags-patch + tar xfp "${S}"/deps/erlang_js/c_src/js-*.tar.gz -C "${S}"/deps/erlang_js/c_src/ || die + tar xfp "${S}"/deps/eleveldb/c_src/snappy-*.tar.gz -C "${S}"/deps/eleveldb/c_src/ || die + + # avoid fetching deps via git that are already available + ln -s ${LEVELDB_WD} ${LEVELDB_TARGET_LOCATION} || die + mkdir -p "${S}"/deps/riaknostic/deps || die + ln -s "${S}"/deps/lager "${S}"/deps/riaknostic/deps || die + ln -s "${S}"/deps/meck "${S}"/deps/riaknostic/deps || die + ln -s "${S}"/deps/getopt "${S}"/deps/riaknostic/deps || die + + epatch "${FILESDIR}/${PV}-fix-directories.patch" \ + "${FILESDIR}/${PV}-honor-cflags.patch" +} + +src_compile() { + # build fails with MAKEOPTS > -j1 + emake -j1 \ + CC=$(tc-getCC) \ + CXX=$(tc-getCXX) \ + AR=$(tc-getAR) \ + LD=$(tc-getLD) \ + RANLIB=$(tc-getRANLIB) \ + STRIP="" rel +} + +src_install() { + local lib_dir=$(get_libdir) + local erts_version=$(find /usr/${lib_dir}/erlang/lib/ -maxdepth 1 -type d -name erts-* | cut -d'-' -f2) + + # install /usr/lib + # TODO test on x86 + insinto /usr/${lib_dir}/riak + doins -r rel/riak/lib \ + rel/riak/releases \ + rel/riak/erts-${erts_version} + fperms -R 0755 /usr/${lib_dir}/riak/erts-${erts_version}/bin + + cd "${D}" + find "usr/${lib_dir}/riak/lib/" -type f -path */priv/bin/* | xargs fperms 0755 + cd "${S}" + + # install /usr/bin + dobin rel/riak/bin/* + + # install /etc/riak + insinto /etc/riak + doins rel/riak/etc/* + + # restrict access to cert and key + fperms 0600 /etc/riak/cert.pem \ + /etc/riak/key.pem + + # create neccessary directories + keepdir /var/lib/riak/{bitcask,ring,leveldb} \ + /var/log/riak/sasl + + # change owner to riak + fowners -R riak:riak /var/lib/riak \ + /var/log/riak + + # create docs + doman doc/man/man1/* + use doc && dodoc doc/*.txt + + # init.d file + newinitd "${FILESDIR}/${PN}.initd" riak + newconfd "${FILESDIR}/${PN}.confd" riak + + # TODO logrotate +} + +pkg_postinst() { + ewarn "To use kernel polling build erlang with the 'kpoll' useflag" +} |