diff options
author | Shulhan | 2023-03-15 21:55:33 +0700 |
---|---|---|
committer | Shulhan | 2023-03-15 21:55:33 +0700 |
commit | 9d15a19a3dc3f51861de729e7f740039a5b84563 (patch) | |
tree | 8c3e38f1fbafadf016b73544153f75ba606cdc09 | |
download | aur-questdb-git.tar.gz |
all: new AUR package for questdb
The reason for this package is there is a bug in grafana v9.4.x that
cause it cannot connect to questdb instance.
The fix is currently only available on the tip.
-rw-r--r-- | .SRCINFO | 26 | ||||
-rw-r--r-- | .gitignore | 4 | ||||
-rw-r--r-- | Makefile | 10 | ||||
-rw-r--r-- | PKGBUILD | 46 | ||||
-rw-r--r-- | questdb-tmpfile.conf | 2 | ||||
-rw-r--r-- | questdb.service | 13 | ||||
-rw-r--r-- | questdb.sh | 276 | ||||
-rw-r--r-- | questdb.sysusers | 1 |
8 files changed, 378 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..1c067cd670dc --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,26 @@ +pkgbase = questdb-git + pkgdesc = Fast timeseries database + pkgver = 7.0.1.r16.g7fa73a2863 + pkgrel = 1 + url = https://questdb.io + arch = any + license = APACHE + makedepends = git + makedepends = maven + makedepends = java-environment + depends = java-runtime + depends = bash + provides = questdb + conflicts = questdb + source = questdb-git::git+https://github.com/questdb/questdb.git + source = questdb.sh + source = questdb.sysusers + source = questdb-tmpfile.conf + source = questdb.service + sha1sums = SKIP + sha1sums = 203b1916ebf8547cad1b144509029126d970836b + sha1sums = 79459d2e7ab4a78364359cb40368bbc0778fd9cf + sha1sums = bcd990f6257a0501c82a03384a9d4c5703b03abb + sha1sums = ec5400e458e7511abb8e455710041352f15b87ab + +pkgname = questdb-git diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000000..335228555f0d --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +*.tar.zst +/pkg +/questdb-git +/src diff --git a/Makefile b/Makefile new file mode 100644 index 000000000000..3af267663a56 --- /dev/null +++ b/Makefile @@ -0,0 +1,10 @@ +.PHONY: all build + +all: build SRCINFO + +build: + makepkg + +SRCINFO: PKGBUILD + -namcap questdb-git-*.tar.zst + makepkg --printsrcinfo > .SRCINFO diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..9dcd0724e2ea --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,46 @@ +# Maintainer: Shulhan <ms@kilabit.info> + +pkgname=questdb-git +pkgver=7.0.1.r16.g7fa73a2863 +pkgrel=1 +pkgdesc='Fast timeseries database' +conflicts=(questdb) +provides=(questdb) +arch=('any') +url='https://questdb.io' +license=('APACHE') +makedepends=('git' 'maven' 'java-environment') +depends=('java-runtime' 'bash') +source=("$pkgname::git+https://github.com/questdb/questdb.git" + 'questdb.sh' + 'questdb.sysusers' + 'questdb-tmpfile.conf' + 'questdb.service') +sha1sums=('SKIP' + '203b1916ebf8547cad1b144509029126d970836b' + '79459d2e7ab4a78364359cb40368bbc0778fd9cf' + 'bcd990f6257a0501c82a03384a9d4c5703b03abb' + 'ec5400e458e7511abb8e455710041352f15b87ab') + +pkgver() { + cd "$pkgname" + git describe --long --tags | sed 's/^v//; s/\([^-]*-g\)/r\1/;s/-/./g' +} + +build() { + cd "$pkgname" + mvn clean package -DskipTests -P build-web-console +} + +package() { + cd "$pkgname" + + mkdir -p ${pkgdir}/{usr/bin,usr/share/java/questdb,etc/questdb,var/lib/questdb} + + install -Dm644 core/target/questdb-*-SNAPSHOT.jar ${pkgdir}/usr/share/java/questdb/questdb.jar + + install -Dm755 ${srcdir}/questdb.sh ${pkgdir}/usr/bin/questdb + install -Dm644 ${srcdir}/questdb.service ${pkgdir}/usr/lib/systemd/system/questdb.service + install -Dm644 ${srcdir}/questdb.sysusers ${pkgdir}/usr/lib/sysusers.d/questdb.conf + install -Dm644 ${srcdir}/questdb-tmpfile.conf ${pkgdir}/usr/lib/tmpfiles.d/questdb.conf +} diff --git a/questdb-tmpfile.conf b/questdb-tmpfile.conf new file mode 100644 index 000000000000..cb520cc8d23c --- /dev/null +++ b/questdb-tmpfile.conf @@ -0,0 +1,2 @@ +d /var/lib/questdb 0755 questdb questdb - +d /var/log/questdb 0755 questdb questdb - diff --git a/questdb.service b/questdb.service new file mode 100644 index 000000000000..c62e85c68746 --- /dev/null +++ b/questdb.service @@ -0,0 +1,13 @@ +[Unit] +Description=Questdb fast timeseries database +Documentation=https://questdb.io/ +After=network.target + +[Service] +Type=forking +User=questdb +ExecStart=/usr/bin/questdb start +ExecStop=/usr/bin/questdb stop + +[Install] +WantedBy=multi-user.target diff --git a/questdb.sh b/questdb.sh new file mode 100644 index 000000000000..9ca1fb23f462 --- /dev/null +++ b/questdb.sh @@ -0,0 +1,276 @@ +#!/usr/bin/env bash + +################################################################################ +# ___ _ ____ ____ +# / _ \ _ _ ___ ___| |_| _ \| __ ) +# | | | | | | |/ _ \/ __| __| | | | _ \ +# | |_| | |_| | __/\__ \ |_| |_| | |_) | +# \__\_\\__,_|\___||___/\__|____/|____/ +# +# Copyright (c) 2014-2019 Appsicle +# Copyright (c) 2019-2023 QuestDB +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +################################################################################ + +export QDB_PROCESS_LABEL="QuestDB-Runtime-66535" +export QDB_MAX_STOP_ATTEMPTS=5 +export QDB_OS=$(uname) + +case $(uname) in +Darwin | FreeBSD) + export PS_CMD="ps aux" + export QDB_DEFAULT_ROOT="/usr/local/var/questdb" + ;; +*) + export PS_CMD="ps -ef" + export QDB_DEFAULT_ROOT="/var/lib/questdb" + ;; +esac + +## jvm java_opt configurations +if [ -f "/etc/questdb/jvm.env" ]; then + source "/etc/questdb/jvm.env" +fi + +function read_link { + f=$(readlink $1) + if [ "$f" != "" ]; then + + if [[ "$f" != /* ]]; then + f="$(dirname $1)/$f" + f="$(cd $(dirname ${f}); pwd)/$(basename ${f})" + fi + + n=$(read_link ${f}) + if [ "$n" != "" ]; then + f=${n}; + fi + fi + echo "$f" +} + +function usage { + echo "Usage: $0 start|status|stop [-f] [-d path] [-t tag]" + echo + exit 55 +} + +function export_pid { + export QDB_PID=`${PS_CMD} | grep ${QDB_PROCESS_LABEL} | grep -v grep | tr -s " " | cut -d " " -f 2` +} + +function export_java { + + # check if this is our runtime + if [ -f "$BASE/java" ]; then + export QDB_PACKAGE=withjre + export JAVA="$BASE/java" + else + export QDB_PACKAGE=withoutjre + if [ "$JAVA_HOME" = "" -a -e /usr/libexec/java_home ]; then + JAVA_HOME=$(/usr/libexec/java_home -v 11) + fi + + # check that JAVA_HOME is defined + if [ "$JAVA_HOME" = "" ]; then + JAVA_HOME=/usr/lib/jvm/default + fi + + # check that Java binary is executable + export JAVA=${JAVA_HOME}/bin/java + fi + + if [ ! -x "$JAVA" ]; then + echo "$JAVA is not executable" + exit 55; + fi + + echo "JAVA: $JAVA" +} + +function export_args { + + export QDB_OVERWRITE_PUBLIC="" + export QDB_DISABLE_HUP_HANDLER="" + export QDB_CONTAINER_MODE="" + export QDB_ROOT=${QDB_DEFAULT_ROOT} + + while [[ $# -gt 0 ]]; do + key="$1" + + case ${key} in + -f) + export QDB_OVERWRITE_PUBLIC="-f" + ;; + -n) + export QDB_DISABLE_HUP_HANDLER="-n" + ;; + -c) + export QDB_CONTAINER_MODE="-c" + ;; + -d) + if [[ $# -eq 1 ]]; then + echo "Expected: -d <path>" + exit 55 + fi + export QDB_ROOT="$2" + shift + ;; + -t) + if [[ $# -eq 1 ]]; then + echo "Expected: -t <tag>" + exit 55 + fi + export QDB_PROCESS_LABEL="QuestDB-Runtime-$2" + shift + ;; + *) + echo "Unexpected option: $key" + usage + ;; + esac + shift + done +} + +function start { + + export_pid + + if [[ "${QDB_PID}" != "" ]]; then + echo "Already running. PID: ${QDB_PID}" + exit 55 + fi + + # LINK=$(read_link $0) + # if [ "$LINK" != "" ]; then + # BASE=$(dirname ${LINK}) + # else + # BASE=$(dirname $0) + # fi + BASE=/usr/share/java/questdb + + export_java + + # create root directory if it does not exist + if [ ! -d "$QDB_ROOT" ]; then + echo "Created QuestDB ROOT directory: $QDB_ROOT" + mkdir -p ${QDB_ROOT} + fi + + QDB_LOG=/var/log/questdb/ + mkdir -p ${QDB_LOG} + + JAVA_LIB="$BASE/questdb.jar" + + JAVA_OPTS="${JAVA_OPTS} + -D$QDB_PROCESS_LABEL + -ea -Dnoebug + -XX:+UnlockExperimentalVMOptions + -XX:+AlwaysPreTouch + -XX:+UseParallelGC + " + + JAVA_MAIN="io.questdb/io.questdb.ServerMain" + DATE=`date +%Y-%m-%dT%H-%M-%S` + + if [ "${QDB_CONTAINER_MODE}" != "" ]; then + ${JAVA} ${JAVA_OPTS} -p ${JAVA_LIB} -m ${JAVA_MAIN} -d ${QDB_ROOT} ${QDB_OVERWRITE_PUBLIC} >${QDB_LOG}/stdout-${DATE}.txt + elif [ "${QDB_DISABLE_HUP_HANDLER}" = "" ]; then + ${JAVA} ${JAVA_OPTS} -p ${JAVA_LIB} -m ${JAVA_MAIN} -d ${QDB_ROOT} ${QDB_OVERWRITE_PUBLIC} >${QDB_LOG}/stdout-${DATE}.txt & + sleep 0.5 + else + ${JAVA} ${JAVA_OPTS} -p ${JAVA_LIB} -m ${JAVA_MAIN} -d ${QDB_ROOT} ${QDB_OVERWRITE_PUBLIC} ${QDB_DISABLE_HUP_HANDLER} >${QDB_LOG}/stdout-${DATE}.txt + fi +} + +function query { + export_pid + + if [[ "${QDB_PID}" = "" ]]; then + echo "Not running" + else + echo "PID: ${QDB_PID}" + fi +} + +function stop { + export_pid + if [[ "${QDB_PID}" = "" ]]; then + echo "Not running" + exit 55 + fi + + OUR_PID=${QDB_PID} + + echo "Stopping ${OUR_PID}" + + count=${QDB_MAX_STOP_ATTEMPTS} + while [ "${QDB_PID}" != "" ] && [ ${count} -gt 0 ]; do + kill ${QDB_PID} + sleep 0.5 + export_pid + count=$((count - 1)) + done + + if [[ "${QDB_PID}" != "" ]]; then + kill -9 ${QDB_PID} + echo "Something is wrong. Process does not stop. Killing..." + export_pid + fi + + if [[ "${QDB_PID}" != "" ]]; then + echo "Cannot stop ${QDB_PID}. Check permissions." + else + echo "Stopped ${OUR_PID}" + fi +} + +function banner { + echo '' + echo ' ___ _ ____ ____' + echo ' / _ \ _ _ ___ ___| |_| _ \| __ )' + echo '| | | | | | |/ _ \/ __| __| | | | _ \' + echo '| |_| | |_| | __/\__ \ |_| |_| | |_) |' + echo ' \__\_\\__,_|\___||___/\__|____/|____/' + echo ' www.questdb.io' + echo +} + +banner + +if [[ $# -gt 0 ]]; then + command=$1 + shift + + export_args $@ + + case ${command} in + start) + start + ;; + status) + query + ;; + stop) + stop + ;; + *) + usage + ;; + esac +else + usage +fi diff --git a/questdb.sysusers b/questdb.sysusers new file mode 100644 index 000000000000..d95b4231de1d --- /dev/null +++ b/questdb.sysusers @@ -0,0 +1 @@ +u questdb |