# Contributor: macmpi <spam@ipik.org>
# Maintainer: macmpi <spam@ipik.org>
pkgname=raspberrypi-utils
pkgver=0.20250611
pkgrel=0
_commit="b7651d86d71a172b2208c67b2e360cbcb4f9d98f"
pkgdesc="Collection of Raspberry Pi utilities (scripts and simple applications)"
url="https://github.com/raspberrypi/utils"
arch="armhf armv7 aarch64"
license="BSD-3-Clause"
makedepends="cmake samurai dtc-dev"
source="$pkgname-$_commit.tar.gz::https://github.com/raspberrypi/utils/archive/$_commit.tar.gz
	do-not-build-piolib.patch.txt
	"
builddir="$srcdir/utils-$_commit"
# does not have any tests
options="!check"
subpackages="
	$pkgname-dtmerge
	$pkgname-dtmerge-dev:dtmerge_dev
	$pkgname-dtmerge-doc:dtmerge_doc:noarch
	$pkgname-eeptools
	$pkgname-kdtc::noarch
	$pkgname-otpset::noarch
	$pkgname-overlaycheck::noarch
	$pkgname-ovmerge::noarch
	$pkgname-pinctrl
	$pkgname-pinctrl-bash-completion:pinctrl_bashcomp:noarch
	$pkgname-pinctrl-dev:pinctrl_dev
	$pkgname-raspinfo::noarch
	$pkgname-vcgencmd
	$pkgname-vcgencmd-bash-completion:vcgencmd_bashcomp:noarch
	$pkgname-vcgencmd-doc:vcgencmd_doc:noarch
	$pkgname-vclog
	$pkgname-vcmailbox
	$pkgname-vcmailbox-doc:vcmailbox_doc:noarch
	"
# piolib is specific to Pi 5 (aarch64)
	[ "$CARCH" = "aarch64" ] && subpackages="$subpackages $pkgname-piolib $pkgname-piolib-dev:piolib_dev"

prepare() {
	default_prepare
	# piolib is specific to Pi 5 (aarch64)
	[ "$CARCH" = "aarch64" ] || patch -p1 < "$srcdir/do-not-build-piolib.patch.txt"
}

build() {
	cmake -B build -G Ninja \
		-DCMAKE_INSTALL_PREFIX=/usr \
		-DCMAKE_INSTALL_DATADIR=/usr/share \
		-DBUILD_SHARED_LIBS=1 \
		-DCMAKE_BUILD_TYPE=MinSizeRel
	cmake --build build
}

package() {
	depends="
		$pkgname-dtmerge=$pkgver-r$pkgrel
		$pkgname-eeptools=$pkgver-r$pkgrel
		$pkgname-kdtc=$pkgver-r$pkgrel
		$pkgname-otpset=$pkgver-r$pkgrel
		$pkgname-overlaycheck=$pkgver-r$pkgrel
		$pkgname-ovmerge=$pkgver-r$pkgrel
		$pkgname-pinctrl=$pkgver-r$pkgrel
		$pkgname-raspinfo=$pkgver-r$pkgrel
		$pkgname-vcgencmd=$pkgver-r$pkgrel
		$pkgname-vclog=$pkgver-r$pkgrel
		$pkgname-vcmailbox=$pkgver-r$pkgrel
		"
	# piolib is specific to Pi 5 (aarch64)
	[ "$CARCH" = "aarch64" ] && depends="$depends $pkgname-piolib=$pkgver-r$pkgrel"

	DESTDIR="$pkgdir" cmake --install build
}

dtmerge() {
	pkgdesc="A tool for applying compiled DT overlays (*.dtbo) to base Device Tree files (*.dtb)."
	depends=""

	amove usr/bin/dt*
	amove usr/lib/libdtovl.so.0
}

dtmerge_dev() {
	pkgdesc="A tool for applying compiled DT overlays (*.dtbo) to base Device Tree files (*.dtb).(development files)"
	depends=""

	amove usr/lib/libdtovl.so
	amove usr/include/dtoverlay.h
}

dtmerge_doc() {
	pkgdesc="Documentation for $pkgname-dtmerge"
	depends="$pkgname-dtmerge=$pkgver-r$pkgrel"
	install_if="$pkgname-dtmerge=$pkgver-r$pkgrel docs"

	gzip -n -9 "$pkgdir"/usr/share/man/man1/dt*.1
	amove usr/share/man/man1/dt*.1.gz
}

eeptools() {
	pkgdesc="Tools for creating and managing EEPROMs for HAT+ and HAT board."
	depends=""

	amove usr/bin/eep*
}

kdtc() {
	pkgdesc="A tool for compiling overlays with #includes, etc., as used in the kernel tree."
	depends="
		dtc
		perl
		"

	amove usr/bin/kdtc
}

otpset() {
	pkgdesc="A short script to help with reading and setting the customer OTP bits."
	depends="
		python3
		$pkgname-vcmailbox=$pkgver-r$pkgrel
		"

	amove usr/bin/otpset
}

overlaycheck() {
	pkgdesc="A tool for validating the overlay files and README in a kernel source tree."
	depends="
		$pkgname-dtmerge=$pkgver-r$pkgrel
		$pkgname-ovmerge=$pkgver-r$pkgrel
		dtc
		perl
		"

	amove usr/bin/overlaycheck
	amove usr/bin/overlaycheck_exclusions.txt
}

ovmerge() {
	pkgdesc="A tool for merging DT overlay source files (*-overlay.dts), flattening and sorting .dts files for easy comparison, displaying the include tree, etc."
	depends="perl"

	amove usr/bin/ovmerge
}

pinctrl() {
	pkgdesc="A tool for displaying and modifying the GPIO and pin muxing state of a system, bypassing the kernel."
	depends=""

	amove usr/bin/pinctrl
	amove usr/lib/libgpiolib.so.0
}

pinctrl_bashcomp() {
	depends="$pkgname-pinctrl=$pkgver-r$pkgrel"
	pkgdesc="Bash completions for $pkgname-pinctrl"
	install_if="$pkgname-pinctrl=$pkgver-r$pkgrel bash-completion"

	amove usr/share/bash-completion/completions/pinctrl
}

pinctrl_dev() {
	pkgdesc="gpiolib library for Raspberry Pi devices (development files)"
	depends=""

	amove usr/lib/libgpiolib.so
	amove usr/include/gpiolib.h
}

piolib() {
	pkgdesc="Sample utilities leveraging Pi 5's PIO hardware."
	depends=""

	amove usr/bin/apitest \
		usr/bin/dpi_csync \
		usr/bin/pio* \
		usr/lib/libpio.so.0 \
		usr/bin/quadenc \
		usr/bin/rp1sm
}

piolib_dev() {
	pkgdesc="piolib library for accessing Pi 5's PIO hardware (development files)"
	depends=""

	amove usr/lib/libpio.so
	amove usr/include/piolib
}

raspinfo() {
	pkgdesc="A short script to dump information about the Pi. Intended for the submission of bug reports."
	depends="
		$pkgname-vclog=$pkgver-r$pkgrel
		$pkgname-pinctrl=$pkgver-r$pkgrel
		$pkgname-vcgencmd=$pkgver-r$pkgrel
		bash
		sudo-virt
		usbutils
		"
	# missing https://github.com/raspberrypi/rpi-eeprom

	amove usr/bin/raspinfo
}

vcgencmd() {
	pkgdesc="A tool used to output information from the VideoCore GPU on the Raspberry Pi"
	depends=""

	amove usr/bin/vcgencmd
}

vcgencmd_bashcomp() {
	depends="$pkgname-vcgencmd=$pkgver-r$pkgrel"
	pkgdesc="Bash completions for $pkgname-vcgencmd"
	install_if="$pkgname-vcgencmd=$pkgver-r$pkgrel bash-completion"

	amove usr/share/bash-completion/completions/vcgencmd
}

vcgencmd_doc() {
	pkgdesc="Documentation for $pkgname-vcgencmd"
	depends="$pkgname-vcgencmd=$pkgver-r$pkgrel"
	install_if="$pkgname-vcgencmd=$pkgver-r$pkgrel docs"

	gzip -n -9 "$pkgdir"/usr/share/man/man1/vcgencmd.1
	amove usr/share/man/man1/vcgencmd.1.gz
}

vclog() {
	pkgdesc="A tool to get VideoCore 'assert' or 'msg' logs with optional -f to wait for new logs to arrive."
	depends=""

	amove usr/bin/vclog
}

vcmailbox() {
	pkgdesc="Utility for driving mailbox interface to VideoCore GPU on the Raspberry Pi"
	depends=""

	amove usr/bin/vcmailbox
}

vcmailbox_doc() {
	pkgdesc="Documentation for $pkgname-vcmailbox"
	depends="$pkgname-vcmailbox=$pkgver-r$pkgrel"
	install_if="$pkgname-vcmailbox=$pkgver-r$pkgrel docs"

	gzip -n -9 "$pkgdir"/usr/share/man/man1/vcmailbox.1
	amove usr/share/man/man1/vcmailbox.1.gz

	gzip -n -9 "$pkgdir"/usr/share/man/man7/vcmailbox.7
	amove usr/share/man/man7/vcmailbox.7.gz

	gzip -n -9 "$pkgdir"/usr/share/man/man7/raspi*.7
	amove usr/share/man/man7/raspi*.7.gz
}

sha512sums="
434853fcd4bbe7220f99e1a70512282bb3f8fbdcc3fda3036699076697d7311aee0bb3ad215bc9a738aa38425b586b8d1dcb8ec464768a7dff5199d14e5bb73d  raspberrypi-utils-b7651d86d71a172b2208c67b2e360cbcb4f9d98f.tar.gz
40e37b5348538392a837be574207ccc43f2780eea06456b488d426e66071ea8b2249b0d3e8f4de2d3fa572d5768b65923d5a73c35670ccc102801eaab468d211  do-not-build-piolib.patch.txt
"
