| # 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 |
| } |