blob: 3f6da374895f2db99072a45ce07417a6e68dbf1d [file] [log] [blame]
# Copyright 2016 The Chromium OS Authors. All rights reserved.
# Distributed under the terms of the GNU General Public License v2
EAPI=7
CROS_WORKON_COMMIT="891275e43ab2ed3070c377dd889259604911e046"
CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "dce82635efeafb4457e130913bcabc6fcf00bdf7" "8d85bf6a0f007851c46d0aca5117edd10ecb0760" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
CROS_WORKON_INCREMENTAL_BUILD=1
CROS_WORKON_LOCALNAME="platform2"
CROS_WORKON_PROJECT="chromiumos/platform2"
CROS_WORKON_OUTOFTREE_BUILD=1
CROS_WORKON_SUBTREE="common-mk patchpanel shill/net .gn"
PLATFORM_SUBDIR="patchpanel"
inherit cros-workon libchrome platform user
DESCRIPTION="Patchpanel network connectivity management daemon"
HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/patchpanel/"
LICENSE="BSD-Google"
KEYWORDS="*"
# These USE flags are used in patchpanel/BUILD.gn
IUSE="fuzzer arcvm jetstream_routing"
COMMON_DEPEND="
dev-libs/protobuf:=
!chromeos-base/arc-networkd
chromeos-base/shill-net:=
chromeos-base/system_api:=[fuzzer?]
"
RDEPEND="
${COMMON_DEPEND}
chromeos-base/shill
net-firewall/iptables
net-misc/bridge-utils
sys-apps/iproute2
"
DEPEND="
${COMMON_DEPEND}
chromeos-base/session_manager-client:=
chromeos-base/shill-client:=
chromeos-base/system_api:=[fuzzer?]
"
patchpanel_header() {
doins "$1"
sed -i '/.pb.h/! s:patchpanel/:chromeos/patchpanel/:g' \
"${D}/usr/include/chromeos/patchpanel/$1" || die
}
src_install() {
# Main binary.
dobin "${OUT}"/patchpaneld
# Libraries.
dolib.so "${OUT}"/lib/libpatchpanel-util.so
"${S}"/preinstall.sh "${PV}" "/usr/include/chromeos" "${OUT}"
insinto "/usr/$(get_libdir)/pkgconfig"
doins "${OUT}"/libpatchpanel-util.pc
insinto /usr/include/chromeos/patchpanel/
patchpanel_header address_manager.h
patchpanel_header mac_address_generator.h
patchpanel_header net_util.h
patchpanel_header socket.h
patchpanel_header socket_forwarder.h
patchpanel_header subnet.h
patchpanel_header subnet_pool.h
insinto /etc/init
doins "${S}"/init/patchpanel.conf
insinto /etc/dbus-1/system.d
doins dbus/*.conf
local fuzzer
for fuzzer in "${OUT}"/*_fuzzer; do
platform_fuzzer_install "${S}"/OWNERS "${fuzzer}"
done
}
pkg_preinst() {
# Service account used for privilege separation.
enewuser patchpaneld
enewgroup patchpaneld
}
platform_pkg_test() {
platform_test "run" "${OUT}/patchpanel_testrunner"
}