Skip to content

Commit c4d748c

Browse files
authored
improve automation for versions and releases (#259)
* add more versioning automation from the project version * update version to v3.0.3 * more release and packaging automation * revert package version to conform to debian rules * add debian package dependencies * switch to the TGZ package by default for Linux * add release automation * provide a file glob vs. a specific filename for release * add Linux release automation * fix package target name * possible fix for build directory * fix Linux extension * switch to release builds
1 parent 63856b5 commit c4d748c

File tree

5 files changed

+114
-64
lines changed

5 files changed

+114
-64
lines changed

.github/workflows/release.yml

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
name: release
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*'
7+
8+
env:
9+
BUILD_TYPE: Release
10+
11+
jobs:
12+
release:
13+
strategy:
14+
matrix:
15+
os: [ubuntu-latest, windows-latest]
16+
17+
runs-on: ${{matrix.os}}
18+
19+
steps:
20+
- uses: actions/checkout@v2
21+
22+
- name: Create Build Directory
23+
run: cmake -E make_directory ${{runner.workspace}}/build
24+
25+
- name: Run CMake
26+
shell: bash
27+
working-directory: ${{runner.workspace}}/build
28+
run: cmake -DENABLE_CLILOADER=1 -DCMAKE_BUILD_TYPE=$BUILD_TYPE $GITHUB_WORKSPACE
29+
30+
- name: Build
31+
working-directory: ${{runner.workspace}}/build
32+
shell: bash
33+
run: cmake --build . --parallel --config $BUILD_TYPE --target package
34+
35+
- name: Release (Windows zip)
36+
if: |
37+
startsWith(github.ref, 'refs/tags/') &&
38+
matrix.os == 'windows-latest'
39+
uses: softprops/action-gh-release@v1
40+
with:
41+
draft: true
42+
files: |
43+
${{runner.workspace}}/build/clintercept-*.zip
44+
45+
- name: Release (Linux tgz)
46+
if: |
47+
startsWith(github.ref, 'refs/tags/') &&
48+
matrix.os == 'ubuntu-latest'
49+
uses: softprops/action-gh-release@v1
50+
with:
51+
draft: true
52+
files: |
53+
${{runner.workspace}}/build/clintercept-*.tar.gz

CMakeLists.txt

Lines changed: 3 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
99
set(CMAKE_CXX_STANDARD 11)
1010
#set(CMAKE_VERBOSE_MAKEFILE ON)
1111

12-
project(CLIntercept VERSION 1.2 LANGUAGES CXX)
12+
project(CLIntercept VERSION 3.0.3 LANGUAGES CXX)
1313

1414
if(NOT CMAKE_BUILD_TYPE)
1515
message(STATUS "No build type selected, default to RelWithDebInfo")
@@ -73,63 +73,5 @@ if(ENABLE_CLILOADER)
7373
add_subdirectory(cliloader)
7474
endif()
7575

76-
if(UNIX)
77-
include(GNUInstallDirs)
78-
79-
if(CLINTERCEPT_CPACK_GENERATOR)
80-
set(CPACK_GENERATOR "${CLINTERCEPT_CPACK_GENERATOR}")
81-
else()
82-
# If generators list was not define build native package for current distro
83-
if(EXISTS "/etc/debian_version")
84-
set(CPACK_GENERATOR "DEB")
85-
elseif(EXISTS "/etc/redhat-release")
86-
set(CPACK_GENERATOR "RPM")
87-
else()
88-
set(CPACK_GENERATOR "TXZ")
89-
endif()
90-
endif()
91-
92-
set(CPACK_PACKAGE_NAME "clintercept")
93-
set(CPACK_PACKAGE_VENDOR "Intel(R) Corporation")
94-
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Intercept Layer for OpenCL(tm) Applications")
95-
set(CPACK_PACKAGE_ARCHITECTURE "x86_64")
96-
97-
# TODO: Figure out how to get this from a git tag.
98-
set(CPACK_PACKAGE_VERSION_MAJOR 3)
99-
set(CPACK_PACKAGE_VERSION_MINOR 0)
100-
set(CPACK_PACKAGE_VERSION_PATCH 2)
101-
set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
102-
103-
set(CPACK_PACKAGE_INSTALL_DIRECTORY ${CLINTERCEPT_INSTALL_TIME_ROOT_DIR})
104-
set(CPACK_SET_DESTDIR TRUE)
105-
set(CPACK_PACKAGE_RELOCATABLE FALSE)
106-
107-
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "amd64")
108-
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Intel")
109-
set(CPACK_DEBIAN_COMPRESSION_TYPE "xz")
110-
111-
set(CPACK_RPM_PACKAGE_ARCHITECTURE "x86_64")
112-
set(CPACK_RPM_PACKAGE_RELEASE 1)
113-
set(CPACK_RPM_COMPRESSION_TYPE "xz")
114-
115-
if(CMAKE_VERSION VERSION_GREATER 3.6 OR CMAKE_VERSION VERSION_EQUAL 3.6)
116-
set(CPACK_DEBIAN_CLINTERCEPT_FILE_NAME "clintercept_${CPACK_PACKAGE_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb")
117-
set(CPACK_RPM_CLINTERCEPT_FILE_NAME "clintercept-${CPACK_PACKAGE_VERSION}-${CPACK_RPM_PACKAGE_RELEASE}%{?dist}.${CPACK_RPM_PACKAGE_ARCHITECTURE}.rpm")
118-
set(CPACK_ARCHIVE_CLINTERCEPT_FILE_NAME "clintercept-${CPACK_PACKAGE_VERSION}-${CPACK_PACKAGE_ARCHITECTURE}")
119-
else()
120-
if(CPACK_GENERATOR STREQUAL "DEB")
121-
set(CPACK_PACKAGE_FILE_NAME "clintercept_${CPACK_PACKAGE_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}")
122-
elseif(CPACK_GENERATOR STREQUAL "RPM")
123-
set(CPACK_PACKAGE_FILE_NAME "clintercept-${CPACK_PACKAGE_VERSION}-${CPACK_RPM_PACKAGE_RELEASE}%{?dist}.${CPACK_RPM_PACKAGE_ARCHITECTURE}.rpm")
124-
else()
125-
set(CPACK_PACKAGE_FILE_NAME "clintercept-${CPACK_PACKAGE_VERSION}-${CPACK_PACKAGE_ARCHITECTURE}")
126-
endif()
127-
endif()
128-
129-
set(CPACK_COMPONENT_INSTALL ON)
130-
set(CPACK_DEB_COMPONENT_INSTALL ON)
131-
set(CPACK_RPM_COMPONENT_INSTALL ON)
132-
set(CPACK_ARCHIVE_COMPONENT_INSTALL ON)
133-
134-
include (CPack)
135-
endif()
76+
# cpack
77+
include(cmake_modules/package.cmake)

cmake_modules/package.cmake

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# Copyright (c) 2018-2022 Intel Corporation
2+
#
3+
# SPDX-License-Identifier: MIT
4+
5+
include(GNUInstallDirs)
6+
7+
if(NOT CPACK_GENERATOR)
8+
if(WIN32)
9+
set(CPACK_GENERATOR "ZIP")
10+
else()
11+
set(CPACK_GENERATOR "TGZ")
12+
endif()
13+
endif()
14+
15+
set(CPACK_SOURCE_IGNORE_FILES "/\\\\.git/;/\\\\.vscode/;build*/;_bin*/;_test*/")
16+
17+
set(CPACK_PACKAGE_NAME "clintercept")
18+
set(CPACK_PACKAGE_VENDOR "Intel(R) Corporation")
19+
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Intercept Layer for OpenCL(tm) Applications")
20+
set(CPACK_PACKAGE_HOMEPAGE_URL "https://github.com/intel/opencl-intercept-layer/")
21+
22+
set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
23+
set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR})
24+
set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH})
25+
set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
26+
27+
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
28+
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Intel")
29+
set(CPACK_DEBIAN_COMPRESSION_TYPE "xz")
30+
31+
set(CPACK_PACKAGE_RELOCATABLE FALSE)
32+
set(CPACK_RPM_PACKAGE_RELEASE 1)
33+
set(CPACK_RPM_COMPRESSION_TYPE "xz")
34+
35+
if(CMAKE_VERSION VERSION_GREATER 3.6 OR CMAKE_VERSION VERSION_EQUAL 3.6)
36+
set(CPACK_DEBIAN_CLINTERCEPT_FILE_NAME "clintercept_${CPACK_PACKAGE_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb")
37+
set(CPACK_RPM_CLINTERCEPT_FILE_NAME "clintercept-${CPACK_PACKAGE_VERSION}-${CPACK_RPM_PACKAGE_RELEASE}%{?dist}.${CPACK_RPM_PACKAGE_ARCHITECTURE}.rpm")
38+
set(CPACK_ARCHIVE_CLINTERCEPT_FILE_NAME "clintercept-${CPACK_PACKAGE_VERSION}-${CPACK_PACKAGE_ARCHITECTURE}")
39+
else()
40+
if(CPACK_GENERATOR STREQUAL "DEB")
41+
set(CPACK_PACKAGE_FILE_NAME "clintercept_${CPACK_PACKAGE_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}")
42+
elseif(CPACK_GENERATOR STREQUAL "RPM")
43+
set(CPACK_PACKAGE_FILE_NAME "clintercept-${CPACK_PACKAGE_VERSION}-${CPACK_RPM_PACKAGE_RELEASE}%{?dist}.${CPACK_RPM_PACKAGE_ARCHITECTURE}.rpm")
44+
else()
45+
set(CPACK_PACKAGE_FILE_NAME "clintercept-${CPACK_PACKAGE_VERSION}-${CPACK_PACKAGE_ARCHITECTURE}")
46+
endif()
47+
endif()
48+
49+
set(CPACK_COMPONENT_INSTALL ON)
50+
set(CPACK_DEB_COMPONENT_INSTALL ON)
51+
set(CPACK_RPM_COMPONENT_INSTALL ON)
52+
set(CPACK_ARCHIVE_COMPONENT_INSTALL ON)
53+
54+
include (CPack)

intercept/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,8 @@ add_library(OpenCL SHARED
8686
${CLINTERCEPT_SOURCE_FILES}
8787
${CLINTERCEPT_MDAPI_FILES}
8888
)
89-
set_target_properties(OpenCL PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION ${PROJECT_VERSION_MAJOR})
89+
# The OpenCL ICD loader is currently always version 1.2 and soversion 1:
90+
set_target_properties(OpenCL PROPERTIES VERSION "1.2" SOVERSION "1")
9091
target_link_libraries(OpenCL ${CMAKE_DL_LIBS})
9192

9293
# This uses modules from: https://github.com/rpavlik/cmake-modules

intercept/src/git_version.rc.in

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
1313

1414
VS_VERSION_INFO VERSIONINFO
15-
FILEVERSION 3,0,0,2
16-
PRODUCTVERSION 3,0,0,2
15+
FILEVERSION @PROJECT_VERSION_MAJOR@,@PROJECT_VERSION_MINOR@,0,@PROJECT_VERSION_PATCH@
16+
PRODUCTVERSION @PROJECT_VERSION_MAJOR@,@PROJECT_VERSION_MINOR@,0,@PROJECT_VERSION_PATCH@
1717
FILEFLAGSMASK 0x0L
1818
#ifdef _DEBUG
1919
FILEFLAGS 0x1L

0 commit comments

Comments
 (0)