blob: 4aa095cb09ef6051bb1b8b647316a5fe08ec1457 [file] [log] [blame]
# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$
EAPI=5
inherit multilib user readme.gentoo systemd
DESCRIPTION="An OpenPGP keyserver which is decentralized and provides highly reliable synchronization"
HOMEPAGE="https://bitbucket.org/skskeyserver/sks-keyserver"
SRC_URI="https://bitbucket.org/skskeyserver/sks-keyserver/downloads/${P}.tgz"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="optimize test"
DOC_CONTENTS="To get sks running, first build the database,
start the databse, import atleast one key, then
run a cleandb. See the sks man page for more information
Typical DB_CONFIG file and sksconf has been installed
in /var/lib/sks and can be used as templates by renaming
to remove the .typical extension. The DB_CONFIG file has
to be in place before doing the database build, or the BDB
environment has to be manually cleared from both KDB and PTree.
The same applies if you are upgrading to this version with an existing KDB/Ptree,
using another version of BDB than 4.8; you need to clear the environment
using e.g. db4.6_recover -h . and db4.6_checkpoint -1h . in both KDB and PTree
Additionally a sample web interface has been installed as
web.typical in /var/lib/sks that can be used by renaming it to web
Important: It is strongly recommended to set up SKS behind a
reverse proxy. Instructions on properly configuring SKS can be
found at https://bitbucket.org/skskeyserver/sks-keyserver/wiki/Peering"
DEPEND="dev-lang/ocaml
dev-ml/cryptokit
sys-libs/db:4.8"
RDEPEND="${DEPEND}"
pkg_setup() {
ebegin "Creating named group and user"
enewgroup sks
enewuser sks -1 -1 /var/lib/sks sks
}
src_prepare() {
cp Makefile.local.unused Makefile.local || die
sed -i \
-e "s:^BDBLIB=.*$:BDBLIB=-L/usr/$(get_libdir):g" \
-e "s:^BDBINCLUDE=.*$:BDBINCLUDE=-I/usr/include/db4.8/:g" \
-e "s:^LIBDB=.*$:LIBDB=-ldb-4.8:g" \
-e "s:^PREFIX=.*$:PREFIX=${D}/usr:g" \
-e "s:^MANDIR=.*$:MANDIR=${D}/usr/share/man:g" \
Makefile.local || die
sed -i \
-e 's:^CAMLINCLUDE= -I lib -I bdb$:CAMLINCLUDE= -I lib -I bdb -I +cryptokit:g' \
-e 's:-Werror-implicit-function-declaration::g' \
Makefile bdb/Makefile || die
sed -i \
-e 's:/usr/sbin/sks:/usr/bin/sks:g' \
sks_build.sh || die
epatch "${FILESDIR}/${P}-eddsa.patch"
epatch "${FILESDIR}/${P}-disable-warn-error-a.patch"
epatch "${FILESDIR}/${P}-curve25519.patch"
}
src_compile() {
emake dep
# sks build fails with paralell build in module Bdb
emake -j1 all
if use optimize; then
emake all.bc
fi
}
src_test() {
./sks unit_test || die
}
src_install() {
if use optimize; then
emake install.bc
dosym /usr/bin/sks.bc usr/bin/sks
dosym /usr/bin/sks_add_mail.bc usr/bin/sks_add_mail
else
emake install
fi
dodoc README.md
newinitd "${FILESDIR}/sks-db.initd" sks-db
newinitd "${FILESDIR}/sks-recon.initd" sks-recon
newconfd "${FILESDIR}/sks.confd" sks
systemd_dounit "${FILESDIR}"/sks-db.service
systemd_dounit "${FILESDIR}"/sks-recon.service
dodir "/var/lib/sks/web.typical"
insinto /var/lib/sks
newins sampleConfig/DB_CONFIG DB_CONFIG.typical
newins sampleConfig/sksconf.typical sksconf.typical
insinto /var/lib/sks/web.typical
doins sampleWeb/HTML5/*
keepdir /var/lib/sks
readme.gentoo_create_doc
}
pkg_postinst() {
readme.gentoo_print_elog
if [[ -n ${REPLACING_VERSIONS} ]]; then
einfo "Note when upgrading from versions of SKS earlier than 1.1.4"
einfo "The default values for pagesize settings have changed. To continue"
einfo "using an existing DB without rebuilding, explicit settings have to be"
einfo "added to the sksconf file."
einfo "pagesize: 4"
einfo "ptree_pagesize: 1"
fi;
}