Skip to content

Commit 2398198

Browse files
authored
Add deb/rpm/nuget packaging code, update histogram boundaries from list to vector (#254)
1 parent 3cd65cc commit 2398198

File tree

6 files changed

+114
-9
lines changed

6 files changed

+114
-9
lines changed

exporters/geneva/CMakeLists.txt

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ cmake_minimum_required(VERSION 3.12)
44
# (using add_subdirectory) or if it is the main project
55
#
66
set(MAIN_PROJECT OFF)
7-
set(MAIN_PROJECT OFF)
7+
88
if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
99
project(opentelemetry-geneva-metrics)
1010
set(MAIN_PROJECT ON)
@@ -13,6 +13,7 @@ endif()
1313
if(NOT WIN32)
1414
find_package(CURL REQUIRED)
1515
endif()
16+
1617
add_definitions(-DHAVE_CONSOLE_LOG)
1718
if(MAIN_PROJECT)
1819
find_package(opentelemetry-cpp REQUIRED)
@@ -31,13 +32,18 @@ else()
3132
src/exporter.cc src/unix_domain_socket_data_transport.cc)
3233
endif()
3334

34-
target_include_directories(opentelemetry_exporter_geneva_metrics
35-
PRIVATE ${OPENTELEMETRY_CPP_INCLUDE_DIRS})
36-
target_link_libraries(opentelemetry_exporter_geneva_metrics
35+
if(MAIN_PROJECT)
36+
target_include_directories(opentelemetry_exporter_geneva_metrics
37+
PRIVATE ${OPENTELEMETRY_CPP_INCLUDE_DIRS})
38+
target_link_libraries(opentelemetry_exporter_geneva_metrics
3739
PUBLIC ${OPENTELEMETRY_CPP_LIBRARIES})
40+
else()
41+
target_link_libraries(opentelemetry_exporter_geneva_metrics
42+
PUBLIC opentelemetry_metrics opentelemetry_resources opentelemetry_common)
43+
endif()
44+
3845
set_target_properties(opentelemetry_exporter_geneva_metrics
3946
PROPERTIES EXPORT_NAME metrics)
40-
4147
if(BUILD_TESTING)
4248
if(EXISTS ${CMAKE_BINARY_DIR}/lib/libgtest.a)
4349
# Prefer GTest from build tree. GTest is not always working with
@@ -90,3 +96,7 @@ if(BUILD_EXAMPLE)
9096
example/foo_library.cc)
9197
target_link_libraries(example_metrics opentelemetry_exporter_geneva_metrics)
9298
endif()
99+
if(MAIN_PROJECT AND BUILD_PACKAGE)
100+
include(cmake/package.cmake)
101+
include(CPack)
102+
endif()
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Parse /etc/os-release to determine Linux distro
2+
3+
if(EXISTS /etc/os-release)
4+
file(STRINGS /etc/os-release OS_RELEASE)
5+
foreach(NameAndValue ${OS_RELEASE})
6+
# Strip leading spaces
7+
string(REGEX REPLACE "^[ ]+" "" NameAndValue ${NameAndValue})
8+
# Find variable name
9+
string(REGEX MATCH "^[^=]+" Name ${NameAndValue})
10+
# Find the value
11+
string(REPLACE "${Name}=" "" Value ${NameAndValue})
12+
# Strip quotes from value
13+
string(REPLACE "\"" "" Value ${Value})
14+
# Set the variable
15+
message("-- /etc/os-release : ${Name}=${Value}")
16+
set("OS_RELEASE_${Name}" "${Value}")
17+
endforeach()
18+
else()
19+
set("OS_RELEASE_NAME" ${CMAKE_SYSTEM_NAME})
20+
set("OS_RELEASE_ID" ${CMAKE_SYSTEM_NAME})
21+
set("OS_RELEASE_VERSION_ID" "1.0")
22+
endif()
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
set(CPACK_PACKAGE_DESCRIPTION "OpenTelemetry C++ Geneva Exporter for Metrics")
2+
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "OpenTelemetry C++ Geneva Exporter for Metrics - C++ Implementation of OpenTelemetry C++ Exporter to Upload Metics to Geneva")
3+
set(CPACK_PACKAGE_VENDOR "OpenTelemetry")
4+
set(CPACK_PACKAGE_CONTACT "OpenTelemetry-cpp")
5+
set(CPACK_PACKAGE_HOMEPAGE_URL "https://opentelemetry.io/")
6+
set(CMAKE_PROJECT_NAME "opentelemetry-cpp-geneva-metrics")
7+
set(OPENTELEMETRY_GENEVA_METRICS_VERSION "1.0.0")
8+
9+
option(TARBALL "Build a tarball package" OFF)
10+
11+
if (UNIX AND NOT APPLE)
12+
include(cmake/ParseOsRelease.cmake)
13+
set(CPACK_SYSTEM_NAME "${OS_RELEASE_ID}-${OS_RELEASE_VERSION_ID}")
14+
#set(CPACK_PACKAGING_INSTALL_PREFIX "/usr/local")
15+
set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${OPENTELEMETRY_GENEVA_METRICS_VERSION}-${CPACK_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
16+
17+
# Check if system is deb or rpm capable
18+
find_program(RPMCAPABLE rpmbuild)
19+
find_program(DEBCAPABLE dpkg-buildpackage)
20+
if (TARBALL)
21+
set(CPACK_GENERATOR "TGZ")
22+
message("-- Package name: ${CPACK_PACKAGE_FILE_NAME}.tar.gz")
23+
elseif (DEBCAPABLE MATCHES "NOTFOUND" AND RPMCAPABLE MATCHES "NOTFOUND")
24+
message(FATAL_ERROR "Required Package generator not found for either deb or rpm."
25+
" Install required package generation software and try again")
26+
elseif (NOT DEBCAPABLE MATCHES "NOTFOUND")
27+
if (NOT RPMCAPABLE MATCHES "NOTFOUND")
28+
message(WARNING "Both deb and rpm package generator found."
29+
"Selecting deb as default packager.")
30+
endif()
31+
set(CPACK_GENERATOR "DEB")
32+
set(INSTALL_LIB_DIR
33+
${CMAKE_INSTALL_PREFIX}/lib/${CPACK_DEBIAN_ARCHITECTURE}-linux-gnu)
34+
set(CPACK_DEBIAN_PACKAGE_PRIORITY "optional")
35+
set(CPACK_DEBIAN_ARCHITECTURE ${CMAKE_SYSTEM_PROCESSOR})
36+
#set(CPACK_COMPONENTS_ALL headers libraries)
37+
set (CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
38+
message("-- Package name: ${CPACK_PACKAGE_FILE_NAME}.deb")
39+
elseif(NOT RPMCAPABLE MATCHES "NOTFOUND")
40+
set(CPACK_GENERATOR "RPM")
41+
set(INSTALL_LIB_DIR
42+
${CMAKE_INSTALL_PREFIX}/lib/${CMAKE_SYSTEM_PROCESSOR}-linux-gnu)
43+
list(APPEND CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION "/usr/lib64/cmake")
44+
list(APPEND CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION "/usr/lib64/pkgconfig")
45+
set(CPACK_RPM_PACKAGE_LICENSE "Apache-2.0")
46+
message("-- Package name: ${CPACK_PACKAGE_FILE_NAME}.rpm")
47+
endif()
48+
elseif(APPLE)
49+
if (TARBALL)
50+
set(CPACK_GENERATOR "TGZ")
51+
message("-- Package name: ${CPACK_PACKAGE_FILE_NAME}.tar.gz")
52+
endif()
53+
elseif(WIN32)
54+
find_program(NUGETCAPABLE nuget)
55+
if(NOT NUGETCAPABLE MATCHES "NOTFOUND")
56+
set(CPACK_NUGET_PACKAGE_NAME "${CPACK_PROJECT_NAME}")
57+
set(CPACK_NUGET_PACKAGE_VERSION "${OPENTELEMETRY_GENEVA_METRICS_VERSION}")
58+
set(CPACK_NUGET_PACKAGE_DESCRIPTION "${CPACK_PACKAGE_DESCRIPTION}")
59+
set(CPACK_NUGET_PACKAGE_AUTHORS "${CPACK_PACKAGE_VENDOR}")
60+
set(CPACK_NUGET_PACKAGE_TITLE "${CPACK_PACKAGE_DESCRIPTION_SUMMARY}")
61+
set(CPACK_NUGET_PACKAGE_OWNERS "${CPACK_PACKAGE_VENDOR}")
62+
set(CPACK_NUGET_PACKAGE_HOMEPAGE_URL "${CPACK_PACKAGE_HOMEPAGE_URL}")
63+
set(CPACK_NUGET_PACKAGE_DESCRIPTION_SUMMARY "${CPACK_PACKAGE_DESCRIPTION_SUMMARY}")
64+
set(CPACK_NUGET_PACKAGE_COPYRIGHT "${CPACK_PACKAGE_VENDOR}")
65+
set(CPACK_NUGET_PACKAGE_LICENSEURL "https://www.apache.org/licenses/LICENSE-2.0.txt")
66+
set(CPACK_NUGET_PACKAGE_LANGUAGE "en_US")
67+
set(CPACK_GENERATOR NuGet)
68+
else()
69+
set(CPACK_GENERATOR ZIP)
70+
endif()
71+
endif()

exporters/geneva/include/opentelemetry/exporters/geneva/metrics/exporter.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ class Exporter final : public opentelemetry::sdk::metrics::PushMetricExporter {
8181
size_t SerializeHistogramMetrics(
8282
sdk::metrics::AggregationType, MetricsEventType, uint64_t,
8383
const sdk::metrics::ValueType &, const sdk::metrics::ValueType &,
84-
const sdk::metrics::ValueType &, const std::list<double> &boundaries,
84+
const sdk::metrics::ValueType &, const std::vector<double> &boundaries,
8585
const std::vector<uint64_t> &counts, common::SystemTimestamp,
8686
const std::string &, const sdk::metrics::PointAttributes &);
8787
};

exporters/geneva/src/exporter.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ size_t Exporter::SerializeHistogramMetrics(
275275
sdk::metrics::AggregationType agg_type, MetricsEventType event_type,
276276
uint64_t count, const sdk::metrics::ValueType &sum,
277277
const sdk::metrics::ValueType &min, const sdk::metrics::ValueType &max,
278-
const std::list<double> &boundaries, const std::vector<uint64_t> &counts,
278+
const std::vector<double> &boundaries, const std::vector<uint64_t> &counts,
279279
common::SystemTimestamp ts, const std::string &metric_name,
280280
const sdk::metrics::PointAttributes &attributes) {
281281

exporters/geneva/test/common/generate_metrics.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
#include "opentelemetry/sdk/metrics/instruments.h"
44
#include "opentelemetry/sdk/resource/resource.h"
55

6+
#include<vector>
7+
68
namespace {
79

810
// Instrument Scope
@@ -222,7 +224,7 @@ const uint16_t kHistogramLongBucketSize = 10;
222224
const uint16_t kHistogramLongNonEmptyBucketSize = 8;
223225
const std::vector<uint64_t> kHistogramLongCounts = {1, 2, 1, 0, 0,
224226
1, 2, 3, 4, 1};
225-
const std::list<double> kHistogramLongBoundaries = std::list<double>{
227+
const std::vector<double> kHistogramLongBoundaries = std::vector<double>{
226228
0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 1000.0};
227229

228230
const std::string kHistogramLongAttributeKey1 = "histogram_long_key1";
@@ -269,4 +271,4 @@ GenerateHistogramDataLongMetrics() {
269271
return data;
270272
}
271273

272-
} // namespace
274+
} // namespace

0 commit comments

Comments
 (0)