commit:     a231a5e1700c7bcfb0d7623a4e388a4ed0d28e5e
Author:     David Seifert <soap <AT> gentoo <DOT> org>
AuthorDate: Fri Aug 18 11:10:19 2017 +0000
Commit:     David Seifert <soap <AT> gentoo <DOT> org>
CommitDate: Fri Aug 18 11:11:19 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a231a5e1

dev-cpp/gtest: Add live ebuild

Package-Manager: Portage-2.3.6, Repoman-2.3.3

 .../gtest-9999-fix-gcc6-undefined-behavior.patch   | 21 +++++++
 dev-cpp/gtest/files/gtest-9999-fix-py-tests.patch  | 19 +++++++
 dev-cpp/gtest/gtest-9999.ebuild                    | 64 ++++++++++++++++++++++
 3 files changed, 104 insertions(+)

diff --git a/dev-cpp/gtest/files/gtest-9999-fix-gcc6-undefined-behavior.patch 
b/dev-cpp/gtest/files/gtest-9999-fix-gcc6-undefined-behavior.patch
new file mode 100644
index 00000000000..eadfe619738
--- /dev/null
+++ b/dev-cpp/gtest/files/gtest-9999-fix-gcc6-undefined-behavior.patch
@@ -0,0 +1,21 @@
+Fix build with GCC 6 due to lifetime issues.
+
+--- a/googletest/src/gtest.cc
++++ b/googletest/src/gtest.cc
+@@ -2654,10 +2654,12 @@
+     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/dev-cpp/gtest/files/gtest-9999-fix-py-tests.patch 
b/dev-cpp/gtest/files/gtest-9999-fix-py-tests.patch
new file mode 100644
index 00000000000..ba63c7b3eeb
--- /dev/null
+++ b/dev-cpp/gtest/files/gtest-9999-fix-py-tests.patch
@@ -0,0 +1,19 @@
+Fix python tests that use broken generator expressions
+
+--- a/googletest/cmake/internal_utils.cmake
++++ b/googletest/cmake/internal_utils.cmake
+@@ -247,12 +247,12 @@
+       add_test(
+         NAME ${name}
+         COMMAND ${PYTHON_EXECUTABLE} 
${CMAKE_CURRENT_SOURCE_DIR}/test/${name}.py
+-            --build_dir=${CMAKE_CURRENT_BINARY_DIR}/$<CONFIGURATION>)
++            --build_dir=${CMAKE_CURRENT_BINARY_DIR})
+     else (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 3.1)
+       add_test(
+         ${name}
+         ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test/${name}.py
+-          
--build_dir=${CMAKE_CURRENT_BINARY_DIR}/\${CTEST_CONFIGURATION_TYPE})
++          --build_dir=${CMAKE_CURRENT_BINARY_DIR})
+     endif (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 3.1)
+   endif()
+ endfunction()

diff --git a/dev-cpp/gtest/gtest-9999.ebuild b/dev-cpp/gtest/gtest-9999.ebuild
new file mode 100644
index 00000000000..0c82ebfb485
--- /dev/null
+++ b/dev-cpp/gtest/gtest-9999.ebuild
@@ -0,0 +1,64 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+# Python is required for tests and some build tasks.
+PYTHON_COMPAT=( python2_7 )
+
+inherit git-r3 python-any-r1 cmake-multilib
+
+DESCRIPTION="Google C++ Testing Framework"
+HOMEPAGE="https://github.com/google/googletest";
+EGIT_REPO_URI="https://github.com/google/googletest.git";
+
+LICENSE="BSD"
+SLOT="0"
+IUSE="examples test"
+# Test require a ton of privileges, namely
+# FEATURES="-sandbox -userpriv -usersandbox"
+# which is generally not acceptable for Gentoo
+RESTRICT="test"
+
+DEPEND="test? ( ${PYTHON_DEPS} )"
+RDEPEND="!dev-cpp/gmock"
+
+PATCHES=(
+       "${FILESDIR}"/${P}-fix-py-tests.patch
+       "${FILESDIR}"/${P}-fix-gcc6-undefined-behavior.patch
+)
+
+pkg_setup() {
+       use test && python-any-r1_pkg_setup
+}
+
+multilib_src_configure() {
+       local mycmakeargs=(
+               -DBUILD_GMOCK=ON
+               -DBUILD_GTEST=ON
+               -DINSTALL_GMOCK=ON
+               -DINSTALL_GTEST=ON
+               -Dgtest_build_samples=OFF
+               -Dgtest_disable_pthreads=OFF
+
+               # currently only static libs work
+               # due to numerous ODR violations
+               # https://github.com/google/googletest/issues/930
+               -DBUILD_SHARED_LIBS=OFF
+
+               # tests
+               -Dgmock_build_tests=$(usex test)
+               -Dgtest_build_tests=$(usex test)
+               -DPYTHON_EXECUTABLE="${PYTHON}"
+       )
+       cmake-utils_src_configure
+}
+
+multilib_src_install_all() {
+       einstalldocs
+
+       if use examples; then
+               docinto examples
+               dodoc googletest/samples/*.{cc,h}
+       fi
+}

Reply via email to