From 4804d0bf6ef897352864c88200d1e7a235a8efab Mon Sep 17 00:00:00 2001 From: Scott Ivey Date: Mon, 30 Nov 2015 21:19:31 -0500 Subject: [PATCH] deb packaging --- .gitignore | 2 +- Makefile | 12 +++++- scripts/packaging/deb/postinst | 18 +++++++++ scripts/packaging/deb/postrm | 19 ++++++++++ scripts/packaging/deb/preinst | 37 +++++++++++++++++++ scripts/packaging/deb/prerm | 10 +++++ .../init.d/relevanced} | 0 scripts/packaging/etc/logrotate.d/relevanced | 8 ++++ .../{ => etc/relevanced}/relevanced.json | 0 scripts/packaging/make_linux_package.sh | 19 ++++++++-- 10 files changed, 120 insertions(+), 5 deletions(-) create mode 100755 scripts/packaging/deb/postinst create mode 100755 scripts/packaging/deb/postrm create mode 100755 scripts/packaging/deb/preinst create mode 100755 scripts/packaging/deb/prerm rename scripts/packaging/{relevanced.initd => etc/init.d/relevanced} (100%) create mode 100644 scripts/packaging/etc/logrotate.d/relevanced rename scripts/packaging/{ => etc/relevanced}/relevanced.json (100%) diff --git a/.gitignore b/.gitignore index 4e5f47f..efccaca 100644 --- a/.gitignore +++ b/.gitignore @@ -14,4 +14,4 @@ build *.sublime-workspace *~ *.deb - +unwrap_deb diff --git a/Makefile b/Makefile index 20e0b8c..64e6532 100644 --- a/Makefile +++ b/Makefile @@ -158,4 +158,14 @@ publish-clients: $(MAKE) -C clients/ruby publish $(MAKE) -C clients/java publish -.PHONY: test-clients publish-clients +.PHONY: test-clients publish-clients unwrap-deb + +unwrap-deb: + mkdir -p unwrap_deb && rm -rf unwrap_deb/* + cp build/deb/*.deb unwrap_deb/relevanced.deb + cd unwrap_deb && ar -vx relevanced.deb + mkdir -p unwrap_deb/control unwrap_deb/data + mv unwrap_deb/control.tar.gz unwrap_deb/control + mv unwrap_deb/data.tar.gz unwrap_deb/data + cd unwrap_deb/data && tar -xaf data.tar.gz + cd unwrap_deb/control && tar -xaf control.tar.gz diff --git a/scripts/packaging/deb/postinst b/scripts/packaging/deb/postinst new file mode 100755 index 0000000..45cc675 --- /dev/null +++ b/scripts/packaging/deb/postinst @@ -0,0 +1,18 @@ +#!/bin/sh + +set -eu + +# shamelessly stolen from redis + +USER="relevanced" +GROUP="$USER" + +chown $USER:$GROUP /var/lib/relevanced +chown $USER:$GROUP /var/log/relevanced + +# Automatically added by dh_installinit +if [ -x "/etc/init.d/relevanced" ]; then + invoke-rc.d relevanced start || exit $? +fi +# End automatically added section + diff --git a/scripts/packaging/deb/postrm b/scripts/packaging/deb/postrm new file mode 100755 index 0000000..efddf2e --- /dev/null +++ b/scripts/packaging/deb/postrm @@ -0,0 +1,19 @@ +#!/bin/sh + +set -e + +# shamelessly stolen from redis + +if [ "$1" = "purge" ] +then + rm -rf /var/lib/relevanced + userdel relevanced +fi + +# In case this system is running systemd, we make systemd reload the unit files +# to pick up changes. +if [ -d /run/systemd/system ] ; then + systemctl --system daemon-reload >/dev/null || true +fi +# End automatically added section + diff --git a/scripts/packaging/deb/preinst b/scripts/packaging/deb/preinst new file mode 100755 index 0000000..9247b4d --- /dev/null +++ b/scripts/packaging/deb/preinst @@ -0,0 +1,37 @@ +#!/bin/sh + +set -eu + +# shamelessly stolen from redis + +USER="relevanced" +GROUP="$USER" +HOME="/var/lib/relevanced" + +# If we use NIS then errors should be tolerated. +if which ypwhich >/dev/null 2>&1 && ypwhich >/dev/null 2>&1 +then + set +e +fi + +if ! getent group $GROUP >/dev/null +then + addgroup --system $GROUP >/dev/null +fi + +# creating user if it isn't already there +if ! getent passwd $USER >/dev/null +then + adduser \ + --system \ + --disabled-login \ + --ingroup $GROUP \ + --home $HOME \ + --gecos "$USER server" \ + --shell /bin/false \ + $USER >/dev/null +fi + +# end of NIS tolerance zone +set -e + diff --git a/scripts/packaging/deb/prerm b/scripts/packaging/deb/prerm new file mode 100755 index 0000000..37aeeab --- /dev/null +++ b/scripts/packaging/deb/prerm @@ -0,0 +1,10 @@ +#!/bin/sh +set -e + +#shamelessly stolen from redis + +# Automatically added by dh_installinit +if [ -x "/etc/init.d/relevanced" ]; then + invoke-rc.d relevanced stop || exit $? +fi +# End automatically added section diff --git a/scripts/packaging/relevanced.initd b/scripts/packaging/etc/init.d/relevanced similarity index 100% rename from scripts/packaging/relevanced.initd rename to scripts/packaging/etc/init.d/relevanced diff --git a/scripts/packaging/etc/logrotate.d/relevanced b/scripts/packaging/etc/logrotate.d/relevanced new file mode 100644 index 0000000..1daf19c --- /dev/null +++ b/scripts/packaging/etc/logrotate.d/relevanced @@ -0,0 +1,8 @@ +/var/log/relevanced/*.log { + daily + missingok + copytruncate + rotate 12 + compress + notifempty +} diff --git a/scripts/packaging/relevanced.json b/scripts/packaging/etc/relevanced/relevanced.json similarity index 100% rename from scripts/packaging/relevanced.json rename to scripts/packaging/etc/relevanced/relevanced.json diff --git a/scripts/packaging/make_linux_package.sh b/scripts/packaging/make_linux_package.sh index 0daf12b..87850cd 100755 --- a/scripts/packaging/make_linux_package.sh +++ b/scripts/packaging/make_linux_package.sh @@ -30,8 +30,10 @@ fi OUTPUT_PKG_PATH="$BUILD_DIR/$PACKAGE_NAME-$PACKAGE_VERSION." # Config files -INITD_SRC="$SCRIPT_DIR/relevanced.initd" +INITD_SRC="${SCRIPT_DIR}/etc/init.d/relevanced" INITD_DST="/etc/init.d/relevanced" +JSON_CONFIG_SRC=${SCRIPT_DIR}/etc/relevanced/relevanced.json +LOGROTATE_CONFIG_SRC=${SCRIPT_DIR}/etc/logrotate.d/relevanced RELEVANCED_LOG_DIR="/var/log/relevanced/" RELEVANCED_VAR_DIR="/var/lib/relevanced" RELEVANCED_ETC_DIR="/etc/relevanced" @@ -100,14 +102,18 @@ function main() { mkdir -p $INSTALL_PREFIX/$RELEVANCED_VAR_DIR/data mkdir -p $INSTALL_PREFIX/$RELEVANCED_LOG_DIR mkdir -p $INSTALL_PREFIX/$RELEVANCED_ETC_DIR + mkdir -p $INSTALL_PREFIX/etc/logrotate.d mkdir -p `dirname $INSTALL_PREFIX$INITD_DST` - cp $SCRIPT_DIR/relevanced.json $INSTALL_PREFIX/$RELEVANCED_ETC_DIR/relevanced.json - cp $INITD_SRC $INSTALL_PREFIX$INITD_DST + cp $JSON_CONFIG_SRC $INSTALL_PREFIX/$RELEVANCED_ETC_DIR/relevanced.json + cp $INITD_SRC $INSTALL_PREFIX$INITD_DST chmod g-w $INSTALL_PREFIX$INITD_DST chmod a+x $INSTALL_PREFIX$INITD_DST + LOGROTATE_DEST=$INSTALL_PREFIX/etc/logrotate.d/relevanced + cp $LOGROTATE_CONFIG_SRC $LOGROTATE_DEST + chmod 644 $LOGROTATE_DEST log "creating package" IFS=',' read -a deps <<< "$PACKAGE_DEPENDENCIES" PACKAGE_DEPENDENCIES= @@ -128,11 +134,18 @@ function main() { $PACKAGE_DEPENDENCIES \ -p $OUTPUT_PKG_PATH \ --config-files etc/relevanced/relevanced.json \ + --config-files etc/init.d/relevanced \ + --config-files etc/logrotate.d/relevanced \ + --before-install ${SCRIPT_DIR}/deb/preinst \ + --after-install ${SCRIPT_DIR}/deb/postinst \ + --before-remove ${SCRIPT_DIR}/deb/prerm \ + --after-remove ${SCRIPT_DIR}/deb/postrm \ --url http://www.relevanced.org \ -m scott.ivey@gmail.com \ --license MIT \ --description \"$DESCRIPTION\" \ \"$INSTALL_PREFIX/=/\"" + echo "running: $CMD" eval "$CMD" log "package created at $OUTPUT_PKG_PATH" }