|
| 1 | +# Copyright 1999-2020 Gentoo Authors |
| 2 | +# Distributed under the terms of the GNU General Public License v2 |
| 3 | + |
| 4 | +EAPI=7 |
| 5 | +inherit autotools eutils flag-o-matic systemd |
| 6 | + |
| 7 | +MY_PV="${PV/_rc/-rc}" |
| 8 | +MY_P="${PN}-${MY_PV}" |
| 9 | + |
| 10 | +DESCRIPTION="High-performance, distributed memory object caching system" |
| 11 | +HOMEPAGE="http://memcached.org/" |
| 12 | +SRC_URI="https://www.memcached.org/files/${MY_P}.tar.gz |
| 13 | + https://www.memcached.org/files/old/${MY_P}.tar.gz" |
| 14 | + |
| 15 | +LICENSE="BSD" |
| 16 | +SLOT="0" |
| 17 | +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos" |
| 18 | +IUSE="debug sasl seccomp selinux slabs-reassign test" # hugetlbfs later |
| 19 | + |
| 20 | +RDEPEND=">=dev-libs/libevent-1.4:= |
| 21 | + dev-lang/perl |
| 22 | + sasl? ( dev-libs/cyrus-sasl ) |
| 23 | + seccomp? ( sys-libs/libseccomp ) |
| 24 | + selinux? ( sec-policy/selinux-memcached )" |
| 25 | +DEPEND="${RDEPEND} |
| 26 | + acct-user/memcached |
| 27 | + test? ( virtual/perl-Test-Harness >=dev-perl/Cache-Memcached-1.24 )" |
| 28 | + |
| 29 | +S="${WORKDIR}/${MY_P}" |
| 30 | + |
| 31 | +RESTRICT="!test? ( test )" |
| 32 | + |
| 33 | +PATCHES=( |
| 34 | + "${FILESDIR}/${PN}-1.2.2-fbsd.patch" |
| 35 | + "${FILESDIR}/${PN}-1.4.0-fix-as-needed-linking.patch" |
| 36 | + "${FILESDIR}/${PN}-1.4.4-as-needed.patch" |
| 37 | + "${FILESDIR}/${PN}-1.4.17-EWOULDBLOCK.patch" |
| 38 | +) |
| 39 | + |
| 40 | +src_prepare() { |
| 41 | + sed -i -e 's,-Werror,,g' configure.ac || die |
| 42 | + sed -i -e 's,AM_CONFIG_HEADER,AC_CONFIG_HEADERS,' configure.ac || die |
| 43 | + eautoreconf |
| 44 | + use slabs-reassign && append-flags -DALLOW_SLABS_REASSIGN |
| 45 | + |
| 46 | + # Tweak upstream systemd unit to use Gentoo variables/envfile. |
| 47 | + # As noted by bug #587440 |
| 48 | + sed -i -e '/^ExecStart/{ |
| 49 | + s,{USER},{MEMCACHED_RUNAS},g; |
| 50 | + s,{CACHESIZE},{MEMUSAGE},g; |
| 51 | + s,OPTIONS,MISC_OPTS,g; |
| 52 | + }; |
| 53 | + /Environment=/{s,OPTIONS,MISC_OPTS,g;}; |
| 54 | + /EnvironmentFile=/{s,/sysconfig/,/conf.d/,g;}; |
| 55 | + ' \ |
| 56 | + "${S}"/scripts/memcached.service |
| 57 | + default |
| 58 | +} |
| 59 | + |
| 60 | +src_configure() { |
| 61 | + econf \ |
| 62 | + --disable-docs \ |
| 63 | + $(use_enable sasl) |
| 64 | + # The xml2rfc tool to build the additional docs requires TCL :-( |
| 65 | + # `use_enable doc docs` |
| 66 | +} |
| 67 | + |
| 68 | +src_compile() { |
| 69 | + # There is a heavy degree of per-object compile flags |
| 70 | + # Users do NOT know better than upstream. Trying to compile the testapp and |
| 71 | + # the -debug version with -DNDEBUG _WILL_ fail. |
| 72 | + append-flags -UNDEBUG -pthread |
| 73 | + emake testapp memcached-debug CFLAGS="${CFLAGS}" |
| 74 | + filter-flags -UNDEBUG |
| 75 | + emake |
| 76 | +} |
| 77 | + |
| 78 | +src_install() { |
| 79 | + emake DESTDIR="${D}" install |
| 80 | + dobin scripts/memcached-tool |
| 81 | + use debug && dobin memcached-debug |
| 82 | + |
| 83 | + dodoc AUTHORS ChangeLog NEWS README.md doc/{CONTRIBUTORS,*.txt} |
| 84 | + |
| 85 | + newconfd "${FILESDIR}/memcached.confd" memcached |
| 86 | + newinitd "${FILESDIR}/memcached.init2" memcached |
| 87 | + systemd_dounit "${S}/scripts/memcached.service" |
| 88 | +} |
| 89 | + |
| 90 | +pkg_postinst() { |
| 91 | + elog "With this version of Memcached Gentoo now supports multiple instances." |
| 92 | + elog "To enable this you should create a symlink in /etc/init.d/ for each instance" |
| 93 | + elog "to /etc/init.d/memcached and create the matching conf files in /etc/conf.d/" |
| 94 | + elog "Please see Gentoo bug #122246 for more info" |
| 95 | +} |
| 96 | + |
| 97 | +src_test() { |
| 98 | + emake -j1 test |
| 99 | +} |
0 commit comments