[sr-dev] git:master: core: move version strings to a separate file

Andrei Pelinescu-Onciul andrei at iptel.org
Tue Jul 13 21:07:00 CEST 2010


Module: sip-router
Branch: master
Commit: 1ef55a0915c675ada0cecf7c7b6e0bb0d72f4da7
URL:    http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=1ef55a0915c675ada0cecf7c7b6e0bb0d72f4da7

Author: Andrei Pelinescu-Onciul <andrei at iptel.org>
Committer: Andrei Pelinescu-Onciul <andrei at iptel.org>
Date:   Tue Jul 13 19:59:26 2010 +0200

core: move version strings to a separate file

- moved version strings to variables (instead of macros) and in a
separate file (ver.c). This will require re-compiling only one
small file  and re-linking on version or repository changes (e.g.
new commit or local uncommitted changes), instead of recompiling
main.c and core_cmd.c.
- more detailed info about the repository state is now available via
 repo_hash (hash of the top commit) and repo_state (dirty or "").
- the core.version rpc reports now directly the version number
(complete with repository hash and state), without prefixing it
with "Server:", e.g.:
    ser 3.0.99-dev1 (i386/linux) dd9681-dirty
instead of
    Server: ser (3.0.99-dev1 (i386/freebsd)) d89437-dirty

---

 Makefile                |   11 ++++++++---
 core_cmd.c              |   12 +++++-------
 main.c                  |   40 ++++++++++++++++------------------------
 modules_k/kex/mi_core.c |   10 +++-------
 sr_module.h             |    2 +-
 ver.c                   |   46 ++++++++++++++++++++++++++++++++++++++++++++++
 ver.h                   |   43 +++++++++++++++++++++++++++++++++++++++++++
 version.h => ver_defs.h |    9 +++------
 8 files changed, 125 insertions(+), 48 deletions(-)

diff --git a/Makefile b/Makefile
index b3fa651..516b294 100644
--- a/Makefile
+++ b/Makefile
@@ -491,12 +491,11 @@ modules_search_path=$(subst $(space),:,$(strip\
 		#				$(addprefix $(modules_target),$(modules_dirs))))
 
 # special depends for main.o
-main.d main.o: autover.h
 main.o: DEFS+=-DMODS_DIR='"$(modules_search_path)"'
 
 
-#special depends for core_cmd.o
-core_cmd.d core_cmd.o: autover.h
+#special depends for ver.c
+ver.d ver.o: autover.h
 
 include Makefile.shared
 
@@ -564,10 +563,14 @@ repo_ver=$(shell  RV=`git rev-parse --verify --short=6 HEAD 2>/dev/null`;\
 							; git diff-index --name-only HEAD 2>/dev/null | \
 								grep -v Makefile`" &&\
 						RV="$$RV"-dirty; echo "$$RV")
+repo_hash=$(subst -dirty,,$(repo_ver))
+repo_state=$(patsubst %-dirty,dirty,$(repo_ver))
 autover_h_dep=.git $(filter-out $(auto_gen), $(sources)) cfg.y cfg.lex
 else
 # else if .git/ does not exist
 repo_ver=
+repo_hash="unknown"
+repo_state=
 autover_h_dep=
 endif
 
@@ -579,6 +582,8 @@ autover.h: $(autover_h_dep)
 	@echo " */" >>$@
 	@echo "" >>$@
 	@echo "#define REPO_VER \"$(repo_ver)\"" >>$@
+	@echo "#define REPO_HASH \"$(repo_hash)\"" >>$@
+	@echo "#define REPO_STATE \"$(repo_state)\"" >>$@
 
 .PHONY: all
 all: $(NAME) every-module
diff --git a/core_cmd.c b/core_cmd.c
index b049af9..589908d 100644
--- a/core_cmd.c
+++ b/core_cmd.c
@@ -20,18 +20,16 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
-/*!
- * \file
- * \brief SIP-router core :: 
- * \ingroup core
- * Module: \ref core
+/** core rpcs.
+ * @file core_cmd.c
+ * @ingroup core
  */
 
 
 #include <time.h>
 #include <sys/types.h>
 #include <signal.h>
-#include "autover.h"
+#include "ver.h"
 #include "mem/mem.h"
 #include "mem/shm_mem.h"
 #include "sr_module.h"
@@ -336,7 +334,7 @@ static const char* core_version_doc[] = {
 
 static void core_version(rpc_t* rpc, void* c)
 {
-	rpc->add(c, "s", SERVER_HDR " " REPO_VER );
+	rpc->add(c, "s", full_version);
 }
 
 
diff --git a/main.c b/main.c
index 7d28bcd..8f71731 100644
--- a/main.c
+++ b/main.c
@@ -73,23 +73,20 @@
  * 2008-08-08  sctp support (andrei)
  * 2008-08-19  -l support for mmultihomed addresses/addresses lists
  *                (e.g. -l (eth0, 1.2.3.4, foo.bar) ) (andrei)
- *  2010-04-19 added daemon_status_fd pipe to communicate the parent process with
-               the main process in daemonize mode, so the parent process can return
-               the proper exit status code (ibc)
+ *  2010-04-19 added daemon_status_fd pipe to communicate the parent process
+ *             with the main process in daemonize mode, so the parent process
+ *             can return the proper exit status code (ibc)
  */
 
-/*!
- * \file
- * \brief SIP-router core :: 
- * \ingroup core
- * Module: \ref core
+/** main file (init, daemonize, startup) 
+ * @file main.c
+ * @ingroup core
+ * Module: core
  */
 
-/*! \defgroup core SIP-router core
- *
- * This modules implements a SIP server with a module interface
- * for extendability.
+/*! @defgroup core SIP-router core
  *
+ * sip router core part.
  */
 
 #include <stdio.h>
@@ -190,8 +187,7 @@
 #ifdef DEBUG_DMALLOC
 #include <dmalloc.h>
 #endif
-#include "autover.h"
-#include "version.h"
+#include "ver.h"
 
 /* define SIG_DEBUG by default */
 #ifdef NO_SIG_DEBUG
@@ -200,10 +196,6 @@
 #define SIG_DEBUG
 #endif
 
-static char id[]="@(#) $Id$";
-static char* version=SER_FULL_VERSION " " REPO_VER;
-static char* flags=SER_COMPILE_FLAGS;
-char compiled[]= __TIME__ " " __DATE__ ;
 
 
 static char help_msg[]= "\
@@ -1688,7 +1680,7 @@ int main(int argc, char** argv)
 	opterr = 0;
 	while((c=getopt(argc,argv,options))!=-1) {
 		if (c == 'h' || (optarg && strcmp(optarg, "-h") == 0)) {
-			printf("version: %s\n", version);
+			printf("version: %s\n", full_version);
 			printf("%s",help_msg);
 			exit(0);
 			break;
@@ -1724,8 +1716,8 @@ int main(int argc, char** argv)
 					default_core_cfg.debug++;
 					break;
 			case 'V':
-					printf("version: %s\n", version);
-					printf("flags: %s\n", flags );
+					printf("version: %s\n", full_version);
+					printf("flags: %s\n", ver_flags );
 					print_ct_constants();
 #ifdef USE_SCTP
 					tmp=malloc(256);
@@ -1733,9 +1725,9 @@ int main(int argc, char** argv)
 						printf("sctp unsupported socket options: %s\n", tmp);
 					if (tmp) free(tmp);
 #endif
-					printf("%s\n",id);
-					printf("%s compiled on %s with %s\n", __FILE__,
-							compiled, COMPILER );
+					printf("id: %s\n", ver_id);
+					printf("compiled on %s with %s\n",
+							ver_compiled_time, ver_compiler );
 
 					exit(0);
 					break;
diff --git a/modules_k/kex/mi_core.c b/modules_k/kex/mi_core.c
index 157d9f4..241b0b6 100644
--- a/modules_k/kex/mi_core.c
+++ b/modules_k/kex/mi_core.c
@@ -47,7 +47,7 @@
 #include "../../pt.h"
 #include "../../mem/mem.h"
 #include "../../lib/kmi/mi.h"
-#include "../../version.h"
+#include "../../ver.h"
 #include "../../cfg/cfg.h"
 #include "../../cfg/cfg_ctx.h"
 
@@ -139,12 +139,8 @@ static struct mi_root *mi_version(struct mi_root *cmd, void *param)
 	if (node==0) 
 		goto error;
 
-#ifndef KAMAILIO_COMPILE_FLAGS
-#define KAMAILIO_COMPILE_FLAGS SER_COMPILE_FLAGS
-#endif
-
-	node = add_mi_node_child( rpl, 0, MI_SSTR("Flags"), KAMAILIO_COMPILE_FLAGS,
-			sizeof(KAMAILIO_COMPILE_FLAGS)-1);
+	node = add_mi_node_child( rpl, 0, MI_SSTR("Flags"), (char*)ver_flags,
+				strlen(ver_flags));
 	if (node==0) 
 		goto error;	
 	
diff --git a/sr_module.h b/sr_module.h
index b055c88..d098f78 100644
--- a/sr_module.h
+++ b/sr_module.h
@@ -61,7 +61,7 @@
 #include <dlfcn.h>
 
 #include "parser/msg_parser.h" /* for sip_msg */
-#include "version.h"
+#include "ver_defs.h"
 #include "rpc.h"
 #include "route_struct.h"
 #include "route.h"
diff --git a/ver.c b/ver.c
new file mode 100644
index 0000000..80f1b26
--- /dev/null
+++ b/ver.c
@@ -0,0 +1,46 @@
+/* 
+ * $Id$
+ * 
+ * Copyright (C) 2010 iptelorg GmbH
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+/** version strings.
+ * @file ver.c
+ * @ingroup: core
+ */
+/*
+ * History:
+ * --------
+ *  2010-07-13  initial version (andrei)
+*/
+
+#include "ver_defs.h"
+#include "autover.h" /* REPO_VER, REPO_STATE */
+
+
+const char full_version[] = SER_FULL_VERSION " " REPO_VER;
+const char ver_id[] = REPO_HASH " " REPO_STATE;
+const char ver_compiled_time[] =  __TIME__ " " __DATE__ ;
+const char ver_compiler[] = COMPILER;
+
+const char ver_flags[] = SER_COMPILE_FLAGS;
+
+/** hash-state. */
+const char repo_ver[] = REPO_VER;
+/** git hash. */
+const char repo_hash[] = REPO_HASH;
+/** state of the repository: dirty (uncommited changes) or "" */
+const char repo_state[] = REPO_STATE;
+
+/* vi: set ts=4 sw=4 tw=79:ai:cindent: */
diff --git a/ver.h b/ver.h
new file mode 100644
index 0000000..ba036f3
--- /dev/null
+++ b/ver.h
@@ -0,0 +1,43 @@
+/* 
+ * $Id$
+ * 
+ * Copyright (C) 2010 iptelorg GmbH
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+/** version strings.
+ * @file ver.h
+ * @ingroup: core
+ */
+/*
+ * History:
+ * --------
+ *  2010-07-13  initial version (andrei)
+*/
+
+#ifndef __ver_h
+#define __ver_h
+
+extern const char full_version[];
+extern const char ver_id[];
+extern const char ver_compiled_time[];
+extern const char ver_compiler[];
+extern const char ver_flags[];
+extern const char repo_ver[];
+extern const char repo_hash[];
+extern const char repo_state[];
+
+
+#endif /*__ver_h*/
+
+/* vi: set ts=4 sw=4 tw=79:ai:cindent: */
diff --git a/version.h b/ver_defs.h
similarity index 98%
rename from version.h
rename to ver_defs.h
index 1c60539..e6eb391 100644
--- a/version.h
+++ b/ver_defs.h
@@ -23,12 +23,9 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
-/*!
- * \file
- * \brief SIP-router core :: version and compile flag macros
- * \ingroup core
- *
- * Module: \ref core
+/** compile flags and other version related defines.
+ * @file ver_defs.h
+ * @ingroup core
  */
 
 #ifndef version_h




More information about the sr-dev mailing list