jolly submitted this change.
Add Makefile and start script for installation
The Makefile allows to compile and install onomondo-eim. This allows to
build it with osmo-dev and therefore build and run it with testenv of
osmo-ttcn3-hacks.
The start script allows to run onomondo-eim without starting erlang by
hand. It was taken from osmo-s1gw repository and log-level option was
added.
The program name changed from 'onomondo_eim_release' to 'onomodo-eim'.
Related: SYS#8100
Change-Id: I4f038c0901c23cbe18ef62eb546e264d0b924cc7
---
A Makefile
A contrib/onomondo-eim.sh
M rebar.config
3 files changed, 143 insertions(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..9ca1dee
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,35 @@
+# where rebar3 stores build output
+REBAR_BASE_DIR ?= _build
+# config file used by 'run' and 'shell'
+CONFIG ?= config/sys.config
+# directory paths for 'install'
+BINDIR ?= /usr/bin
+LIBDIR ?= /usr/lib
+CONFDIR ?= /etc/osmocom
+
+all: build
+
+GEN_FILES = src/*
+
+build: $(GEN_FILES)
+ rebar3 compile
+
+release: $(GEN_FILES)
+ rebar3 release
+
+run: shell
+
+shell: build
+ rebar3 shell --config $(CONFIG)
+
+install: release
+ install -d $(DESTDIR)$(LIBDIR)
+ cp -r $(REBAR_BASE_DIR)/default/rel/onomondo-eim $(DESTDIR)$(LIBDIR)/
+ install -Dm0755 contrib/onomondo-eim.sh \
+ $(DESTDIR)$(BINDIR)/onomondo-eim
+ install -Dm0644 config/sys.config \
+ $(DESTDIR)$(CONFDIR)/onomondo-eim.config
+
+clean:
+ rebar3 clean
+ rm -rf $(REBAR_BASE_DIR)
diff --git a/contrib/onomondo-eim.sh b/contrib/onomondo-eim.sh
new file mode 100755
index 0000000..3252610
--- /dev/null
+++ b/contrib/onomondo-eim.sh
@@ -0,0 +1,107 @@
+#!/bin/sh -e
+
+# Simple boot script for Erlang/OTP releases that can be used in systemd unit files.
+#
+# Copyright 2025 by sysmocom - s.f.m.c. GmbH <info@sysmocom.de>
+# Author: Vadim Yanitskiy <vyanitskiy@sysmocom.de>
+#
+# SPDX-License-Identifier: MPL-2.0
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+APP_NAME=onomondo-eim
+
+ROOTDIR=${ROOTDIR:-"/usr/lib/${APP_NAME}"}
+CONFIG="/etc/osmocom/${APP_NAME}.config"
+COOKIE="${APP_NAME}"
+NODE_NAME="${APP_NAME}@$(uname -n)"
+ERL_SHELL="-noshell -noinput"
+LOG_LEVEL="notice"
+
+print_usage() {
+ echo "Usage: $0 [-s] [-r ROOTDIR] [-c CONFIG] [-C COOKIE] [-n NAME@HOST] [-l LOG_LEVEL]"
+}
+
+print_help() {
+ echo " -h This message"
+ echo " -s Enable interactive shell"
+ echo " -r Application's root directory (default: ${ROOTDIR})"
+ echo " -c Config file path (default: ${CONFIG})"
+ echo " -C Erlang node cookie (default: ${COOKIE})"
+ echo " -n Erlang node name (default: ${NODE_NAME})"
+ echo " -l Logger level (default: ${LOG_LEVEL})"
+}
+
+# Parse command line options, if any
+while getopts "c:C:hn:r:sl:" opt; do
+ case "$opt" in
+ c)
+ CONFIG="$OPTARG"
+ ;;
+ C)
+ COOKIE="$OPTARG"
+ ;;
+ n)
+ NODE_NAME="$OPTARG"
+ ;;
+ r)
+ ROOTDIR=$(realpath "$OPTARG")
+ ;;
+ s)
+ ERL_SHELL="-shell"
+ ;;
+ l)
+ LOG_LEVEL="$OPTARG"
+ ;;
+ h)
+ print_usage
+ print_help
+ exit 1
+ ;;
+ *)
+ print_usage
+ exit 1
+ ;;
+ esac
+done
+
+# Make sure that the application's root directory exists
+if [ ! -d "${ROOTDIR}" ]; then
+ echo "Error: ROOTDIR=${ROOTDIR} does not exist"
+ echo "Please specify the root directory using '-r' or via the environment"
+ exit 1
+fi
+
+# Determine the ERTS directory path (if not set)
+if [ -z "${ERTS_DIR}" ]; then
+ # Parse the ERTS version from rebar3-generated bootstrap script
+ ERTS_VSN=$(grep "^ERTS_VSN=" ${ROOTDIR}/bin/${APP_NAME} | cut -d'"' -f2)
+ ERTS_DIR=${ERTS_DIR:-"${ROOTDIR}/erts-${ERTS_VSN}"}
+fi
+
+# Determine the release directory path (if not set)
+if [ -z "${REL_DIR}" ]; then
+ # Parse the release version from rebar3-generated bootstrap script
+ REL_VSN=$(grep "^REL_VSN=" ${ROOTDIR}/bin/${APP_NAME} | cut -d'"' -f2)
+ REL_DIR="${ROOTDIR}/releases/${REL_VSN}"
+fi
+
+# Determine the boot script name
+[ -f "${REL_DIR}/${APP_NAME}.boot" ] && BOOTFILE="${APP_NAME}" || BOOTFILE=start
+
+# erlexec requires BINDIR to be set
+export BINDIR="${ERTS_DIR}/bin"
+
+exec ${BINDIR}/erlexec \
+ +C multi_time_warp \
+ -boot "${REL_DIR}/${BOOTFILE}" \
+ -config "${CONFIG}" \
+ -setcookie "${COOKIE}" \
+ -sname "${NODE_NAME}" \
+ -mode embedded \
+ -kernel logger_level "${LOG_LEVEL}" \
+ ${ERL_SHELL}
+
+# vim:set ts=2 sw=2 et:
diff --git a/rebar.config b/rebar.config
index 43b3505..1380062 100644
--- a/rebar.config
+++ b/rebar.config
@@ -30,7 +30,7 @@
]}.
{relx, [
- {release, {onomondo_eim_release, {git, short}}, [onomondo_eim, sasl, runtime_tools]},
+ {release, {'onomondo-eim', {git, short}}, [onomondo_eim, sasl, runtime_tools]},
{dev_mode, false},
{include_erts, true},
{include_src, false},
To view, visit change 42972. To unsubscribe, or for help writing mail filters, visit settings.