From d57679e3ddeafded27ea86a259a85ce96c9ee4d7 Mon Sep 17 00:00:00 2001 From: Peter Cullen Date: Wed, 3 Apr 2024 19:16:12 +0000 Subject: [PATCH 1/8] Support for configurable localversion Adds a new --localversion option to configure. The value of localversion becomes part of the Zeek version string. Docker builds allow an environment variable (LOCALVERSION) to set the localversion string. --- CMakeLists.txt | 6 ++++++ cmake_templates/zeek-config.in | 2 +- configure | 6 ++++++ docker/Makefile | 8 +++++++- src/version.c.in | 2 +- 5 files changed, 21 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b5bee69c93..ef7be72c87 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -576,6 +576,12 @@ set(VERSION_C_IDENT "${ZEEK_VERSION_FULL}_plugin_${API_VERSION}") string(REGEX REPLACE "-[0-9]*$" "_git" VERSION_C_IDENT "${VERSION_C_IDENT}") string(REGEX REPLACE "[^a-zA-Z0-9_\$]" "_" VERSION_C_IDENT "${VERSION_C_IDENT}") +set(ZEEK_VERSION_FULL_LOCAL "${ZEEK_VERSION_FULL}") +if (NOT ZEEK_VERSION_LOCAL STREQUAL "") + set(ZEEK_VERSION_FULL_LOCAL "${ZEEK_VERSION_FULL_LOCAL}-${ZEEK_VERSION_LOCAL}") + set(VERSION_C_IDENT "${VERSION_C_IDENT}_${ZEEK_VERSION_LOCAL}") +endif () + if (ENABLE_DEBUG) set(VERSION_C_IDENT "${VERSION_C_IDENT}_debug") target_compile_definitions(zeek_internal INTERFACE DEBUG) diff --git a/cmake_templates/zeek-config.in b/cmake_templates/zeek-config.in index 29943e84e1..6c676d9cf2 100755 --- a/cmake_templates/zeek-config.in +++ b/cmake_templates/zeek-config.in @@ -17,7 +17,7 @@ prefix="@CMAKE_INSTALL_PREFIX@" python_dir="@PY_MOD_INSTALL_DIR@" script_dir="@ZEEK_SCRIPT_INSTALL_PATH@" site_dir="@ZEEK_SCRIPT_INSTALL_PATH@/site" -version="@ZEEK_VERSION_FULL@" +version="@ZEEK_VERSION_FULL_LOCAL@" zeek_dist="@ZEEK_DIST@" zeekpath="@DEFAULT_ZEEKPATH@" diff --git a/configure b/configure index 15b8f666bf..0f2aaa705b 100755 --- a/configure +++ b/configure @@ -33,6 +33,9 @@ Usage: $0 [OPTION]... [VAR=VALUE]... --sanitizers=LIST comma-separated list of sanitizer names to enable --include-plugins=PATHS paths containing plugins to build directly into Zeek (semicolon delimited and quoted when multiple) + --localversion=version version contains an additional, custom version string + that is appended to the standard Zeek version string, + with a dash [-] separating the two. Installation Directories: --prefix=PREFIX installation directory [/usr/local/zeek] @@ -229,6 +232,9 @@ while [ $# -ne 0 ]; do --include-plugins=*) append_cache_entry ZEEK_INCLUDE_PLUGINS STRING \"$optarg\" ;; + --localversion=*) + append_cache_entry ZEEK_VERSION_LOCAL STRING \"$optarg\" + ;; --prefix=*) append_cache_entry CMAKE_INSTALL_PREFIX PATH $optarg ;; diff --git a/docker/Makefile b/docker/Makefile index 93d908d621..40a8d4ba93 100644 --- a/docker/Makefile +++ b/docker/Makefile @@ -1,6 +1,12 @@ # See the file "COPYING" in the main distribution directory for copyright. VERSION := $(shell cat ../VERSION) +LOCALVERSION ?= "" +LOCAL_VERSION_FLAG = "" +ifneq ($(LOCALVERSION), "") + VERSION := $(VERSION)-$(LOCALVERSION) + LOCAL_VERSION_FLAG := "--localversion=$(LOCALVERSION)" +endif BUILD_IMAGE := zeek-builder:$(VERSION) BUILD_CONTAINER := zeek-builder-container-$(VERSION) ZEEK_IMAGE ?= zeek:$(VERSION) @@ -11,7 +17,7 @@ ZEEK_CONFIGURE_FLAGS ?= \ --build-type=Release \ --disable-btest-pcaps \ --disable-broker-tests \ - --disable-cpp-tests + --disable-cpp-tests $(LOCAL_VERSION_FLAG) .PHONY: all diff --git a/src/version.c.in b/src/version.c.in index 9c129253a5..4c30a2005f 100644 --- a/src/version.c.in +++ b/src/version.c.in @@ -1,7 +1,7 @@ #include "zeek/zeek-version.h" -char version[] = "@ZEEK_VERSION_FULL@"; +char version[] = "@ZEEK_VERSION_FULL_LOCAL@"; // A C function that has the current version built into its name. // One can link a shared library against this to ensure that it won't From cf09f137bd0be6dd66b3e4b979d44acf56cd9a93 Mon Sep 17 00:00:00 2001 From: Peter Cullen Date: Thu, 4 Apr 2024 16:33:25 +0000 Subject: [PATCH 2/8] Update build script Add back a couple changes that got lost during cleanup. --- CMakeLists.txt | 2 ++ docker/Makefile | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ef7be72c87..abd40f0579 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -80,6 +80,8 @@ set(CPACK_SOURCE_IGNORE_FILES "" CACHE STRING "Files to be ignored by CPack") set(ZEEK_INCLUDE_PLUGINS "" CACHE STRING "Extra plugins to add to the build.") +set(ZEEK_VERSION_LOCAL "" CACHE STRING "Custom version string.") + # Look into the build tree for additional CMake modules. list(APPEND CMAKE_MODULE_PATH ${CMAKE_BINARY_DIR}) list(APPEND CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}) diff --git a/docker/Makefile b/docker/Makefile index 40a8d4ba93..306bc909e0 100644 --- a/docker/Makefile +++ b/docker/Makefile @@ -5,7 +5,7 @@ LOCALVERSION ?= "" LOCAL_VERSION_FLAG = "" ifneq ($(LOCALVERSION), "") VERSION := $(VERSION)-$(LOCALVERSION) - LOCAL_VERSION_FLAG := "--localversion=$(LOCALVERSION)" + LOCAL_VERSION_FLAG := --localversion=$(LOCALVERSION) endif BUILD_IMAGE := zeek-builder:$(VERSION) BUILD_CONTAINER := zeek-builder-container-$(VERSION) From e97ba8a4f62e7598a559cf48f8d295ede8c618b7 Mon Sep 17 00:00:00 2001 From: Peter Cullen Date: Thu, 4 Apr 2024 16:34:23 +0000 Subject: [PATCH 3/8] Update version used by spicyz Update the version string in the VERSION macro which is used by spicyz and need to be the same as the Zeek version string. --- cmake_templates/zeek-version.h.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake_templates/zeek-version.h.in b/cmake_templates/zeek-version.h.in index 95668aa1f8..2a6902318b 100644 --- a/cmake_templates/zeek-version.h.in +++ b/cmake_templates/zeek-version.h.in @@ -3,7 +3,7 @@ #pragma once /* Version number of package */ -#define VERSION "@ZEEK_VERSION_FULL@" +#define VERSION "@ZEEK_VERSION_FULL_LOCAL@" // Zeek version number. // This is the result of (major * 10000 + minor * 100 + patch) From e4942d45b9be5fda89b23f4d7e11d40c0ed09c52 Mon Sep 17 00:00:00 2001 From: Peter Cullen Date: Thu, 4 Apr 2024 16:36:05 +0000 Subject: [PATCH 4/8] Modify version parsing for localversion The regex used for validating version strings was updated to allow for an optional localversion component. The piece of the version string also needs to be removed before parsing a possible commit number. --- scripts/base/misc/version.zeek | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/base/misc/version.zeek b/scripts/base/misc/version.zeek index 321f35d1cc..826cb33c56 100644 --- a/scripts/base/misc/version.zeek +++ b/scripts/base/misc/version.zeek @@ -56,7 +56,7 @@ export { function parse(version_string: string): VersionDescription { - if ( /[0-9]+\.[0-9]+(\.[0-9]+)?(-(beta|rc|dev)[0-9]*)?((-|\.)[0-9]+)?(-debug)?/ != version_string ) + if ( /[0-9]+\.[0-9]+(\.[0-9]+)?(-(beta|rc|dev)[0-9]*)?((-|\.)[0-9]+)?(-[a-zA-Z0-9]+)?(-debug)?/ != version_string ) { Reporter::error(fmt("Version string %s cannot be parsed", version_string)); return VersionDescription($version_number=0, $major=0, $minor=0, $patch=0, $commit=0, $beta=F, $debug=F, $version_string=version_string); @@ -92,6 +92,8 @@ function parse(version_string: string): VersionDescription vs = gsub(vs, /-debug$/, ""); vs = gsub(vs, /-(beta|rc|dev)[0-9]*/, ""); + # Drop the optional local version piece + vs = gsub(vs, /-[a-zA-Z0-9]+$/, ""); # Either a .X, or -X possibly remaining vs = lstrip(vs, ".-"); From 32289521f50bbabc173f0b26a39b12e46d84ccd5 Mon Sep 17 00:00:00 2001 From: Peter Cullen Date: Thu, 4 Apr 2024 16:38:16 +0000 Subject: [PATCH 5/8] Update version string btests for localversion Added some more version strings to be tested that include a localversion component. Baseline updates, as well. --- .../scripts.base.misc.version/.stderr | 2 +- .../scripts.base.misc.version/.stdout | 30 ++++++++++++++----- testing/btest/scripts/base/misc/version.zeek | 18 ++++++++++- 3 files changed, 41 insertions(+), 9 deletions(-) diff --git a/testing/btest/Baseline/scripts.base.misc.version/.stderr b/testing/btest/Baseline/scripts.base.misc.version/.stderr index 11cfa0470e..2e06936995 100644 --- a/testing/btest/Baseline/scripts.base.misc.version/.stderr +++ b/testing/btest/Baseline/scripts.base.misc.version/.stderr @@ -1,4 +1,4 @@ ### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. error in <...>/version.zeek, line 61: Version string 1 cannot be parsed -error in <...>/version.zeek, line 61: Version string 1.12-beta-drunk cannot be parsed +error in <...>/version.zeek, line 61: Version string 1.12-beta-drunk-too-much cannot be parsed error in <...>/version.zeek, line 61: Version string JustARandomString cannot be parsed diff --git a/testing/btest/Baseline/scripts.base.misc.version/.stdout b/testing/btest/Baseline/scripts.base.misc.version/.stdout index 8b5394fb40..f8ff572fe9 100644 --- a/testing/btest/Baseline/scripts.base.misc.version/.stdout +++ b/testing/btest/Baseline/scripts.base.misc.version/.stdout @@ -2,25 +2,41 @@ [version_number=10500, major=1, minor=5, patch=0, commit=0, beta=F, debug=F, version_string=1.5] [version_number=20000, major=2, minor=0, patch=0, commit=0, beta=F, debug=F, version_string=2.0] [version_number=20600, major=2, minor=6, patch=0, commit=0, beta=F, debug=F, version_string=2.6] +[version_number=20600, major=2, minor=6, patch=0, commit=0, beta=F, debug=F, version_string=2.6-custom1] [version_number=20500, major=2, minor=5, patch=0, commit=0, beta=T, debug=F, version_string=2.5-beta] +[version_number=20500, major=2, minor=5, patch=0, commit=0, beta=T, debug=F, version_string=2.5-beta-custom2] [version_number=20501, major=2, minor=5, patch=1, commit=0, beta=F, debug=T, version_string=2.5.1-debug] -[version_number=20500, major=2, minor=5, patch=0, commit=12, beta=T, debug=F, version_string=2.5-beta-12] -[version_number=20500, major=2, minor=5, patch=0, commit=12, beta=F, debug=T, version_string=2.5-12-debug] -[version_number=20502, major=2, minor=5, patch=2, commit=12, beta=T, debug=T, version_string=2.5.2-beta-12-debug] -[version_number=20502, major=2, minor=5, patch=2, commit=12, beta=T, debug=T, version_string=2.5.2-beta5-12-debug] -[version_number=11220, major=1, minor=12, patch=20, commit=2562, beta=T, debug=T, version_string=1.12.20-beta-2562-debug] -[version_number=20600, major=2, minor=6, patch=0, commit=936, beta=F, debug=F, version_string=2.6-936] +[version_number=20501, major=2, minor=5, patch=1, commit=0, beta=F, debug=T, version_string=2.5.1-custom3-debug] +[version_number=20500, major=2, minor=5, patch=0, commit=0, beta=T, debug=F, version_string=2.5-beta-12] +[version_number=20500, major=2, minor=5, patch=0, commit=12, beta=T, debug=F, version_string=2.5-beta-12-custom4] +[version_number=20500, major=2, minor=5, patch=0, commit=0, beta=F, debug=T, version_string=2.5-12-debug] +[version_number=20500, major=2, minor=5, patch=0, commit=12, beta=F, debug=T, version_string=2.5-12-custom5-debug] +[version_number=20502, major=2, minor=5, patch=2, commit=0, beta=T, debug=T, version_string=2.5.2-beta-12-debug] +[version_number=20502, major=2, minor=5, patch=2, commit=12, beta=T, debug=T, version_string=2.5.2-beta-12-custom6-debug] +[version_number=20502, major=2, minor=5, patch=2, commit=0, beta=T, debug=T, version_string=2.5.2-beta5-12-debug] +[version_number=20502, major=2, minor=5, patch=2, commit=12, beta=T, debug=T, version_string=2.5.2-beta5-12-custom7-debug] +[version_number=11220, major=1, minor=12, patch=20, commit=0, beta=T, debug=T, version_string=1.12.20-beta-2562-debug] +[version_number=11220, major=1, minor=12, patch=20, commit=2562, beta=T, debug=T, version_string=1.12.20-beta-2562-custom8-debug] +[version_number=20600, major=2, minor=6, patch=0, commit=0, beta=F, debug=F, version_string=2.6-936] [version_number=120500, major=12, minor=5, patch=0, commit=0, beta=F, debug=F, version_string=12.5] [version_number=30000, major=3, minor=0, patch=0, commit=0, beta=F, debug=F, version_string=3.0.0] [version_number=30001, major=3, minor=0, patch=1, commit=0, beta=F, debug=F, version_string=3.0.1] [version_number=30100, major=3, minor=1, patch=0, commit=0, beta=F, debug=F, version_string=3.1.0] +[version_number=30100, major=3, minor=1, patch=0, commit=0, beta=F, debug=F, version_string=3.1.0-custom9] [version_number=30000, major=3, minor=0, patch=0, commit=0, beta=T, debug=F, version_string=3.0.0-rc] +[version_number=30000, major=3, minor=0, patch=0, commit=0, beta=T, debug=F, version_string=3.0.0-rc-custom10] [version_number=30000, major=3, minor=0, patch=0, commit=37, beta=T, debug=F, version_string=3.0.0-rc.37] +[version_number=30000, major=3, minor=0, patch=0, commit=37, beta=T, debug=F, version_string=3.0.0-rc.37-custom11] [version_number=30000, major=3, minor=0, patch=0, commit=13, beta=T, debug=F, version_string=3.0.0-rc2.13] +[version_number=30000, major=3, minor=0, patch=0, commit=13, beta=T, debug=F, version_string=3.0.0-rc2.13-custom12] [version_number=30000, major=3, minor=0, patch=0, commit=37, beta=T, debug=T, version_string=3.0.0-rc.37-debug] +[version_number=30000, major=3, minor=0, patch=0, commit=37, beta=T, debug=T, version_string=3.0.0-rc.37-custom13-debug] [version_number=30000, major=3, minor=0, patch=0, commit=13, beta=T, debug=T, version_string=3.0.0-rc2.13-debug] +[version_number=30000, major=3, minor=0, patch=0, commit=13, beta=T, debug=T, version_string=3.0.0-rc2.13-custom14-debug] [version_number=30100, major=3, minor=1, patch=0, commit=42, beta=F, debug=F, version_string=3.1.0-dev.42] +[version_number=30100, major=3, minor=1, patch=0, commit=42, beta=F, debug=F, version_string=3.1.0-dev.42-custom15] [version_number=30100, major=3, minor=1, patch=0, commit=42, beta=F, debug=T, version_string=3.1.0-dev.42-debug] +[version_number=30100, major=3, minor=1, patch=0, commit=42, beta=F, debug=T, version_string=3.1.0-dev.42-custom16-debug] [version_number=0, major=0, minor=0, patch=0, commit=0, beta=F, debug=F, version_string=1] -[version_number=0, major=0, minor=0, patch=0, commit=0, beta=F, debug=F, version_string=1.12-beta-drunk] +[version_number=0, major=0, minor=0, patch=0, commit=0, beta=F, debug=F, version_string=1.12-beta-drunk-too-much] [version_number=0, major=0, minor=0, patch=0, commit=0, beta=F, debug=F, version_string=JustARandomString] diff --git a/testing/btest/scripts/base/misc/version.zeek b/testing/btest/scripts/base/misc/version.zeek index 00312f3961..a97d4374d6 100644 --- a/testing/btest/scripts/base/misc/version.zeek +++ b/testing/btest/scripts/base/misc/version.zeek @@ -6,29 +6,45 @@ print Version::parse("1.5"); print Version::parse("2.0"); print Version::parse("2.6"); +print Version::parse("2.6-custom1"); print Version::parse("2.5-beta"); +print Version::parse("2.5-beta-custom2"); print Version::parse("2.5.1-debug"); +print Version::parse("2.5.1-custom3-debug"); print Version::parse("2.5-beta-12"); +print Version::parse("2.5-beta-12-custom4"); print Version::parse("2.5-12-debug"); +print Version::parse("2.5-12-custom5-debug"); print Version::parse("2.5.2-beta-12-debug"); +print Version::parse("2.5.2-beta-12-custom6-debug"); print Version::parse("2.5.2-beta5-12-debug"); +print Version::parse("2.5.2-beta5-12-custom7-debug"); print Version::parse("1.12.20-beta-2562-debug"); +print Version::parse("1.12.20-beta-2562-custom8-debug"); print Version::parse("2.6-936"); print Version::parse("12.5"); print Version::parse("3.0.0"); print Version::parse("3.0.1"); print Version::parse("3.1.0"); +print Version::parse("3.1.0-custom9"); print Version::parse("3.0.0-rc"); +print Version::parse("3.0.0-rc-custom10"); print Version::parse("3.0.0-rc.37"); +print Version::parse("3.0.0-rc.37-custom11"); print Version::parse("3.0.0-rc2.13"); +print Version::parse("3.0.0-rc2.13-custom12"); print Version::parse("3.0.0-rc.37-debug"); +print Version::parse("3.0.0-rc.37-custom13-debug"); print Version::parse("3.0.0-rc2.13-debug"); +print Version::parse("3.0.0-rc2.13-custom14-debug"); print Version::parse("3.1.0-dev.42"); +print Version::parse("3.1.0-dev.42-custom15"); print Version::parse("3.1.0-dev.42-debug"); +print Version::parse("3.1.0-dev.42-custom16-debug"); # bad versions print Version::parse("1"); -print Version::parse("1.12-beta-drunk"); +print Version::parse("1.12-beta-drunk-too-much"); print Version::parse("JustARandomString"); # check that current running version of Zeek parses without error From 5e3008df89f76f2e45d7f9084f8bb5e9337032ab Mon Sep 17 00:00:00 2001 From: Peter Cullen Date: Mon, 15 Apr 2024 15:21:04 +0000 Subject: [PATCH 6/8] Check ZEEK_VERSION_LOCAL for dashes Insist that ZEEK_VERSION_LOCAL not contain dashes in order to preserve overall structure of version strings. --- CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index abd40f0579..91e663fab0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -580,6 +580,10 @@ string(REGEX REPLACE "[^a-zA-Z0-9_\$]" "_" VERSION_C_IDENT "${VERSION_C_IDENT}") set(ZEEK_VERSION_FULL_LOCAL "${ZEEK_VERSION_FULL}") if (NOT ZEEK_VERSION_LOCAL STREQUAL "") +# STRING(FIND ZEEK_VERSION_LOCAL "-" POS) + if (ZEEK_VERSION_LOCAL MATCHES "-") + message(FATAL_ERROR "ZEEK_VERSION_LOCAL can not contain dashes: ${ZEEK_VERSION_LOCAL}") + endif () set(ZEEK_VERSION_FULL_LOCAL "${ZEEK_VERSION_FULL_LOCAL}-${ZEEK_VERSION_LOCAL}") set(VERSION_C_IDENT "${VERSION_C_IDENT}_${ZEEK_VERSION_LOCAL}") endif () From 610799b0f965852d90f0e2ae241378343b7dfed0 Mon Sep 17 00:00:00 2001 From: Peter Cullen Date: Wed, 17 Apr 2024 13:40:08 +0000 Subject: [PATCH 7/8] Remove commented-out code --- CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 91e663fab0..1138c3b43e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -580,7 +580,6 @@ string(REGEX REPLACE "[^a-zA-Z0-9_\$]" "_" VERSION_C_IDENT "${VERSION_C_IDENT}") set(ZEEK_VERSION_FULL_LOCAL "${ZEEK_VERSION_FULL}") if (NOT ZEEK_VERSION_LOCAL STREQUAL "") -# STRING(FIND ZEEK_VERSION_LOCAL "-" POS) if (ZEEK_VERSION_LOCAL MATCHES "-") message(FATAL_ERROR "ZEEK_VERSION_LOCAL can not contain dashes: ${ZEEK_VERSION_LOCAL}") endif () From 187f93cb9671988020f56a59520ea8bfad134e76 Mon Sep 17 00:00:00 2001 From: Peter Cullen Date: Wed, 17 Apr 2024 15:05:05 +0000 Subject: [PATCH 8/8] Parse and store localversion string Add localversion to the VersionDescription record and populate it during version string parsing. This change also modifies the version string syntax, removing the deprecated dash (-) between beta|dev|rc and the commmit count; those must now be separated by a period. The test version strings were updated accordingly along with the baseline. --- scripts/base/misc/version.zeek | 22 +++-- .../scripts.base.misc.version/.stderr | 6 +- .../scripts.base.misc.version/.stdout | 82 +++++++++---------- testing/btest/scripts/base/misc/version.zeek | 22 ++--- 4 files changed, 71 insertions(+), 61 deletions(-) diff --git a/scripts/base/misc/version.zeek b/scripts/base/misc/version.zeek index 826cb33c56..14e3d4c2a7 100644 --- a/scripts/base/misc/version.zeek +++ b/scripts/base/misc/version.zeek @@ -34,6 +34,8 @@ export { beta: bool; ## If set to true, the version is a debug build debug: bool; + ## Local version portion of the version string + localversion: string; ## String representation of this version version_string: string; }; @@ -56,10 +58,10 @@ export { function parse(version_string: string): VersionDescription { - if ( /[0-9]+\.[0-9]+(\.[0-9]+)?(-(beta|rc|dev)[0-9]*)?((-|\.)[0-9]+)?(-[a-zA-Z0-9]+)?(-debug)?/ != version_string ) + if ( /[0-9]+\.[0-9]+(\.[0-9]+)?(-(beta|rc|dev)[0-9]*)?(\.[0-9]+)?(-[a-zA-Z0-9_\.]+)?(-debug)?/ != version_string ) { Reporter::error(fmt("Version string %s cannot be parsed", version_string)); - return VersionDescription($version_number=0, $major=0, $minor=0, $patch=0, $commit=0, $beta=F, $debug=F, $version_string=version_string); + return VersionDescription($version_number=0, $major=0, $minor=0, $patch=0, $commit=0, $beta=F, $debug=F, $localversion="", $version_string=version_string); } local beta = /-(beta|rc)/ in version_string; @@ -67,6 +69,7 @@ function parse(version_string: string): VersionDescription local patchlevel = 0; local commit = 0; local vs = version_string; + local localversion = ""; local parts = split_string1(vs, /\./); local major = to_count(parts[0]); @@ -92,11 +95,17 @@ function parse(version_string: string): VersionDescription vs = gsub(vs, /-debug$/, ""); vs = gsub(vs, /-(beta|rc|dev)[0-9]*/, ""); - # Drop the optional local version piece - vs = gsub(vs, /-[a-zA-Z0-9]+$/, ""); + localversion = find_last(vs, /-[a-zA-Z0-9_\.]+$/); + if ( localversion != "" ) + { + # Remove leadig dash from localversion + localversion = lstrip(localversion, "-"); + # Drop the local version piece from the version string + vs = gsub(vs, /-[a-zA-Z0-9_\.]+$/, ""); + } - # Either a .X, or -X possibly remaining - vs = lstrip(vs, ".-"); + # A .X possibly remaining + vs = lstrip(vs, "."); if ( |vs| > 0 ) commit = to_count(vs); @@ -107,6 +116,7 @@ function parse(version_string: string): VersionDescription return VersionDescription($version_number=version_number, $major=major, $minor=minor, $patch=patchlevel, $commit=commit, $beta=beta, $debug=debug, + $localversion=localversion, $version_string=version_string); } diff --git a/testing/btest/Baseline/scripts.base.misc.version/.stderr b/testing/btest/Baseline/scripts.base.misc.version/.stderr index 2e06936995..4cd9e25cb2 100644 --- a/testing/btest/Baseline/scripts.base.misc.version/.stderr +++ b/testing/btest/Baseline/scripts.base.misc.version/.stderr @@ -1,4 +1,4 @@ ### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. -error in <...>/version.zeek, line 61: Version string 1 cannot be parsed -error in <...>/version.zeek, line 61: Version string 1.12-beta-drunk-too-much cannot be parsed -error in <...>/version.zeek, line 61: Version string JustARandomString cannot be parsed +error in <...>/version.zeek, line 63: Version string 1 cannot be parsed +error in <...>/version.zeek, line 63: Version string 1.12-beta-drunk-too-much cannot be parsed +error in <...>/version.zeek, line 63: Version string JustARandomString cannot be parsed diff --git a/testing/btest/Baseline/scripts.base.misc.version/.stdout b/testing/btest/Baseline/scripts.base.misc.version/.stdout index f8ff572fe9..29dc0a1608 100644 --- a/testing/btest/Baseline/scripts.base.misc.version/.stdout +++ b/testing/btest/Baseline/scripts.base.misc.version/.stdout @@ -1,42 +1,42 @@ ### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. -[version_number=10500, major=1, minor=5, patch=0, commit=0, beta=F, debug=F, version_string=1.5] -[version_number=20000, major=2, minor=0, patch=0, commit=0, beta=F, debug=F, version_string=2.0] -[version_number=20600, major=2, minor=6, patch=0, commit=0, beta=F, debug=F, version_string=2.6] -[version_number=20600, major=2, minor=6, patch=0, commit=0, beta=F, debug=F, version_string=2.6-custom1] -[version_number=20500, major=2, minor=5, patch=0, commit=0, beta=T, debug=F, version_string=2.5-beta] -[version_number=20500, major=2, minor=5, patch=0, commit=0, beta=T, debug=F, version_string=2.5-beta-custom2] -[version_number=20501, major=2, minor=5, patch=1, commit=0, beta=F, debug=T, version_string=2.5.1-debug] -[version_number=20501, major=2, minor=5, patch=1, commit=0, beta=F, debug=T, version_string=2.5.1-custom3-debug] -[version_number=20500, major=2, minor=5, patch=0, commit=0, beta=T, debug=F, version_string=2.5-beta-12] -[version_number=20500, major=2, minor=5, patch=0, commit=12, beta=T, debug=F, version_string=2.5-beta-12-custom4] -[version_number=20500, major=2, minor=5, patch=0, commit=0, beta=F, debug=T, version_string=2.5-12-debug] -[version_number=20500, major=2, minor=5, patch=0, commit=12, beta=F, debug=T, version_string=2.5-12-custom5-debug] -[version_number=20502, major=2, minor=5, patch=2, commit=0, beta=T, debug=T, version_string=2.5.2-beta-12-debug] -[version_number=20502, major=2, minor=5, patch=2, commit=12, beta=T, debug=T, version_string=2.5.2-beta-12-custom6-debug] -[version_number=20502, major=2, minor=5, patch=2, commit=0, beta=T, debug=T, version_string=2.5.2-beta5-12-debug] -[version_number=20502, major=2, minor=5, patch=2, commit=12, beta=T, debug=T, version_string=2.5.2-beta5-12-custom7-debug] -[version_number=11220, major=1, minor=12, patch=20, commit=0, beta=T, debug=T, version_string=1.12.20-beta-2562-debug] -[version_number=11220, major=1, minor=12, patch=20, commit=2562, beta=T, debug=T, version_string=1.12.20-beta-2562-custom8-debug] -[version_number=20600, major=2, minor=6, patch=0, commit=0, beta=F, debug=F, version_string=2.6-936] -[version_number=120500, major=12, minor=5, patch=0, commit=0, beta=F, debug=F, version_string=12.5] -[version_number=30000, major=3, minor=0, patch=0, commit=0, beta=F, debug=F, version_string=3.0.0] -[version_number=30001, major=3, minor=0, patch=1, commit=0, beta=F, debug=F, version_string=3.0.1] -[version_number=30100, major=3, minor=1, patch=0, commit=0, beta=F, debug=F, version_string=3.1.0] -[version_number=30100, major=3, minor=1, patch=0, commit=0, beta=F, debug=F, version_string=3.1.0-custom9] -[version_number=30000, major=3, minor=0, patch=0, commit=0, beta=T, debug=F, version_string=3.0.0-rc] -[version_number=30000, major=3, minor=0, patch=0, commit=0, beta=T, debug=F, version_string=3.0.0-rc-custom10] -[version_number=30000, major=3, minor=0, patch=0, commit=37, beta=T, debug=F, version_string=3.0.0-rc.37] -[version_number=30000, major=3, minor=0, patch=0, commit=37, beta=T, debug=F, version_string=3.0.0-rc.37-custom11] -[version_number=30000, major=3, minor=0, patch=0, commit=13, beta=T, debug=F, version_string=3.0.0-rc2.13] -[version_number=30000, major=3, minor=0, patch=0, commit=13, beta=T, debug=F, version_string=3.0.0-rc2.13-custom12] -[version_number=30000, major=3, minor=0, patch=0, commit=37, beta=T, debug=T, version_string=3.0.0-rc.37-debug] -[version_number=30000, major=3, minor=0, patch=0, commit=37, beta=T, debug=T, version_string=3.0.0-rc.37-custom13-debug] -[version_number=30000, major=3, minor=0, patch=0, commit=13, beta=T, debug=T, version_string=3.0.0-rc2.13-debug] -[version_number=30000, major=3, minor=0, patch=0, commit=13, beta=T, debug=T, version_string=3.0.0-rc2.13-custom14-debug] -[version_number=30100, major=3, minor=1, patch=0, commit=42, beta=F, debug=F, version_string=3.1.0-dev.42] -[version_number=30100, major=3, minor=1, patch=0, commit=42, beta=F, debug=F, version_string=3.1.0-dev.42-custom15] -[version_number=30100, major=3, minor=1, patch=0, commit=42, beta=F, debug=T, version_string=3.1.0-dev.42-debug] -[version_number=30100, major=3, minor=1, patch=0, commit=42, beta=F, debug=T, version_string=3.1.0-dev.42-custom16-debug] -[version_number=0, major=0, minor=0, patch=0, commit=0, beta=F, debug=F, version_string=1] -[version_number=0, major=0, minor=0, patch=0, commit=0, beta=F, debug=F, version_string=1.12-beta-drunk-too-much] -[version_number=0, major=0, minor=0, patch=0, commit=0, beta=F, debug=F, version_string=JustARandomString] +[version_number=10500, major=1, minor=5, patch=0, commit=0, beta=F, debug=F, localversion=, version_string=1.5] +[version_number=20000, major=2, minor=0, patch=0, commit=0, beta=F, debug=F, localversion=, version_string=2.0] +[version_number=20600, major=2, minor=6, patch=0, commit=0, beta=F, debug=F, localversion=, version_string=2.6] +[version_number=20600, major=2, minor=6, patch=0, commit=0, beta=F, debug=F, localversion=custom1, version_string=2.6-custom1] +[version_number=20500, major=2, minor=5, patch=0, commit=0, beta=T, debug=F, localversion=, version_string=2.5-beta] +[version_number=20500, major=2, minor=5, patch=0, commit=0, beta=T, debug=F, localversion=custom2, version_string=2.5-beta-custom2] +[version_number=20501, major=2, minor=5, patch=1, commit=0, beta=F, debug=T, localversion=, version_string=2.5.1-debug] +[version_number=20501, major=2, minor=5, patch=1, commit=0, beta=F, debug=T, localversion=custom3, version_string=2.5.1-custom3-debug] +[version_number=20500, major=2, minor=5, patch=0, commit=12, beta=T, debug=F, localversion=, version_string=2.5-beta.12] +[version_number=20500, major=2, minor=5, patch=0, commit=12, beta=T, debug=F, localversion=custom4, version_string=2.5-beta.12-custom4] +[version_number=20512, major=2, minor=5, patch=12, commit=0, beta=F, debug=T, localversion=, version_string=2.5.12-debug] +[version_number=20512, major=2, minor=5, patch=12, commit=0, beta=F, debug=T, localversion=custom5, version_string=2.5.12-custom5-debug] +[version_number=20502, major=2, minor=5, patch=2, commit=12, beta=T, debug=T, localversion=, version_string=2.5.2-beta.12-debug] +[version_number=20502, major=2, minor=5, patch=2, commit=12, beta=T, debug=T, localversion=custom6, version_string=2.5.2-beta.12-custom6-debug] +[version_number=20502, major=2, minor=5, patch=2, commit=12, beta=T, debug=T, localversion=, version_string=2.5.2-beta5.12-debug] +[version_number=20502, major=2, minor=5, patch=2, commit=12, beta=T, debug=T, localversion=custom7, version_string=2.5.2-beta5.12-custom7-debug] +[version_number=11220, major=1, minor=12, patch=20, commit=2562, beta=T, debug=T, localversion=, version_string=1.12.20-beta.2562-debug] +[version_number=11220, major=1, minor=12, patch=20, commit=2562, beta=T, debug=T, localversion=custom8, version_string=1.12.20-beta.2562-custom8-debug] +[version_number=21536, major=2, minor=6, patch=936, commit=0, beta=F, debug=F, localversion=, version_string=2.6.936] +[version_number=120500, major=12, minor=5, patch=0, commit=0, beta=F, debug=F, localversion=, version_string=12.5] +[version_number=30000, major=3, minor=0, patch=0, commit=0, beta=F, debug=F, localversion=, version_string=3.0.0] +[version_number=30001, major=3, minor=0, patch=1, commit=0, beta=F, debug=F, localversion=, version_string=3.0.1] +[version_number=30100, major=3, minor=1, patch=0, commit=0, beta=F, debug=F, localversion=, version_string=3.1.0] +[version_number=30100, major=3, minor=1, patch=0, commit=0, beta=F, debug=F, localversion=custom9, version_string=3.1.0-custom9] +[version_number=30000, major=3, minor=0, patch=0, commit=0, beta=T, debug=F, localversion=, version_string=3.0.0-rc] +[version_number=30000, major=3, minor=0, patch=0, commit=0, beta=T, debug=F, localversion=custom10, version_string=3.0.0-rc-custom10] +[version_number=30000, major=3, minor=0, patch=0, commit=37, beta=T, debug=F, localversion=, version_string=3.0.0-rc.37] +[version_number=30000, major=3, minor=0, patch=0, commit=37, beta=T, debug=F, localversion=custom11, version_string=3.0.0-rc.37-custom11] +[version_number=30000, major=3, minor=0, patch=0, commit=13, beta=T, debug=F, localversion=, version_string=3.0.0-rc2.13] +[version_number=30000, major=3, minor=0, patch=0, commit=13, beta=T, debug=F, localversion=custom12, version_string=3.0.0-rc2.13-custom12] +[version_number=30000, major=3, minor=0, patch=0, commit=37, beta=T, debug=T, localversion=, version_string=3.0.0-rc.37-debug] +[version_number=30000, major=3, minor=0, patch=0, commit=37, beta=T, debug=T, localversion=custom13, version_string=3.0.0-rc.37-custom13-debug] +[version_number=30000, major=3, minor=0, patch=0, commit=13, beta=T, debug=T, localversion=, version_string=3.0.0-rc2.13-debug] +[version_number=30000, major=3, minor=0, patch=0, commit=13, beta=T, debug=T, localversion=custom14, version_string=3.0.0-rc2.13-custom14-debug] +[version_number=30100, major=3, minor=1, patch=0, commit=42, beta=F, debug=F, localversion=, version_string=3.1.0-dev.42] +[version_number=30100, major=3, minor=1, patch=0, commit=42, beta=F, debug=F, localversion=custom15, version_string=3.1.0-dev.42-custom15] +[version_number=30100, major=3, minor=1, patch=0, commit=42, beta=F, debug=T, localversion=, version_string=3.1.0-dev.42-debug] +[version_number=30100, major=3, minor=1, patch=0, commit=42, beta=F, debug=T, localversion=custom16, version_string=3.1.0-dev.42-custom16-debug] +[version_number=0, major=0, minor=0, patch=0, commit=0, beta=F, debug=F, localversion=, version_string=1] +[version_number=0, major=0, minor=0, patch=0, commit=0, beta=F, debug=F, localversion=, version_string=1.12-beta-drunk-too-much] +[version_number=0, major=0, minor=0, patch=0, commit=0, beta=F, debug=F, localversion=, version_string=JustARandomString] diff --git a/testing/btest/scripts/base/misc/version.zeek b/testing/btest/scripts/base/misc/version.zeek index a97d4374d6..38dfad8f2d 100644 --- a/testing/btest/scripts/base/misc/version.zeek +++ b/testing/btest/scripts/base/misc/version.zeek @@ -11,17 +11,17 @@ print Version::parse("2.5-beta"); print Version::parse("2.5-beta-custom2"); print Version::parse("2.5.1-debug"); print Version::parse("2.5.1-custom3-debug"); -print Version::parse("2.5-beta-12"); -print Version::parse("2.5-beta-12-custom4"); -print Version::parse("2.5-12-debug"); -print Version::parse("2.5-12-custom5-debug"); -print Version::parse("2.5.2-beta-12-debug"); -print Version::parse("2.5.2-beta-12-custom6-debug"); -print Version::parse("2.5.2-beta5-12-debug"); -print Version::parse("2.5.2-beta5-12-custom7-debug"); -print Version::parse("1.12.20-beta-2562-debug"); -print Version::parse("1.12.20-beta-2562-custom8-debug"); -print Version::parse("2.6-936"); +print Version::parse("2.5-beta.12"); +print Version::parse("2.5-beta.12-custom4"); +print Version::parse("2.5.12-debug"); +print Version::parse("2.5.12-custom5-debug"); +print Version::parse("2.5.2-beta.12-debug"); +print Version::parse("2.5.2-beta.12-custom6-debug"); +print Version::parse("2.5.2-beta5.12-debug"); +print Version::parse("2.5.2-beta5.12-custom7-debug"); +print Version::parse("1.12.20-beta.2562-debug"); +print Version::parse("1.12.20-beta.2562-custom8-debug"); +print Version::parse("2.6.936"); print Version::parse("12.5"); print Version::parse("3.0.0"); print Version::parse("3.0.1");