Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enable generating deb, rpm, NuGet, tgz, zip package through cmake build #1662

Merged
merged 30 commits into from
Dec 13, 2022
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
27e6037
add deb rpm package generation
lalitb Oct 6, 2022
eec6896
Merge branch 'main' into deb-rpm
lalitb Oct 6, 2022
b0b199c
fix rpm
lalitb Oct 6, 2022
b9cc311
Merge branch 'deb-rpm' of github.com:lalitb/opentelemetry-cpp into de…
lalitb Oct 6, 2022
d8c3a47
fix
lalitb Oct 6, 2022
5285442
fix comments
lalitb Dec 3, 2022
e20676f
fix
lalitb Dec 3, 2022
224d0e7
Merge branch 'main' into deb-rpm
lalitb Dec 3, 2022
60d312d
fix
lalitb Dec 4, 2022
330b206
fix
lalitb Dec 4, 2022
e827b33
Merge branch 'main' into deb-rpm
lalitb Dec 5, 2022
bf2eb82
fix
lalitb Dec 5, 2022
05bea24
Merge branch 'deb-rpm' of github.com:lalitb/opentelemetry-cpp into de…
lalitb Dec 5, 2022
8b0dbda
nuget error
lalitb Dec 5, 2022
d7fb31f
fix
lalitb Dec 5, 2022
ee4d450
Fix
lalitb Dec 5, 2022
1529923
Merge branch 'main' into deb-rpm
lalitb Dec 8, 2022
ccc821c
add nuget packaging
lalitb Dec 8, 2022
9f36225
missing cpack generation rule for NuGet
lalitb Dec 8, 2022
b391d26
remove dependency on protobuf-dev on deployment platform
lalitb Dec 8, 2022
8334f80
Merge branch 'main' into deb-rpm
lalitb Dec 8, 2022
b161c69
add doc
lalitb Dec 8, 2022
ba1bd4d
fix doc
lalitb Dec 8, 2022
2f1626e
Merge branch 'main' into deb-rpm
lalitb Dec 9, 2022
4390f8d
fix
lalitb Dec 12, 2022
67d55ea
Merge branch 'main' into deb-rpm
lalitb Dec 12, 2022
dbcdb94
Merge branch 'main' into deb-rpm
lalitb Dec 13, 2022
8eb24b5
Merge branch 'main' into deb-rpm
lalitb Dec 13, 2022
c629e82
Add note that the packages mayn't be directly usable in production
lalitb Dec 13, 2022
fad13a4
fix markdown link
lalitb Dec 13, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -445,3 +445,7 @@ install(
EXPORT "${PROJECT_NAME}-target"
NAMESPACE "${PROJECT_NAME}::"
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")

if (BUILD_PACKAGE AND UNIX AND NOT APPLE)
include (cmake/package.cmake)
endif()
22 changes: 22 additions & 0 deletions cmake/ParseOsRelease.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Parse /etc/os-release to determine Linux distro

if(EXISTS /etc/os-release)
file(STRINGS /etc/os-release OS_RELEASE)
foreach(NameAndValue ${OS_RELEASE})
# Strip leading spaces
string(REGEX REPLACE "^[ ]+" "" NameAndValue ${NameAndValue})
# Find variable name
string(REGEX MATCH "^[^=]+" Name ${NameAndValue})
# Find the value
string(REPLACE "${Name}=" "" Value ${NameAndValue})
# Strip quotes from value
string(REPLACE "\"" "" Value ${Value})
# Set the variable
message("-- /etc/os_release : ${Name}=${Value}")
lalitb marked this conversation as resolved.
Show resolved Hide resolved
set("OS_RELEASE_${Name}" "${Value}")
endforeach()
else()
set("OS_RELEASE_NAME" ${CMAKE_SYSTEM_NAME})
set("OS_RELEASE_ID" ${CMAKE_SYSTEM_NAME})
set("OS_RELEASE_VERSION_ID" "1.0")
endif()
45 changes: 45 additions & 0 deletions cmake/package.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@

if (UNIX AND NOT APPLE)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why only set cpack variables on Unix like systems?We can still use CPack archive generator on most system and use NuGet generator on Windows.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agree, at least we can get a tarball on MacOS.

Copy link
Member Author

@lalitb lalitb Dec 4, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point. Have added TARBALL cmake option to create tarball on Linux and Mac. I am still testing the changes for NuGet generation, so if it takes more time will add it in separate PR.

include(CPack)
set(CMAKE_PROJECT_NAME "opentelemetry-cpp")
set(CPACK_SYSTEM_NAME "${OS_RELEASE_ID}-${OS_RELEASE_VERSION_ID}")
set(CPACK_PACKAGING_INSTALL_PREFIX "/usr/local")
set(CPACK_PACKAGE_DESCRIPTION "OpenTelemetry C++ for Linux")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "OpenTelemetry C++ for Linux - C++ Implementation of OpenTelemetry Specification")
set(CPACK_PACKAGE_VENDOR "OpenTelemetry")
set(CPACK_PACKAGE_CONTACT "OpenTelemetry-cpp")
set(CPACK_PACKAGE_HOMEPAGE_URL "https://opentelemetry.io/")
set(CPACK_PACKAGE_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}")
set(CPACK_PACKAGE_VERSION_MINOR "${PROJECT_VERSION_MINOR}")
set(CPACK_PACKAGE_VERSION_PATCH "${PROJECT_VERSION_PATCH}")

set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}-${CPACK_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}")

include(cmake/ParseOsRelease.cmake)
execute_process(
COMMAND lsb_release -si
OUTPUT_VARIABLE distribution
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if (distribution STREQUAL "")
set(distribution ${OS_RELEASE_NAME})
endif()
if(distribution STREQUAL "Debian" OR distribution STREQUAL "Ubuntu")
set(CPACK_GENERATOR "DEB")
set(INSTALL_LIB_DIR
${CMAKE_INSTALL_PREFIX}/lib/${CPACK_DEBIAN_ARCHITECTURE}-linux-gnu)
set(CPACK_DEBIAN_PACKAGE_PRIORITY "optional")
set(CPACK_DEBIAN_ARCHITECTURE ${CMAKE_SYSTEM_PROCESSOR})
#set(CPACK_COMPONENTS_ALL headers libraries)
set (CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
message("-- Package name: ${CPACK_PACKAGE_FILE_NAME}.deb")
elseif(
distribution MATCHES "RedHat.*"
OR distribution MATCHES "openSUSE.*"
OR distribution STREQUAL "Fedora")
set(CPACK_GENERATOR "RPM")
set(INSTALL_LIB_DIR
${CMAKE_INSTALL_PREFIX}/lib/${CMAKE_SYSTEM_PROCESSOR}-linux-gnu)
set(CPACK_RPM_PACKAGE_LICENSE "Apache-2.0")
endif()
endif()