diff --git a/CMakeLists.txt b/CMakeLists.txt index 87065b835ae..d9ad458d802 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ # -# Copyright (C) 2019 The Falco Authors. +# Copyright (C) 2023 The Falco Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at @@ -118,8 +118,6 @@ set(CMAKE_CXX_FLAGS_DEBUG "${FALCO_EXTRA_DEBUG_FLAGS}") set(CMAKE_C_FLAGS_RELEASE "-O3 -fno-strict-aliasing -DNDEBUG") set(CMAKE_CXX_FLAGS_RELEASE "-O3 -fno-strict-aliasing -DNDEBUG") -include(GetFalcoVersion) - set(PACKAGE_NAME "falco") set(DRIVER_NAME "falco") set(DRIVER_DEVICE_NAME "falco") @@ -147,6 +145,9 @@ include(ExternalProject) # libs include(falcosecurity-libs) +# compute FALCO_VERSION (depends on libs) +include(falco-version) + # jq include(jq) diff --git a/cmake/modules/GetFalcoVersion.cmake b/cmake/modules/GetFalcoVersion.cmake deleted file mode 100644 index cd9e5bf3fd5..00000000000 --- a/cmake/modules/GetFalcoVersion.cmake +++ /dev/null @@ -1,84 +0,0 @@ -# -# Copyright (C) 2020 The Falco Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the -# specific language governing permissions and limitations under the License. -# - -# Retrieve git ref and commit hash -include(GetGitRevisionDescription) - -# Create the falco version variable according to git index -if(NOT FALCO_VERSION) - # Try to obtain the exact git tag - git_get_exact_tag(FALCO_TAG) - if(NOT FALCO_TAG) - # Obtain the closest tag - git_describe(FALCO_VERSION "--always" "--tags" "--abbrev=7") - string(REGEX MATCH "^[0-9]+.[0-9]+.[0-9]+$" FALCO_TAG ${FALCO_VERSION}) - if(FALCO_VERSION MATCHES "NOTFOUND$" OR FALCO_TAG STREQUAL "") - # Fetch current hash - get_git_head_revision(refspec FALCO_HASH) - if(NOT FALCO_HASH OR FALCO_HASH MATCHES "NOTFOUND$") - set(FALCO_VERSION "0.0.0") - else() - # Obtain the closest tag - git_get_latest_tag(FALCO_LATEST_TAG) - if(NOT FALCO_LATEST_TAG OR FALCO_LATEST_TAG MATCHES "NOTFOUND$") - set(FALCO_VERSION "0.0.0") - else() - # Compute commit delta since tag - git_get_delta_from_tag(FALCO_DELTA ${FALCO_LATEST_TAG} ${FALCO_HASH}) - if(NOT FALCO_DELTA OR FALCO_DELTA MATCHES "NOTFOUND$") - set(FALCO_VERSION "0.0.0") - else() - # Cut hash to 7 bytes - string(SUBSTRING ${FALCO_HASH} 0 7 FALCO_HASH) - # Format FALCO_VERSION to be semver with prerelease and build part - set(FALCO_VERSION - "${FALCO_LATEST_TAG}-${FALCO_DELTA}+${FALCO_HASH}") - endif() - endif() - endif() - endif() - # Format FALCO_VERSION to be semver with prerelease and build part - string(REPLACE "-g" "+" FALCO_VERSION "${FALCO_VERSION}") - else() - # A tag has been found: use it as the Falco version - set(FALCO_VERSION "${FALCO_TAG}") - endif() -endif() - -# Remove the starting "v" in case there is one -string(REGEX REPLACE "^v(.*)" "\\1" FALCO_VERSION "${FALCO_VERSION}") - -# TODO(leodido) > ensure Falco version is semver before extracting parts Populate partial version variables -string(REGEX MATCH "^(0|[1-9][0-9]*)" FALCO_VERSION_MAJOR "${FALCO_VERSION}") -string(REGEX REPLACE "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\..*" "\\2" FALCO_VERSION_MINOR "${FALCO_VERSION}") -string(REGEX REPLACE "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*).*" "\\3" FALCO_VERSION_PATCH - "${FALCO_VERSION}") -string( - REGEX - REPLACE - "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)-((0|[1-9][0-9]*|[0-9]*[a-zA-Z-][0-9a-zA-Z-]*)(\\.(0|[1-9][0-9]*|[0-9]*[a-zA-Z-][0-9a-zA-Z-]*))*).*" - "\\5" - FALCO_VERSION_PRERELEASE - "${FALCO_VERSION}") - -if(FALCO_VERSION_PRERELEASE STREQUAL "${FALCO_VERSION}") - set(FALCO_VERSION_PRERELEASE "") -endif() -if(NOT FALCO_VERSION_BUILD) - string(REGEX REPLACE ".*\\+([0-9a-zA-Z-]+(\\.[0-9a-zA-Z-]+)*)" "\\1" FALCO_VERSION_BUILD "${FALCO_VERSION}") -endif() -if(FALCO_VERSION_BUILD STREQUAL "${FALCO_VERSION}") - set(FALCO_VERSION_BUILD "") -endif() - -message(STATUS "Falco version: ${FALCO_VERSION}") diff --git a/cmake/modules/falco-version.cmake b/cmake/modules/falco-version.cmake new file mode 100644 index 00000000000..e68bbe4f1a9 --- /dev/null +++ b/cmake/modules/falco-version.cmake @@ -0,0 +1,48 @@ +# +# Copyright (C) 2020 The Falco Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the +# specific language governing permissions and limitations under the License. +# + +# Retrieve git ref and commit hash +include(GetVersionFromGit) + +# Get Falco version variable according to git index +if(NOT FALCO_VERSION) + set(FALCO_VERSION "0.0.0") + get_version_from_git(FALCO_VERSION "" "") +endif() + +# Remove the starting "v" in case there is one +string(REGEX REPLACE "^v(.*)" "\\1" FALCO_VERSION "${FALCO_VERSION}") + +string(REGEX MATCH "^(0|[1-9][0-9]*)" FALCO_VERSION_MAJOR "${FALCO_VERSION}") +string(REGEX REPLACE "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\..*" "\\2" FALCO_VERSION_MINOR "${FALCO_VERSION}") +string(REGEX REPLACE "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*).*" "\\3" FALCO_VERSION_PATCH + "${FALCO_VERSION}") +string( + REGEX + REPLACE + "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)-((0|[1-9][0-9]*|[0-9]*[a-zA-Z-][0-9a-zA-Z-]*)(\\.(0|[1-9][0-9]*|[0-9]*[a-zA-Z-][0-9a-zA-Z-]*))*).*" + "\\5" + FALCO_VERSION_PRERELEASE + "${FALCO_VERSION}") + +if(FALCO_VERSION_PRERELEASE STREQUAL "${FALCO_VERSION}") + set(FALCO_VERSION_PRERELEASE "") +endif() +if(NOT FALCO_VERSION_BUILD) + string(REGEX REPLACE ".*\\+([0-9a-zA-Z-]+(\\.[0-9a-zA-Z-]+)*)" "\\1" FALCO_VERSION_BUILD "${FALCO_VERSION}") +endif() +if(FALCO_VERSION_BUILD STREQUAL "${FALCO_VERSION}") + set(FALCO_VERSION_BUILD "") +endif() + +message(STATUS "Falco version: ${FALCO_VERSION}")