# Contributor: Carlo Landmeter <clandmeter@alpinelinux.org>
# Contributor: Łukasz Jendrysik <scadu@yandex.com>
# Maintainer: Celeste <cielesti@protonmail.com>
maintainer="Celeste <cielesti@protonmail.com>"
pkgname=sqlite
# NOTE: pkgver needs to correspond with sqlite-tools
pkgver=3.48.0
pkgrel=4
pkgdesc="C library that implements an SQL database engine"
url="https://www.sqlite.org/"
arch="all"
license="blessing"
depends_dev="$pkgname=$pkgver-r$pkgrel"
makedepends="readline-dev"
subpackages="$pkgname-static $pkgname-doc $pkgname-dev $pkgname-libs"

# compute _ver
_a=${pkgver%%.*}
_b=${pkgver#"$_a".}
_b=${_b%%.*}
_c=${pkgver#"$_a"."$_b".}
_c=${_c%%.*}
case $pkgver in
	*.*.*.*)_d=${pkgver##*.};;
	*.*.*)	_d=0;;
esac
[ $_b -lt 10 ] && _b=0$_b
[ $_c -lt 10 ] && _c=0$_c
[ $_d -lt 10 ] && _d=0$_d
_ver=${_a}${_b}${_c}$_d

# these variables depend on _ver being set
builddir="$srcdir/$pkgname-autoconf-$_ver"
source="https://www.sqlite.org/2025/sqlite-autoconf-$_ver.tar.gz
	$pkgname-$_ver-LICENSE.md::https://www.sqlite.org/src/raw?name=LICENSE.md&ci=version-$pkgver
	CVE-2025-29088.patch
	CVE-2025-29087.patch
	CVE-2025-6965.patch
	pkgconf-libs-private.patch
	"

# secfixes:
#   3.48.0-r4:
#     - CVE-2025-29088
#   3.48.0-r3:
#     - CVE-2025-6965
#   3.48.0-r1:
#     - CVE-2025-3277
#     - CVE-2025-29087
#   3.34.1-r0:
#     - CVE-2021-20227
#   3.32.1-r0:
#     - CVE-2020-13434
#     - CVE-2020-13435
#   3.30.1-r3:
#     - CVE-2020-11655
#   3.30.1-r1:
#     - CVE-2019-19242
#     - CVE-2019-19244
#   3.28.0-r0:
#     - CVE-2019-5018
#     - CVE-2019-8457
#   0:
#     - CVE-2022-35737

# additional CFLAGS to set
_amalgamation="-DSQLITE_ENABLE_FTS3_PARENTHESIS \
	-DSQLITE_ENABLE_COLUMN_METADATA \
	-DSQLITE_SECURE_DELETE \
	-DSQLITE_ENABLE_UNLOCK_NOTIFY \
	-DSQLITE_ENABLE_RTREE \
	-DSQLITE_ENABLE_GEOPOLY \
	-DSQLITE_USE_URI \
	-DSQLITE_ENABLE_DBSTAT_VTAB \
	-DSQLITE_MAX_VARIABLE_NUMBER=250000"

prepare() {
	if [ -f "$startdir"/../sqlite-tools/APKBUILD ]; then
		(
		_sqlitever=$pkgver
		# shellcheck disable=SC1093
		. "$startdir"/../sqlite-tools/APKBUILD
		if [ "$_sqlitever" != "$pkgver" ]; then
			warning "sqlite-tools version mismatch ($_sqlitever != $pkgver)"
		fi
		)
	fi

	default_prepare
}

build() {
	export CFLAGS="$CFLAGS $_amalgamation -O2"
	./configure \
		--build="$CBUILD" \
		--host="$CHOST" \
		--prefix=/usr \
		--enable-threadsafe \
		--enable-readline \
		--enable-session \
		--enable-static \
		--enable-dynamic-extensions \
		--enable-fts3 \
		--enable-fts4 \
		--enable-fts5

	# rpath removal
	sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
	sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool

	make
}

check() {
	make check
}

package() {
	make DESTDIR="$pkgdir" install

	install -Dm0644 sqlite3.1 \
		"$pkgdir"/usr/share/man/man1/sqlite3.1
	install -Dm644 "$srcdir"/$pkgname-$_ver-LICENSE.md \
		"$pkgdir"/usr/share/licenses/$pkgname/LICENSE.md
}

sha512sums="
c607cbc58cdef6910a87ddb6ae8aeabdab2769d6cc33aad04f31fc428ecc5a8eaf19f5d3a3590591aae2c920b106a684891d38efef712f91631602245f6f4d3d  sqlite-autoconf-3480000.tar.gz
38844727b09d11ded660c069d19a5289100405b0b243e75338060d237e3190fd99f0270611d214862beeb54a67993c2a337f917fdc452084f812d1371ce9869b  sqlite-3480000-LICENSE.md
d4c9b24ecfc9a45ef6e47a80d04bdc378d88f7618ae575afd6e749c8410e30fbb1a799843c9e85d8b4022513e4d49abf1073ba7ff3a870cf44df57b98b7e542e  CVE-2025-29088.patch
bcaba44c539658de959784be130ec4e6f471fab9c7465242b96474243499f07350d22084f2b8903607d523bc6804774985f09dc36af94a736355692e63ee85de  CVE-2025-29087.patch
f576fb56cae0376efbf9e86fdd1869ae3a4f4320ca2f1d51a9ba45d64c0a5c0dd93b26fd6589ede172051f39d021e59a0c9aed26d8c002bded590817a56b4d90  CVE-2025-6965.patch
5aeddca9284b662e87ff7e16bd7838004b3e960d83c4d616657765207177898f259efbd305342388918df1c5dc1df6321b244402cb57ad2024f63a489c03da11  pkgconf-libs-private.patch
"
