diff --git a/gtest-1.8.1-add-missing-pkgconfig-requires.patch b/gtest-1.8.1-add-missing-pkgconfig-requires.patch new file mode 100644 index 0000000..fdb1109 --- /dev/null +++ b/gtest-1.8.1-add-missing-pkgconfig-requires.patch @@ -0,0 +1,34 @@ +diff --git a/googlemock/cmake/gmock.pc.in b/googlemock/cmake/gmock.pc.in +index c441642..e80b506 100644 +--- a/googlemock/cmake/gmock.pc.in ++++ b/googlemock/cmake/gmock.pc.in +@@ -5,5 +5,6 @@ Name: gmock + Description: GoogleMock (without main() function) + Version: @PROJECT_VERSION@ + URL: https://github.com/google/googletest ++Requires: gtest = @PROJECT_VERSION@ + Libs: -L${libdir} -lgmock @CMAKE_THREAD_LIBS_INIT@ + Cflags: -I${includedir} @GTEST_HAS_PTHREAD_MACRO@ @CMAKE_THREAD_LIBS_INIT@ +diff --git a/googlemock/cmake/gmock_main.pc.in b/googlemock/cmake/gmock_main.pc.in +index c377dba..752f14d 100644 +--- a/googlemock/cmake/gmock_main.pc.in ++++ b/googlemock/cmake/gmock_main.pc.in +@@ -5,5 +5,6 @@ Name: gmock_main + Description: GoogleMock (with main() function) + Version: @PROJECT_VERSION@ + URL: https://github.com/google/googletest ++Requires: gmock = @PROJECT_VERSION@ + Libs: -L${libdir} -lgmock_main @CMAKE_THREAD_LIBS_INIT@ + Cflags: -I${includedir} @GTEST_HAS_PTHREAD_MACRO@ @CMAKE_THREAD_LIBS_INIT@ +diff --git a/googletest/cmake/gtest_main.pc.in b/googletest/cmake/gtest_main.pc.in +index fe25d9c..63b2b14 100644 +--- a/googletest/cmake/gtest_main.pc.in ++++ b/googletest/cmake/gtest_main.pc.in +@@ -5,6 +5,6 @@ Name: gtest_main + Description: GoogleTest (with main() function) + Version: @PROJECT_VERSION@ + URL: https://github.com/google/googletest +-Requires: gtest ++Requires: gtest = @PROJECT_VERSION@ + Libs: -L${libdir} -lgtest_main @CMAKE_THREAD_LIBS_INIT@ + Cflags: -I${includedir} @GTEST_HAS_PTHREAD_MACRO@ @CMAKE_THREAD_LIBS_INIT@ diff --git a/gtest-1.8.1-libversion.patch b/gtest-1.8.1-libversion.patch index 34bee5d..609ab5f 100644 --- a/gtest-1.8.1-libversion.patch +++ b/gtest-1.8.1-libversion.patch @@ -1,29 +1,29 @@ diff --git a/googlemock/CMakeLists.txt b/googlemock/CMakeLists.txt -index 8a8de1f..3d86a59 100644 +index 8a8de1f..d67c0f5 100644 --- a/googlemock/CMakeLists.txt +++ b/googlemock/CMakeLists.txt @@ -109,8 +109,10 @@ if (MSVC) else() cxx_library(gmock "${cxx_strict}" src/gmock-all.cc) target_link_libraries(gmock PUBLIC gtest) -+ set_target_properties(gmock PROPERTIES VERSION 1.8.1) ++ set_target_properties(gmock PROPERTIES VERSION ${GOOGLETEST_VERSION}) cxx_library(gmock_main "${cxx_strict}" src/gmock_main.cc) target_link_libraries(gmock_main PUBLIC gmock) -+ set_target_properties(gmock_main PROPERTIES VERSION 1.8.1) ++ set_target_properties(gmock_main PROPERTIES VERSION ${GOOGLETEST_VERSION}) 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 diff --git a/googletest/CMakeLists.txt b/googletest/CMakeLists.txt -index 9ee7940..8099130 100644 +index 9ee7940..1f3de11 100644 --- a/googletest/CMakeLists.txt +++ b/googletest/CMakeLists.txt @@ -131,7 +131,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.1) ++set_target_properties(gtest PROPERTIES VERSION ${GOOGLETEST_VERSION}) cxx_library(gtest_main "${cxx_strict}" src/gtest_main.cc) -+set_target_properties(gtest_main PROPERTIES VERSION 1.8.1) ++set_target_properties(gtest_main PROPERTIES VERSION ${GOOGLETEST_VERSION}) # 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/gtest-PR1839-Fix-Python3-support.patch b/gtest-PR1839-Fix-Python3-support.patch new file mode 100644 index 0000000..ff4f27b --- /dev/null +++ b/gtest-PR1839-Fix-Python3-support.patch @@ -0,0 +1,149 @@ +From 149c0d24148da9a339d6c9d03e638a39c59731f6 Mon Sep 17 00:00:00 2001 +From: Peter Levine +Date: Fri, 14 Sep 2018 19:40:51 -0400 +Subject: [PATCH] Fix Python3 support + +--- + googletest/test/googletest-env-var-test.py | 4 ++-- + googletest/test/googletest-filter-unittest.py | 13 ++++++++----- + googletest/test/googletest-output-test.py | 2 +- + googletest/test/googletest-throw-on-failure-test.py | 2 +- + googletest/test/googletest-uninitialized-test.py | 4 ++-- + googletest/test/gtest_xml_output_unittest.py | 3 ++- + googletest/test/gtest_xml_test_utils.py | 2 +- + 7 files changed, 17 insertions(+), 13 deletions(-) + +diff --git a/googletest/test/googletest-env-var-test.py b/googletest/test/googletest-env-var-test.py +index e1efeee1e..2f0e406af 100755 +--- a/googletest/test/googletest-env-var-test.py ++++ b/googletest/test/googletest-env-var-test.py +@@ -45,8 +45,8 @@ + + def AssertEq(expected, actual): + if expected != actual: +- print 'Expected: %s' % (expected,) +- print ' Actual: %s' % (actual,) ++ print('Expected: %s' % (expected,)) ++ print(' Actual: %s' % (actual,)) + raise AssertionError + + +diff --git a/googletest/test/googletest-filter-unittest.py b/googletest/test/googletest-filter-unittest.py +index dc0b5bd9a..6b32f2d21 100755 +--- a/googletest/test/googletest-filter-unittest.py ++++ b/googletest/test/googletest-filter-unittest.py +@@ -42,7 +42,10 @@ + + import os + import re +-import sets ++try: ++ from sets import Set as set # For Python 2.3 compatibility ++except ImportError: ++ pass + import sys + import gtest_test_utils + +@@ -57,7 +60,7 @@ + if sys.executable: + os.environ['EMPTY_VAR'] = '' + child = gtest_test_utils.Subprocess( +- [sys.executable, '-c', 'import os; print \'EMPTY_VAR\' in os.environ']) ++ [sys.executable, '-c', 'import os; print(\'EMPTY_VAR\' in os.environ)']) + CAN_PASS_EMPTY_ENV = eval(child.output) + + +@@ -72,7 +75,7 @@ + os.environ['UNSET_VAR'] = 'X' + del os.environ['UNSET_VAR'] + child = gtest_test_utils.Subprocess( +- [sys.executable, '-c', 'import os; print \'UNSET_VAR\' not in os.environ' ++ [sys.executable, '-c', 'import os; print(\'UNSET_VAR\' not in os.environ)' + ]) + CAN_UNSET_ENV = eval(child.output) + +@@ -245,14 +248,14 @@ def AssertPartitionIsValid(self, set_var, list_of_sets): + for slice_var in list_of_sets: + full_partition.extend(slice_var) + self.assertEqual(len(set_var), len(full_partition)) +- self.assertEqual(sets.Set(set_var), sets.Set(full_partition)) ++ self.assertEqual(set(set_var), set(full_partition)) + + def AdjustForParameterizedTests(self, tests_to_run): + """Adjust tests_to_run in case value parameterized tests are disabled.""" + + global param_tests_present + if not param_tests_present: +- return list(sets.Set(tests_to_run) - sets.Set(PARAM_TESTS)) ++ return list(set(tests_to_run) - set(PARAM_TESTS)) + else: + return tests_to_run + +diff --git a/googletest/test/googletest-output-test.py b/googletest/test/googletest-output-test.py +index 2d69e353a..1a9ee6e3b 100755 +--- a/googletest/test/googletest-output-test.py ++++ b/googletest/test/googletest-output-test.py +@@ -287,7 +287,7 @@ def testOutput(self): + # sequences when we read the golden file irrespective of an operating + # system used. Therefore, we need to strip those \r's from newlines + # unconditionally. +- golden = ToUnixLineEnding(golden_file.read()) ++ golden = ToUnixLineEnding(golden_file.read().decode()) + golden_file.close() + + # We want the test to pass regardless of certain features being +diff --git a/googletest/test/googletest-throw-on-failure-test.py b/googletest/test/googletest-throw-on-failure-test.py +index 46cb9f6da..204e43e79 100755 +--- a/googletest/test/googletest-throw-on-failure-test.py ++++ b/googletest/test/googletest-throw-on-failure-test.py +@@ -68,7 +68,7 @@ def SetEnvVar(env_var, value): + def Run(command): + """Runs a command; returns True/False if its exit code is/isn't 0.""" + +- print 'Running "%s". . .' % ' '.join(command) ++ print('Running "%s". . .' % ' '.join(command)) + p = gtest_test_utils.Subprocess(command) + return p.exited and p.exit_code == 0 + +diff --git a/googletest/test/googletest-uninitialized-test.py b/googletest/test/googletest-uninitialized-test.py +index 5b7d1e74f..69595a0dd 100755 +--- a/googletest/test/googletest-uninitialized-test.py ++++ b/googletest/test/googletest-uninitialized-test.py +@@ -43,8 +43,8 @@ def Assert(condition): + + def AssertEq(expected, actual): + if expected != actual: +- print 'Expected: %s' % (expected,) +- print ' Actual: %s' % (actual,) ++ print('Expected: %s' % (expected,)) ++ print(' Actual: %s' % (actual,)) + raise AssertionError + + +diff --git a/googletest/test/gtest_xml_output_unittest.py b/googletest/test/gtest_xml_output_unittest.py +index faedd4e6c..8669f19e5 100755 +--- a/googletest/test/gtest_xml_output_unittest.py ++++ b/googletest/test/gtest_xml_output_unittest.py +@@ -266,7 +266,8 @@ def testDefaultOutputFile(self): + 'gtest_no_test_unittest') + try: + os.remove(output_file) +- except OSError, e: ++ except OSError: ++ e = sys.exc_info()[1] + if e.errno != errno.ENOENT: + raise + +diff --git a/googletest/test/gtest_xml_test_utils.py b/googletest/test/gtest_xml_test_utils.py +index 1e0358592..afcf55e0d 100755 +--- a/googletest/test/gtest_xml_test_utils.py ++++ b/googletest/test/gtest_xml_test_utils.py +@@ -94,7 +94,7 @@ def AssertEquivalentNodes(self, expected_node, actual_node): + self.assertEquals( + len(expected_children), len(actual_children), + 'number of child elements differ in element ' + actual_node.tagName) +- for child_id, child in expected_children.iteritems(): ++ for child_id, child in expected_children.items(): + self.assert_(child_id in actual_children, + '<%s> is not in <%s> (in element %s)' % + (child_id, actual_children, actual_node.tagName)) diff --git a/gtest.spec b/gtest.spec index af0df5f..6f3fb3f 100644 --- a/gtest.spec +++ b/gtest.spec @@ -1,21 +1,24 @@ Summary: Google C++ testing framework Name: gtest Version: 1.8.1 -Release: 1%{?dist} +Release: 2%{?dist} # scripts/generator/* are ASL 2.0 License: BSD and ASL 2.0 URL: https://github.com/google/googletest Source0: https://github.com/google/googletest/archive/release-%{version}.tar.gz # https://github.com/google/googletest/pull/967 Patch0: gtest-1.8.1-null-pointer.patch +# https://github.com/google/googletest/pull/1839 +Patch1: gtest-PR1839-Fix-Python3-support.patch # Fedora-specific patches ## Set libversion for libraries to version of gtest -## WARNING: must be rediffed for each version bump Patch100: gtest-1.8.1-libversion.patch +## Add missing pkgconfig requires information to reflect reality +Patch101: gtest-1.8.1-add-missing-pkgconfig-requires.patch BuildRequires: gcc BuildRequires: gcc-c++ BuildRequires: cmake -BuildRequires: python2-devel +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 @@ -32,6 +35,7 @@ This package contains development files for %{name}. %package -n gmock Summary: Google C++ Mocking Framework +Requires: %{name} = %{version}-%{release} %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 @@ -56,12 +60,16 @@ This package contains development files for gmock. %prep %autosetup -p1 -n googletest-release-%{version} +# Set the version correctly +sed -e "s/set(GOOGLETEST_VERSION .*)/set(GOOGLETEST_VERSION %{version})/" -i CMakeLists.txt + + %build mkdir build && cd build %cmake -DBUILD_SHARED_LIBS=ON \ - -DPYTHON_EXECUTABLE=%{__python2} \ + -DPYTHON_EXECUTABLE=%{__python3} \ -Dgtest_build_tests=ON .. -make %{?_smp_mflags} +%make_build %install cd build @@ -83,6 +91,9 @@ make test %{_includedir}/gtest/ %{_libdir}/libgtest.so %{_libdir}/libgtest_main.so +%{_libdir}/cmake/GTest/ +%{_libdir}/pkgconfig/gtest.pc +%{_libdir}/pkgconfig/gtest_main.pc %files -n gmock %license googlemock/LICENSE @@ -95,17 +106,18 @@ make test %{_includedir}/gmock/ %{_libdir}/libgmock.so %{_libdir}/libgmock_main.so -%dir %{_libdir}/cmake/GTest/ -%{_libdir}/cmake/GTest/GTestConfig.cmake -%{_libdir}/cmake/GTest/GTestConfigVersion.cmake -%{_libdir}/cmake/GTest/GTestTargets-noconfig.cmake -%{_libdir}/cmake/GTest/GTestTargets.cmake %{_libdir}/pkgconfig/gmock.pc %{_libdir}/pkgconfig/gmock_main.pc -%{_libdir}/pkgconfig/gtest.pc -%{_libdir}/pkgconfig/gtest_main.pc %changelog +* Thu Sep 27 2018 Neal Gompa - 1.8.1-2 +- Fix the build to set the version in the CMakeLists correctly +- Update the libversion patch to use the version in CMakeLists +- Correctly install the CMake and pkgconfig files +- Fix the pkgconfig dependency information +- Add missing strong dependency on gtest by gmock +- Add patch to make tests work with Python 3 + * Mon Sep 10 2018 Terje Rosten - 1.8.1-1 - Fix license (rhbz#1603577) - 1.8.1