blob: a71b1261d6279cdb3f95f67118333f5b10924f3f [file] [log] [blame]
# Copyright 2014 The ChromiumOS Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
CROS_WORKON_COMMIT="8b6e11a069e490c761cdab7ab3ff59434806cd9c"
CROS_WORKON_TREE=("41d899585b7a07ea908a0cca2944a7b8a4d13655" "e83be5edf8be7a36d9035ec4c15671caa7d5ff56" "9dbbe059a64bdb3260dc088895573df5ea421399" "0d9d2046eb78dc8620f7594f245298f9fd964832" "faa5b8036561b66b5b9d79ea1af8a95927a0ae0f" "f91b6afd5f2ae04ee9a2c19109a3a4a36f7659e6")
CROS_WORKON_INCREMENTAL_BUILD=1
CROS_WORKON_USE_VCSID=1
CROS_WORKON_LOCALNAME="platform2"
CROS_WORKON_PROJECT="chromiumos/platform2"
CROS_WORKON_OUTOFTREE_BUILD=1
# TODO(crbug.com/809389): Avoid directly including headers from other packages.
CROS_WORKON_SUBTREE="common-mk chaps libhwsec libhwsec-foundation metrics .gn"
PLATFORM_SUBDIR="chaps"
inherit cros-workon platform systemd tmpfiles user
DESCRIPTION="PKCS #11 layer over TrouSerS"
HOMEPAGE="http://www.chromium.org/developers/design-documents/chaps-technical-design"
SRC_URI=""
LICENSE="BSD-Google"
KEYWORDS="*"
IUSE="profiling systemd test tpm_insecure_fallback fuzzer"
RDEPEND="
chromeos-base/chaps-client:=
chromeos-base/libhwsec:=[test?]
chromeos-base/libhwsec-foundation:=
chromeos-base/minijail:=
chromeos-base/system_api:=[fuzzer?]
>=chromeos-base/metrics-0.0.1-r3152:=
chromeos-base/tpm_manager:=
!dev-db/leveldb
dev-libs/leveldb:=
dev-libs/openssl:=
dev-libs/protobuf:=
"
# Note: We need dev-libs/nss and dev-libs/nspr for the pkcs11 headers.
DEPEND="${RDEPEND}
test? (
app-arch/gzip
app-arch/tar
)
chromeos-base/system_api:=[fuzzer?]
fuzzer? ( dev-libs/libprotobuf-mutator )
dev-libs/nss:=
dev-libs/nspr:=
"
BDEPEND="
dev-libs/protobuf
"
pkg_setup() {
enewgroup "chronos-access"
enewuser "chaps"
cros-workon_pkg_setup
}
src_compile() {
platform_src_compile
# After compile, check the output for link dependency on nss.
# We should NOT have any link dependency on nss because nss imports chaps.
local out=$(scanelf -qRyn "${OUT}" | grep nss)
[[ -n "${out}" ]] && die "No link dependency on nss allowed:\n${out}"
# No dependency on nspr as well, same as above.
out=$(scanelf -qRyn "${OUT}" | grep nspr)
[[ -n "${out}" ]] && die "No link dependency on nspr allowed:\n${out}"
}
src_install() {
platform_src_install
# Install init scripts for systemd the ones for upstart are installd via
# BUILD.gn.
if use systemd; then
systemd_dounit init/chapsd.service
systemd_enable_service boot-services.target chapsd.service
fi
dotmpfiles init/chapsd_directories.conf
# Chaps keeps database inside the user's cryptohome.
local daemon_store="/etc/daemon-store/chaps"
dodir "${daemon_store}"
fperms 0750 "${daemon_store}"
fowners chaps:chronos-access "${daemon_store}"
local fuzzer_component_id="1281105"
local fuzzers=(
chaps_attributes_fuzzer
chaps_object_store_fuzzer
chaps_utility_fuzzer
chaps_slot_manager_fuzzer
chaps_chaps_service_fuzzer
)
for fuzzer in "${fuzzers[@]}"; do
platform_fuzzer_install "${S}"/OWNERS "${OUT}"/"${fuzzer}" \
--comp "${fuzzer_component_id}"
done
}
platform_pkg_test() {
platform test_all
}
pkg_preinst() {
local ug
for ug in pkcs11 chaps; do
enewuser "${ug}"
enewgroup "${ug}"
done
}