diff options
| author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2025-06-03 22:17:37 +0100 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2025-06-05 11:02:22 +0100 |
| commit | ba4fd5229893a24ef1f305c0b04facf2329b16df (patch) | |
| tree | f4fa1fc6f4b410c55fc9ca1592713f04d7bacb0b /meta/recipes-devtools/icecc-create-env | |
| parent | b168cb41678e7bca3225ec4fbd451e411482626b (diff) | |
| download | poky-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>
Diffstat (limited to 'meta/recipes-devtools/icecc-create-env')
| -rwxr-xr-x | meta/recipes-devtools/icecc-create-env/icecc-create-env/icecc-create-env | 382 | ||||
| -rw-r--r-- | meta/recipes-devtools/icecc-create-env/icecc-create-env_0.1.bb | 39 |
2 files changed, 0 insertions, 421 deletions
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 | |||
| 7 | target_paths= | ||
| 8 | target_aliases= | ||
| 9 | |||
| 10 | # Always prints, optionally to a log file | ||
| 11 | print_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 | ||
| 21 | print_debug () | ||
| 22 | { | ||
| 23 | if test -n "$debug"; then | ||
| 24 | print_output "$@" | ||
| 25 | fi | ||
| 26 | } | ||
| 27 | |||
| 28 | is_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 | |||
| 34 | fix_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 | |||
| 56 | add_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 | |||
| 69 | add_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 | |||
| 84 | normalize_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 | |||
| 102 | add_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 | |||
| 119 | add_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 | |||
| 158 | add_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 | |||
| 172 | add_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 | |||
| 189 | while 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 | ||
| 208 | done | ||
| 209 | |||
| 210 | added_gcc=$1 | ||
| 211 | shift | ||
| 212 | added_gxx=$1 | ||
| 213 | shift | ||
| 214 | added_as=$1 | ||
| 215 | shift | ||
| 216 | archive_name=$1 | ||
| 217 | |||
| 218 | if test -n "$do_log"; then | ||
| 219 | log_path="$archive_name.log" | ||
| 220 | rm -f "$log_path" | ||
| 221 | fi | ||
| 222 | |||
| 223 | if test -z "$PATCHELF"; then | ||
| 224 | PATCHELF=`which patchelf 2> /dev/null` | ||
| 225 | fi | ||
| 226 | if test -z "$PATCHELF"; then | ||
| 227 | PATCHELF=`which patchelf-uninative 2> /dev/null` | ||
| 228 | fi | ||
| 229 | if test -z "$PATCHELF"; then | ||
| 230 | print_output "patchelf is required" | ||
| 231 | exit 1 | ||
| 232 | fi | ||
| 233 | |||
| 234 | if test -z "$added_gcc" || test -z "$added_gxx" ; then | ||
| 235 | print_output "usage: $0 <gcc_path> <g++_path>" | ||
| 236 | exit 1 | ||
| 237 | fi | ||
| 238 | |||
| 239 | if ! test -x "$added_gcc" ; then | ||
| 240 | print_output "'$added_gcc' is not executable." | ||
| 241 | exit 1 | ||
| 242 | fi | ||
| 243 | |||
| 244 | if ! test -x "$added_gxx" ; then | ||
| 245 | print_output "'$added_gcc' is not executable." | ||
| 246 | exit 1 | ||
| 247 | fi | ||
| 248 | |||
| 249 | |||
| 250 | |||
| 251 | add_file $added_gcc /usr/bin/gcc | ||
| 252 | add_file $added_gxx /usr/bin/g++ | ||
| 253 | |||
| 254 | if test -z "$added_as" ; then | ||
| 255 | add_file /usr/bin/as /usr/bin/as | ||
| 256 | else | ||
| 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 | ||
| 263 | fi | ||
| 264 | |||
| 265 | add_file `$added_gcc -print-prog-name=cc1` /usr/bin/cc1 | ||
| 266 | add_file `$added_gxx -print-prog-name=cc1plus` /usr/bin/cc1plus | ||
| 267 | specfile=`$added_gcc -print-file-name=specs` | ||
| 268 | if test -n "$specfile" && test -e "$specfile"; then | ||
| 269 | add_file "$specfile" | ||
| 270 | fi | ||
| 271 | |||
| 272 | ltofile=`$added_gcc -print-prog-name=lto1` | ||
| 273 | pluginfile=`normalize_path "${ltofile%lto1}liblto_plugin.so"` | ||
| 274 | if test -r "$pluginfile" | ||
| 275 | then | ||
| 276 | add_file $pluginfile ${pluginfile#*usr} | ||
| 277 | add_file $pluginfile /usr${pluginfile#*usr} | ||
| 278 | fi | ||
| 279 | |||
| 280 | # for testing the environment is usable at all | ||
| 281 | if test -x /bin/true; then | ||
| 282 | add_file /bin/true | ||
| 283 | elif test -x /usr/bin/true; then | ||
| 284 | add_file /usr/bin/true /bin/true | ||
| 285 | else | ||
| 286 | print_output "'true' not found" | ||
| 287 | exit 1 | ||
| 288 | fi | ||
| 289 | |||
| 290 | for 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 | ||
| 297 | done | ||
| 298 | |||
| 299 | link_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 | |||
| 312 | tempdir=`mktemp -d /tmp/iceccenvXXXXXX` | ||
| 313 | target_files= | ||
| 314 | for 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" | ||
| 324 | done | ||
| 325 | |||
| 326 | for 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" | ||
| 337 | done | ||
| 338 | |||
| 339 | #sort the files | ||
| 340 | target_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 | ||
| 344 | if 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` | ||
| 359 | else | ||
| 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 | ||
| 368 | fi | ||
| 369 | |||
| 370 | print_output "creating $archive_name" | ||
| 371 | |||
| 372 | cd $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 | ||
| 377 | tar -czf "$mydir/$archive_name" . || { | ||
| 378 | print_output "Couldn't create archive" | ||
| 379 | exit 3 | ||
| 380 | } | ||
| 381 | cd .. | ||
| 382 | rm -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 @@ | |||
| 1 | SUMMARY = "icecc environment setup script" | ||
| 2 | DESCRIPTION = "This is a version of the icecc-create-env script that has \ | ||
| 3 | been modified in order to make it work with OE." | ||
| 4 | SECTION = "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 | ||
| 7 | LICENSE = "GPL-2.0-or-later" | ||
| 8 | LIC_FILES_CHKSUM = "file://icecc-create-env;beginline=2;endline=5;md5=ae1df3d6a058bfda40b66094c5f6065f" | ||
| 9 | |||
| 10 | |||
| 11 | DEPENDS = "" | ||
| 12 | INHIBIT_DEFAULT_DEPS = "1" | ||
| 13 | ICECC_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']) | ||
| 26 | PATCHTOOL = "patch" | ||
| 27 | SRC_URI = "file://icecc-create-env" | ||
| 28 | |||
| 29 | S = "${WORKDIR}/sources" | ||
| 30 | UNPACKDIR = "${S}" | ||
| 31 | |||
| 32 | do_install() { | ||
| 33 | install -d ${D}/${bindir} | ||
| 34 | install -m 0755 ${S}/icecc-create-env ${D}/${bindir} | ||
| 35 | } | ||
| 36 | |||
| 37 | BBCLASSEXTEND = "native nativesdk" | ||
| 38 | |||
| 39 | RDEPENDS:${PN}:class-nativesdk = "patchelf" | ||
