aports/community/neo4j/APKBUILD
2025-03-29 13:52:20 +00:00

159 lines
4.8 KiB
Text

# Contributor: Jakub Jirutka <jakub@jirutka.cz>
# Maintainer: Jakub Jirutka <jakub@jirutka.cz>
pkgname=neo4j
pkgver=4.4.41
pkgrel=0
pkgdesc="Neo4j Community Edition LTS"
url="https://neo4j.com"
# other platforms are not supported by upstream
arch="aarch64 x86_64"
license="GPL-3.0-or-later"
# Neo4j 4.x requires JVM 11.
depends="
java-jna
java-netty-transport-native
java-zstd-jni
openjdk11-jre-headless
"
_depends_shell="
java-jna
java-netty-transport-native
java-jre-headless
"
makedepends="
$_depends_shell
openjdk11
maven
unzip
zip
"
checkdepends="bash"
install="$pkgname.pre-install"
pkgusers="neo4j"
pkggroups="neo4j"
subpackages="
$pkgname-doc
$pkgname-openrc
cypher-shell:_shell:noarch
"
source="https://github.com/neo4j/neo4j/archive/refs/tags/$pkgver/neo4j-$pkgver.tar.gz
system-jars.patch
conf.patch
wrapper.sh
$pkgname.initd
$pkgname.confd
cypher-shell
"
# net: fetches packages from Maven repos
# check: needs ulimit -n 40000
options="net !check"
# Ensure Neo4j is built with JDK11 if multiple JDKs are installed
# to prevent this error: https://github.com/neo4j/neo4j/issues/12933
export JAVA_HOME="/usr/lib/jvm/java-11-openjdk"
export PATH="$JAVA_HOME/bin:$PATH"
# NOTE: Maven 3 dropped support for the M2_HOME variable.
export MAVEN_ARGS="--batch-mode -Duser.home=$srcdir/.home -Dcheckstyle.skip=true -Dlicensing.skip=true"
export MAVEN_OPTS="-Xmx2048m"
prepare() {
default_prepare
# See system-jars.patch.
local jna_ver zstdjni_ver
jna_ver=$(_jar_version /usr/share/java/jna.jar)
zstdjni_ver=$(_jar_version /usr/share/java/zstd-jni.jar)
sed -i -e 's/\${alpine.jna.version}/'"$jna_ver/" \
-e 's/\${alpine.zstd-jni.version}/'"$zstdjni_ver/" \
pom.xml
# Fix version number (upstream doesn't bump it before tagging).
mvn versions:set -DnewVersion="$pkgver" -DgenerateBackupPoms=false
}
build() {
mvn install -DskipTests
mkdir -p dist
tar -C dist -xf packaging/standalone/target/neo4j-community-*-unix.tar.gz
cd dist/neo4j-community-*
# Remove jansi native binaries (they are actually not needed).
zip -qd bin/tools/cypher-shell.jar 'org/fusesource/jansi/internal/native/*'
}
check() {
mvn test
}
package() {
cd dist/neo4j-community-*
install -D -m644 lib/*.jar -t "$pkgdir"/usr/share/neo4j/lib/
install -D -m755 bin/neo4j bin/neo4j-admin -t "$pkgdir"/usr/share/neo4j/bin/
install -D -m644 LICENSE* NOTICE.txt -t "$pkgdir"/usr/share/licenses/$pkgname/
install -D -m644 labs/README.txt -t "$pkgdir"/var/lib/neo4j/labs/
install -D -m644 plugins/README.txt -t "$pkgdir"/var/lib/neo4j/plugins/
install -D -m644 conf/neo4j.conf -t "$pkgdir"/etc/neo4j/
install -d -m750 -g neo4j "$pkgdir"/etc/neo4j/certs
install -D -m755 "$srcdir"/wrapper.sh "$pkgdir"/usr/bin/neo4j
ln -s neo4j "$pkgdir"/usr/bin/neo4j-admin
install -D -m755 "$srcdir"/neo4j.initd "$pkgdir"/etc/init.d/neo4j
install -D -m644 "$srcdir"/neo4j.confd "$pkgdir"/etc/conf.d/neo4j
# cypher-shell
install -D -m644 bin/tools/cypher-shell.jar -t "$pkgdir"/usr/share/cypher-shell/
install -D -m755 "$srcdir"/cypher-shell -t "$pkgdir"/usr/bin/
cd "$pkgdir"
install -d -o neo4j -g neo4j -m750 \
var/lib/neo4j/data \
var/lib/neo4j/data/databases \
var/lib/neo4j/data/dbms \
var/lib/neo4j/data/dumps \
var/lib/neo4j/data/transactions \
var/lib/neo4j/import \
var/log/neo4j
cd "$pkgdir"/usr/share/neo4j/lib
# See system-jars.patch.
ln -s /usr/share/java/zstd-jni.jar .
ln -s /usr/share/java/jna.jar .
msg "Checking JARs for native libraries..."
local f; for f in *.jar; do
if jar tf "$f" | grep -q '\.so$'; then
error "Found native library in $f"
return 1
fi
done
}
_shell() {
pkgdesc="Cypher Shell - CLI for Neo4j"
depends="$_depends_shell"
amove usr/bin/cypher-shell
amove usr/share/cypher-shell
}
_jar_version() {
unzip -p "$1" META-INF/MANIFEST.MF | sed -En 's/Implementation-Version: (\S+).*/\1/p'
}
sha512sums="
20b16f0252de4706734d7d05c0e30a33394526f4e3070a4c3a17e2a0cf3791881702c5d4e3531f2ad945ccf99ffd70846d2db17b2a568eddf608b2299ab43b71 neo4j-4.4.41.tar.gz
1967594563adf1aa1c0c9809b0cc9fbefe042c933e556f5cb6d01f6ce0d40efcc054533c784d4e12b8fc5ebdd169fd276f2caeb8921eece634fa918219199706 system-jars.patch
6810dfe781aa46882dab971f97aefa8a22e68ed6956754bcb824c28839c7229469316ebe6695819a4bb6b701bea18848d467bd9863bf6dc2a2c01b3f55406202 conf.patch
a1b6f509228dd9925420591803595c67653924ea592c38894f7d3d26e24b40bbc9b35e8b4e67611df9e06a7f0921b13e3f2f1bb54102049c3b1f9c6a2656939d wrapper.sh
f61a76246039187dcc61bdfd7482e4928ae7b356571e56c86f7b7a243dced79c8d61f0c6ab807ca7f993a78640cda427316a9b274844c794b769b992ff897498 neo4j.initd
8530390bb5292318f03b76d3afe23a3029971f90ce4b0e702d18913c01000c6df8644d6c7415ab6dde2d02f9a4af490234ce817aa2d6976554a971e1ff707d4f neo4j.confd
45a3b4f9db522eca6dbc616b17005f7ec75a1168242f465dfd6d2475be3cba465573920d34e4fd192d5f0c838e049f4ea6d46d9a56193f4079a8850f4090dfeb cypher-shell
"