diff --git a/.bazeliskrc b/.bazeliskrc new file mode 100644 index 0000000..c327091 --- /dev/null +++ b/.bazeliskrc @@ -0,0 +1 @@ +USE_BAZEL_VERSION=7.2.1 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 23805d8..138250c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -28,6 +28,9 @@ jobs: runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 + - name: dependencies + run: | + sudo apt install -y libtool libncurses5 - name: bazel build opt run: | bazel build //... -c opt diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 13aeef8..b62e877 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -152,6 +152,9 @@ jobs: runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 + - name: dependencies + run: | + sudo apt install -y libtool libncurses5 - name: test dbg run: | bazel test //... -c dbg diff --git a/BUILD.bazel b/BUILD.bazel index a71d287..a1ddc29 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -7,7 +7,8 @@ cc_library( local_defines = [ "CPPTRACE_GET_SYMBOLS_WITH_LIBDWARF", "CPPTRACE_DEMANGLE_WITH_CXXABI", - "CPPTRACE_UNWIND_WITH_UNWIND", + #"CPPTRACE_UNWIND_WITH_UNWIND", + "CPPTRACE_UNWIND_WITH_LIBUNWIND" ], hdrs = glob([ "include/cpptrace/*.hpp", @@ -16,6 +17,7 @@ cc_library( includes = ["include"], deps = [ "@libdwarf//:libdwarf", + "@libunwind//:libunwind" ], copts = [ "-Wall", diff --git a/MODULE.bazel b/MODULE.bazel index 2520f26..d2a952c 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -7,10 +7,11 @@ bazel_dep(name = "bazel_skylib", version = "1.7.1") bazel_dep(name = "rules_foreign_cc", version = "0.11.1") bazel_dep(name = "zstd", version = "1.5.6") bazel_dep(name = "zlib", version = "1.3.1") +bazel_dep(name = "xz", version = "5.4.5.bcr.2") bazel_dep(name = "toolchains_llvm", version = "1.1.2") # Configure and register the toolchain. -llvm = use_extension("@toolchains_llvm//toolchain/extensions:llvm.bzl", "llvm") +llvm = use_extension("@toolchains_llvm//toolchain/extensions:llvm.bzl", "llvm", dev_dependency = True) llvm.toolchain( llvm_versions = { @@ -29,7 +30,7 @@ llvm.toolchain( use_repo(llvm, "llvm_toolchain") -register_toolchains("@llvm_toolchain//:all") +register_toolchains("@llvm_toolchain//:all", dev_dependency = True) http_archive = use_repo_rule("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") @@ -60,3 +61,44 @@ cmake( strip_prefix = "libdwarf-code-0.10.1", url = "https://github.com/davea42/libdwarf-code/archive/refs/tags/v0.10.1.tar.gz", ) + + + +http_archive( + name = "libunwind", + build_file_content = + """ +package(default_visibility = ["//visibility:public"]) +load("@rules_foreign_cc//foreign_cc:defs.bzl", "configure_make") + +filegroup( + name = "sources", + srcs = glob(["**/*"]), +) +configure_make( + name = "libunwind", + args = ["-j12"], + autoreconf = True, + configure_in_place = True, + autoreconf_options = [ + "-i", + ], + lib_source = ":sources", + out_static_libs = [ + "libunwind.a", + "libunwind-coredump.a", + "libunwind-ptrace.a", + "libunwind-x86_64.a", + "libunwind-generic.a", + "libunwind-setjmp.a" + ], + deps = [ + "@xz//:lzma" + ] +) +""", + sha256 = "38833b7b1582db7d76485a62a213706c9252b3dab7380069fea5824e823d8e41", + strip_prefix = "libunwind-1.8.1", + url = "https://github.com/libunwind/libunwind/archive/refs/tags/v1.8.1.tar.gz", +) + diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 538c97e..0957599 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -43,8 +43,8 @@ "https://bcr.bazel.build/modules/rules_foreign_cc/0.11.1/MODULE.bazel": "beeb0dd8d488d3cff57fa12ab3378051a7299aa9de2476d61c1d46f664d6398d", "https://bcr.bazel.build/modules/rules_foreign_cc/0.11.1/source.json": "be2106be697115c10c03c6505a07bd4e259719c6608f08a61d600a560b8cf172", "https://bcr.bazel.build/modules/rules_java/4.0.0/MODULE.bazel": "5a78a7ae82cd1a33cef56dc578c7d2a46ed0dca12643ee45edbb8417899e6f74", - "https://bcr.bazel.build/modules/rules_java/7.6.1/MODULE.bazel": "2f14b7e8a1aa2f67ae92bc69d1ec0fa8d9f827c4e17ff5e5f02e91caa3b2d0fe", - "https://bcr.bazel.build/modules/rules_java/7.6.1/source.json": "8f3f3076554e1558e8e468b2232991c510ecbcbed9e6f8c06ac31c93bcf38362", + "https://bcr.bazel.build/modules/rules_java/7.6.5/MODULE.bazel": "481164be5e02e4cab6e77a36927683263be56b7e36fef918b458d7a8a1ebadb1", + "https://bcr.bazel.build/modules/rules_java/7.6.5/source.json": "a805b889531d1690e3c72a7a7e47a870d00323186a9904b36af83aa3d053ee8d", "https://bcr.bazel.build/modules/rules_jvm_external/4.4.2/MODULE.bazel": "a56b85e418c83eb1839819f0b515c431010160383306d13ec21959ac412d2fe7", "https://bcr.bazel.build/modules/rules_jvm_external/4.4.2/source.json": "a075731e1b46bc8425098512d038d416e966ab19684a10a34f4741295642fc35", "https://bcr.bazel.build/modules/rules_license/0.0.3/MODULE.bazel": "627e9ab0247f7d1e05736b59dbb1b6871373de5ad31c3011880b4133cafd4bd0", @@ -66,11 +66,13 @@ "https://bcr.bazel.build/modules/toolchains_llvm/1.1.2/source.json": "27f3cf531bc654c719b50411cac94613b7676d63e60962243d485af63e13b9ff", "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/MODULE.bazel": "7298990c00040a0e2f121f6c32544bab27d4452f80d9ce51349b1a28f3005c43", "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/source.json": "f1ef7d3f9e0e26d4b23d1c39b5f5de71f584dd7d1b4ef83d9bbba6ec7a6a6459", + "https://bcr.bazel.build/modules/xz/5.4.5.bcr.2/MODULE.bazel": "463976fb85f578a2535421ba4c38fe90657ab348e4b5d5404b75c061602705d0", + "https://bcr.bazel.build/modules/xz/5.4.5.bcr.2/source.json": "e735da8a3f396bf200ed06c585f670f7667e08c4e1ed2849bae7c2691bcb10cf", "https://bcr.bazel.build/modules/zlib/1.2.11/MODULE.bazel": "07b389abc85fdbca459b69e2ec656ae5622873af3f845e1c9d80fe179f3effa0", "https://bcr.bazel.build/modules/zlib/1.2.12/MODULE.bazel": "3b1a8834ada2a883674be8cbd36ede1b6ec481477ada359cd2d3ddc562340b27", + "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/MODULE.bazel": "af322bc08976524477c79d1e45e241b6efbeb918c497e8840b8ab116802dda79", + "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/source.json": "2be409ac3c7601245958cd4fcdff4288be79ed23bd690b4b951f500d54ee6e7d", "https://bcr.bazel.build/modules/zlib/1.3.1/MODULE.bazel": "751c9940dcfe869f5f7274e1295422a34623555916eb98c174c1e945594bf198", - "https://bcr.bazel.build/modules/zlib/1.3.1/source.json": "61d55210bd9e9b52fe40b438a377ed1e9594703a354ef6f24acc923571613476", - "https://bcr.bazel.build/modules/zlib/1.3/MODULE.bazel": "6a9c02f19a24dcedb05572b2381446e27c272cd383aed11d41d99da9e3167a72", "https://bcr.bazel.build/modules/zstd/1.5.6/MODULE.bazel": "471ebe7d3cdd8c6469390fcf623eb4779ff55fbee0a87f1dc57a1def468b96d4", "https://bcr.bazel.build/modules/zstd/1.5.6/source.json": "02010c3333fc89b44fe861db049968decb6e688411f7f9d4f6791d74f9adfb51" }, @@ -763,7 +765,7 @@ "@@toolchains_llvm~//toolchain/extensions:llvm.bzl%llvm": { "general": { "bzlTransitiveDigest": "y9h5L2NtWbogyWSOJgqnUaU50MTPWAW+waelXSirMVg=", - "usagesDigest": "fm1qClHrV0VWjOuzXi4L8rgnRzdq0mKB1lPLqZf3bHA=", + "usagesDigest": "cWIs+RUBBwv1tE2cNVULmSLCA/wGvHWaQzdrujSEO74=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, diff --git a/WORKSPACE b/WORKSPACE index f5f1e0a..c3b2501 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -1 +1 @@ -workspace(name = "cpptrace") \ No newline at end of file +workspace(name = "cpptrace") diff --git a/test/BUILD.bazel b/test/BUILD.bazel index 52eefc1..cde0f65 100644 --- a/test/BUILD.bazel +++ b/test/BUILD.bazel @@ -10,4 +10,5 @@ cc_test( "unit/raw_trace.cpp", "unit/stacktrace.cpp" ], + linkstatic = 1, ) \ No newline at end of file