Skip to content

Commit d0ce968

Browse files
ericriffmadebr
andauthored
(#5639) Add breakpad recipe
* Add breakpad recipe * Build test_package with CXX 11 * Use 2 spaces to indent Co-authored-by: Anonymous Maarten <madebr@users.noreply.github.com> * Use double quotes and specify 'provides' Co-authored-by: Anonymous Maarten <madebr@users.noreply.github.com> * breakpad: add components * Raise if os != Linux * Cleanup recipe since it is Linux only * Move source patching to actual patch files Co-authored-by: Anonymous Maarten <madebr@users.noreply.github.com> Co-authored-by: Anonymous Maarten <anonymous.maarten@gmail.com>
1 parent cd32561 commit d0ce968

8 files changed

+421
-0
lines changed

recipes/breakpad/all/conandata.yml

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
sources:
2+
"cci.20210521":
3+
url: "https://github.com/google/breakpad/archive/f7428bc.tar.gz"
4+
sha256: "55a688a49ffc476d94d92c3fd73f9264c974c25af8d6371c3901bd3451081e47"
5+
patches:
6+
"cci.20210521":
7+
- patch_file: "patches/0001-Use_conans_lss.patch"
8+
base_path: "source_subfolder"
9+
- patch_file: "patches/0002-Remove-hardcoded-fpic.patch"
10+
base_path: "source_subfolder"

recipes/breakpad/all/conanfile.py

+77
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
from conans import ConanFile, AutoToolsBuildEnvironment, tools
2+
from conans.errors import ConanInvalidConfiguration
3+
import os
4+
import textwrap
5+
6+
required_conan_version = ">=1.33.0"
7+
8+
class BreakpadConan(ConanFile):
9+
name = "breakpad"
10+
description = "A set of client and server components which implement a crash-reporting system"
11+
topics = ["crash", "report", "breakpad"]
12+
license = "BSD-3-Clause"
13+
url = "https://github.com/conan-io/conan-center-index"
14+
homepage = "https://chromium.googlesource.com/breakpad/breakpad/"
15+
settings = "os", "compiler", "build_type", "arch"
16+
provides = "breakpad"
17+
exports_sources = "patches/**"
18+
options = {
19+
"fPIC": [True, False]
20+
}
21+
default_options = {
22+
"fPIC": True
23+
}
24+
_env_build = None
25+
26+
@property
27+
def _source_subfolder(self):
28+
return "source_subfolder"
29+
30+
def validate(self):
31+
if self.settings.os != "Linux":
32+
raise ConanInvalidConfiguration("Breakpad can only be built on Linux. For other OSs check sentry-breakpad")
33+
34+
def requirements(self):
35+
self.requires("linux-syscall-support/cci.20200813")
36+
37+
def _configure_autotools(self):
38+
if not self._env_build:
39+
self._env_build = AutoToolsBuildEnvironment(self)
40+
self._env_build.configure(configure_dir=self._source_subfolder)
41+
return self._env_build
42+
43+
def source(self):
44+
tools.get(**self.conan_data["sources"][self.version], destination=self._source_subfolder, strip_root=True)
45+
46+
def build(self):
47+
for patch in self.conan_data.get("patches", {}).get(self.version, []):
48+
tools.patch(**patch)
49+
env_build = self._configure_autotools()
50+
env_build.make()
51+
52+
def package(self):
53+
self.copy("LICENSE", src=self._source_subfolder, dst="licenses")
54+
env_build = self._configure_autotools()
55+
env_build.install()
56+
tools.rmdir(os.path.join(self.package_folder, "share"))
57+
tools.rmdir(os.path.join(self.package_folder, "lib", "pkgconfig"))
58+
59+
def package_info( self ):
60+
self.cpp_info.components["libbreakpad"].libs = ["breakpad"]
61+
self.cpp_info.components["libbreakpad"].includedirs.append(os.path.join("include", "breakpad"))
62+
self.cpp_info.components["libbreakpad"].names["pkg_config"] = "breakpad"
63+
64+
self.cpp_info.components["client"].libs = ["breakpad_client"]
65+
self.cpp_info.components["client"].includedirs.append(os.path.join("include", "breakpad"))
66+
self.cpp_info.components["client"].names["pkg_config"] = "breakpad-client"
67+
68+
69+
self.cpp_info.components["libbreakpad"].system_libs.append("pthread")
70+
self.cpp_info.components["libbreakpad"].requires.append("linux-syscall-support::linux-syscall-support")
71+
72+
self.cpp_info.components["client"].system_libs.append("pthread")
73+
self.cpp_info.components["client"].requires.append("linux-syscall-support::linux-syscall-support")
74+
75+
bindir = os.path.join(self.package_folder, "bin")
76+
self.output.info("Appending PATH environment variable: {}".format(bindir))
77+
self.env_info.PATH.append(bindir)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,258 @@
1+
diff --color -ur Makefile.in Makefile.in
2+
--- Makefile.in 2021-05-21 15:56:41.000000000 -0300
3+
+++ Makefile.in 2021-05-27 18:57:23.986912433 -0300
4+
@@ -2082,7 +2082,7 @@
5+
HEADERS = $(includec_HEADERS) $(includecl_HEADERS) \
6+
$(includeclc_HEADERS) $(includecldwc_HEADERS) \
7+
$(includeclh_HEADERS) $(includeclm_HEADERS) \
8+
- $(includegbc_HEADERS) $(includelss_HEADERS) \
9+
+ $(includegbc_HEADERS) \
10+
$(includep_HEADERS)
11+
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
12+
# Read a list of newline-separated strings from the standard input,
13+
@@ -9718,7 +9718,7 @@
14+
install-includeclHEADERS install-includeclcHEADERS \
15+
install-includecldwcHEADERS install-includeclhHEADERS \
16+
install-includeclmHEADERS install-includegbcHEADERS \
17+
- install-includelssHEADERS install-includepHEADERS \
18+
+ iinstall-includepHEADERS \
19+
install-pkgconfigDATA
20+
21+
install-dvi: install-dvi-am
22+
@@ -10084,7 +10084,7 @@
23+
install-includeclHEADERS install-includeclcHEADERS \
24+
install-includecldwcHEADERS install-includeclhHEADERS \
25+
install-includeclmHEADERS install-includegbcHEADERS \
26+
- install-includelssHEADERS install-includepHEADERS install-info \
27+
+ iinstall-includepHEADERS install-info \
28+
install-info-am install-libLIBRARIES install-libexecPROGRAMS \
29+
install-man install-pdf install-pdf-am install-pkgconfigDATA \
30+
install-ps install-ps-am install-strip installcheck \
31+
diff --color -ur src/client/linux/crash_generation/crash_generation_client.cc src/client/linux/crash_generation/crash_generation_client.cc
32+
--- src/client/linux/crash_generation/crash_generation_client.cc 2021-05-21 15:56:41.000000000 -0300
33+
+++ src/client/linux/crash_generation/crash_generation_client.cc 2021-05-27 18:57:23.990912414 -0300
34+
@@ -37,7 +37,7 @@
35+
36+
#include "common/linux/eintr_wrapper.h"
37+
#include "common/linux/ignore_ret.h"
38+
-#include "third_party/lss/linux_syscall_support.h"
39+
+#include <linux_syscall_support.h>
40+
41+
namespace google_breakpad {
42+
43+
diff --color -ur src/client/linux/handler/exception_handler.cc src/client/linux/handler/exception_handler.cc
44+
--- src/client/linux/handler/exception_handler.cc 2021-05-21 15:56:41.000000000 -0300
45+
+++ src/client/linux/handler/exception_handler.cc 2021-05-27 18:57:23.990912414 -0300
46+
@@ -95,7 +95,7 @@
47+
#include "client/linux/minidump_writer/linux_dumper.h"
48+
#include "client/linux/minidump_writer/minidump_writer.h"
49+
#include "common/linux/eintr_wrapper.h"
50+
-#include "third_party/lss/linux_syscall_support.h"
51+
+#include <linux_syscall_support.h>
52+
53+
#if defined(__ANDROID__)
54+
#include "linux/sched.h"
55+
diff --color -ur src/client/linux/handler/exception_handler_unittest.cc src/client/linux/handler/exception_handler_unittest.cc
56+
--- src/client/linux/handler/exception_handler_unittest.cc 2021-05-21 15:56:41.000000000 -0300
57+
+++ src/client/linux/handler/exception_handler_unittest.cc 2021-05-27 18:57:23.990912414 -0300
58+
@@ -50,7 +50,7 @@
59+
#include "common/linux/linux_libc_support.h"
60+
#include "common/tests/auto_tempdir.h"
61+
#include "common/using_std_string.h"
62+
-#include "third_party/lss/linux_syscall_support.h"
63+
+#include <linux_syscall_support.h>
64+
#include "google_breakpad/processor/minidump.h"
65+
66+
using namespace google_breakpad;
67+
diff --color -ur src/client/linux/log/log.cc src/client/linux/log/log.cc
68+
--- src/client/linux/log/log.cc 2021-05-21 15:56:41.000000000 -0300
69+
+++ src/client/linux/log/log.cc 2021-05-27 18:57:23.990912414 -0300
70+
@@ -33,7 +33,7 @@
71+
#include <android/log.h>
72+
#include <dlfcn.h>
73+
#else
74+
-#include "third_party/lss/linux_syscall_support.h"
75+
+#include <linux_syscall_support.h>
76+
#endif
77+
78+
namespace logger {
79+
diff --color -ur src/client/linux/minidump_writer/cpu_set.h src/client/linux/minidump_writer/cpu_set.h
80+
--- src/client/linux/minidump_writer/cpu_set.h 2021-05-21 15:56:41.000000000 -0300
81+
+++ src/client/linux/minidump_writer/cpu_set.h 2021-05-27 18:57:23.990912414 -0300
82+
@@ -35,7 +35,7 @@
83+
#include <string.h>
84+
85+
#include "common/linux/linux_libc_support.h"
86+
-#include "third_party/lss/linux_syscall_support.h"
87+
+#include <linux_syscall_support.h>
88+
89+
namespace google_breakpad {
90+
91+
diff --color -ur src/client/linux/minidump_writer/directory_reader.h src/client/linux/minidump_writer/directory_reader.h
92+
--- src/client/linux/minidump_writer/directory_reader.h 2021-05-21 15:56:41.000000000 -0300
93+
+++ src/client/linux/minidump_writer/directory_reader.h 2021-05-27 18:57:23.990912414 -0300
94+
@@ -38,7 +38,7 @@
95+
#include <string.h>
96+
97+
#include "common/linux/linux_libc_support.h"
98+
-#include "third_party/lss/linux_syscall_support.h"
99+
+#include <linux_syscall_support.h>
100+
101+
namespace google_breakpad {
102+
103+
diff --color -ur src/client/linux/minidump_writer/line_reader.h src/client/linux/minidump_writer/line_reader.h
104+
--- src/client/linux/minidump_writer/line_reader.h 2021-05-21 15:56:41.000000000 -0300
105+
+++ src/client/linux/minidump_writer/line_reader.h 2021-05-27 18:57:23.990912414 -0300
106+
@@ -35,7 +35,7 @@
107+
#include <string.h>
108+
109+
#include "common/linux/linux_libc_support.h"
110+
-#include "third_party/lss/linux_syscall_support.h"
111+
+#include <linux_syscall_support.h>
112+
113+
namespace google_breakpad {
114+
115+
diff --color -ur src/client/linux/minidump_writer/linux_dumper.cc src/client/linux/minidump_writer/linux_dumper.cc
116+
--- src/client/linux/minidump_writer/linux_dumper.cc 2021-05-21 15:56:41.000000000 -0300
117+
+++ src/client/linux/minidump_writer/linux_dumper.cc 2021-05-27 18:57:23.990912414 -0300
118+
@@ -51,7 +51,7 @@
119+
#include "common/linux/memory_mapped_file.h"
120+
#include "common/linux/safe_readlink.h"
121+
#include "google_breakpad/common/minidump_exception_linux.h"
122+
-#include "third_party/lss/linux_syscall_support.h"
123+
+#include <linux_syscall_support.h>
124+
125+
#if defined(__ANDROID__)
126+
127+
diff --color -ur src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc
128+
--- src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc 2021-05-21 15:56:41.000000000 -0300
129+
+++ src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc 2021-05-27 18:57:23.990912414 -0300
130+
@@ -39,7 +39,7 @@
131+
#include <unistd.h>
132+
133+
#include "common/scoped_ptr.h"
134+
-#include "third_party/lss/linux_syscall_support.h"
135+
+#include <linux_syscall_support.h>
136+
137+
#if defined(__ARM_EABI__)
138+
#define TID_PTR_REGISTER "r3"
139+
diff --color -ur src/client/linux/minidump_writer/linux_ptrace_dumper.cc src/client/linux/minidump_writer/linux_ptrace_dumper.cc
140+
--- src/client/linux/minidump_writer/linux_ptrace_dumper.cc 2021-05-21 15:56:41.000000000 -0300
141+
+++ src/client/linux/minidump_writer/linux_ptrace_dumper.cc 2021-05-27 18:57:23.990912414 -0300
142+
@@ -57,7 +57,7 @@
143+
#include "client/linux/minidump_writer/directory_reader.h"
144+
#include "client/linux/minidump_writer/line_reader.h"
145+
#include "common/linux/linux_libc_support.h"
146+
-#include "third_party/lss/linux_syscall_support.h"
147+
+#include <linux_syscall_support.h>
148+
149+
// Suspends a thread by attaching to it.
150+
static bool SuspendThread(pid_t pid) {
151+
diff --color -ur src/client/linux/minidump_writer/minidump_writer.cc src/client/linux/minidump_writer/minidump_writer.cc
152+
--- src/client/linux/minidump_writer/minidump_writer.cc 2021-05-21 15:56:41.000000000 -0300
153+
+++ src/client/linux/minidump_writer/minidump_writer.cc 2021-05-27 18:57:23.990912414 -0300
154+
@@ -77,7 +77,7 @@
155+
#include "common/linux/linux_libc_support.h"
156+
#include "common/minidump_type_helper.h"
157+
#include "google_breakpad/common/minidump_format.h"
158+
-#include "third_party/lss/linux_syscall_support.h"
159+
+#include <linux_syscall_support.h>
160+
161+
namespace {
162+
163+
diff --color -ur src/client/linux/minidump_writer/proc_cpuinfo_reader.h src/client/linux/minidump_writer/proc_cpuinfo_reader.h
164+
--- src/client/linux/minidump_writer/proc_cpuinfo_reader.h 2021-05-21 15:56:41.000000000 -0300
165+
+++ src/client/linux/minidump_writer/proc_cpuinfo_reader.h 2021-05-27 18:57:23.990912414 -0300
166+
@@ -36,7 +36,7 @@
167+
168+
#include "client/linux/minidump_writer/line_reader.h"
169+
#include "common/linux/linux_libc_support.h"
170+
-#include "third_party/lss/linux_syscall_support.h"
171+
+#include <linux_syscall_support.h>
172+
173+
namespace google_breakpad {
174+
175+
diff --color -ur src/client/minidump_file_writer.cc src/client/minidump_file_writer.cc
176+
--- src/client/minidump_file_writer.cc 2021-05-21 15:56:41.000000000 -0300
177+
+++ src/client/minidump_file_writer.cc 2021-05-27 18:57:23.990912414 -0300
178+
@@ -41,7 +41,7 @@
179+
#include "common/linux/linux_libc_support.h"
180+
#include "common/string_conversion.h"
181+
#if defined(__linux__) && __linux__
182+
-#include "third_party/lss/linux_syscall_support.h"
183+
+#include <linux_syscall_support.h>
184+
#endif
185+
186+
#if defined(__ANDROID__)
187+
diff --color -ur src/common/linux/file_id.cc src/common/linux/file_id.cc
188+
--- src/common/linux/file_id.cc 2021-05-21 15:56:41.000000000 -0300
189+
+++ src/common/linux/file_id.cc 2021-05-27 18:57:23.990912414 -0300
190+
@@ -46,7 +46,7 @@
191+
#include "common/linux/linux_libc_support.h"
192+
#include "common/linux/memory_mapped_file.h"
193+
#include "common/using_std_string.h"
194+
-#include "third_party/lss/linux_syscall_support.h"
195+
+#include <linux_syscall_support.h>
196+
197+
namespace google_breakpad {
198+
199+
diff --color -ur src/common/linux/memory_mapped_file.cc src/common/linux/memory_mapped_file.cc
200+
--- src/common/linux/memory_mapped_file.cc 2021-05-21 15:56:41.000000000 -0300
201+
+++ src/common/linux/memory_mapped_file.cc 2021-05-27 18:57:23.990912414 -0300
202+
@@ -40,7 +40,7 @@
203+
#include <unistd.h>
204+
205+
#include "common/memory_range.h"
206+
-#include "third_party/lss/linux_syscall_support.h"
207+
+#include <linux_syscall_support.h>
208+
209+
namespace google_breakpad {
210+
211+
diff --color -ur src/common/linux/safe_readlink.cc src/common/linux/safe_readlink.cc
212+
--- src/common/linux/safe_readlink.cc 2021-05-21 15:56:41.000000000 -0300
213+
+++ src/common/linux/safe_readlink.cc 2021-05-27 18:57:23.990912414 -0300
214+
@@ -32,7 +32,7 @@
215+
216+
#include <stddef.h>
217+
218+
-#include "third_party/lss/linux_syscall_support.h"
219+
+#include <linux_syscall_support.h>
220+
221+
namespace google_breakpad {
222+
223+
diff --color -ur src/common/memory_allocator.h src/common/memory_allocator.h
224+
--- src/common/memory_allocator.h 2021-05-21 15:56:41.000000000 -0300
225+
+++ src/common/memory_allocator.h 2021-05-27 18:57:23.990912414 -0300
226+
@@ -47,7 +47,7 @@
227+
#define sys_munmap munmap
228+
#define MAP_ANONYMOUS MAP_ANON
229+
#else
230+
-#include "third_party/lss/linux_syscall_support.h"
231+
+#include <linux_syscall_support.h>
232+
#endif
233+
234+
namespace google_breakpad {
235+
diff --color -ur src/processor/testdata/linux_test_app.cc src/processor/testdata/linux_test_app.cc
236+
--- src/processor/testdata/linux_test_app.cc 2021-05-21 15:56:41.000000000 -0300
237+
+++ src/processor/testdata/linux_test_app.cc 2021-05-27 18:57:23.990912414 -0300
238+
@@ -46,7 +46,7 @@
239+
#include <string>
240+
241+
#include "client/linux/handler/exception_handler.h"
242+
-#include "third_party/lss/linux_syscall_support.h"
243+
+#include <linux_syscall_support.h>
244+
245+
namespace {
246+
247+
diff --color -ur src/tools/linux/md2core/minidump-2-core.cc src/tools/linux/md2core/minidump-2-core.cc
248+
--- src/tools/linux/md2core/minidump-2-core.cc 2021-05-21 15:56:41.000000000 -0300
249+
+++ src/tools/linux/md2core/minidump-2-core.cc 2021-05-27 18:57:23.990912414 -0300
250+
@@ -52,7 +52,7 @@
251+
#include "common/using_std_string.h"
252+
#include "google_breakpad/common/breakpad_types.h"
253+
#include "google_breakpad/common/minidump_format.h"
254+
-#include "third_party/lss/linux_syscall_support.h"
255+
+#include <linux_syscall_support.h>
256+
#include "tools/linux/md2core/minidump_memory_range.h"
257+
258+
#if ULONG_MAX == 0xffffffffffffffff
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
diff --color -ur a/Makefile.in b/Makefile.in
2+
--- Makefile.in 2021-05-21 15:56:41.000000000 -0300
3+
+++ Makefile.in 2021-05-27 19:01:06.857704652 -0300
4+
@@ -130,8 +130,7 @@
5+
@ANDROID_HOST_TRUE@ -I$(top_srcdir)/src/common/android/testing/include
6+
7+
# Build as PIC on Linux, for linux_client_unittest_shlib
8+
-@LINUX_HOST_TRUE@am__append_2 = -fPIC
9+
-@LINUX_HOST_TRUE@am__append_3 = -fPIC
10+
+
11+
libexec_PROGRAMS = $(am__EXEEXT_10)
12+
bin_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) $(am__EXEEXT_4)
13+
check_PROGRAMS = $(am__EXEEXT_5) $(am__EXEEXT_6) $(am__EXEEXT_7) \
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
cmake_minimum_required(VERSION 3.1)
2+
project(test_package CXX)
3+
4+
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
5+
conan_basic_setup()
6+
7+
add_executable(${PROJECT_NAME} test_package.cpp)
8+
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 11)
9+
target_link_libraries(${PROJECT_NAME} ${CONAN_LIBS})
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
from conans import ConanFile, CMake, tools
2+
import os
3+
4+
class BreakpadTestConan(ConanFile):
5+
settings = "os", "compiler", "build_type", "arch"
6+
generators = "cmake"
7+
8+
def build(self):
9+
cmake = CMake(self)
10+
cmake.configure()
11+
cmake.build()
12+
13+
def test(self):
14+
if not tools.cross_building(self.settings):
15+
bin_path = os.path.join("bin", "test_package")
16+
self.run(bin_path, run_environment=True)

0 commit comments

Comments
 (0)