Skip to content

Commit 4dc425c

Browse files
committed
conan.io package
1 parent 0c0aff6 commit 4dc425c

File tree

8 files changed

+159
-1
lines changed

8 files changed

+159
-1
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
build*/
2+
*.pyc

.travis.yml

+2
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,12 @@ install:
1414
- CMAKE_URL="http://www.cmake.org/files/v3.3/cmake-3.3.2-Linux-x86_64.tar.gz"
1515
- mkdir cmake && travis_retry wget --no-check-certificate --quiet -O - ${CMAKE_URL} | tar --strip-components=1 -xz -C cmake
1616
- export PATH=${DEPS_DIR}/cmake/bin:${PATH}
17+
- pip install --user conan && export PATH=$PATH:$HOME/.local/bin
1718
- cd ${TRAVIS_BUILD_DIR}
1819
- mkdir build && cd build
1920
- cmake .. -DBACKWARD_TESTS=ON
2021
- cmake --build .
2122

2223
script:
2324
- valgrind ctest .. --verbose
25+
- cd ${TRAVIS_BUILD_DIR} && conan test_package --build=outdated

CMakeLists.txt

+12
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,18 @@ set(BACKWARD_ENABLE $<TARGET_OBJECTS:backward_object> CACHE STRING
4848
"Link with this object to setup backward automatically")
4949

5050

51+
###############################################################################
52+
# BACKWARD LIBRARY (Includes backward.cpp)
53+
###############################################################################
54+
option(BACKWARD_SHARED "Build dynamic backward-cpp shared lib" OFF)
55+
56+
if(BACKWARD_SHARED)
57+
set(libtype SHARED)
58+
endif()
59+
add_library(backward ${libtype} backward.cpp)
60+
target_compile_definitions(backward PUBLIC ${BACKWARD_DEFINITIONS})
61+
target_include_directories(backward PUBLIC ${BACKWARD_INCLUDE_DIRS})
62+
5163
###############################################################################
5264
# TESTS
5365
###############################################################################

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Backward-cpp
1+
Backward-cpp [![badge](https://img.shields.io/badge/conan.io-backward%2F0.0.0-green.svg?logo=data:image/png;base64%2CiVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAMAAAAolt3jAAAA1VBMVEUAAABhlctjlstkl8tlmMtlmMxlmcxmmcxnmsxpnMxpnM1qnc1sn85voM91oM11oc1xotB2oc56pNF6pNJ2ptJ8ptJ8ptN9ptN8p9N5qNJ9p9N9p9R8qtOBqdSAqtOAqtR%2BrNSCrNJ/rdWDrNWCsNWCsNaJs9eLs9iRvNuVvdyVv9yXwd2Zwt6axN6dxt%2Bfx%2BChyeGiyuGjyuCjyuGly%2BGlzOKmzOGozuKoz%2BKqz%2BOq0OOv1OWw1OWw1eWx1eWy1uay1%2Baz1%2Baz1%2Bez2Oe02Oe12ee22ujUGwH3AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfgBQkREyOxFIh/AAAAiklEQVQI12NgAAMbOwY4sLZ2NtQ1coVKWNvoc/Eq8XDr2wB5Ig62ekza9vaOqpK2TpoMzOxaFtwqZua2Bm4makIM7OzMAjoaCqYuxooSUqJALjs7o4yVpbowvzSUy87KqSwmxQfnsrPISyFzWeWAXCkpMaBVIC4bmCsOdgiUKwh3JojLgAQ4ZCE0AMm2D29tZwe6AAAAAElFTkSuQmCC)](http://www.conan.io/source/backward/0.0.0/Manu343726/testing) [![Build Status](https://travis-ci.org/Manu343726/backward-cpp.svg?branch=master)](https://travis-ci.org/Manu343726/backward-cpp)
22
============
33

44
Backward is a beautiful stack trace pretty printer for C++.

conanfile.py

+57
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
from conans import ConanFile, CMake
2+
import os
3+
4+
class BackwardCpp(ConanFile):
5+
settings = 'os', 'compiler', 'build_type', 'arch'
6+
name = 'backward'
7+
url = 'https:77github.com/Manu343726/backward-cpp'
8+
license = 'MIT'
9+
version = '0.0.0'
10+
options = {
11+
'stack_walking_unwind': [True, False],
12+
'stack_walking_backtrace': [True, False],
13+
'stack_details_auto_detect': [True, False],
14+
'stack_details_backtrace_symbol': [True, False],
15+
'stack_details_dw': [True, False],
16+
'stack_details_bfd': [True, False],
17+
'shared': [True, False]
18+
}
19+
default_options = (
20+
'stack_walking_unwind=True',
21+
'stack_walking_backtrace=False',
22+
'stack_details_auto_detect=True',
23+
'stack_details_backtrace_symbol=False',
24+
'stack_details_dw=False',
25+
'stack_details_bfd=False',
26+
'shared=False'
27+
)
28+
exports = 'backward.cpp', 'backward.hpp', 'test/*', 'CMakeLists.txt', 'BackwardConfig.cmake'
29+
generators = 'cmake'
30+
31+
def cmake_option(self, option, prefix = ''):
32+
return '-D{}{}={}'.format(prefix, option.upper(), self.options[option])
33+
34+
def build(self):
35+
cmake = CMake(self.settings)
36+
37+
options = ''
38+
options += self.cmake_option('stack_walking_unwind')
39+
options += self.cmake_option('stack_walking_backtrace')
40+
options += self.cmake_option('stack_details_auto_detect')
41+
options += self.cmake_option('stack_details_backtrace_symbol')
42+
options += self.cmake_option('stack_details_dw')
43+
options += self.cmake_option('stack_details_bfd')
44+
options += self.cmake_option('shared', prefix = 'BACKWARD_')
45+
46+
self.run('cmake {} {} {} -DBACKWARD_TESTS=OFF'.format(self.conanfile_directory, cmake.command_line, options))
47+
self.run('cmake --build . {}'.format(cmake.build_config))
48+
49+
def package(self):
50+
self.copy('backward.hpp', os.path.join('include', 'backward'))
51+
self.copy('*.a', dst='lib')
52+
self.copy('*.so', dst='lib')
53+
self.copy('*.lib', dst='lib')
54+
self.copy('*.dll', dst='lib')
55+
56+
def package_info(self):
57+
self.cpp_info.libs = ['backward']

test_package/CMakeLists.txt

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
project(backward-package-test)
2+
cmake_minimum_required(VERSION 2.8)
3+
4+
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
5+
include(${CONAN_CMAKE-UTILS_ROOT}/conan.cmake)
6+
conan_basic_setup()
7+
8+
add_conan_library(backward)
9+
10+
add_executable(example main.cpp)
11+
target_link_libraries(example PRIVATE backward-conan)

test_package/conanfile.py

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
from conans import ConanFile, CMake
2+
import os
3+
4+
class TestBackward(ConanFile):
5+
settings = 'os', 'compiler', 'build_type', 'arch'
6+
requires = 'cmake-utils/0.0.0@Manu343726/testing', 'backward/0.0.0@Manu343726/testing'
7+
generators = 'cmake'
8+
9+
def build(self):
10+
cmake = CMake(self.settings)
11+
self.run('cmake {} {}'.format(self.conanfile_directory, cmake.command_line))
12+
self.run('cmake --build . {}'.format(cmake.build_config))
13+
14+
def test(self):
15+
self.run(os.path.join('.', 'bin', 'example'))

test_package/main.cpp

+60
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
#include <backward/backward.hpp>
2+
#include <iostream>
3+
#include <stdexcept>
4+
#include <sstream>
5+
6+
using namespace backward;
7+
8+
class TracedException : public std::runtime_error
9+
{
10+
public:
11+
TracedException() :
12+
std::runtime_error(_get_trace())
13+
{}
14+
15+
private:
16+
std::string _get_trace()
17+
{
18+
std::ostringstream ss;
19+
20+
StackTrace stackTrace;
21+
TraceResolver resolver;
22+
stackTrace.load_here();
23+
resolver.load_stacktrace(stackTrace);
24+
25+
for(std::size_t i = 0; i < stackTrace.size(); ++i)
26+
{
27+
const ResolvedTrace trace = resolver.resolve(stackTrace[i]);
28+
29+
ss << "#" << i << " at " << trace.object_function << "\n";
30+
}
31+
32+
return ss.str();
33+
}
34+
};
35+
36+
void f(int i)
37+
{
38+
if(i >= 42)
39+
{
40+
throw TracedException();
41+
}
42+
else
43+
{
44+
std::cout << "i=" << i << "\n";
45+
f(i + 1);
46+
}
47+
}
48+
49+
int main()
50+
{
51+
try
52+
{
53+
f(0);
54+
} catch (const TracedException& ex)
55+
{
56+
std::cout << ex.what();
57+
}
58+
}
59+
60+

0 commit comments

Comments
 (0)