From 5954e46340c4851d40aecece4622f5082398ad66 Mon Sep 17 00:00:00 2001 From: Toni Uhlig Date: Mon, 7 Jun 2021 16:22:49 +0200 Subject: Build system cleanup / cosmetics. * libnDPI submodule update Signed-off-by: Toni Uhlig --- .gitignore | 3 +++ .travis.yml | 4 ++-- CMakeLists.txt | 26 +++++++----------------- daemon.sh | 44 ---------------------------------------- libnDPI | 2 +- nDPIsrvd.c | 4 ++++ scripts/daemon.sh | 42 ++++++++++++++++++++++++++++++++++++++ scripts/get-and-build-libndpi.sh | 23 +++++++++++++++++++++ 8 files changed, 82 insertions(+), 66 deletions(-) delete mode 100755 daemon.sh create mode 100755 scripts/daemon.sh create mode 100755 scripts/get-and-build-libndpi.sh diff --git a/.gitignore b/.gitignore index 83d073eb9..42c18c116 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,6 @@ __pycache__ # go related *.sum + +# lockfiles generated by some shell scripts +*.lock diff --git a/.travis.yml b/.travis.yml index fd43b0a91..824c2ddf0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,5 +14,5 @@ script: - ./build/nDPId-test || test $? -eq 1 - ./build/nDPId -h || test $? -eq 1 # dameon start/stop test -- ./daemon.sh ./build/nDPId ./build/nDPIsrvd -- ./daemon.sh ./build/nDPId ./build/nDPIsrvd +- ./scripts/daemon.sh ./build/nDPId ./build/nDPIsrvd +- ./scripts/daemon.sh ./build/nDPId ./build/nDPIsrvd diff --git a/CMakeLists.txt b/CMakeLists.txt index 955ea017a..6753b2277 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,21 +3,6 @@ project(nDPId C) set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) find_package(PkgConfig REQUIRED) -function(initialize_submodule DIRECTORY) - if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${DIRECTORY}/.git) - find_package(Git QUIET REQUIRED) - message(STATUS "${CMAKE_CURRENT_SOURCE_DIR}/${DIRECTORY}/.git does not exist. " - "Initializing ${DIRECTORY} submodule ...") - execute_process(COMMAND ${GIT_EXECUTABLE} submodule update --init ${DIRECTORY} - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - RESULT_VARIABLE GIT_EXIT_CODE) - if(NOT GIT_EXIT_CODE EQUAL "0") - message(FATAL_ERROR "${GIT_EXECUTABLE} submodule update --init ${DIRECTORY} " - "failed with exit code ${GIT_EXIT_CODE}, please checkout submodules") - endif() - endif() -endfunction(initialize_submodule) - option(ENABLE_SANITIZER "Enable ASAN/LSAN/UBSAN." OFF) option(ENABLE_SANITIZER_THREAD "Enable TSAN (does not work together with ASAN)." OFF) option(ENABLE_MEMORY_PROFILING "Enable dynamic memory tracking." OFF) @@ -73,17 +58,20 @@ if(ENABLE_SANITIZER_THREAD) endif() if(STATIC_LIBNDPI_INSTALLDIR STREQUAL "" AND BUILD_NDPI) - initialize_submodule(libnDPI) include(ExternalProject) ExternalProject_Add( libnDPI SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/libnDPI - CONFIGURE_COMMAND env CC=${CMAKE_C_COMPILER} CFLAGS=${CMAKE_C_FLAGS} LDFLAGS=${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_CURRENT_SOURCE_DIR}/libnDPI/autogen.sh - --prefix=${CMAKE_CURRENT_BINARY_DIR}/libnDPI - --with-only-libndpi + CONFIGURE_COMMAND env CC=${CMAKE_C_COMPILER} CFLAGS=${CMAKE_C_FLAGS} LDFLAGS=${CMAKE_EXE_LINKER_FLAGS} + MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM} DEST_INSTALL=${CMAKE_BINARY_DIR}/libnDPI + ${CMAKE_CURRENT_SOURCE_DIR}/scripts/get-and-build-libndpi.sh BUILD_COMMAND make BUILD_IN_SOURCE 1) + add_custom_target(clean-libnDPI + COMMAND rm -rf ${CMAKE_BINARY_DIR}/libnDPI ${CMAKE_BINARY_DIR}/libnDPI-prefix + ) + set(STATIC_LIBNDPI_INSTALLDIR "${CMAKE_BINARY_DIR}/libnDPI") add_dependencies(nDPId libnDPI) add_dependencies(nDPId-test libnDPI) diff --git a/daemon.sh b/daemon.sh deleted file mode 100755 index af062a702..000000000 --- a/daemon.sh +++ /dev/null @@ -1,44 +0,0 @@ -#!/usr/bin/env sh -# -# Simple nDPId/nDPIsrvd start/stop script for testing purposes. -# - -NUSER="nobody" -NSUFFIX="${NSUFFIX:-daemon-test}" - -if [ x"${1}" = x -o x"${2}" = x ]; then - printf '%s\n' "usage: ${0} [nDPId-path] [nDPIsrvd-path]" >&2 - printf '\n\t%s=%s\n' 'env NUSER' "${NUSER}" >&2 - printf '\t%s=%s\n' 'env NSUFFIX' "${NSUFFIX}" >&2 - exit 1 -fi - -if [ -r "/tmp/nDPId-${NSUFFIX}.pid" -o -r "/tmp/nDPIsrvd-${NSUFFIX}.pid" ]; then - nDPId_PID="$(cat "/tmp/nDPId-${NSUFFIX}.pid" 2>/dev/null)" - nDPIsrvd_PID="$(cat "/tmp/nDPIsrvd-${NSUFFIX}.pid" 2>/dev/null)" - - if [ x"${nDPId_PID}" != x ]; then - sudo kill "${nDPId_PID}" - else - printf '%s\n' "${1} not started .." >&2 - fi - - if [ x"${nDPIsrvd_PID}" != x ]; then - kill "${nDPIsrvd_PID}" - else - printf '%s\n' "${2} not started .." >&2 - fi - - sudo rm -f "/tmp/nDPId-${NSUFFIX}.pid" - rm -f "/tmp/nDPIsrvd-${NSUFFIX}.pid" - printf '%s\n' "daemons stopped" >&2 -else - set -x - ${2} -p "/tmp/nDPIsrvd-${NSUFFIX}.pid" -c "/tmp/nDPIsrvd-${NSUFFIX}-collector.sock" -s "/tmp/nDPIsrvd-${NSUFFIX}-distributor.sock" -d - sudo chgrp "$(id -n -g "${NUSER}")" "/tmp/nDPIsrvd-${NSUFFIX}-collector.sock" - sudo chmod g+w "/tmp/nDPIsrvd-${NSUFFIX}-collector.sock" - sudo ${1} -p "/tmp/nDPId-${NSUFFIX}.pid" -c "/tmp/nDPIsrvd-${NSUFFIX}-collector.sock" -d -u "${NUSER}" - set +x - printf '%s\n' "daemons started" >&2 - printf '%s\n' "You may now run examples e.g.: ./examples/py-flow-info/flow-info.py --unix /tmp/nDPIsrvd-${NSUFFIX}-distributor.sock" -fi diff --git a/libnDPI b/libnDPI index c4084ca3c..2af7b33de 160000 --- a/libnDPI +++ b/libnDPI @@ -1 +1 @@ -Subproject commit c4084ca3c7b3657659aff624158a9c4f5710f57d +Subproject commit 2af7b33de07fac404b2efb6d6b3189664a21d50e diff --git a/nDPIsrvd.c b/nDPIsrvd.c index 7e5f80a9e..d16768ed9 100644 --- a/nDPIsrvd.c +++ b/nDPIsrvd.c @@ -905,6 +905,10 @@ int main(int argc, char ** argv) signal(SIGPIPE, SIG_IGN); + signal(SIGINT, SIG_IGN); + signal(SIGTERM, SIG_IGN); + signal(SIGQUIT, SIG_IGN); + epollfd = setup_event_queue(); if (epollfd < 0) { diff --git a/scripts/daemon.sh b/scripts/daemon.sh new file mode 100755 index 000000000..86e4d5aea --- /dev/null +++ b/scripts/daemon.sh @@ -0,0 +1,42 @@ +#!/usr/bin/env sh +# +# Simple nDPId/nDPIsrvd start/stop script for testing purposes. +# + +NUSER="nobody" +NSUFFIX="${NSUFFIX:-daemon-test}" + +if [ x"${1}" = x -o x"${2}" = x ]; then + printf '%s\n' "usage: ${0} [nDPId-path] [nDPIsrvd-path]" >&2 + printf '\n\t%s=%s\n' 'env NUSER' "${NUSER}" >&2 + printf '\t%s=%s\n' 'env NSUFFIX' "${NSUFFIX}" >&2 + exit 1 +fi + +if [ -r "/tmp/nDPId-${NSUFFIX}.pid" -o -r "/tmp/nDPIsrvd-${NSUFFIX}.pid" ]; then + nDPId_PID="$(cat "/tmp/nDPId-${NSUFFIX}.pid" 2>/dev/null)" + nDPIsrvd_PID="$(cat "/tmp/nDPIsrvd-${NSUFFIX}.pid" 2>/dev/null)" + + if [ x"${nDPId_PID}" != x ]; then + sudo kill "${nDPId_PID}" + else + printf '%s\n' "${1} not started .." >&2 + fi + + if [ x"${nDPIsrvd_PID}" != x ]; then + kill "${nDPIsrvd_PID}" + else + printf '%s\n' "${2} not started .." >&2 + fi + + printf '%s\n' "daemons stopped" >&2 +else + set -x + ${2} -p "/tmp/nDPIsrvd-${NSUFFIX}.pid" -c "/tmp/nDPIsrvd-${NSUFFIX}-collector.sock" -s "/tmp/nDPIsrvd-${NSUFFIX}-distributor.sock" -d + sudo chgrp "$(id -n -g "${NUSER}")" "/tmp/nDPIsrvd-${NSUFFIX}-collector.sock" + sudo chmod g+w "/tmp/nDPIsrvd-${NSUFFIX}-collector.sock" + sudo ${1} -p "/tmp/nDPId-${NSUFFIX}.pid" -c "/tmp/nDPIsrvd-${NSUFFIX}-collector.sock" -d -u "${NUSER}" + set +x + printf '%s\n' "daemons started" >&2 + printf '%s\n' "You may now run examples e.g.: $(realpath --relative-to="$(pwd)" $(dirname "${0}")/../examples/py-flow-info/flow-info.py) --unix /tmp/nDPIsrvd-${NSUFFIX}-distributor.sock" +fi diff --git a/scripts/get-and-build-libndpi.sh b/scripts/get-and-build-libndpi.sh new file mode 100755 index 000000000..df0ab2b2c --- /dev/null +++ b/scripts/get-and-build-libndpi.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +set -e +set -x + +LOCKFILE="$(realpath "${0}").lock" +touch "${LOCKFILE}" +exec 42< "${LOCKFILE}" +flock -x -n 42 || { + printf '%s\n' "Could not aquire file lock for ${0}. Already running instance?" >&2; + exit 1; +} + +cd "$(dirname "${0}")/.." +git submodule update --init ./libnDPI + +cd ./libnDPI +DEST_INSTALL="${DEST_INSTALL:-$(realpath ./install)}" +MAKE_PROGRAM="${MAKE_PROGRAM:-make -j4}" +./autogen.sh --prefix="${DEST_INSTALL}" --with-only-libndpi +${MAKE_PROGRAM} install + +rm -f "${LOCKFILE}" -- cgit v1.2.3