summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYogesh Tyagi <yogesh.tyagi@intel.com>2026-05-14 16:12:18 +0800
committerYogesh Tyagi <yogesh.tyagi@intel.com>2026-05-17 23:00:25 +0800
commitff8ad78a0e3531060aa712b708cc01178c564a69 (patch)
treef1c81915ca379491647b63d7103f119dea49ecf2
parent2a8d44bf7b9faca3935b851107c70754e1cdcae3 (diff)
downloadmeta-intel-ff8ad78a0e3531060aa712b708cc01178c564a69.tar.gz
intel-oneapi-toolkit: split mkl and ipp into runtime/sycl/staticdev/dev sub-packages
The 2026.0 oneAPI MKL component grew to 1.9 GB on disk, dominated by ~900 MB of static archives, ~330 MB of SYCL/GPU offload libraries and ~80 MB of headers / cmake metadata / sample sources. The IPP component similarly carries ~280 MB of static archives on top of a 537 MB runtime payload. Consumers that only need a CPU BLAS/FFT backend (PyTorch CPU, NumPy, image-processing pipelines) were paying for all of it whenever they installed intel-oneapi-toolkit-mkl or intel-oneapi-toolkit-ipp. Split the two heaviest components along the usual runtime/dev/static seams: intel-oneapi-toolkit-mkl CPU shared libs + dispatch libraries + env/etc/bin glue (~640 MB) intel-oneapi-toolkit-mkl-sycl SYCL / GPU offload shared libs (~330 MB, RDEPENDS -runtime) intel-oneapi-toolkit-mkl-staticdev Static archives, lib/*.a (~900 MB) intel-oneapi-toolkit-mkl-dev Headers, cmake modules, pkgconfig files, share/ examples (~85 MB) intel-oneapi-toolkit-ipp ipp + ippcp runtime shared libs (~540 MB) intel-oneapi-toolkit-ipp-staticdev Static archives (~280 MB) intel-oneapi-toolkit-ipp-dev Headers, cmake, pkgconfig, share PACKAGES ordering places the specific sub-sub-packages before the catch-all component package so first-match-wins puts the heavyweight bits in their dedicated package. FILES patterns use [0-9]* to match the versioned directory only (the sibling 'latest' compatibility symlink is captured by the parent component package). RDEPENDS form a closed chain: -dev depends on the runtime package, -staticdev on -dev, -sycl on -runtime + the CPU runtime, so users that explicitly install a sub-sub-package still get a working environment. The top-level meta-package RDEPENDS:${PN} continues to pull all of the new sub-packages, so an image that asks for the unqualified intel-oneapi-toolkit recipe is unchanged. Signed-off-by: Yogesh Tyagi <yogesh.tyagi@intel.com> Tested-by: Zoltán Böszörményi <zboszor@gmail.com>
-rw-r--r--dynamic-layers/clang-layer/recipes-oneapi/toolkit/intel-oneapi-toolkit_2026.0.0.198.bb113
1 files changed, 100 insertions, 13 deletions
diff --git a/dynamic-layers/clang-layer/recipes-oneapi/toolkit/intel-oneapi-toolkit_2026.0.0.198.bb b/dynamic-layers/clang-layer/recipes-oneapi/toolkit/intel-oneapi-toolkit_2026.0.0.198.bb
index 2b08cc24..e7a8f0f3 100644
--- a/dynamic-layers/clang-layer/recipes-oneapi/toolkit/intel-oneapi-toolkit_2026.0.0.198.bb
+++ b/dynamic-layers/clang-layer/recipes-oneapi/toolkit/intel-oneapi-toolkit_2026.0.0.198.bb
@@ -45,25 +45,38 @@ SKIP_FILEDEPS:${PN}-compiler = "1"
45SKIP_FILEDEPS:${PN}-common = "1" 45SKIP_FILEDEPS:${PN}-common = "1"
46SKIP_FILEDEPS:${PN}-licensing = "1" 46SKIP_FILEDEPS:${PN}-licensing = "1"
47SKIP_FILEDEPS:${PN}-mkl = "1" 47SKIP_FILEDEPS:${PN}-mkl = "1"
48SKIP_FILEDEPS:${PN}-mkl-sycl = "1"
49SKIP_FILEDEPS:${PN}-mkl-staticdev = "1"
50SKIP_FILEDEPS:${PN}-mkl-dev = "1"
48SKIP_FILEDEPS:${PN}-tbb = "1" 51SKIP_FILEDEPS:${PN}-tbb = "1"
49SKIP_FILEDEPS:${PN}-dpl = "1" 52SKIP_FILEDEPS:${PN}-dpl = "1"
50SKIP_FILEDEPS:${PN}-debugger = "1" 53SKIP_FILEDEPS:${PN}-debugger = "1"
51SKIP_FILEDEPS:${PN}-ipp = "1" 54SKIP_FILEDEPS:${PN}-ipp = "1"
55SKIP_FILEDEPS:${PN}-ipp-staticdev = "1"
56SKIP_FILEDEPS:${PN}-ipp-dev = "1"
52SKIP_FILEDEPS:${PN}-ccl = "1" 57SKIP_FILEDEPS:${PN}-ccl = "1"
53SKIP_FILEDEPS:${PN}-vtune = "1" 58SKIP_FILEDEPS:${PN}-vtune = "1"
54SKIP_FILEDEPS:${PN}-onednn = "1" 59SKIP_FILEDEPS:${PN}-onednn = "1"
55 60
56ONEAPI_INSANE = "textrel dev-so dev-elf ldflags already-stripped staticdev rpaths arch useless-rpaths file-rdeps libdir buildpaths host-user-contaminated installed-vs-shipped 32bit-time" 61# dev-deps is set on the meta-package and -common because the umbrella
62# RDEPENDS pulls the -mkl-dev / -ipp-dev sub-packages so a single
63# IMAGE_INSTALL of intel-oneapi-toolkit still ships the full SDK.
64ONEAPI_INSANE = "textrel dev-so dev-elf ldflags already-stripped staticdev rpaths arch useless-rpaths file-rdeps libdir buildpaths host-user-contaminated installed-vs-shipped 32bit-time dev-deps"
57INSANE_SKIP:${PN} += "${ONEAPI_INSANE}" 65INSANE_SKIP:${PN} += "${ONEAPI_INSANE}"
58INSANE_SKIP:${PN}-runtime += "${ONEAPI_INSANE}" 66INSANE_SKIP:${PN}-runtime += "${ONEAPI_INSANE}"
59INSANE_SKIP:${PN}-compiler += "${ONEAPI_INSANE}" 67INSANE_SKIP:${PN}-compiler += "${ONEAPI_INSANE}"
60INSANE_SKIP:${PN}-common += "${ONEAPI_INSANE}" 68INSANE_SKIP:${PN}-common += "${ONEAPI_INSANE}"
61INSANE_SKIP:${PN}-licensing += "${ONEAPI_INSANE}" 69INSANE_SKIP:${PN}-licensing += "${ONEAPI_INSANE}"
62INSANE_SKIP:${PN}-mkl += "${ONEAPI_INSANE}" 70INSANE_SKIP:${PN}-mkl += "${ONEAPI_INSANE}"
71INSANE_SKIP:${PN}-mkl-sycl += "${ONEAPI_INSANE}"
72INSANE_SKIP:${PN}-mkl-staticdev += "${ONEAPI_INSANE}"
73INSANE_SKIP:${PN}-mkl-dev += "${ONEAPI_INSANE}"
63INSANE_SKIP:${PN}-tbb += "${ONEAPI_INSANE}" 74INSANE_SKIP:${PN}-tbb += "${ONEAPI_INSANE}"
64INSANE_SKIP:${PN}-dpl += "${ONEAPI_INSANE}" 75INSANE_SKIP:${PN}-dpl += "${ONEAPI_INSANE}"
65INSANE_SKIP:${PN}-debugger += "${ONEAPI_INSANE}" 76INSANE_SKIP:${PN}-debugger += "${ONEAPI_INSANE}"
66INSANE_SKIP:${PN}-ipp += "${ONEAPI_INSANE}" 77INSANE_SKIP:${PN}-ipp += "${ONEAPI_INSANE}"
78INSANE_SKIP:${PN}-ipp-staticdev += "${ONEAPI_INSANE}"
79INSANE_SKIP:${PN}-ipp-dev += "${ONEAPI_INSANE}"
67INSANE_SKIP:${PN}-ccl += "${ONEAPI_INSANE}" 80INSANE_SKIP:${PN}-ccl += "${ONEAPI_INSANE}"
68INSANE_SKIP:${PN}-vtune += "${ONEAPI_INSANE}" 81INSANE_SKIP:${PN}-vtune += "${ONEAPI_INSANE}"
69INSANE_SKIP:${PN}-onednn += "${ONEAPI_INSANE}" 82INSANE_SKIP:${PN}-onednn += "${ONEAPI_INSANE}"
@@ -154,13 +167,22 @@ SYSROOT_DIRS += "/opt"
154 167
155# Sub-packages. Order matters in PACKAGES — first-match wins for FILES 168# Sub-packages. Order matters in PACKAGES — first-match wins for FILES
156# patterns, so put specific component packages before the catch-all ${PN}. 169# patterns, so put specific component packages before the catch-all ${PN}.
170# Within a component, list the more specific sub-subpackages (-sycl,
171# -staticdev, -dev) before the component's own catch-all so the
172# heavyweight bits land in their dedicated package and not in the
173# default runtime package.
157PACKAGES =+ " \ 174PACKAGES =+ " \
158 ${PN}-runtime \ 175 ${PN}-runtime \
159 ${PN}-compiler \ 176 ${PN}-compiler \
177 ${PN}-mkl-sycl \
178 ${PN}-mkl-staticdev \
179 ${PN}-mkl-dev \
160 ${PN}-mkl \ 180 ${PN}-mkl \
161 ${PN}-tbb \ 181 ${PN}-tbb \
162 ${PN}-dpl \ 182 ${PN}-dpl \
163 ${PN}-debugger \ 183 ${PN}-debugger \
184 ${PN}-ipp-staticdev \
185 ${PN}-ipp-dev \
164 ${PN}-ipp \ 186 ${PN}-ipp \
165 ${PN}-ccl \ 187 ${PN}-ccl \
166 ${PN}-vtune \ 188 ${PN}-vtune \
@@ -181,8 +203,43 @@ FILES:${PN}-common = " \
181FILES:${PN}-onednn = "/opt/intel/oneapi/dnnl" 203FILES:${PN}-onednn = "/opt/intel/oneapi/dnnl"
182FILES:${PN}-tbb = "/opt/intel/oneapi/tbb" 204FILES:${PN}-tbb = "/opt/intel/oneapi/tbb"
183FILES:${PN}-dpl = "/opt/intel/oneapi/dpl" 205FILES:${PN}-dpl = "/opt/intel/oneapi/dpl"
206# MKL is split four ways. Order in PACKAGES above ensures the specific
207# patterns match before the catch-all /opt/intel/oneapi/mkl.
208#
209# -mkl-sycl GPU/SYCL offload libraries (~470 MB)
210# -mkl-staticdev Static archives, lib/intel64/*.a (~900 MB)
211# -mkl-dev Headers, cmake/pkgconfig modules, share/ examples
212# -mkl CPU runtime shared libs + env/etc/bin + symlinks
213FILES:${PN}-mkl-sycl = "/opt/intel/oneapi/mkl/[0-9]*/lib/libmkl_sycl*"
214FILES:${PN}-mkl-staticdev = "/opt/intel/oneapi/mkl/[0-9]*/lib/*.a"
215FILES:${PN}-mkl-dev = " \
216 /opt/intel/oneapi/mkl/[0-9]*/include \
217 /opt/intel/oneapi/mkl/[0-9]*/lib/cmake \
218 /opt/intel/oneapi/mkl/[0-9]*/lib/pkgconfig \
219 /opt/intel/oneapi/mkl/[0-9]*/share \
220"
184FILES:${PN}-mkl = "/opt/intel/oneapi/mkl" 221FILES:${PN}-mkl = "/opt/intel/oneapi/mkl"
185FILES:${PN}-debugger = "/opt/intel/oneapi/debugger" 222FILES:${PN}-debugger = "/opt/intel/oneapi/debugger"
223# IPP is split three ways. ippcp (Cryptography Primitives) is bundled
224# with ipp in this distribution and shares the same split policy.
225#
226# -ipp-staticdev Static archives, lib/intel64/*.a (~560 MB)
227# -ipp-dev Headers, cmake/pkgconfig modules, share/ examples
228# -ipp Runtime shared libs + env/etc/bin + symlinks
229FILES:${PN}-ipp-staticdev = " \
230 /opt/intel/oneapi/ipp/[0-9]*/lib/*.a \
231 /opt/intel/oneapi/ippcp/[0-9]*/lib/*.a \
232"
233FILES:${PN}-ipp-dev = " \
234 /opt/intel/oneapi/ipp/[0-9]*/include \
235 /opt/intel/oneapi/ipp/[0-9]*/lib/cmake \
236 /opt/intel/oneapi/ipp/[0-9]*/lib/pkgconfig \
237 /opt/intel/oneapi/ipp/[0-9]*/share \
238 /opt/intel/oneapi/ippcp/[0-9]*/include \
239 /opt/intel/oneapi/ippcp/[0-9]*/lib/cmake \
240 /opt/intel/oneapi/ippcp/[0-9]*/lib/pkgconfig \
241 /opt/intel/oneapi/ippcp/[0-9]*/share \
242"
186FILES:${PN}-ipp = " \ 243FILES:${PN}-ipp = " \
187 /opt/intel/oneapi/ipp \ 244 /opt/intel/oneapi/ipp \
188 /opt/intel/oneapi/ippcp \ 245 /opt/intel/oneapi/ippcp \
@@ -202,26 +259,56 @@ FILES:${PN}-runtime = " \
202" 259"
203 260
204# Inter-package dependencies. 261# Inter-package dependencies.
205RDEPENDS:${PN}-compiler += "${PN}-runtime ${PN}-common ${PN}-licensing" 262#
206RDEPENDS:${PN}-mkl += "${PN}-runtime ${PN}-common ${PN}-licensing ${PN}-tbb" 263# Hard RDEPENDS are intentionally minimal -- only the link/load-time
207RDEPENDS:${PN}-tbb += "${PN}-common ${PN}-licensing" 264# closure the dynamic linker will demand at runtime. This lets a
208RDEPENDS:${PN}-dpl += "${PN}-common ${PN}-licensing" 265# consumer install a single subpackage (e.g. intel-oneapi-toolkit-mkl
209RDEPENDS:${PN}-debugger += "${PN}-common ${PN}-licensing" 266# for PyTorch CPU BLAS) without dragging in the full bundle.
210RDEPENDS:${PN}-ipp += "${PN}-common ${PN}-licensing" 267#
211RDEPENDS:${PN}-ccl += "${PN}-runtime ${PN}-common ${PN}-licensing" 268# * -common : setvars.sh / modulefiles / version-umbrella dirs.
212RDEPENDS:${PN}-vtune += "${PN}-common ${PN}-licensing" 269# Required only when the consumer sources env/vars.sh;
213RDEPENDS:${PN}-onednn += "${PN}-common ${PN}-licensing" 270# apps that link the .so files directly do not need it.
214RDEPENDS:${PN}-runtime += "virtual-opencl-icd zlib level-zero-loader bash tcsh libxml2 ${PN}-common ${PN}-licensing" 271# * -runtime : OpenCL/Level Zero ICD shim + libxml2 SONAME compat.
215 272# Required only for SYCL/GPU offload paths. Pure CPU
216# Top-level meta package pulls in the full bundle. 273# MKL/IPP/oneDNN do not need it.
274# * -licensing : EULA text (~1 MB). Kept on every binary subpackage.
275# * -tbb : oneTBB shared library. Required by every component
276# whose libraries link -ltbb (mkl, compiler, onednn).
277RDEPENDS:${PN}-licensing += ""
278RDEPENDS:${PN}-common += "${PN}-licensing"
279RDEPENDS:${PN}-runtime += "virtual-opencl-icd zlib level-zero-loader bash libxml2 ${PN}-licensing"
280RDEPENDS:${PN}-tbb += "${PN}-licensing"
281RDEPENDS:${PN}-dpl += "${PN}-licensing"
282RDEPENDS:${PN}-debugger += "${PN}-licensing"
283RDEPENDS:${PN}-ipp += "${PN}-licensing"
284RDEPENDS:${PN}-ipp-dev += "${PN}-ipp"
285RDEPENDS:${PN}-ipp-staticdev += "${PN}-ipp-dev"
286RDEPENDS:${PN}-vtune += "${PN}-licensing"
287RDEPENDS:${PN}-mkl += "${PN}-tbb ${PN}-licensing"
288RDEPENDS:${PN}-mkl-sycl += "${PN}-mkl ${PN}-runtime"
289RDEPENDS:${PN}-mkl-dev += "${PN}-mkl"
290RDEPENDS:${PN}-mkl-staticdev += "${PN}-mkl-dev"
291RDEPENDS:${PN}-onednn += "${PN}-tbb ${PN}-licensing"
292RDEPENDS:${PN}-compiler += "${PN}-runtime ${PN}-common ${PN}-tbb ${PN}-licensing"
293RDEPENDS:${PN}-ccl += "${PN}-runtime ${PN}-licensing"
294
295# Top-level meta package pulls in the full bundle, including the
296# heavyweight optional pieces (SYCL/GPU offload libs, static archives
297# and development headers) so that "IMAGE_INSTALL += intel-oneapi-toolkit"
298# behaves like the legacy single-package install.
217RDEPENDS:${PN} = " \ 299RDEPENDS:${PN} = " \
218 ${PN}-compiler \ 300 ${PN}-compiler \
219 ${PN}-runtime \ 301 ${PN}-runtime \
220 ${PN}-mkl \ 302 ${PN}-mkl \
303 ${PN}-mkl-sycl \
304 ${PN}-mkl-staticdev \
305 ${PN}-mkl-dev \
221 ${PN}-tbb \ 306 ${PN}-tbb \
222 ${PN}-dpl \ 307 ${PN}-dpl \
223 ${PN}-debugger \ 308 ${PN}-debugger \
224 ${PN}-ipp \ 309 ${PN}-ipp \
310 ${PN}-ipp-staticdev \
311 ${PN}-ipp-dev \
225 ${PN}-ccl \ 312 ${PN}-ccl \
226 ${PN}-vtune \ 313 ${PN}-vtune \
227 ${PN}-onednn \ 314 ${PN}-onednn \