diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..05ff39d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/release-1.8.0.tar.gz diff --git a/.gtest.metadata b/.gtest.metadata new file mode 100644 index 0000000..e09c435 --- /dev/null +++ b/.gtest.metadata @@ -0,0 +1 @@ +e7e646a6204638fe8e87e165292b8dd9cd4c36ed SOURCES/release-1.8.0.tar.gz diff --git a/SOURCES/gtest-1.8.0-fix-double-free-with-shared-libs.patch b/SOURCES/gtest-1.8.0-fix-double-free-with-shared-libs.patch new file mode 100644 index 0000000..5a8290f --- /dev/null +++ b/SOURCES/gtest-1.8.0-fix-double-free-with-shared-libs.patch @@ -0,0 +1,98 @@ +From 0663ce9024c9b78ddf6eb3fc1ceb45361ed91767 Mon Sep 17 00:00:00 2001 +From: Romain Geissler +Date: Sat, 2 Dec 2017 22:47:20 +0100 +Subject: [PATCH] Fix double free when building Gtest/GMock in shared libraries + and linking a test executable with both. + +--- + googlemock/CMakeLists.txt | 63 ++++++++++++++++++++++++++++++----------------- + 1 file changed, 40 insertions(+), 23 deletions(-) + +diff --git a/googlemock/CMakeLists.txt b/googlemock/CMakeLists.txt +index 724fdd5..f7bad8a 100644 +--- a/googlemock/CMakeLists.txt ++++ b/googlemock/CMakeLists.txt +@@ -86,16 +86,23 @@ endif() + # Google Mock libraries. We build them using more strict warnings than what + # are used for other targets, to ensure that Google Mock can be compiled by + # a user aggressive about warnings. +-cxx_library(gmock +- "${cxx_strict}" +- "${gtest_dir}/src/gtest-all.cc" +- src/gmock-all.cc) +- +-cxx_library(gmock_main +- "${cxx_strict}" +- "${gtest_dir}/src/gtest-all.cc" +- src/gmock-all.cc +- src/gmock_main.cc) ++if (MSVC) ++ cxx_library(gmock ++ "${cxx_strict}" ++ "${gtest_dir}/src/gtest-all.cc" ++ src/gmock-all.cc) ++ ++ cxx_library(gmock_main ++ "${cxx_strict}" ++ "${gtest_dir}/src/gtest-all.cc" ++ src/gmock-all.cc ++ src/gmock_main.cc) ++else() ++ cxx_library(gmock "${cxx_strict}" src/gmock-all.cc) ++ target_link_libraries(gmock gtest) ++ cxx_library(gmock_main "${cxx_strict}" src/gmock_main.cc) ++ target_link_libraries(gmock_main gmock) ++endif() + + # If the CMake version supports it, attach header directory information + # to the targets for when we are part of a parent build (ie being pulled +@@ -175,23 +182,33 @@ if (gmock_build_tests) + ############################################################ + # C++ tests built with non-standard compiler flags. + +- cxx_library(gmock_main_no_exception "${cxx_no_exception}" +- "${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc) +- +- cxx_library(gmock_main_no_rtti "${cxx_no_rtti}" +- "${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc) ++ if (MSVC) ++ cxx_library(gmock_main_no_exception "${cxx_no_exception}" ++ "${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc) + +- if (NOT MSVC OR MSVC_VERSION LESS 1600) # 1600 is Visual Studio 2010. +- # Visual Studio 2010, 2012, and 2013 define symbols in std::tr1 that +- # conflict with our own definitions. Therefore using our own tuple does not +- # work on those compilers. +- cxx_library(gmock_main_use_own_tuple "${cxx_use_own_tuple}" ++ cxx_library(gmock_main_no_rtti "${cxx_no_rtti}" + "${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc) + +- cxx_test_with_flags(gmock_use_own_tuple_test "${cxx_use_own_tuple}" +- gmock_main_use_own_tuple test/gmock-spec-builders_test.cc) ++ if (MSVC_VERSION LESS 1600) # 1600 is Visual Studio 2010. ++ # Visual Studio 2010, 2012, and 2013 define symbols in std::tr1 that ++ # conflict with our own definitions. Therefore using our own tuple does not ++ # work on those compilers. ++ cxx_library(gmock_main_use_own_tuple "${cxx_use_own_tuple}" ++ "${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc) ++ ++ cxx_test_with_flags(gmock_use_own_tuple_test "${cxx_use_own_tuple}" ++ gmock_main_use_own_tuple test/gmock-spec-builders_test.cc) ++ endif() ++ else() ++ cxx_library(gmock_main_no_exception "${cxx_no_exception}" src/gmock_main.cc) ++ target_link_libraries(gmock_main_no_exception gmock) ++ ++ cxx_library(gmock_main_no_rtti "${cxx_no_rtti}" src/gmock_main.cc) ++ target_link_libraries(gmock_main_no_rtti gmock) ++ ++ cxx_library(gmock_main_use_own_tuple "${cxx_use_own_tuple}" src/gmock_main.cc) ++ target_link_libraries(gmock_main_use_own_tuple gmock) + endif() +- + cxx_test_with_flags(gmock-more-actions_no_exception_test "${cxx_no_exception}" + gmock_main_no_exception test/gmock-more-actions_test.cc) + +-- +2.14.3 + diff --git a/SOURCES/gtest-1.8.0-libdir.patch b/SOURCES/gtest-1.8.0-libdir.patch new file mode 100644 index 0000000..051ad34 --- /dev/null +++ b/SOURCES/gtest-1.8.0-libdir.patch @@ -0,0 +1,24 @@ +diff -up googletest-release-1.8.0/googlemock/CMakeLists.txt.libdir googletest-release-1.8.0/googlemock/CMakeLists.txt +--- googletest-release-1.8.0/googlemock/CMakeLists.txt.libdir 2016-08-31 16:20:48.805836249 -0600 ++++ googletest-release-1.8.0/googlemock/CMakeLists.txt 2016-08-31 16:19:24.596216228 -0600 +@@ -104,7 +104,7 @@ endif() + # + # Install rules + install(TARGETS gmock gmock_main +- DESTINATION lib) ++ DESTINATION lib${LIB_SUFFIX}) + install(DIRECTORY ${gmock_SOURCE_DIR}/include/gmock + DESTINATION include) + +diff -up googletest-release-1.8.0/googletest/CMakeLists.txt.libdir googletest-release-1.8.0/googletest/CMakeLists.txt +--- googletest-release-1.8.0/googletest/CMakeLists.txt.libdir 2016-07-14 11:15:38.000000000 -0600 ++++ googletest-release-1.8.0/googletest/CMakeLists.txt 2016-08-31 16:20:19.357969126 -0600 +@@ -103,7 +103,7 @@ endif() + # + # Install rules + install(TARGETS gtest gtest_main +- DESTINATION lib) ++ DESTINATION lib${LIB_SUFFIX}) + install(DIRECTORY ${gtest_SOURCE_DIR}/include/gtest + DESTINATION include) + diff --git a/SOURCES/gtest-1.8.0-libversion.patch b/SOURCES/gtest-1.8.0-libversion.patch new file mode 100644 index 0000000..6c0e59a --- /dev/null +++ b/SOURCES/gtest-1.8.0-libversion.patch @@ -0,0 +1,28 @@ +diff --git a/googlemock/CMakeLists.txt b/googlemock/CMakeLists.txt +index 4304995..5ca735b 100644 +--- a/googlemock/CMakeLists.txt ++++ b/googlemock/CMakeLists.txt +@@ -99,6 +99,9 @@ else() + target_link_libraries(gmock_main gmock) + endif() + ++set_target_properties(gmock PROPERTIES VERSION 1.8.0) ++set_target_properties(gmock_main PROPERTIES VERSION 1.8.0) ++ + # If the CMake version supports it, attach header directory information + # to the targets for when we are part of a parent build (ie being pulled + # in via add_subdirectory() rather than being a standalone build). +diff --git a/googletest/CMakeLists.txt b/googletest/CMakeLists.txt +index ab82f23..97f7554 100644 +--- a/googletest/CMakeLists.txt ++++ b/googletest/CMakeLists.txt +@@ -88,7 +88,9 @@ endif() + # are used for other targets, to ensure that gtest can be compiled by a user + # aggressive about warnings. + cxx_library(gtest "${cxx_strict}" src/gtest-all.cc) ++set_target_properties(gtest PROPERTIES VERSION 1.8.0) + cxx_library(gtest_main "${cxx_strict}" src/gtest_main.cc) ++set_target_properties(gtest_main PROPERTIES VERSION 1.8.0) + target_link_libraries(gtest_main gtest) + + # If the CMake version supports it, attach header directory information diff --git a/SOURCES/gtest-1.8.0-null-pointer.patch b/SOURCES/gtest-1.8.0-null-pointer.patch new file mode 100644 index 0000000..a7d6a40 --- /dev/null +++ b/SOURCES/gtest-1.8.0-null-pointer.patch @@ -0,0 +1,34 @@ +From 62466cfccad1a4fe3f59a2c33104c40adc01b4fe Mon Sep 17 00:00:00 2001 +From: Jonathan Wakely +Date: Fri, 23 Dec 2016 01:56:14 +0000 +Subject: [PATCH] Stop TestInfo::Run() calling a function through null pointer + +If the object was never created then trying to call &Test::DeleteSelf_ +will dereference a null pointer, with undefined behaviour. + +Fixes #845 +--- + googletest/src/gtest.cc | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +diff --git a/googletest/src/gtest.cc b/googletest/src/gtest.cc +index d882ab2..1fb05ea 100644 +--- a/googletest/src/gtest.cc ++++ b/googletest/src/gtest.cc +@@ -2656,10 +2656,12 @@ void TestInfo::Run() { + test->Run(); + } + +- // Deletes the test object. +- impl->os_stack_trace_getter()->UponLeavingGTest(); +- internal::HandleExceptionsInMethodIfSupported( +- test, &Test::DeleteSelf_, "the test fixture's destructor"); ++ if (test != NULL) { ++ // Deletes the test object. ++ impl->os_stack_trace_getter()->UponLeavingGTest(); ++ internal::HandleExceptionsInMethodIfSupported( ++ test, &Test::DeleteSelf_, "the test fixture's destructor"); ++ } + + result_.set_elapsed_time(internal::GetTimeInMillis() - start); + diff --git a/SPECS/gtest.spec b/SPECS/gtest.spec new file mode 100644 index 0000000..a9af563 --- /dev/null +++ b/SPECS/gtest.spec @@ -0,0 +1,234 @@ +Summary: Google C++ testing framework +Name: gtest +Version: 1.8.0 +Release: 5%{?dist} +License: BSD and ASL2.0 +URL: https://github.com/google/googletest +Source0: https://github.com/google/googletest/archive/release-%{version}.tar.gz +# Install into lib64 if needed +Patch0: gtest-1.8.0-libdir.patch +# https://github.com/google/googletest/issues/845 +Patch1: gtest-1.8.0-null-pointer.patch +# https://github.com/google/googletest/issues/930 +# https://bugzilla.redhat.com/show_bug.cgi?id=1513522 +Patch2: gtest-1.8.0-fix-double-free-with-shared-libs.patch +# Fedora-specific patches +## Set libversion for libraries to version of gtest +## WARNING: must be rediffed for each version bump +Patch100: gtest-1.8.0-libversion.patch +BuildRequires: cmake +BuildRequires: python3-devel +%description +Framework for writing C++ tests on a variety of platforms (GNU/Linux, +Mac OS X, Windows, Windows CE, and Symbian). Based on the xUnit +architecture. Supports automatic test discovery, a rich set of +assertions, user-defined assertions, death tests, fatal and non-fatal +failures, various options for running the tests, and XML test report +generation. + +%package -n gtest-devel +Summary: Development files for %{name} +Requires: %{name} = %{version}-%{release} +%description -n gtest-devel +This package contains development files for %{name}. + +%package -n gmock +Summary: Google C++ Mocking Framework +%description -n gmock +Inspired by jMock, EasyMock, and Hamcrest, and designed with C++s +specifics in mind, Google C++ Mocking Framework (or Google Mock for +short) is a library for writing and using C++ mock classes. + +Google Mock: + + o lets you create mock classes trivially using simple macros, + o supports a rich set of matchers and actions, + o handles unordered, partially ordered, or completely ordered + expectations, + o is extensible by users, and + o works on Linux, Mac OS X, Windows, Windows Mobile, minGW, and + Symbian. + +%package -n gmock-devel +Summary: Development files for gmock +Requires: gmock = %{version}-%{release} +%description -n gmock-devel +This package contains development files for gmock. + +%prep +%autosetup -p1 -n googletest-release-%{version} + +%build +mkdir build && cd build +%cmake -DBUILD_SHARED_LIBS=ON \ + -DPYTHON_EXECUTABLE=%{__python3} \ + -Dgtest_build_tests=ON .. +make %{?_smp_mflags} + +%install +cd build +%make_install + +%check +cd build +make test + +%files +%license googletest/LICENSE +%{_libdir}/libgtest.so.%{version} +%{_libdir}/libgtest_main.so.%{version} + +%files -n gtest-devel +%doc googletest/{CHANGES,CONTRIBUTORS,README.md} +%doc googletest/docs/ +%doc googletest/samples +%{_includedir}/gtest/ +%{_libdir}/libgtest.so +%{_libdir}/libgtest_main.so + +%files -n gmock +%license googlemock/LICENSE +%{_libdir}/libgmock.so.%{version} +%{_libdir}/libgmock_main.so.%{version} + +%files -n gmock-devel +%doc googlemock/{CHANGES,CONTRIBUTORS,README.md} +%doc googlemock/docs/ +%{_includedir}/gmock/ +%{_libdir}/libgmock.so +%{_libdir}/libgmock_main.so + +%changelog +* Thu Jul 19 2018 Stephen Gallagher - 1.8.0-5 +- Fix license field to accurately represent the content + +* Fri Jun 29 2018 Charalampos Stratakis - 1.8.0-4 +- Change to Python 3 as a build dependency + +* Wed Feb 14 2018 Neal Gompa - 1.8.0-3 +- Add patch to fix gmock segfaults (rhbz#1513522) +- Add patch to properly version the libraries +- Move the documentation to the right place +- Drop unneeded ldconfig scriptlets: + https://fedoraproject.org/wiki/Changes/Removing_ldconfig_scriptlets +- Some clean up + +* Wed Feb 07 2018 Fedora Release Engineering - 1.8.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Sun Oct 15 2017 Dan Cermak - 1.8.0-1 +- 1.8.0 +- Merge gtest and gmock (rhbz#1314927) + +* Wed Aug 02 2017 Fedora Release Engineering - 1.7.0-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 1.7.0-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Fri Feb 10 2017 Fedora Release Engineering - 1.7.0-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Sun Jan 15 2017 Terje Rosten - 1.7.0-8 +- Use patch from Jonathan Wakely to fix opt issue (rhbz#1408291) + +* Wed Dec 21 2016 Merlin Mathesius - 1.7.0-7 +- Disable C++ compiler optimization to fix FTBFS (BZ#1406937). + +* Wed Feb 03 2016 Fedora Release Engineering - 1.7.0-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Wed Jun 17 2015 Fedora Release Engineering - 1.7.0-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Sun Apr 12 2015 Dominik Mierzejewski - 1.7.0-4 +- rebuilt for gcc-5.0.0-0.22.fc23 + +* Mon Feb 23 2015 Terje Rosten - 1.7.0-3 +- Rebuild for gcc5 + +* Sat Aug 16 2014 Fedora Release Engineering - 1.7.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Tue Jul 22 2014 Terje Rosten - 1.7.0-1 +- 1.7.0 + +* Sat Jun 07 2014 Fedora Release Engineering - 1.6.0-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Sat Aug 03 2013 Fedora Release Engineering - 1.6.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Tue May 21 2013 Rex Dieter 1.6.0-3 +- use %%cmake macro, fix %%check, use RPM_BULID_ROOT consistently + +* Thu Feb 14 2013 Fedora Release Engineering - 1.6.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Fri Sep 28 2012 Akira TAGOH - 1.6.0-1 +- New upstream release. +- Using autotools is not supported in upstream anymore. switching to cmake. +- undefined reference issues seems gone now. (#813825) + +* Thu Jul 19 2012 Fedora Release Engineering - 1.5.0-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Fri Jan 13 2012 Fedora Release Engineering - 1.5.0-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Thu Sep 15 2011 Akira TAGOH j- 1.5.0-5 +- Fix FTBFS issue; update libtool files instead of disabling rpath things. + +* Sun Mar 20 2011 Terje Rosten - 1.5.0-4 +- add patch from Dan Horák to let 'make check' work + +* Wed Feb 09 2011 Fedora Release Engineering - 1.5.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Sun Jan 16 2011 Terje Rosten - 1.5.0-2 +- add python to buildreq + +* Wed Jan 12 2011 Terje Rosten - 1.5.0-1 +- 1.5.0 +- some cleanup + +* Thu Aug 26 2010 Dan Horák - 1.4.0-2 +- added workaround for linking the tests on Fedora >= 13 (#564953, #599865) + +* Sat Nov 14 2009 Debarshi Ray - 1.4.0-1 +- Version bump to 1.4.0. + * New feature: the event listener API. + * New feature: test shuffling. + * New feature: the XML report format is closer to junitreport and can + be parsed by Hudson now. + * New feature: elapsed time for the tests is printed by default. + * New feature: comes with a TR1 tuple implementation such that Boost + is no longer needed for Combine(). + * New feature: EXPECT_DEATH_IF_SUPPORTED macro and friends. + * New feature: the Xcode project can now produce static gtest libraries in + addition to a framework. + * Compatibility fixes for gcc and minGW. + * Bug fixes and implementation clean-ups. + +* Fri Jul 24 2009 Release Engineering - 1.3.0-2.20090601svn257 +- Autorebuild for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Mon Jun 01 2009 Tom "spot" Callaway - 1.3.0-1 +- Version bump to 1.3.0. + * New feature: ability to use Google Test assertions in other testing + frameworks. + * New feature: ability to run disabled test via + --gtest_also_run_disabled_tests. + * New feature: the --help flag for printing the usage. + * New feature: access to Google Test flag values in user code. + * New feature: a script that packs Google Test into one .h and one .cc file + for easy deployment. + * New feature: support for distributing test functions to multiple machines + (requires support from the test runner). + * Bug fixes and implementation clean-ups. + +* Tue Feb 24 2009 Fedora Release Engineering - 1.0.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Sat Jul 05 2008 Debarshi Ray - 1.0.0-1 +- Initial build.