diff --git a/.github/docker/ubuntu.Dockerfile b/.github/docker/ubuntu.Dockerfile index ec0062a5..304fd8f1 100644 --- a/.github/docker/ubuntu.Dockerfile +++ b/.github/docker/ubuntu.Dockerfile @@ -52,6 +52,7 @@ apt-get install -y \ libc6:arm64 \ libstdc++6:arm64 \ git \ - ninja-build + ninja-build \ + python3 rm -rf /var/lib/apt/lists/* EOF \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 32022a8b..1434f809 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2020-2025 Intel Corporation +# Copyright (C) 2020-2026 Intel Corporation # SPDX-License-Identifier: MIT cmake_minimum_required(VERSION 3.12.0 FATAL_ERROR) @@ -222,6 +222,12 @@ include_directories("${CMAKE_CURRENT_SOURCE_DIR}") set(TARGET_LOADER_NAME ze_loader) +# Canonical Ubuntu/Debian package names (libze1 / libze-dev) +# produced alongside the existing level-zero / level-zero-devel packages. +if(NOT BUILD_INSTALLER) + set(CANONICAL_LIB_COMPONENT "libze1") + set(CANONICAL_SDK_COMPONENT "libze-dev") +endif() add_subdirectory(source) add_subdirectory(samples) @@ -265,6 +271,29 @@ install(FILES ${LEVEL_ZERO_LOADER_API_HEADERS} COMPONENT ${SDK_COMPONENT_STRING} ) +# Canonical Ubuntu/Debian package naming (libze1 / libze-dev) mirrors Canonical's own packaging. +# EXCLUDE_FROM_ALL prevents these rules from running during 'make install' — the same files are +# already installed by the level-zero / level-zero-devel components above. CPack ignores +# EXCLUDE_FROM_ALL when building component packages, so 'cmake --build . --target package' +# still produces all four .deb files without duplicating entries in install_manifest.txt. +if(CANONICAL_SDK_COMPONENT) + install(FILES ${LEVEL_ZERO_API_HEADERS} + DESTINATION ./include/level_zero + COMPONENT ${CANONICAL_SDK_COMPONENT} + EXCLUDE_FROM_ALL + ) + install(FILES ${LEVEL_ZERO_LAYERS_API_HEADERS} + DESTINATION ./include/level_zero/layers + COMPONENT ${CANONICAL_SDK_COMPONENT} + EXCLUDE_FROM_ALL + ) + install(FILES ${LEVEL_ZERO_LOADER_API_HEADERS} + DESTINATION ./include/level_zero/loader + COMPONENT ${CANONICAL_SDK_COMPONENT} + EXCLUDE_FROM_ALL + ) +endif() + if (MSVC) set (PYTHON_EXECUTABLE "python") else() @@ -357,7 +386,7 @@ set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "oneAPI Level Zero") set(CPACK_PACKAGE_VENDOR "Intel Corporation") set(CPACK_PACKAGE_INSTALL_DIRECTORY ${CMAKE_INSTALL_PREFIX}) -set(CPACK_PACKAGE_CONTACT "Intel Corporation") +set(CPACK_PACKAGE_CONTACT "Ubuntu Developers ") set(CPACK_PACKAGE_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}") set(CPACK_PACKAGE_VERSION_MINOR "${PROJECT_VERSION_MINOR}") @@ -409,6 +438,28 @@ if(CPACK_GENERATOR MATCHES "DEB") set(CPACK_DEBIAN_LEVEL-ZERO_FILE_NAME "${PROJECT_NAME}_${PROJECT_VERSION}+${os_name}${os_version}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb") set(CPACK_DEBIAN_LEVEL-ZERO-DEVEL_FILE_NAME "${PROJECT_NAME}-devel_${PROJECT_VERSION}+${os_name}${os_version}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb") set(CPACK_DEBIAN_LEVEL-ZERO-DEVEL_PACKAGE_DEPENDS "level-zero(=${PROJECT_VERSION})") + # Mutual exclusion with the canonical libze1 / libze-dev packages + set(CPACK_DEBIAN_LEVEL-ZERO_PACKAGE_CONFLICTS "libze1") + set(CPACK_DEBIAN_LEVEL-ZERO_PACKAGE_PROVIDES "libze1") + set(CPACK_DEBIAN_LEVEL-ZERO_PACKAGE_REPLACES "libze1") + set(CPACK_DEBIAN_LEVEL-ZERO-DEVEL_PACKAGE_CONFLICTS "libze-dev") + set(CPACK_DEBIAN_LEVEL-ZERO-DEVEL_PACKAGE_PROVIDES "libze-dev") + set(CPACK_DEBIAN_LEVEL-ZERO-DEVEL_PACKAGE_REPLACES "libze-dev") + + # Canonical Ubuntu naming: libze1 (runtime) and libze-dev (development) + set(CPACK_DEBIAN_LIBZE1_PACKAGE_NAME "libze1") + set(CPACK_DEBIAN_LIBZE-DEV_PACKAGE_NAME "libze-dev") + set(CPACK_DEBIAN_LIBZE1_FILE_NAME "libze1_${PROJECT_VERSION}+${os_name}${os_version}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb") + set(CPACK_DEBIAN_LIBZE-DEV_FILE_NAME "libze-dev_${PROJECT_VERSION}+${os_name}${os_version}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb") + set(CPACK_DEBIAN_LIBZE-DEV_PACKAGE_DEPENDS "libze1 (= ${PROJECT_VERSION})") + # Mutual exclusion with the level-zero / level-zero-devel packages + set(CPACK_DEBIAN_LIBZE1_PACKAGE_CONFLICTS "level-zero") + set(CPACK_DEBIAN_LIBZE1_PACKAGE_PROVIDES "level-zero") + set(CPACK_DEBIAN_LIBZE1_PACKAGE_REPLACES "level-zero") + set(CPACK_DEBIAN_LIBZE-DEV_PACKAGE_CONFLICTS "level-zero-devel") + set(CPACK_DEBIAN_LIBZE-DEV_PACKAGE_PROVIDES "level-zero-devel") + set(CPACK_DEBIAN_LIBZE-DEV_PACKAGE_REPLACES "level-zero-devel") + set(CPACK_DEB_COMPONENT_INSTALL ON) set(CPACK_ARCHIVE_COMPONENT_INSTALL ON) endif() diff --git a/LICENSE b/LICENSE index 66cfd959..87fdb724 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (C) 2019-2021 Intel Corporation +Copyright (C) 2019-2026 Intel Corporation Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 2ec4b8db..fe433457 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -74,6 +74,19 @@ install(TARGETS ze_loader NAMELINK_COMPONENT ${SDK_COMPONENT_STRING} ) +# EXCLUDE_FROM_ALL: canonical libze1/libze-dev components are for CPack .deb packaging only. +# 'make install' uses the level-zero/level-zero-devel components above to avoid duplicate +# entries in install_manifest.txt which would cause 'xargs rm' uninstall to fail. +if(CANONICAL_LIB_COMPONENT) + install(TARGETS ze_loader + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT ${CANONICAL_SDK_COMPONENT} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT ${CANONICAL_LIB_COMPONENT} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT ${CANONICAL_LIB_COMPONENT} + NAMELINK_COMPONENT ${CANONICAL_SDK_COMPONENT} + EXCLUDE_FROM_ALL + ) +endif() + if(NOT BUILD_INSTALLER) file(RELATIVE_PATH pkgconfig_prefix "${CMAKE_INSTALL_FULL_LIBDIR}/pkgconfig" "${CMAKE_INSTALL_PREFIX}") 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 install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libze_loader.pc" "${CMAKE_CURRENT_BINARY_DIR}/level-zero.pc" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/pkgconfig" COMPONENT ${SDK_COMPONENT_STRING}) + +if(CANONICAL_SDK_COMPONENT) + # EXCLUDE_FROM_ALL: CPack-only; avoids duplicate install_manifest.txt entries. + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libze_loader.pc" + "${CMAKE_CURRENT_BINARY_DIR}/level-zero.pc" + DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/pkgconfig" COMPONENT ${CANONICAL_SDK_COMPONENT} + EXCLUDE_FROM_ALL) +endif() endif() diff --git a/source/drivers/null/CMakeLists.txt b/source/drivers/null/CMakeLists.txt index cf6baae7..2a420fa4 100644 --- a/source/drivers/null/CMakeLists.txt +++ b/source/drivers/null/CMakeLists.txt @@ -27,6 +27,18 @@ if(INSTALL_NULL_DRIVER) LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT level-zero NAMELINK_COMPONENT level-zero-devel ) + # EXCLUDE_FROM_ALL: canonical libze1/libze-dev components are for CPack .deb packaging only. + # 'make install' uses the level-zero/level-zero-devel components above to avoid duplicate + # entries in install_manifest.txt which would cause 'xargs rm' uninstall to fail. + if(CANONICAL_LIB_COMPONENT) + install(TARGETS ze_null + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT ${CANONICAL_SDK_COMPONENT} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT ${CANONICAL_LIB_COMPONENT} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT ${CANONICAL_LIB_COMPONENT} + NAMELINK_COMPONENT ${CANONICAL_SDK_COMPONENT} + EXCLUDE_FROM_ALL + ) + endif() endif() if (BUILD_L0_LOADER_TESTS) diff --git a/source/layers/tracing/CMakeLists.txt b/source/layers/tracing/CMakeLists.txt index c0a92678..8b7999ed 100644 --- a/source/layers/tracing/CMakeLists.txt +++ b/source/layers/tracing/CMakeLists.txt @@ -69,3 +69,16 @@ install(TARGETS ze_tracing_layer LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT ${LIB_COMPONENT_STRING} NAMELINK_COMPONENT ${SDK_COMPONENT_STRING} ) + +# EXCLUDE_FROM_ALL: canonical libze1/libze-dev components are for CPack .deb packaging only. +# 'make install' uses the level-zero/level-zero-devel components above to avoid duplicate +# entries in install_manifest.txt which would cause 'xargs rm' uninstall to fail. +if(CANONICAL_LIB_COMPONENT) + install(TARGETS ze_tracing_layer + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT ${CANONICAL_SDK_COMPONENT} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT ${CANONICAL_LIB_COMPONENT} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT ${CANONICAL_LIB_COMPONENT} + NAMELINK_COMPONENT ${CANONICAL_SDK_COMPONENT} + EXCLUDE_FROM_ALL + ) +endif() diff --git a/source/layers/validation/CMakeLists.txt b/source/layers/validation/CMakeLists.txt index ba4bd418..02391fff 100644 --- a/source/layers/validation/CMakeLists.txt +++ b/source/layers/validation/CMakeLists.txt @@ -59,5 +59,18 @@ install(TARGETS ze_validation_layer NAMELINK_COMPONENT ${SDK_COMPONENT_STRING} ) +# EXCLUDE_FROM_ALL: canonical libze1/libze-dev components are for CPack .deb packaging only. +# 'make install' uses the level-zero/level-zero-devel components above to avoid duplicate +# entries in install_manifest.txt which would cause 'xargs rm' uninstall to fail. +if(CANONICAL_LIB_COMPONENT) + install(TARGETS ze_validation_layer + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT ${CANONICAL_SDK_COMPONENT} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT ${CANONICAL_LIB_COMPONENT} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT ${CANONICAL_LIB_COMPONENT} + NAMELINK_COMPONENT ${CANONICAL_SDK_COMPONENT} + EXCLUDE_FROM_ALL + ) +endif() + add_subdirectory(handle_lifetime_tracking) add_subdirectory(checkers)