summaryrefslogtreecommitdiffstats
path: root/debian/patches/0001-Pull-version-information-from-debian-changelog-avoid.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/0001-Pull-version-information-from-debian-changelog-avoid.patch')
-rw-r--r--debian/patches/0001-Pull-version-information-from-debian-changelog-avoid.patch119
1 files changed, 119 insertions, 0 deletions
diff --git a/debian/patches/0001-Pull-version-information-from-debian-changelog-avoid.patch b/debian/patches/0001-Pull-version-information-from-debian-changelog-avoid.patch
new file mode 100644
index 0000000..a08e667
--- /dev/null
+++ b/debian/patches/0001-Pull-version-information-from-debian-changelog-avoid.patch
@@ -0,0 +1,119 @@
+From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
+Date: Thu, 28 Oct 2021 10:18:00 -0400
+Subject: Pull version information from debian/changelog (avoid git
+ shenanigans)
+
+Forwarded: not-needed
+---
+ cmake/version.cmake | 93 +++++++----------------------------------------------
+ 1 file changed, 11 insertions(+), 82 deletions(-)
+
+diff --git a/cmake/version.cmake b/cmake/version.cmake
+index f74126e..ff100f4 100644
+--- a/cmake/version.cmake
++++ b/cmake/version.cmake
+@@ -67,93 +67,22 @@ function(extract_version_info version var_prefix)
+ endfunction()
+
+ function(determine_version source_dir var_prefix)
+- set(has_release_tag NO)
+- set(has_version_txt NO)
+- set(local_prefix "_determine_ver")
+- # find out base version via version.txt
+- set(base_version "0.0.0")
+- if (EXISTS "${source_dir}/version.txt")
+- set(has_version_txt YES)
+- file(STRINGS "${source_dir}/version.txt" version_file)
+- extract_version_info("${version_file}" "${local_prefix}")
+- set(base_version "${${local_prefix}_VERSION}")
+- message(STATUS "Found version.txt with ${version_file}")
++ # Debian-specific version information
++ if(DEFINED ENV{DEB_VERSION})
++ set(version_full "$ENV{DEB_VERSION}")
+ else()
+- message(STATUS "Found no version.txt.")
++ message(FATAL_ERROR "DEB_VERSION not defined")
+ endif()
+- # for GIT_EXECUTABLE
+- find_package(Git)
+- # get a description of the version, something like:
+- # v1.9.1-0-g38ffe82 (a tagged release)
+- # v1.9.1-0-g38ffe82-dirty (a tagged release with local modifications)
+- # v1.9.0-3-g5b92266 (post-release snapshot)
+- # v1.9.0-3-g5b92266-dirty (post-release snapshot with local modifications)
+- _git(version describe --abbrev=${GIT_REV_LEN} --match "v[0-9]*" --long --dirty)
+- if (NOT _git_ec EQUAL 0)
+- # no annotated tags, fake one
+- message(STATUS "Found no annotated tags.")
+- _git(revision rev-parse --short=${GIT_REV_LEN} --verify HEAD)
+- if (_git_ec EQUAL 0)
+- set(version "v${base_version}-0-g${revision}")
+- # check if dirty (this won't detect untracked files, but should be ok)
+- _git(changes diff-index --quiet HEAD --)
+- if (NOT _git_ec EQUAL 0)
+- string(APPEND version "-dirty")
+- endif()
+- # append the commit timestamp of the most recent commit (only
+- # in non-release branches -- typically master)
+- _git(commit_timestamp show -s --format=%ct)
+- if (_git_ec EQUAL 0)
+- string(APPEND version "+${commit_timestamp}")
+- endif()
+- elseif(has_version_txt)
+- # Nothing to get from git - so use version.txt completely
+- set(version "${version_file}")
+- else()
+- # Sad case - no git, no version.txt
+- set(version "v${base_version}")
+- endif()
++ if(DEFINED ENV{SOURCE_DATE_EPOCH})
++ set(commit_timestamp "$ENV{SOURCE_DATE_EPOCH}")
+ else()
+- set(has_release_tag YES)
+- message(STATUS "Found annotated tag ${version}")
++ message(FATAL_ERROR "SOURCE_DATE_EPOCH not defined")
+ endif()
+- extract_version_info("${version}" "${local_prefix}")
+- if ("${has_version_txt}" AND NOT ${base_version} STREQUAL ${local_prefix}_VERSION)
+- message(WARNING "Tagged version ${${local_prefix}_VERSION} doesn't match one from the version.txt: ${base_version}")
+- if (${base_version} VERSION_GREATER ${local_prefix}_VERSION)
+- set(${local_prefix}_VERSION ${base_version})
+- endif()
+- endif()
+- foreach(suffix VERSION VERSION_NCOMMITS VERSION_GIT_REV VERSION_IS_DIRTY VERSION_COMMIT_TIMESTAMP)
+- if (NOT DEFINED ${local_prefix}_${suffix})
+- message(FATAL_ERROR "Unable to determine version.")
+- endif()
+- set(${var_prefix}_${suffix} "${${local_prefix}_${suffix}}" PARENT_SCOPE)
+- message(STATUS "${var_prefix}_${suffix}: ${${local_prefix}_${suffix}}")
+- endforeach()
+- # Set VERSION_SUFFIX and VERSION_FULL. When making changes, be aware that
+- # this is used in packaging as well and will affect ordering.
+- # | state | version_full |
+- # |-----------------------------------------------------|
+- # | exact tag | 0.9.0 |
+- # | exact tag, dirty | 0.9.0+git20180604 |
+- # | after tag | 0.9.0+git20180604.1.085039f |
+- # | no tag, version.txt | 0.9.0+git20180604.2ee02af |
+- # | no tag, no version.txt| 0.0.0+git20180604.2ee02af |
+- string(TIMESTAMP date "%Y%m%d" UTC)
+- set(version_suffix "")
+- if (NOT ${local_prefix}_VERSION_NCOMMITS EQUAL 0)
+- # 0.9.0+git20150604.4.289818b
+- string(APPEND version_suffix "+git${date}.${${local_prefix}_VERSION_NCOMMITS}.${${local_prefix}_VERSION_GIT_REV}")
+- elseif ((NOT has_release_tag) AND ((NOT has_version_txt) OR ("${base_version}" STREQUAL "0.0.0") OR (NOT "${revision}" STREQUAL "")))
+- # 0.9.0+git20150604.289818b
+- string(APPEND version_suffix "+git${date}.${${local_prefix}_VERSION_GIT_REV}")
+- elseif(${local_prefix}_VERSION_IS_DIRTY)
+- # 0.9.0+git20150604
+- string(APPEND version_suffix "+git${date}")
+- endif()
+- set(version_full "${${local_prefix}_VERSION}${version_suffix}")
++ string(REGEX REPLACE "^.*-" "-" version_suffix "${version_full}")
++ string(REGEX REPLACE "-[^-]*$" "" version_upstream "${version_full}")
+ # set the results
++ set(${var_prefix}_VERSION "${version_upstream}" PARENT_SCOPE)
++ set(${var_prefix}_VERSION_COMMIT_TIMESTAMP "${commit_timestamp}" PARENT_SCOPE)
+ set(${var_prefix}_VERSION_SUFFIX "${version_suffix}" PARENT_SCOPE)
+ set(${var_prefix}_VERSION_FULL "${version_full}" PARENT_SCOPE)
+ # for informational purposes