diff --git a/snap/gui/t-dengine.svg b/snap/gui/t-dengine.svg new file mode 100644 index 0000000000..e5f29a860b --- /dev/null +++ b/snap/gui/t-dengine.svg @@ -0,0 +1 @@ +TDengine logo \ No newline at end of file diff --git a/snap/hooks/install b/snap/hooks/install new file mode 100755 index 0000000000..e58918d2c3 --- /dev/null +++ b/snap/hooks/install @@ -0,0 +1,17 @@ +#!/bin/sh + +if [ ! -d /var/lib/taos ]; then + mkdir -p /var/lib/taos +fi + +if [ ! -d /var/log/taos ]; then + mkdir -p -m777 /var/log/taos +fi + +if [ ! -d /etc/taos ]; then + mkdir -p /etc/taos +fi + +if [ ! -f /etc/taos/taos.cfg ]; then + cp $SNAP/etc/taos/taos.cfg /etc/taos/taos.cfg +fi diff --git a/snap/local/launcher.sh b/snap/local/launcher.sh new file mode 100755 index 0000000000..52b3e4ce5c --- /dev/null +++ b/snap/local/launcher.sh @@ -0,0 +1,25 @@ +#!/bin/sh +# Wrapper to check for custom config in $SNAP_USER_COMMON or $SNAP_COMMON and +# use it otherwise fall back to the included basic config which will at least +# allow mosquitto to run and do something. +# This script will also copy the full example config in to SNAP_USER_COMMON or +# SNAP_COMMON so that people can refer to it. +# +# The decision about whether to use SNAP_USER_COMMON or SNAP_COMMON is taken +# based on the user that runs the command. If the user is root, it is assumed +# that mosquitto is being run as a system daemon, and SNAP_COMMON will be used. +# If a non-root user runs the command, then SNAP_USER_COMMON will be used. + +case "$SNAP_USER_COMMON" in + */root/snap/tdengine/common*) COMMON=$SNAP_COMMON ;; + *) COMMON=$SNAP_USER_COMMON ;; +esac + +if [ -d /etc/taos ]; then + CONFIG_FILE="/etc/taos" +else + CONFIG_FILE="$SNAP/etc/taos" +fi + +# Launch the snap +$SNAP/usr/bin/taosd -c $CONFIG_FILE $@ diff --git a/snap/local/taoswrapper.sh b/snap/local/taoswrapper.sh new file mode 100755 index 0000000000..c7e5c1b856 --- /dev/null +++ b/snap/local/taoswrapper.sh @@ -0,0 +1,25 @@ +#!/bin/sh +# Wrapper to check for custom config in $SNAP_USER_COMMON or $SNAP_COMMON and +# use it otherwise fall back to the included basic config which will at least +# allow mosquitto to run and do something. +# This script will also copy the full example config in to SNAP_USER_COMMON or +# SNAP_COMMON so that people can refer to it. +# +# The decision about whether to use SNAP_USER_COMMON or SNAP_COMMON is taken +# based on the user that runs the command. If the user is root, it is assumed +# that mosquitto is being run as a system daemon, and SNAP_COMMON will be used. +# If a non-root user runs the command, then SNAP_USER_COMMON will be used. + +case "$SNAP_USER_COMMON" in + */root/snap/tdengine/common*) COMMON=$SNAP_COMMON ;; + *) COMMON=$SNAP_USER_COMMON ;; +esac + +if [ -d /etc/taos ]; then + CONFIG_FILE="/etc/taos" +else + CONFIG_FILE="$SNAP/etc/taos" +fi + +# Launch the snap +$SNAP/usr/bin/taos -c $CONFIG_FILE $@ diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml new file mode 100644 index 0000000000..cf4f993394 --- /dev/null +++ b/snap/snapcraft.yaml @@ -0,0 +1,113 @@ +name: tdengine +base: core18 # the base snap is the execution environment for this snap +version: '2.0.0.6' # just for humans, typically '1.2+git' or '1.3.2' +icon: snap/gui/t-dengine.svg +summary: an open-source big data platform designed and optimized for IoT. +description: | + TDengine is an open-source big data platform designed and optimized for Internet of Things (IoT), Connected Vehicles, and Industrial IoT. Besides the 10x faster time-series database, it provides caching, stream computing, message queuing and other functionalities to reduce the complexity and costs of development and operations. + +grade: stable +confinement: classic + +apps: + tdengine: + command: launcher.sh + daemon: simple + restart-condition: always + plugs: + - network + - network-bind + - system-observe + - systemfiles + + taos: + command: taoswrapper.sh + plugs: + - network + - systemfiles + + taosdemo: + command: usr/bin/taosdemo + plugs: + - network + +plugs: + systemfiles: + interface: system-files + read: + - /etc/taos + - /var/lib/taos + - /tmp + write: + - /var/log/taos + - /var/lib/taos + - /tmp + +parts: + script: + plugin: dump + source: snap/local/ + prime: + - launcher.sh + - taoswrapper.sh + + tdengine: + source: . + source-type: local + plugin: cmake + build-packages: + - gcc + - g++ + - make + - cmake + override-build: | + snapcraftctl build + if [ ! -d $SNAPCRAFT_STAGE/usr ]; then + mkdir $SNAPCRAFT_STAGE/usr + fi + + if [ ! -d $SNAPCRAFT_STAGE/etc/taos ]; then + mkdir -p $SNAPCRAFT_STAGE/etc/taos + fi + + cp $SNAPCRAFT_PART_BUILD/build/* -rf $SNAPCRAFT_STAGE/usr/ + cp $SNAPCRAFT_PART_SRC/packaging/cfg/taos.cfg -rf $SNAPCRAFT_STAGE/etc/taos/ + + if [ ! -d $SNAPCRAFT_STAGE/var/lib/taos ]; then + mkdir -p $SNAPCRAFT_STAGE/var/lib/taos + fi + if [ ! -d $SNAPCRAFT_STAGE/var/log/taos ]; then + mkdir -p $SNAPCRAFT_STAGE/var/log/taos + fi + + prime: + - etc/taos/taos.cfg + - usr/bin/taosd + - usr/bin/taos + - usr/bin/taosdemo + - usr/lib/libtaos.so.2.0.0.6 + - usr/lib/libtaos.so.1 + - usr/lib/libtaos.so + + override-prime: | + snapcraftctl prime + if [ ! -d $SNAPCRAFT_STAGE/var/lib/taos ]; then + cp -rf $SNAPCRAFT_STAGE/var/lib/taos $SNAPCRAFT_PRIME + fi + if [ ! -d $SNAPCRAFT_STAGE/var/log/taos ]; then + cp -rf $SNAPCRAFT_STAGE/var/log/taos $SNAPCRAFT_PRIME + fi + +layout: + /var/lib/taos: + bind: $SNAP_DATA/var/lib/taos + /var/log/taos: + bind: $SNAP_DATA/var/log/taos + /etc/taos/taos.cfg: + bind-file: $SNAP_DATA/etc/taos/taos.cfg + + +hooks: + install: + plugs: [systemfiles] +