# Copyright 2020 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=7 inherit autotools pam systemd DESCRIPTION="The FRRouting Protocol Suite" HOMEPAGE="https://frrouting.org/" LICENSE="GPL-2" SLOT="0" if [[ ${PV} != 9999 ]]; then SRC_URI="https://github.com/FRRouting/frr/releases/download/${PV}/${P}.tar.gz" KEYWORDS="amd64 ~x86 ~arm64" else inherit git-r3 SRC_URI="" EGIT_REPO_URI="https://github.com/FRRouting/frr.git" KEYWORDS="" fi IUSE=" babel +bfd +bgp doc eigrp +fabric fpm grpc +ipv6 +isis +ldp nhrp +ospf ospfapi pam pbr +pim realms rip +rpki +rtadv sanitize snmp systemd vrrp" REQUIRED_USE=" rpki? ( bgp ) " COMMON_DEPEND=" >=net-libs/libyang-2.0.0 dev-lang/python:* dev-libs/json-c nhrp? ( net-dns/c-ares ) pam? ( sys-libs/pam ) rpki? ( >=net-libs/rtrlib-0.8.0[ssh] ) snmp? ( net-analyzer/net-snmp ) sys-libs/libcap sys-libs/readline grpc? ( net-libs/grpc ) " BDEPEND=" ${COMMON_DEPEND} doc? ( dev-python/sphinx ) sys-devel/flex virtual/yacc " DEPEND=" ${COMMON_DEPEND} " RDEPEND=" !!net-misc/quagga ${DEPEND} acct-user/frr app-shells/bash dev-python/ipaddr " # FRR tarballs have weird format. S="${WORKDIR}/frr-${P}" src_prepare() { default_src_prepare eautoreconf } src_configure() { econf \ --with-pkg-extra-version="-${PR}-gentoo" \ --enable-configfile-mask=0640 \ --enable-logfile-mask=0640 \ --prefix=/usr \ --sysconfdir=/etc/frr \ --libdir=/usr/lib/frr \ --sbindir=/usr/lib/frr \ --libexecdir=/usr/lib/frr \ --localstatedir=/var/run/frr \ --with-moduledir=/usr/lib/frr/modules \ --enable-exampledir=/usr/share/doc/${PF}/samples \ --enable-user=frr \ --enable-group=frr \ --enable-vty-group=frrvty \ --enable-multipath=64 \ $(use_enable babel babeld) \ $(use_enable bfd bfdd) \ $(use_enable bgp bgpd) \ $(usex bgp $(use_enable rpki)) \ $(use_enable doc) \ $(use_enable eigrp eigrpd) \ $(use_enable fabric fabricd) \ $(use_enable fpm) \ $(use_enable grpc) \ $(use_enable isis isisd) \ $(use_enable ldp ldpd) \ $(use_enable nhrp nhrpd) \ $(use_enable ospf ospfd) \ $(use_enable ospfapi) \ $(use_enable pbr pbrd) \ $(use_enable pim pimd) \ $(use_enable realms) \ $(use_enable rip ripd) \ $(usex ipv6 $(use_enable rip ripngd)) \ $(usex ipv6 $(use_enable ospf ospf6d)) \ $(use_enable rtadv) \ $(use_enable sanitize address-sanitizer) \ $(use_enable snmp) \ $(use_enable systemd) \ $(use_enable vrrp vrrpd) } src_compile() { default_src_compile use doc && (cd doc; make html) } src_install() { default_src_install # Install user documentation if asked. if use doc ; then dodoc -r doc/user/_build/html fi # Create configuration directory with correct permissions. keepdir /etc/frr fowners frr:frrvty /etc/frr fperms 775 /etc/frr # Create logs directory with the correct permissions. keepdir /var/log/frr fowners frr:frr /var/log/frr fperms 775 /var/log/frr # Install the default configuration files. insinto /etc/frr doins tools/etc/frr/vtysh.conf doins tools/etc/frr/frr.conf doins tools/etc/frr/daemons # Fix permissions/owners. fowners frr:frrvty /etc/frr/vtysh.conf fowners frr:frr /etc/frr/frr.conf fowners frr:frr /etc/frr/daemons fperms 640 /etc/frr/vtysh.conf fperms 640 /etc/frr/frr.conf fperms 640 /etc/frr/daemons # Install logrotate configuration. insinto /etc/logrotate.d newins redhat/frr.logrotate frr # Install PAM configuration file. use pam && newpamd "${FILESDIR}/frr.pam" frr # Install init scripts. if use systemd ; then systemd_dounit tools/frr.service else newinitd "${FILESDIR}/frr-openrc-v1" frr fi }