From e7ee90b3627e13e7e08151d36a7db9ebf533df35 Mon Sep 17 00:00:00 2001 From: Alexey Pavlov Date: Mon, 30 Dec 2019 09:41:22 +0300 Subject: [PATCH] gtest: Update to 1.10.0. Build with python3 --- mingw-w64-gtest/01-python3-fixes.patch | 70 ++++++++++++++ ...02-revert-changes-to-pkgconfig-files.patch | 69 +++++++++++++ mingw-w64-gtest/03-fix-pkgconfig-files.patch | 64 +++++++++++++ mingw-w64-gtest/PKGBUILD | 96 ++++++++++--------- 4 files changed, 255 insertions(+), 44 deletions(-) create mode 100644 mingw-w64-gtest/01-python3-fixes.patch create mode 100644 mingw-w64-gtest/02-revert-changes-to-pkgconfig-files.patch create mode 100644 mingw-w64-gtest/03-fix-pkgconfig-files.patch diff --git a/mingw-w64-gtest/01-python3-fixes.patch b/mingw-w64-gtest/01-python3-fixes.patch new file mode 100644 index 0000000000..43ac1198eb --- /dev/null +++ b/mingw-w64-gtest/01-python3-fixes.patch @@ -0,0 +1,70 @@ +--- googletest-release-1.10.0/googlemock/scripts/fuse_gmock_files.py.orig 2019-12-30 08:16:05.958516700 +0300 ++++ googletest-release-1.10.0/googlemock/scripts/fuse_gmock_files.py 2019-12-30 08:18:46.482798600 +0300 +@@ -63,7 +63,10 @@ + + import os + import re +-import sets ++try: ++ from sets import Set as set # For Python 2.3 compatibility ++except ImportError: ++ pass + import sys + + # We assume that this file is in the scripts/ directory in the Google +@@ -119,8 +122,8 @@ + def FuseGMockH(gmock_root, output_dir): + """Scans folder gmock_root to generate gmock/gmock.h in output_dir.""" + +- output_file = file(os.path.join(output_dir, GMOCK_H_OUTPUT), 'w') +- processed_files = sets.Set() # Holds all gmock headers we've processed. ++ output_file = open(os.path.join(output_dir, GMOCK_H_OUTPUT), 'w') ++ processed_files = set() # Holds all gmock headers we've processed. + + def ProcessFile(gmock_header_path): + """Processes the given gmock header file.""" +@@ -132,7 +135,7 @@ + processed_files.add(gmock_header_path) + + # Reads each line in the given gmock header. +- for line in file(os.path.join(gmock_root, gmock_header_path), 'r'): ++ for line in open(os.path.join(gmock_root, gmock_header_path), 'r'): + m = INCLUDE_GMOCK_FILE_REGEX.match(line) + if m: + # It's '#include "gmock/..."' - let's process it recursively. +@@ -159,7 +162,7 @@ + def FuseGMockAllCcToFile(gmock_root, output_file): + """Scans folder gmock_root to fuse gmock-all.cc into output_file.""" + +- processed_files = sets.Set() ++ processed_files = set() + + def ProcessFile(gmock_source_file): + """Processes the given gmock source file.""" +@@ -171,7 +174,7 @@ + processed_files.add(gmock_source_file) + + # Reads each line in the given gmock source file. +- for line in file(os.path.join(gmock_root, gmock_source_file), 'r'): ++ for line in open(os.path.join(gmock_root, gmock_source_file), 'r'): + m = INCLUDE_GMOCK_FILE_REGEX.match(line) + if m: + # It's '#include "gmock/foo.h"'. We treat it as '#include +@@ -204,7 +207,7 @@ + def FuseGMockGTestAllCc(gmock_root, output_dir): + """Scans folder gmock_root to generate gmock-gtest-all.cc in output_dir.""" + +- output_file = file(os.path.join(output_dir, GMOCK_GTEST_ALL_CC_OUTPUT), 'w') ++ output_file = open(os.path.join(output_dir, GMOCK_GTEST_ALL_CC_OUTPUT), 'w') + # First, fuse gtest-all.cc into gmock-gtest-all.cc. + gtest.FuseGTestAllCcToFile(GetGTestRootDir(gmock_root), output_file) + # Next, append fused gmock-all.cc to gmock-gtest-all.cc. +@@ -232,7 +235,7 @@ + # fuse_gmock_files.py GMOCK_ROOT_DIR OUTPUT_DIR + FuseGMock(sys.argv[1], sys.argv[2]) + else: +- print __doc__ ++ print (__doc__) + sys.exit(1) + + diff --git a/mingw-w64-gtest/02-revert-changes-to-pkgconfig-files.patch b/mingw-w64-gtest/02-revert-changes-to-pkgconfig-files.patch new file mode 100644 index 0000000000..3f39325909 --- /dev/null +++ b/mingw-w64-gtest/02-revert-changes-to-pkgconfig-files.patch @@ -0,0 +1,69 @@ +From 5126ff48d9ac54828d1947d1423a5ef2a8efee3b Mon Sep 17 00:00:00 2001 +From: David Seifert +Date: Sat, 5 Oct 2019 15:58:45 +0200 +Subject: [PATCH] Revert "Use pcfiledir for prefix in pkgconfig file" + +The change makes implicit assumptions on the layout of the install +tree, which is going to break in many ways. + +The correct solution is to use the `PKG_CONFIG_SYSROOT_DIR` variable +to inject the cross-compiled sysroot into `-I` and `-L` paths. +--- + googlemock/cmake/gmock.pc.in | 5 ++--- + googlemock/cmake/gmock_main.pc.in | 5 ++--- + googletest/cmake/gtest.pc.in | 5 ++--- + googletest/cmake/gtest_main.pc.in | 5 ++--- + 4 files changed, 8 insertions(+), 12 deletions(-) + +diff --git a/googlemock/cmake/gmock.pc.in b/googlemock/cmake/gmock.pc.in +index 08e045474..2ef0fbca1 100644 +--- a/googlemock/cmake/gmock.pc.in ++++ b/googlemock/cmake/gmock.pc.in +@@ -1,6 +1,5 @@ +-prefix=${pcfiledir}/../.. +-libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@ +-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ ++libdir=@CMAKE_INSTALL_FULL_LIBDIR@ ++includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ + + Name: gmock + Description: GoogleMock (without main() function) +diff --git a/googlemock/cmake/gmock_main.pc.in b/googlemock/cmake/gmock_main.pc.in +index b22fe6148..04658fe2e 100644 +--- a/googlemock/cmake/gmock_main.pc.in ++++ b/googlemock/cmake/gmock_main.pc.in +@@ -1,6 +1,5 @@ +-prefix=${pcfiledir}/../.. +-libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@ +-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ ++libdir=@CMAKE_INSTALL_FULL_LIBDIR@ ++includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ + + Name: gmock_main + Description: GoogleMock (with main() function) +diff --git a/googletest/cmake/gtest.pc.in b/googletest/cmake/gtest.pc.in +index 9aae29e26..e7967ad56 100644 +--- a/googletest/cmake/gtest.pc.in ++++ b/googletest/cmake/gtest.pc.in +@@ -1,6 +1,5 @@ +-prefix=${pcfiledir}/../.. +-libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@ +-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ ++libdir=@CMAKE_INSTALL_FULL_LIBDIR@ ++includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ + + Name: gtest + Description: GoogleTest (without main() function) +diff --git a/googletest/cmake/gtest_main.pc.in b/googletest/cmake/gtest_main.pc.in +index 915f2973a..fe25d9c73 100644 +--- a/googletest/cmake/gtest_main.pc.in ++++ b/googletest/cmake/gtest_main.pc.in +@@ -1,6 +1,5 @@ +-prefix=${pcfiledir}/../.. +-libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@ +-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ ++libdir=@CMAKE_INSTALL_FULL_LIBDIR@ ++includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ + + Name: gtest_main + Description: GoogleTest (with main() function) diff --git a/mingw-w64-gtest/03-fix-pkgconfig-files.patch b/mingw-w64-gtest/03-fix-pkgconfig-files.patch new file mode 100644 index 0000000000..dcd3b13d15 --- /dev/null +++ b/mingw-w64-gtest/03-fix-pkgconfig-files.patch @@ -0,0 +1,64 @@ +From 5126ff48d9ac54828d1947d1423a5ef2a8efee3b Mon Sep 17 00:00:00 2001 +From: Alexey Pavlov +Date: Sat, 5 Oct 2019 15:58:45 +0200 +Subject: [PATCH] Fix install prefix in pkgconfig files + +--- + googlemock/cmake/gmock.pc.in | 5 +++-- + googlemock/cmake/gmock_main.pc.in | 5 +++-- + googletest/cmake/gtest.pc.in | 5 +++-- + googletest/cmake/gtest_main.pc.in | 5 +++-- + 4 files changed, 12 insertions(+), 8 deletions(-) + +diff --git a/googlemock/cmake/gmock.pc.in b/googlemock/cmake/gmock.pc.in +index 08e045474..2ef0fbca1 100644 +--- a/googlemock/cmake/gmock.pc.in ++++ b/googlemock/cmake/gmock.pc.in +@@ -1,5 +1,6 @@ +-libdir=@CMAKE_INSTALL_FULL_LIBDIR@ +-includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ ++prefix=@CMAKE_INSTALL_PREFIX@ ++libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@ ++includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ + + Name: gmock + Description: GoogleMock (without main() function) +diff --git a/googlemock/cmake/gmock_main.pc.in b/googlemock/cmake/gmock_main.pc.in +index b22fe6148..04658fe2e 100644 +--- a/googlemock/cmake/gmock_main.pc.in ++++ b/googlemock/cmake/gmock_main.pc.in +@@ -1,5 +1,6 @@ +-libdir=@CMAKE_INSTALL_FULL_LIBDIR@ +-includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ ++prefix=@CMAKE_INSTALL_PREFIX@ ++libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@ ++includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ + + Name: gmock_main + Description: GoogleMock (with main() function) +diff --git a/googletest/cmake/gtest.pc.in b/googletest/cmake/gtest.pc.in +index 9aae29e26..e7967ad56 100644 +--- a/googletest/cmake/gtest.pc.in ++++ b/googletest/cmake/gtest.pc.in +@@ -1,5 +1,6 @@ +-libdir=@CMAKE_INSTALL_FULL_LIBDIR@ +-includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ ++prefix=@CMAKE_INSTALL_PREFIX@ ++libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@ ++includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ + + Name: gtest + Description: GoogleTest (without main() function) +diff --git a/googletest/cmake/gtest_main.pc.in b/googletest/cmake/gtest_main.pc.in +index 915f2973a..fe25d9c73 100644 +--- a/googletest/cmake/gtest_main.pc.in ++++ b/googletest/cmake/gtest_main.pc.in +@@ -1,5 +1,6 @@ +-libdir=@CMAKE_INSTALL_FULL_LIBDIR@ +-includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ ++prefix=@CMAKE_INSTALL_PREFIX@ ++libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@ ++includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ + + Name: gtest_main + Description: GoogleTest (with main() function) diff --git a/mingw-w64-gtest/PKGBUILD b/mingw-w64-gtest/PKGBUILD index 8989b25f7a..0b6627d04f 100644 --- a/mingw-w64-gtest/PKGBUILD +++ b/mingw-w64-gtest/PKGBUILD @@ -1,62 +1,70 @@ # Maintainer: Yusuke Sasaki -_realname=gtest +_realname=googletest pkgbase="mingw-w64-${_realname}" -pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}") -pkgver=1.8.1 -pkgrel=2 -pkgdesc="Google Test (mingw-w64)" +pkgname=("${MINGW_PACKAGE_PREFIX}-gtest") +pkgver=1.10.0 +pkgrel=1 +pkgdesc="Googletest (mingw-w64)" arch=('any') url="https://github.com/google/googletest" license=('custom:BSD3') -makedepends=("${MINGW_PACKAGE_PREFIX}-python2" + depends=("${MINGW_PACKAGE_PREFIX}-python" + "${MINGW_PACKAGE_PREFIX}-gcc-libs") +makedepends=("${MINGW_PACKAGE_PREFIX}-gcc" "${MINGW_PACKAGE_PREFIX}-cmake") -depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs") -source=("${_realname}-${pkgver}.tar.gz"::"https://github.com/google/googletest/archive/release-${pkgver}.tar.gz") -sha256sums=('9bf1fe5182a604b4135edc1a425ae356c9ad15e9b23f9f12a02e80184c3a249c') +source=("${_realname}-${pkgver}.tar.gz"::"https://github.com/google/googletest/archive/release-${pkgver}.tar.gz" + 01-python3-fixes.patch + 02-revert-changes-to-pkgconfig-files.patch + 03-fix-pkgconfig-files.patch) +sha256sums=('9dc9157a9a1551ec7a7e43daea9a694a0bb5fb8bec81235d8a1e6ef64c716dcb' + '4da51c251de5f57067d2492860b17b5a11f6ed60049a0be49421657e1228e642' + 'a1efd397bddaa9e584d1133a3b1fc7cef444c8e41451b5985816f8a0960c7f53' + '7112f4bebfa4bd6658c5c886242d0dff820d00ff9204edb667ff64618107f84a') + +prepare() { + cd googletest-release-${pkgver} + patch -p1 -i ${srcdir}/01-python3-fixes.patch + patch -p1 -i ${srcdir}/02-revert-changes-to-pkgconfig-files.patch + patch -p1 -i ${srcdir}/03-fix-pkgconfig-files.patch +} build() { - cd "${srcdir}/googletest-release-${pkgver}" + if check_option "debug" "n"; then + extra_config+=("-DCMAKE_BUILD_TYPE=Release") + else + extra_config+=("-DCMAKE_BUILD_TYPE=Debug") + fi - rm -rf build-${CARCH} - rm -rf fused-gtest-src - rm -rf fused-gmock-src - mkdir build-${CARCH} && cd build-${CARCH} + [[ -d ${srcdir}/build-${MINGW_CHOST} ]] && rm -rf ${srcdir}/build-${MINGW_CHOST} + mkdir -p ${srcdir}/build-${MINGW_CHOST} && cd ${srcdir}/build-${MINGW_CHOST} + MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX" \ + ${MINGW_PREFIX}/bin/cmake.exe \ + -G"MSYS Makefiles" \ + -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \ + ${extra_config} \ + -DBUILD_SHARED_LIBS=ON \ + -DCMAKE_SKIP_RPATH=ON \ + ../googletest-release-${pkgver} - cmake -G "Unix Makefiles" -DBUILD_SHARED_LIBS=ON -DCMAKE_SKIP_RPATH=ON .. make - - ../googletest/scripts/fuse_gtest_files.py ../googletest ../fused-gtest-src - ../googlemock/scripts/fuse_gmock_files.py ../googlemock ../fused-gmock-src + ${MINGW_PREFIX}/bin/python ../googletest-release-${pkgver}/googlemock/scripts/fuse_gmock_files.py ../googletest-release-${pkgver}/googlemock fused-gmock-src + ${MINGW_PREFIX}/bin/python ../googletest-release-${pkgver}/googletest/scripts/fuse_gtest_files.py ../googletest-release-${pkgver}/googletest fused-gtest-src } package() { - cd "${srcdir}/googletest-release-${pkgver}" + cd "${srcdir}/build-${MINGW_CHOST}" + make install DESTDIR="${pkgdir}" - mkdir -pm 0755 "$pkgdir"/${MINGW_PREFIX}/{bin,lib/pkgconfig,include/gtest/internal/custom,include/gmock/internal/custom,share/licenses/${_realname},src/gtest/src,src/gmock/src,src/gtest/cmake} - install -m 0644 build-${CARCH}/googlemock/gtest/libgtest{,_main}.dll "$pkgdir"/${MINGW_PREFIX}/bin - install -m 0644 build-${CARCH}/googlemock/gtest/libgtest{,_main}.dll.a "$pkgdir"/${MINGW_PREFIX}/lib - install -m 0644 build-${CARCH}/googlemock/libgmock{,_main}.dll "$pkgdir"/${MINGW_PREFIX}/bin - install -m 0644 build-${CARCH}/googlemock/libgmock{,_main}.dll.a "$pkgdir"/${MINGW_PREFIX}/lib - install -m 0644 googletest/include/gtest/*.h "$pkgdir"/${MINGW_PREFIX}/include/gtest - install -m 0644 googletest/include/gtest/internal/*.h "$pkgdir"/${MINGW_PREFIX}/include/gtest/internal/ - install -m 0644 googletest/include/gtest/internal/custom/*.h "$pkgdir"/${MINGW_PREFIX}/include/gtest/internal/custom/ - install -m 0644 googlemock/include/gmock/*.h "$pkgdir"/${MINGW_PREFIX}/include/gmock - install -m 0644 googlemock/include/gmock/internal/*.h "$pkgdir"/${MINGW_PREFIX}/include/gmock/internal/ - install -m 0644 googlemock/include/gmock/internal/custom/*.h "$pkgdir"/${MINGW_PREFIX}/include/gmock/internal/custom/ - install -m 0644 googletest/LICENSE "$pkgdir"/${MINGW_PREFIX}/share/licenses/${_realname}/ - install -m 0644 fused-gtest-src/gtest/* "$pkgdir"/${MINGW_PREFIX}/src/gtest/src/ - install -m 0644 fused-gmock-src/gmock/* "$pkgdir"/${MINGW_PREFIX}/src/gmock/src/ - install -m 0644 fused-gmock-src/*.cc "$pkgdir"/${MINGW_PREFIX}/src/gmock/src/ - install -m 0644 CMakeLists.txt "$pkgdir"/${MINGW_PREFIX}/src/gtest/ - install -m 0644 googletest/cmake/* "$pkgdir"/${MINGW_PREFIX}/src/gtest/cmake/ + mkdir -p "${pkgdir}"/${MINGW_PREFIX}/src/{gmock,gtest}/{cmake,src} + install -m 0644 fused-gtest-src/gtest/* "${pkgdir}"${MINGW_PREFIX}/src/gtest/src/ + install -m 0644 fused-gmock-src/gmock/* "${pkgdir}"${MINGW_PREFIX}/src/gmock/src/ + install -m 0644 fused-gmock-src/*.cc "${pkgdir}"${MINGW_PREFIX}/src/gmock/src/ + install -m 0644 ${srcdir}/googletest-release-${pkgver}/googletest/cmake/* "${pkgdir}"${MINGW_PREFIX}/src/gtest/cmake/ - # install pkg-config files - install -m 0644 build-${CARCH}/googlemock/gtest/generated/*pc ${pkgdir}${MINGW_PREFIX}/lib/pkgconfig/ - for _ff in ${pkgdir}${MINGW_PREFIX}/lib/pkgconfig/*.pc; do - sed -e "/libdir=/c libdir=${MINGW_PREFIX}/lib" \ - -e "/includedir=/c includedir=${MINGW_PREFIX}/include" \ - -i ${_ff} - done + install -Dm 644 ${srcdir}/googletest-release-${pkgver}/googlemock/scripts/generator/{*.py,LICENSE,README*} -t "${pkgdir}${MINGW_PREFIX}/share/gmock/generator" + install -Dm 644 ${srcdir}/googletest-release-${pkgver}/googlemock/scripts/generator/cpp/* -t "${pkgdir}${MINGW_PREFIX}/share/gmock/generator/cpp" + + install -Dm 0644 ${srcdir}/googletest-release-${pkgver}/googletest/LICENSE "${pkgdir}"${MINGW_PREFIX}/share/licenses/gtest/LICENSE + install -Dm 0644 ${srcdir}/googletest-release-${pkgver}/googlemock/LICENSE "${pkgdir}"${MINGW_PREFIX}/share/licenses/gmock/LICENSE } -