diff options
| author | Yogesh Tyagi <yogesh.tyagi@intel.com> | 2026-05-14 16:12:18 +0800 |
|---|---|---|
| committer | Yogesh Tyagi <yogesh.tyagi@intel.com> | 2026-05-17 23:00:25 +0800 |
| commit | ff8ad78a0e3531060aa712b708cc01178c564a69 (patch) | |
| tree | f1c81915ca379491647b63d7103f119dea49ecf2 | |
| parent | 2a8d44bf7b9faca3935b851107c70754e1cdcae3 (diff) | |
| download | meta-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.bb | 113 |
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" | |||
| 45 | SKIP_FILEDEPS:${PN}-common = "1" | 45 | SKIP_FILEDEPS:${PN}-common = "1" |
| 46 | SKIP_FILEDEPS:${PN}-licensing = "1" | 46 | SKIP_FILEDEPS:${PN}-licensing = "1" |
| 47 | SKIP_FILEDEPS:${PN}-mkl = "1" | 47 | SKIP_FILEDEPS:${PN}-mkl = "1" |
| 48 | SKIP_FILEDEPS:${PN}-mkl-sycl = "1" | ||
| 49 | SKIP_FILEDEPS:${PN}-mkl-staticdev = "1" | ||
| 50 | SKIP_FILEDEPS:${PN}-mkl-dev = "1" | ||
| 48 | SKIP_FILEDEPS:${PN}-tbb = "1" | 51 | SKIP_FILEDEPS:${PN}-tbb = "1" |
| 49 | SKIP_FILEDEPS:${PN}-dpl = "1" | 52 | SKIP_FILEDEPS:${PN}-dpl = "1" |
| 50 | SKIP_FILEDEPS:${PN}-debugger = "1" | 53 | SKIP_FILEDEPS:${PN}-debugger = "1" |
| 51 | SKIP_FILEDEPS:${PN}-ipp = "1" | 54 | SKIP_FILEDEPS:${PN}-ipp = "1" |
| 55 | SKIP_FILEDEPS:${PN}-ipp-staticdev = "1" | ||
| 56 | SKIP_FILEDEPS:${PN}-ipp-dev = "1" | ||
| 52 | SKIP_FILEDEPS:${PN}-ccl = "1" | 57 | SKIP_FILEDEPS:${PN}-ccl = "1" |
| 53 | SKIP_FILEDEPS:${PN}-vtune = "1" | 58 | SKIP_FILEDEPS:${PN}-vtune = "1" |
| 54 | SKIP_FILEDEPS:${PN}-onednn = "1" | 59 | SKIP_FILEDEPS:${PN}-onednn = "1" |
| 55 | 60 | ||
| 56 | ONEAPI_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. | ||
| 64 | ONEAPI_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" | ||
| 57 | INSANE_SKIP:${PN} += "${ONEAPI_INSANE}" | 65 | INSANE_SKIP:${PN} += "${ONEAPI_INSANE}" |
| 58 | INSANE_SKIP:${PN}-runtime += "${ONEAPI_INSANE}" | 66 | INSANE_SKIP:${PN}-runtime += "${ONEAPI_INSANE}" |
| 59 | INSANE_SKIP:${PN}-compiler += "${ONEAPI_INSANE}" | 67 | INSANE_SKIP:${PN}-compiler += "${ONEAPI_INSANE}" |
| 60 | INSANE_SKIP:${PN}-common += "${ONEAPI_INSANE}" | 68 | INSANE_SKIP:${PN}-common += "${ONEAPI_INSANE}" |
| 61 | INSANE_SKIP:${PN}-licensing += "${ONEAPI_INSANE}" | 69 | INSANE_SKIP:${PN}-licensing += "${ONEAPI_INSANE}" |
| 62 | INSANE_SKIP:${PN}-mkl += "${ONEAPI_INSANE}" | 70 | INSANE_SKIP:${PN}-mkl += "${ONEAPI_INSANE}" |
| 71 | INSANE_SKIP:${PN}-mkl-sycl += "${ONEAPI_INSANE}" | ||
| 72 | INSANE_SKIP:${PN}-mkl-staticdev += "${ONEAPI_INSANE}" | ||
| 73 | INSANE_SKIP:${PN}-mkl-dev += "${ONEAPI_INSANE}" | ||
| 63 | INSANE_SKIP:${PN}-tbb += "${ONEAPI_INSANE}" | 74 | INSANE_SKIP:${PN}-tbb += "${ONEAPI_INSANE}" |
| 64 | INSANE_SKIP:${PN}-dpl += "${ONEAPI_INSANE}" | 75 | INSANE_SKIP:${PN}-dpl += "${ONEAPI_INSANE}" |
| 65 | INSANE_SKIP:${PN}-debugger += "${ONEAPI_INSANE}" | 76 | INSANE_SKIP:${PN}-debugger += "${ONEAPI_INSANE}" |
| 66 | INSANE_SKIP:${PN}-ipp += "${ONEAPI_INSANE}" | 77 | INSANE_SKIP:${PN}-ipp += "${ONEAPI_INSANE}" |
| 78 | INSANE_SKIP:${PN}-ipp-staticdev += "${ONEAPI_INSANE}" | ||
| 79 | INSANE_SKIP:${PN}-ipp-dev += "${ONEAPI_INSANE}" | ||
| 67 | INSANE_SKIP:${PN}-ccl += "${ONEAPI_INSANE}" | 80 | INSANE_SKIP:${PN}-ccl += "${ONEAPI_INSANE}" |
| 68 | INSANE_SKIP:${PN}-vtune += "${ONEAPI_INSANE}" | 81 | INSANE_SKIP:${PN}-vtune += "${ONEAPI_INSANE}" |
| 69 | INSANE_SKIP:${PN}-onednn += "${ONEAPI_INSANE}" | 82 | INSANE_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. | ||
| 157 | PACKAGES =+ " \ | 174 | PACKAGES =+ " \ |
| 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 = " \ | |||
| 181 | FILES:${PN}-onednn = "/opt/intel/oneapi/dnnl" | 203 | FILES:${PN}-onednn = "/opt/intel/oneapi/dnnl" |
| 182 | FILES:${PN}-tbb = "/opt/intel/oneapi/tbb" | 204 | FILES:${PN}-tbb = "/opt/intel/oneapi/tbb" |
| 183 | FILES:${PN}-dpl = "/opt/intel/oneapi/dpl" | 205 | FILES:${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 | ||
| 213 | FILES:${PN}-mkl-sycl = "/opt/intel/oneapi/mkl/[0-9]*/lib/libmkl_sycl*" | ||
| 214 | FILES:${PN}-mkl-staticdev = "/opt/intel/oneapi/mkl/[0-9]*/lib/*.a" | ||
| 215 | FILES:${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 | " | ||
| 184 | FILES:${PN}-mkl = "/opt/intel/oneapi/mkl" | 221 | FILES:${PN}-mkl = "/opt/intel/oneapi/mkl" |
| 185 | FILES:${PN}-debugger = "/opt/intel/oneapi/debugger" | 222 | FILES:${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 | ||
| 229 | FILES:${PN}-ipp-staticdev = " \ | ||
| 230 | /opt/intel/oneapi/ipp/[0-9]*/lib/*.a \ | ||
| 231 | /opt/intel/oneapi/ippcp/[0-9]*/lib/*.a \ | ||
| 232 | " | ||
| 233 | FILES:${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 | " | ||
| 186 | FILES:${PN}-ipp = " \ | 243 | FILES:${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. |
| 205 | RDEPENDS:${PN}-compiler += "${PN}-runtime ${PN}-common ${PN}-licensing" | 262 | # |
| 206 | RDEPENDS:${PN}-mkl += "${PN}-runtime ${PN}-common ${PN}-licensing ${PN}-tbb" | 263 | # Hard RDEPENDS are intentionally minimal -- only the link/load-time |
| 207 | RDEPENDS:${PN}-tbb += "${PN}-common ${PN}-licensing" | 264 | # closure the dynamic linker will demand at runtime. This lets a |
| 208 | RDEPENDS:${PN}-dpl += "${PN}-common ${PN}-licensing" | 265 | # consumer install a single subpackage (e.g. intel-oneapi-toolkit-mkl |
| 209 | RDEPENDS:${PN}-debugger += "${PN}-common ${PN}-licensing" | 266 | # for PyTorch CPU BLAS) without dragging in the full bundle. |
| 210 | RDEPENDS:${PN}-ipp += "${PN}-common ${PN}-licensing" | 267 | # |
| 211 | RDEPENDS:${PN}-ccl += "${PN}-runtime ${PN}-common ${PN}-licensing" | 268 | # * -common : setvars.sh / modulefiles / version-umbrella dirs. |
| 212 | RDEPENDS:${PN}-vtune += "${PN}-common ${PN}-licensing" | 269 | # Required only when the consumer sources env/vars.sh; |
| 213 | RDEPENDS:${PN}-onednn += "${PN}-common ${PN}-licensing" | 270 | # apps that link the .so files directly do not need it. |
| 214 | RDEPENDS:${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). | ||
| 277 | RDEPENDS:${PN}-licensing += "" | ||
| 278 | RDEPENDS:${PN}-common += "${PN}-licensing" | ||
| 279 | RDEPENDS:${PN}-runtime += "virtual-opencl-icd zlib level-zero-loader bash libxml2 ${PN}-licensing" | ||
| 280 | RDEPENDS:${PN}-tbb += "${PN}-licensing" | ||
| 281 | RDEPENDS:${PN}-dpl += "${PN}-licensing" | ||
| 282 | RDEPENDS:${PN}-debugger += "${PN}-licensing" | ||
| 283 | RDEPENDS:${PN}-ipp += "${PN}-licensing" | ||
| 284 | RDEPENDS:${PN}-ipp-dev += "${PN}-ipp" | ||
| 285 | RDEPENDS:${PN}-ipp-staticdev += "${PN}-ipp-dev" | ||
| 286 | RDEPENDS:${PN}-vtune += "${PN}-licensing" | ||
| 287 | RDEPENDS:${PN}-mkl += "${PN}-tbb ${PN}-licensing" | ||
| 288 | RDEPENDS:${PN}-mkl-sycl += "${PN}-mkl ${PN}-runtime" | ||
| 289 | RDEPENDS:${PN}-mkl-dev += "${PN}-mkl" | ||
| 290 | RDEPENDS:${PN}-mkl-staticdev += "${PN}-mkl-dev" | ||
| 291 | RDEPENDS:${PN}-onednn += "${PN}-tbb ${PN}-licensing" | ||
| 292 | RDEPENDS:${PN}-compiler += "${PN}-runtime ${PN}-common ${PN}-tbb ${PN}-licensing" | ||
| 293 | RDEPENDS:${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. | ||
| 217 | RDEPENDS:${PN} = " \ | 299 | RDEPENDS:${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 \ |
