View Raw Ebuild
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit git-r3 systemd
declare -A FLAGS
FLAGS=( [blacklist]="DWANT_ACCESSLIST_BLACK"
[gzip]="DWANT_COMPRESSION_GZIP$"
[gzip-always]="DWANT_COMPRESSION_GZIP_ALWAYS"
[ip-from-query]="DWANT_IP_FROM_QUERY_STRING"
[ip-from-proxy]="DWANT_IP_FROM_PROXY"
[ipv6]="DWANT_V6"
[fullscrapes]="DWANT_FULLSCRAPE"
[fullscrapes-modest]="DWANT_MODEST_FULLSCRAPES"
[live-sync]="DWANT_SYNC_LIVE"
[live-sync-unicast]="DSYNC_LIVE_UNICAST"
[log-networks-full]="DWANT_FULLLOG_NETWORKS"
[log-numwant]="DWANT_LOG_NUMWANT"
[persistence]="DWANT_PERSISTENCE"
[spot-woodpeckers]="DWANT_SPOT_WOODPECKER"
[syslog]="DWANT_SYSLOG"
[restrict-stats]="DWANT_RESTRICT_STATS"
[whitelist]="DWANT_ACCESSLIST_WHITE"
[httpdebug]="DWANT_HTTPHUMAN"
)
DESCRIPTION="High-performance bittorrent tracker"
HOMEPAGE="https://github.com/flygoast/opentracker http://erdgeist.org/arts/software/opentracker/"
EGIT_REPO_URI="https://github.com/flygoast/${PN}.git"
LICENSE="BEER-WARE"
SLOT="0"
IUSE="blacklist debug +gzip gzip-always httpdebug ip-from-query ip-from-proxy ipv6 +fullscrapes fullscrapes-modest live-sync live-sync-unicast log-networks-full log-numwant persistence restrict-stats spot-woodpeckers syslog whitelist"
REQUIRED_USE="blacklist? ( !whitelist )
gzip-always? ( gzip )
gzip? ( fullscrapes )
live-sync-unicast? ( live-sync )
persistence? ( !ipv6 )"
RDEPEND="acct-user/opentracker
dev-libs/libowfat
gzip? ( virtual/zlib:= )"
src_prepare() {
default
# Fix use of FEATURES, so it's not mixed up with portage's FEATURES, and comment all of them
# Define PREFIX, BINDIR and path to libowfat; remove lpthread,
# lz and O3 flag, owfat target, stripping; create dirs on install
sed -i \
-e "s|FEATURES|FEATURES_INTERNAL|g" \
-e "s|^FEATURES_INTERNAL|#FEATURES_INTERNAL|g" \
-e "s|PREFIX?=..|PREFIX?=/usr|g" \
-e "s|LIBOWFAT_HEADERS=libowfat|LIBOWFAT_HEADERS=\$(PREFIX)/include/libowfat|g" \
-e "s|-lpthread||g" \
-e "s|-O3||g" \
-e "s|-lz||g" \
-e "s|strip \$@||g" \
-e "s|BINDIR?=\$(PREFIX)/bin|BINDIR?=\$(DESTDIR)\$(PREFIX)/bin/|g" \
-e "s|all: owfat|all:|g" \
-e "s|install -m 755 ${PN} \$(BINDIR)|install -D -m 755 ${PN} \$(BINDIR)/${PN}|g" \
Makefile || die "sed for src_prepare failed"
# Define which features to use
for flag in "${!FLAGS[@]}" ; do
sed -i "$(usex "$flag" /"${FLAGS[$flag]}"/s/^#*// '')" Makefile || die "sed for $flag failed"
done
# Return back -lz flag for gzip
sed -i "$(usex gzip /LDFLAGS+/s/$/-lz/ '')" Makefile || die "sed for lz in LDFLAGS failed"
# Debug build: build opentracker.debug but target as opentracker, and don't build opentracker
if use debug ; then
sed -i \
-e "/D_DEBUG_HTTPERROR/s|^#*||g" \
-e "s|all: \$(BINARY)|all:|g" \
-e "s|\$@ \$(OBJECTS_debug)|opentracker \$(OBJECTS_debug)|g" \
Makefile || die "sed for debug object failed"
fi
# Correct config paths
sed -i \
-e "/access.whitelist/s|/path/to/whitelist|/var/lib/${PN}/access.whitelist|g" \
-e "/access.blacklist/s|./blacklist|/var/lib/${PN}/access.blacklist|g" \
-e "/tracker.rootdir/s|/usr/local/etc/opentracker|/var/lib/${PN}|g" \
-e "/tracker.user/s|nobody|${PN}|g" \
-e "/persist.file/s|/path/to/persist.odb|/var/lib/${PN}/${PN}.odb|g" \
opentracker.conf.sample || die "sed for config failed"
}
src_install() {
default
doman "${FILESDIR}"/opentracker.8
newinitd "${FILESDIR}"/opentracker.initd opentracker
newconfd "${FILESDIR}"/opentracker.confd opentracker
systemd_dounit "${FILESDIR}"/opentracker.service
insopts -m 640 -o opentracker -g opentracker
insinto /etc/opentracker
newins opentracker.conf.sample opentracker.conf
}