summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2025-06-03 22:17:37 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2025-06-05 11:02:22 +0100
commitba4fd5229893a24ef1f305c0b04facf2329b16df (patch)
treef4fa1fc6f4b410c55fc9ca1592713f04d7bacb0b
parentb168cb41678e7bca3225ec4fbd451e411482626b (diff)
downloadpoky-ba4fd5229893a24ef1f305c0b04facf2329b16df.tar.gz
classes/recipes-devtools: Drop icecc from OE-Core
There are reports this class has been broken since mickledore which suggests there are limited numbers of users. It doesn't have any automated testing and it would be hard to setup and maintain a testing environment for it. The original users/manintainers aren't using it now. For those reasons, drop from OE-Core as we're not in a good position to maintain it. I'd suggest anyone wanting to use it creates a dedicated layer with maintainers who are in a position to test/develop it appropriately since it is standalone code. (From OE-Core rev: ecf8c386cf83ea235bdc4ee0da6671a395a4c358) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/classes-recipe/populate_sdk_ext.bbclass2
-rw-r--r--meta/classes/icecc.bbclass443
-rw-r--r--meta/conf/distro/include/distro_alias.inc1
-rw-r--r--meta/conf/distro/include/maintainers.inc2
-rw-r--r--meta/conf/documentation.conf5
-rw-r--r--meta/conf/layer.conf1
-rwxr-xr-xmeta/recipes-devtools/icecc-create-env/icecc-create-env/icecc-create-env382
-rw-r--r--meta/recipes-devtools/icecc-create-env/icecc-create-env_0.1.bb39
-rw-r--r--meta/recipes-devtools/icecc-toolchain/icecc-toolchain/icecc-env.sh49
-rw-r--r--meta/recipes-devtools/icecc-toolchain/icecc-toolchain/icecc-setup.sh38
-rw-r--r--meta/recipes-devtools/icecc-toolchain/nativesdk-icecc-toolchain_0.1.bb39
11 files changed, 1 insertions, 1000 deletions
diff --git a/meta/classes-recipe/populate_sdk_ext.bbclass b/meta/classes-recipe/populate_sdk_ext.bbclass
index de4799f013..2d7d661d25 100644
--- a/meta/classes-recipe/populate_sdk_ext.bbclass
+++ b/meta/classes-recipe/populate_sdk_ext.bbclass
@@ -40,7 +40,7 @@ ESDK_LOCALCONF_REMOVE ?= "CONF_VERSION \
40 TMPDIR \ 40 TMPDIR \
41 BB_SERVER_TIMEOUT \ 41 BB_SERVER_TIMEOUT \
42 " 42 "
43ESDK_CLASS_INHERIT_DISABLE ?= "buildhistory icecc" 43ESDK_CLASS_INHERIT_DISABLE ?= "buildhistory"
44SDK_UPDATE_URL ?= "" 44SDK_UPDATE_URL ?= ""
45 45
46SDK_TARGETS ?= "${PN}" 46SDK_TARGETS ?= "${PN}"
diff --git a/meta/classes/icecc.bbclass b/meta/classes/icecc.bbclass
deleted file mode 100644
index 8a48f2ad63..0000000000
--- a/meta/classes/icecc.bbclass
+++ /dev/null
@@ -1,443 +0,0 @@
1#
2# Copyright OpenEmbedded Contributors
3#
4# SPDX-License-Identifier: MIT
5#
6
7# Icecream distributed compiling support
8#
9# Stages directories with symlinks from gcc/g++ to icecc, for both
10# native and cross compilers. Depending on each configure or compile,
11# the directories are added at the head of the PATH list and ICECC_CXX
12# and ICECC_CC are set.
13#
14# For the cross compiler, creates a tar.gz of our toolchain and sets
15# ICECC_VERSION accordingly.
16#
17# The class now handles all 3 different compile 'stages' (i.e native ,cross-kernel and target) creating the
18# necessary environment tar.gz file to be used by the remote machines.
19# It also supports meta-toolchain generation.
20#
21# If ICECC_PATH is not set in local.conf then the class will try to locate it using 'bb.utils.which'
22# but nothing is sure. ;)
23#
24# If ICECC_ENV_EXEC is set in local.conf, then it should point to the icecc-create-env script provided by the user
25# or the default one provided by icecc-create-env_0.1.bb will be used.
26# (NOTE that this is a modified version of the needed script and *not the one that comes with icecream*).
27#
28# User can specify if specific recipes or recipes inheriting specific classes should not use icecc to distribute
29# compile jobs to remote machines, but handle them locally by defining ICECC_CLASS_DISABLE and ICECC_RECIPE_DISABLE
30# with the appropriate values in local.conf. In addition the user can force to enable icecc for recipes
31# which set an empty PARALLEL_MAKE variable by defining ICECC_RECIPE_ENABLE.
32#
33#########################################################################################
34# Error checking is kept to minimum so double check any parameters you pass to the class
35#########################################################################################
36
37BB_BASEHASH_IGNORE_VARS += "ICECC_PARALLEL_MAKE ICECC_DISABLED ICECC_RECIPE_DISABLE \
38 ICECC_CLASS_DISABLE ICECC_RECIPE_ENABLE ICECC_PATH ICECC_ENV_EXEC \
39 ICECC_CARET_WORKAROUND ICECC_CFLAGS ICECC_ENV_VERSION \
40 ICECC_DEBUG ICECC_LOGFILE ICECC_REPEAT_RATE ICECC_PREFERRED_HOST \
41 ICECC_CLANG_REMOTE_CPP ICECC_IGNORE_UNVERIFIED ICECC_TEST_SOCKET \
42 ICECC_ENV_DEBUG ICECC_REMOTE_CPP \
43 "
44
45ICECC_ENV_EXEC ?= "${STAGING_BINDIR_NATIVE}/icecc-create-env"
46
47HOSTTOOLS_NONFATAL += "icecc patchelf"
48
49# This version can be incremented when changes are made to the environment that
50# invalidate the version on the compile nodes. Changing it will cause a new
51# environment to be created.
52#
53# A useful thing to do for testing icecream changes locally is to add a
54# subversion in local.conf:
55# ICECC_ENV_VERSION:append = "-my-ver-1"
56ICECC_ENV_VERSION = "2"
57
58# Default to disabling the caret workaround, If set to "1" in local.conf, icecc
59# will locally recompile any files that have warnings, which can adversely
60# affect performance.
61#
62# See: https://github.com/icecc/icecream/issues/190
63export ICECC_CARET_WORKAROUND ??= "0"
64
65export ICECC_REMOTE_CPP ??= "0"
66
67ICECC_CFLAGS = ""
68CFLAGS += "${ICECC_CFLAGS}"
69CXXFLAGS += "${ICECC_CFLAGS}"
70
71# Debug flags when generating environments
72ICECC_ENV_DEBUG ??= ""
73
74# Disable recipe list contains a list of recipes that can not distribute
75# compile tasks for one reason or the other. When adding a new entry, please
76# document why (how it failed) so that we can re-evaluate it later e.g. when
77# there is a new version.
78#
79# libgcc-initial - fails with CPP sanity check error if host sysroot contains
80# cross gcc built for another target tune/variant.
81# pixman - prng_state: TLS reference mismatches non-TLS reference, possibly due to
82# pragma omp threadprivate(prng_state).
83# systemtap - _HelperSDT.c undefs macros and uses the identifiers in macros emitting
84# inline assembly.
85# target-sdk-provides-dummy - ${HOST_PREFIX} is empty which triggers the "NULL
86# prefix" error.
87ICECC_RECIPE_DISABLE += "\
88 libgcc-initial \
89 pixman \
90 systemtap \
91 target-sdk-provides-dummy \
92 "
93
94# Classes that should not use icecc. When adding a new entry, please
95# document why (how it failed) so that we can re-evaluate it later.
96#
97# image - images aren't compiling, but the testing framework for images captures
98# PARALLEL_MAKE as part of the test environment. Many tests won't use
99# icecream, but leaving the high level of parallelism can cause them to
100# consume an unnecessary amount of resources.
101ICECC_CLASS_DISABLE += "\
102 image \
103 "
104
105def get_icecc_dep(d):
106 # INHIBIT_DEFAULT_DEPS doesn't apply to the patch command. Whether or not
107 # we need that built is the responsibility of the patch function / class, not
108 # the application.
109 if not d.getVar('INHIBIT_DEFAULT_DEPS'):
110 return "icecc-create-env-native"
111 return ""
112
113DEPENDS:prepend = "${@get_icecc_dep(d)} "
114
115get_cross_kernel_cc[vardepsexclude] += "KERNEL_CC"
116def get_cross_kernel_cc(bb,d):
117 if not icecc_is_kernel(bb, d):
118 return None
119
120 # evaluate the expression by the shell if necessary
121 kernel_cc = d.getVar('KERNEL_CC')
122 if '`' in kernel_cc or '$(' in kernel_cc:
123 import subprocess
124 kernel_cc = subprocess.check_output("echo %s" % kernel_cc, shell=True).decode("utf-8")[:-1]
125
126 kernel_cc = kernel_cc.replace('ccache', '').strip()
127 kernel_cc = kernel_cc.split(' ')[0]
128 kernel_cc = kernel_cc.strip()
129 return kernel_cc
130
131def get_icecc(d):
132 return d.getVar('ICECC_PATH') or bb.utils.which(os.getenv("PATH"), "icecc")
133
134def use_icecc(bb,d):
135 if d.getVar('ICECC_DISABLED') == "1":
136 # don't even try it, when explicitly disabled
137 return "no"
138
139 # allarch recipes don't use compiler
140 if icecc_is_allarch(bb, d):
141 return "no"
142
143 if icecc_is_cross_canadian(bb, d):
144 return "no"
145
146 pn = d.getVar('PN')
147 bpn = d.getVar('BPN')
148
149 # Enable/disable checks are made against BPN, because there is a good
150 # chance that if icecc should be skipped for a recipe, it should be skipped
151 # for all the variants of that recipe. PN is still checked in case a user
152 # specified a more specific recipe.
153 check_pn = set([pn, bpn])
154
155 class_disable = (d.getVar('ICECC_CLASS_DISABLE') or "").split()
156
157 for bbclass in class_disable:
158 if bb.data.inherits_class(bbclass, d):
159 bb.debug(1, "%s: bbclass %s found in disable, disable icecc" % (pn, bbclass))
160 return "no"
161
162 disabled_recipes = (d.getVar('ICECC_RECIPE_DISABLE') or "").split()
163 enabled_recipes = (d.getVar('ICECC_RECIPE_ENABLE') or "").split()
164
165 if check_pn & set(disabled_recipes):
166 bb.debug(1, "%s: found in disable list, disable icecc" % pn)
167 return "no"
168
169 if check_pn & set(enabled_recipes):
170 bb.debug(1, "%s: found in enabled recipes list, enable icecc" % pn)
171 return "yes"
172
173 if d.getVar('PARALLEL_MAKE') == "":
174 bb.debug(1, "%s: has empty PARALLEL_MAKE, disable icecc" % pn)
175 return "no"
176
177 return "yes"
178
179def icecc_is_allarch(bb, d):
180 return d.getVar("PACKAGE_ARCH") == "all"
181
182def icecc_is_kernel(bb, d):
183 return \
184 bb.data.inherits_class("kernel", d);
185
186def icecc_is_native(bb, d):
187 return \
188 bb.data.inherits_class("cross", d) or \
189 bb.data.inherits_class("native", d);
190
191def icecc_is_cross_canadian(bb, d):
192 return bb.data.inherits_class("cross-canadian", d)
193
194def icecc_dir(bb, d):
195 return d.expand('${TMPDIR}/work-shared/ice')
196
197# Don't pollute allarch signatures with TARGET_FPU
198icecc_version[vardepsexclude] += "TARGET_FPU"
199def icecc_version(bb, d):
200 if use_icecc(bb, d) == "no":
201 return ""
202
203 parallel = d.getVar('ICECC_PARALLEL_MAKE') or ""
204 if not d.getVar('PARALLEL_MAKE') == "" and parallel:
205 d.setVar("PARALLEL_MAKE", parallel)
206
207 # Disable showing the caret in the GCC compiler output if the workaround is
208 # disabled
209 if d.getVar('ICECC_CARET_WORKAROUND') == '0':
210 d.setVar('ICECC_CFLAGS', '-fno-diagnostics-show-caret')
211
212 if icecc_is_native(bb, d):
213 archive_name = "local-host-env"
214 elif d.expand('${HOST_PREFIX}') == "":
215 bb.fatal(d.expand("${PN}"), " NULL prefix")
216 else:
217 prefix = d.expand('${HOST_PREFIX}' )
218 distro = d.expand('${DISTRO}')
219 target_sys = d.expand('${TARGET_SYS}')
220 float = d.getVar('TARGET_FPU') or "hard"
221 archive_name = prefix + distro + "-" + target_sys + "-" + float
222 if icecc_is_kernel(bb, d):
223 archive_name += "-kernel"
224
225 import socket
226 ice_dir = icecc_dir(bb, d)
227 tar_file = os.path.join(ice_dir, "{archive}-{version}-@VERSION@-{hostname}.tar.gz".format(
228 archive=archive_name,
229 version=d.getVar('ICECC_ENV_VERSION'),
230 hostname=socket.gethostname()
231 ))
232
233 return tar_file
234
235def icecc_path(bb,d):
236 if use_icecc(bb, d) == "no":
237 # don't create unnecessary directories when icecc is disabled
238 return
239
240 staging = os.path.join(d.expand('${STAGING_BINDIR}'), "ice")
241 if icecc_is_kernel(bb, d):
242 staging += "-kernel"
243
244 return staging
245
246def icecc_get_external_tool(bb, d, tool):
247 external_toolchain_bindir = d.expand('${EXTERNAL_TOOLCHAIN}${bindir_cross}')
248 target_prefix = d.expand('${TARGET_PREFIX}')
249 return os.path.join(external_toolchain_bindir, '%s%s' % (target_prefix, tool))
250
251def icecc_get_tool_link(tool, d):
252 import subprocess
253 try:
254 return subprocess.check_output("readlink -f %s" % tool, shell=True).decode("utf-8")[:-1]
255 except subprocess.CalledProcessError as e:
256 bb.note("icecc: one of the tools probably disappeared during recipe parsing, cmd readlink -f %s returned %d:\n%s" % (tool, e.returncode, e.output.decode("utf-8")))
257 return tool
258
259def icecc_get_path_tool(tool, d):
260 # This is a little ugly, but we want to make sure we add an actual
261 # compiler to the toolchain, not ccache. Some distros (e.g. Fedora)
262 # have ccache enabled by default using symlinks in PATH, meaning ccache
263 # would be found first when looking for the compiler.
264 paths = os.getenv("PATH").split(':')
265 while True:
266 p, hist = bb.utils.which(':'.join(paths), tool, history=True)
267 if not p or os.path.basename(icecc_get_tool_link(p, d)) != 'ccache':
268 return p
269 paths = paths[len(hist):]
270
271 return ""
272
273# Don't pollute native signatures with target TUNE_PKGARCH through STAGING_BINDIR_TOOLCHAIN
274icecc_get_tool[vardepsexclude] += "STAGING_BINDIR_TOOLCHAIN"
275def icecc_get_tool(bb, d, tool):
276 if icecc_is_native(bb, d):
277 return icecc_get_path_tool(tool, d)
278 elif icecc_is_kernel(bb, d):
279 return icecc_get_path_tool(get_cross_kernel_cc(bb, d), d)
280 else:
281 ice_dir = d.expand('${STAGING_BINDIR_TOOLCHAIN}')
282 target_sys = d.expand('${TARGET_SYS}')
283 for p in ice_dir.split(':'):
284 tool_bin = os.path.join(p, "%s-%s" % (target_sys, tool))
285 if os.path.isfile(tool_bin):
286 return tool_bin
287 external_tool_bin = icecc_get_external_tool(bb, d, tool)
288 if os.path.isfile(external_tool_bin):
289 return external_tool_bin
290 return ""
291
292def icecc_get_and_check_tool(bb, d, tool):
293 # Check that g++ or gcc is not a symbolic link to icecc binary in
294 # PATH or icecc-create-env script will silently create an invalid
295 # compiler environment package.
296 t = icecc_get_tool(bb, d, tool)
297 if t:
298 link_path = icecc_get_tool_link(t, d)
299 if link_path == get_icecc(d):
300 bb.error("%s is a symlink to %s in PATH and this prevents icecc from working" % (t, link_path))
301 return ""
302 else:
303 return t
304 else:
305 return t
306
307set_icecc_env[vardepsexclude] += "KERNEL_CC"
308python set_icecc_env() {
309 import os
310 import subprocess
311
312 if use_icecc(bb, d) == "no":
313 return
314 ICECC_VERSION = icecc_version(bb, d)
315 if not ICECC_VERSION:
316 bb.warn("Cannot use icecc: could not get ICECC_VERSION")
317 return
318
319 ICE_PATH = icecc_path(bb, d)
320 if not ICE_PATH:
321 bb.warn("Cannot use icecc: could not get ICE_PATH")
322 return
323
324 ICECC_BIN = get_icecc(d)
325 if not ICECC_BIN:
326 bb.warn("Cannot use icecc: icecc binary not found")
327 return
328
329 if (not bb.utils.which(os.getenv("PATH"), "patchelf") and
330 not bb.utils.which(os.getenv("PATH"), "patchelf-uninative")):
331 bb.warn("Cannot use icecc: patchelf not found")
332 return
333
334 ICECC_CC = icecc_get_and_check_tool(bb, d, "gcc")
335 ICECC_CXX = icecc_get_and_check_tool(bb, d, "g++")
336 # cannot use icecc_get_and_check_tool here because it assumes as without target_sys prefix
337 ICECC_WHICH_AS = bb.utils.which(os.getenv('PATH'), 'as')
338 if (not os.access(ICECC_CC, os.X_OK) or
339 not os.access(ICECC_CXX, os.X_OK)):
340 bb.note("Cannot use icecc: could not get ICECC_CC or ICECC_CXX")
341 return
342
343 cmd = []
344 try:
345 cmd = [ICECC_CC, '-dumpversion']
346 ICE_VERSION = subprocess.check_output(cmd).decode("utf-8").strip()
347 except subprocess.CalledProcessError as e:
348 bb.warn("icecc: '{}' returned {}:\n{}".format(cmd, e.returncode, e.output.decode("utf-8")))
349 return
350
351 ICECC_VERSION = ICECC_VERSION.replace("@VERSION@", ICE_VERSION)
352
353 if not os.access(d.getVar('ICECC_ENV_EXEC'), os.X_OK):
354 bb.warn("Cannot use icecc: invalid ICECC_ENV_EXEC")
355 return
356
357 # Create symlinks to icecc and wrapper-scripts in the recipe-sysroot directory
358 symlink_path = os.path.join(ICE_PATH, "symlinks")
359 bb.utils.mkdirhier(symlink_path)
360 compilers = []
361 if icecc_is_kernel(bb, d):
362 compilers.append(get_cross_kernel_cc(bb,d))
363 else:
364 host_prefix = d.getVar('HOST_PREFIX')
365 compilers.extend([host_prefix + 'gcc', host_prefix + 'g++'])
366
367 for compiler in compilers:
368 try:
369 os.symlink(ICECC_BIN, symlink_path + '/' + compiler)
370 except FileExistsError:
371 pass
372 wrapper_script = os.path.join(ICE_PATH, compiler)
373 with open(wrapper_script, 'w') as fd:
374 fd.write("#!/bin/sh -e\n")
375 fd.write("export ICECC_VERSION={}\n".format(ICECC_VERSION))
376 fd.write("export ICECC_CC={}\n".format(ICECC_CC))
377 fd.write("export ICECC_CXX={}\n".format(ICECC_CXX))
378 fd.write("{} \"$@\"\n".format(os.path.join(ICE_PATH, "symlinks", compiler)))
379 os.chmod(wrapper_script, 0o755)
380
381 try:
382 cmd = [ICECC_CC, '-print-prog-name=as']
383 ICECC_AS = subprocess.check_output(cmd).decode("utf-8").strip()
384 except subprocess.CalledProcessError as e:
385 bb.warn("icecc: '{}' returned {}:\n{}".format(cmd, e.returncode, e.output.decode("utf-8")))
386 return
387 # for target recipes should return something like:
388 # /OE/tmp-eglibc/sysroots/x86_64-linux/usr/libexec/arm920tt-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/4.8.2/as
389 # and just "as" for native, if it returns "as" in current directory (for whatever reason) use "as" from PATH
390 if not os.path.dirname(ICECC_AS):
391 ICECC_AS = ICECC_WHICH_AS
392
393 if not os.path.isfile(ICECC_VERSION + ".done"):
394 bb.utils.mkdirhier(os.path.dirname(ICECC_VERSION))
395
396 # the ICECC_VERSION generation step must be locked by a mutex
397 # in order to prevent race conditions
398 lock = bb.utils.lockfile(ICECC_VERSION + '.lock')
399 try:
400 cmd = [d.getVar('ICECC_ENV_EXEC')]
401 if d.getVar('ICECC_ENV_DEBUG'):
402 cmd.append(d.getVar('ICECC_ENV_DEBUG'))
403 cmd.extend([ICECC_CC, ICECC_CXX, ICECC_AS, ICECC_VERSION])
404 subprocess.check_output(cmd)
405 cmd = ['touch', ICECC_VERSION + '.done']
406 subprocess.check_output(cmd)
407 except subprocess.CalledProcessError as e:
408 bb.warn("icecc: '{}' returned {}:\n{}".format(cmd, e.returncode, e.output.decode("utf-8")))
409 bb.utils.unlockfile(lock)
410 return
411 bb.utils.unlockfile(lock)
412
413 # Don't let ccache find the icecream compiler links that have been created, otherwise
414 # it can end up invoking icecream recursively.
415 d.setVar('CCACHE_PATH', d.getVar('PATH'))
416 d.setVar('CCACHE_DISABLE', '1')
417
418 d.prependVar('PATH', ICE_PATH + ':')
419
420 bb.note("Using icecc path: {}".format(ICE_PATH))
421 bb.note("Using icecc tarball: {}".format(ICECC_VERSION))
422}
423
424do_configure[prefuncs] += "set_icecc_env"
425do_compile[prefuncs] += "set_icecc_env"
426do_compile_kernelmodules[prefuncs] += "set_icecc_env"
427do_install[prefuncs] += "set_icecc_env"
428
429# Icecream is not (currently) supported in the extensible SDK
430ICECC_SDK_HOST_TASK = "nativesdk-icecc-toolchain"
431ICECC_SDK_HOST_TASK:task-populate-sdk-ext = ""
432
433# Don't include icecream in uninative tarball
434ICECC_SDK_HOST_TASK:pn-uninative-tarball = ""
435
436# Add the toolchain scripts to the SDK
437TOOLCHAIN_HOST_TASK:append = " ${ICECC_SDK_HOST_TASK}"
438
439python () {
440 if d.getVar('ICECC_DISABLED') != "1":
441 for task in ['do_configure', 'do_compile', 'do_compile_kernelmodules', 'do_install']:
442 d.setVarFlag(task, 'network', '1')
443}
diff --git a/meta/conf/distro/include/distro_alias.inc b/meta/conf/distro/include/distro_alias.inc
index 8052464f1d..20882523c2 100644
--- a/meta/conf/distro/include/distro_alias.inc
+++ b/meta/conf/distro/include/distro_alias.inc
@@ -105,7 +105,6 @@ DISTRO_PN_ALIAS:pn-gtk-icon-utils-native = "OSPDT"
105DISTRO_PN_ALIAS:pn-systemd-boot = "Ubuntu=systemd-boot Fedora=systemd-boot" 105DISTRO_PN_ALIAS:pn-systemd-boot = "Ubuntu=systemd-boot Fedora=systemd-boot"
106DISTRO_PN_ALIAS:pn-hello-mod = "OE-Core" 106DISTRO_PN_ALIAS:pn-hello-mod = "OE-Core"
107DISTRO_PN_ALIAS:pn-hwlatdetect = "OSPDT" 107DISTRO_PN_ALIAS:pn-hwlatdetect = "OSPDT"
108DISTRO_PN_ALIAS:pn-icecc-create-env = "OE-Core"
109DISTRO_PN_ALIAS:pn-init-ifupdown = "Debian=ifupdown Ubuntu=ifupdown" 108DISTRO_PN_ALIAS:pn-init-ifupdown = "Debian=ifupdown Ubuntu=ifupdown"
110DISTRO_PN_ALIAS:pn-initramfs-boot = "OE-Core" 109DISTRO_PN_ALIAS:pn-initramfs-boot = "OE-Core"
111DISTRO_PN_ALIAS:pn-initramfs-framework = "OE-Core" 110DISTRO_PN_ALIAS:pn-initramfs-framework = "OE-Core"
diff --git a/meta/conf/distro/include/maintainers.inc b/meta/conf/distro/include/maintainers.inc
index 674779fa3b..5c315d58cf 100644
--- a/meta/conf/distro/include/maintainers.inc
+++ b/meta/conf/distro/include/maintainers.inc
@@ -272,7 +272,6 @@ RECIPE_MAINTAINER:pn-hicolor-icon-theme = "Anuj Mittal <anuj.mittal@intel.com>"
272RECIPE_MAINTAINER:pn-hwdata = "Hiago De Franco <hiago.franco@toradex.com>" 272RECIPE_MAINTAINER:pn-hwdata = "Hiago De Franco <hiago.franco@toradex.com>"
273RECIPE_MAINTAINER:pn-hwlatdetect = "Unassigned <unassigned@yoctoproject.org>" 273RECIPE_MAINTAINER:pn-hwlatdetect = "Unassigned <unassigned@yoctoproject.org>"
274RECIPE_MAINTAINER:pn-i2c-tools = "Anuj Mittal <anuj.mittal@intel.com>" 274RECIPE_MAINTAINER:pn-i2c-tools = "Anuj Mittal <anuj.mittal@intel.com>"
275RECIPE_MAINTAINER:pn-icecc-create-env = "Joshua Watt <JPEWhacker@gmail.com>"
276RECIPE_MAINTAINER:pn-icon-naming-utils = "Richard Purdie <richard.purdie@linuxfoundation.org>" 275RECIPE_MAINTAINER:pn-icon-naming-utils = "Richard Purdie <richard.purdie@linuxfoundation.org>"
277RECIPE_MAINTAINER:pn-icu = "Unassigned <unassigned@yoctoproject.org>" 276RECIPE_MAINTAINER:pn-icu = "Unassigned <unassigned@yoctoproject.org>"
278RECIPE_MAINTAINER:pn-ifupdown = "Anuj Mittal <anuj.mittal@intel.com>" 277RECIPE_MAINTAINER:pn-ifupdown = "Anuj Mittal <anuj.mittal@intel.com>"
@@ -548,7 +547,6 @@ RECIPE_MAINTAINER:pn-musl-utils = "Khem Raj <raj.khem@gmail.com>"
548RECIPE_MAINTAINER:pn-nasm = "Richard Purdie <richard.purdie@linuxfoundation.org>" 547RECIPE_MAINTAINER:pn-nasm = "Richard Purdie <richard.purdie@linuxfoundation.org>"
549RECIPE_MAINTAINER:pn-nativesdk-buildtools-perl-dummy = "Richard Purdie <richard.purdie@linuxfoundation.org>" 548RECIPE_MAINTAINER:pn-nativesdk-buildtools-perl-dummy = "Richard Purdie <richard.purdie@linuxfoundation.org>"
550RECIPE_MAINTAINER:pn-nativesdk-clang-glue = "Khem Raj <raj.khem@gmail.com>" 549RECIPE_MAINTAINER:pn-nativesdk-clang-glue = "Khem Raj <raj.khem@gmail.com>"
551RECIPE_MAINTAINER:pn-nativesdk-icecc-toolchain = "Joshua Watt <JPEWhacker@gmail.com>"
552RECIPE_MAINTAINER:pn-nativesdk-libtool = "Richard Purdie <richard.purdie@linuxfoundation.org>" 550RECIPE_MAINTAINER:pn-nativesdk-libtool = "Richard Purdie <richard.purdie@linuxfoundation.org>"
553RECIPE_MAINTAINER:pn-nativesdk-packagegroup-sdk-host = "Ross Burton <ross.burton@arm.com>" 551RECIPE_MAINTAINER:pn-nativesdk-packagegroup-sdk-host = "Ross Burton <ross.burton@arm.com>"
554RECIPE_MAINTAINER:pn-nativesdk-qemu-helper = "Richard Purdie <richard.purdie@linuxfoundation.org>" 552RECIPE_MAINTAINER:pn-nativesdk-qemu-helper = "Richard Purdie <richard.purdie@linuxfoundation.org>"
diff --git a/meta/conf/documentation.conf b/meta/conf/documentation.conf
index 570a604494..2710485227 100644
--- a/meta/conf/documentation.conf
+++ b/meta/conf/documentation.conf
@@ -201,11 +201,6 @@ HOST_VENDOR[doc] = "The name of the vendor. Normally same as the TARGET_VENDOR."
201 201
202#I 202#I
203 203
204ICECC_ENV_EXEC[doc] = "Points to the icecc-create-env script that you provide."
205ICECC_PATH[doc] = "The location of the icecc binary."
206ICECC_CLASS_DISABLE[doc] = "Identifies user classes that you do not want the Icecream distributed compile support to consider."
207ICECC_RECIPE_DISABLE[doc] = "Identifies user recipes that you do not want the Icecream distributed compile support to consider."
208ICECC_RECIPE_ENABLE[doc] = "Identifies user recipes that use an empty PARALLEL_MAKE variable that you want to force remote distributed compilation on using the Icecream distributed compile support."
209IMAGE_BASENAME[doc] = "The base name of image output files." 204IMAGE_BASENAME[doc] = "The base name of image output files."
210IMAGE_BOOT_FILES[doc] = "Whitespace separated list of files from ${DEPLOY_DIR_IMAGE} to place in boot partition. Entries will be installed under a same name as the source file. To change the destination file name, pass a desired name after a semicolon (eg. u-boot.img;uboot)." 205IMAGE_BOOT_FILES[doc] = "Whitespace separated list of files from ${DEPLOY_DIR_IMAGE} to place in boot partition. Entries will be installed under a same name as the source file. To change the destination file name, pass a desired name after a semicolon (eg. u-boot.img;uboot)."
211IMAGE_CLASSES[doc] = "A list of classes that all images should inherit." 206IMAGE_CLASSES[doc] = "A list of classes that all images should inherit."
diff --git a/meta/conf/layer.conf b/meta/conf/layer.conf
index e19431e724..44267ce8e2 100644
--- a/meta/conf/layer.conf
+++ b/meta/conf/layer.conf
@@ -53,7 +53,6 @@ SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += " \
53 *->quilt-native \ 53 *->quilt-native \
54 *->subversion-native \ 54 *->subversion-native \
55 *->git-native \ 55 *->git-native \
56 *->icecc-create-env-native \
57 gcc-cross-${TARGET_ARCH}->linux-libc-headers \ 56 gcc-cross-${TARGET_ARCH}->linux-libc-headers \
58 ppp-dialin->ppp \ 57 ppp-dialin->ppp \
59 resolvconf->bash \ 58 resolvconf->bash \
diff --git a/meta/recipes-devtools/icecc-create-env/icecc-create-env/icecc-create-env b/meta/recipes-devtools/icecc-create-env/icecc-create-env/icecc-create-env
deleted file mode 100755
index 64b5e20785..0000000000
--- a/meta/recipes-devtools/icecc-create-env/icecc-create-env/icecc-create-env
+++ /dev/null
@@ -1,382 +0,0 @@
1#! /usr/bin/env bash
2# icecc -- A simple distributed compiler system
3#
4# Copyright (C) 2004 by the Icecream Authors
5# GPL
6
7target_paths=
8target_aliases=
9
10# Always prints, optionally to a log file
11print_output ()
12{
13 if test -n "$log_path"; then
14 echo "$@" | tee -a "$log_path"
15 else
16 echo "$@"
17 fi
18}
19
20# Only prints if the debug flag is specified
21print_debug ()
22{
23 if test -n "$debug"; then
24 print_output "$@"
25 fi
26}
27
28is_dynamic_elf ()
29{
30 # Is the file an dynamically linked ELF executable?
31 (file -L "$1" | grep 'ELF' > /dev/null 2>&1) && (! file -L "$1" | grep 'static' > /dev/null 2>&1)
32}
33
34fix_rpath ()
35{
36 # Patches the RPATH for a file. When the program is executed in the chroot
37 # be iceccd, /proc is not mounted. As such, $ORIGIN can't be resolved. To
38 # work around this, replace all instances of $ORIGIN in RPATH with the
39 # known chroot path to the executables directory
40 local path="$1"
41 local origin="$2"
42 if ! is_dynamic_elf "$path"; then
43 return
44 fi
45 local old_rpath="`$PATCHELF --print-rpath "$path"`"
46 local new_rpath="`echo "$old_rpath" | \
47 sed 's/.*\[\(.*\)\]/\1/g' | \
48 sed "s,\\\$ORIGIN,/$origin,g"`"
49
50 if test -n "$new_rpath"; then
51 print_debug "Converting RPATH '$old_rpath' -> '$new_rpath'"
52 $PATCHELF --set-rpath "$new_rpath" "$path"
53 fi
54}
55
56add_path ()
57{
58 case " $target_paths " in
59 *" $1 "*)
60 return 1
61 ;;
62 *)
63 target_paths="$target_paths $1"
64 return 0
65 ;;
66 esac
67}
68
69add_alias ()
70{
71 if test "$1" != "$2"; then
72 local alias="$1=$2"
73 case " $target_aliases " in
74 *" $alias "*)
75 ;;
76 *)
77 print_debug "Adding alias '$2' -> '$1'"
78 target_aliases="$target_aliases $alias"
79 ;;
80 esac
81 fi
82}
83
84normalize_path ()
85{
86 # Normalizes the path to a file or directory, removing all "." and ".."
87 # entries. Use pwd -L to explicitly prevent symlink expansion
88 local path=$1
89 if test -f "$path"; then
90 pushd $(dirname $path) > /dev/null 2>&1
91 dir_path=$(pwd -L)
92 path=$dir_path/$(basename $path)
93 popd > /dev/null 2>&1
94 elif test -d "$path"; then
95 pushd $path > /dev/null 2>&1
96 path=$(pwd -L)
97 popd > /dev/null 2>&1
98 fi
99 echo $path
100}
101
102add_file_common()
103{
104 local p="$1"
105 local path="$2"
106 local alias="$3"
107
108 add_alias "$path" "$p"
109 if test -n "$alias"; then
110 add_alias "$path" "$alias"
111 fi
112
113 add_path "$path" || return 1
114 print_debug "Adding file '$path'"
115
116 return 0
117}
118
119add_deps()
120{
121 local path="$1"
122 local interp="$2"
123
124 if test -n "$interp" && test -x "$interp"; then
125 # Use the dynamic loaders --list argument to list the
126 # dependencies. The program may have a different program
127 # interpreter (typical when using uninative tarballs), which is
128 # why we can't just call ldd.
129 deps="`$interp --list "$path"`"
130 else
131 deps="`ldd "$path"`"
132 fi
133
134 print_debug "Dependencies are:"
135 print_debug "$deps"
136 if test -n "$deps"; then
137 for lib in $deps; do
138 # ldd now outputs ld as /lib/ld-linux.so.xx on current nptl
139 # based glibc this regexp parse the outputs like:
140 # ldd /usr/bin/gcc
141 # linux-gate.so.1 => (0xffffe000)
142 # libc.so.6 => /lib/tls/libc.so.6 (0xb7e81000)
143 # /lib/ld-linux.so.2 (0xb7fe8000)
144 # covering both situations ( with => and without )
145 lib="`echo "$lib" | sed -n 's,^[^/]*\(/[^ ]*\).*,\1,p'`"
146
147 test -f "$lib" || continue
148 # Check whether the same library also exists in the parent
149 # directory, and prefer that on the assumption that it is a
150 # more generic one.
151 local baselib=`echo "$lib" | sed 's,\(/[^/]*\)/.*\(/[^/]*\)$,\1\2,'`
152 test -f "$baselib" && lib=$baselib
153 add_dependency "$lib" "$interp"
154 done
155 fi
156}
157
158add_dependency()
159{
160 local p=`normalize_path $1`
161 # readlink is required for Yocto, so we can use it
162 local path=`readlink -f "$p"`
163 local interp="$2"
164
165 add_file_common "$p" "$path" || return
166
167 if test -x "$path" && is_dynamic_elf "$path"; then
168 add_deps "$path" "$interp"
169 fi
170}
171
172add_file ()
173{
174 local p=`normalize_path $1`
175 # readlink is required for Yocto, so we can use it
176 local path=`readlink -f "$p"`
177
178 add_file_common "$p" "$path" "$2" || return
179
180 if test -x "$path" && is_dynamic_elf "$path"; then
181 # Request the program interpeter (dynamic loader)
182 interp=`readelf -W -l "$path" | grep "Requesting program interpreter:" | sed "s/\s*\[Requesting program interpreter:\s*\(.*\)\]/\1/g"`
183 print_debug "Interpreter is '$interp'"
184
185 add_deps "$path" "$interp"
186 fi
187}
188
189while test -n "$1"; do
190 case "$1" in
191 --respect-path)
192 # Ignore for backward compatability
193 ;;
194 --debug)
195 debug=1
196 ;;
197 --log)
198 do_log=1
199 ;;
200 --extra=*)
201 extra_tools="$extra_tools ${1#--extra=}"
202 ;;
203 *)
204 break
205 ;;
206 esac
207 shift
208done
209
210added_gcc=$1
211shift
212added_gxx=$1
213shift
214added_as=$1
215shift
216archive_name=$1
217
218if test -n "$do_log"; then
219 log_path="$archive_name.log"
220 rm -f "$log_path"
221fi
222
223if test -z "$PATCHELF"; then
224 PATCHELF=`which patchelf 2> /dev/null`
225fi
226if test -z "$PATCHELF"; then
227 PATCHELF=`which patchelf-uninative 2> /dev/null`
228fi
229if test -z "$PATCHELF"; then
230 print_output "patchelf is required"
231 exit 1
232fi
233
234if test -z "$added_gcc" || test -z "$added_gxx" ; then
235 print_output "usage: $0 <gcc_path> <g++_path>"
236 exit 1
237fi
238
239if ! test -x "$added_gcc" ; then
240 print_output "'$added_gcc' is not executable."
241 exit 1
242fi
243
244if ! test -x "$added_gxx" ; then
245 print_output "'$added_gcc' is not executable."
246 exit 1
247fi
248
249
250
251add_file $added_gcc /usr/bin/gcc
252add_file $added_gxx /usr/bin/g++
253
254if test -z "$added_as" ; then
255 add_file /usr/bin/as /usr/bin/as
256else
257 if ! test -x "$added_as" ; then
258 print_output "'$added_as' is not executable."
259 exit 1
260 fi
261
262 add_file $added_as /usr/bin/as
263fi
264
265add_file `$added_gcc -print-prog-name=cc1` /usr/bin/cc1
266add_file `$added_gxx -print-prog-name=cc1plus` /usr/bin/cc1plus
267specfile=`$added_gcc -print-file-name=specs`
268if test -n "$specfile" && test -e "$specfile"; then
269 add_file "$specfile"
270fi
271
272ltofile=`$added_gcc -print-prog-name=lto1`
273pluginfile=`normalize_path "${ltofile%lto1}liblto_plugin.so"`
274if test -r "$pluginfile"
275then
276 add_file $pluginfile ${pluginfile#*usr}
277 add_file $pluginfile /usr${pluginfile#*usr}
278fi
279
280# for testing the environment is usable at all
281if test -x /bin/true; then
282 add_file /bin/true
283elif test -x /usr/bin/true; then
284 add_file /usr/bin/true /bin/true
285else
286 print_output "'true' not found"
287 exit 1
288fi
289
290for extra in $extra_tools; do
291 if test -x "$extra"; then
292 add_file "$extra"
293 else
294 print_output "'$extra' not found"
295 exit 1
296 fi
297done
298
299link_rel ()
300{
301 local target="$1"
302 local name="$2"
303 local base="$3"
304
305 local prefix=`dirname $name`
306
307 prefix=`echo $prefix | sed 's,[^/]\+,..,g' | sed 's,^/*,,g'`
308
309 ln -s $prefix/$target $base/$name
310}
311
312tempdir=`mktemp -d /tmp/iceccenvXXXXXX`
313target_files=
314for path in $target_paths; do
315 mkdir -p $tempdir/`dirname $path`
316 cp -pH $path $tempdir/$path
317
318 if test -f $tempdir/$path -a -x $tempdir/$path; then
319 strip -s $tempdir/$path 2>/dev/null
320 fi
321
322 fix_rpath $tempdir/$path `dirname $path`
323 target_files="$target_files $path"
324done
325
326for i in $target_aliases; do
327 target=`echo $i | cut -d= -f1`
328 link_name=`echo $i | cut -d= -f2`
329
330 mkdir -p $tempdir/`dirname $link_name`
331 # Relative links are used because the files are checked for being
332 # executable outside the chroot
333 link_rel $target $link_name $tempdir
334
335 link_name=`echo $link_name | cut -b2-`
336 target_files="$target_files $link_name"
337done
338
339#sort the files
340target_files=`for i in $target_files; do echo $i; done | sort`
341
342#test if an archive name was supplied
343#if not use the md5 of all files as the archive name
344if test -z "$archive_name"; then
345 md5sum=NONE
346 for file in /usr/bin/md5sum /bin/md5 /usr/bin/md5; do
347 if test -x $file; then
348 md5sum=$file
349 break
350 fi
351 done
352
353 #calculate md5 and use it as the archive name
354 archive_name=`for i in $target_files; do test -f $tempdir/$i && $md5sum $tempdir/$i; done | sed -e 's/ .*$//' | $md5sum | sed -e 's/ .*$//'`.tar.gz || {
355 print_output "Couldn't compute MD5 sum."
356 exit 2
357 }
358 mydir=`pwd`
359else
360 mydir="`dirname "$archive_name"`"
361
362 #check if we have a full path or only a filename
363 if test "$mydir" = "." ; then
364 mydir=`pwd`
365 else
366 mydir=""
367 fi
368fi
369
370print_output "creating $archive_name"
371
372cd $tempdir
373# Add everything in the temp directory. Tar doesn't like to be given files with
374# ".." in them, which frequently happens in $target_files, and will strip off
375# the path prefix past the offending "..". This makes the archive generate
376# incorrectly
377tar -czf "$mydir/$archive_name" . || {
378 print_output "Couldn't create archive"
379 exit 3
380}
381cd ..
382rm -rf $tempdir
diff --git a/meta/recipes-devtools/icecc-create-env/icecc-create-env_0.1.bb b/meta/recipes-devtools/icecc-create-env/icecc-create-env_0.1.bb
deleted file mode 100644
index dd1b257b10..0000000000
--- a/meta/recipes-devtools/icecc-create-env/icecc-create-env_0.1.bb
+++ /dev/null
@@ -1,39 +0,0 @@
1SUMMARY = "icecc environment setup script"
2DESCRIPTION = "This is a version of the icecc-create-env script that has \
3been modified in order to make it work with OE."
4SECTION = "base"
5# source file has just a "GPL" word, but upstream is GPL-2.0-or-later.
6# most probably just GPL would be a mistake
7LICENSE = "GPL-2.0-or-later"
8LIC_FILES_CHKSUM = "file://icecc-create-env;beginline=2;endline=5;md5=ae1df3d6a058bfda40b66094c5f6065f"
9
10
11DEPENDS = ""
12INHIBIT_DEFAULT_DEPS = "1"
13ICECC_DISABLED = "1"
14
15# This is needed, because otherwise there is dependency loop from quilt-native
16# Dependency loop #1 found:
17# Task 10907 (meta/recipes-devtools/quilt/quilt-native_0.60.bb, do_install) (dependent Tasks ['quilt-native, do_compile'])
18# Task 10908 (meta/recipes-devtools/quilt/quilt-native_0.60.bb, do_populate_sysroot) (dependent Tasks ['quilt-native, do_install'])
19# Task 10997 (meta/recipes-devtools/icecc-create-env/icecc-create-env-native_0.1.bb, do_patch) (dependent Tasks ['icecc-create-env-native, do_unpack', 'quilt-native, do_populate_sysroot'])
20# Task 11001 (meta/recipes-devtools/icecc-create-env/icecc-create-env-native_0.1.bb, do_configure) (dependent Tasks ['icecc-create-env-native, do_patch'])
21# Task 11002 (meta/recipes-devtools/icecc-create-env/icecc-create-env-native_0.1.bb, do_compile) (dependent Tasks ['icecc-create-env-native, do_configure'])
22# Task 10998 (meta/recipes-devtools/icecc-create-env/icecc-create-env-native_0.1.bb, do_install) (dependent Tasks ['icecc-create-env-native, do_compile'])
23# Task 10999 (meta/recipes-devtools/icecc-create-env/icecc-create-env-native_0.1.bb, do_populate_sysroot) (dependent Tasks ['icecc-create-env-native, do_install'])
24# Task 10910 (meta/recipes-devtools/quilt/quilt-native_0.60.bb, do_configure) (dependent Tasks ['quilt-native, do_patch', 'icecc-create-env-native, do_populate_sysroot'])
25# Task 10911 (meta/recipes-devtools/quilt/quilt-native_0.60.bb, do_compile) (dependent Tasks ['quilt-native, do_configure'])
26PATCHTOOL = "patch"
27SRC_URI = "file://icecc-create-env"
28
29S = "${WORKDIR}/sources"
30UNPACKDIR = "${S}"
31
32do_install() {
33 install -d ${D}/${bindir}
34 install -m 0755 ${S}/icecc-create-env ${D}/${bindir}
35}
36
37BBCLASSEXTEND = "native nativesdk"
38
39RDEPENDS:${PN}:class-nativesdk = "patchelf"
diff --git a/meta/recipes-devtools/icecc-toolchain/icecc-toolchain/icecc-env.sh b/meta/recipes-devtools/icecc-toolchain/icecc-toolchain/icecc-env.sh
deleted file mode 100644
index 0dccc41c8a..0000000000
--- a/meta/recipes-devtools/icecc-toolchain/icecc-toolchain/icecc-env.sh
+++ /dev/null
@@ -1,49 +0,0 @@
1#! /bin/sh
2# Copyright (c) 2018 Joshua Watt, Garmin International,Inc.
3#
4# Permission is hereby granted, free of charge, to any person obtaining a copy
5# of this software and associated documentation files (the "Software"), to deal
6# in the Software without restriction, including without limitation the rights
7# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8# copies of the Software, and to permit persons to whom the Software is
9# furnished to do so, subject to the following conditions:
10#
11# The above copyright notice and this permission notice shall be included in
12# all copies or substantial portions of the Software.
13#
14# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20# SOFTWARE.
21#
22
23if [ -z "$ICECC_PATH" ]; then
24 ICECC_PATH=$(which icecc 2> /dev/null || true)
25fi
26
27if [ -n "$ICECC_PATH" ]; then
28 # Default to disabling the caret workaround. If set to "1", icecc will
29 # locally recompile any files that have warnings, which can adversely
30 # affect performance.
31 #
32 # See: https://github.com/icecc/icecream/issues/190
33 if [ -z "$ICECC_CARET_WORKAROUND" ]; then
34 ICECC_CARET_WORKAROUND="0"
35 fi
36 if [ "$ICECC_CARET_WORKAROUND" != "1" ]; then
37 CFLAGS="$CFLAGS -fno-diagnostics-show-caret"
38 CXXFLAGS="$CXXFLAGS -fno-diagnostics-show-caret"
39 fi
40 export ICECC_PATH ICECC_CARET_WORKAROUND
41 export ICECC_VERSION="$(echo "$OECORE_NATIVE_SYSROOT/usr/share/${TARGET_PREFIX}icecream/@TOOLCHAIN_ENV@" | sed "s,@TARGET_PREFIX@,$TARGET_PREFIX,g")"
42 export ICECC="$(which ${CROSS_COMPILE}gcc)"
43 export ICECXX="$(which ${CROSS_COMPILE}g++)"
44 export ICEAS="$(which ${CROSS_COMPILE}as)"
45 export PATH="$OECORE_NATIVE_SYSROOT/usr/share/${TARGET_PREFIX}icecream/bin:$PATH"
46else
47 echo "Icecc not found. Disabling distributed compiling"
48fi
49
diff --git a/meta/recipes-devtools/icecc-toolchain/icecc-toolchain/icecc-setup.sh b/meta/recipes-devtools/icecc-toolchain/icecc-toolchain/icecc-setup.sh
deleted file mode 100644
index fbd9f038b8..0000000000
--- a/meta/recipes-devtools/icecc-toolchain/icecc-toolchain/icecc-setup.sh
+++ /dev/null
@@ -1,38 +0,0 @@
1#! /bin/sh
2# Copyright (c) 2018 Joshua Watt, Garmin International,Inc.
3#
4# Permission is hereby granted, free of charge, to any person obtaining a copy
5# of this software and associated documentation files (the "Software"), to deal
6# in the Software without restriction, including without limitation the rights
7# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8# copies of the Software, and to permit persons to whom the Software is
9# furnished to do so, subject to the following conditions:
10#
11# The above copyright notice and this permission notice shall be included in
12# all copies or substantial portions of the Software.
13#
14# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20# SOFTWARE.
21#
22
23# ICECC_PATH will have been found icecc-env.sh
24if [ -z "$ICECC_PATH" ]; then
25 exit 0
26fi
27
28echo "Setting up IceCream distributed compiling..."
29
30# Create the environment
31mkdir -p "`dirname $ICECC_VERSION`"
32icecc-create-env $ICECC $ICECXX $ICEAS $ICECC_VERSION || exit $?
33
34# Create symbolic links
35d="$OECORE_NATIVE_SYSROOT/usr/share/${TARGET_PREFIX}icecream/bin"
36mkdir -p "$d"
37ln -sf "$ICECC_PATH" "$d/${CROSS_COMPILE}gcc"
38ln -sf "$ICECC_PATH" "$d/${CROSS_COMPILE}g++"
diff --git a/meta/recipes-devtools/icecc-toolchain/nativesdk-icecc-toolchain_0.1.bb b/meta/recipes-devtools/icecc-toolchain/nativesdk-icecc-toolchain_0.1.bb
deleted file mode 100644
index a7f5fc4cb4..0000000000
--- a/meta/recipes-devtools/icecc-toolchain/nativesdk-icecc-toolchain_0.1.bb
+++ /dev/null
@@ -1,39 +0,0 @@
1# Copyright (c) 2018 Joshua Watt, Garmin International,Inc.
2# Released under the MIT license (see COPYING.MIT for the terms)
3SUMMARY = "Generates Icecream toolchain for SDK"
4DESCRIPTION = "${SUMMARY}"
5LICENSE = "MIT"
6LIC_FILES_CHKSUM = "file://${UNPACKDIR}/icecc-env.sh;beginline=2;endline=20;md5=dd6b68c1efed8a9fb04e409b3b287d47"
7
8INHIBIT_DEFAULT_DEPS = "1"
9
10SRC_URI = "\
11 file://icecc-env.sh \
12 file://icecc-setup.sh \
13 "
14
15inherit nativesdk
16
17ENV_NAME = "${DISTRO}-${TCLIBC}-${SDK_ARCH}-@TARGET_PREFIX@${DISTRO_VERSION}.tar.gz"
18
19do_compile() {
20}
21
22do_install() {
23 install -d ${D}${SDKPATHNATIVE}${datadir}/icecream/bin
24
25 install -d ${D}${SDKPATHNATIVE}/environment-setup.d/
26 install -m 0644 ${UNPACKDIR}/icecc-env.sh ${D}${SDKPATHNATIVE}/environment-setup.d/
27 sed -i ${D}${SDKPATHNATIVE}/environment-setup.d/icecc-env.sh \
28 -e 's,@TOOLCHAIN_ENV@,${ENV_NAME},g'
29
30 install -d ${D}${SDKPATHNATIVE}/post-relocate-setup.d/
31 install -m 0755 ${UNPACKDIR}/icecc-setup.sh ${D}${SDKPATHNATIVE}/post-relocate-setup.d/
32 sed -i ${D}${SDKPATHNATIVE}/post-relocate-setup.d/icecc-setup.sh \
33 -e 's,@TOOLCHAIN_ENV@,${ENV_NAME},g'
34}
35
36PACKAGES = "${PN}"
37FILES:${PN} = "${SDKPATHNATIVE}"
38RDEPENDS:${PN} += "nativesdk-icecc-create-env"
39