Skip to content

Commit 2e5e174

Browse files
committed
Add Ubuntu specific .deb packages to CPack (oneapi-src#448)
* Add Ubuntu specific .deb packages to CPack * Fix duplicate install when adding Canonical packages + Fix missing Python3 warning in CI Signed-off-by: Russell McGuire <russell.w.mcguire@intel.com>
1 parent cc23468 commit 2e5e174

7 files changed

Lines changed: 115 additions & 4 deletions

File tree

.github/docker/ubuntu.Dockerfile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ apt-get install -y \
5252
libc6:arm64 \
5353
libstdc++6:arm64 \
5454
git \
55-
ninja-build
55+
ninja-build \
56+
python3
5657
rm -rf /var/lib/apt/lists/*
5758
EOF

CMakeLists.txt

Lines changed: 53 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Copyright (C) 2020-2025 Intel Corporation
1+
# Copyright (C) 2020-2026 Intel Corporation
22
# SPDX-License-Identifier: MIT
33

44
cmake_minimum_required(VERSION 3.12.0 FATAL_ERROR)
@@ -211,6 +211,12 @@ include_directories("${CMAKE_CURRENT_SOURCE_DIR}")
211211

212212
set(TARGET_LOADER_NAME ze_loader)
213213

214+
# Canonical Ubuntu/Debian package names (libze1 / libze-dev)
215+
# produced alongside the existing level-zero / level-zero-devel packages.
216+
if(NOT BUILD_INSTALLER)
217+
set(CANONICAL_LIB_COMPONENT "libze1")
218+
set(CANONICAL_SDK_COMPONENT "libze-dev")
219+
endif()
214220

215221
add_subdirectory(source)
216222
add_subdirectory(samples)
@@ -254,6 +260,29 @@ install(FILES ${LEVEL_ZERO_LOADER_API_HEADERS}
254260
COMPONENT ${SDK_COMPONENT_STRING}
255261
)
256262

263+
# Canonical Ubuntu/Debian package naming (libze1 / libze-dev) mirrors Canonical's own packaging.
264+
# EXCLUDE_FROM_ALL prevents these rules from running during 'make install' — the same files are
265+
# already installed by the level-zero / level-zero-devel components above. CPack ignores
266+
# EXCLUDE_FROM_ALL when building component packages, so 'cmake --build . --target package'
267+
# still produces all four .deb files without duplicating entries in install_manifest.txt.
268+
if(CANONICAL_SDK_COMPONENT)
269+
install(FILES ${LEVEL_ZERO_API_HEADERS}
270+
DESTINATION ./include/level_zero
271+
COMPONENT ${CANONICAL_SDK_COMPONENT}
272+
EXCLUDE_FROM_ALL
273+
)
274+
install(FILES ${LEVEL_ZERO_LAYERS_API_HEADERS}
275+
DESTINATION ./include/level_zero/layers
276+
COMPONENT ${CANONICAL_SDK_COMPONENT}
277+
EXCLUDE_FROM_ALL
278+
)
279+
install(FILES ${LEVEL_ZERO_LOADER_API_HEADERS}
280+
DESTINATION ./include/level_zero/loader
281+
COMPONENT ${CANONICAL_SDK_COMPONENT}
282+
EXCLUDE_FROM_ALL
283+
)
284+
endif()
285+
257286
if (MSVC)
258287
set (PYTHON_EXECUTABLE "python")
259288
else()
@@ -346,7 +375,7 @@ set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "oneAPI Level Zero")
346375
set(CPACK_PACKAGE_VENDOR "Intel Corporation")
347376

348377
set(CPACK_PACKAGE_INSTALL_DIRECTORY ${CMAKE_INSTALL_PREFIX})
349-
set(CPACK_PACKAGE_CONTACT "Intel Corporation")
378+
set(CPACK_PACKAGE_CONTACT "Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>")
350379

351380
set(CPACK_PACKAGE_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}")
352381
set(CPACK_PACKAGE_VERSION_MINOR "${PROJECT_VERSION_MINOR}")
@@ -398,6 +427,28 @@ if(CPACK_GENERATOR MATCHES "DEB")
398427
set(CPACK_DEBIAN_LEVEL-ZERO_FILE_NAME "${PROJECT_NAME}_${PROJECT_VERSION}+${os_name}${os_version}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb")
399428
set(CPACK_DEBIAN_LEVEL-ZERO-DEVEL_FILE_NAME "${PROJECT_NAME}-devel_${PROJECT_VERSION}+${os_name}${os_version}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb")
400429
set(CPACK_DEBIAN_LEVEL-ZERO-DEVEL_PACKAGE_DEPENDS "level-zero(=${PROJECT_VERSION})")
430+
# Mutual exclusion with the canonical libze1 / libze-dev packages
431+
set(CPACK_DEBIAN_LEVEL-ZERO_PACKAGE_CONFLICTS "libze1")
432+
set(CPACK_DEBIAN_LEVEL-ZERO_PACKAGE_PROVIDES "libze1")
433+
set(CPACK_DEBIAN_LEVEL-ZERO_PACKAGE_REPLACES "libze1")
434+
set(CPACK_DEBIAN_LEVEL-ZERO-DEVEL_PACKAGE_CONFLICTS "libze-dev")
435+
set(CPACK_DEBIAN_LEVEL-ZERO-DEVEL_PACKAGE_PROVIDES "libze-dev")
436+
set(CPACK_DEBIAN_LEVEL-ZERO-DEVEL_PACKAGE_REPLACES "libze-dev")
437+
438+
# Canonical Ubuntu naming: libze1 (runtime) and libze-dev (development)
439+
set(CPACK_DEBIAN_LIBZE1_PACKAGE_NAME "libze1")
440+
set(CPACK_DEBIAN_LIBZE-DEV_PACKAGE_NAME "libze-dev")
441+
set(CPACK_DEBIAN_LIBZE1_FILE_NAME "libze1_${PROJECT_VERSION}+${os_name}${os_version}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb")
442+
set(CPACK_DEBIAN_LIBZE-DEV_FILE_NAME "libze-dev_${PROJECT_VERSION}+${os_name}${os_version}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb")
443+
set(CPACK_DEBIAN_LIBZE-DEV_PACKAGE_DEPENDS "libze1 (= ${PROJECT_VERSION})")
444+
# Mutual exclusion with the level-zero / level-zero-devel packages
445+
set(CPACK_DEBIAN_LIBZE1_PACKAGE_CONFLICTS "level-zero")
446+
set(CPACK_DEBIAN_LIBZE1_PACKAGE_PROVIDES "level-zero")
447+
set(CPACK_DEBIAN_LIBZE1_PACKAGE_REPLACES "level-zero")
448+
set(CPACK_DEBIAN_LIBZE-DEV_PACKAGE_CONFLICTS "level-zero-devel")
449+
set(CPACK_DEBIAN_LIBZE-DEV_PACKAGE_PROVIDES "level-zero-devel")
450+
set(CPACK_DEBIAN_LIBZE-DEV_PACKAGE_REPLACES "level-zero-devel")
451+
401452
set(CPACK_DEB_COMPONENT_INSTALL ON)
402453
set(CPACK_ARCHIVE_COMPONENT_INSTALL ON)
403454
endif()

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
MIT License
22

3-
Copyright (C) 2019-2021 Intel Corporation
3+
Copyright (C) 2019-2026 Intel Corporation
44

55
Permission is hereby granted, free of charge, to any person obtaining a copy
66
of this software and associated documentation files (the "Software"), to deal

source/CMakeLists.txt

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,19 @@ install(TARGETS ze_loader
7474
NAMELINK_COMPONENT ${SDK_COMPONENT_STRING}
7575
)
7676

77+
# EXCLUDE_FROM_ALL: canonical libze1/libze-dev components are for CPack .deb packaging only.
78+
# 'make install' uses the level-zero/level-zero-devel components above to avoid duplicate
79+
# entries in install_manifest.txt which would cause 'xargs rm' uninstall to fail.
80+
if(CANONICAL_LIB_COMPONENT)
81+
install(TARGETS ze_loader
82+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT ${CANONICAL_SDK_COMPONENT}
83+
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT ${CANONICAL_LIB_COMPONENT}
84+
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT ${CANONICAL_LIB_COMPONENT}
85+
NAMELINK_COMPONENT ${CANONICAL_SDK_COMPONENT}
86+
EXCLUDE_FROM_ALL
87+
)
88+
endif()
89+
7790
if(NOT BUILD_INSTALLER)
7891
file(RELATIVE_PATH pkgconfig_prefix "${CMAKE_INSTALL_FULL_LIBDIR}/pkgconfig" "${CMAKE_INSTALL_PREFIX}")
7992
file(RELATIVE_PATH pkgconfig_include_dir "${CMAKE_INSTALL_PREFIX}" "${CMAKE_INSTALL_FULL_INCLUDEDIR}")
@@ -85,4 +98,12 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/level-zero.pc.in ${CMAKE_CURRENT_BINA
8598
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libze_loader.pc"
8699
"${CMAKE_CURRENT_BINARY_DIR}/level-zero.pc"
87100
DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/pkgconfig" COMPONENT ${SDK_COMPONENT_STRING})
101+
102+
if(CANONICAL_SDK_COMPONENT)
103+
# EXCLUDE_FROM_ALL: CPack-only; avoids duplicate install_manifest.txt entries.
104+
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libze_loader.pc"
105+
"${CMAKE_CURRENT_BINARY_DIR}/level-zero.pc"
106+
DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/pkgconfig" COMPONENT ${CANONICAL_SDK_COMPONENT}
107+
EXCLUDE_FROM_ALL)
108+
endif()
88109
endif()

source/drivers/null/CMakeLists.txt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,18 @@ if(INSTALL_NULL_DRIVER)
2727
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT level-zero
2828
NAMELINK_COMPONENT level-zero-devel
2929
)
30+
# EXCLUDE_FROM_ALL: canonical libze1/libze-dev components are for CPack .deb packaging only.
31+
# 'make install' uses the level-zero/level-zero-devel components above to avoid duplicate
32+
# entries in install_manifest.txt which would cause 'xargs rm' uninstall to fail.
33+
if(CANONICAL_LIB_COMPONENT)
34+
install(TARGETS ze_null
35+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT ${CANONICAL_SDK_COMPONENT}
36+
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT ${CANONICAL_LIB_COMPONENT}
37+
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT ${CANONICAL_LIB_COMPONENT}
38+
NAMELINK_COMPONENT ${CANONICAL_SDK_COMPONENT}
39+
EXCLUDE_FROM_ALL
40+
)
41+
endif()
3042
endif()
3143

3244
if (BUILD_L0_LOADER_TESTS)

source/layers/tracing/CMakeLists.txt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,3 +69,16 @@ install(TARGETS ze_tracing_layer
6969
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT ${LIB_COMPONENT_STRING}
7070
NAMELINK_COMPONENT ${SDK_COMPONENT_STRING}
7171
)
72+
73+
# EXCLUDE_FROM_ALL: canonical libze1/libze-dev components are for CPack .deb packaging only.
74+
# 'make install' uses the level-zero/level-zero-devel components above to avoid duplicate
75+
# entries in install_manifest.txt which would cause 'xargs rm' uninstall to fail.
76+
if(CANONICAL_LIB_COMPONENT)
77+
install(TARGETS ze_tracing_layer
78+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT ${CANONICAL_SDK_COMPONENT}
79+
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT ${CANONICAL_LIB_COMPONENT}
80+
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT ${CANONICAL_LIB_COMPONENT}
81+
NAMELINK_COMPONENT ${CANONICAL_SDK_COMPONENT}
82+
EXCLUDE_FROM_ALL
83+
)
84+
endif()

source/layers/validation/CMakeLists.txt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,5 +59,18 @@ install(TARGETS ze_validation_layer
5959
NAMELINK_COMPONENT ${SDK_COMPONENT_STRING}
6060
)
6161

62+
# EXCLUDE_FROM_ALL: canonical libze1/libze-dev components are for CPack .deb packaging only.
63+
# 'make install' uses the level-zero/level-zero-devel components above to avoid duplicate
64+
# entries in install_manifest.txt which would cause 'xargs rm' uninstall to fail.
65+
if(CANONICAL_LIB_COMPONENT)
66+
install(TARGETS ze_validation_layer
67+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT ${CANONICAL_SDK_COMPONENT}
68+
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT ${CANONICAL_LIB_COMPONENT}
69+
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT ${CANONICAL_LIB_COMPONENT}
70+
NAMELINK_COMPONENT ${CANONICAL_SDK_COMPONENT}
71+
EXCLUDE_FROM_ALL
72+
)
73+
endif()
74+
6275
add_subdirectory(handle_lifetime_tracking)
6376
add_subdirectory(checkers)

0 commit comments

Comments
 (0)