diff options
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.patch | 119 |
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 |