summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorManuel Bentele2020-10-19 16:14:41 +0200
committerManuel Bentele2020-10-19 16:16:58 +0200
commitc6a843122ad60fff05e7daa2f7b30abc2ec101e9 (patch)
treeaa60daa34b282165f1a70c4654d84530cbd53fa2
parent[BUILD] build Linux kernel module only on Linux systems (diff)
downloaddnbd3-c6a843122ad60fff05e7daa2f7b30abc2ec101e9.tar.gz
dnbd3-c6a843122ad60fff05e7daa2f7b30abc2ec101e9.tar.xz
dnbd3-c6a843122ad60fff05e7daa2f7b30abc2ec101e9.zip
[BUILD] set build type and stop Release build if repository is dirty
-rw-r--r--cmake/GenerateVersion.cmake22
-rw-r--r--cmake/ProjectVersion.cmake1
-rw-r--r--inc/dnbd3/types.h4
-rw-r--r--inc/dnbd3/version.h.in3
-rw-r--r--src/bench/main.c2
-rw-r--r--src/client/client.c4
-rw-r--r--src/fuse/main.c2
-rw-r--r--src/kernel/dnbd3_main.c6
-rw-r--r--src/server/CMakeLists.txt3
-rw-r--r--src/server/rpc.c4
-rw-r--r--src/server/server.c10
11 files changed, 37 insertions, 24 deletions
diff --git a/cmake/GenerateVersion.cmake b/cmake/GenerateVersion.cmake
index e336489..152ab11 100644
--- a/cmake/GenerateVersion.cmake
+++ b/cmake/GenerateVersion.cmake
@@ -5,11 +5,25 @@
# get Git short hash and tag of latest repository commit
execute_process(COMMAND git describe HEAD
- OUTPUT_VARIABLE DNBD3_VERSION
+ OUTPUT_VARIABLE DNBD3_BUILD_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE)
-if(DNBD3_VERSION STREQUAL "")
- set(DNBD3_VERSION "unknown")
-endif(DNBD3_VERSION STREQUAL "")
+if(DNBD3_BUILD_VERSION STREQUAL "")
+ set(DNBD3_BUILD_VERSION "unknown")
+endif(DNBD3_BUILD_VERSION STREQUAL "")
+
+# get status of Git repository
+execute_process(COMMAND git status --porcelain
+ OUTPUT_VARIABLE DNBD3_GIT_STATUS
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+if(VERSION_BUILD_TYPE MATCHES "Release" AND NOT DNBD3_GIT_STATUS STREQUAL "")
+ message(FATAL_ERROR "This dnbd3 Git repository is dirty! Please commit or revert all changes for the ${VERSION_BUILD_TYPE} build!")
+else(VERSION_BUILD_TYPE MATCHES "Release" AND NOT DNBD3_GIT_STATUS STREQUAL "")
+ set(DNBD3_BUILD_VERSION "${DNBD3_BUILD_VERSION}-modified")
+endif(VERSION_BUILD_TYPE MATCHES "Release" AND NOT DNBD3_GIT_STATUS STREQUAL "")
+
+# set current build type of the project
+set(DNBD3_BUILD_TYPE ${VERSION_BUILD_TYPE})
# write dnbd3 version into a new C source file based on the specified version template
configure_file(${VERSION_INPUT_FILE} ${VERSION_OUTPUT_FILE})
diff --git a/cmake/ProjectVersion.cmake b/cmake/ProjectVersion.cmake
index 108505d..8b7160c 100644
--- a/cmake/ProjectVersion.cmake
+++ b/cmake/ProjectVersion.cmake
@@ -14,6 +14,7 @@ macro(gen_project_version VERSION_INPUT_FILE VERSION_OUTPUT_FILE)
add_custom_command(OUTPUT ${VERSION_OUTPUT_FILE}
COMMAND ${CMAKE_COMMAND} -D VERSION_INPUT_FILE=${VERSION_INPUT_FILE}
-D VERSION_OUTPUT_FILE=${VERSION_OUTPUT_FILE}
+ -D VERSION_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-P ${PROJECT_MODULES_DIR}/GenerateVersion.cmake
COMMENT "Generating ${VERSION_OUTPUT_FILENAME}"
DEPENDS regenerate-version-file)
diff --git a/inc/dnbd3/types.h b/inc/dnbd3/types.h
index c7f335b..63e182c 100644
--- a/inc/dnbd3/types.h
+++ b/inc/dnbd3/types.h
@@ -99,7 +99,7 @@
(a).cmd = net_order_16((a).cmd); \
(a).size = net_order_32((a).size); \
} while (0)
-#define ENDIAN_MODE "Big Endian"
+#define DNBD3_ENDIAN_MODE "Big Endian"
#define DNBD3_BIG_ENDIAN
#elif defined(__LITTLE_ENDIAN__) || (defined(__BYTE_ORDER) && defined(__LITTLE_ENDIAN) && __BYTE_ORDER == __LITTLE_ENDIAN) || (defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) || defined(__i386__) || defined(__i386) || defined(__x86_64)
#define dnbd3_packet_magic ((uint16_t)( (0x73) | (0x72 << 8) ))
@@ -109,7 +109,7 @@
#define net_order_16(a) (a)
#define fixup_request(a) while(0)
#define fixup_reply(a) while(0)
-#define ENDIAN_MODE "Little Endian"
+#define DNBD3_ENDIAN_MODE "Little Endian"
#define DNBD3_LITTLE_ENDIAN
#else
#error "Unknown Endianness"
diff --git a/inc/dnbd3/version.h.in b/inc/dnbd3/version.h.in
index 4a88cf0..cdeed20 100644
--- a/inc/dnbd3/version.h.in
+++ b/inc/dnbd3/version.h.in
@@ -4,6 +4,7 @@
#ifndef VERSION_H_
#define VERSION_H_
-#define DNBD3_VERSION "@DNBD3_VERSION@"
+#define DNBD3_BUILD_VERSION "@DNBD3_BUILD_VERSION@"
+#define DNBD3_BUILD_TYPE "@DNBD3_BUILD_TYPE@"
#endif /* VERSION_H_ */
diff --git a/src/bench/main.c b/src/bench/main.c
index 89c09f3..a167f05 100644
--- a/src/bench/main.c
+++ b/src/bench/main.c
@@ -20,7 +20,7 @@
static void printUsage(char *argv0, int exitCode)
{
- printf( "Version: %s\n", DNBD3_VERSION );
+ printf( "Version: %s\n", DNBD3_BUILD_VERSION );
printf( "Usage: %s [--debug] --host <serverAddress(es)> --image <imageName> [--rid revision]\n", argv0 );
printf( "Or: %s [-d] -h <serverAddress(es)> -i <imageName> [-r revision]\n", argv0 );
printf( " -h --host List of space separated hosts to use\n" );
diff --git a/src/client/client.c b/src/client/client.c
index e433160..69cc00f 100644
--- a/src/client/client.c
+++ b/src/client/client.c
@@ -644,7 +644,7 @@ static int dnbd3_daemon_send(int argc, char **argv)
static void dnbd3_print_help(char *argv_0)
{
- printf( "Version: %s\n", DNBD3_VERSION );
+ printf( "Version: %s\n", DNBD3_BUILD_VERSION );
printf( "\nUsage: %s\n"
"\t-h <host> -i <image name> [-r <rid>] -d <device> [-a <KB>] || -c -d <device>\n\n", argv_0 );
printf( "Start the DNBD3 client.\n" );
@@ -666,6 +666,6 @@ static void dnbd3_print_help(char *argv_0)
void dnbd3_print_version()
{
- printf( "dnbd3-client version: %s\n", DNBD3_VERSION );
+ printf( "dnbd3-client version: %s\n", DNBD3_BUILD_VERSION );
exit( EXIT_SUCCESS );
}
diff --git a/src/fuse/main.c b/src/fuse/main.c
index cf9efbe..5cf3e81 100644
--- a/src/fuse/main.c
+++ b/src/fuse/main.c
@@ -273,7 +273,7 @@ static struct fuse_lowlevel_ops image_oper = {
static void printVersion()
{
char *arg[] = { "foo", "-V" };
- printf( "dnbd3-fuse version: %s\n", DNBD3_VERSION );
+ printf( "dnbd3-fuse version: %s\n", DNBD3_BUILD_VERSION );
printf( "Protocol version: %d\n", (int)PROTOCOL_VERSION );
struct fuse_args args = FUSE_ARGS_INIT( 2, arg );
fuse_parse_cmdline( &args, NULL, NULL, NULL );
diff --git a/src/kernel/dnbd3_main.c b/src/kernel/dnbd3_main.c
index 27e8eed..353e8d2 100644
--- a/src/kernel/dnbd3_main.c
+++ b/src/kernel/dnbd3_main.c
@@ -49,8 +49,8 @@ static int __init dnbd3_init(void)
return -EIO;
}
- pr_info("kernel module in version %s loaded\n", DNBD3_VERSION);
- pr_debug("machine type " ENDIAN_MODE "\n");
+ pr_info("kernel module in version %s loaded\n", DNBD3_BUILD_VERSION);
+ pr_debug("machine type %s\n", DNBD3_ENDIAN_MODE);
// add MAX_NUMBER_DEVICES devices
for (i = 0; i < max_devs; i++)
@@ -87,7 +87,7 @@ module_exit(dnbd3_exit);
MODULE_DESCRIPTION("Distributed Network Block Device 3");
MODULE_LICENSE("GPL");
-MODULE_VERSION(DNBD3_VERSION);
+MODULE_VERSION(DNBD3_BUILD_VERSION);
module_param(max_devs, int, 0444);
MODULE_PARM_DESC(max_devs, "number of network block devices to initialize (default: 8)");
diff --git a/src/server/CMakeLists.txt b/src/server/CMakeLists.txt
index 47dda53..1855d91 100644
--- a/src/server/CMakeLists.txt
+++ b/src/server/CMakeLists.txt
@@ -12,9 +12,6 @@ endif(NOT JANSSON_FOUND)
# add compile option to enable enhanced POSIX features
add_definitions(-D_GNU_SOURCE)
-# export project build type to source code
-add_definitions(-DBUILD_TYPE=${CMAKE_BUILD_TYPE})
-
if(DNBD3_SERVER_AFL)
# build dnbd3-server with AFL support
message(STATUS "Building dnbd3-server with AFL support")
diff --git a/src/server/rpc.c b/src/server/rpc.c
index ab08395..c8da951 100644
--- a/src/server/rpc.c
+++ b/src/server/rpc.c
@@ -311,8 +311,8 @@ static bool handleStatus(int sock, int permissions, struct field *fields, size_t
"runId", randomRunId );
}
if ( version ) {
- json_object_set_new( statisticsJson, "version", json_string( DNBD3_VERSION ) );
- json_object_set_new( statisticsJson, "build", json_string( TOSTRING( BUILD_TYPE ) ) );
+ json_object_set_new( statisticsJson, "version", json_string( DNBD3_BUILD_VERSION ) );
+ json_object_set_new( statisticsJson, "build", json_string( DNBD3_BUILD_TYPE ) );
}
if ( space ) {
uint64_t spaceTotal = 0, spaceAvail = 0;
diff --git a/src/server/server.c b/src/server/server.c
index 8aefece..55ec042 100644
--- a/src/server/server.c
+++ b/src/server/server.c
@@ -105,7 +105,7 @@ static void queueJobInternal(job_t *job);
*/
void dnbd3_printHelp(char *argv_0)
{
- printf( "Version: %s\n\n", DNBD3_VERSION );
+ printf( "Version: %s\n\n", DNBD3_BUILD_VERSION );
printf( "Usage: %s [OPTIONS]...\n", argv_0 );
printf( "Start the DNBD3 server\n" );
printf( "-c or --config Configuration directory (default /etc/dnbd3-server/)\n" );
@@ -130,7 +130,7 @@ void dnbd3_printHelp(char *argv_0)
*/
void dnbd3_printVersion()
{
- printf( "dnbd3-server version: %s\n", DNBD3_VERSION );
+ printf( "dnbd3-server version: %s\n", DNBD3_BUILD_VERSION );
exit( 0 );
}
@@ -363,9 +363,9 @@ int main(int argc, char *argv[])
return EXIT_FAILURE;
}
logadd( LOG_INFO, "DNBD3 server starting...." );
- logadd( LOG_INFO, "Machine type: " ENDIAN_MODE );
- logadd( LOG_INFO, "Build Type: " TOSTRING( BUILD_TYPE ) );
- logadd( LOG_INFO, "Version: %s", DNBD3_VERSION );
+ logadd( LOG_INFO, "Machine type: " DNBD3_ENDIAN_MODE );
+ logadd( LOG_INFO, "Build Type: %s", DNBD3_BUILD_TYPE );
+ logadd( LOG_INFO, "Version: %s", DNBD3_BUILD_VERSION );
if ( altservers_load() < 0 ) {
logadd( LOG_WARNING, "Could not load alt-servers. Does the file exist in %s?", _configDir );