Unverified Commit c994c7b7 authored by Tommaso Tocci's avatar Tommaso Tocci
Browse files

Add --version option to daemon cli

Daemon is now capable of providing version information through the
`--version` cli option.
parent da38dac8
Loading
Loading
Loading
Loading
+42 −1
Original line number Diff line number Diff line
cmake_minimum_required(VERSION 3.6)
project(GekkoFS)

project(
    GekkoFS
    VERSION 0.3.1
)


if(NOT CMAKE_COMPILER_IS_GNUCC)
    message(FATAL_ERROR "The choosen C compiler is not gcc and is not supported")
@@ -25,6 +30,41 @@ set(CMAKE_CXX_FLAGS_MEMCHECK "${WARNINGS_FLAGS} -g -O0 -fsanitize=address -fno-o
set(CMAKE_CXX_FLAGS_MAINTAINER "${WARNINGS_FLAGS} -g -O0 -pg -no-pie")
mark_as_advanced(CMAKE_CXX_FLAGS_MAINTAINER)

# Project version
set(GIT_VERSION_FOUND FALSE)
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git)
    find_package(Git)
    if(Git_FOUND)
        execute_process(COMMAND /bin/bash -c "${GIT_EXECUTABLE} describe --tags --match='v*.*.*' --long --dirty"
                        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
                        RESULT_VARIABLE GIT_RET
                        OUTPUT_VARIABLE GIT_VERSION
                        ERROR_VARIABLE GIT_ERR
                        OUTPUT_STRIP_TRAILING_WHITESPACE
                        )
        if("${GIT_RET}" STREQUAL "0")
            string(REGEX MATCH
                   "^v([0-9]+)\.([0-9]+)\.([0-9]+)-([0-9]+)-(.*)$"
                   DROP ${GIT_VERSION})
            set(PROJECT_VERSION_MAJOR ${CMAKE_MATCH_1})
            set(PROJECT_VERSION_MINOR ${CMAKE_MATCH_2})
            set(PROJECT_VERSION_PATCH ${CMAKE_MATCH_3})
            set(GKFS_COMMIT_GAP ${CMAKE_MATCH_4})
            set(GKFS_COMMIT_HASH ${CMAKE_MATCH_5})
            set(PROJECT_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}-snapshot+${GKFS_COMMIT_GAP}-${GKFS_COMMIT_HASH}")
            set(GIT_VERSION_FOUND TRUE)
        else()
            message(WARNING "Failed to run `git describe`: [${GIT_RET}] '${GIT_ERR}'")
        endif()
    endif()
endif()
message(STATUS "Project version: ${PROJECT_VERSION}")
set(GKFS_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
set(GKFS_VERSION_MINOR ${PROJECT_VERSION_MINOR})
set(GKFS_VERSION_PATCH ${PROJECT_VERSION_PATCH})
set(GKFS_VERSION_STRING ${PROJECT_VERSION})
configure_file(include/version.hpp.in include/version.hpp)

set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake" ${CMAKE_MODULE_PATH})

set(CMAKE_EXPORT_COMPILE_COMMANDS 0)
@@ -114,6 +154,7 @@ set(INCLUDE_DIR "${CMAKE_SOURCE_DIR}/include")
# define include directories that are relevant for all targets
include_directories(
    ${INCLUDE_DIR}
    ${CMAKE_BINARY_DIR}/include
)

# Global components

include/version.hpp.in

0 → 100644
+9 −0
Original line number Diff line number Diff line
#ifndef __GKFS_VERSION_HPP
#define __GKFS_VERSION_HPP

#define GKFS_VERSION_MAJOR  @GKFS_VERSION_MAJOR@
#define GKFS_VERSION_MINOR  @GKFS_VERSION_MINOR@
#define GKFS_VERSION_PATCH  @GKFS_VERSION_PATCH@
#define GKFS_VERSION_STRING "@GKFS_VERSION_STRING@"

#endif /* __GKFS_VERSION_HPP */
+1 −0
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@ set(DAEMON_SRC
    handler/h_preload.cpp
    )
set(DAEMON_HEADERS
    ../../include/version.hpp
    ../../include/global/configure.hpp
    ../../include/global/global_defs.hpp
    ../../include/global/global_func.hpp
+14 −1
Original line number Diff line number Diff line

#include <daemon/main.hpp>
#include "version.hpp"
#include <global/log_util.hpp>
#include <global/rpc/rpc_types.hpp>
#include <global/rpc/rpc_utils.hpp>
@@ -345,7 +346,8 @@ int main(int argc, const char* argv[]) {
            ("hostfile", po::value<string>(), "Path to the hosts_file for all fs participants")
            ("hosts,h", po::value<string>(), "Comma separated list of hosts_ for all fs participants")
            ("hostname-suffix,s", po::value<string>()->default_value(""), "Suffix that is added to each given host. Consult /etc/hosts for allowed suffixes")
            ("lookup-file,k", po::value<string>(), "Shared file used by deamons to register their enpoints. (Needs to be on a shared filesystem)");
            ("lookup-file,k", po::value<string>(), "Shared file used by deamons to register their enpoints. (Needs to be on a shared filesystem)")
            ("version,h", "print version and exit");
    po::variables_map vm;
    po::store(po::parse_command_line(argc, argv, desc), vm);

@@ -354,6 +356,17 @@ int main(int argc, const char* argv[]) {
        return 1;
    }

    if (vm.count("version")) {
        cout << GKFS_VERSION_STRING << endl;
#ifndef NDEBUG
        cout << "Debug: ON" << endl;
#else
        cout << "Debug: OFF" << endl;
#endif
        cout << "RPC protocol: " << RPC_PROTOCOL << endl;
        return 0;
    }

    try {
        po::notify(vm);
    } catch (po::required_option& e) {