gnome: print client version and git ref in log
Refs #75395
Change-Id: I8b53f19f4c3015a7e2497f6904bd1c4ce76d145f
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a876fa6..ec86520 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -142,6 +142,24 @@
ENDIF()
+# get git version on every build
+SET(GIT_REVISION_INPUT_FILE ${PROJECT_SOURCE_DIR}/src/revision.h.in)
+SET(GIT_REVISION_OUTPUT_FILE ${PROJECT_BINARY_DIR}/revision.h)
+
+ADD_CUSTOM_TARGET(
+ git_revision ALL
+ COMMAND ${CMAKE_COMMAND}
+ -DGIT_REVISION_INPUT_FILE=${GIT_REVISION_INPUT_FILE}
+ -DGIT_REVISION_OUTPUT_FILE=${GIT_REVISION_OUTPUT_FILE}
+ -P ${CMAKE_SOURCE_DIR}/cmake/GitRevision.cmake
+ COMMENT "generating ${GIT_REVISION_OUTPUT_FILE}"
+)
+
+ADD_CUSTOM_COMMAND(
+ OUTPUT ${GIT_REVISION_OUTPUT_FILE}
+ DEPENDS git_revision
+)
+
# source files to compile
SET( SRC_FILES
src/main.cpp
@@ -210,6 +228,7 @@
src/video/videowindow.cpp
src/utils/files.h
src/utils/files.cpp
+ ${GIT_REVISION_OUTPUT_FILE}
)
# compile glib resource files to c code
diff --git a/cmake/GitRevision.cmake b/cmake/GitRevision.cmake
new file mode 100644
index 0000000..fe0474b
--- /dev/null
+++ b/cmake/GitRevision.cmake
@@ -0,0 +1,51 @@
+# Copyright (C) 2015 Savoir-faire Linux Inc.
+# Author: Stepan Salenikovich <stepan.salenikovich@savoirfairelinux.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Additional permission under GNU GPL version 3 section 7:
+#
+# If you modify this program, or any covered work, by linking or
+# combining it with the OpenSSL project's OpenSSL library (or a
+# modified version of that library), containing parts covered by the
+# terms of the OpenSSL or SSLeay licenses, Savoir-faire Linux Inc.
+# grants you additional permission to convey the resulting work.
+# Corresponding Source for a non-source form of such a combination
+# shall include the source code for the parts of OpenSSL used as well
+# as that of the covered work.
+#
+
+FIND_PACKAGE(Git)
+
+IF(GIT_FOUND)
+ EXECUTE_PROCESS(
+ COMMAND ${GIT_EXECUTABLE} rev-parse --verify HEAD
+ OUTPUT_VARIABLE RING_CLIENT_REVISION
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+ENDIF()
+
+IF( "${RING_CLIENT_REVISION}" STREQUAL "")
+ SET(RING_CLIENT_REVISION "unknown")
+ENDIF()
+
+MESSAGE( STATUS "GIT_REVISION_INPUT_FILE: " ${GIT_REVISION_INPUT_FILE} )
+MESSAGE( STATUS "GIT_REVISION_OUTPUT_FILE: " ${GIT_REVISION_OUTPUT_FILE} )
+
+# generate revision.h file
+CONFIGURE_FILE (
+ ${GIT_REVISION_INPUT_FILE}
+ ${GIT_REVISION_OUTPUT_FILE}
+)
diff --git a/src/revision.h.in b/src/revision.h.in
new file mode 100644
index 0000000..071578e
--- /dev/null
+++ b/src/revision.h.in
@@ -0,0 +1,3 @@
+/* cmake will generate revision.h with a define containing the git revision (if found) */
+
+#define RING_CLIENT_REVISION "@RING_CLIENT_REVISION@"
diff --git a/src/ring_client.cpp b/src/ring_client.cpp
index 1ee4711..6b28752 100644
--- a/src/ring_client.cpp
+++ b/src/ring_client.cpp
@@ -54,6 +54,7 @@
#include "ringnotify.h"
#include "config.h"
#include "utils/files.h"
+#include "revision.h"
struct _RingClientClass
{
@@ -188,6 +189,9 @@
RingClient *client = RING_CLIENT(app);
RingClientPrivate *priv = RING_CLIENT_GET_PRIVATE(client);
+ g_message("Ring GNOME client version: %d.%d.%d", VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH);
+ g_message("git ref: %s", RING_CLIENT_REVISION);
+
/* make sure that the system corresponds to the autostart setting */
autostart_symlink(g_settings_get_boolean(priv->settings, "start-on-login"));
g_signal_connect(priv->settings, "changed::start-on-login", G_CALLBACK(autostart_toggled), NULL);