diff --git a/.gitignore b/.gitignore index 3748015d..28e639f4 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,4 @@ TODO plugins/ *_key.txt *_fingerprints.txt +src/gitversion.c diff --git a/Makefile.am b/Makefile.am index fae529e9..ed646212 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,34 +1,21 @@ -bin_PROGRAMS = profanity -profanity_SOURCES = \ - src/contact.c src/contact.h src/log.c src/common.c \ - src/log.h src/profanity.c src/common.h \ - src/main.c src/profanity.h src/chat_session.c \ - src/chat_session.h src/muc.c src/muc.h src/jid.h src/jid.c \ - src/resource.c src/resource.h \ - src/xmpp/xmpp.h src/xmpp/capabilities.c src/xmpp/connection.c \ - src/xmpp/iq.c src/xmpp/message.c src/xmpp/presence.c src/xmpp/stanza.c \ - src/xmpp/stanza.h src/xmpp/message.h src/xmpp/iq.h src/xmpp/presence.h \ - src/xmpp/capabilities.h src/xmpp/connection.h \ - src/xmpp/roster.c src/xmpp/roster.h \ - src/xmpp/bookmark.c src/xmpp/bookmark.h \ - src/ui/ui.h src/ui/window.c src/ui/window.h src/ui/core.c \ - src/ui/titlebar.c src/ui/statusbar.c src/ui/inputwin.c \ - src/ui/console.c src/ui/notifier.c src/ui/notifier.h \ - src/ui/windows.c src/ui/windows.h \ - src/command/command.h src/command/command.c src/command/history.c \ - src/command/history.h src/tools/parser.c \ - src/tools/parser.h \ - src/tools/autocomplete.c src/tools/autocomplete.h \ - src/tools/history.c src/tools/history.h \ - src/tools/tinyurl.c src/tools/tinyurl.h \ - src/config/accounts.c src/config/accounts.h \ - src/config/preferences.c src/config/preferences.h \ - src/config/theme.c src/config/theme.h \ - src/otr.c src/otr.h +if INCLUDE_GIT_VERSION -TESTS = tests/testsuite -check_PROGRAMS = tests/testsuite -tests_testsuite_SOURCES = \ +FORCE: + +src/gitversion.c: .git/HEAD .git/index FORCE + rm -f src/gitversion.c src/gitversion.o + echo "#ifndef PROF_GIT_BRANCH" >> $@ + echo "#define PROF_GIT_BRANCH \"$(shell git rev-parse --symbolic-full-name --abbrev-ref HEAD)\"" >> $@ + echo "#endif" >> $@ + echo "#ifndef PROF_GIT_REVISION" >> $@ + echo "#define PROF_GIT_REVISION \"$(shell git log --pretty=format:'%h' -n 1)\"" >> $@ + echo "#endif" >> $@ + +clean-local: + rm -f src/gitversion.c src/gitversion.o +endif + +core_sources = \ src/contact.c src/contact.h src/log.c src/common.c \ src/log.h src/profanity.c src/common.h \ src/profanity.h src/chat_session.c \ @@ -53,9 +40,30 @@ tests_testsuite_SOURCES = \ src/config/accounts.c src/config/accounts.h \ src/config/preferences.c src/config/preferences.h \ src/config/theme.c src/config/theme.h \ + src/otr.c src/otr.h + +test_sources = \ tests/test_roster.c tests/test_common.c tests/test_history.c \ tests/test_autocomplete.c tests/testsuite.c tests/test_parser.c \ tests/test_jid.c + +main_source = src/main.c + +git_sources = \ + src/gitversion.c + +if INCLUDE_GIT_VERSION +with_git_sources = $(git_sources) $(core_sources) +else +with_git_sources = $(core_sources) +endif + +bin_PROGRAMS = profanity +profanity_SOURCES = $(with_git_sources) $(main_source) + +TESTS = tests/testsuite +check_PROGRAMS = tests/testsuite +tests_testsuite_SOURCES = $(with_git_sources) $(test_sources) tests_testsuite_LDADD = -lheadunit -lstdc++ man_MANS = docs/profanity.1 diff --git a/configure.ac b/configure.ac index a147ae44..282f0573 100644 --- a/configure.ac +++ b/configure.ac @@ -4,6 +4,15 @@ AC_PREREQ([2.65]) AC_INIT([profanity], [0.4.0], [boothj5web@gmail.com]) PACKAGE_STATUS="development" + +## get git branch and revision if in development +if test "x$PACKAGE_STATUS" = xdevelopment; then + AM_CONDITIONAL([INCLUDE_GIT_VERSION], [true]) + AC_DEFINE_UNQUOTED([HAVE_GIT_VERSION], [1], [Include git info]) +else + AM_CONDITIONAL([INCLUDE_GIT_VERSION], [false]) +fi + AC_DEFINE_UNQUOTED([PACKAGE_STATUS], ["$PACKAGE_STATUS"], [Status of this build]) AC_CONFIG_SRCDIR([src/main.c]) AC_CONFIG_HEADERS([src/config.h]) diff --git a/src/main.c b/src/main.c index 99f71351..253c9237 100644 --- a/src/main.c +++ b/src/main.c @@ -19,10 +19,13 @@ * along with Profanity. If not, see . * */ - +#include #include #include "config.h" +#ifdef HAVE_GIT_VERSION +#include "gitversion.c" +#endif #include "profanity.h" @@ -55,7 +58,17 @@ main(int argc, char **argv) g_option_context_free(context); if (version == TRUE) { - g_print("Profanity, version %s\n", PACKAGE_VERSION); + + if (strcmp(PACKAGE_STATUS, "development") == 0) { +#ifdef HAVE_GIT_VERSION + g_print("Profanity, version %sdev.%s.%s\n", PACKAGE_VERSION, PROF_GIT_BRANCH, PROF_GIT_REVISION); +#else + g_print("Profanity, version %sdev\n", PACKAGE_VERSION); +#endif + } else { + g_print("Profanity, version %s\n", PACKAGE_VERSION); + } + g_print("Copyright (C) 2012, 2013 James Booth <%s>.\n", PACKAGE_BUGREPORT); g_print("License GPLv3+: GNU GPL version 3 or later \n"); g_print("\n"); diff --git a/src/profanity.c b/src/profanity.c index 4ac3ca98..3aa75538 100644 --- a/src/profanity.c +++ b/src/profanity.c @@ -21,6 +21,10 @@ */ #include "config.h" +#ifdef HAVE_GIT_VERSION +#include "gitversion.c" +#endif + #include #include #include @@ -618,7 +622,11 @@ _init(const int disable_tls, char *log_level) log_level_t prof_log_level = log_level_from_string(log_level); log_init(prof_log_level); if (strcmp(PACKAGE_STATUS, "development") == 0) { - log_info("Starting Profanity (%sdev)...", PACKAGE_VERSION); +#ifdef HAVE_GIT_VERSION + log_info("Starting Profanity (%sdev.%s.%s)...", PACKAGE_VERSION, PROF_GIT_BRANCH, PROF_GIT_REVISION); +#else + log_info("Starting Profanity (%sdev)...", PACKAGE_VERSION); +#endif } else { log_info("Starting Profanity (%s)...", PACKAGE_VERSION); } diff --git a/src/ui/console.c b/src/ui/console.c index fe15d73f..17e97ca3 100644 --- a/src/ui/console.c +++ b/src/ui/console.c @@ -40,6 +40,10 @@ #include "xmpp/xmpp.h" #include "xmpp/bookmark.h" +#ifdef HAVE_GIT_VERSION +#include "gitversion.c" +#endif + static void _cons_splash_logo(void); void _show_roster_contacts(GSList *list, gboolean show_groups); @@ -167,7 +171,11 @@ cons_about(void) win_print_time(console, '-'); if (strcmp(PACKAGE_STATUS, "development") == 0) { +#ifdef HAVE_GIT_VERSION + wprintw(console->win, "Welcome to Profanity, version %sdev.%s.%s\n", PACKAGE_VERSION, PROF_GIT_BRANCH, PROF_GIT_REVISION); +#else wprintw(console->win, "Welcome to Profanity, version %sdev\n", PACKAGE_VERSION); +#endif } else { wprintw(console->win, "Welcome to Profanity, version %s\n", PACKAGE_VERSION); } @@ -1395,7 +1403,11 @@ _cons_splash_logo(void) wprintw(console->win, "\n"); win_print_time(console, '-'); if (strcmp(PACKAGE_STATUS, "development") == 0) { +#ifdef HAVE_GIT_VERSION + wprintw(console->win, "Version %sdev.%s.%s\n", PACKAGE_VERSION, PROF_GIT_BRANCH, PROF_GIT_REVISION); +#else wprintw(console->win, "Version %sdev\n", PACKAGE_VERSION); +#endif } else { wprintw(console->win, "Version %s\n", PACKAGE_VERSION); } diff --git a/src/ui/core.c b/src/ui/core.c index 16c1d2ff..6b415a2b 100644 --- a/src/ui/core.c +++ b/src/ui/core.c @@ -22,6 +22,10 @@ #include "config.h" +#ifdef HAVE_GIT_VERSION +#include "gitversion.c" +#endif + #include #include #ifdef HAVE_LIBXSS @@ -1375,7 +1379,14 @@ _ui_draw_win_title(void) g_string_append(version_str, " "); g_string_append(version_str, PACKAGE_VERSION); if (strcmp(PACKAGE_STATUS, "development") == 0) { +#ifdef HAVE_GIT_VERSION + g_string_append(version_str, "dev."); + g_string_append(version_str, PROF_GIT_BRANCH); + g_string_append(version_str, "."); + g_string_append(version_str, PROF_GIT_REVISION); +#else g_string_append(version_str, "dev"); +#endif } } diff --git a/src/xmpp/capabilities.c b/src/xmpp/capabilities.c index f38a2749..658be124 100644 --- a/src/xmpp/capabilities.c +++ b/src/xmpp/capabilities.c @@ -22,6 +22,10 @@ #include "config.h" +#ifdef HAVE_GIT_VERSION +#include "gitversion.c" +#endif + #include #include @@ -238,7 +242,14 @@ caps_create_query_response_stanza(xmpp_ctx_t * const ctx) GString *name_str = g_string_new("Profanity "); g_string_append(name_str, PACKAGE_VERSION); if (strcmp(PACKAGE_STATUS, "development") == 0) { +#ifdef HAVE_GIT_VERSION + g_string_append(name_str, "dev."); + g_string_append(name_str, PROF_GIT_BRANCH); + g_string_append(name_str, "."); + g_string_append(name_str, PROF_GIT_REVISION); +#else g_string_append(name_str, "dev"); +#endif } xmpp_stanza_set_attribute(identity, "name", name_str->str); diff --git a/src/xmpp/iq.c b/src/xmpp/iq.c index 8eb4d99e..1ddfcb34 100644 --- a/src/xmpp/iq.c +++ b/src/xmpp/iq.c @@ -22,6 +22,10 @@ #include "config.h" +#ifdef HAVE_GIT_VERSION +#include "gitversion.c" +#endif + #include #include @@ -236,7 +240,14 @@ _iq_handle_version_get(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, xmpp_stanza_t *version_txt = xmpp_stanza_new(ctx); GString *version_str = g_string_new(PACKAGE_VERSION); if (strcmp(PACKAGE_STATUS, "development") == 0) { +#ifdef HAVE_GIT_VERSION + g_string_append(version_str, "dev."); + g_string_append(version_str, PROF_GIT_BRANCH); + g_string_append(version_str, "."); + g_string_append(version_str, PROF_GIT_REVISION); +#else g_string_append(version_str, "dev"); +#endif } xmpp_stanza_set_text(version_txt, version_str->str); xmpp_stanza_add_child(version, version_txt);