# Maintainer: Thomas Dreibholz <dreibh@simula.no>
pkgname=netperfmeter
pkgver=2.0.6
pkgrel=1
pkgdesc="Network performance meter for UDP, TCP, MPTCP, SCTP, DCCP and QUIC protocols"
url="https://www.nntb.no/~dreibh/netperfmeter/"
arch="all"
license="GPL-3.0-or-later"
depends=""
makedepends="
	bzip2-dev
	cmake
	ghostscript
	imagemagick
	lksctp-tools-dev
	mupdf-tools
	ninja
"
subpackages="
	$pkgname-bash-completion
	$pkgname-doc
	$pkgname-common:common:noarch
	$pkgname-examples:examples:noarch
	$pkgname-systemd:_systemd:noarch
	$pkgname-pdfproctools:pdfproctools:noarch
	$pkgname-plotting:plotting:noarch
	$pkgname-all:_all:noarch
"
source="https://www.nntb.no/~dreibh/netperfmeter/download/$pkgname-$pkgver.tar.xz"
builddir="$srcdir/$pkgname-$pkgver"

build() {
	cmake -B build -G Ninja      \
		-DCMAKE_INSTALL_PREFIX=/usr \
		-DCMAKE_BUILD_TYPE=None     \
		-DWITH_ICONS=ON             \
		-DWITH_PLOT_PROGRAMS=ON     \
		-DWITH_EXAMPLE_SCRIPTS=ON   \
		-DWITH_EXAMPLE_RESULTS=ON
	cmake --build build
}

package() {
	DESTDIR="$pkgdir" cmake --install build

	# Apply shebang fix for scripts matching Alpine's environment paths
	for directory in usr/bin usr/share/netperfmeter ; do
		if [ -d "$pkgdir/$directory" ]; then
			find "$pkgdir/$directory" -type f -exec sed -i \
				-e 's|^#!/usr/bin/env bash|#!/bin/bash|' \
				-e 's|^#!/usr/bin/env python3|#!/bin/python3|' \
				-e 's|^#!/usr/bin/env Rscript|#!/usr/bin/Rscript|' \
				{} +
		fi
	done
}

common() {
	pkgdesc="Network Performance Meter (common files)"

	mkdir -p "$subpkgdir"/usr/share
	mv "$pkgdir/usr/share/icons" "$subpkgdir/usr/share/"
	mv "$pkgdir/usr/share/mime" "$subpkgdir/usr/share/"

	mkdir -p "$subpkgdir/usr/share/netperfmeter"
	mv "$pkgdir/usr/share/netperfmeter/netperfmeter.bib" "$subpkgdir/usr/share/netperfmeter/"
	mv "$pkgdir/usr/share/netperfmeter/netperfmeter.pdf" "$subpkgdir/usr/share/netperfmeter/"
	mv "$pkgdir/usr/share/netperfmeter/netperfmeter.png" "$subpkgdir/usr/share/netperfmeter/"
}

examples() {
	pkgdesc="Network Performance Meter (example scripts and results files)"
	depends="r-core r-ggplot2 r-data.table r-dplyr"

	mkdir -p "$subpkgdir/usr/share/netperfmeter"
	mv "$pkgdir/usr/share/netperfmeter/plot-experiment" "$subpkgdir/usr/share/netperfmeter/"
	mv "$pkgdir/usr/share/netperfmeter/run-experiment1" "$subpkgdir/usr/share/netperfmeter/"
	mv "$pkgdir/usr/share/netperfmeter/results-examples" "$subpkgdir/usr/share/netperfmeter/"
}

_systemd() {
	pkgdesc="Network Performance Meter (systemd service configuration)"
	depends="$pkgname=$pkgver-r$pkgrel"

	# Moves the entire systemd directory, cleaning out both service files safely
	mkdir -p "$subpkgdir/usr/lib"
	mv "$pkgdir/usr/lib/systemd" "$subpkgdir/usr/lib/"

	mkdir -p "$subpkgdir/etc"
	mv "$pkgdir/etc/netperfmeter.conf" "$subpkgdir/etc/"
}

pdfproctools() {
	pkgdesc="PDF Processing Tools"
	depends="ghostscript perl qpdf"

	mkdir -p "$subpkgdir"/usr/bin
	mv "$pkgdir/usr/bin/pdfembedfonts" "$subpkgdir/usr/bin/"
	mv "$pkgdir/usr/bin/setpdfmetadata" "$subpkgdir/usr/bin/"
}

plotting() {
	pkgdesc="Network Performance Meter (plotting program)"
	depends="$pkgname=$pkgver-r$pkgrel $pkgname-pdfproctools=$pkgver-r$pkgrel r-core r-ggplot2"

	mkdir -p "$subpkgdir/usr/bin"
	mv "$pkgdir/usr/bin/plot-netperfmeter-results" "$subpkgdir/usr/bin/"

	mkdir -p "$subpkgdir/usr/share/netperfmeter"
	mv "$pkgdir/usr/share/netperfmeter/plot-netperfmeter-results.R" "$subpkgdir/usr/share/netperfmeter/"
	mv "$pkgdir/usr/share/netperfmeter/plotter.R" "$subpkgdir/usr/share/netperfmeter/"
}

_all() {
	pkgdesc="NetPerfMeter metapackage for all sub-packages"
	depends="
		$pkgname=$pkgver-r$pkgrel
		$pkgname-common=$pkgver-r$pkgrel
		$pkgname-examples=$pkgver-r$pkgrel
		$pkgname-plotting=$pkgver-r$pkgrel
		$pkgname-pdfproctools=$pkgver-r$pkgrel
		$pkgname-systemd=$pkgver-r$pkgrel
		$pkgname-bash-completion=$pkgver-r$pkgrel
		$pkgname-doc=$pkgver-r$pkgrel
	"
	mkdir -p "$subpkgdir"
}

sha512sums="
17c3791295af1461ca5752e85911d1b63eea1da2650ba5eaeaba29a6a720318a987885afa6525e8ac5d7d642614a490a886b405fe06d71030b11aed7cae07c07  netperfmeter-2.0.6.tar.xz
"

