dev-libs/jansson: Sync with gentoo

It's from gentoo commit 5cf776af229d8f55d1daf955e14d2280a1c61429.
This commit is contained in:
Krzesimir Nowak 2022-03-09 19:13:41 +01:00
parent cde11b3221
commit ebfcca77e2
6 changed files with 318 additions and 17 deletions

View File

@ -1,2 +1,2 @@
DIST jansson-2.12.tar.gz 489154 BLAKE2B cf6bc6d03daba921ec5e033bf57ff0055741cc935adb14d5d4a5f04056fa93c292bf88367db071ef7bb32fbc5d2d6f5f2ce658815a17939bd38ed5c0676ad091 SHA512 e40bdafdfa1fa663f71e00c06d7bfc98cff4ed3581a147894e5272e50fa5f9b9a7af6aaca41ff423a2ddd2554a192b36efcc32f6a3c98c727e9f819b955357cb
DIST jansson-2.13.1.tar.gz 531924 BLAKE2B e627bd2ba69bf01b053ff13dee903056db86999f774d6863517e67cef7dc9ddcaa747f2edca9de86bd83f37940a394ac9907f7d58069607ee529af08d8514d57 SHA512 e32be6665e41cf1763608c2f1ac4ce0824d4d7ffa5f4a5824cefde279250fdd399d49ba93d8894e16a473731f629b846554654347f027ca9a0a96ed047f10192
DIST jansson-2.14.tar.gz 535618 BLAKE2B eb514ff222444d4c0d1ef6b99150e3e43bd4d7a1bec3d66e5ece8bc59ac19a0898d9eb061cacad52afda7fe172ec6df46b5a90952707422f56daae53f82c9427 SHA512 5a592776c7ba8c0b1f5efaf813f77948bbc4bda168a72d221d176af0cf61038e26c1f30795433be10e2fc5069d5763d11852a8574774906a9f8ad261ac30109c

View File

@ -0,0 +1,269 @@
Rebase pull request #543 onto v2.13.1
Allows jansson documentation to compile with Sphinx-3.0
Squashed commit messages below:
pick 798d40c doc: convert refcounting directive to a class
Directive functions are no longer supported in Sphinx-3.0
but directive classes have been supported since early 1.x
pick 9431889 doc: do not use references for standard C types or file names
Use double-backtick quoting instead. It has the same effect
(because these links had nowhere to link to) but it does not
result in loud warnings about broken references by default with Sphinx-3.x.
pick c329fd7 doc: add return types for function-like macros
The Sphinx-3.0 c:function:: directive requires the return type.
Sphinx-3.0 also adds function-like macro support to the c:macro::
directive, which Sphinx-1.x and Sphinx-2.x do not support, but it
is probably a good idea to keep compatibility with slightly older
Sphinx for now.
diff --git a/CHANGES b/CHANGES
index a374a86..256fde1 100644
--- a/CHANGES
+++ b/CHANGES
@@ -8,7 +8,7 @@ Released 2020-05-07
- Include `jansson_version_str()` and `jansson_version_cmp()` in
shared library. (#534)
- - Include `scripts/` in tarball. (#535)
+ - Include ``scripts/`` in tarball. (#535)
Version 2.13
@@ -127,7 +127,7 @@ Released 2018-02-09
- Work around gcc's -Wimplicit-fallthrough.
- - Fix CMake detection of `sys/types.h` header (#375).
+ - Fix CMake detection of ``sys/types.h`` header (#375).
- Fix `jansson.pc` generated by CMake to be more consistent with the one
generated using GNU Autotools (#368).
diff --git a/doc/apiref.rst b/doc/apiref.rst
index c3a814f..94c5726 100644
--- a/doc/apiref.rst
+++ b/doc/apiref.rst
@@ -145,33 +145,33 @@ Type
.. function:: int json_typeof(const json_t *json)
Return the type of the JSON value (a :type:`json_type` cast to
- :type:`int`). *json* MUST NOT be *NULL*. This function is actually
+ ``int``). *json* MUST NOT be *NULL*. This function is actually
implemented as a macro for speed.
-.. function:: json_is_object(const json_t *json)
- json_is_array(const json_t *json)
- json_is_string(const json_t *json)
- json_is_integer(const json_t *json)
- json_is_real(const json_t *json)
- json_is_true(const json_t *json)
- json_is_false(const json_t *json)
- json_is_null(const json_t *json)
+.. function:: int json_is_object(const json_t *json)
+ int json_is_array(const json_t *json)
+ int json_is_string(const json_t *json)
+ int json_is_integer(const json_t *json)
+ int json_is_real(const json_t *json)
+ int json_is_true(const json_t *json)
+ int json_is_false(const json_t *json)
+ int json_is_null(const json_t *json)
These functions (actually macros) return true (non-zero) for values
of the given type, and false (zero) for values of other types and
for *NULL*.
-.. function:: json_is_number(const json_t *json)
+.. function:: int json_is_number(const json_t *json)
Returns true for values of types ``JSON_INTEGER`` and
``JSON_REAL``, and false for other types and for *NULL*.
-.. function:: json_is_boolean(const json_t *json)
+.. function:: int json_is_boolean(const json_t *json)
Returns true for types ``JSON_TRUE`` and ``JSON_FALSE``, and false
for values of other types and for *NULL*.
-.. function:: json_boolean_value(const json_t *json)
+.. function:: int json_boolean_value(const json_t *json)
Alias of :func:`json_is_true()`, i.e. returns 1 for ``JSON_TRUE``
and 0 otherwise.
@@ -594,7 +594,7 @@ A JSON array is an ordered collection of other JSON values.
Appends all elements in *other_array* to the end of *array*.
Returns 0 on success and -1 on error.
-.. function:: json_array_foreach(array, index, value)
+.. function:: void json_array_foreach(array, index, value)
Iterate over every element of ``array``, running the block
of code that follows each time with the proper values set to
@@ -732,11 +732,11 @@ allowed in object keys.
recursively merged with the corresponding values in *object* if they are also
objects, instead of overwriting them. Returns 0 on success or -1 on error.
-.. function:: json_object_foreach(object, key, value)
+.. function:: void json_object_foreach(object, key, value)
Iterate over every key-value pair of ``object``, running the block
of code that follows each time with the proper values set to
- variables ``key`` and ``value``, of types :type:`const char *` and
+ variables ``key`` and ``value``, of types ``const char *`` and
:type:`json_t *` respectively. Example::
/* obj is a JSON object */
@@ -764,7 +764,7 @@ allowed in object keys.
.. versionadded:: 2.3
-.. function:: json_object_foreach_safe(object, tmp, key, value)
+.. function:: void json_object_foreach_safe(object, tmp, key, value)
Like :func:`json_object_foreach()`, but it's safe to call
``json_object_del(object, key)`` during iteration. You need to pass
@@ -1488,17 +1488,17 @@ arguments.
Output a JSON null value. No argument is consumed.
``b`` (boolean) [int]
- Convert a C :type:`int` to JSON boolean value. Zero is converted
+ Convert a C ``int`` to JSON boolean value. Zero is converted
to ``false`` and non-zero to ``true``.
``i`` (integer) [int]
- Convert a C :type:`int` to JSON integer.
+ Convert a C ``int`` to JSON integer.
``I`` (integer) [json_int_t]
Convert a C :type:`json_int_t` to JSON integer.
``f`` (real) [double]
- Convert a C :type:`double` to JSON real.
+ Convert a C ``double`` to JSON real.
``o`` (any value) [json_t \*]
Output any given JSON value as-is. If the value is added to an
@@ -1625,20 +1625,20 @@ type whose address should be passed.
Expect a JSON null value. Nothing is extracted.
``b`` (boolean) [int]
- Convert a JSON boolean value to a C :type:`int`, so that ``true``
+ Convert a JSON boolean value to a C ``int``, so that ``true``
is converted to 1 and ``false`` to 0.
``i`` (integer) [int]
- Convert a JSON integer to C :type:`int`.
+ Convert a JSON integer to C ``int``.
``I`` (integer) [json_int_t]
Convert a JSON integer to C :type:`json_int_t`.
``f`` (real) [double]
- Convert a JSON real to C :type:`double`.
+ Convert a JSON real to C ``double``.
``F`` (integer or real) [double]
- Convert a JSON number (integer or real) to C :type:`double`.
+ Convert a JSON number (integer or real) to C ``double``.
``o`` (any value) [json_t \*]
Store a JSON value with no conversion to a :type:`json_t` pointer.
diff --git a/doc/ext/refcounting.py b/doc/ext/refcounting.py
index bba2684..e72c481 100644
--- a/doc/ext/refcounting.py
+++ b/doc/ext/refcounting.py
@@ -24,8 +24,8 @@
"""
from docutils import nodes
+from docutils.parsers.rst import Directive
-class refcounting(nodes.emphasis): pass
def visit(self, node):
self.visit_emphasis(node)
@@ -40,16 +40,25 @@ def html_depart(self, node):
self.body.append('</em>')
-def refcounting_directive(name, arguments, options, content, lineno,
- content_offset, block_text, state, state_machine):
- if arguments[0] == 'borrow':
- text = 'Return value: Borrowed reference.'
- elif arguments[0] == 'new':
- text = 'Return value: New reference.'
- else:
- raise Error('Valid arguments: new, borrow')
+class refcounting(nodes.emphasis):
+ pass
+
+class refcounting_directive(Directive):
+ has_content = False
+ required_arguments = 1
+ optional_arguments = 0
+ final_argument_whitespace = False
+
+ def run(self):
+ if self.arguments[0] == 'borrow':
+ text = 'Return value: Borrowed reference.'
+ elif self.arguments[0] == 'new':
+ text = 'Return value: New reference.'
+ else:
+ raise Error('Valid arguments: new, borrow')
+
+ return [refcounting(text, text)]
- return [refcounting(text, text)]
def setup(app):
app.add_node(refcounting,
@@ -57,4 +66,4 @@ def setup(app):
latex=(visit, depart),
text=(visit, depart),
man=(visit, depart))
- app.add_directive('refcounting', refcounting_directive, 0, (1, 0, 0))
+ app.add_directive('refcounting', refcounting_directive)
diff --git a/doc/upgrading.rst b/doc/upgrading.rst
index 9b49046..94ff7de 100644
--- a/doc/upgrading.rst
+++ b/doc/upgrading.rst
@@ -47,13 +47,13 @@ List of Incompatible Changes
**Underlying type of JSON integers**
The underlying C type of JSON integers has been changed from
- :type:`int` to the widest available signed integer type, i.e.
- :type:`long long` or :type:`long`, depending on whether
- :type:`long long` is supported on your system or not. This makes
+ ``int`` to the widest available signed integer type, i.e.
+ ``long long`` or ``long``, depending on whether
+ ``long long`` is supported on your system or not. This makes
the whole 64-bit integer range available on most modern systems.
``jansson.h`` has a typedef :type:`json_int_t` to the underlying
- integer type. :type:`int` should still be used in most cases when
+ integer type. ``int`` should still be used in most cases when
dealing with smallish JSON integers, as the compiler handles
implicit type coercion. Only when the full 64-bit range is needed,
:type:`json_int_t` should be explicitly used.
@@ -69,8 +69,8 @@ List of Incompatible Changes
**Unsigned integers in API functions**
Version 2.0 unifies unsigned integer usage in the API. All uses of
- :type:`unsigned int` and :type:`unsigned long` have been replaced
- with :type:`size_t`. This includes flags, container sizes, etc.
+ ``unsigned int`` and ``unsigned long`` have been replaced
+ with ``size_t``. This includes flags, container sizes, etc.
This should not require source code changes, as both
- :type:`unsigned int` and :type:`unsigned long` are usually
- compatible with :type:`size_t`.
+ ``unsigned int`` and ``unsigned long`` are usually
+ compatible with ``size_t``.

View File

@ -0,0 +1,25 @@
https://bugs.gentoo.org/814944
https://github.com/akheron/jansson/commit/0677666f65b988b2dd44d02966a08fea490d5883
From 0677666f65b988b2dd44d02966a08fea490d5883 Mon Sep 17 00:00:00 2001
From: Petri Lehtinen <petri@digip.org>
Date: Thu, 9 Sep 2021 21:53:11 +0300
Subject: [PATCH] Fix the check-exports tests for versioned symbols
---
test/suites/api/check-exports | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/test/suites/api/check-exports b/test/suites/api/check-exports
index 2b6b3c79..5c82064c 100755
--- a/test/suites/api/check-exports
+++ b/test/suites/api/check-exports
@@ -15,7 +15,7 @@ grep 'json_\|jansson_' $top_srcdir/src/jansson.def \
nm -D $SOFILE >/dev/null >$test_log/symbols 2>/dev/null \
|| exit 77 # Skip if "nm -D" doesn't seem to work
-grep ' [DT] ' $test_log/symbols | cut -d' ' -f3 | grep -v '^_' | sort >$test_log/output
+grep ' [DT] ' $test_log/symbols | cut -d' ' -f3 | grep -v '^_' | sed 's/@@libjansson.*//' | sort >$test_log/output
if ! cmp -s $test_log/exports $test_log/output; then
diff -u $test_log/exports $test_log/output >&2

View File

@ -1,4 +1,4 @@
# Copyright 1999-2020 Gentoo Authors
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
@ -11,11 +11,15 @@ SRC_URI="https://www.digip.org/jansson/releases/${P}.tar.gz"
LICENSE="MIT"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sparc ~x86"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-macos"
IUSE="doc static-libs"
BDEPEND="doc? ( dev-python/sphinx )"
PATCHES=(
# dev-libs/jansson-2.13.1[doc]: fails to build with >=sphinx-3.0, #731668
BDEPEND="doc? ( <dev-python/sphinx-3.0.0 )"
"${FILESDIR}/${P}-sphinx3.patch"
)
multilib_src_configure() {
ECONF_SOURCE="${S}" econf $(use_enable static-libs static)

View File

@ -1,23 +1,26 @@
# Copyright 1999-2020 Gentoo Authors
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
EAPI=8
inherit multilib-minimal
inherit multilib-minimal toolchain-funcs
DESCRIPTION="C library for encoding, decoding and manipulating JSON data"
HOMEPAGE="http://www.digip.org/jansson/"
SRC_URI="http://www.digip.org/jansson/releases/${P}.tar.gz"
HOMEPAGE="https://www.digip.org/jansson/"
SRC_URI="https://github.com/akheron/jansson/releases/download/v${PV}/${P}.tar.gz"
LICENSE="MIT"
SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 s390 sparc x86"
SLOT="0/4"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-macos"
IUSE="doc static-libs"
BDEPEND="doc? ( <dev-python/sphinx-3.0.0 )"
RDEPEND=""
BDEPEND="doc? ( dev-python/sphinx )"
PATCHES=( "${FILESDIR}/${P}-test-symbols.patch" )
multilib_src_configure() {
tc-ld-force-bfd
ECONF_SOURCE="${S}" econf $(use_enable static-libs static)
}

View File

@ -1,11 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
<maintainer type="person" proxied="yes">
<email>zero-one@zer0-one.net</email>
<name>David Zero</name>
</maintainer>
<maintainer type="project">
<maintainer type="project" proxied="proxy">
<email>proxy-maint@gentoo.org</email>
<name>Proxy Maintainers</name>
</maintainer>