diff --git a/CMakeLists.txt b/CMakeLists.txt index 017b0994b..9ed458301 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,7 +20,10 @@ endif() list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_CURRENT_SOURCE_DIR}/CMake ) -if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git) + +if (VERSION) + add_definitions(-DSWAY_VERSION=\"${VERSION}\") +else() execute_process( COMMAND git describe --always --tags OUTPUT_VARIABLE GIT_COMMIT_HASH @@ -33,14 +36,11 @@ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git) OUTPUT_STRIP_TRAILING_WHITESPACE WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) + + string(TIMESTAMP CURRENT_DATE "%Y-%m-%d" UTC) + add_definitions("-DSWAY_VERSION=\"${GIT_COMMIT_HASH} (${CURRENT_DATE}, branch \\\"${GIT_BRANCH}\\\")\"") endif() -add_definitions(-DSWAY_GIT_VERSION=\"${GIT_COMMIT_HASH}\") -add_definitions(-DSWAY_GIT_BRANCH=\"${GIT_BRANCH}\") - -string(TIMESTAMP CURRENT_DATE "%Y-%m-%d" UTC) -add_definitions(-DSWAY_VERSION_DATE=\"${CURRENT_DATE}\") - option(enable-swaylock "Enables the swaylock utility" YES) option(enable-swaybg "Enables the wallpaper utility" YES) option(enable-swaybar "Enables the swaybar utility" YES) diff --git a/sway/ipc-json.c b/sway/ipc-json.c index 4c4484e8a..512144a4a 100644 --- a/sway/ipc-json.c +++ b/sway/ipc-json.c @@ -306,39 +306,16 @@ json_object *ipc_json_describe_input(struct libinput_device *device) { } json_object *ipc_json_get_version() { + int major = 0, minor = 0, patch = 0; json_object *version = json_object_new_object(); -#if defined SWAY_GIT_VERSION && defined SWAY_GIT_BRANCH && defined SWAY_VERSION_DATE - char *full_version = calloc(strlen(SWAY_GIT_VERSION) + strlen(SWAY_GIT_BRANCH) + strlen(SWAY_VERSION_DATE) + 20, 1); - if (!full_version) { - json_object_object_add(version, "human_readable", - json_object_new_string("Allocating version string failed")); - // TODO: it's stupid that we allocate this in the first place - json_object_object_add(version, "major", json_object_new_int(0)); - json_object_object_add(version, "minor", json_object_new_int(0)); - json_object_object_add(version, "patch", json_object_new_int(0)); - return version; - } - strcat(full_version, SWAY_GIT_VERSION); - strcat(full_version, " ("); - strcat(full_version, SWAY_VERSION_DATE); - strcat(full_version, ", branch \""); - strcat(full_version, SWAY_GIT_BRANCH); - strcat(full_version, "\")"); + sscanf(SWAY_VERSION, "%u.%u.%u", &major, &minor, &patch); - json_object_object_add(version, "human_readable", json_object_new_string(full_version)); + json_object_object_add(version, "human_readable", json_object_new_string(SWAY_VERSION)); json_object_object_add(version, "variant", json_object_new_string("sway")); - // Todo once we actually release a version - json_object_object_add(version, "major", json_object_new_int(0)); - json_object_object_add(version, "minor", json_object_new_int(0)); - json_object_object_add(version, "patch", json_object_new_int(1)); - free(full_version); -#else - json_object_object_add(version, "human_readable", json_object_new_string("version not found")); - json_object_object_add(version, "major", json_object_new_int(0)); - json_object_object_add(version, "minor", json_object_new_int(0)); - json_object_object_add(version, "patch", json_object_new_int(0)); -#endif + json_object_object_add(version, "major", json_object_new_int(major)); + json_object_object_add(version, "minor", json_object_new_int(minor)); + json_object_object_add(version, "patch", json_object_new_int(patch)); return version; } diff --git a/sway/main.c b/sway/main.c index 39bf225e4..b9549b127 100644 --- a/sway/main.c +++ b/sway/main.c @@ -267,11 +267,7 @@ int main(int argc, char **argv) { debug = 1; break; case 'v': // version -#if defined SWAY_GIT_VERSION && defined SWAY_GIT_BRANCH && defined SWAY_VERSION_DATE - fprintf(stdout, "sway version %s (%s, branch \"%s\")\n", SWAY_GIT_VERSION, SWAY_VERSION_DATE, SWAY_GIT_BRANCH); -#else - fprintf(stdout, "version not detected\n"); -#endif + fprintf(stdout, "sway version " SWAY_VERSION "\n"); exit(EXIT_SUCCESS); break; case 'V': // verbose @@ -378,9 +374,7 @@ int main(int argc, char **argv) { // prevent ipc from crashing sway signal(SIGPIPE, SIG_IGN); -#if defined SWAY_GIT_VERSION && defined SWAY_GIT_BRANCH && defined SWAY_VERSION_DATE - sway_log(L_INFO, "Starting sway version %s (%s, branch \"%s\")\n", SWAY_GIT_VERSION, SWAY_VERSION_DATE, SWAY_GIT_BRANCH); -#endif + sway_log(L_INFO, "Starting sway version " SWAY_VERSION "\n"); init_layout(); diff --git a/swaybar/main.c b/swaybar/main.c index a21687431..0abd07551 100644 --- a/swaybar/main.c +++ b/swaybar/main.c @@ -63,11 +63,7 @@ int main(int argc, char **argv) { bar_id = strdup(optarg); break; case 'v': -#if defined SWAY_GIT_VERSION && defined SWAY_GIT_BRANCH && defined SWAY_VERSION_DATE - fprintf(stdout, "sway version %s (%s, branch \"%s\")\n", SWAY_GIT_VERSION, SWAY_VERSION_DATE, SWAY_GIT_BRANCH); -#else - fprintf(stdout, "version not detected\n"); -#endif + fprintf(stdout, "sway version " SWAY_VERSION "\n"); exit(EXIT_SUCCESS); break; case 'd': // Debug diff --git a/swaygrab/main.c b/swaygrab/main.c index 3b8c5651e..f901d3188 100644 --- a/swaygrab/main.c +++ b/swaygrab/main.c @@ -201,11 +201,7 @@ int main(int argc, char **argv) { framerate = atoi(optarg); break; case 'v': -#if defined SWAY_GIT_VERSION && defined SWAY_GIT_BRANCH && defined SWAY_VERSION_DATE - fprintf(stdout, "sway version %s (%s, branch \"%s\")\n", SWAY_GIT_VERSION, SWAY_VERSION_DATE, SWAY_GIT_BRANCH); -#else - fprintf(stdout, "version not detected\n"); -#endif + fprintf(stdout, "sway version " SWAY_VERSION "\n"); exit(EXIT_SUCCESS); break; default: diff --git a/swaylock/main.c b/swaylock/main.c index 9b33aab92..475924091 100644 --- a/swaylock/main.c +++ b/swaylock/main.c @@ -451,11 +451,7 @@ int main(int argc, char **argv) { socket_path = optarg; break; case 'v': -#if defined SWAY_GIT_VERSION && defined SWAY_GIT_BRANCH && defined SWAY_VERSION_DATE - fprintf(stdout, "swaylock version %s (%s, branch \"%s\")\n", SWAY_GIT_VERSION, SWAY_VERSION_DATE, SWAY_GIT_BRANCH); -#else - fprintf(stdout, "version not detected\n"); -#endif + fprintf(stdout, "swaylock version " SWAY_VERSION "\n"); exit(EXIT_SUCCESS); break; case 'u': diff --git a/swaymsg/main.c b/swaymsg/main.c index 2d2b0f607..efd0ec25c 100644 --- a/swaymsg/main.c +++ b/swaymsg/main.c @@ -230,11 +230,7 @@ int main(int argc, char **argv) { cmdtype = strdup(optarg); break; case 'v': -#if defined SWAY_GIT_VERSION && defined SWAY_GIT_BRANCH && defined SWAY_VERSION_DATE - fprintf(stdout, "sway version %s (%s, branch \"%s\")\n", SWAY_GIT_VERSION, SWAY_VERSION_DATE, SWAY_GIT_BRANCH); -#else - fprintf(stdout, "version not detected\n"); -#endif + fprintf(stdout, "sway version " SWAY_VERSION "\n"); exit(EXIT_SUCCESS); break; default: