@@ -8,32 +8,26 @@ name: Create Release
8
8
jobs :
9
9
windows-binary :
10
10
runs-on : windows-2022
11
+ defaults :
12
+ run :
13
+ shell : pwsh
11
14
strategy :
12
15
matrix :
13
16
VER : [v143]
14
17
GEN : [Visual Studio 17 2022]
15
18
BIN : [x64, x86]
16
-
19
+ env :
20
+ UseMultiToolTask : true
21
+ EnforceProcessCountAcrossBuilds : true
22
+ MultiProcMaxCount : 3
17
23
steps :
18
24
- name : Checkout OpenCL-SDK
19
- uses : actions/checkout@v2
20
-
21
- - name : Initialize git submodules
22
- shell : pwsh
23
- run : |
24
- & git submodule init
25
- & git submodule update
26
-
27
- - name : Create Build Environment
28
- shell : pwsh
29
- run : |
30
- # Parallelize MSBuild across projects
31
- [Environment]::SetEnvironmentVariable('UseMultiToolTask', 'true', [EnvironmentVariableTarget]::User)
32
- [Environment]::SetEnvironmentVariable('EnforceProcessCountAcrossBuilds', 'true', [EnvironmentVariableTarget]::User)
33
- [Environment]::SetEnvironmentVariable('MultiProcMaxCount', "$env:NUMBER_OF_PROCESSORS", [EnvironmentVariableTarget]::User)
25
+ uses : actions/checkout@v4
26
+ with :
27
+ fetch-depth : 0
28
+ submodules : recursive
34
29
35
30
- name : Configure
36
- shell : pwsh
37
31
run : |
38
32
$Bin = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'}
39
33
& cmake `
@@ -42,15 +36,16 @@ jobs:
42
36
-T ${{matrix.VER}} `
43
37
-S "${env:GITHUB_WORKSPACE}" `
44
38
-B "${env:GITHUB_WORKSPACE}\build" `
39
+ -D CMAKE_INSTALL_PREFIX="${env:GITHUB_WORKSPACE}\install" `
45
40
-D BUILD_DOCS=OFF `
46
41
-D BUILD_TESTING=OFF `
47
42
-D BUILD_EXAMPLES=OFF `
48
43
-D OPENCL_SDK_BUILD_SAMPLES=OFF `
49
44
-D OPENCL_ICD_LOADER_BUILD_TESTING=OFF `
50
45
-D CMAKE_POLICY_DEFAULT_CMP0096=NEW
46
+ if ($LASTEXITCODE -ne 0) { throw "Configuring OpenCL-SDK failed." }
51
47
52
48
- name : Check version number
53
- shell : pwsh
54
49
run : |
55
50
if ( -not (`
56
51
Get-Content ${env:GITHUB_WORKSPACE}\build\CMakeCache.txt | `
@@ -59,30 +54,29 @@ jobs:
59
54
{ throw 'CMake project version mismatches Git tag name (without leading "v")'}
60
55
61
56
- name : Build
62
- shell : pwsh
63
57
run : |
64
58
foreach ($Config in "Debug","Release") { `
65
59
& cmake `
66
60
--build "${env:GITHUB_WORKSPACE}\build" `
67
61
--config $Config `
68
62
-- `
69
63
/verbosity:minimal `
70
- /noLogo `
64
+ /noLogo
65
+ if ($LASTEXITCODE -ne 0) { throw "Building OpenCL-SDK in $Config failed." }
71
66
}
72
-
67
+
73
68
- name : Package Binary
74
- shell : pwsh
75
69
run : |
76
70
& cpack `
77
71
--config "${env:GITHUB_WORKSPACE}\build\CPackConfig.cmake" `
78
72
-G ZIP `
79
73
-C 'Debug;Release' `
80
74
-D CPACK_PACKAGE_FILE_NAME='OpenCL-SDK-${{github.ref_name}}-Win-${{matrix.BIN}}' `
81
75
-B "${env:GITHUB_WORKSPACE}\package"
76
+ if ($LASTEXITCODE -ne 0) { throw "Packaging OpenCL-SDK failed." }
82
77
83
78
- name : Upload Package
84
79
uses : softprops/action-gh-release@v1
85
- if : startsWith(github.ref, 'refs/tags/')
86
80
with :
87
81
draft : true
88
82
files : |
@@ -91,22 +85,24 @@ jobs:
91
85
source :
92
86
name : Source Release (${{ matrix.os }})
93
87
runs-on : ${{ matrix.os }}
88
+ defaults :
89
+ run :
90
+ shell : pwsh
94
91
strategy :
95
92
matrix :
96
93
OS : [ubuntu-20.04, windows-2022]
97
94
95
+ env :
96
+ DEB_INSTALLATION_PATH : /usr
97
+
98
98
steps :
99
99
- name : Checkout OpenCL-SDK
100
- uses : actions/checkout@v2
101
-
102
- - name : Initialize git submodules
103
- shell : pwsh
104
- run : |
105
- & git submodule init
106
- & git submodule update
100
+ uses : actions/checkout@v4
101
+ with :
102
+ fetch-depth : 0
103
+ submodules : recursive
107
104
108
105
- name : Configure
109
- shell : pwsh
110
106
run : |
111
107
& cmake `
112
108
-S "${env:GITHUB_WORKSPACE}" `
@@ -116,19 +112,29 @@ jobs:
116
112
-D BUILD_EXAMPLES=OFF `
117
113
-D OPENCL_SDK_BUILD_SAMPLES=OFF `
118
114
-D OPENCL_ICD_LOADER_BUILD_TESTING=OFF `
119
- -D CMAKE_POLICY_DEFAULT_CMP0096=NEW
115
+ -D CMAKE_POLICY_DEFAULT_CMP0096=NEW `
116
+ -D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH
117
+ if ($LASTEXITCODE -ne 0) { throw "Configuring OpenCL-SDK failed." }
120
118
121
119
- name : Check version number
122
- shell : pwsh
123
120
run : |
124
121
if ( -not (`
125
122
Get-Content ${env:GITHUB_WORKSPACE}/build/CMakeCache.txt | `
126
123
Select-String -Pattern ('CMAKE_PROJECT_VERSION:STATIC=' + '${{github.ref_name}}'.Replace('v','')) `
127
124
)) `
128
125
{ throw 'CMake project version mismatches Git tag name (without leading "v")'}
129
126
127
+ - name : Package DEB
128
+ if : ${{ contains(matrix.OS, 'ubuntu') }}
129
+ run : |
130
+ cpack `
131
+ --config "${env:GITHUB_WORKSPACE}/build/CPackSourceConfig.cmake" `
132
+ -G DEB `
133
+ -C Release `
134
+ "${env:GITHUB_WORKSPACE}/package-deb"
135
+ if ($LASTEXITCODE -ne 0) { throw "Packaging OpenCL-SDK deb failed." }
136
+
130
137
- name : Package Source
131
- shell : pwsh
132
138
run : |
133
139
$Generator = if('${{matrix.OS}}' -match 'windows') {'ZIP'} else {'TGZ'}
134
140
& cpack `
@@ -138,11 +144,96 @@ jobs:
138
144
-D CPACK_SOURCE_IGNORE_FILES="/\\.git/;/\\.gitignore;/\\.gitmodules;/\\.gitlab/;/\\.github/;/\\.reuse/;/\\.appveyor.yml;/build/;/install/;/package/" `
139
145
-D CPACK_PACKAGE_FILE_NAME='OpenCL-SDK-${{github.ref_name}}-Source' `
140
146
-B "${env:GITHUB_WORKSPACE}/package"
147
+ if ($LASTEXITCODE -ne 0) { throw "Packaging OpenCL-SDK source failed." }
141
148
142
149
- name : Release Source
143
150
uses : softprops/action-gh-release@v1
144
- if : startsWith(github.ref, 'refs/tags/')
145
151
with :
146
152
draft : true
147
153
files : |
148
- package/OpenCL-SDK-${{github.ref_name}}-Source.*
154
+ package/OpenCL-SDK-${{github.ref_name}}-Source.*
155
+
156
+ ppa :
157
+ runs-on : ubuntu-latest
158
+ defaults :
159
+ run :
160
+ shell : bash
161
+ env :
162
+ OPENCL_HEADERS_REPOSITORY : mfep/OpenCL-Headers
163
+ OPENCL_ICD_LOADER_REPOSITORY : mfep/OpenCL-ICD-Loader
164
+ OPENCL_CLHPP_REPOSITORY : mfep/OpenCL-CLHPP
165
+ distroseries : jammy
166
+ steps :
167
+ - name : Add PPA
168
+ run : sudo add-apt-repository -y ppa:${{ vars.PPA }}
169
+
170
+ - name : Install prerequisites
171
+ run : sudo apt-get update -qq && sudo apt-get install -y
172
+ cmake
173
+ devscripts
174
+ debhelper-compat=13
175
+ opencl-c-headers
176
+ opencl-clhpp-headers
177
+ khronos-opencl-loader-libopencl1
178
+ khronos-opencl-loader-opencl-dev
179
+ clinfo
180
+
181
+ - name : Import GPG signing key
182
+ run : echo "${{ secrets.DEB_SIGNING_KEY }}" | gpg --import
183
+
184
+ - name : Download and extract source code (OpenCL-SDK)
185
+ run : |
186
+ wget -O $GITHUB_WORKSPACE/source.orig.tar.gz https://github.com/$GITHUB_REPOSITORY/archive/refs/tags/$GITHUB_REF_NAME.tar.gz
187
+ tar -xvf $GITHUB_WORKSPACE/source.orig.tar.gz -C $GITHUB_WORKSPACE
188
+ mv $GITHUB_WORKSPACE/OpenCL-SDK-* $GITHUB_WORKSPACE/OpenCL-SDK
189
+
190
+ - name : Download and extract source code (OpenCL-Headers)
191
+ run : |
192
+ wget -O $GITHUB_WORKSPACE/opencl-headers.tar.gz https://github.com/$OPENCL_HEADERS_REPOSITORY/archive/refs/tags/$GITHUB_REF_NAME.tar.gz
193
+ tar -xvf $GITHUB_WORKSPACE/opencl-headers.tar.gz -C $GITHUB_WORKSPACE/OpenCL-SDK/external
194
+ rm -rf $GITHUB_WORKSPACE/OpenCL-SDK/external/OpenCL-Headers
195
+ mv $GITHUB_WORKSPACE/OpenCL-SDK/external/OpenCL-Headers-* $GITHUB_WORKSPACE/OpenCL-SDK/external/OpenCL-Headers
196
+
197
+ - name : Download and extract source code (OpenCL-ICD-Loader)
198
+ run : |
199
+ wget -O $GITHUB_WORKSPACE/opencl-icd-loader.tar.gz https://github.com/$OPENCL_ICD_LOADER_REPOSITORY/archive/refs/tags/$GITHUB_REF_NAME.tar.gz
200
+ tar -xvf $GITHUB_WORKSPACE/opencl-icd-loader.tar.gz -C $GITHUB_WORKSPACE/OpenCL-SDK/external
201
+ rm -rf $GITHUB_WORKSPACE/OpenCL-SDK/external/OpenCL-ICD-Loader
202
+ mv $GITHUB_WORKSPACE/OpenCL-SDK/external/OpenCL-ICD-Loader-* $GITHUB_WORKSPACE/OpenCL-SDK/external/OpenCL-ICD-Loader
203
+
204
+ - name : Download and extract source code (OpenCL-CLHPP)
205
+ run : |
206
+ wget -O $GITHUB_WORKSPACE/opencl-clhpp.tar.gz https://github.com/$OPENCL_CLHPP_REPOSITORY/archive/refs/tags/$GITHUB_REF_NAME.tar.gz
207
+ tar -xvf $GITHUB_WORKSPACE/opencl-clhpp.tar.gz -C $GITHUB_WORKSPACE/OpenCL-SDK/external
208
+ rm -rf $GITHUB_WORKSPACE/OpenCL-SDK/external/OpenCL-CLHPP
209
+ mv $GITHUB_WORKSPACE/OpenCL-SDK/external/OpenCL-CLHPP-* $GITHUB_WORKSPACE/OpenCL-SDK/external/OpenCL-CLHPP
210
+
211
+ - name : Configure project out-of-tree
212
+ run : cmake
213
+ -S $GITHUB_WORKSPACE/OpenCL-SDK*
214
+ -B $GITHUB_WORKSPACE/../build
215
+ -D CMAKE_BUILD_TYPE=Release
216
+ -D CMAKE_INSTALL_PREFIX=/usr
217
+ -D BUILD_TESTING=OFF
218
+ -D OPENCL_SDK_BUILD_SAMPLES=OFF
219
+ -D LATEST_RELEASE_VERSION=$GITHUB_REF_NAME
220
+ -D CPACK_DEBIAN_PACKAGE_MAINTAINER="${{ vars.DEB_MAINTAINER }}"
221
+ -D DEBIAN_VERSION_SUFFIX=${{ vars.DEB_VERSION_SUFFIX }}
222
+
223
+ - name : Generate packaging scripts
224
+ run : cmake
225
+ -D CMAKE_CACHE_PATH=$GITHUB_WORKSPACE/../build/CMakeCache.txt
226
+ -D ORIG_ARCHIVE=$GITHUB_WORKSPACE/source.orig.tar.gz
227
+ -D LATEST_RELEASE_VERSION=$GITHUB_REF_NAME
228
+ -D DEBIAN_DISTROSERIES=${{ env.distroseries }}
229
+ -D DEBIAN_PACKAGE_MAINTAINER="${{ vars.DEB_MAINTAINER }}"
230
+ -D DEBIAN_VERSION_SUFFIX=${{ vars.DEB_VERSION_SUFFIX }}
231
+ -P $GITHUB_WORKSPACE/OpenCL-SDK*/cmake/DebSourcePkg.cmake
232
+
233
+ - name : Build source package
234
+ run : |
235
+ cd $GITHUB_WORKSPACE/OpenCL-SDK*/
236
+ debuild -S -sa
237
+
238
+ - name : Push source package to the PPA
239
+ run : dput ppa:${{ vars.PPA }} $GITHUB_WORKSPACE/*source.changes
0 commit comments