Browse Source

Linux_SDK_V1.1.2

thead_admin 1 year ago
parent
commit
d296c2345f
100 changed files with 994 additions and 1544 deletions
  1. 0 33
      build/light-fm-min/conf/auto.conf
  2. 0 22
      build/light-fm-min/conf/bblayers.conf
  3. 0 265
      build/light-fm-min/conf/local.conf
  4. 0 54
      build/light-fm/README.md
  5. 0 33
      build/light-fm/conf/auto.conf
  6. 0 24
      build/light-fm/conf/bblayers.conf
  7. 0 264
      build/light-fm/conf/local.conf
  8. 0 1
      build/light-fm/conf/templateconf.cfg
  9. 0 43
      meta-external-toolchain/classes/blacklist_dynamic.bbclass
  10. 5 16
      meta-external-toolchain/classes/common-license.bbclass
  11. 0 120
      meta-external-toolchain/classes/external-common.bbclass
  12. 8 8
      meta-external-toolchain/classes/external-toolchain-cross-canadian.bbclass
  13. 2 0
      meta-external-toolchain/classes/external-toolchain-cross.bbclass
  14. 26 26
      meta-external-toolchain/classes/external-toolchain.bbclass
  15. 122 0
      meta-external-toolchain/classes/external_global.bbclass
  16. 1 1
      meta-external-toolchain/classes/sanity-external-toolchain.bbclass
  17. 40 0
      meta-external-toolchain/classes/skip_recipe_dynamic.bbclass
  18. 6 3
      meta-external-toolchain/conf/distro/include/tcmode-external-oe-sdk.inc
  19. 29 29
      meta-external-toolchain/conf/distro/include/tcmode-external.inc
  20. 2 2
      meta-external-toolchain/conf/layer.conf
  21. 3 3
      meta-external-toolchain/core/recipes-bsp/systemd-boot/systemd-boot_%.bbappend
  22. 5 5
      meta-external-toolchain/core/recipes-core/glibc/glibc-locale_%.bbappend
  23. 3 2
      meta-external-toolchain/core/recipes-core/meta/buildtools-tarball.bbappend
  24. 1 2
      meta-external-toolchain/core/recipes-core/meta/meta-environment-extsdk.bbappend
  25. 1 2
      meta-external-toolchain/core/recipes-core/meta/meta-environment.bbappend
  26. 1 1
      meta-external-toolchain/core/recipes-devtools/binutils/binutils-cross_%.bbappend
  27. 1 1
      meta-external-toolchain/core/recipes-devtools/gcc/gcc_%.bbappend
  28. 3 3
      meta-external-toolchain/core/recipes-devtools/gdb/gdb_%.bbappend
  29. 1 1
      meta-external-toolchain/core/recipes-devtools/python/python3_%.bbappend
  30. 1 1
      meta-external-toolchain/core/recipes-extended/bash/bash_%.bbappend
  31. 2 2
      meta-external-toolchain/lib/oe/external.py
  32. 2 2
      meta-external-toolchain/recipes-external/binutils/binutils-external-cross-canadian.bb
  33. 1 1
      meta-external-toolchain/recipes-external/binutils/binutils-external-cross.bb
  34. 1 1
      meta-external-toolchain/recipes-external/binutils/binutils-external.inc
  35. 3 3
      meta-external-toolchain/recipes-external/gcc/gcc-external-cross-canadian.bb
  36. 12 12
      meta-external-toolchain/recipes-external/gcc/gcc-runtime-external.bb
  37. 12 9
      meta-external-toolchain/recipes-external/gcc/libgcc-external.bb
  38. 3 3
      meta-external-toolchain/recipes-external/gcc/libgfortran-external.bb
  39. 3 3
      meta-external-toolchain/recipes-external/gdb/gdb-external-cross-canadian.bb
  40. 2 2
      meta-external-toolchain/recipes-external/gdb/gdbserver-external.bb
  41. 1 1
      meta-external-toolchain/recipes-external/glibc/glibc-external-version.inc
  42. 21 21
      meta-external-toolchain/recipes-external/glibc/glibc-external.bb
  43. 88 1
      meta-external-toolchain/recipes-external/glibc/glibc-external/libc.headers
  44. 22 22
      meta-external-toolchain/recipes-external/glibc/glibc-package-adjusted.inc
  45. 13 10
      meta-external-toolchain/recipes-external/libnsl/libnsl2-external.bb
  46. 4 4
      meta-external-toolchain/recipes-external/libtirpc/libtirpc-external.bb
  47. 5 5
      meta-external-toolchain/recipes-external/libxcrypt/libxcrypt-external.bb
  48. 3 3
      meta-external-toolchain/recipes-external/oprofile/oprofile-external.bb
  49. 1 1
      meta-external-toolchain/recipes-sdk/sdk-env-external-toolchain/sdk-env-external-toolchain.bb
  50. 42 0
      meta-light/classes-recipe/thead-image-bsp.bbclass
  51. 14 0
      meta-light/classes-recipe/thead-image-debug.bbclass
  52. 35 0
      meta-light/classes-recipe/thead-image-gnome.bbclass
  53. 18 0
      meta-light/classes-recipe/thead-image-gstreamer.bbclass
  54. 34 0
      meta-light/classes-recipe/thead-image-linux.bbclass
  55. 10 0
      meta-light/classes-recipe/thead-image-minimal.bbclass
  56. 3 0
      meta-light/classes-recipe/thead-image-security.bbclass
  57. 21 0
      meta-light/classes-recipe/thead-image-test.bbclass
  58. 8 0
      meta-light/classes-recipe/thead-image-vision.bbclass
  59. 24 0
      meta-light/classes-recipe/thead-image-weston.bbclass
  60. 71 71
      meta-light/conf/layer.conf
  61. 8 1
      meta-light/conf/machine/include/thead-base.inc
  62. 7 0
      meta-light/conf/machine/include/thead-libc-musl.inc
  63. 6 0
      meta-light/conf/machine/include/thead-proprietary.inc
  64. 0 29
      meta-light/conf/machine/light-a-public-release.conf
  65. 29 0
      meta-light/conf/machine/light-a-val.conf
  66. 32 0
      meta-light/conf/machine/light-b-product.conf
  67. 0 39
      meta-light/conf/machine/light-b-public.conf
  68. 4 10
      meta-light/conf/machine/light-beagle.conf
  69. 31 0
      meta-light/conf/machine/light-lpi4a.conf
  70. 1 1
      meta-light/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs_60.9.0.bbappend
  71. 3 3
      meta-light/recipes-ai/npu/npu-ax3386-gpl.bb
  72. 3 3
      meta-light/recipes-ai/plink-ai/plink-ai.bb
  73. 38 0
      meta-light/recipes-benchmark/vkmark/files/0001-Fix-do-configure-error.patch
  74. 4 2
      meta-light/recipes-benchmark/vkmark/vkmark.bb
  75. 2 2
      meta-light/recipes-bsp/key-input/key-input.bb
  76. BIN
      meta-light/recipes-bsp/opensbi/opensbi/light-lpi4a/light_aon_fpga.bin
  77. BIN
      meta-light/recipes-bsp/opensbi/opensbi/light-lpi4a/light_aon_fpga.elf
  78. BIN
      meta-light/recipes-bsp/opensbi/opensbi/light-lpi4a/light_c906_audio.bin
  79. BIN
      meta-light/recipes-bsp/opensbi/opensbi/light-lpi4a/light_c906_audio.elf
  80. 0 50
      meta-light/recipes-bsp/opensbi/opensbi_0.6.bb
  81. 0 1
      meta-light/recipes-bsp/opensbi/opensbi_0.8.bbappend
  82. 14 4
      meta-light/recipes-bsp/opensbi/opensbi_0.9.bb
  83. 2 2
      meta-light/recipes-bsp/u-boot/u-boot_2020.%.bbappend
  84. 5 4
      meta-light/recipes-bsp/u-boot/u-boot_2020.10.bbappend
  85. 0 1
      meta-light/recipes-connectivity/light-bt/files/light-bt.service
  86. 5 5
      meta-light/recipes-connectivity/light-bt/light-bt.bb
  87. 0 1
      meta-light/recipes-connectivity/openssh/openssh_8.4p1.bbappend
  88. 1 0
      meta-light/recipes-connectivity/openssh/openssh_9.0p1.bbappend
  89. 53 0
      meta-light/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.10.bbappend
  90. 0 53
      meta-light/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.9.bbappend
  91. 2 2
      meta-light/recipes-core/base-files/base-files_%.bbappend
  92. 1 0
      meta-light/recipes-core/busybox/busybox/wchar.cfg
  93. 3 2
      meta-light/recipes-core/busybox/busybox_%.bbappend
  94. 0 22
      meta-light/recipes-core/images/light-extend-debs.bb
  95. 0 11
      meta-light/recipes-core/images/light-fm-image-ant.bb
  96. 0 46
      meta-light/recipes-core/images/light-fm-image-bsp.bb
  97. 0 26
      meta-light/recipes-core/images/light-fm-image-debug.bb
  98. 0 7
      meta-light/recipes-core/images/light-fm-image-linux-test.bb
  99. 0 34
      meta-light/recipes-core/images/light-fm-image-linux.bb
  100. 0 41
      meta-light/recipes-core/images/light-fm-image-miniapp.bb

+ 0 - 33
build/light-fm-min/conf/auto.conf

@@ -1,33 +0,0 @@
-# MACHINE ?= "qemuriscv64"
-MACHINE ?= "light-fm"
-#IMAGE_FEATURES += "tools-debug"
-#IMAGE_FEATURES += "tools-tweaks"
-#IMAGE_FEATURES += "dbg-pkgs"
-# rootfs for debugging
-#IMAGE_GEN_DEBUGFS = "1"
-#IMAGE_FSTYPES_DEBUGFS = "tar.gz"
-INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
-# EXTRA_IMAGE_FEATURES_append = " ssh-server-dropbear"
-# EXTRA_IMAGE_FEATURES_append = " package-management"
-# PACKAGECONFIG_append_pn-qemu-native = " sdl"
-# PACKAGECONFIG_append_pn-nativesdk-qemu = " sdl"
-USER_CLASSES ?= "buildstats buildhistory buildstats-summary image-mklibs image-prelink"
-
-require conf/distro/include/no-static-libs.inc
-require conf/distro/include/yocto-uninative.inc
-# require conf/distro/include/security_flags.inc
-
-INHERIT += "uninative"
-
-# DISTRO_FEATURES_append = " ptest multiarch "
-DISTRO_FEATURES_append = " wayland opengl opencl vulkan systemd "
-# DISTRO_FEATURES_BACKFILL_CONSIDERED += "sysvinit"
-VIRTUAL-RUNTIME_init_manager = "systemd"
-# HOSTTOOLS_NONFATAL_append = " ssh"
-DISTRO_FEATURES_BACKFILL_CONSIDERED += " pulseaudio gobject-introspection-data "
-MACHINE_FEATURES_BACKFILL_CONSIDERED += " qemu-usermode "
-
-IMAGE_ROOTFS_ALIGNMENT = "4096"
-IMAGE_ROOTFS_EXTRA_SPACE = "10240"
-DISTRO = "thead-c910"
-IMAGE_OVERHEAD_FACTOR = "1.1"

+ 0 - 22
build/light-fm-min/conf/bblayers.conf

@@ -1,22 +0,0 @@
-# LAYER_CONF_VERSION is increased each time build/conf/bblayers.conf
-# changes incompatibly
-LCONF_VERSION = "7"
-
-BBPATH = "${TOPDIR}"
-BBFILES ?= ""
-
-# YOCTOROOT ="${@os.path.abspath(os.path.join(os.path.join("${TOPDIR}", os.pardir), os.pardir))}"
-YOCTOROOT ="${@os.path.abspath("${TOPDIR}/../../")}"
-
-BBLAYERS ?= " \
-  ${YOCTOROOT}/openembedded-core/meta \
-  ${YOCTOROOT}/meta-openembedded/meta-oe \
-  ${YOCTOROOT}/meta-openembedded/meta-python \
-  ${YOCTOROOT}/meta-openembedded/meta-multimedia \
-  ${YOCTOROOT}/meta-openembedded/meta-networking \
-  ${YOCTOROOT}/meta-external-toolchain \
-  ${YOCTOROOT}/meta-riscv \
-  ${YOCTOROOT}/meta-thead \
-  ${YOCTOROOT}/meta-light \
-  ${YOCTOROOT}/meta-openembedded/meta-gnome \
-  "

+ 0 - 265
build/light-fm-min/conf/local.conf

@@ -1,265 +0,0 @@
-#
-# This file is your local configuration file and is where all local user settings
-# are placed. The comments in this file give some guide to the options a new user
-# to the system might want to change but pretty much any configuration option can
-# be set in this file. More adventurous users can look at local.conf.extended
-# which contains other examples of configuration which can be placed in this file
-# but new users likely won't need any of them initially.
-#
-# Lines starting with the '#' character are commented out and in some cases the
-# default values are provided as comments to show people example syntax. Enabling
-# the option is a question of removing the # character and making any change to the
-# variable as required.
-
-#
-# Machine Selection
-#
-# You need to select a specific machine to target the build with. There are a selection
-# of emulated machines available which can boot and run in the QEMU emulator:
-#
-#MACHINE ?= "qemuarm"
-#MACHINE ?= "qemuarm64"
-#MACHINE ?= "qemumips"
-#MACHINE ?= "qemumips64"
-#MACHINE ?= "qemuppc"
-#MACHINE ?= "qemux86"
-#MACHINE ?= "qemux86-64"
-#
-# This sets the default machine to be qemux86-64 if no other machine is selected:
-MACHINE ??= "qemux86-64"
-
-#
-# Where to place downloads
-#
-# During a first build the system will download many different source code tarballs
-# from various upstream projects. This can take a while, particularly if your network
-# connection is slow. These are all stored in DL_DIR. When wiping and rebuilding you
-# can preserve this directory to speed up this part of subsequent builds. This directory
-# is safe to share between multiple builds on the same machine too.
-#
-# The default is a downloads directory under TOPDIR which is the build directory.
-#
-DL_DIR ?= "${TOPDIR}/../downloads"
-
-#
-# Where to place shared-state files
-#
-# BitBake has the capability to accelerate builds based on previously built output.
-# This is done using "shared state" files which can be thought of as cache objects
-# and this option determines where those files are placed.
-#
-# You can wipe out TMPDIR leaving this directory intact and the build would regenerate
-# from these files if no changes were made to the configuration. If changes were made
-# to the configuration, only shared state files where the state was still valid would
-# be used (done using checksums).
-#
-# The default is a sstate-cache directory under TOPDIR.
-#
-SSTATE_DIR ?= "${TOPDIR}/../sstate-cache"
-
-#
-# Where to place the build output
-#
-# This option specifies where the bulk of the building work should be done and
-# where BitBake should place its temporary files and output. Keep in mind that
-# this includes the extraction and compilation of many applications and the toolchain
-# which can use Gigabytes of hard disk space.
-#
-# The default is a tmp directory under TOPDIR.
-#
-#TMPDIR = "${TOPDIR}/tmp"
-
-
-#
-# Package Management configuration
-#
-# This variable lists which packaging formats to enable. Multiple package backends
-# can be enabled at once and the first item listed in the variable will be used
-# to generate the root filesystems.
-# Options are:
-#  - 'package_deb' for debian style deb files
-#  - 'package_ipk' for ipk files are used by opkg (a debian style embedded package manager)
-#  - 'package_rpm' for rpm style packages
-# E.g.: PACKAGE_CLASSES ?= "package_rpm package_deb package_ipk"
-# We default to ipk:
-PACKAGE_CLASSES ?= "package_deb"
-
-#
-# SDK target architecture
-#
-# This variable specifies the architecture to build SDK items for and means
-# you can build the SDK packages for architectures other than the machine you are
-# running the build on (i.e. building i686 packages on an x86_64 host).
-# Supported values are i686 and x86_64
-#SDKMACHINE ?= "i686"
-
-#
-# Extra image configuration defaults
-#
-# The EXTRA_IMAGE_FEATURES variable allows extra packages to be added to the generated
-# images. Some of these options are added to certain image types automatically. The
-# variable can contain the following options:
-#  "dbg-pkgs"       - add -dbg packages for all installed packages
-#                     (adds symbol information for debugging/profiling)
-#  "src-pkgs"       - add -src packages for all installed packages
-#                     (adds source code for debugging)
-#  "dev-pkgs"       - add -dev packages for all installed packages
-#                     (useful if you want to develop against libs in the image)
-#  "ptest-pkgs"     - add -ptest packages for all ptest-enabled packages
-#                     (useful if you want to run the package test suites)
-#  "tools-sdk"      - add development tools (gcc, make, pkgconfig etc.)
-#  "tools-debug"    - add debugging tools (gdb, strace)
-#  "eclipse-debug"  - add Eclipse remote debugging support
-#  "tools-profile"  - add profiling tools (oprofile, lttng, valgrind)
-#  "tools-testapps" - add useful testing tools (ts_print, aplay, arecord etc.)
-#  "debug-tweaks"   - make an image suitable for development
-#                     e.g. ssh root access has a blank password
-# There are other application targets that can be used here too, see
-# meta/classes/image.bbclass and meta/classes/core-image.bbclass for more details.
-# We default to enabling the debugging tweaks.
-EXTRA_IMAGE_FEATURES ?= "debug-tweaks"
-EXTRA_IMAGE_FEATURES_remove = " dev-pkgs dbg-pkgs staticdev-pkgs tools-debug"
-IMAGE_FEATURES_remove = " dev-pkgs dbg-pkgs staticdev-pkgs tools-debug"
-
-#
-# Additional image features
-#
-# The following is a list of additional classes to use when building images which
-# enable extra features. Some available options which can be included in this variable
-# are:
-#   - 'buildstats' collect build statistics
-#   - 'image-mklibs' to reduce shared library files size for an image
-#   - 'image-prelink' in order to prelink the filesystem image
-# NOTE: if listing mklibs & prelink both, then make sure mklibs is before prelink
-# NOTE: mklibs also needs to be explicitly enabled for a given image, see local.conf.extended
-# USER_CLASSES ?= "buildstats image-mklibs image-prelink"
-
-
-#
-# Runtime testing of images
-#
-# The build system can test booting virtual machine images under qemu (an emulator)
-# after any root filesystems are created and run tests against those images. It can also
-# run tests against any SDK that are built. To enable this uncomment these lines.
-# See classes/test{image,sdk}.bbclass for further details.
-#IMAGE_CLASSES += "testimage testsdk"
-#TESTIMAGE_AUTO_qemuall = "1"
-
-#
-# Interactive shell configuration
-#
-# Under certain circumstances the system may need input from you and to do this it
-# can launch an interactive shell. It needs to do this since the build is
-# multithreaded and needs to be able to handle the case where more than one parallel
-# process may require the user's attention. The default is iterate over the available
-# terminal types to find one that works.
-#
-# Examples of the occasions this may happen are when resolving patches which cannot
-# be applied, to use the devshell or the kernel menuconfig
-#
-# Supported values are auto, gnome, xfce, rxvt, screen, konsole (KDE 3.x only), none
-# Note: currently, Konsole support only works for KDE 3.x due to the way
-# newer Konsole versions behave
-#OE_TERMINAL = "auto"
-# By default disable interactive patch resolution (tasks will just fail instead):
-PATCHRESOLVE = "noop"
-
-#
-# Disk Space Monitoring during the build
-#
-# Monitor the disk space during the build. If there is less that 1GB of space or less
-# than 100K inodes in any key build location (TMPDIR, DL_DIR, SSTATE_DIR), gracefully
-# shutdown the build. If there is less that 100MB or 1K inodes, perform a hard abort
-# of the build. The reason for this is that running completely out of space can corrupt
-# files and damages the build in ways which may not be easily recoverable.
-# It's necessary to monitor /tmp, if there is no space left the build will fail
-# with very exotic errors.
-BB_DISKMON_DIRS ??= "\
-    STOPTASKS,${TMPDIR},1G,100K \
-    STOPTASKS,${DL_DIR},1G,100K \
-    STOPTASKS,${SSTATE_DIR},1G,100K \
-    STOPTASKS,/tmp,100M,100K \
-    ABORT,${TMPDIR},100M,1K \
-    ABORT,${DL_DIR},100M,1K \
-    ABORT,${SSTATE_DIR},100M,1K \
-    ABORT,/tmp,10M,1K"
-
-#
-# Shared-state files from other locations
-#
-# As mentioned above, shared state files are prebuilt cache data objects which can
-# used to accelerate build time. This variable can be used to configure the system
-# to search other mirror locations for these objects before it builds the data itself.
-#
-# This can be a filesystem directory, or a remote url such as http or ftp. These
-# would contain the sstate-cache results from previous builds (possibly from other
-# machines). This variable works like fetcher MIRRORS/PREMIRRORS and points to the
-# cache locations to check for the shared objects.
-# NOTE: if the mirror uses the same structure as SSTATE_DIR, you need to add PATH
-# at the end as shown in the examples below. This will be substituted with the
-# correct path within the directory structure.
-#SSTATE_MIRRORS ?= "\
-#file://.* http://someserver.tld/share/sstate/PATH;downloadfilename=PATH \n \
-#file://.* file:///some/local/dir/sstate/PATH"
-
-
-#
-# Qemu configuration
-#
-# By default qemu will build with a builtin VNC server where graphical output can be
-# seen. The two lines below enable the SDL backend too. By default libsdl2-native will
-# be built, if you want to use your host's libSDL instead of the minimal libsdl built
-# by libsdl2-native then uncomment the ASSUME_PROVIDED line below.
-PACKAGECONFIG_append_pn-qemu-system-native = " sdl"
-PACKAGECONFIG_append_pn-nativesdk-qemu = " sdl"
-#ASSUME_PROVIDED += "libsdl2-native"
-
-#
-# Hash Equivalence
-#
-# Enable support for automatically running a local hash equivalence server and
-# instruct bitbake to use a hash equivalence aware signature generator. Hash
-# equivalence improves reuse of sstate by detecting when a given sstate
-# artifact can be reused as equivalent, even if the current task hash doesn't
-# match the one that generated the artifact.
-#
-# A shared hash equivalent server can be set with "<HOSTNAME>:<PORT>" format
-#
-#BB_HASHSERVE = "auto"
-#BB_SIGNATURE_HANDLER = "OEEquivHash"
-
-#
-# Memory Resident Bitbake
-#
-# Bitbake's server component can stay in memory after the UI for the current command
-# has completed. This means subsequent commands can run faster since there is no need
-# for bitbake to reload cache files and so on. Number is in seconds, after which the
-# server will shut down.
-#
-#BB_SERVER_TIMEOUT = "60"
-
-# CONF_VERSION is increased each time build/conf/ changes incompatibly and is used to
-# track the version of this file when it was generated. This can safely be ignored if
-# this doesn't mean anything to you.
-CONF_VERSION = "1"
-
-
-# Add commercial license to the whitelist
-LICENSE_FLAGS_WHITELIST = "commercial"
-
-
-IMAGE_INSTALL_append = " "
-
-CONNECTIVITY_CHECK_URIS = "https://github.com/"
-
-# ------------------------------------
-# define KERNEL_DEVICETREE ?= 
-# dts_FM_100P_DPU_HDMI_DSI_V1.txt
-# dts_FM_100P_GPU_NPU_V1.txt
-# dts_FM_100P_NPU_GPU_FCE_V1.txt
-# dts_FM_100P_SOC_BASE_V1.txt
-# ------------------------------------
-# KERNEL_DEVICETREE = "dts_FM_100P_SOC_BASE_V1.dtb"
-SYSROOT_PREFIX = ""
-GLIBC_GIT_URI = "git://git@gitee.com/t-head-linux/glibc.git;protocol=https"
-BINUTILS_GIT_URI ?= "git://git@gitee.com/t-head-linux/binutils-gdb.git;branch=binutils-2_35-branch;protocol=https"

+ 0 - 54
build/light-fm/README.md

@@ -1,54 +0,0 @@
-# conf: ice-gnome
-
-## 配置
-
-1. Build Configuration
-
-```bash
-
-```
-
-2. bitbake-layers show-layers
-
-```bash
-layer                    path                                      priority
-===========================================================================
-meta                     ${YOCTOROOT}/openembedded-core/meta              5
-meta-oe                  ${YOCTOROOT}/meta-openembedded/meta-oe           6
-meta-python              ${YOCTOROOT}/meta-openembedded/meta-python       7
-meta-multimedia          ${YOCTOROOT}/meta-openembedded/meta-multimedia   6
-meta-networking          ${YOCTOROOT}/meta-openembedded/meta-networking   5
-meta-external-toolchain  ${YOCTOROOT}/meta-external-toolchain             1
-meta-riscv               ${YOCTOROOT}/meta-riscv                          6
-meta-gnome               ${YOCTOROOT}/meta-openembedded/meta-gnome        7
-meta-filesystems         ${YOCTOROOT}/meta-openembedded/meta-filesystems  6
-meta-webserver           ${YOCTOROOT}/meta-openembedded/meta-webserver    6
-```
-
-## 镜像
-
-| meta layer                                             | images                      | build | check | memo |
-| :----------------------------------------------------- | :-------------------------- | :---: | :---: | :--- |
-| openembedded-core/meta/recipes-core                    | core-image-base             |  OK   |       |      |
-| openembedded-core/meta/recipes-core                    | core-image-minimal          |  OK   |       |      |
-| openembedded-core/meta/recipes-core                    | core-image-minimal-dev      |       |       |      |
-| openembedded-core/meta/recipes-core                    | core-image-minimal-mtdutils |       |       |      |
-| openembedded-core/meta/recipes-sato                    | core-image-sato             |  OK   |       |      |
-| openembedded-core/meta/recipes-sato                    | core-image-sato-dev         |       |       |      |
-| openembedded-core/meta/recipes-sato                    | core-image-sato-ptest-fast  |       |       |      |
-| openembedded-core/meta/recipes-sato                    | core-image-sato-sdk-ptest   |       |       |      |
-| openembedded-core/meta/recipes-sato                    | core-image-sato-sdk         |       |       |      |
-| openembedded-core/meta/recipes-graphics                | core-image-clutter          |  OK   |       |      |
-| openembedded-core/meta/recipes-graphics                | core-image-weston           |  OK   |       |      |
-| openembedded-core/meta/recipes-graphics                | core-image-x11              |  OK   |       |      |
-| openembedded-core/meta/recipes-extended                | core-image-testmaster       |       |       |      |
-| openembedded-core/meta/recipes-extended                | core-image-full-cmdline     |  OK   |       |      |
-| openembedded-core/meta/recipes-extended                | core-image-kernel-dev       |       |       |      |
-| meta-openembedded/meta-gnome/recipes-core              | core-image-minimal-gnome    |  OK   |       |      |
-| meta-openembedded/meta-gnome/recipes-core              | core-image-gnome            |  OK   |       |      |
-| meta-openembedded/meta-filesystems/recipes-filesystems | meta-filesystems-image-base |       |       |      |
-| meta-openembedded/meta-multimedia/recipes-multimedia   | meta-multimedia-image-base  |       |       |      |
-| meta-openembedded/meta-networking/recipes-core         | meta-networking-image-base  |       |       |      |
-| meta-openembedded/meta-oe/recipes-core                 | meta-oe-image-base          |       |       |      |
-| meta-openembedded/meta-python/recipes-core             | meta-python-image-base      |       |       |      |
-| meta-openembedded/meta-webserver/recipes-core          | meta-webserver-image-base   |       |       |      |

+ 0 - 33
build/light-fm/conf/auto.conf

@@ -1,33 +0,0 @@
-# MACHINE ?= "qemuriscv64"
-MACHINE ?= "light-a-public-release"
-#IMAGE_FEATURES += "tools-debug"
-#IMAGE_FEATURES += "tools-tweaks"
-#IMAGE_FEATURES += "dbg-pkgs"
-# rootfs for debugging
-#IMAGE_GEN_DEBUGFS = "1"
-#IMAGE_FSTYPES_DEBUGFS = "tar.gz"
-INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
-EXTRA_IMAGE_FEATURES_append = " ssh-server-dropbear"
-EXTRA_IMAGE_FEATURES_append = " package-management"
-PACKAGECONFIG_append_pn-qemu-native = " sdl"
-PACKAGECONFIG_append_pn-nativesdk-qemu = " sdl"
-USER_CLASSES ?= "buildstats buildhistory buildstats-summary image-mklibs image-prelink"
-
-require conf/distro/include/no-static-libs.inc
-require conf/distro/include/yocto-uninative.inc
-require conf/distro/include/security_flags.inc
-
-INHERIT += "uninative"
-
-DISTRO_FEATURES_append = " largefile ptest multiarch wayland opengl opencl vulkan pam systemd apt gobject-introspection-data polkit"
-DISTRO_FEATURES_BACKFILL_CONSIDERED += "sysvinit"
-VIRTUAL-RUNTIME_init_manager = "systemd"
-HOSTTOOLS_NONFATAL_append = " ssh"
-DISTRO_FEATURES_BACKFILL_CONSIDERED += "gobject-introspection-data"
-
-IMAGE_ROOTFS_ALIGNMENT = "4096"
-IMAGE_ROOTFS_EXTRA_SPACE = "10240"
-DISTRO = "thead-c910"
-IMAGE_OVERHEAD_FACTOR = "1.1"
-DEFAULT_TIMEZONE="Asia/Shanghai"
-

+ 0 - 24
build/light-fm/conf/bblayers.conf

@@ -1,24 +0,0 @@
-# LAYER_CONF_VERSION is increased each time build/conf/bblayers.conf
-# changes incompatibly
-LCONF_VERSION = "7"
-
-BBPATH = "${TOPDIR}"
-BBFILES ?= ""
-
-# YOCTOROOT ="${@os.path.abspath(os.path.join(os.path.join("${TOPDIR}", os.pardir), os.pardir))}"
-YOCTOROOT ="${@os.path.abspath("${TOPDIR}/../../")}"
-
-BBLAYERS ?= " \
-  ${YOCTOROOT}/openembedded-core/meta \
-  ${YOCTOROOT}/meta-openembedded/meta-oe \
-  ${YOCTOROOT}/meta-openembedded/meta-python \
-  ${YOCTOROOT}/meta-openembedded/meta-multimedia \
-  ${YOCTOROOT}/meta-openembedded/meta-networking \
-  ${YOCTOROOT}/meta-external-toolchain \
-  ${YOCTOROOT}/meta-riscv \
-  ${YOCTOROOT}/meta-thead \
-  ${YOCTOROOT}/meta-light \
-  ${YOCTOROOT}/meta-openembedded/meta-gnome \
-  ${YOCTOROOT}/meta-openembedded/meta-filesystems \
-  ${YOCTOROOT}/meta-openembedded/meta-webserver \
-  "

+ 0 - 264
build/light-fm/conf/local.conf

@@ -1,264 +0,0 @@
-#
-# This file is your local configuration file and is where all local user settings
-# are placed. The comments in this file give some guide to the options a new user
-# to the system might want to change but pretty much any configuration option can
-# be set in this file. More adventurous users can look at local.conf.extended
-# which contains other examples of configuration which can be placed in this file
-# but new users likely won't need any of them initially.
-#
-# Lines starting with the '#' character are commented out and in some cases the
-# default values are provided as comments to show people example syntax. Enabling
-# the option is a question of removing the # character and making any change to the
-# variable as required.
-
-#
-# Machine Selection
-#
-# You need to select a specific machine to target the build with. There are a selection
-# of emulated machines available which can boot and run in the QEMU emulator:
-#
-#MACHINE ?= "qemuarm"
-#MACHINE ?= "qemuarm64"
-#MACHINE ?= "qemumips"
-#MACHINE ?= "qemumips64"
-#MACHINE ?= "qemuppc"
-#MACHINE ?= "qemux86"
-#MACHINE ?= "qemux86-64"
-#
-# This sets the default machine to be qemux86-64 if no other machine is selected:
-MACHINE ??= "qemux86-64"
-
-#
-# Where to place downloads
-#
-# During a first build the system will download many different source code tarballs
-# from various upstream projects. This can take a while, particularly if your network
-# connection is slow. These are all stored in DL_DIR. When wiping and rebuilding you
-# can preserve this directory to speed up this part of subsequent builds. This directory
-# is safe to share between multiple builds on the same machine too.
-#
-# The default is a downloads directory under TOPDIR which is the build directory.
-#
-DL_DIR ?= "${TOPDIR}/../downloads"
-
-#
-# Where to place shared-state files
-#
-# BitBake has the capability to accelerate builds based on previously built output.
-# This is done using "shared state" files which can be thought of as cache objects
-# and this option determines where those files are placed.
-#
-# You can wipe out TMPDIR leaving this directory intact and the build would regenerate
-# from these files if no changes were made to the configuration. If changes were made
-# to the configuration, only shared state files where the state was still valid would
-# be used (done using checksums).
-#
-# The default is a sstate-cache directory under TOPDIR.
-#
-SSTATE_DIR ?= "${TOPDIR}/../sstate-cache"
-
-#
-# Where to place the build output
-#
-# This option specifies where the bulk of the building work should be done and
-# where BitBake should place its temporary files and output. Keep in mind that
-# this includes the extraction and compilation of many applications and the toolchain
-# which can use Gigabytes of hard disk space.
-#
-# The default is a tmp directory under TOPDIR.
-#
-#TMPDIR = "${TOPDIR}/tmp"
-
-
-#
-# Package Management configuration
-#
-# This variable lists which packaging formats to enable. Multiple package backends
-# can be enabled at once and the first item listed in the variable will be used
-# to generate the root filesystems.
-# Options are:
-#  - 'package_deb' for debian style deb files
-#  - 'package_ipk' for ipk files are used by opkg (a debian style embedded package manager)
-#  - 'package_rpm' for rpm style packages
-# E.g.: PACKAGE_CLASSES ?= "package_rpm package_deb package_ipk"
-# We default to ipk:
-PACKAGE_CLASSES ?= "package_deb"
-
-#
-# SDK target architecture
-#
-# This variable specifies the architecture to build SDK items for and means
-# you can build the SDK packages for architectures other than the machine you are
-# running the build on (i.e. building i686 packages on an x86_64 host).
-# Supported values are i686 and x86_64
-#SDKMACHINE ?= "i686"
-
-#
-# Extra image configuration defaults
-#
-# The EXTRA_IMAGE_FEATURES variable allows extra packages to be added to the generated
-# images. Some of these options are added to certain image types automatically. The
-# variable can contain the following options:
-#  "dbg-pkgs"       - add -dbg packages for all installed packages
-#                     (adds symbol information for debugging/profiling)
-#  "src-pkgs"       - add -src packages for all installed packages
-#                     (adds source code for debugging)
-#  "dev-pkgs"       - add -dev packages for all installed packages
-#                     (useful if you want to develop against libs in the image)
-#  "ptest-pkgs"     - add -ptest packages for all ptest-enabled packages
-#                     (useful if you want to run the package test suites)
-#  "tools-sdk"      - add development tools (gcc, make, pkgconfig etc.)
-#  "tools-debug"    - add debugging tools (gdb, strace)
-#  "eclipse-debug"  - add Eclipse remote debugging support
-#  "tools-profile"  - add profiling tools (oprofile, lttng, valgrind)
-#  "tools-testapps" - add useful testing tools (ts_print, aplay, arecord etc.)
-#  "debug-tweaks"   - make an image suitable for development
-#                     e.g. ssh root access has a blank password
-# There are other application targets that can be used here too, see
-# meta/classes/image.bbclass and meta/classes/core-image.bbclass for more details.
-# We default to enabling the debugging tweaks.
-EXTRA_IMAGE_FEATURES ?= "debug-tweaks"
-EXTRA_IMAGE_FEATURES_remove = " dev-pkgs dbg-pkgs staticdev-pkgs tools-debug"
-IMAGE_FEATURES_remove = " dev-pkgs dbg-pkgs staticdev-pkgs tools-debug"
-#
-# Additional image features
-#
-# The following is a list of additional classes to use when building images which
-# enable extra features. Some available options which can be included in this variable
-# are:
-#   - 'buildstats' collect build statistics
-#   - 'image-mklibs' to reduce shared library files size for an image
-#   - 'image-prelink' in order to prelink the filesystem image
-# NOTE: if listing mklibs & prelink both, then make sure mklibs is before prelink
-# NOTE: mklibs also needs to be explicitly enabled for a given image, see local.conf.extended
-USER_CLASSES ?= "buildstats image-mklibs image-prelink"
-
-
-#
-# Runtime testing of images
-#
-# The build system can test booting virtual machine images under qemu (an emulator)
-# after any root filesystems are created and run tests against those images. It can also
-# run tests against any SDK that are built. To enable this uncomment these lines.
-# See classes/test{image,sdk}.bbclass for further details.
-#IMAGE_CLASSES += "testimage testsdk"
-#TESTIMAGE_AUTO_qemuall = "1"
-
-#
-# Interactive shell configuration
-#
-# Under certain circumstances the system may need input from you and to do this it
-# can launch an interactive shell. It needs to do this since the build is
-# multithreaded and needs to be able to handle the case where more than one parallel
-# process may require the user's attention. The default is iterate over the available
-# terminal types to find one that works.
-#
-# Examples of the occasions this may happen are when resolving patches which cannot
-# be applied, to use the devshell or the kernel menuconfig
-#
-# Supported values are auto, gnome, xfce, rxvt, screen, konsole (KDE 3.x only), none
-# Note: currently, Konsole support only works for KDE 3.x due to the way
-# newer Konsole versions behave
-#OE_TERMINAL = "auto"
-# By default disable interactive patch resolution (tasks will just fail instead):
-PATCHRESOLVE = "noop"
-
-#
-# Disk Space Monitoring during the build
-#
-# Monitor the disk space during the build. If there is less that 1GB of space or less
-# than 100K inodes in any key build location (TMPDIR, DL_DIR, SSTATE_DIR), gracefully
-# shutdown the build. If there is less that 100MB or 1K inodes, perform a hard abort
-# of the build. The reason for this is that running completely out of space can corrupt
-# files and damages the build in ways which may not be easily recoverable.
-# It's necessary to monitor /tmp, if there is no space left the build will fail
-# with very exotic errors.
-BB_DISKMON_DIRS ??= "\
-    STOPTASKS,${TMPDIR},1G,100K \
-    STOPTASKS,${DL_DIR},1G,100K \
-    STOPTASKS,${SSTATE_DIR},1G,100K \
-    STOPTASKS,/tmp,100M,100K \
-    ABORT,${TMPDIR},100M,1K \
-    ABORT,${DL_DIR},100M,1K \
-    ABORT,${SSTATE_DIR},100M,1K \
-    ABORT,/tmp,10M,1K"
-
-#
-# Shared-state files from other locations
-#
-# As mentioned above, shared state files are prebuilt cache data objects which can
-# used to accelerate build time. This variable can be used to configure the system
-# to search other mirror locations for these objects before it builds the data itself.
-#
-# This can be a filesystem directory, or a remote url such as http or ftp. These
-# would contain the sstate-cache results from previous builds (possibly from other
-# machines). This variable works like fetcher MIRRORS/PREMIRRORS and points to the
-# cache locations to check for the shared objects.
-# NOTE: if the mirror uses the same structure as SSTATE_DIR, you need to add PATH
-# at the end as shown in the examples below. This will be substituted with the
-# correct path within the directory structure.
-#SSTATE_MIRRORS ?= "\
-#file://.* http://someserver.tld/share/sstate/PATH;downloadfilename=PATH \n \
-#file://.* file:///some/local/dir/sstate/PATH"
-
-
-#
-# Qemu configuration
-#
-# By default qemu will build with a builtin VNC server where graphical output can be
-# seen. The two lines below enable the SDL backend too. By default libsdl2-native will
-# be built, if you want to use your host's libSDL instead of the minimal libsdl built
-# by libsdl2-native then uncomment the ASSUME_PROVIDED line below.
-PACKAGECONFIG_append_pn-qemu-system-native = " sdl"
-PACKAGECONFIG_append_pn-nativesdk-qemu = " sdl"
-#ASSUME_PROVIDED += "libsdl2-native"
-
-#
-# Hash Equivalence
-#
-# Enable support for automatically running a local hash equivalence server and
-# instruct bitbake to use a hash equivalence aware signature generator. Hash
-# equivalence improves reuse of sstate by detecting when a given sstate
-# artifact can be reused as equivalent, even if the current task hash doesn't
-# match the one that generated the artifact.
-#
-# A shared hash equivalent server can be set with "<HOSTNAME>:<PORT>" format
-#
-#BB_HASHSERVE = "auto"
-#BB_SIGNATURE_HANDLER = "OEEquivHash"
-
-#
-# Memory Resident Bitbake
-#
-# Bitbake's server component can stay in memory after the UI for the current command
-# has completed. This means subsequent commands can run faster since there is no need
-# for bitbake to reload cache files and so on. Number is in seconds, after which the
-# server will shut down.
-#
-#BB_SERVER_TIMEOUT = "60"
-
-# CONF_VERSION is increased each time build/conf/ changes incompatibly and is used to
-# track the version of this file when it was generated. This can safely be ignored if
-# this doesn't mean anything to you.
-CONF_VERSION = "1"
-
-
-# Add commercial license to the whitelist
-LICENSE_FLAGS_WHITELIST = "commercial non-commercial"
-
-
-IMAGE_INSTALL_append = " "
-
-CONNECTIVITY_CHECK_URIS = "https://github.com/"
-
-# ------------------------------------
-# define KERNEL_DEVICETREE ?= 
-# dts_FM_100P_DPU_HDMI_DSI_V1.txt
-# dts_FM_100P_GPU_NPU_V1.txt
-# dts_FM_100P_NPU_GPU_FCE_V1.txt
-# dts_FM_100P_SOC_BASE_V1.txt
-# ------------------------------------
-# KERNEL_DEVICETREE = "dts_FM_100P_SOC_BASE_V1.dtb"
-SYSROOT_PREFIX = ""
-GLIBC_GIT_URI = "git://git@gitee.com/t-head-linux/glibc.git;protocol=https"
-BINUTILS_GIT_URI ?= "git://git@gitee.com/t-head-linux/binutils-gdb.git;branch=binutils-2_35-branch;protocol=https"

+ 0 - 1
build/light-fm/conf/templateconf.cfg

@@ -1 +0,0 @@
-meta/conf

+ 0 - 43
meta-external-toolchain/classes/blacklist_dynamic.bbclass

@@ -1,43 +0,0 @@
-# Blacklist recipe names which include variable references, handling
-# multilibs.
-#
-# Ex.
-#     PNBLACKLIST_DYNAMIC += "${MLPREFIX}gcc-cross-${TARGET_ARCH}"
-#     PNBLACKLIST_DYNAMIC += "gcc-source-${@'${GCCVERSION}'.replace('%', '')}"
-
-PNBLACKLIST_DYNAMIC ?= ""
-
-inherit blacklist
-
-python pnblacklist_dynamic_setup () {
-    d = e.data
-
-    blacklisted = d.getVar('PNBLACKLIST_DYNAMIC', False)
-    if not blacklisted.strip():
-        return
-
-    multilibs = d.getVar('MULTILIBS', True) or ''
-
-    # this block has been copied from base.bbclass so keep it in sync
-    prefixes = []
-    for ext in multilibs.split():
-        eext = ext.split(':')
-        if len(eext) > 1 and eext[0] == 'multilib':
-            prefixes.append(eext[1])
-
-    to_blacklist = set()
-    for prefix in [''] + prefixes:
-        localdata = bb.data.createCopy(d)
-        if prefix:
-            localdata.setVar('MLPREFIX', prefix + '-')
-            override = ':virtclass-multilib-' + prefix
-            localdata.setVar('OVERRIDES', localdata.getVar('OVERRIDES', False) + override)
-            bb.data.update_data(localdata)
-
-        to_blacklist |= set(filter(None, localdata.getVar('PNBLACKLIST_DYNAMIC').split()))
-
-    for blrecipe in to_blacklist:
-        d.setVarFlag('PNBLACKLIST', blrecipe, 'blacklisted by PNBLACKLIST_DYNAMIC')
-}
-pnblacklist_dynamic_setup[eventmask] = "bb.event.ConfigParsed"
-addhandler pnblacklist_dynamic_setup

+ 5 - 16
meta-external-toolchain/classes/common-license.bbclass

@@ -4,11 +4,11 @@ LIC_FILES_CHKSUM ?= "${COMMON_LIC_CHKSUM}"
 
 COMMON_LIC_CHKSUM = ""
 COMMON_LIC_CHKSUM_CLOSED = ""
-COMMON_LIC_CHKSUM_GPL-2.0 = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
-COMMON_LIC_CHKSUM_GPL-3.0 = "file://${COREBASE}/meta/files/common-licenses/GPL-3.0;md5=c79ff39f19dfec6d293b95dea7b07891"
+COMMON_LIC_CHKSUM_GPL-2.0-only = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6"
+COMMON_LIC_CHKSUM_GPL-3.0-only = "file://${COREBASE}/meta/files/common-licenses/GPL-3.0-only;md5=c79ff39f19dfec6d293b95dea7b07891"
 COMMON_LIC_CHKSUM_GPL-3.0-with-GCC-exception = "file://${COREBASE}/meta/files/common-licenses/GPL-3.0-with-GCC-exception;md5=aef5f35c9272f508be848cd99e0151df"
-COMMON_LIC_CHKSUM_LGPL-2.1 = "file://${COREBASE}/meta/files/common-licenses/LGPL-2.1;md5=1a6d268fd218675ffea8be556788b780"
-
+COMMON_LIC_CHKSUM_LGPL-2.1-only = "file://${COREBASE}/meta/files/common-licenses/LGPL-2.1-only;md5=1a6d268fd218675ffea8be556788b780"
+COMMON_LIC_CHKSUM_LGPL-2.1-or-later = "file://${COREBASE}/meta/files/common-licenses/LGPL-2.1-or-later;md5=2a4f4fd2128ea2f65047ee63fbca9f68"
 
 python () {
     import oe.license
@@ -16,7 +16,7 @@ python () {
     #; Set LIC_FILES_CHKSUM to a common license if it's unset and LICENSE is set
     licensestr = d.getVar('LICENSE', True)
     for pkg in d.getVar('PACKAGES', True).split():
-        pkg_lic = d.getVar('LICENSE_%s' % pkg, True)
+        pkg_lic = d.getVar('LICENSE:%s' % pkg, True)
         if pkg_lic:
             licensestr += ' ' + pkg_lic
 
@@ -24,8 +24,6 @@ python () {
     checksums = set()
     for license in licenses:
         if license != 'CLOSED' and d.getVar('LIC_FILES_CHKSUM', False) == '${COMMON_LIC_CHKSUM}':
-            license = mapped_license(license, d)
-
             ext_chksum_var = 'COMMON_LIC_CHKSUM_{0}'.format(license)
             if d.getVar(ext_chksum_var, True):
                 checksums.add('${%s}' % ext_chksum_var)
@@ -38,12 +36,3 @@ python () {
                     bb.fatal('{0}: No available license checksum info for this license. Either set LIC_FILES_CHKSUM, or define:\n  {1} = "{2}"'.format(d.getVar('PF', True), ext_chksum_var, chksum))
     d.setVar('COMMON_LIC_CHKSUM', ' '.join(checksums))
 }
-
-def mapped_license(license, d):
-    if license.endswith('+'):
-        license = license[:-1]
-
-    mapped = d.getVarFlag('SPDXLICENSEMAP', license, False)
-    if mapped:
-        license = mapped
-    return license

+ 0 - 120
meta-external-toolchain/classes/external-common.bbclass

@@ -1,120 +0,0 @@
-def fixed_oe_import(d, modules=None):
-    import importlib
-    import sys
-
-    def inject(name, value):
-        """Make a python object accessible from the metadata"""
-        if hasattr(bb.utils, "_context"):
-            bb.utils._context[name] = value
-        else:
-            __builtins__[name] = value
-
-    bbpath = d.getVar("BBPATH").split(":")
-    layerpaths = [os.path.join(dir, "lib") for dir in bbpath]
-    sys.path[0:0] = layerpaths
-
-    if modules is None:
-        import oe.data
-        modules = oe.data.typed_value("OE_IMPORTS", d)
-
-    has_reloaded = set()
-    for toimport in modules:
-        # If we're importing something in a namespace package, and it's
-        # already been imported, reload it, to ensure any namespace package
-        # extensions to __path__ are picked up
-        imp_project = toimport
-        while True:
-            try:
-                imp_project, _ = imp_project.rsplit(".", 1)
-            except ValueError:
-                break
-            if imp_project in sys.modules and imp_project not in has_reloaded:
-                mod = sys.modules[imp_project]
-                if hasattr(mod, '__path__'):
-                    bb.debug(1, 'Reloading %s' % imp_project)
-                    importlib.reload(mod)
-                    has_reloaded.add(imp_project)
-
-        project = toimport.split(".", 1)[0]
-        imported = importlib.import_module(toimport)
-        sys.modules[toimport] = imported
-        inject(project, sys.modules[project])
-        bb.debug(1, 'Imported and injected %s' % toimport)
-
-    return ""
-
-EXTERNAL_IMPORTED := "${@fixed_oe_import(d, ['oe.external'])}"
-
-EXTERNAL_TOOLCHAIN_SYSROOT ?= "${@external_run(d, '${EXTERNAL_CC}', *(TARGET_CC_ARCH.split() + ['-print-sysroot'])).rstrip()}"
-EXTERNAL_TOOLCHAIN_LIBROOT ?= "${@external_run(d, '${EXTERNAL_CC}', *(TARGET_CC_ARCH.split() + ['-print-file-name=crtbegin.o'])).rstrip().replace('/crtbegin.o', '')}"
-EXTERNAL_HEADERS_MULTILIB_SUFFIX ?= "${@external_run(d, '${EXTERNAL_CC}', *(TARGET_CC_ARCH.split() + ['-print-sysroot-headers-suffix'])).rstrip()}"
-EXTERNAL_LIBC_KERNEL_VERSION ?= "${@external_get_kernel_version(d, "${EXTERNAL_TOOLCHAIN_SYSROOT}${prefix}")}"
-
-EXTERNAL_INSTALL_SOURCE_PATHS = "\
-    ${EXTERNAL_TOOLCHAIN_SYSROOT} \
-    ${EXTERNAL_TOOLCHAIN}/${EXTERNAL_TARGET_SYS} \
-    ${EXTERNAL_TOOLCHAIN_SYSROOT}/.. \
-    ${EXTERNAL_TOOLCHAIN} \
-    ${D} \
-"
-
-# Potential locations within the external toolchain sysroot
-FILES_PREMIRRORS = "\
-    ${bindir}/|/usr/${baselib}/bin/\n \
-"
-
-FILES_MIRRORS = "\
-    ${base_libdir}/|/usr/${baselib}/\n \
-    ${libexecdir}/|/usr/libexec/\n \
-    ${libexecdir}/|/usr/${baselib}/${PN}\n \
-    ${mandir}/|/usr/share/man/\n \
-    ${mandir}/|/usr/man/\n \
-    ${mandir}/|/man/\n \
-    ${mandir}/|/share/doc/*-${EXTERNAL_TARGET_SYS}/man/\n \
-    ${prefix}/|${base_prefix}/\n \
-"
-
-EXTERNAL_CC ?= "${EXTERNAL_TARGET_SYS}-gcc"
-
-def external_run(d, *args):
-    """Convenience wrapper"""
-    if (not d.getVar('TCMODE', True).startswith('external') or
-            not d.getVar('EXTERNAL_TOOLCHAIN', True)):
-        return 'UNKNOWN'
-
-    sys.path.append(os.path.join(d.getVar('LAYERDIR_external-toolchain', True), 'lib'))
-    import oe.external
-    return oe.external.run(d, *args)
-
-def external_get_kernel_version(d, p):
-    if (not d.getVar('TCMODE', True).startswith('external') or
-            not d.getVar('EXTERNAL_TOOLCHAIN', True)):
-        return 'UNKNOWN'
-
-    import re
-    for fn in ['include/linux/utsrelease.h', 'include/generated/utsrelease.h',
-               'include/linux/version.h']:
-        fn = os.path.join(p, fn)
-        if os.path.exists(fn):
-            break
-    else:
-        return ''
-
-    try:
-        f = open(fn)
-    except IOError:
-        pass
-    else:
-        with f:
-            lines = f.readlines()
-
-        for line in lines:
-            m = re.match(r'#define LINUX_VERSION_CODE (\d+)$', line)
-            if m:
-                code = int(m.group(1))
-                a = code >> 16
-                b = (code >> 8) & 0xFF
-                return '%d.%d' % (a, b)
-
-    bb.debug(1, 'external-common.bbclass: failed to find kernel version header in {}'.format(p))
-    return ''

+ 8 - 8
meta-external-toolchain/classes/external-toolchain-cross-canadian.bbclass

@@ -2,10 +2,10 @@ inherit external-toolchain cross-canadian
 
 # Toolchain binaries are expected to run on both this host and SDKMACHINE, so
 # we should be able to use host tools.
-STRIP_task-package = "strip"
-STRIP_task-populate-sysroot = "strip"
-OBJCOPY_task-package = "objcopy"
-PACKAGE_DEPENDS_remove = "virtual/${TARGET_PREFIX}binutils"
+STRIP:task-package = "strip"
+STRIP:task-populate-sysroot = "strip"
+OBJCOPY:task-package = "objcopy"
+PACKAGE_DEPENDS:remove = "virtual/${TARGET_PREFIX}binutils"
 
 # Scan just toolchains root directory, but include some additional mirrors
 EXTERNAL_INSTALL_SOURCE_PATHS = "${EXTERNAL_TOOLCHAIN}"
@@ -27,9 +27,9 @@ libdir = "${exec_prefix}/lib"
 libexecdir = "${exec_prefix}/libexec"
 
 # We're relying on a compatible host libc, not one from a nativesdk build
-INSANE_SKIP_${PN} += "build-deps file-rdeps"
+INSANE_SKIP:${PN} += "build-deps file-rdeps"
 
-do_install_append () {
+do_install:append () {
     for i in ${D}${bindir}/${EXTERNAL_TARGET_SYS}-*; do
         if [ -e "$i" ]; then
             j="$(basename "$i")"
@@ -43,12 +43,12 @@ python add_files_links () {
     full_prefix = os.path.join(d.getVar('bindir'), prefix)
     new_prefix = d.getVar('TARGET_PREFIX')
     for pkg in d.getVar('PACKAGES').split():
-        files = (d.getVar('FILES_%s' % pkg) or '').split()
+        files = (d.getVar('FILES:%s' % pkg) or '').split()
         new_files = []
         for f in files:
             if f.startswith(full_prefix):
                 new_files.append(f.replace(prefix, new_prefix))
         if new_files:
-            d.appendVar('FILES_%s' % pkg, ' ' + ' '.join(new_files))
+            d.appendVar('FILES:%s' % pkg, ' ' + ' '.join(new_files))
 }
 do_package[prefuncs] += "add_files_links"

+ 2 - 0
meta-external-toolchain/classes/external-toolchain-cross.bbclass

@@ -18,9 +18,11 @@ do_install () {
     install -d ${D}${bindir}
     for bin in ${EXTERNAL_CROSS_BINARIES}; do
         if [ ! -e "${EXTERNAL_TOOLCHAIN_BIN}/${EXTERNAL_TARGET_SYS}-$bin" ]; then
+            bbdebug 1 "${EXTERNAL_TOOLCHAIN_BIN}/${EXTERNAL_TARGET_SYS}-$bin does not exist"
             continue
         fi
 
+        bbdebug 1 wrap_bin "$bin"
         wrap_bin "$bin"
     done
 }

+ 26 - 26
meta-external-toolchain/classes/external-toolchain.bbclass

@@ -21,7 +21,7 @@ S = "${WORKDIR}"
 INHIBIT_DEFAULT_DEPS = "1"
 
 # Missing build deps don't matter when we don't build anything
-INSANE_SKIP_${PN} += "build-deps"
+INSANE_SKIP:${PN} += "build-deps"
 
 EXTERNAL_PN ?= "${@PN.replace('-external', '')}"
 PROVIDES += "${EXTERNAL_PN}"
@@ -36,14 +36,14 @@ do_compile[noexec] = "1"
 
 EXTERNAL_PV_PREFIX ?= ""
 EXTERNAL_PV_SUFFIX ?= ""
-PV_prepend = "${@'${EXTERNAL_PV_PREFIX}' if '${EXTERNAL_PV_PREFIX}' else ''}"
-PV_append = "${@'${EXTERNAL_PV_SUFFIX}' if '${EXTERNAL_PV_SUFFIX}' else ''}"
+PV:prepend = "${@'${EXTERNAL_PV_PREFIX}' if '${EXTERNAL_PV_PREFIX}' else ''}"
+PV:append = "${@'${EXTERNAL_PV_SUFFIX}' if '${EXTERNAL_PV_SUFFIX}' else ''}"
 
 EXTERNAL_EXTRA_FILES ?= ""
 
 # Skip this recipe if we don't have files in the external toolchain
 EXTERNAL_AUTO_PROVIDE ?= "0"
-EXTERNAL_AUTO_PROVIDE_class-target ?= "1"
+EXTERNAL_AUTO_PROVIDE:class-target ?= "1"
 
 # We don't care if this path references other variables
 EXTERNAL_TOOLCHAIN[vardepvalue] = "${EXTERNAL_TOOLCHAIN}"
@@ -125,13 +125,13 @@ python external_toolchain_do_install () {
         bb.build.exec_func('do_install_extra', d)
     external_toolchain_propagate_mode(d, installdest)
 }
-external_toolchain_do_install[vardeps] += "${@' '.join('FILES_%s' % pkg for pkg in '${PACKAGES}'.split())}"
+external_toolchain_do_install[vardeps] += "${@' '.join('FILES:%s' % pkg for pkg in '${PACKAGES}'.split())}"
 
 # Change do_install's CWD to EXTERNAL_TOOLCHAIN for convenience
 do_install[dirs] = "${D} ${EXTERNAL_TOOLCHAIN}"
 
 python () {
-    # Deal with any do_install_append
+    # Deal with any do_install:append
     install = d.getVar('do_install', False)
     try:
         base, appended = install.split('# Sentinel', 1)
@@ -140,31 +140,31 @@ python () {
     else:
         d.setVar('do_install', base)
         if appended.strip():
-            d.setVar('do_install_appended', appended)
-            d.setVarFlag('do_install_appended', 'func', '1')
-            d.appendVarFlag('do_install', 'postfuncs', ' do_install_appended')
+            d.setVar('do_install_added', appended)
+            d.setVarFlag('do_install_added', 'func', '1')
+            d.appendVarFlag('do_install', 'postfuncs', ' do_install_added')
 }
 
 # Toolchain shipped binaries weren't necessarily built ideally
-WARN_QA_remove = "ldflags textrel"
-ERROR_QA_remove = "ldflags textrel"
+WARN_QA:remove = "ldflags textrel"
+ERROR_QA:remove = "ldflags textrel"
 
 # Debug files may well have already been split out, or stripped out
-INSANE_SKIP_${PN} += "already-stripped"
-
-RPROVIDES_${PN} += "${EXTERNAL_PN}"
-RPROVIDES_${PN}-dev += "${EXTERNAL_PN}-dev"
-RPROVIDES_${PN}-staticdev += "${EXTERNAL_PN}-staticdev"
-RPROVIDES_${PN}-dbg += "${EXTERNAL_PN}-dbg"
-RPROVIDES_${PN}-doc += "${EXTERNAL_PN}-doc"
-RPROVIDES_${PN}-locale += "${EXTERNAL_PN}-locale"
+INSANE_SKIP:${PN} += "already-stripped"
+
+RPROVIDES:${PN} += "${EXTERNAL_PN}"
+RPROVIDES:${PN}-dev += "${EXTERNAL_PN}-dev"
+RPROVIDES:${PN}-staticdev += "${EXTERNAL_PN}-staticdev"
+RPROVIDES:${PN}-dbg += "${EXTERNAL_PN}-dbg"
+RPROVIDES:${PN}-doc += "${EXTERNAL_PN}-doc"
+RPROVIDES:${PN}-locale += "${EXTERNAL_PN}-locale"
 LOCALEBASEPN = "${EXTERNAL_PN}"
 
-FILES_${PN} = ""
-FILES_${PN}-dev = ""
-FILES_${PN}-staticdev = ""
-FILES_${PN}-doc = ""
-FILES_${PN}-locale = ""
+FILES:${PN} = ""
+FILES:${PN}-dev = ""
+FILES:${PN}-staticdev = ""
+FILES:${PN}-doc = ""
+FILES:${PN}-locale = ""
 
 def debug_paths(d):
     l = d.createCopy()
@@ -177,7 +177,7 @@ def debug_paths(d):
     for p in l.getVar('PACKAGES', True).split():
         if p.endswith('-dbg'):
             continue
-        for f in (l.getVar('FILES_%s' % p, True) or '').split():
+        for f in (l.getVar('FILES:%s' % p, True) or '').split():
             if any((f == x or f.startswith(x + '/')) for x in exclude):
                 continue
             d = os.path.dirname(f)
@@ -187,4 +187,4 @@ def debug_paths(d):
             paths.append('{0}/.debug/{1}.debug'.format(d, b))
     return set(paths)
 
-FILES_${PN}-dbg = "${@' '.join(debug_paths(d))}"
+FILES:${PN}-dbg = "${@' '.join(debug_paths(d))}"

+ 122 - 0
meta-external-toolchain/classes/external_global.bbclass

@@ -0,0 +1,122 @@
+def fixed_oe_import(d, modules=None):
+    import importlib
+    import sys
+
+    def inject(name, value):
+        """Make a python object accessible from the metadata"""
+        if hasattr(bb.utils, "_context"):
+            bb.utils._context[name] = value
+        else:
+            __builtins__[name] = value
+
+    bbpath = d.getVar("BBPATH").split(":")
+    layerpaths = [os.path.join(dir, "lib") for dir in bbpath]
+    sys.path[0:0] = layerpaths
+
+    if modules is None:
+        import oe.data
+        modules = oe.data.typed_value("OE_IMPORTS", d)
+
+    has_reloaded = set()
+    for toimport in modules:
+        # If we're importing something in a namespace package, and it's
+        # already been imported, reload it, to ensure any namespace package
+        # extensions to __path__ are picked up
+        imp_project = toimport
+        while True:
+            try:
+                imp_project, _ = imp_project.rsplit(".", 1)
+            except ValueError:
+                break
+            if imp_project in sys.modules and imp_project not in has_reloaded:
+                mod = sys.modules[imp_project]
+                if hasattr(mod, '__path__'):
+                    bb.debug(1, 'Reloading %s' % imp_project)
+                    importlib.reload(mod)
+                    has_reloaded.add(imp_project)
+
+        project = toimport.split(".", 1)[0]
+        imported = importlib.import_module(toimport)
+        sys.modules[toimport] = imported
+        inject(project, sys.modules[project])
+        bb.debug(1, 'Imported and injected %s' % toimport)
+
+    return ""
+
+EXTERNAL_IMPORTED := "${@fixed_oe_import(d, ['oe.external'])}"
+
+EXTERNAL_TOOLCHAIN_SYSROOT ?= "${@external_run(d, '${EXTERNAL_CC}', *(TARGET_CC_ARCH.split() + ['-print-sysroot'])).rstrip()}"
+EXTERNAL_TOOLCHAIN_LIBROOT ?= "${@external_run(d, '${EXTERNAL_CC}', *(TARGET_CC_ARCH.split() + ['-print-file-name=crtbegin.o'])).rstrip().replace('/crtbegin.o', '')}"
+EXTERNAL_HEADERS_MULTILIB_SUFFIX ?= "${@external_run(d, '${EXTERNAL_CC}', *(TARGET_CC_ARCH.split() + ['-print-sysroot-headers-suffix'])).rstrip()}"
+EXTERNAL_LIBC_KERNEL_VERSION ?= "${@external_get_kernel_version(d, "${EXTERNAL_TOOLCHAIN_SYSROOT}${prefix}")}"
+
+EXTERNAL_INSTALL_SOURCE_PATHS = "\
+    ${EXTERNAL_TOOLCHAIN_SYSROOT} \
+    ${EXTERNAL_TOOLCHAIN}/${EXTERNAL_TARGET_SYS} \
+    ${EXTERNAL_TOOLCHAIN_SYSROOT}/.. \
+    ${EXTERNAL_TOOLCHAIN} \
+    ${D} \
+"
+
+# Potential locations within the external toolchain sysroot
+FILES_PREMIRRORS = "\
+    ${bindir}/|/usr/${baselib}/bin/\n \
+"
+
+FILES_MIRRORS = "\
+    ${base_libdir}/|/usr/${baselib}/\n \
+    ${libexecdir}/|/usr/libexec/\n \
+    ${libexecdir}/|/usr/${baselib}/${PN}\n \
+    ${mandir}/|/usr/share/man/\n \
+    ${mandir}/|/usr/man/\n \
+    ${mandir}/|/man/\n \
+    ${mandir}/|/share/doc/*-${EXTERNAL_TARGET_SYS}/man/\n \
+    ${prefix}/|${base_prefix}/\n \
+"
+
+EXTERNAL_CC ?= "${EXTERNAL_TARGET_SYS}-gcc"
+
+def external_run(d, *args):
+    """Convenience wrapper"""
+    if (not d.getVar('TCMODE', True).startswith('external') or
+            not d.getVar('EXTERNAL_TOOLCHAIN', True)):
+        return 'UNKNOWN'
+
+    sys.path.append(os.path.join(d.getVar('LAYERDIR_external-toolchain', True), 'lib'))
+    import oe.external
+    return oe.external.run(d, *args)
+
+external_run[vardepsexclude] += "LAYERDIR_external-toolchain"
+
+def external_get_kernel_version(d, p):
+    if (not d.getVar('TCMODE', True).startswith('external') or
+            not d.getVar('EXTERNAL_TOOLCHAIN', True)):
+        return 'UNKNOWN'
+
+    import re
+    for fn in ['include/linux/utsrelease.h', 'include/generated/utsrelease.h',
+               'include/linux/version.h']:
+        fn = os.path.join(p, fn)
+        if os.path.exists(fn):
+            break
+    else:
+        return ''
+
+    try:
+        f = open(fn)
+    except IOError:
+        pass
+    else:
+        with f:
+            lines = f.readlines()
+
+        for line in lines:
+            m = re.match(r'#define LINUX_VERSION_CODE (\d+)$', line)
+            if m:
+                code = int(m.group(1))
+                a = code >> 16
+                b = (code >> 8) & 0xFF
+                return '%d.%d' % (a, b)
+
+    bb.debug(1, 'external_global.bbclass: failed to find kernel version header in {}'.format(p))
+    return ''

+ 1 - 1
meta-external-toolchain/classes/sanity-external-toolchain.bbclass

@@ -47,7 +47,7 @@ def check_toolchain_sanity(d, generate_events=False):
         l = d.createCopy()
         l.setVar('TOOLCHAIN_OPTIONS', '')
         l.setVar('TARGET_PREFIX', '${EXTERNAL_TARGET_SYS}-')
-        l.setVar('HOST_CC_ARCH_remove', '--no-sysroot-suffix')
+        l.setVar('HOST_CC_ARCH:remove', '--no-sysroot-suffix')
         cmd = l.expand('${EXTERNAL_TOOLCHAIN_BIN}/${EXTERNAL_CC} ${HOST_CC_ARCH} ${CFLAGS} ${LDFLAGS} test.c -o test')
         exttc_sanity_run(shlex.split(cmd), d, generate_events, tmpdir)
 

+ 40 - 0
meta-external-toolchain/classes/skip_recipe_dynamic.bbclass

@@ -0,0 +1,40 @@
+# Skip recipes for names which include variable references, handling multilibs.
+#
+# Ex.
+#     SKIP_RECIPE_DYNAMIC += "${MLPREFIX}gcc-cross-${TARGET_ARCH}"
+#     SKIP_RECIPE_DYNAMIC += "gcc-source-${@'${GCCVERSION}'.replace('%', '')}"
+
+SKIP_RECIPE_DYNAMIC ?= ""
+
+python skip_recipe_dynamic_setup () {
+    d = e.data
+
+    blacklisted = d.getVar('SKIP_RECIPE_DYNAMIC', False)
+    if not blacklisted.strip():
+        return
+
+    multilibs = d.getVar('MULTILIBS', True) or ''
+
+    # this block has been copied from base.bbclass so keep it in sync
+    prefixes = []
+    for ext in multilibs.split():
+        eext = ext.split(':')
+        if len(eext) > 1 and eext[0] == 'multilib':
+            prefixes.append(eext[1])
+
+    to_blacklist = set()
+    for prefix in [''] + prefixes:
+        localdata = bb.data.createCopy(d)
+        if prefix:
+            localdata.setVar('MLPREFIX', prefix + '-')
+            override = ':virtclass-multilib-' + prefix
+            localdata.setVar('OVERRIDES', localdata.getVar('OVERRIDES', False) + override)
+            bb.data.update_data(localdata)
+
+        to_blacklist |= set(filter(None, localdata.getVar('SKIP_RECIPE_DYNAMIC').split()))
+
+    for blrecipe in to_blacklist:
+        d.setVarFlag('SKIP_RECIPE', blrecipe, 'skipped by SKIP_RECIPE_DYNAMIC')
+}
+skip_recipe_dynamic_setup[eventmask] = "bb.event.ConfigParsed"
+addhandler skip_recipe_dynamic_setup

+ 6 - 3
meta-external-toolchain/conf/distro/include/tcmode-external-oe-sdk.inc

@@ -3,6 +3,9 @@ require conf/distro/include/tcmode-external.inc
 # OE-built toolchains default to this, so don't pass it explicitly
 TARGET_LDFLAGS_BUILD_ID = ""
 
+# OE-built toolchains assume en_US is utf8
+EXTERNAL_TOOLCHAIN_FEATURES_DEFAULT ??= "locale-utf8-is-default"
+
 TCMODEOVERRIDES .= ":tcmode-external-oe-sdk"
 
 EXTERNAL_TARGET_SYS ?= "${TARGET_SYS}"
@@ -13,12 +16,12 @@ EXTERNAL_MULTIMACH_TARGET_SYS ?= "${MULTIMACH_TARGET_SYS}"
 EXTERNAL_TOOLCHAIN_SYSROOT = "${EXTERNAL_TOOLCHAIN}/sysroots/${EXTERNAL_MULTIMACH_TARGET_SYS}"
 
 EXTERNAL_CC = "${EXTERNAL_TARGET_SYS}-gcc --sysroot=${EXTERNAL_TOOLCHAIN_SYSROOT}"
-EXTERNAL_TOOLCHAIN_FEATURES_append = " locale-utf8-is-default"
+EXTERNAL_TOOLCHAIN_FEATURES:append = " locale-utf8-is-default"
 
 EXTERNAL_SETUP_SCRIPT_VARS ?= ""
 
 # Our headers are already multilib
-oe_multilib_header_pn-glibc-external = ":"
+oe_multilib_header:pn-glibc-external = ":"
 
 EXTERNAL_TOOLCHAINS ??= "${EXTERNAL_TOOLCHAIN}"
 
@@ -147,7 +150,7 @@ def get_setup_script_env(paths, d):
             bb.debug(1, "tcmode-external-oe-sdk: selected setup script {}".format(setup))
 
     if not setup:
-        bb.fatal('tcmode-external-oe-sdk: failed to determine setup script path for sdk, please set EXTERNAL_TOOLCHAIN_SETUP_SCRIPT to the full path to the environment setup script.')
+        bb.fatal("tcmode-external-oe-sdk: no compatible toolchain for tuning `{}` found in TOOLCHAIN_PATHS ({})".format(d.getVar("TUNE_PKGARCH"), ", ".join(str(p) for p in paths)))
     return setup, env
 
 def setup_get(setup, field):

+ 29 - 29
meta-external-toolchain/conf/distro/include/tcmode-external.inc

@@ -2,12 +2,14 @@
 EXTERNAL_TOOLCHAIN ??= "UNKNOWN"
 EXTERNAL_TARGET_SYS ??= "${TARGET_ARCH}-${TARGET_OS}"
 EXTERNAL_TOOLCHAIN_BIN ??= "${EXTERNAL_TOOLCHAIN}/bin"
+EXTERNAL_ENABLED = "1"
 
 # External toolchain features.
 #
 #   locale-utf8-is-default: assume en_US is utf8, not en_US.UTF-8, as is the
 #                           case for OE.
-EXTERNAL_TOOLCHAIN_FEATURES ?= ""
+EXTERNAL_TOOLCHAIN_FEATURES_DEFAULT ??= ""
+EXTERNAL_TOOLCHAIN_FEATURES ?= "${EXTERNAL_TOOLCHAIN_FEATURES_DEFAULT}"
 
 python () {
     oe.utils.features_backfill("EXTERNAL_TOOLCHAIN_FEATURES", d)
@@ -39,8 +41,8 @@ PREFERRED_PROVIDER_${MLPREFIX}gdbserver ?= "${MLPREFIX}gdb"
 # This is defined in default-providers.inc, which is parsed before the tcmode,
 # so we can't use ?=
 PREFERRED_PROVIDER_linux-libc-headers = "glibc-external"
-PNBLACKLIST[linux-libc-headers] = "not building with an external toolchain"
-PNBLACKLIST[linux-libc-headers-yocto] = "not building with an external toolchain"
+SKIP_RECIPE[linux-libc-headers] = "not building with an external toolchain"
+SKIP_RECIPE[linux-libc-headers-yocto] = "not building with an external toolchain"
 
 PREFERRED_PROVIDER_gcc-cross-canadian-${TRANSLATED_TARGET_ARCH} ??= "gcc-external-cross-canadian-${TRANSLATED_TARGET_ARCH}"
 PREFERRED_PROVIDER_binutils-cross-canadian-${TRANSLATED_TARGET_ARCH} ??= "binutils-external-cross-canadian-${TRANSLATED_TARGET_ARCH}"
@@ -51,27 +53,24 @@ PREFERRED_PROVIDER_gdb-cross-canadian-${TRANSLATED_TARGET_ARCH} ??= "gdb-externa
 PREFERRED_PROVIDER_libgcc = "libgcc-external"
 
 # Pass --no-sysroot-suffix when using an external toolchain with the SDK
-TOOLCHAIN_TARGET_TASK_append = " sdk-env-external-toolchain"
+TOOLCHAIN_TARGET_TASK:append = " sdk-env-external-toolchain"
 
 # Sanity check the toolchain configuration and toolchain
 INHERIT += "sanity-external-toolchain"
 
-# Pull in our utility functions for use elsewhere
-INHERIT += "external-common"
-
 # Ensure that we don't pull in any internal toolchain recipes
-INHERIT += "blacklist blacklist_dynamic"
-PNBLACKLIST[uclibc] = "not building with an external toolchain"
-PNBLACKLIST[glibc] = "not building with an external toolchain"
-PNBLACKLIST[glibc-intermediate] = "not building with an external toolchain"
-PNBLACKLIST[gcc-runtime] = "not building with an external toolchain"
-PNBLACKLIST[gcc-sanitizers] = "not building with an external toolchain"
-PNBLACKLIST[gcc-source] = "not building with an external toolchain"
-PNBLACKLIST[libgcc-initial] = "not building with an external toolchain"
-PNBLACKLIST[libgcc] = "not building with an external toolchain"
-PNBLACKLIST[libgfortran] = "not building with an external toolchain"
-
-PNBLACKLIST_DYNAMIC += "\
+INHERIT += "skip_recipe_dynamic"
+SKIP_RECIPE[uclibc] = "not building with an external toolchain"
+SKIP_RECIPE[glibc] = "not building with an external toolchain"
+SKIP_RECIPE[glibc-intermediate] = "not building with an external toolchain"
+SKIP_RECIPE[gcc-runtime] = "not building with an external toolchain"
+SKIP_RECIPE[gcc-sanitizers] = "not building with an external toolchain"
+SKIP_RECIPE[gcc-source] = "not building with an external toolchain"
+SKIP_RECIPE[libgcc-initial] = "not building with an external toolchain"
+SKIP_RECIPE[libgcc] = "not building with an external toolchain"
+SKIP_RECIPE[libgfortran] = "not building with an external toolchain"
+
+SKIP_RECIPE_DYNAMIC += "\
     ${MLPREFIX}gcc-cross-${TARGET_ARCH} \
     \
     binutils-cross-canadian-${TRANSLATED_TARGET_ARCH} \
@@ -83,35 +82,36 @@ PNBLACKLIST_DYNAMIC += "\
 
 # We need our -cross recipes to rebuild when the external toolchain changes,
 # to recreate the links / wrapper scripts
-BB_HASHBASE_WHITELIST_remove = "EXTERNAL_TOOLCHAIN"
+BB_BASEHASH_IGNORE_VARS:remove = "EXTERNAL_TOOLCHAIN"
 
 # For a toolchain built with multilibs, we don't want any suffix implicitly
 # added to the oe sysroot path, as those dirs will not exist.
 # TOOLCHAIN_OPTIONS would seem more appropriate, but that gets added to LD as
 # well, and --no-sysroot-suffix only works for gcc, not binutils.
-HOST_CC_ARCH += "--no-sysroot-suffix"
+NO_SYSROOT_SUFFIX = " --no-sysroot-suffix"
+NO_SYSROOT_SUFFIX:toolchain-clang = ""
+HOST_CC_ARCH .= "${NO_SYSROOT_SUFFIX}"
 
 # Certain recipes call ld directly, so ensure the correct emulation is used,
 # particularly for multilib toolchains, since we can't rely on the default
 LDEMULATION = ""
 LDEMULATION_ENDIAN = "${@'bt' if 'bigendian' in '${TUNE_FEATURES}'.split() else 'lt'}"
 LDEMULATION_BITS = "${@'64' if 'n64' in '${TUNE_FEATURES}'.split() else '32'}"
-LDEMULATION_mips64 = "elf${LDEMULATION_BITS}${LDEMULATION_ENDIAN}smip${@bb.utils.contains('TUNE_FEATURES', 'n32', 'n32', '', d)}"
-LDEMULATION_x86-64 = "elf_${TARGET_ARCH}"
-LDEMULATION_x86-64_linux-gnux32 = "elf32_${TARGET_ARCH}"
+LDEMULATION:mips64 = "elf${LDEMULATION_BITS}${LDEMULATION_ENDIAN}smip${@bb.utils.contains('TUNE_FEATURES', 'n32', 'n32', '', d)}"
+LDEMULATION:x86-64 = "elf_${TARGET_ARCH}"
+LDEMULATION:x86-64:linux-gnux32 = "elf32_${TARGET_ARCH}"
 TUNE_LDARGS += "${@'-m ${LDEMULATION}' if '${LDEMULATION}' else ''}"
 
 # Additional search path for compiler component programs, to let us rebuild
 # binutils if necessary.
 gcc_bindir = "${STAGING_BINDIR_TOOLCHAIN}/gcc"
-TUNE_CCARGS .= "${@' -B${gcc_bindir}' if d.getVar('PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}binutils') != 'binutils-external-cross-${TARGET_ARCH}' else ''}"
+TARGET_CC_ARCH .= "${@' -B${gcc_bindir}' if d.getVar('PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}binutils') != 'binutils-external-cross-${TARGET_ARCH}' else ''}"
 
 # Align the external toolchain ldflags with the internal
 TARGET_LDFLAGS_BUILD_ID = "-Wl,--build-id=sha1"
 TARGET_LDFLAGS += "${TARGET_LDFLAGS_BUILD_ID}"
 
-TCMODEOVERRIDES = "tcmode-external"
-TCMODEOVERRIDES_append = ":tcmode-${TCMODE}"
+TCMODEOVERRIDES ?= "tcmode-external"
 OVERRIDES =. "${TCMODEOVERRIDES}:"
 
 python toolchain_metadata_setup () {
@@ -128,12 +128,12 @@ toolchain_metadata_setup[eventmask] = "bb.event.ConfigParsed"
 addhandler toolchain_metadata_setup
 
 GCCVERSION ?= "${@'.'.join('${GCC_VERSION}'.split('.')[:2])}%"
-GCC_VERSION = "${@external_run(d, 'gcc', '-dumpversion').rstrip()}"
+GCC_VERSION = "${@external_run(d, d.getVar('EXTERNAL_CC'), '-dumpversion').rstrip()}"
 GCC_VERSION_allarch = ""
 GCC_VERSION[vardepvalue] = "${GCC_VERSION}"
 
 # macro-prefix-map was introduced in gcc 8
 REMOVE_MACRO_PREFIX_MAP = "-fmacro-prefix-map=${WORKDIR}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}"
-DEBUG_PREFIX_MAP_remove_class-target = "${@'${REMOVE_MACRO_PREFIX_MAP}' if '${GCC_VERSION}' not in ['', 'UNKNOWN'] and [int(v) for v in '${GCC_VERSION}'.split('.')] < [8,0] else ''}"
+DEBUG_PREFIX_MAP:remove:class-target = "${@'${REMOVE_MACRO_PREFIX_MAP}' if '${GCC_VERSION}' not in ['', 'UNKNOWN'] and [int(v) for v in '${GCC_VERSION}'.split('.')] < [8,0] else ''}"
 
 BUILDCFG_VARS += "EXTERNAL_TOOLCHAIN EXTERNAL_TARGET_SYS GCC_VERSION"

+ 2 - 2
meta-external-toolchain/conf/layer.conf

@@ -6,7 +6,7 @@ BBFILE_PRIORITY_external-toolchain = "1"
 BBFILE_PATTERN_external-toolchain = "^${LAYERDIR}/"
 
 LAYERDEPENDS_external-toolchain = "core"
-LAYERSERIES_COMPAT_external-toolchain = "thud warrior zeus dunfell gatesgarth"
+LAYERSERIES_COMPAT_external-toolchain = "kirkstone langdale"
 LAYERDIR_external-toolchain = "${LAYERDIR}"
 
 BBFILES += "${@' '.join('${LAYERDIR}/%s/recipes*/*/*.%s' % (layer, ext) \
@@ -22,7 +22,7 @@ SIGGEN_EXCLUDERECIPES_ABISAFE += "\
 "
 
 # Needed for external_run() for PV & LICENSE in the recipes, to be able to parse
-INHERIT_append = " external-common"
+INHERIT:append = " external_global"
 
 # Fallback default for when the tcmode isn't sourced
 GCC_VERSION ?= "0.0"

+ 3 - 3
meta-external-toolchain/core/recipes-bsp/systemd-boot/systemd-boot_%.bbappend

@@ -2,6 +2,6 @@
 # the default for the toolchain, which isn't necessarily correct for an
 # external toolchain.
 EFI_TUNE_ARCH = "-m32"
-EFI_TUNE_ARCH_x86-64 = "-m64"
-EFI_CC_tcmode-external = "${@'${CC}'.split()[0]} ${EFI_TUNE_ARCH}"
-EXTRA_OECONF_append_tcmode-external = " 'EFI_CC=${EFI_CC}'"
+EFI_TUNE_ARCH:x86-64 = "-m64"
+EFI_CC:tcmode-external = "${CCACHE}${HOST_PREFIX}gcc ${EFI_TUNE_ARCH}"
+EXTRA_OECONF:append:tcmode-external = " 'EFI_CC=${EFI_CC}'"

+ 5 - 5
meta-external-toolchain/core/recipes-core/glibc/glibc-locale_%.bbappend

@@ -1,15 +1,15 @@
-INHIBIT_PACKAGE_DEBUG_SPLIT_tcmode-external = "1"
+INHIBIT_PACKAGE_DEBUG_SPLIT:tcmode-external = "1"
 
 # Toolchain shipped binaries weren't necessarily built ideally
-WARN_QA_remove = "ldflags textrel"
-ERROR_QA_remove = "ldflags textrel"
+WARN_QA:remove:tcmode-external = "ldflags textrel"
+ERROR_QA:remove:tcmode-external = "ldflags textrel"
 
 # Debug files may well have already been split out, or stripped out
-INSANE_SKIP_${PN} += "already-stripped"
+INSANE_SKIP:${PN}:append:tcmode-external = " already-stripped"
 
 # localedef needs libgcc & libc
 localedef_depends = ""
-localedef_depends_tcmode-external = "${MLPREFIX}libgcc:do_packagedata virtual/${MLPREFIX}libc:do_packagedata"
+localedef_depends:tcmode-external = "${MLPREFIX}libgcc:do_packagedata virtual/${MLPREFIX}libc:do_packagedata"
 
 python () {
     depends = d.getVar('localedef_depends', True)

+ 3 - 2
meta-external-toolchain/core/recipes-core/meta/buildtools-tarball.bbappend

@@ -1,6 +1,7 @@
 # buildtools-tarball is host only, and does not add TOOLCHAIN_TARGET_TASK to
-# RDEPENDS. Forcibly empty it, otherwise a TOOLCHAIN_TARGET_TASK_append at the
+# RDEPENDS. Forcibly empty it, otherwise a TOOLCHAIN_TARGET_TASK:append at the
 # config level will break the buildtools-tarball build
 python () {
-    d.setVar('TOOLCHAIN_TARGET_TASK', '')
+    if d.getVar('EXTERNAL_ENABLED'):
+        d.setVar('TOOLCHAIN_TARGET_TASK', '')
 }

+ 1 - 2
meta-external-toolchain/core/recipes-core/meta/meta-environment-extsdk.bbappend

@@ -1,4 +1,3 @@
-
 # Don't dump the -B${gcc_bindir} appended to TUNE_CCARGS and subsequently
 # to TARGET_CC_ARCH, since it consists of local machine toolchain paths.
-TUNE_CCARGS_remove = "-B${gcc_bindir}"
+TUNE_CCARGS:remove:tcmode-external = "-B${gcc_bindir}"

+ 1 - 2
meta-external-toolchain/core/recipes-core/meta/meta-environment.bbappend

@@ -1,4 +1,3 @@
-
 # Don't dump the -B${gcc_bindir} appended to TUNE_CCARGS and subsequently
 # to TARGET_CC_ARCH, since it consists of local machine toolchain paths.
-TUNE_CCARGS_remove = "-B${gcc_bindir}"
+TUNE_CCARGS:remove:tcmode-external = "-B${gcc_bindir}"

+ 1 - 1
meta-external-toolchain/core/recipes-devtools/binutils/binutils-cross_%.bbappend

@@ -1,4 +1,4 @@
-do_install_append_tcmode-external () {
+do_install:append:tcmode-external () {
     install -d ${D}${bindir}/gcc
     for i in ${D}${bindir}/${TARGET_PREFIX}*; do
         ln -s ../$(basename "$i") ${D}${bindir}/gcc/${i##*/${TARGET_PREFIX}}

+ 1 - 1
meta-external-toolchain/core/recipes-devtools/gcc/gcc_%.bbappend

@@ -1,7 +1,7 @@
 # FIXME: resolve gcc version mismatch issues with ${libdir}/gcc/*/<version>
 # filesystem paths
 python () {
-    if d.getVar('TCMODE', True).startswith('external'):
+    if d.getVar('EXTERNAL_ENABLED'):
         # unwind.h will come from libgcc-external, we don't want to try to pull it
         # from the cross area of the sysroot
         inst = d.getVar('do_install', False).splitlines()

+ 3 - 3
meta-external-toolchain/core/recipes-devtools/gdb/gdb_%.bbappend

@@ -1,6 +1,6 @@
-PROVIDES_append_tcmode-external = " ${@'gdbserver' if '${PREFERRED_PROVIDER_${MLPREFIX}gdbserver}' == '${PN}' else ''}"
+PROVIDES:append:tcmode-external = " ${@'gdbserver' if '${PREFERRED_PROVIDER_${MLPREFIX}gdbserver}' == '${PN}' else ''}"
 
 # Disable build of gdbserver if is provided by external-sourcery-toolchain
-PACKAGES_remove_tcmode-external = "${@'gdbserver' if '${PREFERRED_PROVIDER_${MLPREFIX}gdbserver}' != '${PN}' else ''}"
+PACKAGES:remove:tcmode-external = "${@'gdbserver' if '${PREFERRED_PROVIDER_${MLPREFIX}gdbserver}' != '${PN}' else ''}"
 DISABLE_GDBSERVER = "${@'--disable-gdbserver' if '${PREFERRED_PROVIDER_${MLPREFIX}gdbserver}' != '${PN}' else ''}"
-EXTRA_OECONF_append_tcmode-external = " ${DISABLE_GDBSERVER}"
+EXTRA_OECONF:append:tcmode-external = " ${DISABLE_GDBSERVER}"

+ 1 - 1
meta-external-toolchain/core/recipes-devtools/python/python3_%.bbappend

@@ -1,3 +1,3 @@
 # This build relies on this matching up with HOST_PREFIX, as it doesn't seem
 # to use CROSS_COMPILE everywhere. Align it here to fix the build.
-HOST_SYS_tcmode-external = "${@'${HOST_PREFIX}'[:-1]}"
+HOST_SYS:tcmode-external = "${@'${HOST_PREFIX}'[:-1]}"

+ 1 - 1
meta-external-toolchain/core/recipes-extended/bash/bash_%.bbappend

@@ -1,4 +1,4 @@
-do_compile_append_tcmode-external () {
+do_compile:append:tcmode-external () {
     if [ -e support/bash.pc ] ; then
         sed -i -e 's#-B${gcc_bindir}##' support/bash.pc
     fi

+ 2 - 2
meta-external-toolchain/lib/oe/external.py

@@ -20,7 +20,7 @@ def run(d, cmd, *args):
 
         bb.debug(1, 'oe.external.run({})'.format(repr(args)))
         try:
-            output, _ = bb.process.run(args, cwd=topdir)
+            output, _ = bb.process.run(args, cwd=topdir, stderr=subprocess.STDOUT)
         except bb.process.CmdError as exc:
             bb.debug(1, 'oe.external.run: {} failed: {}'.format(subprocess.list2cmdline(args), exc))
         else:
@@ -66,7 +66,7 @@ def gather_pkg_files(d):
     import itertools
     files = []
     for pkg in d.getVar('PACKAGES').split():
-        files = itertools.chain(files, (d.getVar('EXTERNAL_FILES_{}'.format(pkg)) or d.getVar('FILES_{}'.format(pkg)) or '').split())
+        files = itertools.chain(files, (d.getVar('EXTERNAL_FILES_{}'.format(pkg)) or d.getVar('FILES:{}'.format(pkg)) or '').split())
     files = itertools.chain(files, d.getVar('EXTERNAL_EXTRA_FILES').split())
     return files
 

+ 2 - 2
meta-external-toolchain/recipes-external/binutils/binutils-external-cross-canadian.bb

@@ -3,13 +3,13 @@ inherit external-toolchain-cross-canadian
 
 PN .= "-${TRANSLATED_TARGET_ARCH}"
 
-FILES_${PN} = "\
+FILES:${PN} = "\
     ${@' '.join('${bindir}/${EXTERNAL_TARGET_SYS}-' + i for i in '${binutils_binaries}'.split())} \
     ${@' '.join('${exec_prefix}/${EXTERNAL_TARGET_SYS}/bin/' + i for i in '${binutils_binaries}'.split())} \
     ${exec_prefix}/lib/ldscripts \
 "
 
-do_install_append () {
+do_install:append () {
     if [ ! -e ${D}${bindir}/${EXTERNAL_TARGET_SYS}-ld.bfd ]; then
 		rm -rf ${D}${bindir}/${EXTERNAL_TARGET_SYS}-ld.bfd
 		echo "ln -s ${EXTERNAL_TARGET_SYS}-ld ${D}${bindir}/${EXTERNAL_TARGET_SYS}-ld.bfd"

+ 1 - 1
meta-external-toolchain/recipes-external/binutils/binutils-external-cross.bb

@@ -6,7 +6,7 @@ PROVIDES += "virtual/${TARGET_PREFIX}binutils"
 
 EXTERNAL_CROSS_BINARIES = "${binutils_binaries}"
 
-do_install_append () {
+do_install:append () {
     if [ ! -e ${D}${bindir}/${TARGET_PREFIX}ld.bfd ]; then
         ln -s ${TARGET_PREFIX}ld ${D}${bindir}/${TARGET_PREFIX}ld.bfd
     fi

+ 1 - 1
meta-external-toolchain/recipes-external/binutils/binutils-external.inc

@@ -3,7 +3,7 @@ HOMEPAGE = "http://www.gnu.org/software/binutils/"
 BUGTRACKER = "http://sourceware.org/bugzilla/"
 SECTION = "devel"
 PV := "${@external_run(d, 'ld', '-v').splitlines()[0].split()[-1].rstrip()}"
-LICENSE = "${@'GPLv3' if '${PV}'.split('.') > '2.17.50.0.12'.split('.') else 'GPLv2'}"
+LICENSE = "${@'GPL-3.0-only' if '${PV}'.split('.') > '2.17.50.0.12'.split('.') else 'GPL-2.0-only'}"
 
 binutils_binaries = "ar as ld ld.bfd ld.gold nm objcopy objdump ranlib strip \
                      addr2line c++filt elfedit gprof readelf size \

+ 3 - 3
meta-external-toolchain/recipes-external/gcc/gcc-external-cross-canadian.bb

@@ -5,8 +5,8 @@ PN .= "-${TRANSLATED_TARGET_ARCH}"
 
 BINV = "${GCC_VERSION}"
 
-RDEPENDS_${PN} = "binutils-external-cross-canadian-${TRANSLATED_TARGET_ARCH}"
-FILES_${PN} = "\
+RDEPENDS:${PN} = "binutils-external-cross-canadian-${TRANSLATED_TARGET_ARCH}"
+FILES:${PN} = "\
     ${libdir}/gcc/${EXTERNAL_TARGET_SYS}/${BINV} \
     ${libexecdir}/gcc/${EXTERNAL_TARGET_SYS}/${BINV} \
     ${libdir}/libcc1* \
@@ -16,4 +16,4 @@ FILES_${PN} = "\
 external_libroot = "${@os.path.realpath('${EXTERNAL_TOOLCHAIN_LIBROOT}').replace(os.path.realpath('${EXTERNAL_TOOLCHAIN}') + '/', '/')}"
 FILES_MIRRORS =. "${libdir}/gcc/${EXTERNAL_TARGET_SYS}/${BINV}/|${external_libroot}/\n"
 
-INSANE_SKIP_${PN} += "dev-so staticdev"
+INSANE_SKIP:${PN} += "dev-so staticdev"

+ 12 - 12
meta-external-toolchain/recipes-external/gcc/gcc-runtime-external.bb

@@ -26,12 +26,12 @@ FILES_MIRRORS =. "\
     ${includedir}/c\+\+/${GCC_VERSION}/${TARGET_SYS}/|${includedir}/c++/${GCC_VERSION}/${EXTERNAL_TARGET_SYS}/\n \
 "
 
-# The do_install_append in gcc-runtime.inc doesn't do well if the links
+# The do_install:append in gcc-runtime.inc doesn't do well if the links
 # already exist, as it causes a recursion that breaks traversal.
 python () {
-    adjusted = d.getVar('do_install_appended').replace('ln -s', 'link_if_no_dest')
+    adjusted = d.getVar('do_install_added', expand=False).replace('ln -s', 'link_if_no_dest')
     adjusted = adjusted.replace('mkdir', 'mkdir_if_no_dest')
-    d.setVar('do_install_appended', adjusted)
+    d.setVar('do_install_added', adjusted)
 }
 
 link_if_no_dest () {
@@ -69,14 +69,14 @@ do_install_extra () {
     fi
 }
 
-FILES_${PN}-dbg += "${datadir}/gdb/python/libstdcxx"
-FILES_libstdc++-dev = "\
+FILES:${PN}-dbg += "${datadir}/gdb/python/libstdcxx"
+FILES:libstdc++-dev = "\
     ${includedir}/c++ \
     ${libdir}/libstdc++.so \
     ${libdir}/libstdc++.la \
     ${libdir}/libsupc++.la \
 "
-FILES_libgomp-dev += "\
+FILES:libgomp-dev += "\
     ${libdir}/gcc/${TARGET_SYS}/${BINV}/include/openacc.h \
 "
 BBCLASSEXTEND = ""
@@ -85,12 +85,12 @@ BBCLASSEXTEND = ""
 # short-circuit the interdependency here by manually specifying it rather than
 # depending on the libc packagedata.
 libc_rdep = "${@'${PREFERRED_PROVIDER_virtual/libc}' if '${PREFERRED_PROVIDER_virtual/libc}' else '${TCLIBC}'}"
-RDEPENDS_libgomp += "${libc_rdep}"
-RDEPENDS_libssp += "${libc_rdep}"
-RDEPENDS_libstdc++ += "${libc_rdep}"
-RDEPENDS_libatomic += "${libc_rdep}"
-RDEPENDS_libquadmath += "${libc_rdep}"
-RDEPENDS_libmpx += "${libc_rdep}"
+RDEPENDS:libgomp += "${libc_rdep}"
+RDEPENDS:libssp += "${libc_rdep}"
+RDEPENDS:libstdc++ += "${libc_rdep}"
+RDEPENDS:libatomic += "${libc_rdep}"
+RDEPENDS:libquadmath += "${libc_rdep}"
+RDEPENDS:libmpx += "${libc_rdep}"
 
 do_package_write_ipk[depends] += "virtual/${MLPREFIX}libc:do_packagedata"
 do_package_write_deb[depends] += "virtual/${MLPREFIX}libc:do_packagedata"

+ 12 - 9
meta-external-toolchain/recipes-external/gcc/libgcc-external.bb

@@ -12,28 +12,28 @@ LICENSE = "GPL-3.0-with-GCC-exception"
 # libgcc needs libc, but glibc's utilities need libgcc, so short-circuit the
 # interdependency here by manually specifying it rather than depending on the
 # libc packagedata.
-RDEPENDS_${PN} += "${@'${PREFERRED_PROVIDER_virtual/libc}' if '${PREFERRED_PROVIDER_virtual/libc}' else '${TCLIBC}'}"
-INSANE_SKIP_${PN} += "build-deps file-rdeps"
+RDEPENDS:${PN} += "${@'${PREFERRED_PROVIDER_virtual/libc}' if '${PREFERRED_PROVIDER_virtual/libc}' else '${TCLIBC}'}"
+INSANE_SKIP:${PN} += "build-deps file-rdeps"
 
 # The dynamically loadable files belong to libgcc, since we really don't need the static files
 # on the target, moreover linker won't be able to find them there (see original libgcc.bb recipe).
 BINV = "${GCC_VERSION}"
-FILES_${PN} = "${base_libdir}/libgcc_s.so.*"
+FILES:${PN} = "${base_libdir}/libgcc_s.so.*"
 LIBROOT_RELATIVE_RESOLVED = "${@os.path.relpath(os.path.realpath('${EXTERNAL_TOOLCHAIN_LIBROOT}'), os.path.realpath('${EXTERNAL_TOOLCHAIN_SYSROOT}'))}"
 LIBROOT_RELATIVE = "${@os.path.relpath('${EXTERNAL_TOOLCHAIN_LIBROOT}', '${EXTERNAL_TOOLCHAIN_SYSROOT}')}"
-FILES_${PN}-dev = "${base_libdir}/libgcc_s.so \
+FILES:${PN}-dev = "${base_libdir}/libgcc_s.so \
              /${LIBROOT_RELATIVE_RESOLVED} \
              /${LIBROOT_RELATIVE} \
 "
-INSANE_SKIP_${PN}-dev += "staticdev"
-FILES_${PN}-dbg += "${base_libdir}/.debug/libgcc_s.so.*.debug"
+INSANE_SKIP:${PN}-dev += "staticdev"
+FILES:${PN}-dbg += "${base_libdir}/.debug/libgcc_s.so.*.debug"
 
 # Follow any symlinks in the libroot (multilib build) to the main
 # libroot and include any symlinks there that link to our libroot.
 python add_ml_symlink () {
     pass
 }
-python add_ml_symlink_tcmode-external () {
+python add_ml_symlink:tcmode-external () {
     import pathlib
 
     def get_links(p):
@@ -53,7 +53,7 @@ python add_ml_symlink_tcmode-external () {
                     other = other_child.parent.resolve() / other_child.name
                     relpath = other.relative_to(sysroot)
                     d.appendVar('SYSROOT_DIRS', ' /' + str(relpath.parent))
-                    d.appendVar('FILES_${PN}-dev', ' /' + str(relpath))
+                    d.appendVar('FILES:${PN}-dev', ' /' + str(relpath))
 }
 add_ml_symlink[eventmask] = "bb.event.RecipePreFinalise"
 addhandler add_ml_symlink
@@ -64,6 +64,9 @@ do_install_extra () {
             ln -s "${EXTERNAL_TARGET_SYS}" "${D}${libdir}/${TARGET_SYS}"
         fi
     fi
+
+    # This belongs in gcc-runtime
+    rm -rf ${D}${libdir}/${TARGET_SYS}/${BINV}/include
 }
 
 do_package[prefuncs] += "add_sys_symlink"
@@ -73,5 +76,5 @@ python add_sys_symlink () {
     target_sys = pathlib.Path(d.expand('${D}${libdir}/${TARGET_SYS}'))
     if target_sys.exists():
         pn = d.getVar('PN')
-        d.appendVar('FILES_%s-dev' % pn, ' ${libdir}/${TARGET_SYS}')
+        d.appendVar('FILES:%s-dev' % pn, ' ${libdir}/${TARGET_SYS}')
 }

+ 3 - 3
meta-external-toolchain/recipes-external/gcc/libgfortran-external.bb

@@ -15,13 +15,13 @@ EXTERNAL_PROVIDE_PATTERN = "${FILES_${PN}}"
 # We don't copy the static binaries and headers, since they don't belong to the
 # target sysroot, but need to be in the native one (that's the place where compiler
 # and linker are looking for them).
-FILES_${PN} = "${libdir}/libgfortran.so.*"
-FILES_${PN}-dev = "\
+FILES:${PN} = "${libdir}/libgfortran.so.*"
+FILES:${PN}-dev = "\
     ${libdir}/libgfortran*.so \
     ${libdir}/libgfortran.spec \
     ${libdir}/libgfortran.la \
 "
-FILES_${PN}-staticdev = "${libdir}/libgfortran.a"
+FILES:${PN}-staticdev = "${libdir}/libgfortran.a"
 
 do_package_write_ipk[depends] += "virtual/${MLPREFIX}libc:do_packagedata"
 do_package_write_deb[depends] += "virtual/${MLPREFIX}libc:do_packagedata"

+ 3 - 3
meta-external-toolchain/recipes-external/gdb/gdb-external-cross-canadian.bb

@@ -7,10 +7,10 @@ FILES_MIRRORS =. "\
     ${exec_prefix}|${target_exec_prefix}/${EXTERNAL_TARGET_SYS}\n \
 "
 
-#FILES_${PN} += "\
+#FILES:${PN} += "\
 #    ${@' '.join('${bindir}/${EXTERNAL_TARGET_SYS}-' + i for i in '${gdb_binaries}'.split())} \
 #    ${exec_prefix}/share/gdb \
 #"
 
-INSANE_SKIP_${PN} += "dev-so staticdev installed-vs-shipped"
-#INSANE_SKIP_${PN} += "dev-so staticdev"
+INSANE_SKIP:${PN} += "dev-so staticdev installed-vs-shipped"
+#INSANE_SKIP:${PN} += "dev-so staticdev"

+ 2 - 2
meta-external-toolchain/recipes-external/gdb/gdbserver-external.bb

@@ -18,8 +18,8 @@ def get_gdb_license(d):
 LICENSE := "${@get_gdb_license(d)}"
 LICENSE[vardepvalue] = "${LICENSE}"
 
-FILES_${PN} = "${bindir}/gdbserver"
-FILES_${PN}-doc = "${mandir}/man1/gdbserver.1"
+FILES:${PN} = "${bindir}/gdbserver"
+FILES:${PN}-doc = "${mandir}/man1/gdbserver.1"
 
 # Ensure that our rdeps are able to be set by shlibs processing
 do_package[depends] += "\

+ 1 - 1
meta-external-toolchain/recipes-external/glibc/glibc-external-version.inc

@@ -11,4 +11,4 @@ def get_external_libc_version(d):
 
     return 'UNKNOWN'
 
-PV_tcmode-external := "${@get_external_libc_version(d)}"
+PV:tcmode-external := "${@get_external_libc_version(d)}"

+ 21 - 21
meta-external-toolchain/recipes-external/glibc/glibc-external.bb

@@ -37,11 +37,11 @@ def get_external_libc_license(d):
    License as published by the Free Software Foundation; either
    version 2.1 of the License, or (at your option) any later version."""
                 if lictext in text:
-                    return 'LGPL-2.1+'
+                    return 'LGPL-2.1-or-later'
 
     return 'UNKNOWN'
 
-LICENSE_tcmode-external := "${@get_external_libc_license(d)}"
+LICENSE:tcmode-external := "${@get_external_libc_license(d)}"
 
 require recipes-external/glibc/glibc-sysroot-setup.inc
 require recipes-external/glibc/glibc-package-adjusted.inc
@@ -137,7 +137,7 @@ glibc_external_do_install_extra () {
     fi
 }
 
-bberror_task-install () {
+bberror:task-install () {
     # Silence any errors from oe_multilib_header, as we don't care about
     # missing multilib headers, as the oe-core glibc version isn't necessarily
     # the same as our own.
@@ -153,12 +153,12 @@ EXTERNAL_EXTRA_FILES += "\
 
 # These files are picked up out of the sysroot by glibc-locale, so we don't
 # need to keep them around ourselves.
-do_install_locale_append() {
+do_install_locale:append() {
 	rm -rf ${D}${localedir}
 }
 
 python () {
-    # Undo the do_install_append which joined shell to python
+    # Undo the do_install:append which joined shell to python
     install = d.getVar('do_install', False)
     python, shell = install.split('# sentinel', 1)
     d.setVar('do_install_glibc', shell)
@@ -175,7 +175,7 @@ python () {
 }
 
 # Default pattern is too greedy
-FILES_${PN}-utils = "\
+FILES:${PN}-utils = "\
     ${bindir}/gencat \
     ${bindir}/getconf \
     ${bindir}/getent \
@@ -188,10 +188,10 @@ FILES_${PN}-utils = "\
     ${bindir}/pldd \
     ${bindir}/sprof \
 "
-FILES_${PN}-doc += "${infodir}/libc.info*"
+FILES:${PN}-doc += "${infodir}/libc.info*"
 
 # Extract for use by do_install_locale
-FILES_${PN} += "\
+FILES:${PN} += "\
     ${bindir}/localedef \
     ${libdir}/gconv \
     ${libdir}/locale \
@@ -200,13 +200,13 @@ FILES_${PN} += "\
     ${prefix}/lib64xthead/lp64d \
 "
 
-FILES_${PN}-dev_remove := "${datadir}/aclocal"
+FILES:${PN}-dev:remove := "${datadir}/aclocal"
 
-FILES_${PN}-dev_remove = "/lib/*.o"
-FILES_${PN}-dev += "${libdir}/*crt*.o"
+FILES:${PN}-dev:remove = "/lib/*.o"
+FILES:${PN}-dev += "${libdir}/*crt*.o"
 
-linux_include_subdirs = "asm asm-generic bits drm linux mtd rdma sound sys video"
-FILES_${PN}-dev += "${@' '.join('${includedir}/%s' % d for d in '${linux_include_subdirs}'.split())}"
+linux_include_subdirs = "asm asm-generic bits drm linux mtd rdma sound video"
+FILES:${PN}-dev += "${@' '.join('${includedir}/%s' % d for d in '${linux_include_subdirs}'.split())}"
 
 # Already multilib headers for oe sdks
 libc_baselibs_dev += "\
@@ -214,28 +214,28 @@ libc_baselibs_dev += "\
     ${includedir}/ieee754-*.h \
 "
 libc_baselibs_dev += "${@' '.join('${libdir}/' + os.path.basename(l.replace('${SOLIBS}', '${SOLIBSDEV}')) for l in '${libc_baselibs}'.replace('${base_libdir}/ld*${SOLIBS}', '').split() if l.endswith('${SOLIBS}'))}"
-FILES_${PN}-staticdev = "\
+FILES:${PN}-staticdev = "\
     ${@'${libc_baselibs_dev}'.replace('${SOLIBSDEV}', '.a')} \
     ${libdir}/libg.a \
     ${libdir}/libieee.a \
     ${libdir}/libmcheck.a \
 "
 
-FILES_${PN}-dev += "\
+FILES:${PN}-dev += "\
     ${libc_baselibs_dev} \
     ${libdir}/libcidn${SOLIBSDEV} \
     ${libdir}/libthread_db${SOLIBSDEV} \
     ${libdir}/libpthread${SOLIBSDEV} \
 "
 libc_headers_file = "${@bb.utils.which('${FILESPATH}', 'libc.headers')}"
-FILES_${PN}-dev += "\
+FILES:${PN}-dev += "\
     ${@' '.join('${includedir}/' + f.rstrip() for f in oe.utils.read_file('${libc_headers_file}').splitlines())} \
     ${includedir}/fpu_control.h \
     ${includedir}/stdc-predef.h \
     ${includedir}/uchar.h \
     ${includedir}/features-time64.h \
 "
-FILES_${PN}-dev[file-checksums] += "${libc_headers_file}:True"
+FILES:${PN}-dev[file-checksums] += "${libc_headers_file}:True"
 
 # glibc's utils need libgcc
 do_package[depends] += "${MLPREFIX}libgcc:do_packagedata"
@@ -246,14 +246,14 @@ do_package_write_rpm[depends] += "${MLPREFIX}libgcc:do_packagedata"
 # glibc may need libssp for -fstack-protector builds
 do_packagedata[depends] += "gcc-runtime:do_packagedata"
 
-python do_package_append() {
+python do_package:append() {
     bb.utils.mkdirhier(pkgdest + '/' + pn + '/lib64xthead')
     os.symlink("../lib", pkgdest + '/' + pn + '/lib64xthead/lp64d')
 }
 
 # We don't need linux-libc-headers
 LINUX_LIBC_RDEP_REMOVE ?= "linux-libc-headers-dev"
-RDEPENDS_${PN}-dev_remove = "${LINUX_LIBC_RDEP_REMOVE}"
+RDEPENDS:${PN}-dev:remove = "${LINUX_LIBC_RDEP_REMOVE}"
 
-# FILES_${PN}-dev_remove = "${base_libdir}/*_nonshared.a ${libdir}/*_nonshared.a"
-# FILES_${PN}-dev += "${libdir}/libc_nonshared.a ${libdir}/libpthread_nonshared.a ${libdir}/libmvec_nonshared.a"
+# FILES:${PN}-dev:remove = "${base_libdir}/*_nonshared.a ${libdir}/*_nonshared.a"
+# FILES:${PN}-dev += "${libdir}/libc_nonshared.a ${libdir}/libpthread_nonshared.a ${libdir}/libmvec_nonshared.a"

+ 88 - 1
meta-external-toolchain/recipes-external/glibc/glibc-external/libc.headers

@@ -22,9 +22,12 @@ error.h
 execinfo.h
 fcntl.h
 features.h
+features-time64.h
 fenv.h
+finclude/math-vector-fortran.h
 fmtmsg.h
 fnmatch.h
+fpu_control.h
 fstab.h
 fts.h
 ftw.h
@@ -74,6 +77,7 @@ obstack.h
 paths.h
 poll.h
 printf.h
+proc_service.h
 protocols
 pthread.h
 pty.h
@@ -82,6 +86,7 @@ re_comp.h
 regex.h
 regexp.h
 resolv.h
+rpc/netdb.h
 sched.h
 scsi
 search.h
@@ -92,6 +97,7 @@ shadow.h
 signal.h
 spawn.h
 stab.h
+stdc-predef.h
 stdint.h
 stdio_ext.h
 stdio.h
@@ -99,6 +105,86 @@ stdlib.h
 string.h
 strings.h
 stropts.h
+sys/acct.h
+sys/auxv.h
+sys/bitypes.h
+sys/cdefs.h
+sys/dir.h
+sys/elf.h
+sys/epoll.h
+sys/errno.h
+sys/eventfd.h
+sys/fanotify.h
+sys/fcntl.h
+sys/file.h
+sys/fsuid.h
+sys/gmon.h
+sys/gmon_out.h
+sys/ifunc.h
+sys/inotify.h
+sys/ioctl.h
+sys/io.h
+sys/ipc.h
+sys/kd.h
+sys/klog.h
+sys/mman.h
+sys/mount.h
+sys/msg.h
+sys/mtio.h
+sys/param.h
+sys/pci.h
+sys/personality.h
+sys/poll.h
+sys/prctl.h
+sys/procfs.h
+sys/profil.h
+sys/ptrace.h
+sys/queue.h
+sys/quota.h
+sys/random.h
+sys/raw.h
+sys/reboot.h
+sys/reg.h
+sys/resource.h
+sys/rseq.h
+sys/select.h
+sys/sem.h
+sys/sendfile.h
+sys/shm.h
+sys/signal.h
+sys/signalfd.h
+sys/single_threaded.h
+sys/socket.h
+sys/socketvar.h
+sys/soundcard.h
+sys/stat.h
+sys/statfs.h
+sys/statvfs.h
+sys/swap.h
+sys/syscall.h
+sys/sysinfo.h
+sys/syslog.h
+sys/sysmacros.h
+sys/termios.h
+sys/time.h
+sys/timeb.h
+sys/timerfd.h
+sys/times.h
+sys/timex.h
+sys/ttychars.h
+sys/ttydefaults.h
+sys/types.h
+sys/ucontext.h
+sys/uio.h
+sys/un.h
+sys/unistd.h
+sys/user.h
+sys/utsname.h
+sys/vfs.h
+sys/vlimit.h
+sys/vt.h
+sys/wait.h
+sys/xattr.h
 syscall.h
 sysexits.h
 syslog.h
@@ -107,8 +193,10 @@ termio.h
 termios.h
 tgmath.h
 thread_db.h
+threads.h
 time.h
 ttyent.h
+uchar.h
 ucontext.h
 ulimit.h
 unistd.h
@@ -122,4 +210,3 @@ wchar.h
 wctype.h
 wordexp.h
 xlocale.h
-rpc/netdb.h

+ 22 - 22
meta-external-toolchain/recipes-external/glibc/glibc-package-adjusted.inc

@@ -1,24 +1,24 @@
 require recipes-core/glibc/glibc-package.inc
 
-PKG_${PN} = "glibc"
-RPROVIDES_${PN} += "${TCLIBC} glibc"
-PKG_${PN}-dbg = "glibc-dbg"
-RPROVIDES_${PN}-dbg += "${TCLIBC}-dbg glibc-dbg"
-PKG_${PN}-dev = "glibc-dev"
-RPROVIDES_${PN}-dev += "${TCLIBC}-dev glibc-dev"
-PKG_${PN}-doc = "glibc-doc"
-RPROVIDES_${PN}-doc += "${TCLIBC}-doc glibc-doc"
-PKG_${PN}-gconv = "glibc-gconv"
-RPROVIDES_${PN}-gconv += "${TCLIBC}-gconv glibc-gconv"
-PKG_${PN}-mtrace = "glibc-mtrace"
-RPROVIDES_${PN}-mtrace += "${TCLIBC}-mtrace glibc-mtrace"
-PKG_${PN}-pcprofile = "glibc-pcprofile"
-RPROVIDES_${PN}-pcprofile += "${TCLIBC}-pcprofile glibc-pcprofile"
-PKG_${PN}-pic = "glibc-pic"
-RPROVIDES_${PN}-pic += "${TCLIBC}-pic glibc-pic"
-PKG_${PN}-staticdev = "glibc-staticdev"
-RPROVIDES_${PN}-staticdev += "${TCLIBC}-staticdev glibc-staticdev"
-PKG_${PN}-thread-db = "glibc-thread-db"
-RPROVIDES_${PN}-thread-db += "${TCLIBC}-thread-db glibc-thread-db"
-PKG_${PN}-utils = "glibc-utils"
-RPROVIDES_${PN}-utils += "${TCLIBC}-utils glibc-utils"
+PKG:${PN} = "glibc"
+RPROVIDES:${PN} += "${TCLIBC} glibc"
+PKG:${PN}-dbg = "glibc-dbg"
+RPROVIDES:${PN}-dbg += "${TCLIBC}-dbg glibc-dbg"
+PKG:${PN}-dev = "glibc-dev"
+RPROVIDES:${PN}-dev += "${TCLIBC}-dev glibc-dev"
+PKG:${PN}-doc = "glibc-doc"
+RPROVIDES:${PN}-doc += "${TCLIBC}-doc glibc-doc"
+PKG:${PN}-gconv = "glibc-gconv"
+RPROVIDES:${PN}-gconv += "${TCLIBC}-gconv glibc-gconv"
+PKG:${PN}-mtrace = "glibc-mtrace"
+RPROVIDES:${PN}-mtrace += "${TCLIBC}-mtrace glibc-mtrace"
+PKG:${PN}-pcprofile = "glibc-pcprofile"
+RPROVIDES:${PN}-pcprofile += "${TCLIBC}-pcprofile glibc-pcprofile"
+PKG:${PN}-pic = "glibc-pic"
+RPROVIDES:${PN}-pic += "${TCLIBC}-pic glibc-pic"
+PKG:${PN}-staticdev = "glibc-staticdev"
+RPROVIDES:${PN}-staticdev += "${TCLIBC}-staticdev glibc-staticdev"
+PKG:${PN}-thread-db = "glibc-thread-db"
+RPROVIDES:${PN}-thread-db += "${TCLIBC}-thread-db glibc-thread-db"
+PKG:${PN}-utils = "glibc-utils"
+RPROVIDES:${PN}-utils += "${TCLIBC}-utils glibc-utils"

+ 13 - 10
meta-external-toolchain/recipes-external/libnsl/libnsl2-external.bb

@@ -4,29 +4,32 @@ DESCRIPTION = "This library contains the public client interface for NIS(YP) and
                This recipe should work for extracting either the glibc or standalone libnsl \
                from the external toolchain."
 HOMEPAGE = "https://github.com/thkukuk/libnsl"
-LICENSE = "LGPL-2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
 SECTION = "libs"
 
 inherit external-toolchain
 
-FILES_${PN} = "${libdir}/libnsl*.so.* ${libdir}/libnsl-*.so"
-FILES_${PN}-dev = "${libdir}/libnsl.so ${includedir}/rpcsvc/nis*.h ${includedir}/rpcsvc/yp*.h"
-FILES_${PN}-staticdev = "${libdir}/libnsl.a"
+FILES:${PN} = "${libdir}/libnsl*.so.* ${libdir}/libnsl-*.so"
+FILES:${PN}-dev = "${libdir}/libnsl.so ${includedir}/rpcsvc/nis*.h ${includedir}/rpcsvc/yp*.* ${libdir}/pkgconfig/libnsl.pc"
+FILES:${PN}-staticdev = "${libdir}/libnsl.a"
 
 libc_rdep = "${@'${PREFERRED_PROVIDER_virtual/libc}' if d.getVar('PREFERRED_PROVIDER_virtual/libc') else '${TCLIBC}'}"
-RDEPENDS_${PN} += "${libc_rdep}"
+RDEPENDS:${PN} += "${libc_rdep}"
 
 # Default to avoid parsing issue
 PREFERRED_PROVIDER_libtirpc ?= "libtirpc"
-RDEPENDS_${PN} += "${PREFERRED_PROVIDER_libtirpc}"
+RDEPENDS:${PN} += "${PREFERRED_PROVIDER_libtirpc}"
 
 do_install_extra () {
     # Depending on whether this comes from the standalone libnsl2 or glibc, the
-    # soname may vary, hence covering both 1 and 2, and it may be installed in
-    # base_libdir instead of libdir, but the FILES configuration may result in its
-    # location changing, breaking the libnsl.so symlink, so recreate it here.
+    # soname may vary, and it may be installed in base_libdir instead of
+    # libdir, but the FILES configuration may result in its location changing,
+    # breaking the libnsl.so symlink, so recreate it here.
     cd ${D}${libdir}/ || exit 1
     rm -f libnsl.so
-    ln -s libnsl.so.[12] libnsl.so
+    ln -s libnsl.so.[0-9] libnsl.so
+    if ! [ -e libnsl.so ]; then
+        bbfatal Failed to symlink libnsl.so
+    fi
 }

+ 4 - 4
meta-external-toolchain/recipes-external/libtirpc/libtirpc-external.bb

@@ -9,17 +9,17 @@ PROVIDES = "virtual/librpc"
 
 inherit external-toolchain
 
-FILES_${PN} = "\
+FILES:${PN} = "\
     ${sysconfdir}/bindresvport.blacklist \
     ${sysconfdir}/netconfig \
     ${libdir}/libtirpc${SOLIBS} \
 "
-FILES_${PN}-dev = "\
+FILES:${PN}-dev = "\
     ${libdir}/libtirpc${SOLIBSDEV} \
     ${includedir}/tirpc \
     ${libdir}/pkgconfig/libtirpc.pc \
 "
-FILES_${PN}-staticdev = "${libdir}/libtirpc.a"
+FILES:${PN}-staticdev = "${libdir}/libtirpc.a"
 
 libc_rdep = "${@'${PREFERRED_PROVIDER_virtual/libc}' if '${PREFERRED_PROVIDER_virtual/libc}' else '${TCLIBC}'}"
-RDEPENDS_${PN} += "${libc_rdep}"
+RDEPENDS:${PN} += "${libc_rdep}"

+ 5 - 5
meta-external-toolchain/recipes-external/libxcrypt/libxcrypt-external.bb

@@ -2,22 +2,22 @@ SUMMARY = "Extended cryptographic library (from glibc)"
 DESCRIPTION = "Forked code from glibc libary to extract only crypto part."
 HOMEPAGE = "https://github.com/besser82/libxcrypt"
 SECTION = "libs"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 PROVIDES = "virtual/crypt"
 
 inherit external-toolchain
 
-EXTERNAL_PROVIDE_PATTERN = "${libdir}/libcrypt*.so.*"
+EXTERNAL_PROVIDE_PATTERN = "${libdir}/libcrypt.so.*"
 
 libc_rdep = "${@'${PREFERRED_PROVIDER_virtual/libc}' if '${PREFERRED_PROVIDER_virtual/libc}' else '${TCLIBC}'}"
-RDEPENDS_${PN} += "${libc_rdep}"
+RDEPENDS:${PN} += "${libc_rdep}"
 
-FILES_${PN} = "${libdir}/libcrypt*.so.* \
+FILES:${PN} = "${libdir}/libcrypt.so.* \
                ${libdir}/libcrypt-*.so \
                ${libdir}/libowcrypt*.so.* \
                ${libdir}/libowcrypt-*.so \
 "
-FILES_${PN}-dev = "\
+FILES:${PN}-dev = "\
     ${libdir}/libcrypt.so \
     ${libdir}/libowcrypt.so \
     ${includedir}/crypt.h \

+ 3 - 3
meta-external-toolchain/recipes-external/oprofile/oprofile-external.bb

@@ -7,6 +7,6 @@ SECTION = "devel"
 
 inherit external-toolchain
 
-FILES_${PN} = "${bindir}/op* ${datadir}/oprofile"
-FILES_${PN}-doc = "${docdir}/oprofile ${mandir}/man1/op*"
-FILES_${PN}-staticdev = "${libdir}/oprofile/*.a"
+FILES:${PN} = "${bindir}/op* ${datadir}/oprofile"
+FILES:${PN}-doc = "${docdir}/oprofile ${mandir}/man1/op*"
+FILES:${PN}-staticdev = "${libdir}/oprofile/*.a"

+ 1 - 1
meta-external-toolchain/recipes-sdk/sdk-env-external-toolchain/sdk-env-external-toolchain.bb

@@ -9,4 +9,4 @@ do_install () {
     install -m 0644 -o root -g root "${WORKDIR}/external.sh" "${D}/environment-setup.d/"
 }
 
-FILES_${PN} += "/environment-setup.d/*"
+FILES:${PN} += "/environment-setup.d/*"

+ 42 - 0
meta-light/classes-recipe/thead-image-bsp.bbclass

@@ -0,0 +1,42 @@
+inherit thead-image-minimal
+
+# disable for public release
+#IMAGE_INSTALL += " gpu-bxm-4-64 "
+IMAGE_INSTALL += " gpu-bxm-4-64-gpl "
+# disable for public release
+#IMAGE_INSTALL += " npu-ax3386 "
+IMAGE_INSTALL += " npu-ax3386-gpl "
+# disable for public release
+#IMAGE_INSTALL += " thead-fce "
+# disable for public release
+#IMAGE_INSTALL += " thead-ddr-pmu "
+# disable for public release
+#IMAGE_INSTALL += " isp-isp8000l "
+IMAGE_INSTALL += " vi-bt "
+IMAGE_INSTALL += " vi-kernel "
+IMAGE_INSTALL += " vi-sensor "
+IMAGE_INSTALL += " xtensa-dsp "
+IMAGE_INSTALL += " csi-camera-hal "
+IMAGE_INSTALL += " rambus-os-ik-150 "
+IMAGE_INSTALL += " efuse-light "
+# disable for public release
+#IMAGE_INSTALL += " libgal-viv "
+# disable for public release
+#IMAGE_INSTALL += " libcsi-g2d "
+IMAGE_INSTALL += " iso7816-card "
+# ant test request
+IMAGE_INSTALL += " evtest "
+
+# disable for public release
+#IMAGE_INSTALL += " vpu-omxil "
+IMAGE_INSTALL += " libomxil "
+IMAGE_INSTALL += " process-linker "
+IMAGE_INSTALL += " isp-venc-shake "
+IMAGE_INSTALL += " vpu-vc8000d-kernel "
+IMAGE_INSTALL += " vpu-vc8000e-kernel "
+# disable for public release
+#IMAGE_INSTALL += " csi-hal-vcodec "
+IMAGE_INSTALL += " watchdog "
+
+# // for public release only, disabled by default for internal release
+IMAGE_INSTALL += " image-proprietary "

+ 14 - 0
meta-light/classes-recipe/thead-image-debug.bbclass

@@ -0,0 +1,14 @@
+IMAGE_INSTALL += " \
+    gdb \
+    gdbserver \
+    strace \
+    glibc-mtrace \
+    trace-cmd \
+    memtool \
+    kmod \
+    binutils \
+"
+
+IMAGE_FEATURES += "ssh-server-openssh tools-debug dev-pkgs debug-tweaks"
+
+inherit core-image

+ 35 - 0
meta-light/classes-recipe/thead-image-gnome.bbclass

@@ -0,0 +1,35 @@
+IMAGE_INSTALL += " \
+    packagegroup-core-x11 \
+    packagegroup-core-x11-base \
+    packagegroup-core-x11-xserver \
+    packagegroup-gnome-desktop3 \
+    glmark2 \
+    mixbench \
+    net-tools \
+    alsa-utils \
+    gpgme \
+    gnupg \
+    gpu-bxm-4-64 \
+    gpu-bxm-4-64-gpl \
+    utouch-evemu \
+    kmscube \
+    haveged \
+    gnome-settings-daemon \
+    packagegroup-gnome-apps3-dev \
+    packagegroup-gnome-desktop3-dev \
+"
+# gnome-shell_42.0 need install
+# IMAGE_INSTALL += "gnome-shell-gsettings"
+
+# remove "vkmark \" after glmark2 because build error, to fix it,
+# /usr/include/vulkan/vulkan.hpp should exists on build host,
+# and fix it by install libvulkan-dev packet on host.
+
+inherit core-image features_check
+
+IMAGE_FEATURES += "dev-pkgs ssh-server-openssh"
+
+REQUIRED_DISTRO_FEATURES = "x11 wayland opengl vulkan opencl"
+PREFERERRED_VERSION_llvm = "10.0.2"
+# IMAGE_ROOTFS_EXTRA_SPACE = "10240"
+SYSTEMD_DEFAULT_TARGET = "graphical.target"

+ 18 - 0
meta-light/classes-recipe/thead-image-gstreamer.bbclass

@@ -0,0 +1,18 @@
+IMAGE_INSTALL += "image-proprietary"
+
+IMAGE_INSTALL += " \
+    memtool \
+"
+
+IMAGE_INSTALL += " \
+   gstreamer1.0 \
+   gstreamer1.0-plugins-base \
+   gstreamer1.0-plugins-bad \
+   gstreamer1.0-plugins-good \
+   gstreamer1.0-plugins-ugly \
+   gstreamer1.0-omx \
+   gstreamer-plugin-private-proprietary \
+"
+
+
+IMAGE_FSTYPES:remove = "cpio.gz cpio cpio.gz.u-boot cpio.bz2"

+ 34 - 0
meta-light/classes-recipe/thead-image-linux.bbclass

@@ -0,0 +1,34 @@
+#inherit light bsp related packages
+inherit thead-image-bsp
+#inherit grapic related packages
+# inherit thead-image-weston
+#inherit security related packages
+inherit thead-image-security
+#inherit vidio related packages, disable for public release
+#inherit thead-image-vision
+#inherit debug related packages
+inherit thead-image-debug
+
+#WIFI & BT related packages
+IMAGE_INSTALL += " wpa-supplicant bluez5 light-bt "
+
+#Android tools e.g. adb etc.
+IMAGE_INSTALL += " android-tools android-tools-conf "
+
+#debug tools, e.g. collecting crash image for analyzing etc.
+IMAGE_INSTALL += " kdump procps "
+
+#multi-media related support
+IMAGE_INSTALL += " alsa-utils alsa-lib alsa-tools pulseaudio-server "
+IMAGE_INSTALL += " ffmpeg "
+
+# produce utils
+IMAGE_INSTALL += " prd-utils "
+IMAGE_INSTALL += " sqlite3 "
+
+# enable for public release
+IMAGE_INSTALL:remove = "csi-hal-vcodec rambus-os-ik-150 gpu-bxm-4-64 npu-ax3386 thead-fce "
+IMAGE_INSTALL:remove = "thead-ddr-pmu isp-isp8000l libgal-viv libcsi-g2d vpu-omxil "
+IMAGE_INSTALL += " image-proprietary "
+
+#IMAGE_FSTYPES:remove = "cpio.gz cpio cpio.gz.u-boot cpio.bz2"

+ 10 - 0
meta-light/classes-recipe/thead-image-minimal.bbclass

@@ -0,0 +1,10 @@
+IMAGE_INSTALL += " packagegroup-core-boot kernel-modules "
+IMAGE_INSTALL += " resizefs initscripts-readonly-rootfs-overlay "
+IMAGE_INSTALL += " tzdata "
+IMAGE_INSTALL += " glibc-gconv-gbk "
+
+IMAGE_LINGUAS += "zh-cn zh-cn.gb2312 zh-cn.gbk"
+
+DISTRO_FEATURES:remove = " ipv6 pcmcia usbgadget usbhost pci 3g nfc vfat "
+
+inherit core-image

+ 3 - 0
meta-light/classes-recipe/thead-image-security.bbclass

@@ -0,0 +1,3 @@
+IMAGE_INSTALL += " op-tee "
+
+inherit core-image

+ 21 - 0
meta-light/classes-recipe/thead-image-test.bbclass

@@ -0,0 +1,21 @@
+IMAGE_INSTALL += " python3 python3-numpy python3-pip python3-psutil python3-ruamel-yaml python3-pytest python3-lxml python3-requests "
+IMAGE_INSTALL += " memtester dhrystone whetstone tinymembench sysbench linpack nbench-byte "
+IMAGE_INSTALL += " iozone3 bonnie++ "
+IMAGE_INSTALL += " cpupower cpufrequtils "
+IMAGE_INSTALL += " kmscube glmark2"
+IMAGE_INSTALL += " iperf2 "
+IMAGE_INSTALL += " packagegroup-core-boot kernel-modules util-linux bash openssl "
+IMAGE_INSTALL += " android-tools android-tools-conf "
+IMAGE_INSTALL += " wpa-supplicant bluez5 light-bt "
+IMAGE_INSTALL += " memtool curl iw tcpdump gdb gdbserver strace usbutils mmc-utils e2fsprogs perf "
+IMAGE_INSTALL += " alsa-utils alsa-lib alsa-tools pulseaudio-server "
+IMAGE_INSTALL += " lrzsz "
+IMAGE_INSTALL += " zlib boost libatomic libatomic-dev libatomic-ops initscripts-readonly-rootfs-overlay "
+IMAGE_INSTALL += " make cmake tcl tk bison bc flex gawk texinfo git "
+IMAGE_INSTALL += " kdump "
+IMAGE_INSTALL += " haveged "
+IMAGE_INSTALL += " tzdata "
+IMAGE_INSTALL += " cronie logrotate "
+IMAGE_INSTALL += " scene "
+
+inherit core-image

+ 8 - 0
meta-light/classes-recipe/thead-image-vision.bbclass

@@ -0,0 +1,8 @@
+IMAGE_INSTALL += " npu-ax3386-gpl "
+IMAGE_INSTALL += " ffmpeg openh264 util-linux zeromq protobuf rapidjson syslog-ng libc-mtrace "
+
+# disable below packages for public release
+IMAGE_INSTALL += " libcsi-g2d thead-fce csi-hal-vcodec npu-ax3386 "
+IMAGE_INSTALL += " tmedia visual-ai "
+
+inherit core-image

+ 24 - 0
meta-light/classes-recipe/thead-image-weston.bbclass

@@ -0,0 +1,24 @@
+IMAGE_INSTALL += " \
+    weston \
+    gtk+3 \
+    gpgme \
+    gnupg \
+    gpu-bxm-4-64 \
+    gpu-bxm-4-64-gpl \
+    haveged \
+    util-linux \
+    gfx-examples \
+    tiff \
+    skia \
+    source-han-sans-cn-fonts \
+"
+
+inherit core-image features_check
+
+REQUIRED_DISTRO_FEATURES = "wayland opengl vulkan opencl"
+IMAGE_FEATURES += "dev-pkgs ssh-server-openssh"
+DISTRO_FEATURES:remove = " x11"
+PREFERERRED_VERSION_llvm = "10.0.2"
+
+#IMAGE_ROOTFS_EXTRA_SPACE = "10240"
+SYSTEMD_DEFAULT_TARGET = "graphical.target"

+ 71 - 71
meta-light/conf/layer.conf

@@ -21,90 +21,90 @@ BBFILES_DYNAMIC += " \
     \
 "
 
-LAYERSERIES_COMPAT_light-layer = "gatesgarth hardknott"
+LAYERSERIES_COMPAT_light-layer = "gatesgarth hardknott honister langdale"
 
-INSANE_SKIP_append_pn-cmocka_riscv64 = " textrel"
-INSANE_SKIP_append_pn-eudev_riscv64 = " textrel"
-INSANE_SKIP_append_pn-gdb_riscv64 = " textrel"
-INSANE_SKIP_append_pn-perf_riscv64 = " textrel"
-INSANE_SKIP_append_pn-qtbase_riscv64 = " textrel"
-INSANE_SKIP_append_pn-qtbase-tools_riscv64 = " textrel"
-INSANE_SKIP_append_pn-dracut_riscv64 = " textrel"
-INSANE_SKIP_append_pn-qemu_riscv64 = " textrel"
-INSANE_SKIP_append_pn-qemu-ptest_riscv64 = " textrel"
-INSANE_SKIP_append_pn-rt-tests_riscv64 = " textrel"
-INSANE_SKIP_append_pn-tvheadend_riscv64 = " textrel"
-INSANE_SKIP_append_pn-tipcutils_riscv64 = " textrel"
-INSANE_SKIP_append_pn-zabbix_riscv64 = " textrel"
-INSANE_SKIP_append_pn-xfsdump_riscv64 = " textrel"
-INSANE_SKIP_append_pn-capnproto_riscv64 = " textrel"
-INSANE_SKIP_append_pn-monkey_riscv64 = " textrel"
-INSANE_SKIP_append_pn-netdata_riscv64 = " textrel"
-INSANE_SKIP_append_pn-ltp_riscv64 = " textrel"
-INSANE_SKIP_append_pn-opensaf_riscv64 = " textrel"
-INSANE_SKIP_append_pn-rdma-core_riscv64 = " textrel"
-INSANE_SKIP_append_pn-util-linux_riscv64 = " textrel"
-INSANE_SKIP_append_pn-doxygen_riscv64 = " textrel"
-INSANE_SKIP_append_pn-poppler_riscv64 = " textrel"
+INSANE_SKIP:append:pn-cmocka:riscv64 = " textrel"
+INSANE_SKIP:append:pn-eudev:riscv64 = " textrel"
+INSANE_SKIP:append:pn-gdb:riscv64 = " textrel"
+INSANE_SKIP:append:pn-perf:riscv64 = " textrel"
+INSANE_SKIP:append:pn-qtbase:riscv64 = " textrel"
+INSANE_SKIP:append:pn-qtbase-tools:riscv64 = " textrel"
+INSANE_SKIP:append:pn-dracut:riscv64 = " textrel"
+INSANE_SKIP:append:pn-qemu:riscv64 = " textrel"
+INSANE_SKIP:append:pn-qemu-ptest:riscv64 = " textrel"
+INSANE_SKIP:append:pn-rt-tests:riscv64 = " textrel"
+INSANE_SKIP:append:pn-tvheadend:riscv64 = " textrel"
+INSANE_SKIP:append:pn-tipcutils:riscv64 = " textrel"
+INSANE_SKIP:append:pn-zabbix:riscv64 = " textrel"
+INSANE_SKIP:append:pn-xfsdump:riscv64 = " textrel"
+INSANE_SKIP:append:pn-capnproto:riscv64 = " textrel"
+INSANE_SKIP:append:pn-monkey:riscv64 = " textrel"
+INSANE_SKIP:append:pn-netdata:riscv64 = " textrel"
+INSANE_SKIP:append:pn-ltp:riscv64 = " textrel"
+INSANE_SKIP:append:pn-opensaf:riscv64 = " textrel"
+INSANE_SKIP:append:pn-rdma-core:riscv64 = " textrel"
+INSANE_SKIP:append:pn-util-linux:riscv64 = " textrel"
+INSANE_SKIP:append:pn-doxygen:riscv64 = " textrel"
+INSANE_SKIP:append:pn-poppler:riscv64 = " textrel"
 
-INSANE_SKIP_append_pn-cmocka_riscv32 = " textrel"
-INSANE_SKIP_append_pn-xfsdump_riscv32 = " textrel"
-INSANE_SKIP_append_pn-zabbix_riscv32 = " textrel"
-INSANE_SKIP_append_pn-netdata_riscv32 = " textrel"
-INSANE_SKIP_append_pn-tipcutils_riscv32 = " textrel"
-INSANE_SKIP_append_pn-tvheadend_riscv32 = " textrel"
-INSANE_SKIP_append_pn-monkey_riscv32 = " textrel"
-INSANE_SKIP_append_pn-eudev_riscv32 = " textrel"
-INSANE_SKIP_append_pn-dracut_riscv32 = " textrel"
-INSANE_SKIP_append_pn-rt-tests_riscv32 = " textrel"
-INSANE_SKIP_append_pn-gdb_riscv32 = " textrel"
-INSANE_SKIP_append_pn-capnproto_riscv32 = " textrel"
-INSANE_SKIP_append_pn-rdma-core_riscv32 = " textrel"
-INSANE_SKIP_append_pn-util-linux_riscv32 = " textrel"
-INSANE_SKIP_append_pn-ltp_riscv32 = " textrel"
-INSANE_SKIP_append_pn-poppler_riscv32 = " textrel"
-INSANE_SKIP_append_pn-qtbase_riscv32 = " textrel"
-INSANE_SKIP_append_pn-gerbera_riscv32 = " textrel"
-INSANE_SKIP_append_pn-opensaf_riscv32 = " textrel"
-INSANE_SKIP_append_pn-doxygen_riscv32 = " textrel"
-INSANE_SKIP_append_pn-opengl-es-cts_riscv32 = " textrel"
-INSANE_SKIP_append_pn-perf_riscv32 = " textrel"
+INSANE_SKIP:append:pn-cmocka:riscv32 = " textrel"
+INSANE_SKIP:append:pn-xfsdump:riscv32 = " textrel"
+INSANE_SKIP:append:pn-zabbix:riscv32 = " textrel"
+INSANE_SKIP:append:pn-netdata:riscv32 = " textrel"
+INSANE_SKIP:append:pn-tipcutils:riscv32 = " textrel"
+INSANE_SKIP:append:pn-tvheadend:riscv32 = " textrel"
+INSANE_SKIP:append:pn-monkey:riscv32 = " textrel"
+INSANE_SKIP:append:pn-eudev:riscv32 = " textrel"
+INSANE_SKIP:append:pn-dracut:riscv32 = " textrel"
+INSANE_SKIP:append:pn-rt-tests:riscv32 = " textrel"
+INSANE_SKIP:append:pn-gdb:riscv32 = " textrel"
+INSANE_SKIP:append:pn-capnproto:riscv32 = " textrel"
+INSANE_SKIP:append:pn-rdma-core:riscv32 = " textrel"
+INSANE_SKIP:append:pn-util-linux:riscv32 = " textrel"
+INSANE_SKIP:append:pn-ltp:riscv32 = " textrel"
+INSANE_SKIP:append:pn-poppler:riscv32 = " textrel"
+INSANE_SKIP:append:pn-qtbase:riscv32 = " textrel"
+INSANE_SKIP:append:pn-gerbera:riscv32 = " textrel"
+INSANE_SKIP:append:pn-opensaf:riscv32 = " textrel"
+INSANE_SKIP:append:pn-doxygen:riscv32 = " textrel"
+INSANE_SKIP:append:pn-opengl-es-cts:riscv32 = " textrel"
+INSANE_SKIP:append:pn-perf:riscv32 = " textrel"
 
 # These recipe dont _yet_ build for rv32
-COMPATIBLE_HOST_pn-openh264_riscv32 = "null"
+COMPATIBLE_HOST:pn-openh264:riscv32 = "null"
 # Need to port - tcf/cpudefs-mdep.h
-COMPATIBLE_HOST_pn-tcf-agent_riscv32 = "null"
+COMPATIBLE_HOST:pn-tcf-agent:riscv32 = "null"
 # needs SYS_ppoll and SYS_pselect6
-COMPATIBLE_HOST_pn-lttng-tools_riscv32 = "null"
+COMPATIBLE_HOST:pn-lttng-tools:riscv32 = "null"
 # LTTng-modules requires CONFIG_KPROBES on kernels >= 5.7.0
-COMPATIBLE_HOST_pn-lttng-modules_riscv32 = "null"
+COMPATIBLE_HOST:pn-lttng-modules:riscv32 = "null"
 # Needs porting to rv32
-COMPATIBLE_HOST_pn-android-tools_riscv32 = "null"
+COMPATIBLE_HOST:pn-android-tools:riscv32 = "null"
 # Needs porting to rv32
-COMPATIBLE_HOST_pn-strace_riscv32 = "null"
-COMPATIBLE_HOST_pn-ostree_riscv32 = "null"
+COMPATIBLE_HOST:pn-strace:riscv32 = "null"
+COMPATIBLE_HOST:pn-ostree:riscv32 = "null"
 # Klibc needs porting in usr/klibc/arch/riscv32
-COMPATIBLE_HOST_pn-klibc_riscv32 = "null"
-COMPATIBLE_HOST_pn-klibc-static-utils_riscv32 = "null"
-COMPATIBLE_HOST_pn-klibc-utils_riscv32 = "null"
-COMPATIBLE_HOST_pn-klcc-cross_riscv32 = "null"
-COMPATIBLE_HOST_pn-kexecboot-klibc_riscv32 = "null"
-COMPATIBLE_HOST_pn-ubi-utils-klibc_riscv32 = "null"
+COMPATIBLE_HOST:pn-klibc:riscv32 = "null"
+COMPATIBLE_HOST:pn-klibc-static-utils:riscv32 = "null"
+COMPATIBLE_HOST:pn-klibc-utils:riscv32 = "null"
+COMPATIBLE_HOST:pn-klcc-cross:riscv32 = "null"
+COMPATIBLE_HOST:pn-kexecboot-klibc:riscv32 = "null"
+COMPATIBLE_HOST:pn-ubi-utils-klibc:riscv32 = "null"
 
 # needs syscalls addressed for rv32
-COMPATIBLE_HOST_pn-qemu_riscv32 = "null"
+COMPATIBLE_HOST:pn-qemu:riscv32 = "null"
 # Fails to configure
-COMPATIBLE_HOST_pn-samba_riscv32 = "null"
-COMPATIBLE_HOST_pn-smbnetfs_riscv32 = "null"
-COMPATIBLE_HOST_pn-gnome-control-center_riscv32 = "null"
-COMPATIBLE_HOST_pn-thunar-shares-plugin_riscv32 = "null"
+COMPATIBLE_HOST:pn-samba:riscv32 = "null"
+COMPATIBLE_HOST:pn-smbnetfs:riscv32 = "null"
+COMPATIBLE_HOST:pn-gnome-control-center:riscv32 = "null"
+COMPATIBLE_HOST:pn-thunar-shares-plugin:riscv32 = "null"
 
 # sipe-mime.c:129:30: error: cast from 'GTypeInstance *' (aka 'struct _GTypeInstance *') to 'GMimeStreamFilter *' (aka 'struct _GMimeStreamFilter *') increases required al ignment from 4 to 8 [-Werror,-Wcast-align]
-COMPATIBLE_HOST_pn-pidgin-sipe_riscv32 = "null"
+COMPATIBLE_HOST:pn-pidgin-sipe:riscv32 = "null"
 
-COMPATIBLE_HOST_pn-libacpi = '(x86_64|i.86|riscv32|riscv64).*-(linux|freebsd.*)'
-COMPATIBLE_HOST_pn-efivar = "(i.86|x86_64|arm|aarch64|riscv64|riscv32).*-linux"
-COMPATIBLE_HOST_pn-efibootmgr = "(i.86|x86_64|arm|aarch64|riscv64|riscv32).*-linux"
-COMPATIBLE_HOST_pn-dmidecode = "(i.86|x86_64|aarch64|arm|powerpc|powerpc64|riscv32|riscv64).*-linux"
-COMPATIBLE_HOST_pn-acpica = "(i.86|x86_64|arm|aarch64|riscv64|riscv32).*-linux"
-COMPATIBLE_HOST_pn-systemd = "(x86_64.*|i.86.*|riscv.*)-linux"
+COMPATIBLE_HOST:pn-libacpi = '(x86_64|i.86|riscv32|riscv64).*-(linux|freebsd.*)'
+COMPATIBLE_HOST:pn-efivar = "(i.86|x86_64|arm|aarch64|riscv64|riscv32).*-linux"
+COMPATIBLE_HOST:pn-efibootmgr = "(i.86|x86_64|arm|aarch64|riscv64|riscv32).*-linux"
+COMPATIBLE_HOST:pn-dmidecode = "(i.86|x86_64|aarch64|arm|powerpc|powerpc64|riscv32|riscv64).*-linux"
+COMPATIBLE_HOST:pn-acpica = "(i.86|x86_64|arm|aarch64|riscv64|riscv32).*-linux"
+COMPATIBLE_HOST:pn-systemd = "(x86_64.*|i.86.*|riscv.*)-linux"

+ 8 - 1
meta-light/conf/machine/include/thead-base.inc

@@ -1,4 +1,6 @@
 require conf/machine/include/riscv/tune-riscv.inc
+#enable for public release
+require conf/machine/include/thead-proprietary.inc
 
 EXTERNAL_TOOLCHAIN ?= "${TOPDIR}/../../riscv-toolchain"
 TCMODE="external"
@@ -9,7 +11,7 @@ QEMU_TOOLCHAIN_PATH="${TOPDIR}/../../riscv-toolchain/csky-qemu/bin/"
 SYSROOT_PREFIX ??= " riscv64-buildroot-linux-gnu"
 EXTERNAL_TOOLCHAIN_SYSROOT="${EXTERNAL_TOOLCHAIN}/${SYSROOT_PREFIX}/sysroot"
 
-INSANE_SKIP_${PN} += "glibc-so gobject-introspection-so glibc-external"
+INSANE_SKIP:${PN} += "glibc-so gobject-introspection-so glibc-external"
 
 PREFERRED_PROVIDER_virtual/kernel ?= "linux-thead"
 PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot"
@@ -65,3 +67,8 @@ ASSUME_PROVIDED += "\
     compiler-rt-dev \
     compiler-rt-staticdev \
 "
+
+WARN_QA:remove = " buildpaths "
+
+__BBSEENSRCREV = "1"
+do_cleanall[network] = "1"

+ 7 - 0
meta-light/conf/machine/include/thead-libc-musl.inc

@@ -0,0 +1,7 @@
+TARGET_VENDOR="-musl"
+TCLIBC = "musl"
+PREFERRED_PROVIDER_glibc = "musl"
+PREFERRED_PROVIDER_virtual/libc = "musl"
+PREFERRED_PROVIDER_virtual/libintl = "musl"
+PREFERRED_PROVIDER_virtual/libiconv = "musl"
+PREFERRED_PROVIDER_virtual/crypt = "musl"

+ 6 - 0
meta-light/conf/machine/include/thead-proprietary.inc

@@ -0,0 +1,6 @@
+PREFERRED_PROVIDER_virtual/mesa ?= "mesa-proprietary"
+PREFERRED_PROVIDER_virtual/libgl ?= "mesa-proprietary"
+PREFERRED_PROVIDER_virtual/libgles1 ?= "mesa-proprietary"
+PREFERRED_PROVIDER_virtual/libgles2 ?= "mesa-proprietary"
+PREFERRED_PROVIDER_virtual/egl ?= "mesa-proprietary"
+PREFERRED_PROVIDER_virtual/libgbm ?= "mesa-proprietary"

File diff suppressed because it is too large
+ 0 - 29
meta-light/conf/machine/light-a-public-release.conf


File diff suppressed because it is too large
+ 29 - 0
meta-light/conf/machine/light-a-val.conf


+ 32 - 0
meta-light/conf/machine/light-b-product.conf

@@ -0,0 +1,32 @@
+#@TYPE: Machine
+#@NAME: xuantie
+#@SOC: XuanTie Light
+#@DESCRIPTION: Machine configuration for the Light B product board
+
+require conf/machine/include/thead-base.inc
+
+SERIAL_CONSOLES = "115200;ttyS0"
+MACHINE_EXTRA_RRECOMMENDS += "kernel-modules"
+
+IMAGE_FSTYPES += "cpio.gz ext4"
+
+# Uncomment the following two lines to always checkout the specified version of each repository
+THEAD_BSP_TAG = "Linux_SDK_V1.1.2"
+THEAD_LINUX_TAG = "Linux_SDK_V1.1.2"
+
+# 指定u-boot版本
+PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot"
+PREFERRED_VERSION_u-boot = "1:2020.10"
+# UBOOT_MACHINE ?= "light_defconfig"
+UBOOT_MACHINE = "light_b_product_defconfig"
+SPL_BINARY = "spl/u-boot-spl"
+UBOOT_ELF = "u-boot"
+UBOOT_BINARY = "u-boot-with-spl.bin"
+
+
+# 指定内核版本
+PREFERRED_PROVIDER_virtual/kernel ?= "linux-thead"
+PREFERRED_VERSION_linux-thead = "5.10.y"
+KERNEL_DEVICETREE:light-b-product = "thead/light-b-product.dtb thead/light-b-product-ddr1G.dtb thead/light-b-product-miniapp-hdmi.dtb thead/light-b-product-crash.dtb"
+KERNEL_DEVICETREE:light-b-product += "thead/light-b-product-sec.dtb"
+KBUILD_DEFCONFIG:light-b-product = "light_defconfig"

+ 0 - 39
meta-light/conf/machine/light-b-public.conf

@@ -1,39 +0,0 @@
-#@TYPE: Machine
-#@NAME: xuantie
-#@SOC: XuanTie Light
-#@DESCRIPTION: Machine configuration for the Light B product board
-
-require conf/machine/include/thead-base.inc
-
-SERIAL_CONSOLES = "115200;ttyS0"
-MACHINE_EXTRA_RRECOMMENDS += "kernel-modules"
-
-IMAGE_FSTYPES += "cpio.gz ext4"
-
-# Uncomment the following two lines to always checkout the specified version of each repository
-THEAD_BSP_TAG = "Linux_SDK_V1.0.3"
-THEAD_LINUX_TAG = "Linux_SDK_V1.0.3"
-
-# 指定u-boot版本
-PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot"
-PREFERRED_VERSION_u-boot = "1:2020.10"
-# UBOOT_MACHINE ?= "light_defconfig"
-UBOOT_MACHINE = "light_b_product_defconfig"
-SPL_BINARY = "spl/u-boot-spl"
-UBOOT_ELF = "u-boot"
-UBOOT_BINARY = "u-boot-with-spl.bin"
-
-
-# 指定内核版本
-PREFERRED_PROVIDER_virtual/kernel ?= "linux-thead"
-PREFERRED_VERSION_linux-thead = "5.10.y"
-KERNEL_DEVICETREE_light-b-public = "thead/light-b-product.dtb thead/light-b-product-ddr1G.dtb thead/light-b-product-miniapp-hdmi.dtb thead/light-b-product-crash.dtb"
-KERNEL_DEVICETREE_light-b-public += "thead/light-b-product-sec.dtb"
-KBUILD_DEFCONFIG_light-b-public = "light_defconfig"
-PREFERRED_VERSION_mesa = "21.0.1"
-PREFERRED_PROVIDER_virtual/mesa_light-b-public ?= "mesa-proprietary"
-PREFERRED_PROVIDER_virtual/libgl_light-b-public ?= "mesa-proprietary"
-PREFERRED_PROVIDER_virtual/libgles1_light-b-public ?= "mesa-proprietary"
-PREFERRED_PROVIDER_virtual/libgles2_light-b-public ?= "mesa-proprietary"
-PREFERRED_PROVIDER_virtual/egl_light-b-public ?= "mesa-proprietary"
-PREFERRED_PROVIDER_virtual/libgbm_light-b-public ?= "mesa-proprietary"

+ 4 - 10
meta-light/conf/machine/light-beagle.conf

@@ -11,8 +11,8 @@ MACHINE_EXTRA_RRECOMMENDS += "kernel-modules"
 IMAGE_FSTYPES += "cpio.gz ext4"
 
 # Uncomment the following two lines to always checkout the specified version of each repository
-THEAD_BSP_TAG = "Linux_SDK_V1.0.3"
-THEAD_LINUX_TAG = "Linux_SDK_V1.0.3"
+THEAD_BSP_TAG = "Linux_SDK_V1.1.2"
+THEAD_LINUX_TAG = "Linux_SDK_V1.1.2"
 
 # 指定u-boot版本
 PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot"
@@ -27,11 +27,5 @@ UBOOT_BINARY = "u-boot-with-spl.bin"
 # 指定内核版本
 PREFERRED_PROVIDER_virtual/kernel ?= "linux-thead"
 PREFERRED_VERSION_linux-thead = "5.10.y"
-KERNEL_DEVICETREE_light-beagle ?= "thead/light-beagle.dtb"
-KBUILD_DEFCONFIG_light-beagle = "light_defconfig"
-PREFERRED_VERSION_mesa = "21.0.1"
-PREFERRED_PROVIDER_virtual/mesa_light-beagle ?= "mesa-proprietary"
-PREFERRED_PROVIDER_virtual/libgl_light-beagle ?= "mesa-proprietary"
-PREFERRED_PROVIDER_virtual/libgles1_light-beagle ?= "mesa-proprietary"
-PREFERRED_PROVIDER_virtual/libgles2_light-beagle ?= "mesa-proprietary"
-PREFERRED_PROVIDER_virtual/egl_light-beagle ?= "mesa-proprietary"
+KERNEL_DEVICETREE:light-beagle ?= "thead/light-beagle.dtb"
+KBUILD_DEFCONFIG:light-beagle = "light_defconfig"

+ 31 - 0
meta-light/conf/machine/light-lpi4a.conf

@@ -0,0 +1,31 @@
+#@TYPE: Machine
+#@NAME: xuantie
+#@SOC: XuanTie Light
+#@DESCRIPTION: Machine configuration for the Light Lichee Pi 4A board
+
+require conf/machine/include/thead-base.inc
+
+SERIAL_CONSOLES = "115200;ttyS0"
+MACHINE_EXTRA_RRECOMMENDS += "kernel-modules"
+
+IMAGE_FSTYPES += "cpio.gz ext4"
+
+# Uncomment the following two lines to always checkout the specified version of each repository
+THEAD_BSP_TAG = "Linux_SDK_V1.1.2"
+THEAD_LINUX_TAG = "Linux_SDK_V1.1.2"
+
+# 指定u-boot版本
+PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot"
+PREFERRED_VERSION_u-boot = "1:2020.10"
+# UBOOT_MACHINE ?= "light_defconfig"
+UBOOT_MACHINE = "light_lpi4a_defconfig"
+SPL_BINARY = "spl/u-boot-spl"
+UBOOT_ELF = "u-boot"
+UBOOT_BINARY = "u-boot-with-spl.bin"
+
+
+# 指定内核版本
+PREFERRED_PROVIDER_virtual/kernel ?= "linux-thead"
+PREFERRED_VERSION_linux-thead = "5.10.y"
+KERNEL_DEVICETREE:light-lpi4a ?= "thead/light-lpi4a.dtb thead/light-lpi4a-ddr2G.dtb"
+KBUILD_DEFCONFIG:light-lpi4a = "light_defconfig"

+ 1 - 1
meta-light/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs_60.9.0.bbappend

@@ -1,3 +1,3 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/mozjs:"
+FILESEXTRAPATHS:prepend := "${THISDIR}/mozjs:"
 
 SRC_URI += " file://0001-mozjs-a-workaround-for-gnome-shell-hang.patch"

+ 3 - 3
meta-light/recipes-ai/npu/npu-ax3386-gpl.bb

@@ -6,7 +6,7 @@ LICENSE = "CLOSED"
 COMPATIBLE_MACHINE = "light-*"
 
 DEPENDS = " linux-thead "
-RDEPENDS_${PN} += " bash "
+RDEPENDS:${PN} += " bash "
 
 SRC_URI = " \
             git://git@gitee.com/thead-yocto/npu-ax3386-kernel.git;branch=master;protocol=http \
@@ -55,8 +55,8 @@ do_install() {
     install -m 0755 ${WORKDIR}/npu-ax3386.service 				     ${D}/lib/systemd/system
 }
 
-FILES_${PN} += " ${base_libdir} "
+FILES:${PN} += " ${base_libdir} "
 
 PACKAGES = "${PN}"
 
-INSANE_SKIP_${PN} += " debug-files already-stripped dev-deps file-rdeps "
+INSANE_SKIP:${PN} += " debug-files already-stripped dev-deps file-rdeps "

+ 3 - 3
meta-light/recipes-ai/plink-ai/plink-ai.bb

@@ -6,7 +6,7 @@ LICENSE = "CLOSED"
 COMPATIBLE_MACHINE = "light-*"
 
 DEPENDS = " process-linker video-memory pnna "
-RDEPENDS_${PN} += " process-linker video-memory pnna "
+RDEPENDS:${PN} += " process-linker video-memory pnna "
 
 SRC_URI = " \
             git://git@gitee.com/thead-yocto/plink_AI.git;branch=master;protocol=http \
@@ -54,9 +54,9 @@ do_install() {
     install -m 0755 ${S}/output/rootfs/plink_AI/input/face_detect/*          ${D}${datadir}/scene/plink_AI/input/face_detect
 }
 
-FILES_${PN} += " ${datadir} "
+FILES:${PN} += " ${datadir} "
 
 PACKAGES = "${PN}"
 
-INSANE_SKIP_${PN} += " debug-files already-stripped"
+INSANE_SKIP:${PN} += " debug-files already-stripped"
 

+ 38 - 0
meta-light/recipes-benchmark/vkmark/files/0001-Fix-do-configure-error.patch

@@ -0,0 +1,38 @@
+diff --git a/src/meson.build b/src/meson.build
+index 35813c5..cfef036 100644
+--- a/src/meson.build
++++ b/src/meson.build
+@@ -1,5 +1,15 @@
+ prog_python = find_program('python3')
+ 
++pymodule = import('python3')
++py3 = pymodule.find_python()
++
++res = run_command(py3, '-c', 'import os; print(os.environ["STAGING_DIR_HOST"])', check: false)
++if res.returncode() == 0
++    sysroot = res.stdout().strip()
++else
++    sysroot = ''
++endif
++
+ vulkan_hpp = join_paths([
+     vulkan_dep.get_pkgconfig_variable('includedir'),
+     'vulkan',
+@@ -9,7 +19,7 @@ vulkan_hpp = join_paths([
+ format_map_gen_h = custom_target(
+     'format_map_gen.h',
+     output: 'format_map_gen.h',
+-    input: vulkan_hpp,
++    input:  sysroot + vulkan_hpp,
+     command: [prog_python, files('gen_format_map.py'), '@INPUT@', '@OUTPUT@']
+     )
+ 
+@@ -87,7 +97,7 @@ if build_xcb_ws
+ endif
+ 
+ if build_wayland_ws
+-    wayland_scanner = find_program(wayland_scanner_dep.get_pkgconfig_variable('wayland_scanner'))
++    wayland_scanner = find_program('wayland-scanner')
+     wayland_protocols_dir = wayland_protocols_dep.get_pkgconfig_variable('pkgdatadir')
+ 
+     xdg_shell_xml_path = wayland_protocols_dir + '/stable/xdg-shell/xdg-shell.xml'

+ 4 - 2
meta-light/recipes-benchmark/vkmark/vkmark.bb

@@ -8,8 +8,10 @@ LIC_FILES_CHKSUM = "file://COPYING-LGPL2.1;md5=4fbd65380cdd255951079008b364516c"
 
 DEPENDS = " glm assimp vulkan-loader vulkan-headers wayland wayland-native wayland-protocols"
 
-SRC_URI = "git://github.com/vkmark/vkmark.git;protocol=https"
-SRCREV = "53abc4f660191051fba91ea30de084f412e7c68e"
+SRC_URI = "git://github.com/vkmark/vkmark.git;protocol=https \
+           file://0001-Fix-do-configure-error.patch \
+"
+SRCREV = "30d2cd37f0566589d90914501fc7c51a4e51f559"
 
 S = "${WORKDIR}/git"
 

+ 2 - 2
meta-light/recipes-bsp/key-input/key-input.bb

@@ -22,5 +22,5 @@ do_install () {
     install -m0755 ${S}/ts-send ${D}${bindir}
 }
 
-FILES_${PN} += " ${bindir} "
-FILES_${PN}-dbg += " ${bindir}/.debug "
+FILES:${PN} += " ${bindir} "
+FILES:${PN}-dbg += " ${bindir}/.debug "

BIN
meta-light/recipes-bsp/opensbi/opensbi/light-lpi4a/light_aon_fpga.bin


BIN
meta-light/recipes-bsp/opensbi/opensbi/light-lpi4a/light_aon_fpga.elf


BIN
meta-light/recipes-bsp/opensbi/opensbi/light-lpi4a/light_c906_audio.bin


BIN
meta-light/recipes-bsp/opensbi/opensbi/light-lpi4a/light_c906_audio.elf


+ 0 - 50
meta-light/recipes-bsp/opensbi/opensbi_0.6.bb

@@ -1,50 +0,0 @@
-SUMMARY = "RISC-V Open Source Supervisor Binary Interface (OpenSBI)"
-DESCRIPTION = "OpenSBI aims to provide an open-source and extensible implementation of the RISC-V SBI specification for a platform specific firmware (M-mode) and a general purpose OS, hypervisor or bootloader (S-mode or HS-mode). OpenSBI implementation can be easily extended by RISC-V platform or System-on-Chip vendors to fit a particular hadware configuration."
-LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://COPYING.BSD;md5=42dd9555eb177f35150cf9aa240b61e5"
-
-require recipes-bsp/opensbi/opensbi-payloads.inc
-
-inherit autotools-brokensep deploy
-
-SRCREV = "a98258d0b537a295f517bbc8d813007336731fa9"
-SRC_URI = "git://github.com/riscv/opensbi.git;branch=master \
-          "
-
-S = "${WORKDIR}/git"
-
-
-EXTRA_OEMAKE += "PLATFORM=${RISCV_SBI_PLAT} I=${D}"
-# If RISCV_SBI_PAYLOAD is set then include it as a payload
-EXTRA_OEMAKE_append = " ${@riscv_get_extra_oemake_image(d)}"
-
-# Required if specifying a custom payload
-do_compile[depends] += "${@riscv_get_do_compile_depends(d)}"
-
-do_install_append() {
-	# In the future these might be required as a dependency for other packages.
-	# At the moment just delete them to avoid warnings
-	rm -r ${D}/include
-	rm -r ${D}/lib*
-	rm -rf ${D}/platform/${RISCV_SBI_PLAT}/lib/
-	# rm -r ${D}/share/opensbi/*/${RISCV_SBI_PLAT}/firmware/payloads
-}
-
-do_deploy () {
-	# install -m 755 ${D}/share/opensbi/*/${RISCV_SBI_PLAT}/firmware/fw_payload.* ${DEPLOYDIR}/
-	install -m 755 ${D}/platform/${RISCV_SBI_PLAT}/firmware/fw_jump.* ${DEPLOYDIR}/
-	# install -m 755 ${D}/share/opensbi/*/${RISCV_SBI_PLAT}/firmware/fw_dynamic.* ${DEPLOYDIR}/
-}
-
-addtask deploy before do_build after do_install
-
-FILES_${PN} += "/platform/${RISCV_SBI_PLAT}/firmware/fw_jump.*"
-# FILES_${PN} += "/share/opensbi/*/${RISCV_SBI_PLAT}/firmware/fw_payload.*"
-FILES_${PN} += "/platform/${RISCV_SBI_PLAT}/firmware/fw_dynamic.*"
-#FILES_${PN} += "/platform/${RISCV_SBI_PLAT}/lib/libplatsbi.a"
-
-
-COMPATIBLE_HOST = "(riscv64|riscv32|csky).*"
-INHIBIT_PACKAGE_STRIP = "1"
-
-SECURITY_CFLAGS = ""

+ 0 - 1
meta-light/recipes-bsp/opensbi/opensbi_0.8.bbappend

@@ -1 +0,0 @@
-COMPATIBLE_MACHINE = "ice|light-fm|light-mpw|light-fm-fpga|light-fm-*"

+ 14 - 4
meta-light/recipes-bsp/opensbi/opensbi_0.9.bb

@@ -32,6 +32,10 @@ SRC_URI = " \
             file://light-beagle/light_aon_fpga.elf;md5=f447400d1df5ab59f23c738fe147260a \
             file://light-beagle/light_c906_audio.bin;md5=9124f7306370eb0d9e3f6178da1fa4fd \
             file://light-beagle/light_c906_audio.elf;md5=b4206da84148852df208088c96e4b2b3 \
+            file://light-lpi4a/light_aon_fpga.bin;md5=6486aed6f815af4118e4e4a840ec5482 \
+            file://light-lpi4a/light_aon_fpga.elf;md5=f447400d1df5ab59f23c738fe147260a \
+            file://light-lpi4a/light_c906_audio.bin;md5=384e8de853ea93cc71fef6379a630fae \
+            file://light-lpi4a/light_c906_audio.elf;md5=7ba187b91846cad61e5026bc63f1af6e \
             file://light-b-ref/light_aon_fpga.bin;md5=aaacb9a4382298f73472bb26a4c73a42 \
             file://light-b-ref/light_aon_fpga.elf;md5=501e828bb48bc6795bfd391518352fc2 \
             file://light-b-ref/light_c906_audio.bin;md5=9124f7306370eb0d9e3f6178da1fa4fd \
@@ -84,6 +88,12 @@ do_deploy () {
 		install -m 0755 ${WORKDIR}/light-beagle/light_aon_fpga.elf ${DEPLOYDIR}/
 		install -m 0755 ${WORKDIR}/light-beagle/light_c906_audio.bin ${DEPLOYDIR}/
 		install -m 0755 ${WORKDIR}/light-beagle/light_c906_audio.elf ${DEPLOYDIR}/
+	elif echo "${MACHINE}" | grep -q "light-lpi4a"; then
+		echo "Firmware INFO: light lpi4a  opensbi and e902 c906 firmware build MACHINE = ${MACHINE}"
+		install -m 0755 ${WORKDIR}/light-lpi4a/light_aon_fpga.bin ${DEPLOYDIR}/
+		install -m 0755 ${WORKDIR}/light-lpi4a/light_aon_fpga.elf ${DEPLOYDIR}/
+		install -m 0755 ${WORKDIR}/light-lpi4a/light_c906_audio.bin ${DEPLOYDIR}/
+		install -m 0755 ${WORKDIR}/light-lpi4a/light_c906_audio.elf ${DEPLOYDIR}/
 	elif echo "${MACHINE}" | grep -q "light-a-ref"; then
 		echo "Firmware INFO: light-a-ref  opensbi and e902 c906 firmware build MACHINE = ${MACHINE}"
 		install -m 0755 ${WORKDIR}/light-a-ref/light_aon_fpga.bin ${DEPLOYDIR}/
@@ -96,7 +106,7 @@ do_deploy () {
 		install -m 0755 ${WORKDIR}/light-b-ref/light_aon_fpga.elf ${DEPLOYDIR}/
 		install -m 0755 ${WORKDIR}/light-b-ref/light_c906_audio.bin ${DEPLOYDIR}/
 		install -m 0755 ${WORKDIR}/light-b-ref/light_c906_audio.elf ${DEPLOYDIR}/
-	elif echo "${MACHINE}" | grep -q "light-ant-ref"; then
+	elif echo "${MACHINE}" | grep -Eq "light-ant-ref|light-ant-ref-release"; then
 		echo "Firmware INFO: light ant-ref  opensbi and e902 c906 firmware build MACHINE = ${MACHINE}"
 		install -m 0755 ${WORKDIR}/light-ant-ref/light_aon_fpga.bin ${DEPLOYDIR}/
 		install -m 0755 ${WORKDIR}/light-ant-ref/light_aon_fpga.elf ${DEPLOYDIR}/
@@ -151,15 +161,15 @@ do_deploy () {
     fi
 
     dd if=/dev/zero of=${DEPLOY_DIR_IMAGE}/boot.ext4 count=10000 bs=4096
-    ${COMPONENTS_DIR}/x86_64/e2fsprogs-native/sbin/mkfs.ext4 -F  ${DEPLOY_DIR_IMAGE}/boot.ext4 -d ${DEPLOY_DIR_IMAGE}/.boot
+    mkfs.ext4 -F  ${DEPLOY_DIR_IMAGE}/boot.ext4 -d ${DEPLOY_DIR_IMAGE}/.boot
 }
 
 do_deploy[nostamp] = "1"
 addtask deploy before do_build after do_install
 
-FILES_${PN} += " ${datadir} "
+FILES:${PN} += " ${datadir} "
 PACKAGES = "${PN}"
 
-INSANE_SKIP_${PN} += " debug-files "
+INSANE_SKIP:${PN} += " debug-files "
 
 

+ 2 - 2
meta-light/recipes-bsp/u-boot/u-boot_2020.%.bbappend

@@ -1,8 +1,8 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
 
 LIC_FILES_CHKSUM = "file://Licenses/README;md5=30503fd321432fc713238f582193b78e"
 
-SRC_URI_append_ice = " \
+SRC_URI:append_ice = " \
              file://tftp-mmc-boot.txt \
             "
 SRC_URI = " \

+ 5 - 4
meta-light/recipes-bsp/u-boot/u-boot_2020.10.bbappend

@@ -11,19 +11,19 @@ THEAD_LINUX_TAG ?= "${THEAD_BSP_TAG}"
 SRCREV = "${THEAD_LINUX_TAG}"
 LICENSE = "CLOSED"
 
-do_configure_append() {
+do_configure:append() {
 	mkdir ${B}/lib/
 	cp ${S}/lib/sec_library ${B}/lib/ -rf
 }
 
-do_compile_append () {
+do_compile:append () {
 	oe_runmake ${UBOOT_MACHINE}
 	oe_runmake envtools
 }
 
 SRC_URI += "file://fw_env.config"
 
-do_install_append() {
+do_install:append() {
     install -d ${D}${sysconfdir}
     install -d ${D}${bindir}
     install -m 0644 ${WORKDIR}/fw_env.config ${D}${sysconfdir}
@@ -31,4 +31,5 @@ do_install_append() {
     ln -rsf ${D}${bindir}/fw_printenv ${D}${bindir}/fw_setenv
 }
 
-FILES_${PN} += " ${bindir} "
+FILES:${PN} += " ${bindir} "
+INSANE_SKIP:${PN} += "installed-vs-shipped"

+ 0 - 1
meta-light/recipes-connectivity/light-bt/files/light-bt.service

@@ -6,7 +6,6 @@ ConditionPathIsDirectory=/sys/class/bluetooth
 [Service]
 Type=forking
 ExecStart=/etc/bt-init.sh start
-ExecStartPost=bluetoothctl power on
 
 [Install]
 WantedBy=multi-user.target

+ 5 - 5
meta-light/recipes-connectivity/light-bt/light-bt.bb

@@ -14,7 +14,7 @@ SRC_URI = "\
 "
 
 inherit bin_package systemd
-DEPENDS_append = " update-rc.d-native"
+DEPENDS:append = " update-rc.d-native"
 
 
 S = "${WORKDIR}"
@@ -35,13 +35,13 @@ do_install () {
     fi
 }
 
-SYSTEMD_SERVICE_${PN} = "light-bt.service"
-SYSTEMD_AUTO_ENABLE_${PN} = "enable"
+SYSTEMD_SERVICE:${PN} = "light-bt.service"
+SYSTEMD_AUTO_ENABLE:${PN} = "enable"
 
-FILES_${PN} += "\
+FILES:${PN} += "\
     ${bindir} \
     ${systemd_system_unitdir} \
     ${sysconfdir} \
 "
 
-FILES_${PN}-dbg += "${bindir}/.debug"
+FILES:${PN}-dbg += "${bindir}/.debug"

+ 0 - 1
meta-light/recipes-connectivity/openssh/openssh_8.4p1.bbappend

@@ -1 +0,0 @@
-PACKAGECONFIG_remove = "rng-tools"

+ 1 - 0
meta-light/recipes-connectivity/openssh/openssh_9.0p1.bbappend

@@ -0,0 +1 @@
+PACKAGECONFIG:remove = "rng-tools"

+ 53 - 0
meta-light/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.10.bbappend

@@ -0,0 +1,53 @@
+FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
+
+SYSTEMD_SERVICE:${PN}_d1 = "wpa_supplicant_d1.service"
+SYSTEMD_AUTO_ENABLE:d1 = "enable"
+
+SRC_URI:append_d1 = " \
+    file://wpa_supplicant_d1.service \
+    file://wpa_supplicant.conf-sane \
+    file://defconfig \
+    file://wpa_supplicant_init.sh \
+"
+DEPENDS:append = " update-rc.d-native"
+
+do_install:append_d1() {
+    install -m 600 ${WORKDIR}/wpa_supplicant.conf-sane-d1 ${D}${sysconfdir}/wpa_supplicant.conf
+
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+        install -d ${D}${systemd_system_unitdir}
+        install -m 0644 ${WORKDIR}/wpa_supplicant_d1.service ${D}${systemd_system_unitdir}
+    fi
+
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
+        install -d ${D}${sysconfdir}/init.d
+        install -m 0755 ${WORKDIR}/wpa_supplicant_init.sh ${D}${sysconfdir}/init.d
+        update-rc.d -r ${D} wpa_supplicant_init.sh start 03 5 3 2 .
+    fi
+}
+
+SYSTEMD_SERVICE:${PN} = "wpa_supplicant_light.service"
+SYSTEMD_AUTO_ENABLE = "enable"
+
+SRC_URI:append = " \
+    file://wpa_supplicant_light.service \
+    file://wpa_supplicant.conf-sane \
+    file://defconfig \
+    file://wpa_supplicant_init.sh \
+"
+DEPENDS:append = " update-rc.d-native"
+
+do_install:append() {
+    install -m 600 ${WORKDIR}/wpa_supplicant.conf-sane ${D}${sysconfdir}/wpa_supplicant.conf
+
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+        install -d ${D}${systemd_system_unitdir}
+        install -m 0644 ${WORKDIR}/wpa_supplicant_light.service ${D}${systemd_system_unitdir}
+    fi
+
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
+        install -d ${D}${sysconfdir}/init.d
+        install -m 0755 ${WORKDIR}/wpa_supplicant_init.sh ${D}${sysconfdir}/init.d
+        update-rc.d -r ${D} wpa_supplicant_init.sh start 03 5 3 2 .
+    fi
+}

+ 0 - 53
meta-light/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.9.bbappend

@@ -1,53 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
-
-SYSTEMD_SERVICE_${PN}_d1 = "wpa_supplicant_d1.service"
-SYSTEMD_AUTO_ENABLE_d1 = "enable"
-
-SRC_URI_append_d1 = " \
-    file://wpa_supplicant_d1.service \
-    file://wpa_supplicant.conf-sane \
-    file://defconfig \
-    file://wpa_supplicant_init.sh \
-"
-DEPENDS_append = " update-rc.d-native"
-
-do_install_append_d1() {
-    install -m 600 ${WORKDIR}/wpa_supplicant.conf-sane-d1 ${D}${sysconfdir}/wpa_supplicant.conf
-
-    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
-        install -d ${D}${systemd_system_unitdir}
-        install -m 0644 ${WORKDIR}/wpa_supplicant_d1.service ${D}${systemd_system_unitdir}
-    fi
-
-    if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
-        install -d ${D}${sysconfdir}/init.d
-        install -m 0755 ${WORKDIR}/wpa_supplicant_init.sh ${D}${sysconfdir}/init.d
-        update-rc.d -r ${D} wpa_supplicant_init.sh start 03 5 3 2 .
-    fi
-}
-
-SYSTEMD_SERVICE_${PN} = "wpa_supplicant_light.service"
-SYSTEMD_AUTO_ENABLE = "enable"
-
-SRC_URI_append = " \
-    file://wpa_supplicant_light.service \
-    file://wpa_supplicant.conf-sane \
-    file://defconfig \
-    file://wpa_supplicant_init.sh \
-"
-DEPENDS_append = " update-rc.d-native"
-
-do_install_append() {
-    install -m 600 ${WORKDIR}/wpa_supplicant.conf-sane ${D}${sysconfdir}/wpa_supplicant.conf
-
-    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
-        install -d ${D}${systemd_system_unitdir}
-        install -m 0644 ${WORKDIR}/wpa_supplicant_light.service ${D}${systemd_system_unitdir}
-    fi
-
-    if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
-        install -d ${D}${sysconfdir}/init.d
-        install -m 0755 ${WORKDIR}/wpa_supplicant_init.sh ${D}${sysconfdir}/init.d
-        update-rc.d -r ${D} wpa_supplicant_init.sh start 03 5 3 2 .
-    fi
-}

+ 2 - 2
meta-light/recipes-core/base-files/base-files_%.bbappend

@@ -1,6 +1,6 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
 
-do_install_append_d1() {
+do_install:append_d1() {
     echo "" >> ${D}${sysconfdir}/fstab
     echo "tmpfs                /tmp                 tmpfs      defaults              0  0" >> ${D}${sysconfdir}/fstab
     echo "tmpfs                /var/lib             tmpfs      defaults              0  0" >> ${D}${sysconfdir}/fstab

+ 1 - 0
meta-light/recipes-core/busybox/busybox/wchar.cfg

@@ -0,0 +1 @@
+CONFIG_LAST_SUPPORTED_WCHAR=1114111

+ 3 - 2
meta-light/recipes-core/busybox/busybox_%.bbappend

@@ -5,11 +5,12 @@
 #
 # More details can be found in the Kernel Dev Manual
 # http://www.yoctoproject.org/docs/current/kernel-dev/kernel-dev.html#changing-the-configuration
-FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
 
 SRC_URI += " \
 	    file://netcat_server_opt.cfg \
 	    file://mkfs.cfg \
 	    file://resize.cfg \
 	    file://top.cfg \
-           "
+	    file://wchar.cfg \
+"

+ 0 - 22
meta-light/recipes-core/images/light-extend-debs.bb

@@ -1,22 +0,0 @@
-DESCRIPTION = "This image includes light extend debs."
-
-LICENSE = "MIT"
-
-IMAGE_INSTALL += " python3 python3-numpy python3-pip python3-psutil python3-ruamel-yaml python3-pytest python3-lxml "
-
-
-python do_rootfs_append_riscv64 () {
-    import subprocess
-
-    srcdir=d.getVar('IMAGE_ROOTFS')
-
-    cmd = 'rm -rf %s/boot/* ' % (srcdir)
-    subprocess.check_call(cmd, shell=True)
-}
-
-#DISTRO_FEATURES_remove = " ipv6 pcmcia usbgadget usbhost pci 3g nfc vfat "
-
-
-export IMAGE_BASENAME = "light-extend-debs"
-
-inherit core-image

+ 0 - 11
meta-light/recipes-core/images/light-fm-image-ant.bb

@@ -1,11 +0,0 @@
-DESCRIPTION = "A demo image for light fm commerical image"
-
-require light-fm-image-bsp.bb
-require light-fm-image-security.bb
-
-# // for public release only, disabled by default for internal release
-IMAGE_INSTALL += " image-proprietary "
-IMAGE_INSTALL_remove += "csi-hal-vcodec rambus-os-ik-150 gpu-bxm-4-64 npu-ax3386 thead-fce "
-IMAGE_INSTALL_remove += "thead-ddr-pmu isp-isp8000l libgal-viv libcsi-g2d vpu-omxil "
-
-export IMAGE_BASENAME = "light-fm-image-ant"

+ 0 - 46
meta-light/recipes-core/images/light-fm-image-bsp.bb

@@ -1,46 +0,0 @@
-DESCRIPTION = "A full image for light fm."
-
-require light-fm-image-minimal.bb
-
-# disable for public release
-IMAGE_INSTALL += " gpu-bxm-4-64 "
-IMAGE_INSTALL += " gpu-bxm-4-64-gpl "
-# disable for public release
-IMAGE_INSTALL += " npu-ax3386 "
-IMAGE_INSTALL += " npu-ax3386-gpl "
-# disable for public release
-IMAGE_INSTALL += " thead-fce "
-# disable for public release
-IMAGE_INSTALL += " thead-ddr-pmu "
-# disable for public release
-IMAGE_INSTALL += " isp-isp8000l "
-IMAGE_INSTALL += " vi-bt "
-IMAGE_INSTALL += " vi-kernel "
-IMAGE_INSTALL += " vi-sensor "
-IMAGE_INSTALL += " xtensa-dsp "
-IMAGE_INSTALL += " csi-camera-hal "
-IMAGE_INSTALL += " rambus-os-ik-150 "
-IMAGE_INSTALL += " efuse-light "
-# disable for public release
-IMAGE_INSTALL += " libgal-viv "
-# disable for public release
-IMAGE_INSTALL += " libcsi-g2d "
-IMAGE_INSTALL += " iso7816-card "
-# ant test request
-IMAGE_INSTALL += " evtest "
-
-# disable for public release
-IMAGE_INSTALL += " vpu-omxil "
-IMAGE_INSTALL += " libomxil "
-IMAGE_INSTALL += " process-linker "
-IMAGE_INSTALL += " isp-venc-shake "
-IMAGE_INSTALL += " vpu-vc8000d-kernel "
-IMAGE_INSTALL += " vpu-vc8000e-kernel "
-# disable for public release
-IMAGE_INSTALL += " csi-hal-vcodec "
-IMAGE_INSTALL += " watchdog "
-
-# // for public release only, disabled by default for internal release
-# IMAGE_INSTALL += " image-proprietary "
-
-export IMAGE_BASENAME = "light-fm-image-bsp"

+ 0 - 26
meta-light/recipes-core/images/light-fm-image-debug.bb

@@ -1,26 +0,0 @@
-DESCRIPTION = "This image includes debug tools."
-LICENSE = "MIT"
-
-IMAGE_INSTALL += "gdb \
-    strace \
-    glibc-mtrace \
-    trace-cmd \
-    memtool \
-    kmod \
-    binutils \
-"
-
-python do_rootfs_append_riscv64 () {
-    import subprocess
-
-    srcdir=d.getVar('IMAGE_ROOTFS')
-
-    cmd = 'rm -rf %s/boot/* ' % (srcdir)
-    subprocess.check_call(cmd, shell=True)
-}
-
-IMAGE_FEATURES += "ssh-server-openssh tools-debug dev-pkgs debug-tweaks"
-
-export IMAGE_BASENAME = "light-fm-image-debug"
-
-inherit core-image

+ 0 - 7
meta-light/recipes-core/images/light-fm-image-linux-test.bb

@@ -1,7 +0,0 @@
-DESCRIPTION = "Linux Image for Light FM with Test tools"
-LICENSE = "MIT"
-
-require light-fm-image-linux.bb
-require light-fm-image-test.bb
-
-export IMAGE_BASENAME = "light-fm-image-linux-test"

+ 0 - 34
meta-light/recipes-core/images/light-fm-image-linux.bb

@@ -1,34 +0,0 @@
-DESCRIPTION = "Linux Image for Light FM"
-LICENSE = "MIT"
-
-#inherit light bsp related packages
-require light-fm-image-bsp.bb
-#inherit grapic related packages
-require light-fm-image-weston.bb
-#inherit security related packages
-require light-fm-image-security.bb
-#inherit vidio related packages, disable for public release
-#require light-fm-image-vision.bb
-#inherit debug related packages
-require light-fm-image-debug.bb
-
-#WIFI & BT related packages
-IMAGE_INSTALL += " wpa-supplicant bluez5 light-bt alsa-tools pulseaudio-server "
-
-#Android tools e.g. adb etc.
-IMAGE_INSTALL += " android-tools android-tools-conf "
-#debug tools, e.g. collecting crash image for analyzing etc.
-IMAGE_INSTALL += " kdump "
-
-# disable for public release
-# IMAGE_INSTALL += " khv "
-
-# enable for public release
-IMAGE_INSTALL_remove += "csi-hal-vcodec rambus-os-ik-150 gpu-bxm-4-64 npu-ax3386 thead-fce "
-IMAGE_INSTALL_remove += "thead-ddr-pmu isp-isp8000l libgal-viv libcsi-g2d vpu-omxil "
-
-# for public release only, disabled by default for internal release
-IMAGE_INSTALL += " image-proprietary "
-
-#IMAGE_FSTYPES_remove = "cpio.gz cpio cpio.gz.u-boot cpio.bz2"
-export IMAGE_BASENAME = "light-fm-image-linux"

+ 0 - 41
meta-light/recipes-core/images/light-fm-image-miniapp.bb

@@ -1,41 +0,0 @@
-DESCRIPTION = "Image for HaaS-UI."
-
-require light-fm-image-security.bb
-TOOLCHAIN_TARGET_TASK_append += "glib-2.0-dev dbus-dev alsa-lib-dev"
-
-IMAGE_INSTALL += "packagegroup-core-boot kernel-modules"
-IMAGE_INSTALL += "gdb"
-IMAGE_INSTALL += "perf"
-IMAGE_INSTALL += "strace"
-
-IMAGE_INSTALL += "memtool"
-IMAGE_INSTALL += "android-tools android-tools-conf"
-
-IMAGE_INSTALL += " alsa-utils alsa-lib alsa-tools pulseaudio-server "
-IMAGE_INSTALL += "lrzsz"
-IMAGE_INSTALL += "fb-test"
-
-IMAGE_INSTALL += "haas-ui"
-
-IMAGE_INSTALL += "dhcpcd"
-IMAGE_INSTALL += "wpa-supplicant"
-IMAGE_INSTALL += "fota initscripts-readonly-rootfs-overlay"
-IMAGE_INSTALL += "tzdata"
-CORE_IMAGE_EXTRA_INSTALL += "ntp"
-
-LICENSE = "MIT"
-
-python do_rootfs_append_riscv64 () {
-    import subprocess
-
-    srcdir=d.getVar('IMAGE_ROOTFS')
-
-    cmd = 'rm -rf %s/boot/* ' % (srcdir)
-    subprocess.check_call(cmd, shell=True)
-}
-
-DISTRO_FEATURES_remove = " ipv6 pcmcia usbgadget usbhost pci 3g nfc vfat "
-
-export IMAGE_BASENAME = "light-fm-image-miniapp"
-inherit core-image
-

Some files were not shown because too many files changed in this diff