diff --git a/SOURCES/rapidjson-1.1.0-c++20.patch b/SOURCES/rapidjson-1.1.0-c++20.patch new file mode 100644 index 0000000..9b10ae6 --- /dev/null +++ b/SOURCES/rapidjson-1.1.0-c++20.patch @@ -0,0 +1,31 @@ +commit c6c56d87ff12ba8100b261f371fdaa106f95fe14 +Author: Tom Hughes +Date: Tue Sep 1 19:24:03 2020 +0100 + + Avoid ambiguous operator errors in C++20 + + Derived from upstream commit ebcbd04484fcdaddbb9fd7798e76bbfb4ae8f840 + +diff --git a/include/rapidjson/document.h b/include/rapidjson/document.h +index e3e20dfb..1485321d 100644 +--- a/include/rapidjson/document.h ++++ b/include/rapidjson/document.h +@@ -168,12 +168,12 @@ public: + + //! @name relations + //@{ +- bool operator==(ConstIterator that) const { return ptr_ == that.ptr_; } +- bool operator!=(ConstIterator that) const { return ptr_ != that.ptr_; } +- bool operator<=(ConstIterator that) const { return ptr_ <= that.ptr_; } +- bool operator>=(ConstIterator that) const { return ptr_ >= that.ptr_; } +- bool operator< (ConstIterator that) const { return ptr_ < that.ptr_; } +- bool operator> (ConstIterator that) const { return ptr_ > that.ptr_; } ++ template bool operator==(const GenericMemberIterator& that) const { return ptr_ == that.ptr_; } ++ template bool operator!=(const GenericMemberIterator& that) const { return ptr_ != that.ptr_; } ++ template bool operator<=(const GenericMemberIterator& that) const { return ptr_ <= that.ptr_; } ++ template bool operator>=(const GenericMemberIterator& that) const { return ptr_ >= that.ptr_; } ++ template bool operator< (const GenericMemberIterator& that) const { return ptr_ < that.ptr_; } ++ template bool operator> (const GenericMemberIterator& that) const { return ptr_ > that.ptr_; } + //@} + + //! @name dereference diff --git a/SPECS/rapidjson.spec b/SPECS/rapidjson.spec index 2c62211..22ab7ff 100644 --- a/SPECS/rapidjson.spec +++ b/SPECS/rapidjson.spec @@ -1,192 +1,181 @@ -# Conditional for release and snapshot builds. Uncomment for release-builds. -%global rel_build 1 +%global debug_package %{nil} -# Settings used for build from snapshots. -%if 0%{?rel_build} -%global gittar %{name}-%{version}.tar.gz -%else # 0%%{?rel_build} -%global commit 67143c2ba002604a510ba436a8ed0d785a9f7de6 -%global commit_date 20140801 -%global shortcommit %(c=%{commit};echo ${c:0:7}) -%global gitver git%{commit_date}-%{shortcommit} -%global gitrel .git%{commit_date}.%{shortcommit} -%global gittar %{name}-%{version}-%{gitver}.tar.gz -%endif # 0%%{?rel_build} - -# This is a header-only lib. There is no debuginfo generated. -%global debug_package %{nil} - -# Set %%_pkgdocdir-helper-macro if not defined. -%if 0%{!?_pkgdocdir:1} -%global _pkgdocdir %{_docdir}/%{name}-%{version} -%endif # 0%%{!?_pkgdocdir:1} - -# CMake-builds go out-of-tree. Tests are not run in %%{buildroot}. -%global cmake_build_dir build-%{?__isa}%{?dist} - -# Set %%giturl for later use. -%global giturl https://github.com/miloyip/%{name}/archive - -%global common_desc \ -RapidJSON is a fast JSON parser and generator for C++. It was \ -inspired by RapidXml. \ - \ - RapidJSON is small but complete. It supports both SAX and DOM style \ - API. The SAX parser is only a half thousand lines of code. \ - \ - RapidJSON is fast. Its performance can be comparable to strlen(). \ - It also optionally supports SSE2/SSE4.1 for acceleration. \ - \ - RapidJSON is self-contained. It does not depend on external \ - libraries such as BOOST. It even does not depend on STL. \ - \ - RapidJSON is memory friendly. Each JSON value occupies exactly \ - 16/20 bytes for most 32/64-bit machines (excluding text string). By \ - default it uses a fast memory allocator, and the parser allocates \ - memory compactly during parsing. \ - \ - RapidJSON is Unicode friendly. It supports UTF-8, UTF-16, UTF-32 \ - (LE & BE), and their detection, validation and transcoding \ - internally. For example, you can read a UTF-8 file and let RapidJSON \ - transcode the JSON strings into UTF-16 in the DOM. It also supports \ - surrogates and "\u0000" (null character). \ - \ -JSON(JavaScript Object Notation) is a light-weight data exchange \ -format. RapidJSON should be in fully compliance with RFC4627/ECMA-404. +%bcond_with gtest Name: rapidjson Version: 1.1.0 -Release: 3%{?gitrel}%{?dist} +Release: 19%{?dist} Summary: Fast JSON parser and generator for C++ License: MIT -URL: http://miloyip.github.io/%{name} -%if 0%{?rel_build} -# Sources for release-builds. -Source0: %{giturl}/v%{version}.tar.gz#/%{gittar} -%else # 0%%{?rel_build} -# Sources for snapshot-builds. -Source0: %{giturl}/%{commit}.tar.gz#/%{gittar} -%endif # 0%%{?rel_build} - -# Downstream-patch for gtest. +URL: http://rapidjson.org/ +Source0: https://github.com/Tencent/rapidjson/archive/v%{version}/%{name}-%{version}.tar.gz +# Downstream-patch for gtest Patch0: rapidjson-1.1.0-do_not_include_gtest_src_dir.patch +# Upstream derived patch for C++20 support +Patch1: rapidjson-1.1.0-c++20.patch -BuildRequires: cmake -#BuildRequires: gtest-devel -%ifnarch %{ix86} aarch64 s390 s390x -BuildRequires: valgrind +BuildRequires: cmake make +BuildRequires: gcc-c++ +%if %{with gtest} +BuildRequires: gtest-devel %endif +BuildRequires: valgrind +BuildRequires: doxygen %description -%{common_desc} +RapidJSON is a fast JSON parser and generator for C++. It was +inspired by RapidXml. + + RapidJSON is small but complete. It supports both SAX and DOM style + API. The SAX parser is only a half thousand lines of code. + + RapidJSON is fast. Its performance can be comparable to strlen(). + It also optionally supports SSE2/SSE4.1 for acceleration. + + RapidJSON is self-contained. It does not depend on external + libraries such as BOOST. It even does not depend on STL. + + RapidJSON is memory friendly. Each JSON value occupies exactly + 16/20 bytes for most 32/64-bit machines (excluding text string). By + default it uses a fast memory allocator, and the parser allocates + memory compactly during parsing. + + RapidJSON is Unicode friendly. It supports UTF-8, UTF-16, UTF-32 + (LE & BE), and their detection, validation and transcoding + internally. For example, you can read a UTF-8 file and let RapidJSON + transcode the JSON strings into UTF-16 in the DOM. It also supports + surrogates and "\u0000" (null character). + +JSON(JavaScript Object Notation) is a light-weight data exchange +format. RapidJSON should be in fully compliance with RFC4627/ECMA-404. %package devel -Summary: %{summary} -BuildArch: noarch - -Provides: %{name} == %{version}-%{release} -Provides: %{name}-static == %{version}-%{release} +Summary: %{summary} +Provides: %{name} = %{version}-%{release} +Provides: %{name}-static = %{version}-%{release} %description devel -%{common_desc} - -%files devel -%license license.txt -%doc %dir %{_pkgdocdir} -%doc %{_pkgdocdir}/CHANGELOG.md -%doc %{_pkgdocdir}/readme*.md -%{_datadir}/cmake -%{_datadir}/pkgconfig/* -%{_includedir}/%{name} +%{description} %package doc Summary: Documentation-files for %{name} - -%if 0%{?fedora} || 0%{?rhel} >= 8 BuildArch: noarch -%endif # 0%%{?fedora} || 0%%{?rhel} >= 8 - -BuildRequires: %{_sbindir}/hardlink -BuildRequires: doxygen %description doc This package contains the documentation-files for %{name}. -%files doc -# Pickup license-files from main-pkg's license-dir. -# If there's no license-dir they are picked up by %%doc previously. -%{?_licensedir:%license %{_datadir}/licenses/%{name}*} -%doc %{_pkgdocdir} - %prep -%setup -q%{!?rel_build:n %{name}-%{commit}} -%patch0 -p1 -b .gtest -%{__mkdir} -p %{cmake_build_dir} +%autosetup -p 1 -n %{name}-%{version} -# Fix 'W: wrong-file-end-of-line-encoding'. -for _file in "license.txt" $(%{_bindir}/find example -type f -name '*.c*') +# Remove bundled code +rm -rf thirdparty + +# Convert DOS line endings to unix +for file in "license.txt" $(find example -type f -name *.c*) do - %{__sed} -e 's!\r$!!g' < ${_file} > ${_file}.new && \ - /bin/touch -r ${_file} ${_file}.new && \ - %{__mv} -f ${_file}.new ${_file} + sed -e "s/\r$//g" < ${file} > ${file}.new && \ + touch -r ${file} ${file}.new && \ + mv -f ${file}.new ${file} done -# Create an uncluttered backup of examples for inclusion in %%doc. -%{__cp} -a example examples - -# Disable -Werror. -%{_bindir}/find . -type f -name 'CMakeLists.txt' -print0 | \ - %{_bindir}/xargs -0 %{__sed} -i -e's![ \t]*-march=native!!g' -e's![ \t]*-Werror!!g' +# Remove -march=native and -Werror from compile commands +find . -type f -name CMakeLists.txt -print0 | \ + xargs -0r sed -i -e "s/-march=native/ /g" -e "s/-Werror//g" %build -pushd %{cmake_build_dir} -%cmake \ - -DDOC_INSTALL_DIR=%{_pkgdocdir} \ - -DGTESTSRC_FOUND=TRUE \ - -DGTEST_SOURCE_DIR=. \ - .. -%{__make} %{?_smp_mflags} -popd +%cmake -DDOC_INSTALL_DIR=%{_pkgdocdir} \ + %{?with_gtest:-DGTESTSRC_FOUND=TRUE -DGTEST_SOURCE_DIR=.} \ + %{!?with_gtest:-DRAPIDJSON_BUILD_TESTS=OFF} +%cmake_build %install -pushd %{cmake_build_dir} -%{__make} install DESTDIR=%{buildroot} -popd - -# Move pkgconfig und CMake-stuff to generic datadir. -%{__mv} -f %{buildroot}%{_libdir}/* %{buildroot}%{_datadir} - -# Copy the documentation-files to final location. -%{__cp} -a CHANGELOG.md readme*.md examples %{buildroot}%{_pkgdocdir} - -# Find and purge build-sys files. -%{_bindir}/find %{buildroot} -type f -name 'CMake*.txt' -print0 | \ - %{_bindir}/xargs -0 %{__rm} -fv - -# Hardlink duplicated files to save space. -%{_sbindir}/hardlink -v %{buildroot}%{_includedir} -%{_sbindir}/hardlink -v %{buildroot}%{_pkgdocdir} +%cmake_install +cp -a CHANGELOG.md readme*.md %{buildroot}%{_pkgdocdir} +find %{buildroot} -type f -name 'CMake*.txt' -delete +%if %{with gtest} %check -# Valgrind fails on %%ix86 and aarch64 and is not available on s390x -%ifarch %{ix86} aarch64 s390 s390x -CTEST_EXCLUDE=".*valgrind.*" -%endif # arch %%{ix86} -pushd %{cmake_build_dir} -%{_bindir}/ctest -E "${CTEST_EXCLUDE}" -V . -popd +%ctest +%endif + + +%files devel +%license license.txt +%dir %{_pkgdocdir} +%{_pkgdocdir}/CHANGELOG.md +%{_pkgdocdir}/readme*.md +%{_libdir}/cmake +%{_libdir}/pkgconfig/* +%{_includedir}/%{name} + + +%files doc +%license license.txt +%{_pkgdocdir} %changelog -* Tue Sep 18 2018 Honza Horak - 1.1.0-3 -- Do not use valgrind for tests on s390 and s390x +* Tue Aug 10 2021 Mohan Boddu - 1.1.0-19 +- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags + Related: rhbz#1991688 + +* Thu Jul 15 2021 Honza Horak - 1.1.0-18 +- Remove gtest dependency and turn off tests + Resolves: #1977656 + +* Fri Apr 16 2021 Mohan Boddu - 1.1.0-17 +- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937 + +* Wed Jan 27 2021 Fedora Release Engineering - 1.1.0-16 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Tue Sep 1 2020 Tom Hughes - 1.1.0-15 +- Add patch for C++20 support + +* Wed Jul 29 2020 Fedora Release Engineering - 1.1.0-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue Jul 14 2020 Tom Hughes - 1.1.0-13 +- Install pkg-config and cmake files to arched location +- Build documentation as noarch + +* Thu Jan 30 2020 Fedora Release Engineering - 1.1.0-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Fri Jul 26 2019 Fedora Release Engineering - 1.1.0-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Wed Jun 19 2019 Tom Hughes - 1.1.0-10 +- Fix FTBS due to hardlink location change +- Tidy up spec file + +* Sat Feb 02 2019 Fedora Release Engineering - 1.1.0-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Sat Jul 14 2018 Fedora Release Engineering - 1.1.0-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Wed Mar 7 2018 Tom Hughes - 1.1.0-7 +- Require gcc-c++ + +* Fri Feb 09 2018 Fedora Release Engineering - 1.1.0-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Wed Aug 9 2017 Tom Hughes - 1.1.0-5 +- Update valgrind exclusions + +* Thu Aug 03 2017 Fedora Release Engineering - 1.1.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 1.1.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild * Fri May 05 2017 Björn Esser - 1.1.0-2 - Doc-pkg must be build archful on RHEL <= 7