# Copyright 2021 The Chromium OS Authors. All rights reserved.
# Distributed under the terms of the GNU General Public License v2

EAPI=7
CROS_WORKON_COMMIT="4ee72fddab81ee0f22df360c86fd7c3c13e833d8"
CROS_WORKON_TREE="7113c8558041fad75b61ed7f430dfc96090943b2"
CROS_WORKON_PROJECT="chromiumos/platform/hps-firmware-images"
CROS_WORKON_LOCALNAME="platform/hps-firmware-images"

inherit cros-workon

DESCRIPTION="Chrome OS HPS firmware"
HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/hps-firmware-images/+/HEAD"

# For more details about the license, please refer to b/194344208#comment10.
LICENSE="BSD-Google BSD-2 Apache-2.0 MIT 0BSD BSD ISC"
KEYWORDS="*"

# before signing firmware files were installed from this source ebuild
RDEPEND="
	!<chromeos-base/hps-firmware-0.1.0-r296
"

src_install() {
	# Generate a single combined LICENSE file from all applicable license texts,
	# so that the Chrome OS license scanner can find it.
	cat <<-EOF > LICENSE
	HPS firmware source code is available under the Apache License 2.0.
	HPS firmware binaries also incorporate source code from several
	other projects under other licenses:
	EOF
	cat licenses/third-party/* >> LICENSE

	# Extract stage1 version (currently this is just the first 4 bytes of the
	# stage1 signature).
	python3 -c "with open('firmware-signed/mcu_stage1.bin', 'rb') as f:
		f.seek(20);
		print(int.from_bytes(f.read(4), 'big'))" \
		>firmware-signed/mcu_stage1.version.txt || die

	# Compress firmware images to save space. hpsd will decompress these on the fly.
	# hpsd limits decompression memory to 20MiB. xz(1) explains:
	# "The settings used when compressing a file determine the memory
	# requirements of the decompressor.  Typically the decompressor needs
	# 5 % to 20 % of the amount of memory that the compressor needed when
	# creating the file." Thus we apply a limit of 80MiB when compressing.
	xz -9 --memlimit-compress=80MiB \
		firmware-signed/fpga_application.bin \
		firmware-signed/fpga_bitstream.bin \
		firmware-signed/mcu_stage1.bin

	insinto "/usr/lib/firmware/hps"
	doins "${S}/firmware-signed/fpga_application.bin.xz"
	doins "${S}/firmware-signed/fpga_bitstream.bin.xz"
	doins "${S}/firmware-signed/mcu_stage1.bin.xz"
	doins "${S}/firmware-signed/mcu_stage1.version.txt"
	doins "${S}/firmware-signed/manifest.txt"
}
