# Maintainer: Jon Turney # Contributor: Renato Silva # Contributor: Alexey Pavlov _realname=breakpad pkgbase=mingw-w64-${_realname}-git pkgname=(${MINGW_PACKAGE_PREFIX}-${_realname}-git) provides=(${MINGW_PACKAGE_PREFIX}-${_realname}) conflicts=(${MINGW_PACKAGE_PREFIX}-${_realname}) replaces=(${MINGW_PACKAGE_PREFIX}-${_realname}-svn) pkgver=r1680.70914b2d pkgrel=2 url='https://code.google.com/p/google-breakpad' pkgdesc='An open-source multi-platform crash reporting system (mingw-w64)' license=('BSD') arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64') msys2_references=( 'aur: google-breakpad' 'cygwin: google-breakpad-devel' ) depends=(${MINGW_PACKAGE_PREFIX}-gcc-libs) makedepends=(${MINGW_PACKAGE_PREFIX}-curl rsync git gyp "${MINGW_PACKAGE_PREFIX}-autotools" "${MINGW_PACKAGE_PREFIX}-cc") _commit="70914b2d380d893364ad0110b8af18ba1ed5aaa3" source=(${_realname}.git::"git+https://chromium.googlesource.com/breakpad/breakpad#commit=${_commit}" 0002-Remove-local-copy-of-curl-headers.patch 0003-Link-minidump_upload-and-sym_upload-with-curl.patch 0004-Build-minidump_upload-and-sym_upload-for-all-targets.patch 0005-Add-support-for-DWARF-in-PECOFF-as-used-by-Cygwin-an.patch 0006-Fix-building-minidump-processor-for-MinGW.patch 0007-Build-PECOFF-DWARF-dump_syms-for-MinGW.patch 0008-Fix-building-client-library-and-upload-tools-for-Min.patch 0009-Fix-common.gypi-to-allow-gyp-to-generate-Makefiles-o.patch 0010-Teach-gyp-generated-Makefile-to-build-crash_generati.patch 0011-Default-debug_file-to-the-code_file-basename.patch 0012-Fix-Windows-client-unit-tests-with-gcc.patch 0013-Add-symsrv_convert.patch 0015-Use-a-default-debug-id-of-all-zeros-when-no-CV-recor.patch 0016-Use-__USE_MINGW_ANSI_STDIO-for-MinGW-build.patch 0017-Provide-a-working-strtok_r-for-MinGW.patch 0019-Fallback-to-synthesizing-a-debug-id-from-version-and.patch 0020-Fix-typo-in-the-name-of-the-info-entry-containing-up.patch 0021-Fix-a-missing-r-in-crash_generation_app.patch 0026-Disable-DwpReader-for-MinGW.patch Makefile README.sample) pkgver() { cd "${srcdir}/${_realname}.git" printf "r%s.%s" "$(git rev-list --count "${_commit}")" "$(git rev-parse --short "${_commit}")" } prepare() { msg2 "Creating patched-source directory" [[ -d "${srcdir}/${_realname}.patched" ]] && rm -rf "${srcdir}/${_realname}.patched" mkdir -p "${srcdir}/${_realname}.patched" cp -rT "${srcdir}/${_realname}.git" "${srcdir}/${_realname}.patched" # Apply patches cd "${srcdir}/${_realname}.patched" for patch in "${srcdir}"/*.patch; do msg2 "Applying ${patch} ..." patch -p1 -i "${patch}" done msg2 "Running autoreconf" autoreconf -sif } build() { msg2 "Synchronizing build directory" rsync --recursive --times --links "${srcdir}/${_realname}.patched"/* "${srcdir}/${_realname}.build.${CARCH}" cd "${srcdir}/${_realname}.build.${CARCH}" ./configure \ --prefix=${MINGW_PREFIX} \ --build=${MINGW_CHOST} \ --host=${MINGW_CHOST} # use the autotooled makefile to build the minidump processor library and tools make CXXFLAGS="-DUNICODE -D_UNICODE -g" AR=${MINGW_PREFIX}/bin/ar RC=${MINGW_PREFIX}/bin/windres # use gyp to generate a Makefile to build the Windows client library cd "${srcdir}/${_realname}.build.${CARCH}/src/" gyp --no-circular-check --depth=. -f make client/windows/breakpad_client.gyp make CXXFLAGS="-DUNICODE -D_UNICODE -D_POSIX_C_SOURCE -g" AR=${MINGW_PREFIX}/bin/ar RC=${MINGW_PREFIX}/bin/windres out/Debug/crash_generation_app out/Debug/obj.target/client/windows/sender/libcrash_report_sender.a } package() { cd "${srcdir}/${_realname}.build.${CARCH}" make CXXFLAGS="-DUNICODE -D_UNICODE -g" AR=${MINGW_PREFIX}/bin/ar RC=${MINGW_PREFIX}/bin/windres DESTDIR="${pkgdir}" install # Install headers mkdir -p "${pkgdir}${MINGW_PREFIX}/include/breakpad" cd "${pkgdir}${MINGW_PREFIX}/include/breakpad" mkdir -p "${pkgdir}${MINGW_PREFIX}/include/breakpad/common/" cp -v ${srcdir}/${_realname}.build.${CARCH}/src/google_breakpad/common/* common/ cp -v ${srcdir}/${_realname}.build.${CARCH}/src/common/scoped_ptr.h common/ mkdir -p "${pkgdir}${MINGW_PREFIX}/include/breakpad/common/windows" cp -v ${srcdir}/${_realname}.build.${CARCH}/src/common/windows/string_utils-inl.h common/windows/ mkdir -p "${pkgdir}${MINGW_PREFIX}/include/breakpad/client/windows/crash_generation" cp -v ${srcdir}/${_realname}.build.${CARCH}/src/client/windows/crash_generation/client_info.h client/windows/crash_generation/ cp -v ${srcdir}/${_realname}.build.${CARCH}/src/client/windows/crash_generation/crash_generation_client.h client/windows/crash_generation/ cp -v ${srcdir}/${_realname}.build.${CARCH}/src/client/windows/crash_generation/crash_generation_server.h client/windows/crash_generation/ cp -v ${srcdir}/${_realname}.build.${CARCH}/src/client/windows/crash_generation/minidump_generator.h client/windows/crash_generation/ mkdir -p "${pkgdir}${MINGW_PREFIX}/include/breakpad/client/windows/common" cp -v ${srcdir}/${_realname}.build.${CARCH}/src/client/windows/common/ipc_protocol.h client/windows/common/ mkdir -p "${pkgdir}${MINGW_PREFIX}/include/breakpad/client/windows/handler" cp -v ${srcdir}/${_realname}.build.${CARCH}/src/client/windows/handler/exception_handler.h client/windows/handler/ mkdir -p "${pkgdir}${MINGW_PREFIX}/include/breakpad/client/windows/sender" cp -v ${srcdir}/${_realname}.build.${CARCH}/src/client/windows/sender/crash_report_sender.h client/windows/sender/ # Headers aren't really designed to be installed, so we need to do some # rewriting to make them usefully included using "include " find ${pkgdir} -name *.h -exec sed -i -e's#client/windows/#breakpad/client/windows/#' {} \; find ${pkgdir} -name *.h -exec sed -i -e's#common/scoped_ptr#breakpad/common/scoped_ptr#' {} \; find ${pkgdir} -name *.h -exec sed -i -e's#common/windows/#breakpad/common/windows/#' {} \; find ${pkgdir} -name *.h -exec sed -i -e's#google_breakpad/common/#breakpad/common/#' {} \; # Install a single client library cd "${pkgdir}${MINGW_PREFIX}/lib" local _windir=$(cygpath -wm ${srcdir}) ${MINGW_PREFIX}/bin/ar -M <