dev-cpp/gtest: Sync with gentoo

It's from gentoo commit 079aab7f39123f489a2b27ecc4e6e461fe9f74f9.
This commit is contained in:
Krzesimir Nowak 2021-11-17 19:13:54 +01:00
parent 123ae3d9d5
commit c3118bf3a0
14 changed files with 196 additions and 493 deletions

View File

@ -1,2 +1,2 @@
DIST gtest-1.7.0.tar.gz 1001582 BLAKE2B 3d10c1e502c2fac1500d07301031a9328b29027a3f9719137e09d2c47556cf52bbc978a8fb7b37330a94beafa27d24c3bfc247b2f0d51306b53f43e7ae2373b4 SHA512 a9f5c047b39efb2d11b55ee9913662ca402ac6837b3ad2d278ecfbd1caf32ed4546f169e3e92503d57bf3b62ccf89cd062da1c7ea3638aae98e868d2766363c3
DIST gtest-1.8.0.tar.gz 1281617 BLAKE2B ac052b4d0eb0d8ded03a8c7dff05177818627b8a51f2dbc2c162b2ee2a5d1323539e7d0d02236d9ebb799995e018f0171c2fdaeb4de3bb339548265e50de79e6 SHA512 1dbece324473e53a83a60601b02c92c089f5d314761351974e097b2cf4d24af4296f9eb8653b6b03b1e363d9c5f793897acae1f0c7ac40149216035c4d395d9d
DIST gtest-1.10.0_p20200702.tar.gz 866900 BLAKE2B c162d47868583ba270675abe5df935b8f4b9a9c00dbdc80dd88afa7f2b98266640b32b2ea5e8f9f6d6227196b5d2f79dbfda4e9585106224e814cc1503cf777d SHA512 715d887b59b47d4691c7c90ef0cf0ffc3d1e758e500263c76b50fd506e90a9d1c390af745933cfe3f55e1edac5d72dccedef3cb9a50b71a5b796424471a3017b
DIST gtest-1.11.0.tar.gz 886330 BLAKE2B d11fdd485f292d96508cbc27a9a444ab69b86571cc594298fd3f0e6d4bd8d6ec20dea848fe11be165d34054b2251ad377f0930f852914feaa1416ff156986a9c SHA512 6fcc7827e4c4d95e3ae643dd65e6c4fc0e3d04e1778b84f6e06e390410fe3d18026c131d828d949d2f20dde6327d30ecee24dcd3ef919e21c91e010d149f3a28

View File

@ -1,93 +0,0 @@
From fb71154012e634a5e780e93af5434bcdafaf2b24 Mon Sep 17 00:00:00 2001
From: Justin Bronder <jsbronder@gmail.com>
Date: Mon, 15 Oct 2012 17:25:07 -0400
Subject: [PATCH] configure: fix pthread linking
- Update the pthread check to make sure that we don't need -lpthread when
compiling with -nostdlib.
- Make sure that the necessary pthread library is passed to libtool.
Fixes:
$ ldd -r /usr/lib/libgtest.so
linux-vdso.so.1 (0x00007fffe7dff000)
libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.6.3/libstdc++.so.6 (0x00007fbe09a9f000)
libc.so.6 => /lib64/libc.so.6 (0x00007fbe096f7000)
libgcc_s.so.1 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.6.3/libgcc_s.so.1 (0x00007fbe094e1000)
libm.so.6 => /lib64/libm.so.6 (0x00007fbe091ee000)
/lib64/ld-linux-x86-64.so.2 (0x00007fbe0a005000)
undefined symbol: pthread_key_create (/usr/lib/libgtest.so)
undefined symbol: pthread_getspecific (/usr/lib/libgtest.so)
undefined symbol: pthread_key_delete (/usr/lib/libgtest.so)
undefined symbol: pthread_setspecific (/usr/lib/libgtest.so)
---
Makefile.am | 1 +
m4/acx_pthread.m4 | 39 ++++++++++++++++++++++++++++++++++++++-
2 files changed, 39 insertions(+), 1 deletions(-)
diff --git a/Makefile.am b/Makefile.am
index cb350b7..db2606e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -181,6 +181,7 @@ endif
lib_LTLIBRARIES = lib/libgtest.la lib/libgtest_main.la
lib_libgtest_la_SOURCES = src/gtest-all.cc
+lib_libgtest_la_LIBADD = $(AM_LIBS)
pkginclude_HEADERS = \
include/gtest/gtest-death-test.h \
diff --git a/m4/acx_pthread.m4 b/m4/acx_pthread.m4
index 2cf20de..7fba4d9 100644
--- a/m4/acx_pthread.m4
+++ b/m4/acx_pthread.m4
@@ -339,7 +339,44 @@ if test "x$acx_pthread_ok" = xyes; then
# so it's not safe to assume that we may use pthreads
acx_pthread_ok=no
fi
-
+
+ AC_MSG_CHECKING([whether what we have so far is sufficient with -nostdlib])
+ CFLAGS="-nostdlib $CFLAGS"
+ # we need c with nostdlib
+ LIBS="$LIBS -lc"
+ AC_TRY_LINK([#include <pthread.h>],
+ [pthread_t th; pthread_join(th, 0);
+ pthread_attr_init(0); pthread_cleanup_push(0, 0);
+ pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
+ [done=yes],[done=no])
+
+ if test "x$done" = xyes; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ fi
+
+ if test x"$done" = xno; then
+ AC_MSG_CHECKING([whether -lpthread saves the day])
+ LIBS="-lpthread $LIBS"
+ AC_TRY_LINK([#include <pthread.h>],
+ [pthread_t th; pthread_join(th, 0);
+ pthread_attr_init(0); pthread_cleanup_push(0, 0);
+ pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
+ [done=yes],[done=no])
+
+ if test "x$done" = xyes; then
+ AC_MSG_RESULT([yes])
+ PTHREAD_LIBS="$PTHREAD_LIBS -lpthread"
+ else
+ AC_MSG_RESULT([no])
+ AC_MSG_WARN([Impossible to determine how to use pthreads with shared libraries and -nostdlib])
+ fi
+ fi
+
+ CFLAGS="$save_CFLAGS"
+ LIBS="$save_LIBS"
+ CC="$save_CC"
CFLAGS="$save_CFLAGS"
LIBS="$save_LIBS"
CC="$save_CC"
--
1.7.8.6

View File

@ -1,5 +1,4 @@
Bug: https://bugs.gentoo.org/629620
Upstream PR: https://github.com/google/googletest/pull/1274
Bug: https://bugs.gentoo.org/692464
--- a/googletest/src/gtest-death-test.cc
+++ b/googletest/src/gtest-death-test.cc
@ -7,8 +6,8 @@ Upstream PR: https://github.com/google/googletest/pull/1274
if (!use_fork) {
static const bool stack_grows_down = StackGrowsDown();
- const size_t stack_size = getpagesize();
+ const size_t stack_size = getpagesize() * 10;
- const auto stack_size = static_cast<size_t>(getpagesize() * 2);
+ const auto stack_size = static_cast<size_t>(getpagesize() * 10);
// MMAP_ANONYMOUS is not defined on Mac, so we use MAP_ANON instead.
void* const stack = mmap(NULL, stack_size, PROT_READ | PROT_WRITE,
MAP_ANON | MAP_PRIVATE, -1, 0);

View File

@ -1,98 +0,0 @@
Bug: https://bugs.gentoo.org/631698
Upstream PR: https://github.com/google/googletest/pull/1339
From 0663ce9024c9b78ddf6eb3fc1ceb45361ed91767 Mon Sep 17 00:00:00 2001
From: Romain Geissler <romain.geissler@gmail.com>
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 724fdd5f0..f7bad8afc 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)

View File

@ -1,40 +0,0 @@
--- a/googlemock/CMakeLists.txt
+++ b/googlemock/CMakeLists.txt
@@ -11,6 +11,8 @@
option(gmock_build_tests "Build all of Google Mock's own tests." OFF)
+set(LIB_INSTALL_DIR lib CACHE STRING "Library install directory")
+
# A directory to find Google Test sources.
if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/gtest/CMakeLists.txt")
set(gtest_dir gtest)
@@ -104,7 +106,7 @@
#
# Install rules
install(TARGETS gmock gmock_main
- DESTINATION lib)
+ DESTINATION ${LIB_INSTALL_DIR})
install(DIRECTORY ${gmock_SOURCE_DIR}/include/gmock
DESTINATION include)
--- a/googletest/CMakeLists.txt
+++ b/googletest/CMakeLists.txt
@@ -27,6 +27,8 @@
"Build gtest with internal symbols hidden in shared libraries."
OFF)
+set(LIB_INSTALL_DIR lib CACHE STRING "Library install directory")
+
# Defines pre_project_set_up_hermetic_build() and set_up_hermetic_build().
include(cmake/hermetic_build.cmake OPTIONAL)
@@ -103,7 +105,7 @@
#
# Install rules
install(TARGETS gtest gtest_main
- DESTINATION lib)
+ DESTINATION ${LIB_INSTALL_DIR})
install(DIRECTORY ${gtest_SOURCE_DIR}/include/gtest
DESTINATION include)

View File

@ -1,21 +0,0 @@
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);

View File

@ -1,19 +0,0 @@
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()

View File

@ -0,0 +1,80 @@
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
# Python is required for tests and some build tasks.
PYTHON_COMPAT=( python3_{8..10} )
CMAKE_ECLASS=cmake
inherit cmake-multilib python-any-r1
GOOGLETEST_COMMIT=aee0f9d9b5b87796ee8a0ab26b7587ec30e8858e
if [[ ${PV} == "9999" ]]; then
inherit git-r3
EGIT_REPO_URI="https://github.com/google/googletest"
else
if [[ -z ${GOOGLETEST_COMMIT} ]]; then
URI_PV=v${MY_PV:-${PV}}
else
URI_PV=${MY_PV:=${GOOGLETEST_COMMIT}}
fi
SRC_URI="https://github.com/google/googletest/archive/${URI_PV}.tar.gz -> ${P}.tar.gz"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
S="${WORKDIR}"/googletest-${MY_PV}
fi
DESCRIPTION="Google C++ Testing Framework"
HOMEPAGE="https://github.com/google/googletest"
LICENSE="BSD"
SLOT="0"
IUSE="doc examples test"
RESTRICT="!test? ( test )"
BDEPEND="test? ( ${PYTHON_DEPS} )"
PATCHES=(
"${FILESDIR}"/${PN}-1.10.0_p20200702-increase-clone-stack-size.patch
)
pkg_setup() {
use test && python-any-r1_pkg_setup
}
src_prepare() {
cmake_src_prepare
sed -i -e '/set(cxx_base_flags /s:-Werror::' \
googletest/cmake/internal_utils.cmake || die "sed failed!"
}
multilib_src_configure() {
local mycmakeargs=(
-DBUILD_GMOCK=ON
-DINSTALL_GTEST=ON
# tests
-Dgmock_build_tests=$(usex test)
-Dgtest_build_tests=$(usex test)
-DPYTHON_EXECUTABLE="${PYTHON}"
)
cmake_src_configure
}
multilib_src_install_all() {
einstalldocs
if use doc; then
docinto googletest
dodoc -r googletest/docs/.
docinto googlemock
dodoc -r googlemock/docs/.
fi
if use examples; then
docinto examples
dodoc googletest/samples/*.{cc,h}
fi
}

View File

@ -0,0 +1,78 @@
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
# Python is required for tests and some build tasks.
PYTHON_COMPAT=( python3_{8..10} )
CMAKE_ECLASS=cmake
inherit cmake-multilib python-any-r1
if [[ ${PV} == "9999" ]]; then
inherit git-r3
EGIT_REPO_URI="https://github.com/google/googletest"
else
if [[ -z ${GOOGLETEST_COMMIT} ]]; then
SRC_URI="https://github.com/google/googletest/archive/refs/tags/release-${PV}.tar.gz
-> ${P}.tar.gz"
S="${WORKDIR}"/googletest-release-${PV}
else
SRC_URI="https://github.com/google/googletest/archive/${GOOGLETEST_COMMIT}.tar.gz
-> ${P}.tar.gz"
S="${WORKDIR}"/googletest-${GOOGLETEST_COMMIT}
fi
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
fi
DESCRIPTION="Google C++ Testing Framework"
HOMEPAGE="https://github.com/google/googletest"
LICENSE="BSD"
SLOT="0"
IUSE="doc examples test"
RESTRICT="!test? ( test )"
BDEPEND="test? ( ${PYTHON_DEPS} )"
PATCHES=(
"${FILESDIR}"/${PN}-1.10.0_p20200702-increase-clone-stack-size.patch
)
pkg_setup() {
use test && python-any-r1_pkg_setup
}
src_prepare() {
cmake_src_prepare
sed -i -e '/set(cxx_base_flags /s:-Werror::' \
googletest/cmake/internal_utils.cmake || die "sed failed!"
}
multilib_src_configure() {
local mycmakeargs=(
-DBUILD_GMOCK=ON
-DINSTALL_GTEST=ON
# tests
-Dgmock_build_tests=$(usex test)
-Dgtest_build_tests=$(usex test)
-DPYTHON_EXECUTABLE="${PYTHON}"
)
cmake_src_configure
}
multilib_src_install_all() {
einstalldocs
newdoc googletest/README.md README.googletest.md
newdoc googlemock/README.md README.googlemock.md
use doc && dodoc -r docs/.
if use examples; then
docinto examples
dodoc googletest/samples/*.{cc,h}
fi
}

View File

@ -1,50 +0,0 @@
# Copyright 1999-2018 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI="5"
AUTOTOOLS_AUTORECONF=1
AUTOTOOLS_IN_SOURCE_BUILD=1
# Python is required for tests and some build tasks.
PYTHON_COMPAT=( python2_7 )
inherit eutils python-any-r1 autotools-multilib
DESCRIPTION="Google C++ Testing Framework"
HOMEPAGE="https://github.com/google/googletest"
SRC_URI="https://github.com/google/googletest/archive/release-${PV}.tar.gz -> ${P}.tar.gz"
LICENSE="BSD"
SLOT="0"
KEYWORDS="alpha amd64 arm arm64 hppa ia64 ~m68k ~mips ppc ppc64 ~s390 ~sh sparc x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos"
IUSE="examples static-libs"
DEPEND="${PYTHON_DEPS}"
RDEPEND=""
PATCHES=(
"${FILESDIR}/configure-fix-pthread-linking.patch" #371647
)
src_prepare() {
sed -i -e "s|/tmp|${T}|g" test/gtest-filepath_test.cc || die
sed -i -r \
-e '/^install-(data|exec)-local:/s|^.*$|&\ndisabled-&|' \
Makefile.am || die
autotools-multilib_src_prepare
}
multilib_src_install() {
default
multilib_is_native_abi && dobin scripts/gtest-config
}
multilib_src_install_all() {
prune_libtool_files --all
einstalldocs
if use examples ; then
insinto /usr/share/doc/${PF}/examples
doins samples/*.{cc,h}
fi
}

View File

@ -1,68 +0,0 @@
# Copyright 1999-2018 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 python3_{4,5,6} pypy )
inherit python-any-r1 cmake-multilib
DESCRIPTION="Google C++ Testing Framework"
HOMEPAGE="https://github.com/google/googletest"
SRC_URI="https://github.com/google/googletest/archive/release-${PV}.tar.gz -> ${P}.tar.gz"
LICENSE="BSD"
SLOT="0"
KEYWORDS="alpha amd64 ~arm arm64 hppa ia64 ~m68k ~mips ppc ppc64 ~s390 ~sh sparc x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos"
IUSE="doc examples test"
DEPEND="test? ( ${PYTHON_DEPS} )"
RDEPEND="!dev-cpp/gmock"
PATCHES=(
"${FILESDIR}"/${PN}-9999-fix-py-tests.patch
"${FILESDIR}"/${PN}-9999-fix-gcc6-undefined-behavior.patch
"${FILESDIR}"/${PN}-1.8.0-multilib-strict.patch
"${FILESDIR}"/${PN}-1.8.0-increase-clone-stack-size.patch
"${FILESDIR}"/${PN}-1.8.0-fix-doublefree.patch
)
S="${WORKDIR}"/googletest-release-${PV}
pkg_setup() {
use test && python-any-r1_pkg_setup
}
multilib_src_configure() {
local mycmakeargs=(
-DBUILD_GMOCK=ON
-DBUILD_GTEST=ON
-DLIB_INSTALL_DIR=$(get_libdir)
-Dgtest_build_samples=OFF
-Dgtest_disable_pthreads=OFF
-DBUILD_SHARED_LIBS=ON
# tests
-Dgmock_build_tests=$(usex test)
-Dgtest_build_tests=$(usex test)
-DPYTHON_EXECUTABLE="${PYTHON}"
)
cmake-utils_src_configure mycmakeargs
}
multilib_src_install_all() {
einstalldocs
if use doc; then
docinto googletest
dodoc -r googletest/docs/*
docinto googlemock
dodoc -r googlemock/docs/*
fi
if use examples; then
docinto examples
dodoc googletest/samples/*.{cc,h}
fi
}

View File

@ -1,67 +0,0 @@
# Copyright 1999-2018 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 python3_{4,5,6} pypy )
inherit python-any-r1 cmake-multilib
DESCRIPTION="Google C++ Testing Framework"
HOMEPAGE="https://github.com/google/googletest"
SRC_URI="https://github.com/google/googletest/archive/release-${PV}.tar.gz -> ${P}.tar.gz"
LICENSE="BSD"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos"
IUSE="doc examples test"
DEPEND="test? ( ${PYTHON_DEPS} )"
RDEPEND="!dev-cpp/gmock"
PATCHES=(
"${FILESDIR}"/${PN}-9999-fix-py-tests.patch
"${FILESDIR}"/${PN}-9999-fix-gcc6-undefined-behavior.patch
"${FILESDIR}"/${PN}-1.8.0-multilib-strict.patch
"${FILESDIR}"/${PN}-1.8.0-increase-clone-stack-size.patch
)
S="${WORKDIR}"/googletest-release-${PV}
pkg_setup() {
use test && python-any-r1_pkg_setup
}
multilib_src_configure() {
local mycmakeargs=(
-DBUILD_GMOCK=ON
-DBUILD_GTEST=ON
-DLIB_INSTALL_DIR=$(get_libdir)
-Dgtest_build_samples=OFF
-Dgtest_disable_pthreads=OFF
-DBUILD_SHARED_LIBS=ON
# tests
-Dgmock_build_tests=$(usex test)
-Dgtest_build_tests=$(usex test)
-DPYTHON_EXECUTABLE="${PYTHON}"
)
cmake-utils_src_configure mycmakeargs
}
multilib_src_install_all() {
einstalldocs
if use doc; then
docinto googletest
dodoc -r googletest/docs/*
docinto googlemock
dodoc -r googlemock/docs/*
fi
if use examples; then
docinto examples
dodoc googletest/samples/*.{cc,h}
fi
}

View File

@ -1,20 +1,28 @@
# Copyright 1999-2018 Gentoo Foundation
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI="6"
EAPI=8
# Python is required for tests and some build tasks.
PYTHON_COMPAT=( python2_7 python3_{4,5,6} pypy )
PYTHON_COMPAT=( python3_{8..10} )
inherit python-any-r1 cmake-multilib
CMAKE_ECLASS=cmake
inherit cmake-multilib python-any-r1
if [[ ${PV} == "9999" ]]; then
inherit git-r3
EGIT_REPO_URI="https://github.com/google/googletest"
else
SRC_URI="https://github.com/google/googletest/archive/release-${PV}.tar.gz -> ${P}.tar.gz"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos"
S="${WORKDIR}"/googletest-release-${PV}
if [[ -z ${GOOGLETEST_COMMIT} ]]; then
SRC_URI="https://github.com/google/googletest/archive/refs/tags/release-${PV}.tar.gz
-> ${P}.tar.gz"
S="${WORKDIR}"/googletest-release-${PV}
else
SRC_URI="https://github.com/google/googletest/archive/${GOOGLETEST_COMMIT}.tar.gz
-> ${P}.tar.gz"
S="${WORKDIR}"/googletest-${GOOGLETEST_COMMIT}
fi
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
fi
DESCRIPTION="Google C++ Testing Framework"
@ -23,51 +31,45 @@ HOMEPAGE="https://github.com/google/googletest"
LICENSE="BSD"
SLOT="0"
IUSE="doc examples test"
RESTRICT="!test? ( test )"
DEPEND="test? ( ${PYTHON_DEPS} )"
RDEPEND="!dev-cpp/gmock"
BDEPEND="test? ( ${PYTHON_DEPS} )"
PATCHES=(
"${FILESDIR}"/${PN}-9999-fix-gcc6-undefined-behavior.patch
"${FILESDIR}"/${PN}-1.8.0-increase-clone-stack-size.patch
"${FILESDIR}"/${PN}-1.8.0-fix-doublefree.patch
"${FILESDIR}"/${PN}-1.10.0_p20200702-increase-clone-stack-size.patch
)
pkg_setup() {
use test && python-any-r1_pkg_setup
}
src_prepare() {
cmake_src_prepare
sed -i -e '/set(cxx_base_flags /s:-Werror::' \
googletest/cmake/internal_utils.cmake || die "sed failed!"
}
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
cmake_src_configure
}
multilib_src_install_all() {
einstalldocs
if use doc; then
docinto googletest
dodoc -r googletest/docs/*
docinto googlemock
dodoc -r googlemock/docs/*
fi
newdoc googletest/README.md README.googletest.md
newdoc googlemock/README.md README.googlemock.md
use doc && dodoc -r docs/.
if use examples; then
docinto examples

View File

@ -1,11 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
<maintainer type="person" proxied="yes">
<email>plevine457@gmail.com</email>
<name>Peter Levine</name>
</maintainer>
<maintainer type="project">
<maintainer type="project" proxied="proxy">
<email>proxy-maint@gentoo.org</email>
<name>Proxy Maintainers</name>
</maintainer>