aboutsummaryrefslogtreecommitdiffstats
path: root/main/zfs-rpi/APKBUILD
blob: 4f127d7b668b0dfe117df789e7f280f7f7d70f19 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# Contributor: Carlo Landmeter <clandmeter@alpinelinux.org>
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>

# when changing _ver we *must* bump _rel
_name=zfs
_ver=2.2.4
_rel=4
# when changing _kver/_krel make sure _rel=0
_flavor=${FLAVOR:-rpi}
_kpkg=linux-$_flavor
_kver=6.6.29
_krel=0

_kpkgver="$_kver-r$_krel"

# for custom kernels set $FLAVOR
case $CARCH in
	armhf|armv7) _extra_flavors="";;
	aarch64) _extra_flavors="";;
esac

_kpkg=linux-$_flavor
_kabi="$_kver-$_krel-$_flavor"

pkgname=$_name-$_flavor
pkgver=$_kver
pkgrel=$(( _krel + _rel ))

pkgdesc="ZFS Linux kernel modules"
url="https://openzfs.org"
# armhf: NEON SIMD not available in BCM2835 (rpi1 & rpiZ)
arch="aarch64 armv7"
license="CDDL-1.0"
depends="$_kpkg=$_kpkgver"
depends_dev="glib-dev e2fsprogs-dev util-linux-dev libtirpc-dev
	$_kpkg-dev=$_kpkgver"

makedepends="$depends_dev linux-headers xz"
install_if="zfs $_kpkg=$_kpkgver"
subpackages="$pkgname-dev"
source="https://github.com/openzfs/zfs/releases/download/zfs-$_ver/zfs-$_ver.tar.gz
	aarch64-disable-neon.patch
	"
builddir="$srcdir/$_name-$_ver"
options="!check"

# secfixes:
#   2.2.1-r1:
#     - CVE-2023-49298

for f in $_extra_flavors; do
	makedepends="$makedepends linux-$f-dev=$_kpkgver"
	subpackages="$subpackages zfs-$f:_extra"
done

prepare() {
	default_prepare
	# verify the kernel version
	local _kapkbuild="$startdir"/../../main/linux-$_flavor-/APKBUILD
	if [ -f $_kapkbuild ]; then
		(	. $_kapkbuild
			pkgname=$_name-$_flavor
			[ "$_kver" != "$pkgver" ] && die "please update _kver to $pkgver"
			[ "$_krel" != "$pkgrel" ] && die "please update _krel to $pkgrel"
			return 0
		)
	fi
}

build() {
	local flavor= kabi=
	for flavor in $_flavor $_extra_flavors; do
		kabi="$_kver-$_krel-$flavor"
		mkdir -p "$kabi"
		(cd $kabi
		../configure --prefix=/usr \
			--with-tirpc \
			--sysconfdir=/etc \
			--mandir=/usr/share/man \
			--infodir=/usr/share/info \
			--localstatedir=/var \
			--with-config=kernel \
			--with-linux=/usr/src/linux-headers-$kabi

		make
		)
	done
}

package() {
	local flavor= kabi=
	for flavor in $_flavor $_extra_flavors; do
		kabi="$_kver-$_krel-$flavor"
		(cd $kabi && make DESTDIR="$pkgdir" install)
	done
}

_extra() {
	local flavor=${subpkgname##*-}
	depends="linux-$flavor=$_kpkgver"
	install_if="zfs linux-$flavor=$_kpkgver"
	pkgdesc="ZFS Linux kernel modules for $flavor"

	kabi="$_kver-$_krel-$flavor"
	mkdir -p "$subpkgdir"/lib/modules
	mv "$pkgdir"/lib/modules/$kabi "$subpkgdir"/lib/modules
}

dev() {
	mkdir -p "$subpkgdir"/usr
	mv "$pkgdir"/usr/src "$subpkgdir"/usr
	default_dev
}

sha512sums="
1d17e30573d594fb5c9ea77cde104616dca362fed7530296816d1b55173594f66170fcfb23ab57c27074f85b79d3eb557b4ee9a1c420e507b2434a7902d8dcc1  zfs-2.2.4.tar.gz
18966558e213b7516d3359884ced72618956db401cac32306662fa6304d3e31a28b030adcc8678704a30e6bbdee28120b2c6125e8285afacbb11a1645b39695a  aarch64-disable-neon.patch
"