summaryrefslogtreecommitdiffstats
path: root/debian/patches
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches')
-rw-r--r--debian/patches/0001-Pull-version-information-from-debian-changelog-avoid.patch119
-rw-r--r--debian/patches/0002-Use-system-libsexpp-library.patch175
-rw-r--r--debian/patches/0003-test_set_expire-increase-short-expiry-time-from-10s-.patch33
-rw-r--r--debian/patches/series3
4 files changed, 330 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
diff --git a/debian/patches/0002-Use-system-libsexpp-library.patch b/debian/patches/0002-Use-system-libsexpp-library.patch
new file mode 100644
index 0000000..4338313
--- /dev/null
+++ b/debian/patches/0002-Use-system-libsexpp-library.patch
@@ -0,0 +1,175 @@
+From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
+Date: Wed, 21 Jun 2023 14:12:26 +0200
+Subject: Use system libsexpp library
+
+cherry picked the necessary pieces from upstream commits:
+
+ 3e9831ac3409095db40b7967866b9197eb36ff64
+ df4f24bd48b6691692379f1370fde3c12e96e3ab
+ f9147e72a369f1e412d2f2385cf23a3e9dd6882d
+ 82d9747f1da36db0393c122b451a847cf561bb7c
+---
+ CMakeLists.txt | 29 +++++++++++++++++++++++++----
+ src/lib/CMakeLists.txt | 28 +++++++++++++++++++---------
+ src/librekey/g23_sexp.hpp | 4 ++--
+ src/tests/CMakeLists.txt | 3 ++-
+ 4 files changed, 48 insertions(+), 16 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index bb6d40c..1d75f1a 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -58,6 +58,8 @@ option(ENABLE_COVERAGE "Enable code coverage testing.")
+ option(ENABLE_SANITIZERS "Enable ASan and other sanitizers.")
+ option(ENABLE_FUZZERS "Enable fuzz targets.")
+ option(DOWNLOAD_GTEST "Download Googletest" On)
++option(SYSTEM_LIBSEXPP "Use system sexpp library" OFF)
++
+ # crypto components
+ function(tristate_feature_auto NAME DESCRIPTION)
+ set(${NAME} Auto CACHE STRING ${DESCRIPTION})
+@@ -176,10 +178,29 @@ if (ENABLE_FUZZERS)
+ endif()
+ add_subdirectory(src/common)
+
+-set(WITH_SEXP_CLI OFF)
+-set(WITH_SEXP_TESTS OFF)
+-set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME development)
+-add_subdirectory(src/libsexp EXCLUDE_FROM_ALL)
++if (SYSTEM_LIBSEXPP)
++ find_package(PkgConfig QUIET)
++ pkg_check_modules(REQUIRED sexpp>=0.8.7)
++ find_library(SEXPP_LIBRARY
++ NAMES
++ "libsexpp"
++ "sexpp"
++ HINTS
++ "${SEXPP_LIBRARY_DIRS}"
++ )
++ add_library(sexpp UNKNOWN IMPORTED)
++ set_target_properties(sexpp
++ PROPERTIES
++ INTERFACE_INCLUDE_DIRECTORIES "${SEXPP_INCLUDE_DIR}"
++ IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
++ IMPORTED_LOCATION "${SEXPP_LIBRARY}"
++ )
++else (SYSTEM_LIBSEXPP)
++ set(WITH_SEXP_CLI OFF)
++ set(WITH_SEXP_TESTS OFF)
++ set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME development)
++ add_subdirectory(src/libsexp EXCLUDE_FROM_ALL)
++endif(SYSTEM_LIBSEXPP)
+
+ add_subdirectory(src/lib)
+ add_subdirectory(src/rnp)
+diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt
+index 086ac57..e05d1c1 100755
+--- a/src/lib/CMakeLists.txt
++++ b/src/lib/CMakeLists.txt
+@@ -320,6 +320,7 @@ target_include_directories(librnp-obj
+ PRIVATE
+ "${CMAKE_CURRENT_SOURCE_DIR}"
+ "${PROJECT_SOURCE_DIR}/src"
++ "${SEXPP_INCLUDE_DIRS}"
+ )
+ target_link_libraries(librnp-obj PRIVATE JSON-C::JSON-C)
+ if (CRYPTO_BACKEND_BOTAN)
+@@ -328,7 +329,7 @@ elseif (CRYPTO_BACKEND_OPENSSL)
+ target_link_libraries(librnp-obj PRIVATE OpenSSL::Crypto)
+ endif()
+
+-target_link_libraries(librnp-obj PRIVATE sexp)
++target_link_libraries(librnp-obj PRIVATE sexpp)
+
+ set_target_properties(librnp-obj PROPERTIES CXX_VISIBILITY_PRESET hidden)
+ if (TARGET BZip2::BZip2)
+@@ -384,7 +385,7 @@ foreach (prop LINK_LIBRARIES INTERFACE_LINK_LIBRARIES INCLUDE_DIRECTORIES INTERF
+ get_target_property(val librnp-obj ${prop})
+ if (BUILD_SHARED_LIBS)
+ set_property(TARGET librnp-static PROPERTY ${prop} ${val})
+- list(REMOVE_ITEM val "$<LINK_ONLY:sexp>")
++ list(REMOVE_ITEM val "$<LINK_ONLY:sexpp>")
+ set_property(TARGET librnp PROPERTY ${prop} ${val})
+ else()
+ set_property(TARGET librnp PROPERTY ${prop} ${val})
+@@ -417,8 +418,8 @@ endif()
+ # On Unix like systems we will build/install/pack shared and static libraries librnp.so and librnp.a
+ # On Windows we will build/install/pack dynamic, import and static libraries rnp.dll, rnp.lib and rnp-static.lib
+
+-# If a client application uses shared rnp library, sexp is statically linked to librnp.so
+-# If a client application uses static rnp library, it still needs libsexp.a
++# If a client application uses shared rnp library, sexpp is statically linked to librnp.so
++# If a client application uses static rnp library, it still needs libsexpp.a
+
+ if (BUILD_SHARED_LIBS)
+ # both static and shared libraries
+@@ -432,21 +433,30 @@ install(TARGETS librnp
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ COMPONENT development
+ )
+-
+- install(TARGETS librnp-static sexp
++ install(TARGETS librnp-static
+ EXPORT rnp-targets
+ ARCHIVE
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ COMPONENT development
+ )
+ else(BUILD_SHARED_LIBS)
+-# static libraries only
+-install(TARGETS librnp sexp
++# static libraries
++# install libsexpp unless system-installed libsexpp is used
++ if (SYSTEM_LIBSEXPP)
++ install(TARGETS librnp
++ EXPORT rnp-targets
++ ARCHIVE
++ DESTINATION "${CMAKE_INSTALL_LIBDIR}"
++ COMPONENT development
++ )
++ else (SYSTEM_LIBSEXPP)
++ install(TARGETS librnp sexpp
+ EXPORT rnp-targets
+ ARCHIVE
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ COMPONENT development
+-)
++ )
++ endif (SYSTEM_LIBSEXPP)
+ endif(BUILD_SHARED_LIBS)
+
+ # install dll only for windows
+diff --git a/src/librekey/g23_sexp.hpp b/src/librekey/g23_sexp.hpp
+index b888680..b062c52 100644
+--- a/src/librekey/g23_sexp.hpp
++++ b/src/librekey/g23_sexp.hpp
+@@ -27,8 +27,8 @@
+ #ifndef RNP_G23_SEXP_HPP
+ #define RNP_G23_SEXP_HPP
+
+-#include "sexp/sexp.h"
+-#include "sexp/ext-key-format.h"
++#include "sexpp/sexp.h"
++#include "sexpp/ext-key-format.h"
+
+ #define SXP_MAX_DEPTH 30
+
+diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt
+index 7d2a6b0..16d30fb 100644
+--- a/src/tests/CMakeLists.txt
++++ b/src/tests/CMakeLists.txt
+@@ -171,12 +171,13 @@ target_include_directories(rnp_tests
+ "${PROJECT_SOURCE_DIR}/src"
+ "${PROJECT_SOURCE_DIR}/src/lib"
+ "${BOTAN2_INCLUDE_DIRS}"
++ "${SEXPP_INCLUDE_DIRS}"
+ )
+ target_link_libraries(rnp_tests
+ PRIVATE
+ librnp-static
+ JSON-C::JSON-C
+- sexp
++ sexpp
+ ${GTestMain}
+ )
+ if (CRYPTO_BACKEND_LOWERCASE STREQUAL "openssl")
diff --git a/debian/patches/0003-test_set_expire-increase-short-expiry-time-from-10s-.patch b/debian/patches/0003-test_set_expire-increase-short-expiry-time-from-10s-.patch
new file mode 100644
index 0000000..35ba2f4
--- /dev/null
+++ b/debian/patches/0003-test_set_expire-increase-short-expiry-time-from-10s-.patch
@@ -0,0 +1,33 @@
+From: Andreas Stieger <Andreas.Stieger@gmx.de>
+Date: Mon, 19 Jun 2023 23:21:43 +0200
+Subject: test_set_expire: increase short expiry time from 10s to 60s
+
+Fixes #2100, #2059
+
+(cherry picked from commit 3be41e061e28ffe0bc368b6cce57c4e07a6d1983)
+---
+ src/tests/cli_tests.py | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/tests/cli_tests.py b/src/tests/cli_tests.py
+index e6f5ed7..f0bcc75 100755
+--- a/src/tests/cli_tests.py
++++ b/src/tests/cli_tests.py
+@@ -1997,14 +1997,14 @@ class Keystore(unittest.TestCase):
+ matches = re.findall(r'(key expiration time: 63072000 seconds \(730 days\))', out)
+ self.assertEqual(len(matches), 1)
+
+- # Expires in 10 seconds
+- ret, out, _ = run_proc(RNPK, ['--homedir', RNPDIR, '--edit-key', '--set-expire', '10', 'primary_with_empty_password@rnp'])
++ # Expires in 60 seconds
++ ret, out, _ = run_proc(RNPK, ['--homedir', RNPDIR, '--edit-key', '--set-expire', '60', 'primary_with_empty_password@rnp'])
+ self.assertEqual(ret, 0)
+ self.assertRegex(out, r'(?s)^.*\[EXPIRES .*')
+
+ ret, out, _ = run_proc(RNP, ['--list-packets', kpath])
+ self.assertEqual(ret, 0)
+- self.assertRegex(out, r'(?s)^.*key expiration time: 10 seconds \(0 days\).*')
++ self.assertRegex(out, r'(?s)^.*key expiration time: 60 seconds \(0 days\).*')
+
+ # Expires in 10 hours
+ ret, out, _ = run_proc(RNPK, ['--homedir', RNPDIR, '--edit-key', '--set-expire', '10h', 'primary_with_empty_password@rnp'])
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..0e06ee0
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1,3 @@
+0001-Pull-version-information-from-debian-changelog-avoid.patch
+0002-Use-system-libsexpp-library.patch
+0003-test_set_expire-increase-short-expiry-time-from-10s-.patch