mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 14:48:21 +00:00
zeek-config: Move ZEEK_VERSION* out of zeek-config.h
When bumping the VERSION file, everything that includes the auto-generated zeek/zeek-config.h needs to rebuild and ccache usage is voided due the file changing. Split the mutable version information into a new zeek-version.h file to avoid this. Further, do not include zeek-version.h within Plugin.h and avoid the reference to ZEEK_VERSION_FUNCTION unless we're building an external plugin. Closes #2776.
This commit is contained in:
parent
ebc9563243
commit
d23b1331e5
6 changed files with 63 additions and 22 deletions
|
@ -759,6 +759,9 @@ if ( NOT BINARY_PACKAGING_MODE )
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
string(TOLOWER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_LOWER)
|
string(TOLOWER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_LOWER)
|
||||||
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/zeek-version.h.in
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/zeek-version.h)
|
||||||
|
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/zeek-version.h DESTINATION include/zeek)
|
||||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/zeek-config.h.in
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/zeek-config.h.in
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/zeek-config.h)
|
${CMAKE_CURRENT_BINARY_DIR}/zeek-config.h)
|
||||||
include_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR})
|
include_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR})
|
||||||
|
|
19
NEWS
19
NEWS
|
@ -6,6 +6,25 @@ release. For an exhaustive list of changes, see the ``CHANGES`` file
|
||||||
Zeek 6.0.0
|
Zeek 6.0.0
|
||||||
==========
|
==========
|
||||||
|
|
||||||
|
Breaking Changes
|
||||||
|
----------------
|
||||||
|
|
||||||
|
- The zeek/zeek-config.h header does not provide the macros ZEEK_VERSION and
|
||||||
|
ZEEK_VERSION_NUMBER anymore when compiling builtin plugins. This may affect
|
||||||
|
external plugins included via the configure flag ``--include-plugins``
|
||||||
|
referencing these macros. A suggested update for these plugins is adding
|
||||||
|
the following snippet:
|
||||||
|
|
||||||
|
#if __has_include("zeek/zeek-version.h")
|
||||||
|
#include "zeek/zeek-version.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
External plugins that are built out-of-tree, e.g. via ``zkg`` are not
|
||||||
|
affected by this change.
|
||||||
|
|
||||||
|
The main motivation is improved ccache effectiveness for speedier CI and
|
||||||
|
development builds whenever a VERSION bump happens.
|
||||||
|
|
||||||
New Functionality
|
New Functionality
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,6 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "zeek/zeek-config.h"
|
|
||||||
|
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <list>
|
#include <list>
|
||||||
#include <optional>
|
#include <optional>
|
||||||
|
@ -13,9 +11,15 @@
|
||||||
#include "zeek/ZeekArgs.h"
|
#include "zeek/ZeekArgs.h"
|
||||||
#include "zeek/logging/WriterBackend.h"
|
#include "zeek/logging/WriterBackend.h"
|
||||||
|
|
||||||
|
// Avoid ccache busting of Plugin.h for internal plugins by
|
||||||
|
// only including zeek/zeek-version.h if we're building an
|
||||||
|
// external plugin.
|
||||||
|
#if defined(ZEEK_PLUGIN_INTERNAL_BUILD) && ! ZEEK_PLUGIN_INTERNAL_BUILD
|
||||||
|
#include "zeek/zeek-version.h"
|
||||||
// Remove the BRO define in v6.1.
|
// Remove the BRO define in v6.1.
|
||||||
#define BRO_PLUGIN_BRO_VERSION ZEEK_VERSION_FUNCTION
|
#define BRO_PLUGIN_BRO_VERSION ZEEK_VERSION_FUNCTION
|
||||||
#define ZEEK_PLUGIN_ZEEK_VERSION ZEEK_VERSION_FUNCTION
|
#define ZEEK_PLUGIN_ZEEK_VERSION ZEEK_VERSION_FUNCTION
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace zeek::threading
|
namespace zeek::threading
|
||||||
{
|
{
|
||||||
|
@ -126,8 +130,13 @@ public:
|
||||||
#endif
|
#endif
|
||||||
inline Configuration() __attribute__((always_inline))
|
inline Configuration() __attribute__((always_inline))
|
||||||
{
|
{
|
||||||
|
// Only bake in a ZEEK_PLUGIN_ZEEK_VERSION reference into external
|
||||||
|
// plugins. The internal ones are in the same binary so the runtime
|
||||||
|
// link check shouldn't be needed and we can avoid ccache busting.
|
||||||
|
#if defined(ZEEK_PLUGIN_INTERNAL_BUILD) && ! ZEEK_PLUGIN_INTERNAL_BUILD
|
||||||
bro_version = ZEEK_PLUGIN_ZEEK_VERSION;
|
bro_version = ZEEK_PLUGIN_ZEEK_VERSION;
|
||||||
zeek_version = ZEEK_PLUGIN_ZEEK_VERSION;
|
zeek_version = ZEEK_PLUGIN_ZEEK_VERSION;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
#include "zeek/zeek-config.h"
|
#include "zeek/zeek-version.h"
|
||||||
|
|
||||||
char version[] = "@VERSION@";
|
char version[] = "@VERSION@";
|
||||||
|
|
||||||
|
|
|
@ -141,14 +141,6 @@
|
||||||
/* Use the sqlite reader/writer. */
|
/* Use the sqlite reader/writer. */
|
||||||
#cmakedefine USE_SQLITE
|
#cmakedefine USE_SQLITE
|
||||||
|
|
||||||
/* Version number of package */
|
|
||||||
#define VERSION "@VERSION@"
|
|
||||||
|
|
||||||
// Zeek version number.
|
|
||||||
// This is the result of (major * 10000 + minor * 100 + patch)
|
|
||||||
// For example, 3.1.2 becomes 30102.
|
|
||||||
#define ZEEK_VERSION_NUMBER @ZEEK_VERSION_NUMBER@
|
|
||||||
|
|
||||||
/* whether words are stored with the most significant byte first */
|
/* whether words are stored with the most significant byte first */
|
||||||
#cmakedefine WORDS_BIGENDIAN
|
#cmakedefine WORDS_BIGENDIAN
|
||||||
|
|
||||||
|
@ -251,19 +243,18 @@
|
||||||
/* String with extension of dynamic libraries (e.g., ".so") */
|
/* String with extension of dynamic libraries (e.g., ".so") */
|
||||||
#define DYNAMIC_PLUGIN_SUFFIX "@CMAKE_SHARED_MODULE_SUFFIX@"
|
#define DYNAMIC_PLUGIN_SUFFIX "@CMAKE_SHARED_MODULE_SUFFIX@"
|
||||||
|
|
||||||
/* True if we're building outside of the main Zeek source code tree. */
|
/* Set if we're building outside of the main Zeek source code tree. */
|
||||||
#ifndef ZEEK_PLUGIN_INTERNAL_BUILD
|
#ifndef ZEEK_PLUGIN_INTERNAL_BUILD
|
||||||
#define ZEEK_PLUGIN_INTERNAL_BUILD @ZEEK_PLUGIN_INTERNAL_BUILD@
|
#define ZEEK_PLUGIN_INTERNAL_BUILD true
|
||||||
|
#else
|
||||||
|
// Backwards compat for external plugins, include the version
|
||||||
|
// identifiers through zeek/zeek-version.h.
|
||||||
|
#if ! ZEEK_PLUGIN_INTERNAL_BUILD
|
||||||
|
#include "zeek/zeek-version.h"
|
||||||
#endif
|
#endif
|
||||||
|
//
|
||||||
/* A C function that has the Zeek version encoded into its name. */
|
// Not sure we can ever deprecate this without changing
|
||||||
#define ZEEK_VERSION_FUNCTION zeek_version_@VERSION_C_IDENT@
|
// the names.
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
extern const char* ZEEK_VERSION_FUNCTION();
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// GCC uses __SANITIZE_ADDRESS__, Clang uses __has_feature
|
// GCC uses __SANITIZE_ADDRESS__, Clang uses __has_feature
|
||||||
|
|
19
zeek-version.h.in
Normal file
19
zeek-version.h.in
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
/* Version number of package */
|
||||||
|
#define VERSION "@VERSION@"
|
||||||
|
|
||||||
|
// Zeek version number.
|
||||||
|
// This is the result of (major * 10000 + minor * 100 + patch)
|
||||||
|
// For example, 3.1.2 becomes 30102.
|
||||||
|
#define ZEEK_VERSION_NUMBER @ZEEK_VERSION_NUMBER@
|
||||||
|
|
||||||
|
/* A C function that has the Zeek version encoded into its name. */
|
||||||
|
#define ZEEK_VERSION_FUNCTION zeek_version_@VERSION_C_IDENT@
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
extern const char* ZEEK_VERSION_FUNCTION();
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
Loading…
Add table
Add a link
Reference in a new issue