commit bd67c58f9ce05eca18ac982decd3829e3b2cc575fc93b4390f2b921f2f3d3b11 Author: Marcus Meissner Date: Thu Feb 18 09:54:58 2021 +0000 Accepting request 872022 from home:AndreasStieger an OpenPGP implementation OBS-URL: https://build.opensuse.org/request/show/872022 OBS-URL: https://build.opensuse.org/package/show/security:privacy/rnp?expand=0&rev=1 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/rnp-0.14.0.tar.gz b/rnp-0.14.0.tar.gz new file mode 100644 index 0000000..4c93ea9 --- /dev/null +++ b/rnp-0.14.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d87d5826646ef003c95067fbe3e377bb8fd47a24c6a3227e6bce03ee9f49c28 +size 1343813 diff --git a/rnp.changes b/rnp.changes new file mode 100644 index 0000000..0150aae --- /dev/null +++ b/rnp.changes @@ -0,0 +1,4 @@ +------------------------------------------------------------------- +Sat Feb 13 20:05:25 UTC 2021 - Andreas Stieger + +- initial package, 0.14.0 diff --git a/rnp.spec b/rnp.spec new file mode 100644 index 0000000..18156db --- /dev/null +++ b/rnp.spec @@ -0,0 +1,93 @@ +# +# spec file for package rnp +# +# Copyright (c) 2021 SUSE LLC +# Copyright (c) 2021 Andreas Stieger +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%define soname 0-0 +Name: rnp +Version: 0.14.0 +Release: 0 +Summary: OpenPGP implementation fully compliant with RFC 4880 +License: BSD-2-Clause AND BSD-3-Clause AND Apache-2.0 +URL: https://www.rnpgp.com/ +Source: https://github.com/rnpgp/rnp/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz +Source2: https://raw.githubusercontent.com/riboseinc/cmake-versioning/c78a0be/version.cmake +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: pkgconfig +BuildRequires: cmake(json-c) >= 0.11 +BuildRequires: pkgconfig(botan-2) >= 2.14.0 +BuildRequires: pkgconfig(bzip2) +BuildRequires: pkgconfig(zlib) + +%description +RNP is a set of OpenPGP (RFC4880) tools, an alternative to GnuPG. + +%package -n librnp-%{soname} +Summary: OpenPGP implementation as a C++ library fully compliant with RFC 4880 + +%description -n librnp-%{soname} +RNP is a set of OpenPGP (RFC4880) tools, an alternative to GnuPG. +librnp is the library used by RNP for all OpenPGP functions, useful for +developers to build against, different from GPGME. + +%package devel +Summary: Development files for RNP +Requires: librnp-%{soname} = %{version} +Requires: cmake(json-c) >= 0.11 +Requires: pkgconfig(botan-2) >= 2.14.0 +Requires: pkgconfig(bzip2) +Requires: pkgconfig(zlib) + +%description devel +RNP is a set of OpenPGP (RFC4880) tools, an alternative to GnuPG. +This package contains the files needed to build against librnp. + +%prep +%setup -q +# for determine_version +cp %{SOURCE2} cmake/ + +%build +%cmake \ + -DBUILD_SHARED_LIBS=on \ + -DBUILD_TESTING=off +%cmake_build + +%install +%cmake_install + +%post -n librnp-%{soname} -p /sbin/ldconfig +%postun -n librnp-%{soname} -p /sbin/ldconfig + +%files +%license LICENSE* +%{_bindir}/* + +%files -n librnp-%{soname} +%license LICENSE* +%{_libdir}/*.so.0* + +%files devel +%license LICENSE* +%doc CHANGELOG.md README.adoc +%{_includedir}/* +%{_libdir}/cmake/rnp +%{_libdir}/*.so +%{_libdir}/pkgconfig/*.pc + +%changelog diff --git a/version.cmake b/version.cmake new file mode 100644 index 0000000..d4a76ff --- /dev/null +++ b/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() +