diff options
Diffstat (limited to 'debian/patches')
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 |