aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/patches
diff options
context:
space:
mode:
authorJustus Winter <justus@sequoia-pgp.org>2020-07-27 15:44:13 +0200
committerLudovic Courtès <ludo@gnu.org>2020-07-29 00:22:01 +0200
commit7b7543376bd495c269536d04d97b381ad89da5c4 (patch)
treeb0ea325aa6bda256bbf200f9bcc63e7d2751cc97 /gnu/packages/patches
parente402ccd00308d2db6ff86d4bd180c25c8dd0ce87 (diff)
downloadguix-7b7543376bd495c269536d04d97b381ad89da5c4.tar
guix-7b7543376bd495c269536d04d97b381ad89da5c4.tar.gz
gnu: Add rnp.
* gnu/packages/openpgp.scm (rnp): New variable. * gnu/packages/patches/rnp-add-version.cmake.patch: New file. * gnu/packages/patches/rnp-disable-ruby-rnp-tests.patch: New file. * gnu/packages/patches/rnp-unbundle-googletest.patch: New file. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Diffstat (limited to 'gnu/packages/patches')
-rw-r--r--gnu/packages/patches/rnp-add-version.cmake.patch169
-rw-r--r--gnu/packages/patches/rnp-disable-ruby-rnp-tests.patch26
-rw-r--r--gnu/packages/patches/rnp-unbundle-googletest.patch43
3 files changed, 238 insertions, 0 deletions
diff --git a/gnu/packages/patches/rnp-add-version.cmake.patch b/gnu/packages/patches/rnp-add-version.cmake.patch
new file mode 100644
index 0000000000..67e3b75457
--- /dev/null
+++ b/gnu/packages/patches/rnp-add-version.cmake.patch
@@ -0,0 +1,169 @@
+From b4326f4649ceb146d5cc74f8579b68d8dc8f51e6 Mon Sep 17 00:00:00 2001
+From: Justus Winter <teythoon@avior.uberspace.de>
+Date: Mon, 27 Jul 2020 14:00:25 +0200
+Subject: [PATCH 3/3] Add external version.cmake.
+
+This file is maintained in an external repository. It is only
+included in released versions. For building snapshots of RNP, a fixed
+snapshot of version.cmake is downloaded on demand. To avoid this,
+this patch explicitly provides the file.
+---
+ cmake/version.cmake | 146 ++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 146 insertions(+)
+ create mode 100644 cmake/version.cmake
+
+diff --git a/cmake/version.cmake b/cmake/version.cmake
+new file mode 100644
+index 00000000..514027aa
+--- /dev/null
++++ b/cmake/version.cmake
+@@ -0,0 +1,146 @@
++# Copyright (c) 2018 Ribose Inc.
++# All rights reserved.
++#
++# Redistribution and use in source and binary forms, with or without
++# modification, are permitted provided that the following conditions
++# are met:
++# 1. Redistributions of source code must retain the above copyright
++# notice, this list of conditions and the following disclaimer.
++# 2. Redistributions in binary form must reproduce the above copyright
++# notice, this list of conditions and the following disclaimer in the
++# documentation and/or other materials provided with the distribution.
++#
++# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
++# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
++# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
++# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS
++# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
++# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
++# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
++# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
++# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
++# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
++# POSSIBILITY OF SUCH DAMAGE.
++
++# desired length of commit hash
++set(GIT_REV_LEN 7)
++
++# call git, store output in var (can fail)
++macro(_git var)
++ execute_process(
++ COMMAND "${GIT_EXECUTABLE}" ${ARGN}
++ WORKING_DIRECTORY "${source_dir}"
++ RESULT_VARIABLE _git_ec
++ OUTPUT_VARIABLE ${var}
++ OUTPUT_STRIP_TRAILING_WHITESPACE
++ ERROR_QUIET
++ )
++endmacro()
++
++# call git, store output in var (can not fail)
++macro(git var)
++ _git(${var} ${ARGN})
++ if (NOT _git_ec EQUAL 0)
++ string(REPLACE ";" " " args "${ARGN}")
++ message(FATAL_ERROR "Failed to execute: git ${args}")
++ endif()
++endmacro()
++
++function(extract_version_info version var_prefix)
++ # extract the main components
++ # v1.9.0-3-g5b92266+1546836556
++ # v1.9.0-3-g5b92266-dirty+1546836556
++ string(REGEX MATCH "^v?([0-9]+\\.[0-9]+\\.[0-9]+)(-([0-9]+)-g([0-9a-f]+)(-dirty)?)?(\\+([0-9]+))?$" matches "${version}")
++ if (NOT matches)
++ message(FATAL_ERROR "Failed to extract version components.")
++ endif()
++ set(${var_prefix}_VERSION "${CMAKE_MATCH_1}" PARENT_SCOPE) # 1.9.0
++ if (NOT CMAKE_MATCH_3)
++ set(CMAKE_MATCH_3 "0")
++ endif()
++ set(${var_prefix}_VERSION_NCOMMITS "${CMAKE_MATCH_3}" PARENT_SCOPE) # 3
++ if (NOT CMAKE_MATCH_4)
++ set(CMAKE_MATCH_4 "0")
++ endif()
++ set(${var_prefix}_VERSION_GIT_REV "${CMAKE_MATCH_4}" PARENT_SCOPE) # 5b92266
++ if (CMAKE_MATCH_5 STREQUAL "-dirty")
++ set(${var_prefix}_VERSION_IS_DIRTY TRUE PARENT_SCOPE)
++ else()
++ set(${var_prefix}_VERSION_IS_DIRTY FALSE PARENT_SCOPE)
++ endif()
++ # timestamp is optional, default to 0
++ if (NOT CMAKE_MATCH_7)
++ set(CMAKE_MATCH_7 "0")
++ endif()
++ set(${var_prefix}_VERSION_COMMIT_TIMESTAMP "${CMAKE_MATCH_7}" PARENT_SCOPE) # 1546836556
++endfunction()
++
++function(determine_version source_dir var_prefix)
++ if (EXISTS "${source_dir}/.git")
++ # for GIT_EXECUTABLE
++ find_package(Git REQUIRED)
++ # 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
++ git(revision rev-parse --short=${GIT_REV_LEN} --verify HEAD)
++ set(version "v0.0.0-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)
++ string(APPEND version "+${commit_timestamp}")
++ endif()
++ else()
++ # same as above, but used for snapshots
++ file(STRINGS "${source_dir}/version.txt" version)
++ endif()
++ set(local_prefix "_determine_ver")
++ extract_version_info("${version}" "${local_prefix}")
++ 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 | 0.0.0+git20180604.2ee02af |
++ string(TIMESTAMP date "%Y%m%d" UTC)
++ set(version_suffix "")
++ if ((NOT ${local_prefix}_VERSION_NCOMMITS EQUAL 0) OR (${local_prefix}_VERSION STREQUAL "0.0.0"))
++ # 0.9.0+git20150604.4.289818b
++ string(APPEND version_suffix "+git${date}")
++ if (NOT ${local_prefix}_VERSION_NCOMMITS EQUAL 0)
++ string(APPEND version_suffix ".${${local_prefix}_VERSION_NCOMMITS}")
++ endif()
++ string(APPEND version_suffix ".${${local_prefix}_VERSION_GIT_REV}")
++ else()
++ if (${local_prefix}_VERSION_IS_DIRTY)
++ # 0.9.0+git20150604
++ string(APPEND version_suffix "+git${date}")
++ endif()
++ endif()
++ set(version_full "${${local_prefix}_VERSION}${version_suffix}")
++ # set the results
++ set(${var_prefix}_VERSION_SUFFIX "${version_suffix}" PARENT_SCOPE)
++ set(${var_prefix}_VERSION_FULL "${version_full}" PARENT_SCOPE)
++ # for informational purposes
++ message(STATUS "${var_prefix}_VERSION_SUFFIX: ${version_suffix}")
++ message(STATUS "${var_prefix}_VERSION_FULL: ${version_full}")
++endfunction()
++
+--
+2.20.1
+
diff --git a/gnu/packages/patches/rnp-disable-ruby-rnp-tests.patch b/gnu/packages/patches/rnp-disable-ruby-rnp-tests.patch
new file mode 100644
index 0000000000..5a75b6f40f
--- /dev/null
+++ b/gnu/packages/patches/rnp-disable-ruby-rnp-tests.patch
@@ -0,0 +1,26 @@
+From 40e53d639d86337cf58be3a2b9750b6c97a3c740 Mon Sep 17 00:00:00 2001
+From: Justus Winter <teythoon@avior.uberspace.de>
+Date: Tue, 21 Jul 2020 16:10:21 +0200
+Subject: [PATCH 2/2] Disable ruby-rnp tests.
+
+Prevents cmake from cloning the ruby-rnp repository in order to run its tests.
+---
+ src/tests/CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt
+index d3c4fbe6..e7e1965e 100644
+--- a/src/tests/CMakeLists.txt
++++ b/src/tests/CMakeLists.txt
+@@ -125,7 +125,7 @@ gtest_discover_tests(rnp_tests
+
+ # ruby-rnp
+ # cruby does not currently play nice with ASaN et al.
+-if (NOT ENABLE_SANITIZERS AND BUILD_SHARED_LIBS AND NOT WIN32)
++if (NOT ENABLE_SANITIZERS AND BUILD_SHARED_LIBS AND NOT WIN32 AND IGNORE)
+ include(ExternalProject)
+ set(_sourcedir "${CMAKE_BINARY_DIR}/ruby-rnp")
+ if (DEFINED ENV{RUBY_RNP_INSTALL})
+--
+2.20.1
+
diff --git a/gnu/packages/patches/rnp-unbundle-googletest.patch b/gnu/packages/patches/rnp-unbundle-googletest.patch
new file mode 100644
index 0000000000..b85bfd1f0e
--- /dev/null
+++ b/gnu/packages/patches/rnp-unbundle-googletest.patch
@@ -0,0 +1,43 @@
+From 4b4697c8dd66bd2b1e4d6b831bbde46e27d62c46 Mon Sep 17 00:00:00 2001
+From: Justus Winter <teythoon@avior.uberspace.de>
+Date: Tue, 21 Jul 2020 16:10:12 +0200
+Subject: [PATCH 1/2] Unbundle googletest.
+
+---
+ src/tests/CMakeLists.txt | 2 +-
+ src/tests/gtest-CMakeLists.txt.in | 6 +++---
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt
+index 0a841666..d3c4fbe6 100644
+--- a/src/tests/CMakeLists.txt
++++ b/src/tests/CMakeLists.txt
+@@ -53,7 +53,7 @@ endif()
+ # maintain compiler/linker settings on Windows
+ set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
+ # add to our build (provides gtest_main target)
+-add_subdirectory(${CMAKE_CURRENT_BINARY_DIR}/googletest-src
++add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/googletest-src
+ ${CMAKE_CURRENT_BINARY_DIR}/googletest-build
+ EXCLUDE_FROM_ALL)
+
+diff --git a/src/tests/gtest-CMakeLists.txt.in b/src/tests/gtest-CMakeLists.txt.in
+index a43e8e5d..3cc0ddd5 100644
+--- a/src/tests/gtest-CMakeLists.txt.in
++++ b/src/tests/gtest-CMakeLists.txt.in
+@@ -4,9 +4,9 @@ project(googletest-download NONE)
+
+ include(ExternalProject)
+ ExternalProject_Add(googletest
+- GIT_REPOSITORY https://github.com/google/googletest.git
+- GIT_TAG c43f710
+- SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/googletest-src"
++# GIT_REPOSITORY https://github.com/google/googletest.git
++# GIT_TAG c43f710
++ SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/googletest-src"
+ BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/googletest-build"
+ CONFIGURE_COMMAND ""
+ BUILD_COMMAND ""
+--
+2.20.1
+