gmock, gtest: upgraded packages to upstream

[This is a reland of a previous change that got reverted due
 to a python ebuild bug which has since been fixed.]

Upgraded dev-cpp/gmock to version 1.6.0 on amd64, arm, x86
Upgraded dev-cpp/gtest to version 1.6.0-r1 on amd64, arm, x86

gmock includes a patch for a mutex deadlock during destruction:
https://code.google.com/p/googlemock/issues/detail?id=79

BUG=chromium:211445
TEST=cbuildbot --remote -g  {x86,amd64,arm}-generic-full
CQ-DEPEND=CL:47572
CQ-DEPEND=CL:47573

Change-Id: I33c576dab5285322a677802309115aa4822bdc86
Reviewed-on: https://gerrit.chromium.org/gerrit/47574
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Commit-Queue: Gaurav Shah <gauravsh@chromium.org>
Tested-by: Gaurav Shah <gauravsh@chromium.org>
diff --git a/dev-cpp/gmock/Manifest b/dev-cpp/gmock/Manifest
index b7128de..27fdce4 100644
--- a/dev-cpp/gmock/Manifest
+++ b/dev-cpp/gmock/Manifest
@@ -1 +1 @@
-DIST gmock-1.4.0.tar.bz2 946373 RMD160 9d43853f4abc650b8d8fe9984a6b4baddeea08ce SHA1 ecc8beec7004f36d8d4c0af5237381db4d640126 SHA256 21d37c154a7b8d7a8562b9dde82db7db0a6c188b985c4a18ff3413daae8caa8c
+DIST gmock-1.6.0.zip 2053682 RMD160 e08ea01a82e119591eef9bab69629d0af247784f SHA1 4702e98af194d320a915f1e6d2532a32b280819e SHA256 341ad07c31c619ba32c88c2265bc23693da1df062f47f146a7ed340f646d82b7
diff --git a/dev-cpp/gmock/files/1.6.0-fix_mutex.patch b/dev-cpp/gmock/files/1.6.0-fix_mutex.patch
new file mode 100644
index 0000000..af5eb48
--- /dev/null
+++ b/dev-cpp/gmock/files/1.6.0-fix_mutex.patch
@@ -0,0 +1,147 @@
+Index: test/gmock-spec-builders_test.cc
+===================================================================
+--- test/gmock-spec-builders_test.cc	(revision 402)
++++ test/gmock-spec-builders_test.cc	(revision 403)
+@@ -88,13 +88,14 @@
+ using testing::Ne;
+ using testing::Return;
+ using testing::Sequence;
++using testing::SetArgPointee;
+ using testing::internal::ExpectationTester;
+ using testing::internal::FormatFileLocation;
+-using testing::internal::g_gmock_mutex;
+ using testing::internal::kErrorVerbosity;
+ using testing::internal::kInfoVerbosity;
+ using testing::internal::kWarningVerbosity;
+ using testing::internal::String;
++using testing::internal::linked_ptr;
+ using testing::internal::string;
+ 
+ #if GTEST_HAS_STREAM_REDIRECTION
+@@ -157,6 +158,16 @@
+   GTEST_DISALLOW_COPY_AND_ASSIGN_(MockB);
+ };
+ 
++class ReferenceHoldingMock {
++ public:
++  ReferenceHoldingMock() {}
++
++  MOCK_METHOD1(AcceptReference, void(linked_ptr<MockA>*));
++
++ private:
++  GTEST_DISALLOW_COPY_AND_ASSIGN_(ReferenceHoldingMock);
++};
++
+ // Tests that EXPECT_CALL and ON_CALL compile in a presence of macro
+ // redefining a mock method name. This could happen, for example, when
+ // the tested code #includes Win32 API headers which define many APIs
+@@ -2439,6 +2450,46 @@
+   EXPECT_EQ(2, b1.DoB(0));
+ }
+ 
++TEST(VerifyAndClearTest,
++     DestroyingChainedMocksDoesNotDeadlockThroughExpectations) {
++  linked_ptr<MockA> a(new MockA);
++  ReferenceHoldingMock test_mock;
++
++  // EXPECT_CALL stores a reference to a inside test_mock.
++  EXPECT_CALL(test_mock, AcceptReference(_))
++      .WillRepeatedly(SetArgPointee<0>(a));
++
++  // Throw away the reference to the mock that we have in a. After this, the
++  // only reference to it is stored by test_mock.
++  a.reset();
++
++  // When test_mock goes out of scope, it destroys the last remaining reference
++  // to the mock object originally pointed to by a. This will cause the MockA
++  // destructor to be called from inside the ReferenceHoldingMock destructor.
++  // The state of all mocks is protected by a single global lock, but there
++  // should be no deadlock.
++}
++
++TEST(VerifyAndClearTest,
++     DestroyingChainedMocksDoesNotDeadlockThroughDefaultAction) {
++  linked_ptr<MockA> a(new MockA);
++  ReferenceHoldingMock test_mock;
++
++  // ON_CALL stores a reference to a inside test_mock.
++  ON_CALL(test_mock, AcceptReference(_))
++      .WillByDefault(SetArgPointee<0>(a));
++
++  // Throw away the reference to the mock that we have in a. After this, the
++  // only reference to it is stored by test_mock.
++  a.reset();
++
++  // When test_mock goes out of scope, it destroys the last remaining reference
++  // to the mock object originally pointed to by a. This will cause the MockA
++  // destructor to be called from inside the ReferenceHoldingMock destructor.
++  // The state of all mocks is protected by a single global lock, but there
++  // should be no deadlock.
++}
++
+ // Tests that a mock function's action can call a mock function
+ // (either the same function or a different one) either as an explicit
+ // action or as a default action without causing a dead lock.  It
+Index: include/gmock/gmock-spec-builders.h
+===================================================================
+--- include/gmock/gmock-spec-builders.h	(revision 402)
++++ include/gmock/gmock-spec-builders.h	(revision 403)
+@@ -1475,12 +1475,27 @@
+   virtual void ClearDefaultActionsLocked()
+       GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+     g_gmock_mutex.AssertHeld();
++
++    // Deleting our default actions may trigger other mock objects to be
++    // deleted, for example if an action contains a reference counted smart
++    // pointer to that mock object, and that is the last reference. So if we
++    // delete our actions within the context of the global mutex we may deadlock
++    // when this method is called again. Instead, make a copy of the set of
++    // actions to delete, clear our set within the mutex, and then delete the
++    // actions outside of the mutex.
++    UntypedOnCallSpecs specs_to_delete;
++    untyped_on_call_specs_.swap(specs_to_delete);
++
++    g_gmock_mutex.Unlock();
+     for (UntypedOnCallSpecs::const_iterator it =
+-             untyped_on_call_specs_.begin();
+-         it != untyped_on_call_specs_.end(); ++it) {
++             specs_to_delete.begin();
++         it != specs_to_delete.end(); ++it) {
+       delete static_cast<const OnCallSpec<F>*>(*it);
+     }
+-    untyped_on_call_specs_.clear();
++
++    // Lock the mutex again, since the caller expects it to be locked when we
++    // return.
++    g_gmock_mutex.Lock();
+   }
+ 
+  protected:
+Index: src/gmock-spec-builders.cc
+===================================================================
+--- src/gmock-spec-builders.cc	(revision 402)
++++ src/gmock-spec-builders.cc	(revision 403)
+@@ -480,7 +480,21 @@
+              untyped_expectation->line(), ss.str());
+     }
+   }
+-  untyped_expectations_.clear();
++
++  // Deleting our expectations may trigger other mock objects to be deleted, for
++  // example if an action contains a reference counted smart pointer to that
++  // mock object, and that is the last reference. So if we delete our
++  // expectations within the context of the global mutex we may deadlock when
++  // this method is called again. Instead, make a copy of the set of
++  // expectations to delete, clear our set within the mutex, and then clear the
++  // copied set outside of it.
++  UntypedExpectations expectations_to_delete;
++  untyped_expectations_.swap(expectations_to_delete);
++
++  g_gmock_mutex.Unlock();
++  expectations_to_delete.clear();
++  g_gmock_mutex.Lock();
++
+   return expectations_met;
+ }
+ 
+
diff --git a/dev-cpp/gmock/gmock-1.4.0.ebuild b/dev-cpp/gmock/gmock-1.4.0.ebuild
deleted file mode 100644
index 9d2b61d..0000000
--- a/dev-cpp/gmock/gmock-1.4.0.ebuild
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright 1999-2012 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/dev-cpp/gmock/gmock-1.4.0.ebuild,v 1.6 2012/08/28 21:52:08 vapier Exp $
-
-EAPI="4"
-
-inherit libtool eutils
-
-DESCRIPTION="Google's C++ mocking framework"
-HOMEPAGE="http://code.google.com/p/googlemock/"
-SRC_URI="http://googlemock.googlecode.com/files/${P}.tar.bz2"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="amd64 arm x86"
-IUSE="static-libs"
-
-RDEPEND=">=dev-cpp/gtest-${PV}"
-DEPEND="${RDEPEND}"
-
-src_unpack() {
-	default
-	# make sure we always use the system one
-	rm -r "${S}"/gtest/Makefile* || die
-}
-
-src_prepare() {
-	epatch "${FILESDIR}"/${P}-gcc-4.7.patch
-	epatch "${FILESDIR}"/${P}-more-gcc-4.7.patch
-	elibtoolize
-}
-
-src_configure() {
-	econf $(use_enable static-libs static)
-}
-
-src_install() {
-	default
-	use static-libs || find "${ED}"/usr -name '*.la' -delete
-}
diff --git a/dev-cpp/gmock/gmock-1.6.0.ebuild b/dev-cpp/gmock/gmock-1.6.0.ebuild
new file mode 100644
index 0000000..ce7fa19
--- /dev/null
+++ b/dev-cpp/gmock/gmock-1.6.0.ebuild
@@ -0,0 +1,44 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-cpp/gmock/gmock-1.6.0.ebuild,v 1.6 2012/08/24 09:23:27 xmw Exp $
+
+EAPI="4"
+
+inherit eutils libtool
+
+DESCRIPTION="Google's C++ mocking framework"
+HOMEPAGE="http://code.google.com/p/googlemock/"
+SRC_URI="http://googlemock.googlecode.com/files/${P}.zip"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="amd64 arm ~mips ppc ~ppc64 x86"
+IUSE="static-libs"
+
+RDEPEND="=dev-cpp/gtest-${PV}*"
+DEPEND="app-arch/unzip
+	${RDEPEND}"
+
+src_unpack() {
+	default
+	# make sure we always use the system one
+	rm -r "${S}"/gtest/{Makefile,configure}* || die
+}
+
+src_prepare() {
+	sed -i -r \
+		-e '/^install-(data|exec)-local:/s|^.*$|&\ndisabled-&|' \
+		Makefile.in
+        epatch "${FILESDIR}/1.6.0-fix_mutex.patch" || die
+	elibtoolize
+}
+
+src_configure() {
+	econf $(use_enable static-libs static)
+}
+
+src_install() {
+	default
+	dobin scripts/gmock-config
+	use static-libs || find "${D}" -name '*.la' -delete
+}
diff --git a/dev-cpp/gtest/Manifest b/dev-cpp/gtest/Manifest
index 2f964b9..f9a90f3 100644
--- a/dev-cpp/gtest/Manifest
+++ b/dev-cpp/gtest/Manifest
@@ -1 +1 @@
-DIST gtest-1.4.0.tar.bz2 525425 RMD160 2688f9e4c68af10a5974af91c0fe2dd551cf72c7 SHA1 d26e1a67ec08a9d6167ecf77c61961c469f448b2 SHA256 c848158f1fca599d6339b9f00e3fdee6153dc518a23c793ccf757f8aa4ad17e9
+DIST gtest-1.6.0.zip 1121697 RMD160 ae4be5325f0cd83fea9902aa8674915ef2dcf8b4 SHA1 00d6be170eb9fc3b2198ffdcb1f1d6ba7fc6e621 SHA256 5ec97df8e75b4ee796604e74716d1b50582beba22c5502edd055a7e67a3965d8
diff --git a/dev-cpp/gtest/files/configure-fix-pthread-linking.patch b/dev-cpp/gtest/files/configure-fix-pthread-linking.patch
new file mode 100644
index 0000000..75e5219
--- /dev/null
+++ b/dev-cpp/gtest/files/configure-fix-pthread-linking.patch
@@ -0,0 +1,93 @@
+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
+
diff --git a/dev-cpp/gtest/files/gtest-1.4.0-asneeded.patch b/dev-cpp/gtest/files/gtest-1.4.0-asneeded.patch
deleted file mode 100644
index f8e7d00..0000000
--- a/dev-cpp/gtest/files/gtest-1.4.0-asneeded.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Naur gtest-1.4.0.orig/Makefile.am gtest-1.4.0/Makefile.am
---- gtest-1.4.0.orig/Makefile.am	2009-10-02 16:04:30.000000000 +0900
-+++ gtest-1.4.0/Makefile.am	2010-01-20 16:52:34.000000000 +0900
-@@ -305,7 +305,7 @@
- TESTS += test/gtest-unittest-api_test
- check_PROGRAMS += test/gtest-unittest-api_test
- test_gtest_unittest_api_test_SOURCES = test/gtest-unittest-api_test.cc
--test_gtest_unittest_api_test_LDADD = lib/libgtest_main.la
-+test_gtest_unittest_api_test_LDADD = lib/libgtest.la
- 
- TESTS += test/gtest-listener_test
- check_PROGRAMS += test/gtest-listener_test
diff --git a/dev-cpp/gtest/files/gtest-1.4.0-gcc-4.7.patch b/dev-cpp/gtest/files/gtest-1.4.0-gcc-4.7.patch
deleted file mode 100644
index 05c2700..0000000
--- a/dev-cpp/gtest/files/gtest-1.4.0-gcc-4.7.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-fix for upstream for building with newer gcc versions
-
-r339 | zhanyong.wan | 2009-11-12 21:54:23 -0500 (Thu, 12 Nov 2009) | 2 lines
-
-...; makes gtest-param-util-generated.h conform to the C++ standard (by Zhanyong Wan).
-
-Index: include/gtest/internal/gtest-param-util-generated.h
-===================================================================
---- include/gtest/internal/gtest-param-util-generated.h	(revision 338)
-+++ include/gtest/internal/gtest-param-util-generated.h	(revision 339)
-@@ -53,6 +53,21 @@
- #if GTEST_HAS_PARAM_TEST
- 
- namespace testing {
-+
-+// Forward declarations of ValuesIn(), which is implemented in
-+// include/gtest/gtest-param-test.h.
-+template <typename ForwardIterator>
-+internal::ParamGenerator<
-+    typename ::std::iterator_traits<ForwardIterator>::value_type> ValuesIn(
-+        ForwardIterator begin, ForwardIterator end);
-+
-+template <typename T, size_t N>
-+internal::ParamGenerator<T> ValuesIn(const T (&array)[N]);
-+
-+template <class Container>
-+internal::ParamGenerator<typename Container::value_type> ValuesIn(
-+    const Container& container);
-+
- namespace internal {
- 
- // Used in the Values() function to provide polymorphic capabilities.
diff --git a/dev-cpp/gtest/gtest-1.4.0-r1.ebuild b/dev-cpp/gtest/gtest-1.4.0-r1.ebuild
deleted file mode 120000
index 45647ed..0000000
--- a/dev-cpp/gtest/gtest-1.4.0-r1.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-gtest-1.4.0.ebuild
\ No newline at end of file
diff --git a/dev-cpp/gtest/gtest-1.4.0.ebuild b/dev-cpp/gtest/gtest-1.4.0.ebuild
deleted file mode 100644
index 057f590..0000000
--- a/dev-cpp/gtest/gtest-1.4.0.ebuild
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright 1999-2012 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/dev-cpp/gtest/gtest-1.4.0.ebuild,v 1.2 2012/04/20 18:18:06 vapier Exp $
-
-EAPI="2"
-inherit autotools eutils
-
-DESCRIPTION="Google C++ Testing Framework"
-HOMEPAGE="http://code.google.com/p/googletest/"
-SRC_URI="http://googletest.googlecode.com/files/${P}.tar.bz2"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="amd64 arm x86"
-IUSE="examples static-libs"
-
-DEPEND="dev-lang/python"
-RDEPEND=""
-
-src_prepare() {
-	sed -i -e "s|/tmp|${T}|g" test/gtest-filepath_test.cc || die "sed failed"
-
-	epatch "${FILESDIR}"/${P}-asneeded.patch
-	epatch "${FILESDIR}"/${P}-gcc-4.7.patch
-	eautoreconf
-}
-
-src_configure() {
-	econf \
-		$(use_enable static-libs static)
-}
-
-src_install() {
-	emake DESTDIR="${D}" install || die "emake install failed"
-
-	dodoc CHANGES CONTRIBUTORS README
-
-	use static-libs || rm "${D}"/usr/lib*/*.la
-
-	if use examples ; then
-		insinto /usr/share/doc/${PF}/examples
-		doins samples/*.{cc,h}
-	fi
-}
diff --git a/dev-cpp/gtest/gtest-1.6.0-r1.ebuild b/dev-cpp/gtest/gtest-1.6.0-r1.ebuild
new file mode 100644
index 0000000..30ea603
--- /dev/null
+++ b/dev-cpp/gtest/gtest-1.6.0-r1.ebuild
@@ -0,0 +1,60 @@
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-cpp/gtest/gtest-1.6.0-r1.ebuild,v 1.13 2013/02/28 15:47:14 jer Exp $
+
+EAPI="4"
+PYTHON_DEPEND="2"
+
+inherit eutils python autotools
+
+DESCRIPTION="Google C++ Testing Framework"
+HOMEPAGE="http://code.google.com/p/googletest/"
+SRC_URI="http://googletest.googlecode.com/files/${P}.zip"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="alpha amd64 arm hppa ia64 ~mips ppc ppc64 s390 sh sparc x86 ~amd64-fbsd ~x86-fbsd ~ppc-macos"
+IUSE="examples static-libs"
+
+DEPEND="app-arch/unzip"
+RDEPEND=""
+
+pkg_setup() {
+	python_pkg_setup
+	python_set_active_version 2
+}
+
+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
+	epatch "${FILESDIR}"/configure-fix-pthread-linking.patch || die
+	eautoreconf
+
+	python_convert_shebangs -r 2 .
+}
+
+src_configure() {
+	econf \
+		$(use_enable static-libs static)
+}
+
+src_test() {
+	# explicitly use parallel make
+	emake check || die
+}
+
+src_install() {
+	default
+	dobin scripts/gtest-config
+
+	if ! use static-libs ; then
+		rm "${ED}"/usr/lib*/*.la || die
+	fi
+
+	if use examples ; then
+		insinto /usr/share/doc/${PF}/examples
+		doins samples/*.{cc,h}
+	fi
+}
diff --git a/metadata/md5-cache/dev-cpp/gmock-1.4.0 b/metadata/md5-cache/dev-cpp/gmock-1.4.0
deleted file mode 100644
index 9a6d5e8..0000000
--- a/metadata/md5-cache/dev-cpp/gmock-1.4.0
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=configure install prepare unpack
-DEPEND=>=dev-cpp/gtest-1.4.0
-DESCRIPTION=Google's C++ mocking framework
-EAPI=4
-HOMEPAGE=http://code.google.com/p/googlemock/
-IUSE=static-libs
-KEYWORDS=amd64 arm x86
-LICENSE=BSD
-RDEPEND=>=dev-cpp/gtest-1.4.0
-SLOT=0
-SRC_URI=http://googlemock.googlecode.com/files/gmock-1.4.0.tar.bz2
-_eclasses_=eutils	d40dc948067bd3db1c8ebf7d51897313	libtool	0fd90d183673bf1107465ec45849d1ea	multilib	ded93e450747134a079e647d888aa80b	toolchain-funcs	69a2016af67775a812f4c03ba4b0e03e	user	9e552f935106ff0bc92af16da64b4b29
-_md5_=7f7df4f805df05dfada867a6c573d3cf
diff --git a/metadata/md5-cache/dev-cpp/gmock-1.6.0 b/metadata/md5-cache/dev-cpp/gmock-1.6.0
new file mode 100644
index 0000000..01cab74
--- /dev/null
+++ b/metadata/md5-cache/dev-cpp/gmock-1.6.0
@@ -0,0 +1,13 @@
+DEFINED_PHASES=configure install prepare unpack
+DEPEND=app-arch/unzip =dev-cpp/gtest-1.6.0*
+DESCRIPTION=Google's C++ mocking framework
+EAPI=4
+HOMEPAGE=http://code.google.com/p/googlemock/
+IUSE=static-libs
+KEYWORDS=amd64 arm ~mips ppc ~ppc64 x86
+LICENSE=BSD
+RDEPEND==dev-cpp/gtest-1.6.0*
+SLOT=0
+SRC_URI=http://googlemock.googlecode.com/files/gmock-1.6.0.zip
+_eclasses_=libtool	0fd90d183673bf1107465ec45849d1ea	multilib	ded93e450747134a079e647d888aa80b	toolchain-funcs	69a2016af67775a812f4c03ba4b0e03e
+_md5_=9a74797b653857828664f01085e05b88
diff --git a/metadata/md5-cache/dev-cpp/gtest-1.4.0 b/metadata/md5-cache/dev-cpp/gtest-1.4.0
deleted file mode 100644
index 05ac499..0000000
--- a/metadata/md5-cache/dev-cpp/gtest-1.4.0
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=configure install prepare
-DEPEND=dev-lang/python || ( >=sys-devel/automake-1.11.1:1.11 >=sys-devel/automake-1.12:1.12 ) >=sys-devel/autoconf-2.68 sys-devel/libtool
-DESCRIPTION=Google C++ Testing Framework
-EAPI=2
-HOMEPAGE=http://code.google.com/p/googletest/
-IUSE=examples static-libs
-KEYWORDS=amd64 arm x86
-LICENSE=BSD
-SLOT=0
-SRC_URI=http://googletest.googlecode.com/files/gtest-1.4.0.tar.bz2
-_eclasses_=autotools	1b0fa473be98091220edff9f51d06153	eutils	d40dc948067bd3db1c8ebf7d51897313	libtool	0fd90d183673bf1107465ec45849d1ea	multilib	ded93e450747134a079e647d888aa80b	multiprocessing	1512bdfe7004902b8cd2c466fc3df772	toolchain-funcs	69a2016af67775a812f4c03ba4b0e03e	user	9e552f935106ff0bc92af16da64b4b29
-_md5_=65d49cd828b37eb47caba90544b8973e
diff --git a/metadata/md5-cache/dev-cpp/gtest-1.4.0-r1 b/metadata/md5-cache/dev-cpp/gtest-1.4.0-r1
deleted file mode 100644
index 05ac499..0000000
--- a/metadata/md5-cache/dev-cpp/gtest-1.4.0-r1
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=configure install prepare
-DEPEND=dev-lang/python || ( >=sys-devel/automake-1.11.1:1.11 >=sys-devel/automake-1.12:1.12 ) >=sys-devel/autoconf-2.68 sys-devel/libtool
-DESCRIPTION=Google C++ Testing Framework
-EAPI=2
-HOMEPAGE=http://code.google.com/p/googletest/
-IUSE=examples static-libs
-KEYWORDS=amd64 arm x86
-LICENSE=BSD
-SLOT=0
-SRC_URI=http://googletest.googlecode.com/files/gtest-1.4.0.tar.bz2
-_eclasses_=autotools	1b0fa473be98091220edff9f51d06153	eutils	d40dc948067bd3db1c8ebf7d51897313	libtool	0fd90d183673bf1107465ec45849d1ea	multilib	ded93e450747134a079e647d888aa80b	multiprocessing	1512bdfe7004902b8cd2c466fc3df772	toolchain-funcs	69a2016af67775a812f4c03ba4b0e03e	user	9e552f935106ff0bc92af16da64b4b29
-_md5_=65d49cd828b37eb47caba90544b8973e
diff --git a/metadata/md5-cache/dev-cpp/gtest-1.6.0-r1 b/metadata/md5-cache/dev-cpp/gtest-1.6.0-r1
new file mode 100644
index 0000000..5eff00c
--- /dev/null
+++ b/metadata/md5-cache/dev-cpp/gtest-1.6.0-r1
@@ -0,0 +1,13 @@
+DEFINED_PHASES=configure install prepare setup test
+DEPEND=app-arch/unzip >=app-admin/eselect-python-20091230 =dev-lang/python-2* || ( >=sys-devel/automake-1.11.1:1.11 >=sys-devel/automake-1.12:1.12 ) >=sys-devel/autoconf-2.68 sys-devel/libtool
+DESCRIPTION=Google C++ Testing Framework
+EAPI=4
+HOMEPAGE=http://code.google.com/p/googletest/
+IUSE=examples static-libs
+KEYWORDS=alpha amd64 arm hppa ia64 ~mips ppc ppc64 s390 sh sparc x86 ~amd64-fbsd ~x86-fbsd ~ppc-macos
+LICENSE=BSD
+RDEPEND=>=app-admin/eselect-python-20091230 =dev-lang/python-2*
+SLOT=0
+SRC_URI=http://googletest.googlecode.com/files/gtest-1.6.0.zip
+_eclasses_=autotools	1b0fa473be98091220edff9f51d06153	eutils	d40dc948067bd3db1c8ebf7d51897313	libtool	0fd90d183673bf1107465ec45849d1ea	multilib	ded93e450747134a079e647d888aa80b	multiprocessing	1512bdfe7004902b8cd2c466fc3df772	python	6bbd984910e27780e5d0ea543d83ef84	toolchain-funcs	69a2016af67775a812f4c03ba4b0e03e	user	9e552f935106ff0bc92af16da64b4b29
+_md5_=9dd1da433e4fd0d5a29ceafa248b6592