From ca913d72ecdda9ba7e8a1d12de1b468192105ce2c0dc61f8ae28c2bfce3487b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ismail=20D=C3=B6nmez?= Date: Fri, 12 Dec 2014 13:26:32 +0000 Subject: [PATCH] Accepting request 264997 from home:pluskalm:branches:devel:libraries:c_c++ New release (1.0.0), enable cmake building OBS-URL: https://build.opensuse.org/request/show/264997 OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/jsoncpp?expand=0&rev=2 --- 1.0.0.tar.gz | 3 + _service | 16 ---- jsoncpp-0.6~rc2+git.1405320734.3b9b740.tar.xz | 3 - jsoncpp-1.0.0-lib_suffix.patch | 59 ++++++++++++++ jsoncpp.changes | 69 ++++++++++++++++ jsoncpp.spec | 79 ++++++++----------- 6 files changed, 164 insertions(+), 65 deletions(-) create mode 100644 1.0.0.tar.gz delete mode 100644 _service delete mode 100644 jsoncpp-0.6~rc2+git.1405320734.3b9b740.tar.xz create mode 100644 jsoncpp-1.0.0-lib_suffix.patch diff --git a/1.0.0.tar.gz b/1.0.0.tar.gz new file mode 100644 index 0000000..8f76f5d --- /dev/null +++ b/1.0.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7eeb9b96d10cfd2f6205a09899f9800931648f652e09731821854c9ce0c7a1a +size 165343 diff --git a/_service b/_service deleted file mode 100644 index 4e31651..0000000 --- a/_service +++ /dev/null @@ -1,16 +0,0 @@ - - - https://github.com/open-source-parsers/jsoncpp.git - git - .git - 0.6~rc2+git.%ct.%h - master - - - crowbar-barclamp-swift-*git*.tar - xz - - - jsoncpp - - diff --git a/jsoncpp-0.6~rc2+git.1405320734.3b9b740.tar.xz b/jsoncpp-0.6~rc2+git.1405320734.3b9b740.tar.xz deleted file mode 100644 index ca50987..0000000 --- a/jsoncpp-0.6~rc2+git.1405320734.3b9b740.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:dfb8c1194d48a9a1115f872d942527bfdadf9e17f57d772b0f21469f076f9b5f -size 109872 diff --git a/jsoncpp-1.0.0-lib_suffix.patch b/jsoncpp-1.0.0-lib_suffix.patch new file mode 100644 index 0000000..e778444 --- /dev/null +++ b/jsoncpp-1.0.0-lib_suffix.patch @@ -0,0 +1,59 @@ +From f8a3a599ac2afaeaf408847b189404f65691251d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= +Date: Mon, 1 Dec 2014 23:44:08 +0100 +Subject: [PATCH] Adapt libdir for 64bit RPM-based distros RPM-based distros + such as Fedora or Mageia put 64bit libraries in /usr/lib64 while 32bit + libraries go to /usr/lib. This is usually taken into account in CMake + projects using a LIB_SUFFIX parameter that can be set to "" or "64". + +--- + CMakeLists.txt | 10 ++++++---- + pkg-config/jsoncpp.pc.in | 2 +- + 2 files changed, 7 insertions(+), 5 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 2def6ca..3e8f96e 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -17,15 +17,17 @@ IF(NOT WIN32) + ENDIF(NOT CMAKE_BUILD_TYPE) + ENDIF(NOT WIN32) + ++SET(LIB_SUFFIX "" CACHE STRING "Optional arch-dependent suffix for the library installation directory") ++ + SET(RUNTIME_INSTALL_DIR bin + CACHE PATH "Install dir for executables and dlls") +-SET(ARCHIVE_INSTALL_DIR lib ++SET(ARCHIVE_INSTALL_DIR lib${LIB_SUFFIX} + CACHE PATH "Install dir for static libraries") +-SET(LIBRARY_INSTALL_DIR lib ++SET(LIBRARY_INSTALL_DIR lib${LIB_SUFFIX} + CACHE PATH "Install dir for shared libraries") + SET(INCLUDE_INSTALL_DIR include + CACHE PATH "Install dir for headers") +-SET(PACKAGE_INSTALL_DIR lib/cmake ++SET(PACKAGE_INSTALL_DIR lib${LIB_SUFFIX}/cmake + CACHE PATH "Install dir for cmake package config files") + MARK_AS_ADVANCED( RUNTIME_INSTALL_DIR ARCHIVE_INSTALL_DIR INCLUDE_INSTALL_DIR PACKAGE_INSTALL_DIR ) + +@@ -101,7 +103,7 @@ IF(JSONCPP_WITH_PKGCONFIG_SUPPORT) + "pkg-config/jsoncpp.pc" + @ONLY) + INSTALL(FILES "${CMAKE_BINARY_DIR}/pkg-config/jsoncpp.pc" +- DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig") ++ DESTINATION "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/pkgconfig") + ENDIF(JSONCPP_WITH_PKGCONFIG_SUPPORT) + + IF(JSONCPP_WITH_CMAKE_PACKAGE) +diff --git a/pkg-config/jsoncpp.pc.in b/pkg-config/jsoncpp.pc.in +index 5de8105..9613181 100644 +--- a/pkg-config/jsoncpp.pc.in ++++ b/pkg-config/jsoncpp.pc.in +@@ -1,6 +1,6 @@ + prefix=@CMAKE_INSTALL_PREFIX@ + exec_prefix=${prefix} +-libdir=${exec_prefix}/lib ++libdir=${exec_prefix}/@LIBRARY_INSTALL_DIR@ + includedir=${prefix}/@INCLUDE_INSTALL_DIR@ + + Name: jsoncpp diff --git a/jsoncpp.changes b/jsoncpp.changes index 1f3c3df..e7785d9 100644 --- a/jsoncpp.changes +++ b/jsoncpp.changes @@ -1,3 +1,72 @@ +------------------------------------------------------------------- +Fri Dec 12 13:16:18 UTC 2014 - mpluskal@suse.com + +- Enable cmake build + + add fix for wrong lib_suffix - jsoncpp-1.0.0-lib_suffix.patch +- Disable building for i586 - jsonccp fails its unit tests +- Update to new release - 1.0.0: + + Updated the type system's behavior, in order to better support backwards + compatibility with code that was written before 64-bit integer support was + introduced. Here's how it works now: + + * isInt, isInt64, isUInt, and isUInt64 return true if and only if the + value can be exactly represented as that type. In particular, a value + constructed with a double like 17.0 will now return true for all of + these methods. + + * isDouble and isFloat now return true for all numeric values, since all + numeric values can be converted to a double or float without + truncation. Note however that the conversion may not be exact -- for + example, doubles cannot exactly represent all integers above 2^53 + 1. + + * isBool, isNull, isString, isArray, and isObject now return true if and + only if the value is of that type. + + * isConvertibleTo(fooValue) indicates that it is safe to call asFoo. + (For each type foo, isFoo always implies isConvertibleTo(fooValue).) + asFoo returns an approximate or exact representation as appropriate. + For example, a double value may be truncated when asInt is called. + + * For backwards compatibility with old code, isConvertibleTo(intValue) + may return false even if type() == intValue. This is because the value + may have been constructed with a 64-bit integer larger than maxInt, + and calling asInt() would cause an exception. If you're writing new + code, use isInt64 to find out whether the value is exactly + representable using an Int64, or asDouble() combined with minInt64 and + maxInt64 to figure out whether it is approximately representable. + ++ Value + - Patch #10: BOOST_FOREACH compatibility. Made Json::iterator more + standard compliant, added missing iterator_category and value_type + typedefs (contribued by Robert A. Iannucci). + ++ Compilation + + - New CMake based build system. Based in part on contribution from + Igor Okulist and Damien Buhl (Patch #14). + + - New header json/version.h now contains version number macros + (JSONCPP_VERSION_MAJOR, JSONCPP_VERSION_MINOR, JSONCPP_VERSION_PATCH + and JSONCPP_VERSION_HEXA). + + - Patch #11: added missing JSON_API on some classes causing link issues + when building as a dynamic library on Windows + (contributed by Francis Bolduc). + + - Visual Studio DLL: suppressed warning "C4251: : + needs to have dll-interface to be used by..." via pragma push/pop + in json-cpp headers. + + - Added Travis CI intregration: https://travis-ci.org/blep/jsoncpp-mirror + ++ Bug fixes + - Patch #15: Copy constructor does not initialize allocated_ for stringValue + (contributed by rmongia). + + - Patch #16: Missing field copy in Json::Value::iterator causing infinite + loop when using experimental internal map (#define JSON_VALUE_USE_INTERNAL_MAP) + (contributed by Ming-Lin Kao). + ------------------------------------------------------------------- Fri Jul 25 07:43:07 UTC 2014 - mvyskocil@opensuse.org diff --git a/jsoncpp.spec b/jsoncpp.spec index b3e713f..149eb74 100644 --- a/jsoncpp.spec +++ b/jsoncpp.spec @@ -1,5 +1,5 @@ # -# spec file for package +# spec file for package jsoncpp # # Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany. # @@ -15,21 +15,24 @@ # Please submit bugfixes or comments via http://bugs.opensuse.org/ # -Name: jsoncpp -Version: 0.6~rc2+git.1405320734.3b9b740 -Release: 0 -License: MIT -Summary: C++ library that allows manipulating with JSON -Url: https://github.com/open-source-parsers/jsoncpp -Group: Devel/Libraries/C and C++ -Source0: jsoncpp-0.6~rc2+git.1405320734.3b9b740.tar.xz -BuildRoot: %{_tmppath}/%{name}-%{version}-build -#strip unused dependencies from there -#BuildRequires: cmake +Name: jsoncpp +Version: 1.0.0 +Release: 0 +Summary: C++ library that allows manipulating with JSON +License: MIT +Group: Devel/Libraries/C and C++ +Url: https://github.com/open-source-parsers/jsoncpp +Source0: https://github.com/open-source-parsers/%{name}/archive/%{version}.tar.gz +Patch0: jsoncpp-1.0.0-lib_suffix.patch +BuildRequires: cmake BuildRequires: doxygen -BuildRequires: python BuildRequires: gcc-c++ +BuildRequires: pkg-config +BuildRequires: python +BuildRoot: %{_tmppath}/%{name}-%{version}-build +# On i386, jsoncpp fails it's own unittests +ExcludeArch: i586 %description JSON is a lightweight data-interchange format. It can represent numbers, @@ -43,7 +46,7 @@ format to store user input files. %package devel Summary: Development files for %{name} Group: Development/Languages/C and C++ -Requires: lib%{name}0 = %{version} +Requires: lib%{name}1 = %{version} %description devel JSON is a lightweight data-interchange format. It can represent numbers, @@ -67,11 +70,11 @@ serialization and deserialization to and from strings. It can also preserve existing comment in unserialization/serialization steps, making it a convenient format to store user input files. -%package -n lib%{name}0 +%package -n lib%{name}1 Summary: Shared library for %{name} Group: Development/Languages/C and C++ -%description -n lib%{name}0 +%description -n lib%{name}1 JSON is a lightweight data-interchange format. It can represent numbers, strings, ordered sequences of values, and collections of name/value pairs. @@ -82,55 +85,39 @@ format to store user input files. %prep %setup -q +%patch0 -p1 %build -# ignore default cmake and use Gentoo's approach -# % {cmake} \ -# -DJSONCPP_LIB_BUILD_SHARED=ON +python doxybuild.py --doxygen=%{_bindir}/doxygen -CFLAGS="${CFLAGS:-%optflags}" ; export CFLAGS ; -CXXFLAGS="${CXXFLAGS:-%optflags}" ; export CXXFLAGS ; -FFLAGS="${FFLAGS:-%optflags%{?_fmoddir: -I%_fmoddir}}" ; export FFLAGS ; +# path needs to be exported otherwise unit tests will fail +export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:%{_builddir}/%{name}-%{version}/build/lib +%cmake -DJSONCPP_LIB_BUILD_SHARED=ON -# This is the soname that other distros use. -soname="libjsoncpp.so.0" - -echo ${PWD}/ - -c++ src/lib_json/*.cpp -Iinclude -shared -fPIC \ - -Wl,-soname,${soname} -o ${soname} - -ln -sf ${soname} libjsoncpp.so - -%{__python} doxybuild.py --doxygen=%{_bindir}/doxygen +make %{?_smp_mflags} %install +%cmake_install -# to have the same location as Gentoo, Debian, Ubuntu and Arch see gentoo bug #452234 -mkdir -p %{buildroot}/%{_includedir}/jsoncpp -cp -ra include/json/ %{buildroot}/%{_includedir}/jsoncpp +%post -n lib%{name}1 -p /sbin/ldconfig -mkdir -p %{buildroot}/%{_libdir}/ -cp -a libjsoncpp.so* %{buildroot}/%{_libdir}/ +%postun -n lib%{name}1 -p /sbin/ldconfig - -%post -n lib%{name}0 -p /sbin/ldconfig -%postun -n lib%{name}0 -p /sbin/ldconfig - -%files -n lib%{name}0 +%files -n lib%{name}1 %defattr(-,root,root) %doc LICENSE -%{_libdir}/lib%{name}.so.0 +%{_libdir}/lib%{name}.so.* %files devel %defattr(-,root,root) %doc AUTHORS LICENSE NEWS.txt README.md +%{_libdir}/pkgconfig/%{name}.pc %{_libdir}/lib%{name}.so -%{_includedir}/%{name}/ + +%{_includedir}/json/ %files doc %defattr(-,root,root) %doc dist/doxygen/jsoncpp* %changelog -