Compare commits

...

No commits in common. "c8" and "c9-beta" have entirely different histories.
c8 ... c9-beta

12 changed files with 1446 additions and 330 deletions

2
.gitignore vendored
View File

@ -1 +1 @@
SOURCES/json-c-0.13.1-20180305.tar.gz
SOURCES/json-c-0.14-20200419.tar.gz

View File

@ -1 +1 @@
d4c667ab94e7051b1e78aa727f0d937caba971e9 SOURCES/json-c-0.13.1-20180305.tar.gz
b9b6d4c220c991ea1a8b9ca6a411ace9fef9167f SOURCES/json-c-0.14-20200419.tar.gz

View File

@ -0,0 +1,80 @@
From 4a546e7b2f471157c6f479df1ef687864fcbd89e Mon Sep 17 00:00:00 2001
From: Eric Haszlakiewicz <erh+git@nimenees.com>
Date: Sun, 24 May 2020 03:53:32 +0000
Subject: [PATCH] In arraylist, use malloc instead of calloc, avoid clearing
with memeset until we really need to, and micro-optimize array_list_add().
---
arraylist.c | 29 +++++++++++++++++++++++++----
1 file changed, 25 insertions(+), 4 deletions(-)
diff --git a/arraylist.c b/arraylist.c
index e5524aca75..3e7bfa8950 100644
--- a/arraylist.c
+++ b/arraylist.c
@@ -40,13 +40,13 @@ struct array_list *array_list_new(array_list_free_fn *free_fn)
{
struct array_list *arr;
- arr = (struct array_list *)calloc(1, sizeof(struct array_list));
+ arr = (struct array_list *)malloc(sizeof(struct array_list));
if (!arr)
return NULL;
arr->size = ARRAY_LIST_DEFAULT_SIZE;
arr->length = 0;
arr->free_fn = free_fn;
- if (!(arr->array = (void **)calloc(arr->size, sizeof(void *))))
+ if (!(arr->array = (void **)malloc(arr->size * sizeof(void *))))
{
free(arr);
return NULL;
@@ -92,11 +92,11 @@ static int array_list_expand_internal(struct array_list *arr, size_t max)
if (!(t = realloc(arr->array, new_size * sizeof(void *))))
return -1;
arr->array = (void **)t;
- (void)memset(arr->array + arr->size, 0, (new_size - arr->size) * sizeof(void *));
arr->size = new_size;
return 0;
}
+//static inline int _array_list_put_idx(struct array_list *arr, size_t idx, void *data)
int array_list_put_idx(struct array_list *arr, size_t idx, void *data)
{
if (idx > SIZE_T_MAX - 1)
@@ -106,6 +106,17 @@ int array_list_put_idx(struct array_list *arr, size_t idx, void *data)
if (idx < arr->length && arr->array[idx])
arr->free_fn(arr->array[idx]);
arr->array[idx] = data;
+ if (idx > arr->length)
+ {
+ /* Zero out the arraylist slots in between the old length
+ and the newly added entry so we know those entries are
+ empty.
+ e.g. when setting array[7] in an array that used to be
+ only 5 elements longs, array[5] and array[6] need to be
+ set to 0.
+ */
+ memset(arr->array + arr->length, 0, (idx - arr->length) * sizeof(void *));
+ }
if (arr->length <= idx)
arr->length = idx + 1;
return 0;
@@ -113,7 +124,17 @@ int array_list_put_idx(struct array_list *arr, size_t idx, void *data)
int array_list_add(struct array_list *arr, void *data)
{
- return array_list_put_idx(arr, arr->length, data);
+ /* Repeat some of array_list_put_idx() so we can skip several
+ checks that we know are unnecessary when appending at the end
+ */
+ size_t idx = arr->length;
+ if (idx > SIZE_T_MAX - 1)
+ return -1;
+ if (array_list_expand_internal(arr, idx + 1))
+ return -1;
+ arr->array[idx] = data;
+ arr->length++;
+ return 0;
}
void array_list_sort(struct array_list *arr, int (*compar)(const void *, const void *))

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,59 @@
From 8f3592b3d59874b4dd230a741fad3ffa99223a45 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20Esser?= <besser82@fedoraproject.org>
Date: Mon, 18 May 2020 18:20:01 +0200
Subject: [PATCH] CMake: Fix out-of-tree build for Doxygen documentation.
---
CMakeLists.txt | 9 +++++----
Doxyfile => Doxyfile.in | 4 ++--
2 files changed, 7 insertions(+), 6 deletions(-)
rename Doxyfile => Doxyfile.in (99%)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 901eb6e364..f58301c71a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -368,13 +368,14 @@ option(BUILD_DOCUMENTATION "Create and install the HTML based API documentation(
if (DOXYGEN_FOUND)
+ configure_file(${PROJECT_SOURCE_DIR}/Doxyfile.in
+ ${PROJECT_BINARY_DIR}/Doxyfile)
+ message(STATUS "Written ${PROJECT_BINARY_DIR}/Doxyfile")
+
add_custom_target(doc
- COMMAND ${DOXYGEN_EXECUTABLE} ${PROJECT_SOURCE_DIR}/Doxyfile
+ COMMAND ${DOXYGEN_EXECUTABLE} ${PROJECT_BINARY_DIR}/Doxyfile
WORKING_DIRECTORY ${PROJECT_BINARY_DIR})
- # request to configure the file
- configure_file(Doxyfile Doxyfile)
-
else (DOXYGEN_FOUND)
message("Warning: doxygen not found, the 'doc' target will not be included")
endif(DOXYGEN_FOUND)
diff --git a/Doxyfile b/Doxyfile.in
similarity index 99%
rename from Doxyfile
rename to Doxyfile.in
index 06d54e661e..42a08535c2 100644
--- a/Doxyfile
+++ b/Doxyfile.in
@@ -38,7 +38,7 @@ PROJECT_NAME = json-c
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER = 0.14
+PROJECT_NUMBER = @PROJECT_VERSION@
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
@@ -753,7 +753,7 @@ WARN_LOGFILE =
# spaces.
# Note: If this tag is empty the current directory is searched.
-INPUT =
+INPUT = @CMAKE_SOURCE_DIR@ @CMAKE_BINARY_DIR@
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses

View File

@ -0,0 +1,23 @@
From 228881c8fc287182f284a58d8279a32fbeae0b7f Mon Sep 17 00:00:00 2001
From: Eric Haszlakiewicz <erh+git@nimenees.com>
Date: Tue, 21 Apr 2020 01:13:21 +0000
Subject: [PATCH] Issue #585: don't install config.h
(cherry picked from commit 8b511c402b73d1d8b195991891c8d44859cb57ec)
---
CMakeLists.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ba692fff69..c51f477c5f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -299,7 +299,7 @@ if ($ENV{VALGRIND})
endif()
set(JSON_C_PUBLIC_HEADERS
- ${PROJECT_BINARY_DIR}/config.h
+ # Note: config.h is _not_ included here
${PROJECT_BINARY_DIR}/json_config.h
${PROJECT_SOURCE_DIR}/json.h

View File

@ -0,0 +1,74 @@
From 003b58782b12798da3da8b952152988a88dfb532 Mon Sep 17 00:00:00 2001
From: Pierce Lopez <pierce.lopez@gmail.com>
Date: Sun, 10 May 2020 13:20:02 -0400
Subject: [PATCH] fix json_parse_uint64() usage of errno
introduced in #542
fixes #601
---
json_util.c | 8 +++-----
json_util.h | 1 +
tests/test_parse_int64.expected | 8 ++++----
3 files changed, 8 insertions(+), 9 deletions(-)
diff --git a/json_util.c b/json_util.c
index d3ee47df72..e8e2ec6bcb 100644
--- a/json_util.c
+++ b/json_util.c
@@ -245,19 +245,17 @@ int json_parse_uint64(const char *buf, uint64_t *retval)
{
char *end = NULL;
uint64_t val;
- errno = 1;
+ errno = 0;
while (*buf == ' ')
- {
buf++;
- }
if (*buf == '-')
- errno = 0;
+ return 1; /* error: uint cannot be negative */
val = strtoull(buf, &end, 10);
if (end != buf)
*retval = val;
- return ((errno == 0) || (end == buf)) ? 1 : 0;
+ return ((val == 0 && errno != 0) || (end == buf)) ? 1 : 0;
}
#ifndef HAVE_REALLOC
diff --git a/json_util.h b/json_util.h
index 2a4b6c19bd..7520f036c4 100644
--- a/json_util.h
+++ b/json_util.h
@@ -100,6 +100,7 @@ JSON_EXPORT int json_object_to_fd(int fd, struct json_object *obj, int flags);
*/
JSON_EXPORT const char *json_util_get_last_err(void);
+/* these parsing helpers return zero on success */
JSON_EXPORT int json_parse_int64(const char *buf, int64_t *retval);
JSON_EXPORT int json_parse_uint64(const char *buf, uint64_t *retval);
JSON_EXPORT int json_parse_double(const char *buf, double *retval);
diff --git a/tests/test_parse_int64.expected b/tests/test_parse_int64.expected
index f4c5750b0b..6dca94b470 100644
--- a/tests/test_parse_int64.expected
+++ b/tests/test_parse_int64.expected
@@ -34,13 +34,13 @@ buf=123 parseit=0, value=123
==========json_parse_uint64() test===========
buf=x parseit=1, value=666
buf=0 parseit=0, value=0
-buf=-0 parseit=1, value=0
+buf=-0 parseit=1, value=666
buf=00000000 parseit=0, value=0
-buf=-00000000 parseit=1, value=0
+buf=-00000000 parseit=1, value=666
buf=1 parseit=0, value=1
buf=2147483647 parseit=0, value=2147483647
-buf=-1 parseit=1, value=18446744073709551615
-buf=-9223372036854775808 parseit=1, value=9223372036854775808
+buf=-1 parseit=1, value=666
+buf=-9223372036854775808 parseit=1, value=666
buf= 1 parseit=0, value=1
buf=00001234 parseit=0, value=1234
buf=0001234x parseit=0, value=1234

View File

@ -0,0 +1,121 @@
From 61e2bae5111b49a788fe4c236b473dc86250a7fe Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20Esser?= <besser82@fedoraproject.org>
Date: Mon, 18 May 2020 20:32:35 +0200
Subject: [PATCH 1/2] doc: Move Doxyfile into doc subdir
---
.gitignore | 2 +-
CMakeLists.txt | 19 +------------------
doc/CMakeLists.txt | 16 ++++++++++++++++
Doxyfile.in => doc/Doxyfile.in | 2 +-
4 files changed, 19 insertions(+), 20 deletions(-)
create mode 100644 doc/CMakeLists.txt
rename Doxyfile.in => doc/Doxyfile.in (99%)
diff --git a/.gitignore b/.gitignore
index 958ace3ac1..1cdaf9bdba 100644
--- a/.gitignore
+++ b/.gitignore
@@ -83,7 +83,7 @@
/Testing/
# ...and build artifacts.
-/doc
+/doc/html
/libjson-c.a
/libjson-c.so
/libjson-c.so.*
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f58301c71a..ec17697170 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -361,24 +361,7 @@ set(JSON_C_SOURCES
include_directories(${PROJECT_SOURCE_DIR})
include_directories(${PROJECT_BINARY_DIR})
-# generate doxygen documentation for json-c API
-
-find_package(Doxygen)
-option(BUILD_DOCUMENTATION "Create and install the HTML based API documentation(requires Doxygen)" ${DOXYGEN_FOUND})
-
-if (DOXYGEN_FOUND)
-
- configure_file(${PROJECT_SOURCE_DIR}/Doxyfile.in
- ${PROJECT_BINARY_DIR}/Doxyfile)
- message(STATUS "Written ${PROJECT_BINARY_DIR}/Doxyfile")
-
- add_custom_target(doc
- COMMAND ${DOXYGEN_EXECUTABLE} ${PROJECT_BINARY_DIR}/Doxyfile
- WORKING_DIRECTORY ${PROJECT_BINARY_DIR})
-
-else (DOXYGEN_FOUND)
- message("Warning: doxygen not found, the 'doc' target will not be included")
-endif(DOXYGEN_FOUND)
+add_subdirectory(doc)
# uninstall
add_custom_target(uninstall
diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
new file mode 100644
index 0000000000..4872d8e8ad
--- /dev/null
+++ b/doc/CMakeLists.txt
@@ -0,0 +1,16 @@
+# generate doxygen documentation for json-c API
+
+find_package(Doxygen)
+
+if (DOXYGEN_FOUND)
+
+ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in
+ ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
+ message(STATUS "Wrote ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile")
+
+ add_custom_target(doc
+ COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
+
+else (DOXYGEN_FOUND)
+ message("Warning: doxygen not found, the 'doc' target will not be included")
+endif(DOXYGEN_FOUND)
diff --git a/Doxyfile.in b/doc/Doxyfile.in
similarity index 99%
rename from Doxyfile.in
rename to doc/Doxyfile.in
index 42a08535c2..ce8d8ff78c 100644
--- a/Doxyfile.in
+++ b/doc/Doxyfile.in
@@ -58,7 +58,7 @@ PROJECT_LOGO =
# entered, it will be relative to the location where doxygen was started. If
# left blank the current directory will be used.
-OUTPUT_DIRECTORY = doc
+OUTPUT_DIRECTORY = @CMAKE_CURRENT_BINARY_DIR@
# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub-
# directories (in 2 levels) under the output directory of each output format and
From 1e94da779a9aa107690e4f2921ab4d0300aca579 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20Esser?= <besser82@fedoraproject.org>
Date: Mon, 18 May 2020 20:36:05 +0200
Subject: [PATCH 2/2] CMake: Fix grammar: written -> wrote.
---
CMakeLists.txt | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ec17697170..333513c5e0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -237,9 +237,9 @@ endif()
# Once we've done basic symbol/header searches let's add them in.
configure_file(${PROJECT_SOURCE_DIR}/cmake/config.h.in ${PROJECT_BINARY_DIR}/config.h)
-message(STATUS "Written ${PROJECT_BINARY_DIR}/config.h")
+message(STATUS "Wrote ${PROJECT_BINARY_DIR}/config.h")
configure_file(${PROJECT_SOURCE_DIR}/cmake/json_config.h.in ${PROJECT_BINARY_DIR}/json_config.h)
-message(STATUS "Written ${PROJECT_BINARY_DIR}/json_config.h")
+message(STATUS "Wrote ${PROJECT_BINARY_DIR}/json_config.h")
if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ffunction-sections -fdata-sections")

View File

@ -0,0 +1,22 @@
From 3008401b2a8f5b25bf5665cafa22b335d9ffdb3a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20Esser?= <besser82@fedoraproject.org>
Date: Mon, 18 May 2020 17:00:17 +0200
Subject: [PATCH] test_deep_copy: Fix assertion value.
---
tests/test_deep_copy.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/test_deep_copy.c b/tests/test_deep_copy.c
index b6c1b999f4..34ef1fe5d3 100644
--- a/tests/test_deep_copy.c
+++ b/tests/test_deep_copy.c
@@ -126,7 +126,7 @@ int main(int argc, char **argv)
src3 = json_tokener_parse(json_str3);
assert(src1 != NULL);
- assert(src1 != NULL);
+ assert(src2 != NULL);
assert(src3 != NULL);
printf("PASSED - loaded input data\n");

View File

@ -1,12 +1,33 @@
commit ca454c53a3f39fcd23d9a7d779f56fd06928ab4a
Author: Tomas Korbar <tkorbar@redhat.com>
Date: Mon Sep 13 10:18:44 2021 +0200
Fix symbols
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 21e395ed3c..da0af963ed 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -325,6 +325,22 @@ if (NOT ("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC"))
# XXX need cmake>=3.13 for this:
#add_link_options("-Wl,-Bsymbolic-functions")
endif()
+
+ file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/check-version-script.sym" "TEST { global: *; };")
+ list(APPEND CMAKE_REQUIRED_LIBRARIES "-Wl,--version-script,${CMAKE_CURRENT_BINARY_DIR}/check-version-script.sym")
+ check_c_source_compiles(
+ "
+ int main (void)
+ {
+ return 0;
+ }
+ "
+ VERSION_SCRIPT_WORKS
+ )
+ list(REMOVE_ITEM CMAKE_REQUIRED_LIBRARIES "-Wl,--version-script,${CMAKE_CURRENT_BINARY_DIR}/check-version-script.sym")
+ if (VERSION_SCRIPT_WORKS)
+ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--version-script,${CMAKE_CURRENT_SOURCE_DIR}/json-c.sym")
+ endif()
endif()
if ($ENV{VALGRIND})
diff --git a/json-c.sym b/json-c.sym
new file mode 100644
index 0000000..bf78792
index 0000000000..bf78792b7e
--- /dev/null
+++ b/json-c.sym
@@ -0,0 +1,153 @@
@ -163,3 +184,4 @@ index 0000000..bf78792
+ json_object_array_shrink;
+ json_object_new_array_ext;
+} JSONC_0.14;

File diff suppressed because one or more lines are too long

View File

@ -1,38 +1,56 @@
%{!?_pkgdocdir:%global _pkgdocdir %{_docdir}/%{name}-%{version}}
%global so_ver 4
%global reldate 20180305
# We don't want accidental SONAME bumps.
# When there is a SONAME bump in json-c, we need to request
# a side-tag for bootstrap purposes:
#
# 1. Build a bootstrap build of the systemd package, and wait
# for it to be available inside the side-tag.
# 2. Re-build the following build-chain for bootstrap:
# json-c : cryptsetup
# 3. Untag the systemd bootstrap build from the side-tag, and
# disable bootstrapping in the systemd package. Re-build
# the systemd package into Rawhide.
# 4. Wait for the changes to populate and re-build the following
# chain into the side-tag:
# satyr : libdnf libreport
# 5. Merge the side-tag using Bodhi.
#
# After that procedure any other cosumers can be re-build
# in Rawhide as usual.
%global so_ver 5
# Uncomment when building a bootstrap for a bumped so-name.
# You also need to adjust the parameters below.
%global bootstrap 0
%if 0%{?bootstrap}
%global reldate_old 20171207
%global version_old 0.13
%global so_ver_old 3
%endif
# Releases are tagged with a date stamp.
%global reldate 20200419
Name: json-c
Version: 0.13.1
Release: 3%{?dist}
Version: 0.14
Release: 11%{?dist}
Summary: JSON implementation in C
License: MIT
URL: https://github.com/%{name}/%{name}
Source0: %{url}/archive/%{name}-%{version}-%{reldate}.tar.gz
%if 0%{?bootstrap}
Source1: %{url}/archive/%{name}-%{version_old}-%{reldate_old}.tar.gz
%endif
# CVE-2020-12762 json-c: integer overflow and out-of-bounds write via a large JSON file
# rhbz#1835626
Patch0: json-c-int-overflow.patch
# patch for support of versioned symbols
# rhbz#2001063
Patch1: json-c-versioned-symbols.patch
BuildRequires: libtool
# Cherry-picked from upstream.
Patch0001: %{url}/commit/228881c8fc287182f284a58d8279a32fbeae0b7f.patch#/%{name}-0.14-dont_install_config_h.patch
Patch0002: %{url}/pull/603.patch#/%{name}-0.14-backport_fixes_from_master.patch
Patch0003: %{url}/commit/003b58782b12798da3da8b952152988a88dfb532.patch#/%{name}-0.14-fix_usage_of_errno_in_json_parse_uint64.patch
Patch0004: %{url}/pull/618.patch#/%{name}-0.14-test_deep_copy_fix_assertion_value.patch
Patch0005: %{url}/pull/619.patch#/%{name}-0.14-cmake_fix_out_of_tree_build_for_Doxygen_documentation.patch
Patch0006: %{url}/pull/622.patch#/%{name}-0.14-move_Doxyfile_into_doc_subdir.patch
Patch0007: %{url}/commit/4a546e7b2f471157c6f479df1ef687864fcbd89e.patch#/%{name}-0.14-arraylist_optimizations.patch
# Start providing versioned symbols
# rhbz#2001067
Patch0008: json-c-0.14-versioned-symbols.patch
BuildRequires: cmake
BuildRequires: gcc
BuildRequires: ninja-build
%ifarch %{valgrind_arches}
BuildRequires: valgrind
%endif
%description
JSON-C implements a reference counting object model that allows you
@ -43,8 +61,7 @@ of JSON objects. It aims to conform to RFC 7159.
%package devel
Summary: Development files for %{name}
Requires: %{name}%{?_isa} == %{version}-%{release}
Requires: %{name}%{?_isa} = %{version}-%{release}
%description devel
This package contains libraries and header files for
@ -64,87 +81,46 @@ This package contains the reference manual for %{name}.
%prep
%autosetup -Tb 0 -n %{name}-%{name}-%{version}-%{reldate} -p 1
%autosetup -n %{name}-%{name}-%{version}-%{reldate} -p 1
for doc in ChangeLog; do
%{_bindir}/iconv -f iso-8859-1 -t utf8 ${doc} > ${doc}.new
/bin/touch -r ${doc} ${doc}.new
%{__mv} -f ${doc}.new ${doc}
done
# Remove pre-built html documentation.
rm -fr doc/html
%{__sed} -i -e 's!#ACLOCAL_AMFLAGS!ACLOCAL_AMFLAGS!g' Makefile.am
%{_bindir}/autoreconf -fiv
%if 0%{?bootstrap}
%{__mkdir} -p bootstrap_ver
pushd bootstrap_ver
%{__tar} --strip-components=1 -xf %{SOURCE1}
%{__sed} -i -e 's!#ACLOCAL_AMFLAGS!ACLOCAL_AMFLAGS!g' Makefile.am
%{_bindir}/autoreconf -fiv
popd
%endif
# Update Doxyfile.
doxygen -s -u doc/Doxyfile.in
%build
# it is easier and more efficient to add version script flag
# here instead of having to rebuild the configure script
LDFLAGS="%{build_ldflags} -Wl,--version-script,${PWD}/json-c.sym"
%configure \
--disable-silent-rules \
--disable-static \
--enable-shared \
--enable-threading
%make_build
%{_bindir}/doxygen Doxyfile
%if 0%{?bootstrap}
pushd bootstrap_ver
%configure \
--disable-silent-rules \
--disable-static \
--enable-shared \
--enable-threading
%make_build
popd
%endif
%cmake \
-DBUILD_STATIC_LIBS:BOOL=OFF \
-DCMAKE_BUILD_TYPE:STRING=RELEASE \
-DCMAKE_C_FLAGS_RELEASE:STRING="" \
-DDISABLE_BSYMBOLIC:BOOL=OFF \
-DDISABLE_WERROR:BOOL=ON \
-DENABLE_RDRAND:BOOL=ON \
-DENABLE_THREADING:BOOL=ON \
-G Ninja
%cmake_build --target all doc
%install
%if 0%{?bootstrap}
%make_install -C bootstrap_ver
%{__rm} -fr %{buildroot}%{_includedir}/%{name} \
%{buildroot}%{_libdir}/lib%{name}.so \
%{buildroot}%{_libdir}/pkgconfig
%endif
%cmake_install
%make_install
%{_bindir}/find %{buildroot} -name '*.a' -delete -print
%{_bindir}/find %{buildroot} -name '*.la' -delete -print
%{__mkdir} -p %{buildroot}%{_pkgdocdir}
%{__cp} -pr doc/html ChangeLog README README.* %{buildroot}%{_pkgdocdir}
%{_sbindir}/hardlink -cvf %{buildroot}%{_pkgdocdir}
# Documentation
mkdir -p %{buildroot}%{_pkgdocdir}
cp -a %{__cmake_builddir}/doc/html ChangeLog README README.* \
%{buildroot}%{_pkgdocdir}
hardlink -cfv %{buildroot}%{_pkgdocdir}
%check
%make_build check
%if 0%{?bootstrap}
%make_build -C bootstrap_ver check
export USE_VALGRIND=0
%ctest
%ifarch %{valgrind_arches}
export USE_VALGRIND=1
%ctest
%endif
%pretrans devel -p <lua>
path = "%{_includedir}/%{name}"
st = posix.stat(path)
if st and st.type == "link" then
os.remove(path)
end
unset USE_VALGRIND
%ldconfig_scriptlets
@ -154,15 +130,14 @@ end
%license AUTHORS
%license COPYING
%{_libdir}/lib%{name}.so.%{so_ver}*
%if 0%{?bootstrap}
%{_libdir}/lib%{name}.so.%{so_ver_old}*
%endif
%files devel
%doc %dir %{_pkgdocdir}
%doc %{_pkgdocdir}/ChangeLog
%doc %{_pkgdocdir}/README*
%{_includedir}/%{name}/
%{_includedir}/%{name}
%{_libdir}/cmake/%{name}
%{_libdir}/lib%{name}.so
%{_libdir}/pkgconfig/%{name}.pc
@ -170,33 +145,105 @@ end
%files doc
%if 0%{?fedora} || 0%{?rhel} >= 7
%license %{_datadir}/licenses/%{name}*
%endif # 0%%{?fedora} || 0%%{?rhel} >= 7
%endif
%doc %{_pkgdocdir}
%changelog
* Tue Sep 14 2021 Tomas Korbar <tkorbar@redhat.com> - 0.13.1-3
- Start versioning symbols when building library
- Resolves: rhbz#2001063
* Tue Sep 14 2021 Tomas Korbar <tkorbar@redhat.com> - 0.14-11
- Start providing versioned symbols
- Resolves: rhbz#2001067
* Thu May 20 2021 Joe Orton <jorton@redhat.com> - 0.13.1-2
- rebuild (#1954436)
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 0.14-10
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688
* Thu Apr 15 2021 Tomas Korbar <tkorbar@redhat.com> - 0.13.1-1
- Fix CVE-2020-12762 out-of-bounds write via a large JSON file
- Resolves: rhbz#1835626
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 0.14-9
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
* Wed Feb 03 2021 Petr Menšík <pemensik@redhat.com> - 0.13.1-0.4
- Move json-c-devel to AppStream
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.14-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Fri Sep 18 2020 Anna Khaitovich <akhaitov@redhat.com> - 0.13.1-0.3
- Don't package empty /usr/share/doc/json-c
- Resolves: rhbz#1741076
- Do not use --enable-rdrand
- Resolves: rhbz#1806532
* Mon Jul 27 2020 Björn Esser <besser82@fedoraproject.org> - 0.14-7
- Use new cmake macros
* Fri Aug 03 2018 Radovan Sroka <rsroka@redhat.com> - 0.13.1-0.2
- disable bootstrap for RHEL8
* Tue May 26 2020 Björn Esser <besser82@fedoraproject.org> - 0.14-6
- Build using Ninja instead of Make
- Add a patch to move Doxyfile into doc subdir
- Remove pre-built html documentation
- Update Doxyfile during %%prep
- Add a patch to apply some optimizations to arraylist
- Hardlink the files in %%_pkgdocdir
* Mon May 25 2020 Björn Esser <besser82@fedoraproject.org> - 0.14-5
- Run the testssuite with valgrind on %%valgrind_arches
* Mon May 18 2020 Björn Esser <besser82@fedoraproject.org> - 0.14-4
- Add a patch to fix a test
- Add a patch to fix generation of user-documentation
* Mon May 11 2020 Björn Esser <besser82@fedoraproject.org> - 0.14-3
- Add upstream patch fixing usage of errno in json_parse_uint64()
* Sun May 10 2020 Björn Esser <besser82@fedoraproject.org> - 0.14-2
- Add a patch to backport fixes applied on upstream master branch
- Re-enable RDRAND as json-c can detect broken implementations in CPUs now
- Disable -Werror during build
* Tue Apr 21 2020 Björn Esser <besser82@fedoraproject.org> - 0.14-1
- Update to 0.14
* Mon Apr 20 2020 Björn Esser <besser82@fedoraproject.org> - 0.13.99-0.4.20200416gita911439
- Remove config.h file from installation
- Drop hardlinking of the documentation files
* Thu Apr 16 2020 Björn Esser <besser82@fedoraproject.org> - 0.13.99-0.3.20200416gita911439
- Update to recent git snapshot
* Tue Apr 14 2020 Björn Esser <besser82@fedoraproject.org> - 0.13.99-0.2.20200414git7fb8d56
- Update to recent git snapshot
* Tue Apr 14 2020 Björn Esser <besser82@fedoraproject.org> - 0.13.99-0.1.20200414gitab5425a
- Update to recent git snapshot using forge macros
* Sun Apr 12 2020 Björn Esser <besser82@fedoraproject.org> - 0.13.1-11
- Drop bootstrap logic, as the package is no dependency of @build anymore
- Add some explicit BuildRequires, which were implicit
- Small spec file cleanups
* Sat Apr 11 2020 Björn Esser <besser82@fedoraproject.org> - 0.13.1-10
- Add explicit configure switch to disable rdrand
- Add explicit configure switch to enable linking with Bsymbolic
- Do not use macros to invoke executables
- Drop obsolete %%pretrans scriptlet
* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.13.1-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Thu Nov 28 2019 Petr Menšík <pemensik@redhat.com> - 0.13.1-8
- Remove empty doc dir from library package
* Wed Nov 06 2019 Miroslav Lichvar <mlichvar@redhat.com> 0.13.1-7
- Disable rdrand support (#1745333)
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.13.1-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Wed Jun 26 2019 Björn Esser <besser82@fedoraproject.org> - 0.13.1-5
- Use hardlink without full path to the binary (#1721964)
- Use new style bootstrap logic
* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.13.1-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.13.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Tue May 08 2018 Björn Esser <besser82@fedoraproject.org> - 0.13.1-2
- Add some cherry-picked fixes from upstream master
* Tue Mar 06 2018 Björn Esser <besser82@fedoraproject.org> - 0.13.1-1
- New upstream release (rhbz#1552053)
* Tue Mar 06 2018 Björn Esser <besser82@fedoraproject.org> - 0.13.1-0.1
- Bootstrapping for so-name bump