diff --git a/meilisearch/meilisearch.conf b/meilisearch/meilisearch.conf new file mode 100644 index 0000000000..96c6f41b5b --- /dev/null +++ b/meilisearch/meilisearch.conf @@ -0,0 +1,10 @@ +## +## meilisearch.conf -- Meilisearch Configuration +## + +db-path @l_prefix@/var/meilisearch/db +http-addr 127.0.0.1:7700 +env development +master-key secret +no-analytics packaged + diff --git a/meilisearch/meilisearch.spec b/meilisearch/meilisearch.spec new file mode 100644 index 0000000000..9f5f04e816 --- /dev/null +++ b/meilisearch/meilisearch.spec @@ -0,0 +1,118 @@ +## +## meilisearch.spec -- OpenPKG RPM Package Specification +## Copyright (c) 2000-2020 OpenPKG Project +## +## Permission to use, copy, modify, and distribute this software for +## any purpose with or without fee is hereby granted, provided that +## the above copyright notice and this permission notice appear in all +## copies. +## +## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED +## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR +## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +## SUCH DAMAGE. +## + +# package version +%define V_opkg 0.8.5 +%define V_snap 20200222 + +# package information +Name: meilisearch +Summary: Full-Text Search Server +URL: https://meilisearch.com/ +Vendor: Meili SAS +Packager: OpenPKG Project +Distribution: OpenPKG Community +Class: EVAL +Group: Database +License: MIT +Version: %{V_opkg}.%{V_snap} +Release: 20200222 + +# list of sources +Source0: http://download.openpkg.org/components/versioned/meilisearch/meilisearch-%{V_snap}.tar.xz +Source1: meilisearch.conf +Source2: rc.meilisearch + +# build information +BuildPreReq: OpenPKG, openpkg >= 20160101, rust +PreReq: OpenPKG, openpkg >= 20160101 + +%description + MeiliSearch is a powerful, fast, open-source, easy to use, + and deploy search engine. The search and indexation are fully + customizable and handles features like typo-tolerance, filters, and + synonyms. + +%track + prog meilisearch = { + version = %{V_opkg} + url = https://github.com/meilisearch/MeiliSearch/releases + regex = v(__VER__)\.tar\.gz + } + +%prep + %setup -q -n meilisearch + +%build + # build program + HOME=`pwd` + cargo build --release + +%install + # create installation hierarchy + %{l_shtool} mkdir -f -p -m 755 \ + $RPM_BUILD_ROOT%{l_prefix}/bin \ + $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d \ + $RPM_BUILD_ROOT%{l_prefix}/etc/meilisearch \ + $RPM_BUILD_ROOT%{l_prefix}/var/meilisearch/db \ + $RPM_BUILD_ROOT%{l_prefix}/var/meilisearch/run \ + $RPM_BUILD_ROOT%{l_prefix}/var/meilisearch/log + + # install program + %{l_shtool} install -c -s -m 755 \ + target/release/meilisearch $RPM_BUILD_ROOT%{l_prefix}/bin/ + + # install run-command script + %{l_shtool} install -c -m 755 %{l_value -s -a} \ + %{SOURCE rc.meilisearch} $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/ + + # install configuration file + %{l_shtool} install -c -m 644 %{l_value -s -a} \ + %{SOURCE meilisearch.conf} $RPM_BUILD_ROOT%{l_prefix}/etc/meilisearch/ + + # determine installation files + %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \ + %{l_files_std} \ + '%config %{l_prefix}/etc/meilisearch/*' \ + '%attr(-,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/meilisearch/*' + +%files -f files + +%clean + +%post + # after upgrade, restart service + [ $1 -eq 2 ] || exit 0 + eval `%{l_rc} meilisearch status 2>/dev/null` + [ ".$meilisearch_active" = .yes ] && %{l_rc} meilisearch restart + exit 0 + +%preun + # before erase, stop service and remove log files + [ $1 -eq 0 ] || exit 0 + %{l_rc} meilisearch stop 2>/dev/null + rm -rf $RPM_INSTALL_PREFIX/var/meilisearch/log/* >/dev/null 2>&1 || true + rm -rf $RPM_INSTALL_PREFIX/var/meilisearch/run/* >/dev/null 2>&1 || true + rm -rf $RPM_INSTALL_PREFIX/var/meilisearch/db/* >/dev/null 2>&1 || true + exit 0 + diff --git a/meilisearch/rc.meilisearch b/meilisearch/rc.meilisearch new file mode 100644 index 0000000000..8e82346a17 --- /dev/null +++ b/meilisearch/rc.meilisearch @@ -0,0 +1,63 @@ +#!@l_prefix@/bin/openpkg rc +## +## rc.meilisearch -- Run-Commands +## + +%config + meilisearch_enable="$openpkg_rc_def" + meilisearch_flags="" + meilisearch_log_prolog="true" + meilisearch_log_epilog="true" + meilisearch_log_numfiles="10" + meilisearch_log_minsize="1M" + meilisearch_log_complevel="9" + +%common + meilisearch_cfgfile="@l_prefix@/etc/meilisearch/meilisearch.conf" + meilisearch_pidfile="@l_prefix@/var/meilisearch/run/meilisearch.pid" + meilisearch_logfile="@l_prefix@/var/meilisearch/log/meilisearch.log" + meilisearch_signal () { + [ -f $meilisearch_pidfile ] && kill -$1 `cat $meilisearch_pidfile` + } + +%status -u @l_rusr@ -o + meilisearch_usable="unknown" + meilisearch_active="no" + rcService meilisearch enable yes && \ + meilisearch_signal 0 && meilisearch_active="yes" + echo "meilisearch_enable=\"$meilisearch_enable\"" + echo "meilisearch_usable=\"$meilisearch_usable\"" + echo "meilisearch_active=\"$meilisearch_active\"" + +%start -u @l_rusr@ + rcService meilisearch enable yes || exit 0 + rcService meilisearch active yes && exit 0 + ( nohup @l_prefix@/bin/meilisearch \ + `sed -e "/^ *#/d" -e '/^ *$/d' -e "s;^;--;" <$meilisearch_cfgfile | \ + sed -e ":a" -e "N" -e '$!ba' -e 's/\n/ /g'` \ + $meilisearch_flags \ + >$meilisearch_logfile 2>&1 & + echo $! >$meilisearch_pidfile + ) >/dev/null 2>&1 + +%stop -u @l_rusr@ + rcService meilisearch enable yes || exit 0 + rcService meilisearch active no && exit 0 + meilisearch_signal TERM + sleep 2 + rm -f $meilisearch_pidfile >/dev/null 2>&1 || true + +%restart -u @l_rusr@ + rcService meilisearch enable yes || exit 0 + rcService meilisearch active no && exit 0 + rc meilisearch stop start + +%daily -u @l_rusr@ + rcService meilisearch enable yes || exit 0 + shtool rotate -f \ + -n ${meilisearch_log_numfiles} -s ${meilisearch_log_minsize} -d \ + -z ${meilisearch_log_complevel} -m 664 -o @l_rusr@ -g @l_rgrp@ \ + -P "${meilisearch_log_prolog}" \ + -E "${meilisearch_log_epilog}; rc meilisearch restart" \ + $meilisearch_logfile +