From cadf1d22da70f3ab3d1216dae70eb42c3678d9d4 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Wed, 19 Jun 2019 14:28:29 +0100 Subject: [PATCH] Tidy up spec file and fix FTBS due to hardlink location change --- rapidjson.spec | 237 ++++++++++++++++++------------------------------- 1 file changed, 86 insertions(+), 151 deletions(-) diff --git a/rapidjson.spec b/rapidjson.spec index eb5efaa..ff8212f 100644 --- a/rapidjson.spec +++ b/rapidjson.spec @@ -1,95 +1,103 @@ -# Conditional for release and snapshot builds. Uncomment for release-builds. -%global rel_build 1 - -# 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. +%global debug_package %{nil} Name: rapidjson Version: 1.1.0 -Release: 9%{?gitrel}%{?dist} +Release: 10%{?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 BuildRequires: cmake BuildRequires: gcc-c++ BuildRequires: gtest-devel BuildRequires: valgrind +BuildRequires: util-linux +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} +%{description} + + +%package doc +Summary: Documentation-files for %{name} + +%description doc +This package contains the documentation-files for %{name}. + + +%prep +%autosetup -p 1 -n %{name}-%{version} + +# 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 && \ + touch -r ${file} ${file}.new && \ + mv -f ${file}.new ${file} +done + +# 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 +%cmake . -Bbuild -DLIB_INSTALL_DIR=%{_datadir} -DDOC_INSTALL_DIR=%{_pkgdocdir} -DGTESTSRC_FOUND=TRUE -DGTEST_SOURCE_DIR=. +%make_build -Cbuild + + +%install +%make_install -Cbuild +cp -a CHANGELOG.md readme*.md %{buildroot}%{_pkgdocdir} +find %{buildroot} -type f -name 'CMake*.txt' -delete +hardlink -v %{buildroot}%{_includedir} +hardlink -v %{buildroot}%{_pkgdocdir} + + +%check +cd build +ctest -V %{?_smp_mflags} + %files devel %license license.txt @@ -101,89 +109,16 @@ Provides: %{name}-static == %{version}-%{release} %{_includedir}/%{name} -%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}*} +%license license.txt %doc %{_pkgdocdir} -%prep -%setup -q%{!?rel_build:n %{name}-%{commit}} -%patch0 -p1 -b .gtest -%{__mkdir} -p %{cmake_build_dir} - -# Fix 'W: wrong-file-end-of-line-encoding'. -for _file in "license.txt" $(%{_bindir}/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} -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' - - -%build -pushd %{cmake_build_dir} -%cmake \ - -DDOC_INSTALL_DIR=%{_pkgdocdir} \ - -DGTESTSRC_FOUND=TRUE \ - -DGTEST_SOURCE_DIR=. \ - .. -%{__make} %{?_smp_mflags} -popd - - -%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} - - -%check -# Valgrind fails on %%ix86 and ppc64le. -%ifarch %{ix86} ppc64le -CTEST_EXCLUDE=".*valgrind.*" -%endif # arch %%{ix86} -pushd %{cmake_build_dir} -%{_bindir}/ctest -E "${CTEST_EXCLUDE}" -V . -popd - - %changelog +* 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