[arch-commits] Commit in gtest/trunk (7 files)

Jan Steffens heftig at archlinux.org
Mon Sep 24 09:00:33 UTC 2018


    Date: Monday, September 24, 2018 @ 09:00:32
  Author: heftig
Revision: 384493

1.8.1-2: Overhaul

Added:
  gtest/trunk/gtest-1.8.1-libversion.patch
  gtest/trunk/gtest-1.8.1-null-pointer.patch
Modified:
  gtest/trunk/PKGBUILD
Deleted:
  gtest/trunk/gmock-install.patch
  gtest/trunk/gmock.pc.in
  gtest/trunk/gtest-pkgconfig.patch
  gtest/trunk/gtest.pc.in

--------------------------------+
 PKGBUILD                       |  114 +++++++++++++++++++--------------------
 gmock-install.patch            |   79 ---------------------------
 gmock.pc.in                    |   10 ---
 gtest-1.8.1-libversion.patch   |   29 +++++++++
 gtest-1.8.1-null-pointer.patch |   17 +++++
 gtest-pkgconfig.patch          |   27 ---------
 gtest.pc.in                    |   10 ---
 7 files changed, 104 insertions(+), 182 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2018-09-24 08:59:32 UTC (rev 384492)
+++ PKGBUILD	2018-09-24 09:00:32 UTC (rev 384493)
@@ -1,5 +1,6 @@
 # Maintainer: Felix Yan <felixonmars at archlinux.org>
 # Maintainer: Levente Polyak <anthraxx[at]archlinux[dot]org>
+# Contributor: Jan Alexander Steffens (heftig) <jan.steffens at gmail.com>
 # Contributor: Alexandre Bique <bique.alexandre at gmail.com>
 # Contributor: Louis R. Marascio <lrm at fitnr.com>
 # Contributor: Cody Maloney <cmaloney at theoreticalchaos.com>
@@ -7,84 +8,77 @@
 pkgbase=gtest
 pkgname=('gtest' 'gmock')
 pkgver=1.8.1
-pkgrel=1
+pkgrel=2
 pkgdesc='Google Test - C++ testing utility'
-url='https://github.com/google/googletest/'
+url='https://github.com/google/googletest'
 arch=('x86_64')
 license=('BSD')
-makedepends=('python2' 'cmake' 'gcc-libs' 'sh')
-options=(!makeflags)
-source=(${pkgbase}-${pkgver}.tar.gz::https://github.com/google/googletest/archive/release-${pkgver}.tar.gz
-        gtest-pkgconfig.patch
-        gtest.pc.in
-        gmock-install.patch
-        gmock.pc.in)
+makedepends=('python2' 'cmake' 'gcc-libs' 'sh' 'ninja')
+_srcname=googletest-release-${pkgver}
+source=(${_srcname}.tar.gz::https://github.com/google/googletest/archive/release-${pkgver}.tar.gz
+        gtest-1.8.1-libversion.patch
+        gtest-1.8.1-null-pointer.patch)
 sha512sums=('e6283c667558e1fd6e49fa96e52af0e415a3c8037afe1d28b7ff1ec4c2ef8f49beb70a9327b7fc77eb4052a58c4ccad8b5260ec90e4bceeac7a46ff59c4369d7'
-            '7e9ad4cd470eaab7ed5fb1cce1d5721d40fc03a62b0c895b8f9657679ffa43f91b99800bb1e02a6c5c2d0a72e94bb8ea008aa6e74fdb1460b1326a84da5e9f91'
-            'df3d23bc53c3b4ab5bacb4b6fad8823870b2ba6b86017e1e99067fb547533a649f2c8e8a8634e3583b344230e1afc280a047d41330cbc7510cfd0c5e843594c3'
-            '2c2417c178485a590695f7d37b26fad3a1a1993fdc9a0c869c34fec83d51769b8057b4f67000e0585f61919c092175186252704a032e9b06bfc1f0e7c0b900f9'
-            '3e4c2e96139292818d97b52536776b656bea30f119124dab4d5c2cb2f31098a3bfac928b74297f7c77229d3eb5fa3b734931c64d8bef2f867b585e43b390a59c')
+            '99667910ddb55f495b15b51d4a21b878f2c2c4e72e2ce7054d6491274e35002e3e793e0c86e5c6d774a0301a7af8c5d5175ff910e12bf6c71f008a6368e33c92'
+            'afa75f975d8aed453c901245dae753939958d8b72e3e5c52995efe7980f44de4fd1ea08f1b0a4cc927443d858de0a1fe34a919512ce05ae443bfb9600b08f029')
 
 prepare() {
-  cd googletest-release-${pkgver}
-  find -name '*.py' -exec sed -i 's|env python|env python2|g' {} \;
+  cd ${_srcname}
 
-  msg2 "Preparing googletest..."
-  (cd googletest
-    autoreconf -fvi
-    cp "${srcdir}/gtest.pc.in" .
-    sed -r "s|(Version:) .+|\1 ${pkgver}|" -i gtest.pc.in
-    patch -p1 < "${srcdir}/gtest-pkgconfig.patch"
-    mkdir build
-  )
+  # https://src.fedoraproject.org/rpms/gtest/tree/master
+  patch -Np1 -i ../gtest-1.8.1-libversion.patch
+  patch -Np1 -i ../gtest-1.8.1-null-pointer.patch
 
-  msg2 "Preparing googlemock..."
-  patch -p1 < "${srcdir}/gmock-install.patch"
-  (cd googlemock
-    cp "${srcdir}/gmock.pc.in" .
-    autoreconf -fvi
-  )
+  find . -name '*.py' -exec sed -i '1s|python$|&2|g' {} +
 }
 
 build() {
-  cd googletest-release-${pkgver}
+  mkdir build build-ac
+  cd build
 
-  msg2 "Building googletest..."
-  (cd googletest
-    # this is odd but needed only to generate gtest-config.
-    ./configure --prefix=/usr
-    cd build
-    cmake -DCMAKE_INSTALL_PREFIX=/usr \
-      -DBUILD_SHARED_LIBS=ON \
-      -DCMAKE_SKIP_RPATH=ON ..
-    make
-  )
+  cmake -G Ninja ../${_srcname} \
+    -DCMAKE_INSTALL_PREFIX=/usr \
+    -DCMAKE_INSTALL_LIBDIR=lib \
+    -DBUILD_SHARED_LIBS=ON \
+    -DPython_ADDITIONAL_VERSIONS=2.7 \
+    -Dgtest_build_tests=ON
+  cmake --build .
 
-  msg2 "Building googlemock..."
-  (cd googlemock
-    ./configure --prefix=/usr --with-gtest --enable-external-gtest
-    make
-  )
+  # Only for g{test,mock}-config
+  cd ../${_srcname}/googletest
+  autoreconf -fvi
+  ./configure --prefix=/usr
+  cd ../googlemock
+  autoreconf -fvi
+  ./configure --prefix=/usr
 }
 
+check() {
+  cmake --build build --target test
+}
+
 package_gtest() {
   pkgdesc='Google Test - C++ testing utility based on the xUnit framework (like JUnit)'
   depends=('gcc-libs' 'sh')
 
-  cd googletest-release-${pkgver}/googletest
-  make -C build DESTDIR="${pkgdir}" install
+  DESTDIR="${pkgdir}" cmake --build build --target install
+
+  # Shouldn't be present
+  find "${pkgdir}" -name '*.pump' -printf 'Removing %P\n' -delete
+
+  # Split gmock
+  mkdir -p gmock/{include,lib/pkgconfig}
+  mv "${pkgdir}"/usr/include/gmock gmock/include/
+  mv "${pkgdir}"/usr/lib/libgmock* gmock/lib/
+  mv "${pkgdir}"/usr/lib/pkgconfig/gmock* gmock/lib/pkgconfig/
+
+  cd ${_srcname}/googletest
   install -Dm 644 LICENSE -t "${pkgdir}/usr/share/licenses/${pkgname}"
   install -Dm 644 README.md CHANGES CONTRIBUTORS -t "${pkgdir}/usr/share/doc/${pkgname}"
   install -Dm 755 scripts/gtest-config -t "${pkgdir}/usr/bin"
-  install -Dm 644 build/libgtest{,_main}.so -t "${pkgdir}/usr/lib"
   install -Dm 644 m4/gtest.m4 -t "${pkgdir}/usr/share/aclocal"
   install -Dm 644 cmake/* -t "${pkgdir}/usr/src/gtest/cmake"
   install -Dm 644 src/* -t "${pkgdir}/usr/src/gtest/src"
-  install -d "${pkgdir}/usr/include"
-  cp -r include/gtest -t "${pkgdir}/usr/include"
-
-  # undo pkg-config patch so subprojects including this don't try to generate it
-  patch -Rp1 < "${srcdir}/gtest-pkgconfig.patch"
   install -Dm 644 CMakeLists.txt -t "${pkgdir}/usr/src/gtest"
 }
 
@@ -92,12 +86,20 @@
   pkgdesc='Google Mock - A library for writing and using C++ mock classes'
   depends=('python2' 'gtest' 'gcc-libs' 'sh')
 
-  cd googletest-release-${pkgver}/googlemock
-  make --trace -w -j1 DESTDIR="${pkgdir}" install
+  mv gmock "${pkgdir}/usr"
+
+  cd ${_srcname}/googlemock
   install -Dm 644 LICENSE -t "${pkgdir}/usr/share/licenses/${pkgname}"
   install -Dm 644 README.md CHANGES CONTRIBUTORS -t "${pkgdir}/usr/share/doc/${pkgname}"
   install -Dm 755 scripts/gmock-config -t "${pkgdir}/usr/bin"
-  install -Dm 644 include/gmock/internal/custom/* -t "${pkgdir}/usr/include/gmock/internal/custom"
+  install -Dm 644 src/* -t "${pkgdir}/usr/src/gmock"
+  install -Dm 644 scripts/generator/{*.py,LICENSE,README*} -t "${pkgdir}/usr/share/gmock/generator"
+  install -Dm 644 scripts/generator/cpp/* -t "${pkgdir}/usr/share/gmock/generator/cpp"
+
+  sed -i 's|src/||' "${pkgdir}/usr/src/gmock/gmock-all.cc"
+
+  python2 -m compileall -d /usr/share/gmock "${pkgdir}/usr/share/gmock"
+  python2 -O -m compileall -d /usr/share/gmock "${pkgdir}/usr/share/gmock"
 }
 
 # vim: ts=2 sw=2 et:

Deleted: gmock-install.patch
===================================================================
--- gmock-install.patch	2018-09-24 08:59:32 UTC (rev 384492)
+++ gmock-install.patch	2018-09-24 09:00:32 UTC (rev 384493)
@@ -1,79 +0,0 @@
-diff -urN gmock-1.7.0.orig/gtest/Makefile.am gmock-1.7.0/gtest/Makefile.am
---- a/googletest/Makefile.am	2013-09-23 22:34:27.649060735 -0700
-+++ b/googletest/Makefile.am	2013-09-23 22:39:16.097069357 -0700
-@@ -299,8 +299,2 @@
- 
--install-exec-local:
--	echo "'make install' is dangerous and not supported. Instead, see README for how to integrate Google Test into your build system."
--	false
- 
--install-data-local:
--	echo "'make install' is dangerous and not supported. Instead, see README for how to integrate Google Test into your build system."
--	false
---- a/googlemock/Makefile.am
-+++ b/googlemock/Makefile.am
-@@ -7,6 +7,8 @@ EXTRA_DIST = LICENSE
- # included in the 'subdirs' variable.
--SUBDIRS = $(subdirs)
- 
-+
-+bin_SCRIPTS = scripts/gmock-config
-+
- # This is generated by the configure script, so clean it for distribution.
- DISTCLEANFILES = scripts/gmock-config
- 
-@@ -16,5 +19,8 @@ if HAVE_PTHREADS
- lib_libgmock_la_SOURCES = src/gmock-all.cc
- 
-+pkgconfigdir = $(libdir)/pkgconfig
-+pkgconfig_DATA = gmock.pc
-+  
- pkginclude_HEADERS = \
-   include/gmock/gmock-actions.h \
-   include/gmock/gmock-cardinalities.h \
-@@ -207,10 +213,11 @@ CLEANFILES = core
- # Mock can lead to undefined behavior due to violation of the
- # One-Definition Rule.
- 
--install-exec-local:
--	echo "'make install' is dangerous and not supported. Instead, see README for how to integrate Google Mock into your build system."
--	false
--
--install-data-local:
--	echo "'make install' is dangerous and not supported. Instead, see README for how to integrate Google Mock into your build system."
--	false
-+install-exec-hook:
-+	install -d "$(DESTDIR)$(datadir)/@PACKAGE@" && echo 1
-+	cp -rf scripts/generator "$(DESTDIR)$(datadir)/@PACKAGE@" && echo 2
-+	python2 -m compileall "$(DESTDIR)$(datadir)/@PACKAGE@" && echo 3
-+	python2 -O -m compileall "$(DESTDIR)$(datadir)/@PACKAGE@" && echo 4
-+	install -Dm 644 src/*.cc -t "$(DESTDIR)$(prefix)/src/@PACKAGE@" && echo 5
-+	install -Dm 644 $(pkgconfig_DATA) -t "$(DESTDIR)$(pkgconfigdir)" && echo 6
-+	sed -i s/src[/]//g "$(DESTDIR)$(prefix)/src/@PACKAGE@/gmock-all.cc" && echo 7
---- a/googlemock/Makefile.am	2016-09-28 17:47:02.926781189 +0200
-+++ b/googlemock/Makefile.am	2016-09-28 17:47:38.066834777 +0200
-@@ -42,10 +42,7 @@
- pkginclude_internal_HEADERS = \
-   include/gmock/internal/gmock-generated-internal-utils.h \
-   include/gmock/internal/gmock-internal-utils.h \
--  include/gmock/internal/gmock-port.h \
--  include/gmock/internal/custom/gmock-generated-actions.h \
--  include/gmock/internal/custom/gmock-matchers.h \
--  include/gmock/internal/custom/gmock-port.h
-+  include/gmock/internal/gmock-port.h
- 
- lib_libgmock_main_la_SOURCES = src/gmock_main.cc
- lib_libgmock_main_la_LIBADD = lib/libgmock.la
-diff --git a/configure.ac b/configure.ac
-index d268d5d..9d23176 100644
---- a/googlemock/configure.ac
-+++ b/googlemock/configure.ac
-@@ -10,7 +10,7 @@ AC_PREREQ([2.59])
- AC_CONFIG_SRCDIR([./LICENSE])
- AC_CONFIG_AUX_DIR([build-aux])
- AC_CONFIG_HEADERS([build-aux/config.h])
--AC_CONFIG_FILES([Makefile])
-+AC_CONFIG_FILES([Makefile gmock.pc])
- AC_CONFIG_FILES([scripts/gmock-config], [chmod +x scripts/gmock-config])
- 
- # Initialize Automake with various options. We require at least v1.9, prevent

Deleted: gmock.pc.in
===================================================================
--- gmock.pc.in	2018-09-24 08:59:32 UTC (rev 384492)
+++ gmock.pc.in	2018-09-24 09:00:32 UTC (rev 384493)
@@ -1,10 +0,0 @@
-Name: gmock
-Description: Google C++ mocking framework
-URL: https://github.com/google/googletest
-Version: @VERSION@
-
-prefix=@prefix@
-includedir=@includedir@
-srcdir=@prefix@/src/gmock
-
-Cflags: -I${includedir}/gmock

Added: gtest-1.8.1-libversion.patch
===================================================================
--- gtest-1.8.1-libversion.patch	                        (rev 0)
+++ gtest-1.8.1-libversion.patch	2018-09-24 09:00:32 UTC (rev 384493)
@@ -0,0 +1,29 @@
+diff --git a/googlemock/CMakeLists.txt b/googlemock/CMakeLists.txt
+index 8a8de1f..3d86a59 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)
+   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)
+ 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
+--- 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)
+ cxx_library(gtest_main "${cxx_strict}" src/gtest_main.cc)
++set_target_properties(gtest_main PROPERTIES VERSION 1.8.1)
+ # 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).

Added: gtest-1.8.1-null-pointer.patch
===================================================================
--- gtest-1.8.1-null-pointer.patch	                        (rev 0)
+++ gtest-1.8.1-null-pointer.patch	2018-09-24 09:00:32 UTC (rev 384493)
@@ -0,0 +1,17 @@
+diff --git a/googletest/src/gtest.cc b/googletest/src/gtest.cc
+index 96b07c6..4af3e5a 100644
+--- a/googletest/src/gtest.cc
++++ b/googletest/src/gtest.cc
+@@ -2693,10 +2693,12 @@ void TestInfo::Run() {
+     test->Run();
+   }
+ 
++  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);
+ 

Deleted: gtest-pkgconfig.patch
===================================================================
--- gtest-pkgconfig.patch	2018-09-24 08:59:32 UTC (rev 384492)
+++ gtest-pkgconfig.patch	2018-09-24 09:00:32 UTC (rev 384493)
@@ -1,27 +0,0 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 281c4c2..e4354a8 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -29,6 +29,9 @@
-   pre_project_set_up_hermetic_build()
- endif()
- 
-+# pkg-config support
-+configure_file("gtest.pc.in" "gtest.pc" @ONLY)
-+
- ########################################################################
- #
- # Project-wide settings
-@@ -71,6 +71,10 @@
- cxx_library(gtest_main "${cxx_strict}" src/gtest_main.cc)
- target_link_libraries(gtest_main gtest)
- 
-+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/gtest.pc"
-+  DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig/"
-+)
-+
- ########################################################################
- #
- # Samples on how to link user tests with gtest or gtest_main.
--- 
-1.9.1

Deleted: gtest.pc.in
===================================================================
--- gtest.pc.in	2018-09-24 08:59:32 UTC (rev 384492)
+++ gtest.pc.in	2018-09-24 09:00:32 UTC (rev 384493)
@@ -1,10 +0,0 @@
-Name: libgtest
-Description: Google's framework for writing C++ tests on a variety of platforms
-URL: https://github.com/google/googletest
-Version: 0.0.0
-
-prefix=@CMAKE_INSTALL_PREFIX@
-includedir=${prefix}/include
-libdir=${prefix}/lib
-Cflags:-I${includedir}/gtest
-Libs: -L${libdir} -lgtest -lgtest_main



More information about the arch-commits mailing list