blob: 023b6b1a5b184e050bdcedba66b9ba57d200a0fd [file] [log] [blame]
# Maintainer: Jon Turney <jon.turney@dronecode.org.uk>
# Contributor: Renato Silva <br.renatosilva@gmail.com>
# Contributor: Alexey Pavlov <alexpux@gmail.com>
_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' 'clang64')
depends=(${MINGW_PACKAGE_PREFIX}-gcc-libs)
makedepends=(${MINGW_PACKAGE_PREFIX}-curl rsync git gyp)
_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 <breakpad/somepath/someheader>"
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 <<EOF
CREATE libbreakpad_client.a
ADDLIB ${_windir}/${_realname}.build.${CARCH}/src/out/Debug/obj.target/client/windows/crash_generation/libcrash_generation_client.a
ADDLIB ${_windir}/${_realname}.build.${CARCH}/src/out/Debug/obj.target/client/windows/crash_generation/libcrash_generation_server.a
ADDLIB ${_windir}/${_realname}.build.${CARCH}/src/out/Debug/obj.target/client/windows/handler/libexception_handler.a
ADDLIB ${_windir}/${_realname}.build.${CARCH}/src/out/Debug/obj.target/client/windows/libcommon.a
ADDLIB ${_windir}/${_realname}.build.${CARCH}/src/out/Debug/obj.target/client/windows/sender/libcrash_report_sender.a
SAVE
END
EOF
# Install the pkgconfig file
cp -v "${srcdir}/${_realname}.build.${CARCH}/breakpad-client.pc" pkgconfig
# License
cd "${pkgdir}${MINGW_PREFIX}/share"
mkdir -p licenses/${_realname}
mv doc/${_realname}-0.1 doc/${_realname}
mv -v doc/${_realname}/LICENSE licenses/${_realname}/LICENSE
# Install crash_generation_app sample source and instructions
mkdir -p "${pkgdir}${MINGW_PREFIX}/share/doc/${_realname}/sample"
cd "${pkgdir}${MINGW_PREFIX}/share/doc/${_realname}/sample"
cp -v ${srcdir}/README.sample .
cp -v ${srcdir}/Makefile .
cp -v ${srcdir}/${_realname}.build.${CARCH}/src/client/windows/tests/crash_generation_app/abstract_class.cc .
cp -v ${srcdir}/${_realname}.build.${CARCH}/src/client/windows/tests/crash_generation_app/abstract_class.h .
cp -v ${srcdir}/${_realname}.build.${CARCH}/src/client/windows/tests/crash_generation_app/crash_generation_app.cc .
cp -v ${srcdir}/${_realname}.build.${CARCH}/src/client/windows/tests/crash_generation_app/crash_generation_app.h .
cp -v ${srcdir}/${_realname}.build.${CARCH}/src/client/windows/tests/crash_generation_app/crash_generation_app.ico .
cp -v ${srcdir}/${_realname}.build.${CARCH}/src/client/windows/tests/crash_generation_app/resource.h .
cp -v ${srcdir}/${_realname}.build.${CARCH}/src/client/windows/tests/crash_generation_app/resource.rc .
cp -v ${srcdir}/${_realname}.build.${CARCH}/src/client/windows/tests/crash_generation_app/small.ico .
# Rewrite includes in sample for the rewritten installed headers
sed -i -e's#client/windows/tests/crash_generation_app/##' ${pkgdir}${MINGW_PREFIX}/share/doc/${_realname}/sample/*
sed -i -e's#client/windows/#breakpad/client/windows/#' ${pkgdir}${MINGW_PREFIX}/share/doc/${_realname}/sample/*
}
sha256sums=('SKIP'
'17ba761aed181a48304722f5748bf89c8a364a6c5ac08c9fdbf30ffbb6538990'
'a54fa3045079768a36028d944b9d41e33aa9ec41a121835cdd34970699e28908'
'5c899b5f14a4ea46923cb0990977b6cc96403dfe9d94c98a6b96e438b40c44ac'
'1579da7c8ebeab27b9720a059f816dccd1fb93dfa9abf945a9ea8c67babb2e2e'
'dbd128ad512044b85ad51b4c5aa965c70ae552bd5f385538d05a6555af8e488a'
'1273991531b15799c685fe36b0fda29de7c1db83928eff54755877683d0922f7'
'b35fdecbde622b80e125441b2c84169b38b7bb59616ed02a0153c66764048d94'
'3bd24a6e882575d396f86cc1646428614266cc2076a3c6805615ec495d33b308'
'b496568219244d3e578dfbb18b307ff1d6d51555043a2059cd82530f6c6584b0'
'ca97e04f13d606f4195a4c75cf064179baff0f933b88f35f482745f6fa1c7663'
'1fb7a7817b37fa65bdc0f3504553f00ecc92033f67ae8038723ea624adf83609'
'78c5f788f3d071878f13f46efacad5d0a14ec751ddb4608fc596db7b50c96568'
'252eee0e97a9e24559823b4c2a10ec8485d3dab209bb46b1f6708822fc915024'
'5202e5156a6bef3f5df2bc6ef20d0399e791c1fe892725fe80e0a1a54bf90f72'
'7b8f7a557d67fb20cc887c8a54ba672d5dee604ae03c2468b8a9f1a2b8858fca'
'53d7068209a88a174768a5df4e7d3e98991e29ad780f072417b8d07f64423598'
'e9e29a83e1cc668d6cb6fb72334a4e5d616859eab7f248df636338070440f1b5'
'45c55049ab28f2a432c2753277f3081e8f940c4b757267ed582ec6be083692ff'
'0958def790a86057bf8e8bb18040e42f11ee412662aa09fb960b24112569a062'
'b1a4025d888bcd1d752b3b6c93d6e6ae353eae050197b1ae2c54f9b90bfb1292'
'25abf4b40df33284a6fbafd80f824085316f709e027217028f79078c5ce67fbb')