1
0
Fork 0
mirror of https://github.com/eosswedenorg/antelope-api-healthcheck synced 2026-06-16 04:44:55 +02:00

Split scripts/build*.sh into install and package scripts.

This commit is contained in:
Henrik Hautakoski 2022-08-19 13:17:32 +02:00
parent 3fce1f558b
commit f4a39783b1
No known key found for this signature in database
GPG key ID: 608414D93E862CCD
13 changed files with 252 additions and 197 deletions

View file

@ -2,9 +2,11 @@
GO = go
GOCCFLAGS = -v
GOLDFLAGS = -ldflags="-s -w"
PREFIX = /usr/local
PREFIX = /usr/local
PROGRAM_NAME=eosio-api-healthcheck
export GOOS = $(shell go env GOOS)
export GOARCH = $(shell go env GOARCH)
SOURCES=src/main.go src/server.go src/parse_request.go
.PHONY: all build/$(PROGRAM_NAME) clean
@ -18,18 +20,21 @@ build/$(PROGRAM_NAME) : $(SOURCES)
test:
$(GO) test -v ./...
info-file :
echo PACKAGE_NAME=\"$(PROGRAM_NAME)\" "\n"\
PACKAGE_DESCRIPTION=\"HAproxy healthcheck program for EOSIO API.\" "\n"\
PACKAGE_VERSION=\"1.2.2\" "\n"\
PACKAGE_PREFIX=\"$(PREFIX:/%=%)\" "\n"\
PACKAGE_PROGRAM=\"build/$(PROGRAM_NAME)\" > scripts/pkg_info
install: build
PREFIX=$(PREFIX) DESTDIR=$(DESTDIR) scripts/install.sh $(GOOS)
package_deb: info-file
./scripts/build.sh deb $(realpath build)
package:
PKGROOT=$(DESTDIR) BUILDDIR=$(realpath build) scripts/package.sh $(PKGTYPE)
package_freebsd: info-file
./scripts/build.sh freebsd $(realpath build)
package_debian: PKGTYPE = debian
package_debian: GOOS = linux
package_debian: DESTDIR = build/debroot
package_debian: install package
package_freebsd: PKGTYPE = freebsd
package_freebsd: GOOS = freebsd
package_freebsd: DESTDIR = build/freebsdroot
package_freebsd: install package
clean:
$(GO) clean

View file

@ -1,52 +0,0 @@
#!/bin/bash
############################
# Read cli args #
############################
if [ $# -lt 2 ]; then
echo "$0 <pkg_type> <build_dir>"
exit 1
fi
PKG_TYPE=$1
BUILD_DIR=$2
############################
# Exported variables. #
############################
export BASE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
export TEMPLATE_DIR=${BASE_DIR}/templates
set -o allexport
# Package info
source ${BASE_DIR}/pkg_info
# Build info
source ${BUILD_DIR}/.buildinfo
set +o allexport
# Directories.
export PACKAGE_BINDIR=${PACKAGE_PREFIX}/bin
export PACKAGE_ETCDIR=etc/${PACKAGE_NAME}
export PACKAGE_LOGDIR=/var/log
export PACKAGE_LOGFILE=${PACKAGE_LOGDIR}/${PACKAGE_NAME}.log
export PACKAGE_SHAREDIR=${PACKAGE_PREFIX}/share/${PACKAGE_NAME}
export PACKAGE_TMPDIR="${BUILD_DIR}/pkg_${PKG_TYPE}"
export BUILD_DIR
############################
# Run script #
############################
PKG_SCRIPT="${BASE_DIR}/build_${PKG_TYPE}.sh"
# Check and call script
if [ ! -x $PKG_SCRIPT ]; then
echo "$PKG_SCRIPT not found"
exit 1
fi
echo -e "[\e[34m::\e[0m] Building package for: ${PKG_TYPE}"
$PKG_SCRIPT

View file

@ -1,76 +0,0 @@
#!/usr/bin/env bash
PACKAGE_SYSUNITDIR=etc/systemd/system
PACKAGE_RSYSLOGDIR=etc/rsyslog.d
PACKAGE_LOGROTATEDIR=etc/logrotate.d
if [[ -f /etc/upstream-release/lsb-release ]]; then
source /etc/upstream-release/lsb-release
elif [[ -f /etc/lsb-release ]]; then
source /etc/lsb-release
else
echo "ERROR: could not determine debian release."
exit 1
fi
DISTRIB_ID=$(echo $DISTRIB_ID | tr '[:upper:]' '[:lower:]')
# Default to 1 if no release is set.
if [[ -z $RELEASE ]]; then
RELEASE="1"
fi
PACKAGE_FULLNAME="${PACKAGE_NAME}_${PACKAGE_VERSION}-${RELEASE}-${DISTRIB_ID}-${DISTRIB_RELEASE}_amd64"
rm -fr ${PACKAGE_TMPDIR}
# Create debian files.
mkdir -p ${PACKAGE_TMPDIR}/DEBIAN
echo "Package: ${PACKAGE_NAME}
Version: ${PACKAGE_VERSION}-${RELEASE}
Section: introspection
Priority: optional
Architecture: amd64
Homepage: https://github.com/eosswedenorg/eos-api-healthcheck
Maintainer: Henrik Hautakoski <henrik@eossweden.org>
Description: ${PACKAGE_DESCRIPTION}" &> ${PACKAGE_TMPDIR}/DEBIAN/control
cat ${PACKAGE_TMPDIR}/DEBIAN/control
# Create service file
mkdir -p ${PACKAGE_TMPDIR}/${PACKAGE_SYSUNITDIR}
cat ${TEMPLATE_DIR}/sysunit.service \
| sed "s~{{ PACKAGE_NAME }}~${PACKAGE_NAME}~" \
| sed "s~{{ DESCRIPTION }}~${PACKAGE_DESCRIPTION}~" \
| sed "s~{{ PROGRAM }}~/${PACKAGE_PREFIX}/bin/${PACKAGE_NAME}~" \
> ${PACKAGE_TMPDIR}/${PACKAGE_SYSUNITDIR}/${PACKAGE_NAME}.service
# Create rsyslog file
mkdir -p ${PACKAGE_TMPDIR}/${PACKAGE_RSYSLOGDIR}
cat ${TEMPLATE_DIR}/rsyslog.conf \
| sed "s~{{ PROGRAM }}~${PACKAGE_NAME}~" \
| sed "s~{{ LOG_FILE }}~${PACKAGE_LOGFILE}~" \
> ${PACKAGE_TMPDIR}/${PACKAGE_RSYSLOGDIR}/49-${PACKAGE_NAME}.conf
# Create logrotate file
mkdir -p ${PACKAGE_TMPDIR}/${PACKAGE_LOGROTATEDIR}
cat ${TEMPLATE_DIR}/logrotate.conf \
| sed "s~{{ LOG_FILE }}~${PACKAGE_LOGFILE}~" \
> ${PACKAGE_TMPDIR}/${PACKAGE_LOGROTATEDIR}/${PACKAGE_NAME}.conf
chmod 644 ${PACKAGE_TMPDIR}/${PACKAGE_LOGROTATEDIR}/${PACKAGE_NAME}.conf
# Cerate config file
mkdir -p ${PACKAGE_TMPDIR}/${PACKAGE_ETCDIR}
cat ${TEMPLATE_DIR}/config \
| sed "s~{{ PACKAGE_NAME }}~${PACKAGE_NAME}~" \
> ${PACKAGE_TMPDIR}/${PACKAGE_ETCDIR}/env
# Copy program
mkdir -p ${PACKAGE_TMPDIR}/${PACKAGE_BINDIR}
cp ${BASE_DIR}/../${PACKAGE_PROGRAM} ${PACKAGE_TMPDIR}/${PACKAGE_BINDIR}/${PACKAGE_NAME}
# Copy files.
mkdir -p ${PACKAGE_TMPDIR}/${PACKAGE_SHAREDIR}
cp ${BASE_DIR}/../README.md ${PACKAGE_TMPDIR}/${PACKAGE_SHAREDIR}
fakeroot dpkg-deb --build ${PACKAGE_TMPDIR} ${BUILD_DIR}/${PACKAGE_FULLNAME}.deb

View file

@ -1,54 +0,0 @@
#!/bin/bash
# Simple script to create a tar archive for FreeBSD
PACKAGE_TMPDIR="${PACKAGE_TMPDIR}/freebsd"
PACKAGE_RCDIR=/etc/rc.d
PACKAGE_NEWSYSLOGDIR=etc/newsyslog.conf.d
# Common variables
PID_FILE=/var/run/${PACKAGE_NAME}.pid
############################
# Create rc file #
############################
# rc does not like "-" in the filename.
RC_NAME=$(echo ${PACKAGE_NAME} | sed "s~-~_~g")
mkdir -p ${PACKAGE_TMPDIR}/${PACKAGE_RCDIR}
cat ${TEMPLATE_DIR}/rc.conf \
| sed "s~{{ RC_NAME }}~${RC_NAME}~g" \
| sed "s~{{ PID_FILE }}~${PID_FILE}~g" \
| sed "s~{{ LOG_FILE }}~${PACKAGE_LOGFILE}~" \
| sed "s~{{ DESCRIPTION }}~${PACKAGE_DESCRIPTION}~" \
| sed "s~{{ PROGRAM }}~/${PACKAGE_BINDIR}/${PACKAGE_NAME}~" \
> ${PACKAGE_TMPDIR}/${PACKAGE_RCDIR}/${RC_NAME}
# Must be executable.
chmod 755 ${PACKAGE_TMPDIR}/${PACKAGE_RCDIR}/${RC_NAME}
############################
# Create newsyslog config #
############################
mkdir -p ${PACKAGE_TMPDIR}/${PACKAGE_NEWSYSLOGDIR}
cat ${TEMPLATE_DIR}/newsyslog.conf \
| sed "s~{{ LOG_FILE }}~${PACKAGE_LOGFILE}~" \
| sed "s~{{ PID_FILE }}~${PID_FILE}~g" \
> ${PACKAGE_TMPDIR}/${PACKAGE_NEWSYSLOGDIR}/${PACKAGE_NAME}.conf
############################
# Copy binary #
############################
mkdir -p ${PACKAGE_TMPDIR}/${PACKAGE_BINDIR}
cp ${BASE_DIR}/../${PACKAGE_PROGRAM} ${PACKAGE_TMPDIR}/${PACKAGE_BINDIR}
############################
# Create archive #
############################
TAR_FILENAME="${PACKAGE_NAME}-${PACKAGE_VERSION}-freebsd-${GOARCH}.tar.gz"
tar -C ${PACKAGE_TMPDIR} --owner root --group root -zcvf ${BUILD_DIR}/${TAR_FILENAME} .

6
scripts/info.sh Normal file
View file

@ -0,0 +1,6 @@
#!/bin/bash
# Info
PROGRAM_NAME=eosio-api-healthcheck
PROGRAM_VERSION=1.2.2
PROGRAM_DESCRIPTION="HAproxy healthcheck program for EOSIO API."

61
scripts/install.sh Executable file
View file

@ -0,0 +1,61 @@
#!/bin/bash
############################
# Read cli args #
############################
if [ $# -lt 1 ]; then
echo "$0 <type>"
exit 1
fi
SYSTEM_TYPE=$1
if [ $# -gt 1 ]; then
PREFIX=$2
fi
if [ $# -gt 2 ]; then
DESTDIR=$3
fi
############################
# Exported variables. #
############################
export BASE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
export TEMPLATE_DIR=${BASE_DIR}/templates
export BUILD_DIR=${BASE_DIR}/../build
# Export info variables
set -o allexport
source ${BASE_DIR}/info.sh
set +o allexport
# Directories.
export DESTDIR
export PREFIX
export BINDIR=${PREFIX}/bin
export ETCDIR=/etc/${PROGRAM_NAME}
export LOGDIR=/var/log
export LOGFILE=${LOGDIR}/${PROGRAM_NAME}.log
export SHAREDIR=${PREFIX}/share/${PROGRAM_NAME}
############################
# Run script #
############################
SCRIPT="${BASE_DIR}/install_${SYSTEM_TYPE}.sh"
# Check and call script
if [ ! -x $SCRIPT ]; then
echo "$SCRIPT not found"
exit 1
fi
echo -e "[\e[34m::\e[0m] Installing for system: \e[32m${SYSTEM_TYPE}\e[0m"
if [ -n "$DESTDIR" ]; then
echo -e "[\e[34m::\e[0m] Installing with root: \e[32m${DESTDIR}\e[0m"
fi
bash $SCRIPT

44
scripts/install_freebsd.sh Executable file
View file

@ -0,0 +1,44 @@
#!/bin/bash
# Simple script to install program files on FreeBSD systems
RCDIR=${DESTDIR}/etc/rc.d
NEWSYSLOGDIR=${DESTDIR}/etc/newsyslog.conf.d
# Common variables
PID_FILE=/var/run/${PROGRAM_NAME}.pid
# rc does not like "-" in the filename.
RC_NAME=$(echo ${PROGRAM_NAME} | sed "s~-~_~g")
############################
# Create rc file #
############################
mkdir -p ${RCDIR}
cat ${TEMPLATE_DIR}/rc.conf \
| sed "s~{{ RC_NAME }}~${RC_NAME}~g" \
| sed "s~{{ PID_FILE }}~${PID_FILE}~g" \
| sed "s~{{ LOG_FILE }}~${LOGFILE}~" \
| sed "s~{{ DESCRIPTION }}~${DESCRIPTION}~" \
| sed "s~{{ PROGRAM }}~${BINDIR}/${PROGRAM_NAME}~" \
> ${RCDIR}/${RC_NAME}
# Must be executable.
chmod 755 ${RCDIR}/${RC_NAME}
############################
# Create newsyslog config #
############################
mkdir -p ${NEWSYSLOGDIR}
cat ${TEMPLATE_DIR}/newsyslog.conf \
| sed "s~{{ LOG_FILE }}~${LOGFILE}~" \
| sed "s~{{ PID_FILE }}~${PID_FILE}~g" \
> ${NEWSYSLOGDIR}/${PROGRAM_NAME}.conf
############################
# Copy binary #
############################
mkdir -p ${DESTDIR}/${BINDIR}
cp ${BUILD_DIR}/${PROGRAM_NAME} ${DESTDIR}${BINDIR}/${PROGRAM_NAME}

42
scripts/install_linux.sh Executable file
View file

@ -0,0 +1,42 @@
#!/bin/bash
# Script to install program files on linux systems
SYSUNITDIR=${DESTDIR}/etc/systemd/system
RSYSLOGDIR=${DESTDIR}/etc/rsyslog.d
LOGROTATEDIR=${DESTDIR}/etc/logrotate.d
# Create service file
mkdir -p ${SYSUNITDIR}
cat ${TEMPLATE_DIR}/sysunit.service \
| sed "s~{{ PROGRAM_NAME }}~${PROGRAM_NAME}~" \
| sed "s~{{ DESCRIPTION }}~${DESCRIPTION}~" \
| sed "s~{{ PROGRAM }}~${BINDIR}/${PROGRAM_NAME}~" \
> ${SYSUNITDIR}/${PROGRAM_NAME}.service
# Create systemd config file
mkdir -p ${DESTDIR}${ETCDIR}
cat ${TEMPLATE_DIR}/config \
| sed "s~{{ PROGRAM_NAME }}~${PROGRAM_NAME}~" \
> ${DESTDIR}${ETCDIR}/env
# Create rsyslog file
mkdir -p ${RSYSLOGDIR}
cat ${TEMPLATE_DIR}/rsyslog.conf \
| sed "s~{{ PROGRAM }}~${PROGRAM_NAME}~" \
| sed "s~{{ LOG_FILE }}~${LOGFILE}~" \
> ${RSYSLOGDIR}/49-${PROGRAM_NAME}.conf
# Create logrotate file
mkdir -p ${LOGROTATEDIR}
cat ${TEMPLATE_DIR}/logrotate.conf \
| sed "s~{{ LOG_FILE }}~${LOGFILE}~" \
> ${LOGROTATEDIR}/${PROGRAM_NAME}.conf
chmod 644 ${LOGROTATEDIR}/${PROGRAM_NAME}.conf
# Copy program
mkdir -p ${DESTDIR}/${BINDIR}
cp ${BUILD_DIR}/${PROGRAM_NAME} ${DESTDIR}${BINDIR}/${PROGRAM_NAME}
# Copy files.
mkdir -p ${DESTDIR}${SHAREDIR}
cp ${BASE_DIR}/../README.md ${DESTDIR}${SHAREDIR}

38
scripts/package.sh Executable file
View file

@ -0,0 +1,38 @@
#!/bin/bash
############################
# Read cli args #
############################
if [ $# -lt 1 ]; then
echo "$0 <type>"
exit 1
fi
PKG_TYPE=$1
# Setup vars
export BASE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
# export
export PKGROOT
export BUILDDIR
############################
# Run script #
############################
SCRIPT="${BASE_DIR}/package_${PKG_TYPE}.sh"
# Check and call script
if [ ! -x $SCRIPT ]; then
echo "$SCRIPT not found"
exit 1
fi
# Export info variables
set -o allexport
source ${BASE_DIR}/info.sh
set +o allexport
bash $SCRIPT

34
scripts/package_debian.sh Executable file
View file

@ -0,0 +1,34 @@
#!/bin/bash
if [[ -f /etc/upstream-release/lsb-release ]]; then
source /etc/upstream-release/lsb-release
elif [[ -f /etc/lsb-release ]]; then
source /etc/lsb-release
else
echo "ERROR: could not determine debian release."
exit 1
fi
DISTRIB_ID=$(echo $DISTRIB_ID | tr '[:upper:]' '[:lower:]')
# Default to 1 if no release is set.
if [[ -z $RELEASE ]]; then
RELEASE="1"
fi
PACKAGE_FULLNAME="${PROGRAM_NAME}_${PROGRAM_VERSION}-${RELEASE}-${DISTRIB_ID}-${DISTRIB_RELEASE}_amd64"
# Create debian files.
mkdir -p ${PKGROOT}/DEBIAN
echo "Package: ${PROGRAM_NAME}
Version: ${PROGRAM_VERSION}-${RELEASE}
Section: introspection
Priority: optional
Architecture: amd64
Homepage: https://github.com/eosswedenorg/eos-api-healthcheck
Maintainer: Henrik Hautakoski <henrik@eossweden.org>
Description: ${PROGRAM_DESCRIPTION}" &> ${PKGROOT}/DEBIAN/control
cat ${PKGROOT}/DEBIAN/control
fakeroot dpkg-deb --build ${PKGROOT} ${BUILDDIR}/${PACKAGE_FULLNAME}.deb

7
scripts/package_freebsd.sh Executable file
View file

@ -0,0 +1,7 @@
#!/bin/bash
PROGRAM_ARCH=$(go env GOARCH)
TAR_FILENAME="${PROGRAM_NAME}-${PROGRAM_VERSION}-freebsd-${PROGRAM_ARCH}.tar.gz"
echo "Create archive: ${BUILDDIR}/${TAR_FILENAME}"
tar -C ${PKGROOT} --owner root --group root -zcvf ${BUILDDIR}/${TAR_FILENAME} .

View file

@ -1,7 +1,7 @@
# Default settings for {{ PACKAGE_NAME }}
# Default settings for {{ PROGRAM_NAME }}
#
# This is sourced by the systemd unit file.
# Command line flags to pass to {{ PACKAGE_NAME }}
# Command line flags to pass to {{ PROGRAM_NAME }}
# First is IP to listen to, second is port.
#OPTS="127.0.0.1 1337"

View file

@ -3,7 +3,7 @@ Description={{ DESCRIPTION }}
After=network.target
[Service]
EnvironmentFile=-/etc/{{ PACKAGE_NAME }}/env
EnvironmentFile=-/etc/{{ PROGRAM_NAME }}/env
Type=simple
ExecStart={{ PROGRAM }} $OPTS
Restart=on-failure