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>
This commit is contained in:
parent
e402ccd003
commit
7b7543376b
@ -1503,6 +1503,9 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/rtags-separate-rct.patch \
|
||||
%D%/packages/patches/racket-store-checksum-override.patch \
|
||||
%D%/packages/patches/retroarch-disable-online-updater.patch \
|
||||
%D%/packages/patches/rnp-add-version.cmake.patch \
|
||||
%D%/packages/patches/rnp-disable-ruby-rnp-tests.patch \
|
||||
%D%/packages/patches/rnp-unbundle-googletest.patch \
|
||||
%D%/packages/patches/ruby-rack-ignore-failing-test.patch \
|
||||
%D%/packages/patches/ruby-rubocop-break-dependency-cycle.patch\
|
||||
%D%/packages/patches/ruby-sanitize-system-libxml.patch \
|
||||
|
@ -19,11 +19,19 @@
|
||||
(define-module (gnu packages openpgp)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix git-download)
|
||||
#:use-module (guix build-system cmake)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages check)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages crypto)
|
||||
#:use-module (gnu packages gnupg)
|
||||
#:use-module (gnu packages multiprecision))
|
||||
#:use-module (gnu packages multiprecision)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages web))
|
||||
|
||||
(define-public libtmcg
|
||||
(package
|
||||
@ -92,3 +100,87 @@ implementation is in experimental state and should NOT be used in production
|
||||
environments.")
|
||||
(home-page "https://www.nongnu.org/dkgpg/")
|
||||
(license license:gpl2+)))
|
||||
|
||||
(define-public rnp
|
||||
;; Packaging the currently released version requires a large number of
|
||||
;; patches. For now, we package a snapshot instead.
|
||||
(let ((commit "203224f0b1505dba17837c03da603e5b98ab125a")
|
||||
(revision "0")
|
||||
(last-version "0.13.1")
|
||||
(day-of-release "2020-07-21"))
|
||||
(package
|
||||
(name "rnp")
|
||||
(version (git-version last-version revision commit))
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/rnpgp/rnp")
|
||||
(commit commit)))
|
||||
(file-name
|
||||
(string-append name "-" (string-take commit 7) "-checkout"))
|
||||
(sha256
|
||||
(base32
|
||||
"1rnwhc9ys4v4mv584hmmrl0ycnqmsaigpffzm31qq337hz24zqya"))
|
||||
(patches
|
||||
(search-patches "rnp-unbundle-googletest.patch"
|
||||
"rnp-disable-ruby-rnp-tests.patch"
|
||||
"rnp-add-version.cmake.patch"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments `(#:configure-flags
|
||||
'("-DBUILD_SHARED_LIBS=on"
|
||||
"-DBUILD_TESTING=on")
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'fixes
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(copy-recursively (assoc-ref inputs "googletest-source")
|
||||
"src/tests/googletest-src")
|
||||
(substitute* "src/tests/support.cpp"
|
||||
(("\"cp\"") (string-append "\"" (which "cp") "\"")))
|
||||
;; Produce a version stamp in the format the upstream
|
||||
;; project uses for unreleased revisions.
|
||||
(with-output-to-file "version.txt"
|
||||
(lambda _
|
||||
(display
|
||||
(string-append ,last-version
|
||||
"-" ,revision
|
||||
"-g" ,(string-take commit 7)))))
|
||||
#t))
|
||||
(replace 'check
|
||||
(lambda _
|
||||
;; Some OpenPGP certificates used by the tests expire.
|
||||
;; To work around that, set the time to roughly the
|
||||
;; release date.
|
||||
(invoke "faketime" ,day-of-release "make" "test"))))))
|
||||
(native-inputs
|
||||
`(("gnupg" ,gnupg) ; for tests
|
||||
("googletest-source" ,(package-source googletest)) ; for tests
|
||||
("libfaketime" ,libfaketime) ; for tests
|
||||
("pkg-config" ,pkg-config)
|
||||
("python" ,python)
|
||||
("python2" ,python-2.7)))
|
||||
(inputs `(("botan" ,botan)
|
||||
("bzip2" ,bzip2)
|
||||
("json-c" ,json-c)
|
||||
("zlib" ,zlib)))
|
||||
(synopsis
|
||||
"RFC4880-compliant OpenPGP library written in C++")
|
||||
(description
|
||||
"Set of OpenPGP (RFC4880) tools that works on Linux, *BSD and macOS as a
|
||||
replacement of GnuPG. It is maintained by Ribose after being forked from
|
||||
NetPGP, itself originally written for NetBSD.
|
||||
|
||||
librnp is the library used by rnp for all OpenPGP functions, useful for
|
||||
developers to build against. It is a “real” library, not a wrapper like GPGME
|
||||
of GnuPG.")
|
||||
(home-page "https://www.rnpgp.com/")
|
||||
(license
|
||||
;; RNP contains code written by Ribose and code derived from netpgp.
|
||||
(list
|
||||
;; Ribose's BSD 2-Clause License and NetBSD's BSD 2-Clause License
|
||||
;; (netpgp).
|
||||
license:bsd-2
|
||||
;; Nominet UK's Apache 2.0 Licence (netpgp).
|
||||
license:asl2.0
|
||||
;; Nominet UK's BSD 3-Clause License (netpgp).
|
||||
license:bsd-3)))))
|
||||
|
169
gnu/packages/patches/rnp-add-version.cmake.patch
Normal file
169
gnu/packages/patches/rnp-add-version.cmake.patch
Normal file
@ -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
|
||||
|
26
gnu/packages/patches/rnp-disable-ruby-rnp-tests.patch
Normal file
26
gnu/packages/patches/rnp-disable-ruby-rnp-tests.patch
Normal file
@ -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
|
||||
|
43
gnu/packages/patches/rnp-unbundle-googletest.patch
Normal file
43
gnu/packages/patches/rnp-unbundle-googletest.patch
Normal file
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user