diff options
Diffstat (limited to 'meta-mel')
70 files changed, 0 insertions, 2716 deletions
diff --git a/meta-mel/README.md b/meta-mel/README.md deleted file mode 100644 index 0f0885e3..00000000 --- a/meta-mel/README.md +++ /dev/null @@ -1,33 +0,0 @@ -Mentor Embedded Linux Flex OS Distribution Layer for Yocto/OE -===================================================== - -This layer holds the Mentor Embedded Linux Flex OS distro configuration and -associated policy. - -This layer depends on: - -URI: git://git.openembedded.org/openembedded-core -Branch: master - -URI: git://git.yoctoproject.org/meta-yocto -Revision: master - -We recommend including meta-mel-support and meta-mentor-staging as well, but -these shouldn't be required. - - -Contributing ------------- - -Browse url: http://git.yoctoproject.org/cgit/cgit.cgi/meta-mentor -Clone url: git://git.yoctoproject.org/meta-mentor.git - -To contribute to this layer you should submit the patches for review to the -mailing list. - -Mailing list: meta-mentor@yoctoproject.org - -When sending single patches, please use something like -'git send-email -1 --subject-prefix 'PATCH][meta-mel' --to meta-mentor@yoctoproject.org' - -When sending a series, please use oe-core/scripts/create-pull-request. diff --git a/meta-mel/classes/codename_is_corename.bbclass b/meta-mel/classes/codename_is_corename.bbclass deleted file mode 100644 index afea0e65..00000000 --- a/meta-mel/classes/codename_is_corename.bbclass +++ /dev/null @@ -1,13 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -python codename_is_corename() { - codename = d.getVar('DISTRO_CODENAME') - if codename: - corenames = d.getVar('LAYERSERIES_CORENAMES') - if corenames and codename not in corenames.split(): - raise_sanity_error("This version of %s is incompatible with this version of openembedded-core (code name %s). Please use matching layer branches or update %s." % (d.getVar('DISTRO'), d.getVar('LAYERSERIES_CORENAMES'), d.getVar('DISTRO_NAME') or d.getVar('DISTRO')), d, network_error=False) -} -codename_is_corename[eventmask] = 'bb.event.SanityCheck' -addhandler codename_is_corename diff --git a/meta-mel/conf/distro/include/gdbserver-gplv3.inc b/meta-mel/conf/distro/include/gdbserver-gplv3.inc deleted file mode 100644 index 098f93f5..00000000 --- a/meta-mel/conf/distro/include/gdbserver-gplv3.inc +++ /dev/null @@ -1,17 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -# If ALLOW_GPLV3_GDBSERVER is set, allow {L,}GPLv3 for the gdb recipes -ALLOW_GPLV3_GDBSERVER ?= "" -INCOMPATIBLE_LICENSE_EXCEPTIONS += "\ - ${@'gdbserver-external:GPL-3.0 gdb:GPL-3.0' if '${ALLOW_GPLV3_GDBSERVER}' else ''} \ - ${@'gdb:LGPL-3.0' if '${ALLOW_GPLV3_GDBSERVER}' else ''} \ -" - -# If GPL-3.0 is in INCOMPATIBLE_LICENSE, and gdbserver/gdb isn't whitelisted, -# then remove gdbserver from the codebench-debug image feature, otherwise the -# build will fail. -FEATURE_PACKAGES_codebench-debug:remove = "${@'gdbserver' if any_incompatible(d, ['gdbserver-external', 'gdb'], 'GPL-3.0-only') else ''}" - -INHERIT += "incompatible-packages-check" diff --git a/meta-mel/conf/distro/include/mel-arm-tuning.inc b/meta-mel/conf/distro/include/mel-arm-tuning.inc deleted file mode 100644 index dca2a7d0..00000000 --- a/meta-mel/conf/distro/include/mel-arm-tuning.inc +++ /dev/null @@ -1,28 +0,0 @@ -# Use common compatible tuning values. -# -# This avoids unnecessary toolchain component rebuilds and increases reuse and compatibility amongst -# compatible machines. -# -# Imported from https://github.com/96boards/meta-rpb/blob/master/conf/distro/include/arm-defaults.inc -# Imported from https://github.com/Angstrom-distribution/meta-angstrom/blob/master/conf/distro/include/arm-defaults.inc - -def get_generic_tune(d): - features = d.getVar('TUNE_FEATURES').split() - if 'aarch64' in features: - tune = 'armv8a' - if 'crc' in features: - tune += '-crc' - if 'crypto' in features: - tune += '-crypto' - # cortexa* tune files only list 'arm' in features instead of 'armv7*' - elif 'armv7a' in features or 'armv7ve' in features or ('arm' in features and 'neon' in features): - tune = 'armv7athf' - if 'bigendian' in features: - tune += 'b' - if 'neon' in features: - tune += '-neon' - else: - tune = d.getVar('DEFAULTTUNE') - return tune - -DEFAULTTUNE:mel := "${@get_generic_tune(d)}" diff --git a/meta-mel/conf/distro/include/sourcery-version-check.inc b/meta-mel/conf/distro/include/sourcery-version-check.inc deleted file mode 100644 index 6c9d042c..00000000 --- a/meta-mel/conf/distro/include/sourcery-version-check.inc +++ /dev/null @@ -1,29 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -python sourcery_version_check () { - if d.getVar('TCMODE', True) == 'default': - return - - sourcery_version = d.getVar('SOURCERY_VERSION', True) - if not sourcery_version or sourcery_version == 'UNKNOWN': - return - - def version(s): - if s is None: - return [] - ver = s.split('-', 1)[0].split('.') - if len(ver) > 2: - ver = ver[:2] - return ver - - # Check for a specified required toolchain version for releases - toolchain_required_version = d.getVar('SOURCERY_VERSION_REQUIRED') - if toolchain_required_version: - if version(sourcery_version) != version(toolchain_required_version): - bb.fatal('Found toolchain version `%s`, expected `%s`. Please install the supported toolchain.' % (sourcery_version, toolchain_required_version)) -} -# We run this at build start to ensure that bitbake -e still works -sourcery_version_check[eventmask] = "bb.event.BuildStarted" -addhandler sourcery_version_check diff --git a/meta-mel/conf/distro/include/wic-bmap.inc b/meta-mel/conf/distro/include/wic-bmap.inc deleted file mode 100644 index d77b0b83..00000000 --- a/meta-mel/conf/distro/include/wic-bmap.inc +++ /dev/null @@ -1,12 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -# If a wic image type is enabled, also enable wic.bmap -python add_wic_bmap () { - image_fstypes = d.getVar('IMAGE_FSTYPES', True).split() - if any(f == 'wic' or f.startswith('wic.') for f in image_fstypes): - d.setVar('IMAGE_FSTYPES', " ".join (image_fstypes + ['wic.bmap'])) -} -add_wic_bmap[eventmask] = "bb.event.ConfigParsed" -addhandler add_wic_bmap diff --git a/meta-mel/conf/distro/mel-lite.conf b/meta-mel/conf/distro/mel-lite.conf deleted file mode 100644 index 3b23de22..00000000 --- a/meta-mel/conf/distro/mel-lite.conf +++ /dev/null @@ -1,15 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -require conf/distro/include/mel.conf - -DISTRO .= "-lite" -DISTRO_NAME += "Lite" -DISTROOVERRIDES = "${DISTRO}:mel" - -SANITY_TESTED_DISTROS = "\ - ubuntu-18.04 \n\ -" - -GLIBCVERSION ?= "2.28%" diff --git a/meta-mel/conf/distro/mel.conf b/meta-mel/conf/distro/mel.conf deleted file mode 100644 index 857f28b9..00000000 --- a/meta-mel/conf/distro/mel.conf +++ /dev/null @@ -1,397 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -## Vendor Integration {{{1 -VENDOR_CONF = "${@'conf/vendor/%s.conf' % d.getVar('VENDOR') if d.getVar('VENDOR') else ''}" -require ${VENDOR_CONF} -## }}}1 -## MEL Base Configuration {{{1 -DISTRO = "mel" -ADE_DISTRO = "mel-flex-os" -DISTRO_NAME = "Mentor Embedded Linux Flex OS" -DISTRO_CODENAME = "kirkstone" -MAINTAINER = "Siemens Digital Industries Software <embedded_support@mentor.com>" -HOME_URL = "https://www.mentor.com/embedded-software/linux/mel-flex-os/" -SUPPORT_URL = "https://support.sw.siemens.com/" -BUG_REPORT_URL = "https://support.sw.siemens.com/" -ADE_PROVIDER = "${DISTRO_NAME}" -TARGET_VENDOR = "-mel" -SDK_VENDOR = "-melsdk" - -# Distro and release versioning -DISTRO_VERSION = "13.0+snapshot-${DATE}" -ARCHIVE_RELEASE_VERSION = "${DISTRO_VERSION}.${BSP_VERSION}.${PATCH_VERSION}" -PDK_LICENSE_VERSION_DATE = "20181206" - -# Version of the mel-scripts artifact, including setup-mel -SCRIPTS_VERSION ?= "1" - -# Default values for BSP and PATCH version, to be redefined in other layers -BSP_VERSION ?= "0" -PATCH_VERSION ?= "0" - -SDK_VERSION := "${@'${DISTRO_VERSION}'.replace('snapshot-${DATE}','snapshot')}" -DISTRO_VERSION[vardepsexclude] = "DATE" -SDK_VERSION[vardepsexclude] = "DATE" - -SDK_NAME = "${DISTRO}-${TCLIBC}-${SDK_ARCH}-${IMAGE_BASENAME}-${TUNE_PKGARCH}" -SDKPATHINSTALL = "/opt/${DISTRO}/${SDK_VERSION}" - -# This is a single libc DISTRO, so exclude it from tmpdir name -TCLIBCAPPEND = "" - -PSEUDO_IGNORE_PATHS:append = ",/run/" - -MEL_DEFAULT_EXTRA_RDEPENDS = "packagegroup-core-boot" -MEL_DEFAULT_EXTRA_RRECOMMENDS = "kernel-module-af-packet" -DISTRO_EXTRA_RDEPENDS += " ${MEL_DEFAULT_EXTRA_RDEPENDS}" -DISTRO_EXTRA_RRECOMMENDS += " ${MEL_DEFAULT_EXTRA_RRECOMMENDS}" - -# Easier adjustment of oe-core QA check defaults -WARN_TO_ERROR_QA ??= "" -WARN_QA:remove = "${WARN_TO_ERROR_QA}" -ERROR_QA:append = " ${WARN_TO_ERROR_QA}" - -# Default to the external toolchain if available -TCMODE = "${@bb.utils.contains('BBFILE_COLLECTIONS', 'sourcery', 'external-sourcery-rebuild-libc', bb.utils.contains('BBFILE_COLLECTIONS', 'external-toolchain', 'external', 'default', d), d)}" - -# We want media to auto-mount -DISTRO_EXTRA_RRECOMMENDS += "udev-extraconf" - -# Paths -MELDIR ?= "${COREBASE}/.." - -# Use a local PR server by default -PRSERV_HOST ?= "localhost:0" - -# Default to ipk packaging -PACKAGE_CLASSES ?= "package_ipk" - -# MEL's supported hosts -SANITY_TESTED_DISTROS = "\ - ubuntu-18.04 \n\ - ubuntu-20.04 \n\ - centos-7* \n \ - centoslinux-7* \n \ - debian-10* \n \ - rhel*-8* \n \ - redhatenterprise*-8* \n \ -" - -# Sane default append for the kernel cmdline (not used by all BSPs) -# TODO: rename APPEND to something more appropriate -APPEND ?= "${APPEND_SERIAL} console=tty0 ${APPEND_SPLASH}" - -APPEND_SPLASH = "${@'quiet splash' if '${SPLASH}' else ''}" -APPEND_SPLASH .= "${@' plymouth:ignore-serial-consoles' if '${SPLASH}' == 'plymouth' else ''}" - -APPEND_SERIAL = "${@'console=${CMD_SERIAL_CONSOLE}' if '${SERIAL_CONSOLE}' else ''}" -CMD_SERIAL_CONSOLE ?= "${@','.join(reversed('${SERIAL_CONSOLE}'.split()))}" - -# Not in APPEND by default, but can be added to it as needed -APPEND_KGDBOC = "kgdbwait kgdboc=${CMD_SERIAL_CONSOLE}" - -# Splash screen -SPLASH:mel ?= "psplash" -PLYMOUTH_THEME ?= "mel" -PLYMOUTH_SHOWDELAY ?= "0" -DISTRO_EXTRA_RRECOMMENDS += "${@'plymouth-mel' if '${SPLASH}' == 'plymouth' else ''}" - -# Configuring plymouth to use the logo rather than modifying the theme script -# to use it is a tradeoff. It lets you switch themes while keeping the same -# splash screen, which is nice, the downside is a change to the logo requires -# recompilation of plymouth. -PLYMOUTH_LOGO ?= "${datadir}/plymouth/themes/mel/mel.png" -LOGO:pn-plymouth = "${PLYMOUTH_LOGO}" - -# Remove MACHINE from default volname -UBI_VOLNAME = "rootfs" - -# If a wic image type is enabled, also enable wic.bmap -require conf/distro/include/wic-bmap.inc - -# Additional dependencies for deployed files are often pulled in via -# do_image_wic[depends], to ensure the files are available for -# IMAGE_BOOT_FILES, but this bypasses the do_image[recrdeptask] on -# do_populate_lic. Add it for do_image_wic as well. -do_image_wic[recrdeptask] += "do_populate_lic" - -# do_image_complete requires licenses, so add recursive dependency -# on do_populate_lic -do_image_complete[recrdeptask] += "do_populate_lic" - -# Quadruple the normal extra space in an image. 'du' is not a good way to really -# see how much space will be needed and fails badly as the fs size grows. -IMAGE_ROOTFS_EXTRA_SPACE = "40960" - -# Default locale for images -IMAGE_LINGUAS ?= "en-us" - -# Make host user contamination an error -WARN_TO_ERROR_QA = "host-user-contaminated" - -# Also check for host user contamination in the rootfs -ROOTFS_POSTPROCESS_COMMAND:append = " rootfs_check_host_user_contaminated;" - -# Default to systemd, not sysvinit -INIT_MANAGER ?= "systemd" - -# Support shallow git tarballs -BB_GENERATE_SHALLOW_TARBALLS ?= "1" -BB_GIT_SHALLOW ?= "1" - -BB_GIT_SHALLOW_DEPTH_DEFAULT ?= "1" -BB_GIT_SHALLOW_DEPTH ??= "${@'${BB_GIT_SHALLOW_DEPTH_DEFAULT}' if not '${BB_GIT_SHALLOW_REVS}' else '0'}" -BB_GIT_SHALLOW_REVS ??= "" - -# For our kernel repository, we want to ship the user the history which they -# can't easily re-acquire from upstream. -LINUX_VERSION_TAG ??= "v${@'.'.join('${LINUX_VERSION}'.split('.')[:2])}" -LINUX_VERSION ??= "" -BB_GIT_SHALLOW_REVS:pn-linux-mel ??= "${@'${LINUX_VERSION_TAG}' if '${LINUX_VERSION_TAG}' and '${LINUX_VERSION}' else ''}" - -# Export path variables into the devshell for convenience -OE_TOPDIR = "${TOPDIR}" -OE_WORKDIR = "${WORKDIR}" -OE_TERMINAL_EXPORTS += "OE_TOPDIR OE_WORKDIR COREBASE" - -require conf/distro/include/no-static-libs.inc -require conf/distro/include/yocto-uninative.inc - -INHERIT += "uninative" -## }}}1 -## Mechanisms provided for user customization {{{1 -# Support USER_FEATURES -INHERIT += "user_features" - -# The PACKAGECONFIG_REMOVE indirection exists to make it possible to override -# the removals, as bitbake doesn't provide a mechanism to do so yet -PACKAGECONFIG_REMOVE ??= "" -PACKAGECONFIG:remove = "${PACKAGECONFIG_REMOVE}" - -# Ease adding to the SDK from a global context -TOOLCHAIN_HOST_TASK_EXTRA ?= "" -TOOLCHAIN_HOST_TASK:append = " ${TOOLCHAIN_HOST_TASK_EXTRA}" -TOOLCHAIN_TARGET_TASK_EXTRA ?= "" -TOOLCHAIN_TARGET_TASK_EXTRA:pn-buildtools-tarball = "" -TOOLCHAIN_TARGET_TASK:append = " ${TOOLCHAIN_TARGET_TASK_EXTRA}" - -# Easier addition of shared state mirrors -SSTATE_MIRROR_SITES ?= "" -SSTATE_MIRRORS += "${@''.join(r'file://.* %s/PATH;downloadfilename=PATH \n' % u for u in '${SSTATE_MIRROR_SITES}'.split())}" -## }}}1 -## Distro Features & Recipe Configuration {{{1 -MEL_DEFAULT_DISTRO_FEATURES = "opengl multiarch pam" - -# This violates typical MACHINE/DISTRO boundaries, but is part of MEL's -# supported features. If the vendor supports x11 and not wayland for its -# machines, so do we. -DISTRO_FEATURES_DEFAULT:remove = "x11" -MEL_DEFAULT_DISTRO_FEATURES += "${@bb.utils.contains('MACHINE_FEATURES', 'x11', \ - bb.utils.contains('MACHINE_FEATURES', 'wayland', 'wayland', 'x11', d), 'wayland', d)}" - -DISTRO_FEATURES ?= "${DISTRO_FEATURES_DEFAULT} ${DISTRO_FEATURES_LIBC} ${MEL_DEFAULT_DISTRO_FEATURES}" - -# Enable our staged fixes that are on their way upstream -DISTRO_FEATURES:append = " mentor-staging" - -# Since many embedded systems don't have non-root users, allow autospawn for -# root as well. -PACKAGECONFIG:append:pn-pulseaudio = " autospawn-for-root" - -# We don't use dracut to build initramfs -PACKAGECONFIG_REMOVE:pn-plymouth = "initrd" - -# Do not fetch the anti-virus db at compile-time -INSTALL_CLAMAV_CVD ?= "" -## }}}1 -## Inherits {{{1 -# We want information and history about build output -INHERIT += "buildhistory" - -# Copy the image license manifest into DEPLOY_DIR_IMAGE -INHERIT += "deploy-license-manifest" - -# Warn if there are available update layers which are not included in the -# current configuration -INHERIT += "mentor-updates-check" - -# Check PDK license -INHERIT += "${@bb.utils.contains('BBFILE_COLLECTIONS', 'mentor-private', 'pdk-license', '', d)}" - -# Warn the user and disable rootfs resizing for non-GPLv3 builds -INHERIT += "resize-rootfs-gplv3" - -# Ensure that our DISTRO_CODENAME aligns with LAYERSERIES_CORENAMES -INHERIT += "codename_is_corename" - -# Ensure we're building the toolchain in a supported configuration -ERROR_QA:append = " disallowed-tuning" -ALLOWED_TUNING = "armv5te armv7ahf-neon armv7a-neon armv7at armv8a i686 riscv64 x86-64" -INHERIT += "required_toolchain_config" - -# Use our toolchain relocation scripts -INHERIT += "${@bb.utils.contains('BBFILE_COLLECTIONS', 'mentor-staging', 'toolchain_ship_relocate_sdk', '', d)}" -TOOLCHAIN_SHAR_REL_TMPL = "${LAYERDIR_mentor-staging}/files/toolchain-shar-relocate.sh" -TOOLCHAIN_EXT_REL_TMPL = "${LAYERDIR_mentor-staging}/files/toolchain-shar-extract.sh" -RELOCATE_SDK_SH ?= "${LAYERDIR_mentor-staging}/files/relocate_sdk.sh" -## }}}1 -## Preferences & Package Selection {{{1 -# Default to the Xorg X server if the BSP doesn't specify -XSERVER ??= "\ - xserver-xorg \ - xf86-input-evdev \ - xf86-input-mouse \ - xf86-input-keyboard \ - xf86-video-fbdev \ -" - -# Obey our graphics image feature -SYSTEMD_DEFAULT_TARGET ?= '${@bb.utils.contains_any("IMAGE_FEATURES", ["x11-base", "graphics", "weston"], "graphical.target", "multi-user.target", d)}' - -# We split out the initramfs install script bits into -# core-image-minimal-install-initramfs, to keep core-image-minimal-initramfs -# as generic as possible, but image-live may well expect the install bits. -INITRD_IMAGE_LIVE ?= "core-image-minimal-install-initramfs" - -# Additional package groups -# -# We prefer wayland/weston, unless the vendor supports x11 but not wayland. -FEATURE_PACKAGES_mel-weston = "weston weston-init weston-examples" -FEATURE_PACKAGES_mel-x11 = "${FEATURE_PACKAGES_x11-base} ${FEATURE_PACKAGES_hwcodecs}" -FEATURE_PACKAGES_graphics += "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', '${FEATURE_PACKAGES_mel-weston}', '', d)}" -FEATURE_PACKAGES_graphics += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', '${FEATURE_PACKAGES_mel-x11}', '', d)}" -FEATURE_PACKAGES_tools-audio ?= "packagegroup-tools-audio" -FEATURE_PACKAGES_tools-benchmark ?= "packagegroup-tools-benchmark" -FEATURE_PACKAGES_multimedia ?= "gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad" -FEATURE_PACKAGES_virtualization ?= "docker-ce python3-docker-compose" -FEATURE_PACKAGES_codebench-debug ?= "gdbserver strace openssh-sftp-server" - -# Baseline runtime for third party multilib executables. -# libc/libgcc/libstdc++, plus lttng for tracing. Only applies to images -# without MLPREFIX set (i.e. development-image, not lib32-development-image). -MULTILIB_RUNTIME_PACKAGES = "glibc libgcc libstdc++ ${@bb.utils.contains('IMAGE_FEATURES', 'tools-profile', 'lttng-ust', '', d)}" -MULTILIB_RUNTIME_FEATURE_PACKAGES = "${@' '.join(multilib_pkg_extend(d, pkg) for pkg in d.getVar('MULTILIB_RUNTIME_PACKAGES').split())}" -FEATURE_PACKAGES_multilib-runtime ?= "${@d.getVar('MULTILIB_RUNTIME_FEATURE_PACKAGES') if not d.getVar('MLPREFIX') else ''}" - -# Analogous to the nfs-server group -FEATURE_PACKAGES_samba-server ?= "samba swat" - -# Include nss-myhostname for sysvinit, so the hostname resolves. systemd -# includes myhostname itself. -DISTRO_EXTRA_RRECOMMENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '', 'nss-myhostname', d)}" -## }}}1 -## Workarounds & Overrides {{{1 -# Override arm tuning to reduce specificity and increase reuse. -require conf/distro/include/mel-arm-tuning.inc - -# Ensure that the output directory always exists, this fixes use of meta-sca -# with certain meta-imx recipes. -do_sca_tracefiles[dirs] =+ "${SCA_SOURCES_DIR}" - -# We aren't supporting meta-intel's RMC -BBMASK += "/meta-intel/common/recipes-bsp/systemd-boot/" - -# webkitgtk link fails due to memory exhaustion, so disable debug info to -# reduce the memory footprint -DEBUG_FLAGS:remove:pn-webkitgtk = "-g" - -# Work around git safe directory issue with METADATA_*, by forcing early expansion -# while in a build user context. -require classes/metadata_scm.bbclass -METADATA_BRANCH := "${@base_detect_branch(d)}" -METADATA_REVISION := "${@base_detect_revision(d)}" -## }}}1 -## SDK & Application Development Environment {{{1 -# Use DEPLOY_DIR_ naming for consistency -SDK_DEPLOY:mel = "${DEPLOY_DIR_SDK}" -DEPLOY_DIR_SDK ?= "${DEPLOY_DIR}/sdk" - -# As we remove the toolchain from the sdk, naming it 'toolchain' is not -# accurate, and sdk better describes what it is anyway. -TOOLCHAIN_OUTPUTNAME ?= "${SDK_NAME}-sdk-${SDK_VERSION}" - -# Restore the default to buildtools-tarball, as that recipe sets it with ?= -TOOLCHAIN_OUTPUTNAME:pn-buildtools-tarball = "${SDK_ARCH}-buildtools-nativesdk-standalone-${DISTRO_VERSION}" - -# Add KERNEL_* to the SDK environment (unexported) for use by the user -TOOLCHAIN_TARGET_TASK_EXTRA += " sdk-env-kernelvars" - -# Set this so the ADE can set the right Yocto multilib display option -EXTERNAL_SETUP_SCRIPT_VARS += "REAL_MULTIMACH_TARGET_SYS" -EXTERNAL_REAL_MULTIMACH_TARGET_SYS ??= "${REAL_MULTIMACH_TARGET_SYS}" -CB_MBS_OPTIONS[general.yocto.sdk.value] = "${EXTERNAL_REAL_MULTIMACH_TARGET_SYS}" - -# This allows us to control what base target packages are installed for the -# configured multilibs, by altering SDK_MULTILIB_VARIANTS to differ from -# MULTILIB_VARIANTS. We also append meta-environment to obey -# SDK_MULTILIB_VARIANTS as well. -IMAGE_CLASSES += "image-sdk-multilib-variants" - -# Cull duplicate/invalid files for windows SDKMACHINEs -IMAGE_CLASSES += "${@bb.utils.contains('BBFILE_COLLECTIONS', 'mentor-staging', 'win_sdk_cull', '', d)}" - -# We need to ensure we can distribute downloads for SDK/ADE builds -IMAGE_CLASSES += "archive_sdk_downloads" - -# Create a 'latest' symlink for the SDK -IMAGE_CLASSES += "sdk_latest_link" - -# If meta-mentor-private is available, pull in the populate-ade class -ADE_IMAGE_CLASS = "${@bb.utils.contains('BBFILE_COLLECTIONS', 'mentor-private', 'populate_ade archive_ade_downloads', '', d)}" -IMAGE_CLASSES += "${ADE_IMAGE_CLASS}" -## }}}1 -## MEL Releases {{{1 -# Default image for our installers -RELEASE_IMAGE ?= "development-image" -RELEASE_ARTIFACTS ?= "mel_layers mel_downloads templates images" - -# Apply any release-time srcrev lockdowns for AUTOREV recipes -include ${MELDIR}/${MACHINE}/conf/autorevs.conf - -# LAYERDIRs for our layers, by name -INHERIT += "layerdirs" - -# Populate a tree of downloads organized by layer -ARCHIVE_RELEASE_DL_DIR ?= "${DEPLOY_DIR}/release-downloads" -DL_LICENSE_INCLUDE ?= "*" -INHERIT += "archive-release-downloads" - -# For our forks, also point an 'upstream' remote at upstream -UPSTREAM_URL_meta-virtualization = "git://git.yoctoproject.org/meta-virtualization" -FORKED_REPOS ?= "meta-virtualization" - -# Our public layers should use non-ssh URIs for their remotes -PUBLIC_REPOS ?= "meta-mentor meta-sourcery meta-tracing ${FORKED_REPOS}" - -# Define a location for placing external artifacts to be used by the build -MEL_EXTERNAL_ARTIFACTS ?= "${TOPDIR}/mel-external-artifacts" -## }}}1 -## Includes {{{1 - -# Support for SOURCERY_VERSION_REQUIRED -require conf/distro/include/sourcery-version-check.inc - -# Handle GPLv3 gdbserver -require conf/distro/include/gdbserver-gplv3.inc - -# QT5 configuration. These are includes rather than requires, as they live in -# other layers. -include conf/distro/include/qt5-mel.conf -include conf/distro/include/qt5-versions.inc - -# Security configuration. -include conf/distro/include/mel-security.conf - -# SWUpdate configuration. -include conf/distro/include/mel-swupdate.conf - -# MCF configuration -include conf/distro/include/mel-mcf.conf - -# INITRAMFS -INITRAMFS_IMAGE ?= "mel-initramfs-image" -INITRAMFS_IMAGE_BUNDLE ?= "${@bb.utils.contains('KERNEL_IMAGETYPES', 'fitimage', '', '1', d)}" -## }}}1 -# vim: set fdm=marker fdl=0 : diff --git a/meta-mel/conf/include/drop-toolchain-from-sdk.inc b/meta-mel/conf/include/drop-toolchain-from-sdk.inc deleted file mode 100644 index 2634357d..00000000 --- a/meta-mel/conf/include/drop-toolchain-from-sdk.inc +++ /dev/null @@ -1,17 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -# When we're using an external toolchain, we don't want to ship a newly built -# toolchain inside the Yocto SDK. Normally meta-environment comes from the -# same packagegroup which installs the toolchain, so add that back in -# explicitly. -python () { - if oe.utils.inherits(d, 'populate_sdk_base'): - host_task = d.getVar('TOOLCHAIN_HOST_TASK', True) - tcmode = d.getVar('TCMODE', True) - packagegroup = d.expand('packagegroup-cross-canadian-${MACHINE}') - if packagegroup in host_task.split() and tcmode.startswith('external'): - d.setVar('TOOLCHAIN_HOST_TASK:remove', 'packagegroup-cross-canadian-${MACHINE}') - d.setVar('TOOLCHAIN_HOST_TASK:append', ' meta-environment-${MACHINE}') -} diff --git a/meta-mel/conf/layer.conf b/meta-mel/conf/layer.conf deleted file mode 100644 index 906f471c..00000000 --- a/meta-mel/conf/layer.conf +++ /dev/null @@ -1,23 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -BBPATH .= ":${LAYERDIR}" -BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ - ${LAYERDIR}/recipes-*/*/*.bbappend" - -# Let us add layer-specific bbappends which are only applied when that -# layer is included in our configuration -BBFILES += "${@' '.join('${LAYERDIR}/%s/recipes*/*/*.bbappend' % layer \ - for layer in BBFILE_COLLECTIONS.split())}" -BBFILES += "${@' '.join('${LAYERDIR}/%s/recipes*/*/*.bb' % layer \ - for layer in BBFILE_COLLECTIONS.split())}" - -LAYERDIR_RE ?= "${LAYERDIR}" -BBFILE_COLLECTIONS += "mel" -BBFILE_PRIORITY_mel = "12" -BBFILE_PATTERN_mel = "^${LAYERDIR_RE}/" -LAYERSERIES_COMPAT_mel = "kirkstone" -LAYERDEPENDS_mel = "core mentor-common" -LAYERRECOMMENDS_mel = "mel-support mentor-staging sourcery mentor-private tracing-layer" -LAYERRECOMMENDS_mel += "openembedded-layer filesystems-layer networking-layer multimedia-layer gplv2" diff --git a/meta-mel/files/kgdb.cfg b/meta-mel/files/kgdb.cfg deleted file mode 100644 index ec98930e..00000000 --- a/meta-mel/files/kgdb.cfg +++ /dev/null @@ -1,4 +0,0 @@ -CONFIG_DEBUG_KERNEL=y -CONFIG_KGDB=y -CONFIG_KGDB_SERIAL_CONSOLE=y -CONFIG_DEBUG_INFO=y diff --git a/meta-mel/lib/bblayers/mel_utils.py b/meta-mel/lib/bblayers/mel_utils.py deleted file mode 100644 index 666f6a88..00000000 --- a/meta-mel/lib/bblayers/mel_utils.py +++ /dev/null @@ -1,315 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -# TODO: add an argument to enable/disable dependency traversal vs just the -# specified recipes -import argparse -import logging -import os -import sys -import tempfile - -from collections import defaultdict - -import bb.command -import bb.cookerdata -import bb.fetch -import bb.utils - -from bblayers.common import LayerPlugin - -logger = logging.getLogger('bitbake-layers') - - -def plugin_init(plugins): - return MELUtilsPlugin() - - -def iter_except(func, exception, first=None): - """Call a function repeatedly until an exception is raised. - - Converts a call-until-exception interface to an iterator interface. - Like __builtin__.iter(func, sentinel) but uses an exception instead - of a sentinel to end the loop. - - Examples: - bsddbiter = iter_except(db.next, bsddb.error, db.first) - heapiter = iter_except(functools.partial(heappop, h), IndexError) - dictiter = iter_except(d.popitem, KeyError) - dequeiter = iter_except(d.popleft, IndexError) - queueiter = iter_except(q.get_nowait, Queue.Empty) - setiter = iter_except(s.pop, KeyError) - - """ - try: - if first is not None: - yield first() - while 1: - yield func() - except exception: - pass - - -class MELUtilsPlugin(LayerPlugin): - def _get_depgraph(self, targets, task='do_build'): - depgraph = None - - self.tinfoil.set_event_mask(['bb.event.DepTreeGenerated', 'bb.command.CommandCompleted', 'bb.event.NoProvider', 'bb.command.CommandFailed', 'bb.command.CommandExit']) - if not self.tinfoil.run_command('generateDepTreeEvent', targets, task): - logger.critical('Error starting dep tree event command') - return 1 - - for event in iter_except(lambda: self.tinfoil.wait_event(0.25), Exception): - if event is None: - continue - if isinstance(event, bb.command.CommandCompleted): - break - elif isinstance(event, bb.command.CommandFailed): - return None, 'Error running command: %s' % event.error - elif isinstance(event, bb.command.CommandExit): - return None, 'Error running command: exited with %s' % event.exitcode - elif isinstance(event, bb.event.NoProvider): - if event._reasons: - return None, 'Nothing provides %s: %s' % (event._item, event._reasons) - else: - return None, 'Nothing provides %s.' % event._item - elif isinstance(event, bb.event.DepTreeGenerated): - depgraph = event._depgraph - break - elif isinstance(event, logging.LogRecord): - logger.handle(event) - else: - logger.warning('Unhandled event %s: %s' % (event.__class__.__name__, event)) - return depgraph, None - - def _localpaths_by_layer(self, data, recipe_filename, layer_for_file, mirrortarballs=False): - def ud_localpaths(u, layer_name, dldir, d): - if hasattr(u.method, 'process_submodules'): - def archive_submodule(ud, url, module, modpath, workdir, d): - url += ";bareclone=1;nobranch=1" - newfetch = bb.fetch2.Fetch([url], d) - for subud in newfetch.ud.values(): - return ud_localpaths(subud, layer_name, dldir, d) - - # If we're using a shallow mirror tarball it needs to be unpacked - # temporarily so that we can examine the .gitmodules file - if u.shallow and os.path.exists(u.fullshallow) and u.method.need_update(u, d): - import tempfile - with tempfile.TemporaryDirectory(dir=dldir) as tmpdir: - bb.fetch2.runfetchcmd("tar -xzf %s" % u.fullshallow, d, workdir=tmpdir) - u.method.process_submodules(u, tmpdir, archive_submodule, d) - else: - u.method.process_submodules(u, u.clonedir, archive_submodule, d) - - decoded = bb.fetch.decodeurl(u.url) - if decoded[0] == 'file': - return - - u.setup_localpath(data) - localpath = u.localpath - - if mirrortarballs and hasattr(u, 'mirrortarballs'): - for mt in u.mirrortarballs: - mt_abs = os.path.join(dldir, mt) - if os.path.exists(mt_abs): - localpath = mt_abs - break - - items_by_layer[layer_name].add(os.path.normpath(localpath)) - - src_uri = data.getVar('SRC_URI').split() - fetcher = bb.fetch.Fetch(src_uri, data) - urldata = fetcher.ud - dldir = data.getVar('DL_DIR') - - items_by_layer = defaultdict(set) - items_files = data.varhistory.get_variable_items_files('SRC_URI') - for item, filename in items_files.items(): - ud = urldata[item] - layer_name = layer_for_file(filename) - ud_localpaths(ud, layer_name, dldir, data) - - recipe_layer_name = layer_for_file(recipe_filename) - for extra_item in set(src_uri) - set(items_files.keys()): - logger.warning('Unable to determine correct layer for `%s`: this item is missing from variable history', extra_item) - ud = urldata[extra_item] - ud_localpaths(ud, recipe_layer_name, dldir, data) - - return items_by_layer - - def _collect_fetch_recipes(self, targets, ctask, depgraph): - tdepends = depgraph['tdepends'] - fetch_recipes = set() - for target in targets: - if ':' in target: - recipe, task = target.split(':', 1) - else: - recipe, task = target, ctask - - if not task.startswith('do_'): - task = 'do_' + task - - if task == 'do_fetch': - fetch_recipes.add(recipe) - - for task, taskdeps in tdepends.items(): - for dep in taskdeps: - deprecipe, deptask = dep.rsplit('.', 1) - if deptask == 'do_fetch': - fetch_recipes.add(deprecipe) - return fetch_recipes - - def _gather_downloads(self, args): - if args.task is None: - args.task = self.tinfoil.config_data.getVar('BB_DEFAULT_TASK') or 'build' - if not args.task.startswith('do_'): - args.task = 'do_' + args.task - - depgraph, error = self._get_depgraph(args.targets, args.task) - if not depgraph: - if error: - logger.critical('Failed to get the dependency graph: %s' % error) - return 1 - else: - logger.critical('Failed to get the dependency graph') - return 1 - - layer_data = depgraph['layer-priorities'] - - def layer_for_file(filename): - for name, pattern, re, priority in layer_data: - if re.match(filename): - return name - - fetch_recipes = self._collect_fetch_recipes(args.targets, args.task, depgraph) - - self.tinfoil.run_command('enableDataTracking') - - items_by_layer = defaultdict(set) - for recipe in fetch_recipes: - try: - fn = depgraph['pn'][recipe]['filename'] - except KeyError: - mc = self.tinfoil.config_data.getVar('BBMULTICONFIG') - if not mc: - raise Exception("Could not find key '%s' in depgraph and no multiconfigs defined" % recipe) - for cfg in mc.split(): - try: - nkey = f"mc:{cfg}:{recipe}" - fn = depgraph['pn'][nkey]['filename'] - except KeyError: - continue - if not fn: - raise Exception("Could not find recipe for '%s' in depgraph" % recipe) - - real_fn, cls, mc = bb.cache.virtualfn2realfn(fn) - recipe_layer = layer_for_file(real_fn) - appends = self.tinfoil.get_file_appends(fn) - data = self.tinfoil.parse_recipe_file(fn, appendlist=appends) - - for layer, items in self._localpaths_by_layer(data, real_fn, lambda f: layer_for_file(f) or recipe_layer, args.mirrortarballs).items(): - items_by_layer[layer] |= items - - # If a given download is used by multiple layers, prefer the lowest - # priority, i.e. associating it with oe-core vs some random layer - seen = set() - layer_priorities = {l: p for l, _, _, p in layer_data} - for layer in sorted(layer_priorities, key=lambda i: layer_priorities[i]): - for item in sorted(items_by_layer[layer]): - if item not in seen: - seen.add(item) - yield layer, item - - def do_gather_downloads(self, args): - """Gather up downloads for the specified targets, grouped by layer.""" - for layer, item in self._gather_downloads(args): - print('%s\t%s' % (layer, item)) - - def do_dump_downloads(self, args): - """Dump downloads by layer into ${TMPDIR}/downloads-by-layer.txt.""" - items = self._gather_downloads(args) - filename = self.tinfoil.config_data.expand(args.filename) - omode = 'a' if args.append else 'w' - with open(filename, omode) as f: - for layer, item in items: - f.write('%s\t%s\n' % (layer, item)) - - def do_dump_licenses(self, args): - """Dump licenses of all packages in the depgraph of a target into ${TMPDIR}/pn-buildlist-licenses.txt.""" - if args.task is None: - args.task = self.tinfoil.config_data.getVar('BB_DEFAULT_TASK') or 'build' - if not args.task.startswith('do_'): - args.task = 'do_' + args.task - - filename = self.tinfoil.config_data.expand(args.filename) - - depgraph, error = self._get_depgraph(args.targets, args.task) - if not depgraph: - if error: - logger.critical('Failed to get the dependency graph: %s' % error) - return 1 - else: - logger.critical('Failed to get the dependency graph') - return 1 - - fetch_recipes = self._collect_fetch_recipes(args.targets, args.task, depgraph) - - omode = 'a' if args.append else 'w' - with open(filename, omode) as f: - for recipe in fetch_recipes: - try: - fn = depgraph['pn'][recipe]['filename'] - except KeyError: - mc = self.tinfoil.config_data.getVar('BBMULTICONFIG') - if not mc: - raise Exception("Could not find key '%s' in depgraph and no multiconfigs defined" % recipe) - for cfg in mc.split(): - try: - nkey = f"mc:{cfg}:{recipe}" - fn = depgraph['pn'][nkey]['filename'] - except KeyError: - continue - if not fn: - raise Exception("Could not find recipe for '%s' in depgraph" % recipe) - - real_fn, cls, mc = bb.cache.virtualfn2realfn(fn) - appends = self.tinfoil.get_file_appends(fn) - data = self.tinfoil.parse_recipe_file(fn, appendlist=appends) - - pn = data.getVar('PN') - pv = data.getVar('PV') - lc = data.getVar('LICENSE') - - if not args.sourceinfo: - f.write('%s,%s,%s\n' % (pn, pv, lc)) - else: - # unset su, otherwise we get previous value if there is no current - su = '' - for url in data.getVar('SRC_URI').split(): - scheme, host, path, user, passwd, param = bb.fetch.decodeurl(url) - if scheme != 'file': - su = bb.fetch.encodeurl((scheme, host, path, '', '', '')) - hp = data.getVar('HOMEPAGE') - - f.write('%s,%s,%s,%s,%s\n' % (pn, pv, lc, su, hp)) - - # remove any duplicates added due to append flag - uniqlines = set(open(filename).readlines()) - with open(filename, 'w') as f: - f.writelines(uniqlines) - - def register_commands(self, sp): - common = argparse.ArgumentParser(add_help=False) - common.add_argument('--mirrortarballs', '-m', help='show existing mirror tarball paths rather than git clone paths', action='store_true') - common.add_argument('--task', '-c', help='specify the task to use when not expicitly specified for a target (default: BB_DEFAULT_TASK or "build")') - common.add_argument('targets', nargs='+') - - gather = self.add_command(sp, 'gather-downloads', self.do_gather_downloads, parents=[common], parserecipes=True) - dump = self.add_command(sp, 'dump-downloads', self.do_dump_downloads, parents=[common], parserecipes=True) - dump.add_argument('--append', '-a', help='append to output filename', action='store_true') - dump.add_argument('--filename', '-f', help='filename to dump to', default='${TMPDIR}/downloads-by-layer.txt') - license = self.add_command(sp, 'dump-licenses', self.do_dump_licenses, parents=[common], parserecipes=True) - license.add_argument('--filename', '-f', help='filename to dump to', default='${TMPDIR}/pn-buildlist-licenses.txt') - license.add_argument('--append', '-a', help='append to output filename', action='store_true') - license.add_argument('--sourceinfo', '-s', help='additionally dump SRC_URI and HOMEPAGE variables too', action='store_true') diff --git a/meta-mel/lib/oeqa/selftest/cases/recipetool_mel.py b/meta-mel/lib/oeqa/selftest/cases/recipetool_mel.py deleted file mode 100644 index 587ec90d..00000000 --- a/meta-mel/lib/oeqa/selftest/cases/recipetool_mel.py +++ /dev/null @@ -1,108 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -import os -import logging -import tempfile -import urllib.parse - -from oeqa.utils.commands import runCmd, bitbake, get_bb_var, create_temp_layer -from oeqa.utils.decorators import testcase -from oeqa.selftest.cases import recipetool - - -templayerdir = None - - -def setUpModule(): - global templayerdir - templayerdir = tempfile.mkdtemp(prefix='recipetool-mel-qa') - create_temp_layer(templayerdir, 'selftest-recipetool-mel') - runCmd('bitbake-layers add-layer %s' % templayerdir) - - -def tearDownModule(): - runCmd('bitbake-layers remove-layer %s' % templayerdir, ignore_status=True) - runCmd('rm -rf %s' % templayerdir) - - -class RecipetoolMelTests(recipetool.RecipetoolAppendsrcBase): - def setUpLocal(self): - super(RecipetoolMelTests, self).setUpLocal() - self.templayerdir = templayerdir - - def _test_kernel_cmd(self, cmd, target, expected_file_info): - testrecipe = get_bb_var('PN', target) - machine = get_bb_var('MACHINE') - expectedfiles = [os.path.join(machine, i) for i in expected_file_info.keys()] - - bbappendfile, _ = self._try_recipetool_appendcmd(cmd, testrecipe, expectedfiles) - - src_uri = get_bb_var('SRC_URI', testrecipe).split() - for f, destdir in expected_file_info.items(): - if destdir: - self.assertIn('file://%s;subdir=%s' % (f, destdir), src_uri) - else: - self.assertIn('file://%s' % f, src_uri) - - filesdir = os.path.join(os.path.dirname(bbappendfile), testrecipe) - filesextrapaths = get_bb_var('FILESEXTRAPATHS', testrecipe).split(':') - self.assertIn(filesdir, filesextrapaths) - - - # FIXME: the test files should end in .dts - def test_kernel_add_dts(self): - testrecipe = 'virtual/kernel' - srcdir = get_bb_var('S', testrecipe) - workdir = get_bb_var('WORKDIR', testrecipe) - if srcdir == get_bb_var('STAGING_KERNEL_DIR', testrecipe): - # If S is directly set to STAGING_KERNEL_DIR, then we most likely - # have a custom checkout or unpack process like linux-yocto, so we - # don't know precisely where to place the files relative to - # WORKDIR. We default to 'git' in this case. - subdir = 'git' - else: - subdir = os.path.relpath(srcdir, workdir) - destdir = 'arch/\\${ARCH}/boot/dts' - if subdir != '.': - destdir = os.path.join(subdir, destdir) - - expected_file_info = { - os.path.basename(self.testfile): destdir, - 'testfile2': destdir, - } - - testfile2 = os.path.join(self.tempdir, 'testfile2') - with open(testfile2, 'w') as f: - f.write('Test File 2') - - cmd = 'recipetool kernel_add_dts %s %s %s' % (self.templayerdir, self.testfile, testfile2) - self._test_kernel_cmd(cmd, testrecipe, expected_file_info) - - devtree = get_bb_var('KERNEL_DEVICETREE', testrecipe) - if not devtree: - self.fail('KERNEL_DEVICETREE not defined') - devtree = devtree.split() - - for f in expected_file_info: - self.assertIn(f.replace('dts', 'dtb'), devtree) - - def test_kernel_add_fragments(self): - fragments = [] - for i in range(1, 5): - fn = os.path.join(self.tempdir, 'fragment%d.cfg' % i) - fragments.append(fn) - open(fn, 'w') - - cmd = 'recipetool kernel_add_fragments %s %s' % (self.templayerdir, ' '.join(fragments)) - self._test_kernel_cmd(cmd, 'virtual/kernel', dict((os.path.basename(i), None) for i in fragments)) - - def test_kernel_set_configs(self): - # TODO: check the generated fragment content - cmd = 'recipetool kernel_set_configs %s CONFIG_ONE=y CONFIG_TWO=n' % self.templayerdir - self._test_kernel_cmd(cmd, 'virtual/kernel', {'recipetool0.cfg': None}) - - def test_kernel_set_defconfig(self): - cmd = 'recipetool kernel_set_defconfig -r linux-dummy %s %s' % (self.templayerdir, self.testfile) - self._test_kernel_cmd(cmd, 'linux-dummy', {'defconfig': None}) diff --git a/meta-mel/lib/recipetool/kernel.py b/meta-mel/lib/recipetool/kernel.py deleted file mode 100644 index e530a326..00000000 --- a/meta-mel/lib/recipetool/kernel.py +++ /dev/null @@ -1,227 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: GPL-2.0 -# --------------------------------------------------------------------------------------------------------------------- - -# Recipe creation tool - kernel plugin -# -# TODO: figure out how to get all the files added to a single SRC_URI += -# rather than multiple, while still getting the nice multi-line value -# TODO: add support to oe.recipeutils to let us add include/require lines via -# 'extralines', which is not currently supported. We could then -# pull in linux-dtb.inc automatically if appropriate. -# -# These sub-commands are thin wrappers around appendsrcfile(s) coupled -# with additional configuration variables. -# -# Examples: -# -# $ recipetool kernel_set_defconfig meta-mylayer /path/to/defconfig -# $ recipetool kernel_add_fragments meta-mylayer one.cfg two.cfg -# $ recipetool kernel_set_configs meta-mylayer CONFIG_LOCALVERSION_AUTO=n CONFIG_LOCALVERSION=-test -# $ recipetool kernel_add_dts meta-mylayer *.dts -# -# -# Copyright 2022 Siemens -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2 as -# published by the Free Software Foundation. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -import argparse -import logging -import os -import re - - -logger = logging.getLogger('recipetool') -tinfoil = None - - -def plugin_init(pluginlist): - # Don't need to do anything here right now, but plugins must have this function defined - pass - - -def tinfoil_init(instance): - global tinfoil - tinfoil = instance - - -def _get_recipe_file(cooker, pn): - import oe.recipeutils - best = cooker.findBestProvider(pn) - recipefile = best[3] - if not recipefile: - skipreasons = oe.recipeutils.get_unavailable_reasons(cooker, pn) - if skipreasons: - logger.error('\n'.join(skipreasons)) - else: - logger.error("Unable to find any recipe file matching %s" % pn) - return recipefile - - -def _parse_recipe(pn, tinfoil): - recipefile = _get_recipe_file(tinfoil.cooker, pn) - if not recipefile: - # Error already logged - return None - return tinfoil.parse_recipe(pn) - - -def append_srcfiles(destlayer, rd, files, use_workdir=False, use_machine=False, wildcard_version=False, extralines=None): - import recipetool.append - - pn = rd.getVar('PN', True) - if use_machine: - machine = rd.getVar('MACHINE', True) - else: - machine = None - appendargs = argparse.Namespace(destlayer=destlayer, recipe=pn, use_workdir=use_workdir, wildcard_version=wildcard_version, machine=machine) - recipetool.append.appendsrc(appendargs, files, rd, extralines) - - -def kernel_set_defconfig(args): - rd = _parse_recipe(args.recipe, tinfoil) - if not rd: - return 1 - - import bb.data - if not bb.data.inherits_class('kernel-yocto', rd): - extralines = [] - for configvar in ['KERNEL_DEFCONFIG', 'DEFCONFIG']: - if rd.getVar(configvar, True): - extralines.append('{0} = ${{WORKDIR}}/defconfig'.format(configvar)) - else: - extralines = None - - return append_srcfiles(args.destlayer, rd, {args.defconfig: 'defconfig'}, use_workdir=True, use_machine=True, extralines=extralines) - - -def kernel_add_dts(args): - import oe.recipeutils - - rd = _parse_recipe(args.recipe, tinfoil) - if not rd: - return 1 - - dtbs = (os.path.basename(dts.replace('dts', 'dtb')) for dts in args.dts_files) - extralines = ['KERNEL_DEVICETREE += {0}'.format(' '.join(dtbs))] - files = dict((dts, os.path.join('arch/${{ARCH}}/boot/dts/{0}'.format(os.path.basename(dts)))) for dts in args.dts_files) - ret = append_srcfiles(args.destlayer, rd, files, use_workdir=False, use_machine=True, extralines=extralines) - - packages = rd.getVar('PACKAGES', True).split() - if 'kernel-devicetree' not in packages: - appendpath, _ = oe.recipeutils.get_bbappend_path(rd, args.destlayer, wildcardver=False) - with open(appendpath, 'a') as f: - f.write('require recipes-kernel/linux/linux-dtb.inc') - return ret - - -def kernel_add_fragments(args): - rd = _parse_recipe(args.recipe, tinfoil) - if not rd: - return 1 - - return _kernel_add_fragments(args.destlayer, rd, args.fragments) - - -def _kernel_add_fragments(destlayer, rd, fragments, files=None, extralines=None): - depends = rd.getVar('DEPENDS', True).split() - md_depends = (rd.getVarFlag('do_kernel_metadata', 'depends', True) or '').split() - depends.extend(dep.split(':', 1)[0] for dep in md_depends) - - if extralines is None: - extralines = [] - - if 'DELTA_KERNEL_DEFCONFIG' in rd: - # linux-qoriq handles fragments itself - extralines.append('DELTA_KERNEL_DEFCONFIG += {0}'.format(' '.join('${WORKDIR}/%s' % os.path.basename(f) for f in fragments))) - else: - if 'kern-tools-native' not in depends: - logger.warn("kern-tools-native not found in the kernel's dependencies. This likely means that this kernel recipe ({0}) does not support configuration fragments.".format(rd.getVar('PN', True))) - - if files is None: - files = dict((f, os.path.basename(f)) for f in fragments) - return append_srcfiles(destlayer, rd, files, use_workdir=True, use_machine=True, extralines=extralines) - - -def get_next_fragment_name(src_uri): - fragpat = re.compile('file://recipetool([0-9]+)\.cfg$') - matches = list(filter(None, [re.match(fragpat, u) for u in src_uri])) - if matches: - fragnums = sorted((int(m.group(1)) for m in matches), reverse=True) - num = fragnums[0] + 1 - else: - num = 0 - return 'recipetool%d' % num - - -def kernel_set_configs(args): - rd = _parse_recipe(args.recipe, tinfoil) - if not rd: - return 1 - - if not args.name: - src_uri = rd.getVar('SRC_URI', True).split() - args.name = get_next_fragment_name(src_uri) - - import tempfile - f = tempfile.NamedTemporaryFile(mode='w', delete=False) - try: - for cfgline in args.config_lines: - f.write(cfgline + '\n') - finally: - f.close() - - fragfn = '{0}.cfg'.format(args.name) - try: - return _kernel_add_fragments(args.destlayer, rd, fragfn, files={f.name: fragfn}) - finally: - os.unlink(f.name) - - -def layer(layerpath): - if not os.path.exists(os.path.join(layerpath, 'conf', 'layer.conf')): - raise argparse.ArgumentTypeError('{0!r} must be a path to a valid layer'.format(layerpath)) - return layerpath - - -def existing_path(filepath): - if not os.path.exists(filepath): - raise argparse.ArgumentTypeError('{0!r} must be an existing path'.format(filepath)) - return filepath - - -def register_command(subparsers): - common = argparse.ArgumentParser(add_help=False) - common.add_argument('-r', '--recipe', help='Specify the kernel recipe to operate against (default: virtual/kernel)', default='virtual/kernel') - - parser = subparsers.add_parser('kernel_set_defconfig', help='Override the defconfig used for the kernel.', parents=[common]) - parser.add_argument('destlayer', metavar='DESTLAYER', help='Base directory of the destination layer to write the bbappend to', type=layer) - parser.add_argument('defconfig', metavar='DEFCONFIG', help='File path to the defconfig to be used', type=existing_path) - parser.set_defaults(func=kernel_set_defconfig, parserecipes=True) - - parser = subparsers.add_parser('kernel_add_dts', help='Add/replace device tree files in the kernel.', parents=[common]) - parser.add_argument('destlayer', metavar='DESTLAYER', help='Base directory of the destination layer to write the bbappend to', type=layer) - parser.add_argument('dts_files', metavar='DTS_FILE', nargs='+', help='File path to a .dts', type=existing_path) - parser.set_defaults(func=kernel_add_dts, parserecipes=True) - - parser = subparsers.add_parser('kernel_add_fragments', help='Add configuration fragments to the kernel.', parents=[common]) - parser.add_argument('destlayer', metavar='DESTLAYER', help='Base directory of the destination layer to write the bbappend to', type=layer) - parser.add_argument('fragments', metavar='FRAGMENT', nargs='+', help='File path to a configuration fragment (.cfg)', type=existing_path) - parser.set_defaults(func=kernel_add_fragments, parserecipes=True) - - parser = subparsers.add_parser('kernel_set_configs', help='Set kernel configuration parameters. Generates and includes kernel config fragments for you.', parents=[common]) - parser.add_argument('-n', '--name', metavar='NAME', help='Name of the fragment to be generated (without .cfg)') - parser.add_argument('destlayer', metavar='DESTLAYER', help='Base directory of the destination layer to write the bbappend to', type=layer) - parser.add_argument('config_lines', metavar='CONFIG_LINE', nargs='+', help='Kernel configuration line (e.g. CONFIG_FOO=y)') - parser.set_defaults(func=kernel_set_configs, parserecipes=True) diff --git a/meta-mel/mel-support/recipes-core/meta/archive-release.bbappend b/meta-mel/mel-support/recipes-core/meta/archive-release.bbappend deleted file mode 100644 index f94b2de7..00000000 --- a/meta-mel/mel-support/recipes-core/meta/archive-release.bbappend +++ /dev/null @@ -1,463 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -FILESEXTRAPATHS:append = ":${@':'.join('%s/../scripts/release:%s/../scripts' % (l, l) for l in '${BBPATH}'.split(':'))}" -MEL_SCRIPTS_FILES = "mel-checkout version-sort setup-mel setup-workspace setup-ubuntu setup-rh setup-debian" -SRC_URI += "${@' '.join(uninative_urls(d)) if 'mel_downloads' in '${RELEASE_ARTIFACTS}'.split() else ''}" -SRC_URI += "${@' '.join('file://%s' % s for s in d.getVar('MEL_SCRIPTS_FILES').split())}" - -inherit layerdirs - -ARCHIVE_RELEASE_VERSION ?= "${DISTRO_VERSION}" -SCRIPTS_VERSION ?= "1" -MANIFEST_NAME ?= "${DISTRO}-${ARCHIVE_RELEASE_VERSION}-${MACHINE}" -EXTRA_MANIFEST_NAME ?= "${DISTRO}-${ARCHIVE_RELEASE_VERSION}" -SCRIPTS_ARTIFACT_NAME ?= "${DISTRO}-scripts-${DISTRO_VERSION}.${SCRIPTS_VERSION}" -BSPFILES_INSTALL_PATH = "${MACHINE}/${ARCHIVE_RELEASE_VERSION}" -GET_REMOTES_HOOK ?= "" - -# Layers which get their own extra manifests, rather than being included in -# the main one. How they're combined or shipped from there is up to our -# release scripts. -INDIVIDUAL_MANIFEST_LAYERS ?= "" -FORKED_REPOS ?= "" -PUBLIC_REPOS ?= "${FORKED_REPOS}" - -# Define a location for placing external artifacts to be used by the build -MEL_EXTERNAL_ARTIFACTS ?= "${TOPDIR}/mel-external-artifacts" - -RELEASE_EXCLUDED_LAYERNAMES ?= "workspacelayer" - -ARCHIVE_RELEASE_DL_DIR ?= "${DL_DIR}" -ARCHIVE_RELEASE_DL_BY_LAYER_PATH = '${TMPDIR}/downloads-by-layer.txt' - -def mel_get_remotes(subdir, d): - """Any non-public github repo or url including a mentor domain - are considered private, so no remote is included. - """ - try: - url = bb.process.run(['git', 'config', 'remote.origin.url'], cwd=subdir)[0].rstrip() - except bb.process.ExecutionError: - return None - else: - if not url: - return None - - remotes = {} - test_url = url.replace('.git', '') - public_repos = d.getVar('PUBLIC_REPOS').split() - if 'MentorEmbedded' in test_url: - if not any(test_url.endswith('/' + i) for i in public_repos): - # Private github repo - return None - else: - # For the public layers, we want the user to be able to fetch - # anonymously, not just with ssh - url = url.replace('ssh://git@', 'https://') - - forked_repos = d.getVar('FORKED_REPOS').split() - for f in forked_repos: - if test_url.endswith('/' + f): - upstream = d.getVar('UPSTREAM_URL_%s' % f) - if upstream: - remotes['upstream'] = upstream - break - elif 'mentor.com' in test_url or 'mentorg.com' in test_url: - # Internal repo - return None - - remotes['origin'] = url - return remotes - -GET_REMOTES_HOOK:mel ?= "mel_get_remotes" - -GIT_ROOT_TOO_FAR_PATHS = "${OEDIR} ${TOPDIR} ${HOME}" - -def layer_git_root(subdir, too_far_paths): - try: - git_root = bb.process.run(['git', 'rev-parse', '--show-toplevel'], cwd=subdir)[0].rstrip() - except bb.process.CmdError: - return None - - too_far_under_root = any(too_far_path.startswith(git_root + os.sep) for too_far_path in too_far_paths) - if git_root in too_far_paths or too_far_under_root: - return None - - return git_root - -def get_release_info(layerdir, layername, topdir, oedir, too_far_paths, indiv_only=None, indiv_only_toplevel=None, indiv_manifests=None): - import collections - import fnmatch - - if indiv_only is None: - indiv_only = set() - if indiv_only_toplevel is None: - indiv_only_toplevel = set() - if indiv_manifests is None: - indiv_manifests = [] - - relpath = None - if layerdir not in indiv_only: - git_root = layer_git_root(layerdir, too_far_paths) - if git_root: - return git_root, os.path.basename(git_root), False - - if layername and any(fnmatch.fnmatchcase(layername, pat) for pat in indiv_manifests): - indiv_layer = True - else: - indiv_layer = False - - if (layerdir not in indiv_only_toplevel and - not layerdir.startswith(topdir + os.sep) and - layerdir.startswith(oedir + os.sep)): - return layerdir, os.path.relpath(layerdir, oedir), indiv_layer - else: - return layerdir, os.path.basename(layerdir), indiv_layer - -python do_archive_mel_layers () { - """Archive the layers used to build, as git pack files, with a manifest.""" - import collections - import configparser - import oe.reproducible - - if 'layerdirs' not in d.getVar('INHERIT').split(): - save_layerdirs(d) - - directories = d.getVar('BBLAYERS').split() - bitbake_path = bb.utils.which(d.getVar('PATH'), 'bitbake') - bitbake_bindir = os.path.dirname(bitbake_path) - directories.append(os.path.dirname(bitbake_bindir)) - - corebase = os.path.realpath(d.getVar('COREBASE')) - oedir = os.path.dirname(corebase) - topdir = os.path.realpath(d.getVar('TOPDIR')) - indiv_only_toplevel = d.getVar('SUBLAYERS_INDIVIDUAL_ONLY_TOPLEVEL').split() - indiv_only = d.getVar('SUBLAYERS_INDIVIDUAL_ONLY').split() + indiv_only_toplevel - indiv_manifests = d.getVar('INDIVIDUAL_MANIFEST_LAYERS').split() - excluded_layers = d.getVar('RELEASE_EXCLUDED_LAYERNAMES').split() - too_far_paths = d.getVar('GIT_ROOT_TOO_FAR_PATHS').split() - get_remotes_hook = d.getVar('GET_REMOTES_HOOK') - if get_remotes_hook: - get_remotes = bb.utils.get_context().get(get_remotes_hook) - if not get_remotes: - bb.fatal('Hook function specified in GET_REMOTES_HOOK (`%s`) does not exist' % get_remotes_hook) - else: - get_remotes = None - - layernames = {} - for layername in d.getVar('BBFILE_COLLECTIONS').split(): - layerdir = d.getVar('LAYERDIR_%s' % layername) - if layerdir: - layernames[layerdir] = layername - - git_indivs = collections.defaultdict(set) - to_archive, indiv_manifest_dirs = set(), set() - path = d.getVar('PATH') + ':' + ':'.join(os.path.join(l, '..', 'scripts') for l in directories) - for subdir in directories: - subdir = os.path.realpath(subdir) - layername = layernames.get(subdir) - if layername in excluded_layers: - bb.note('Skipping excluded layer %s' % layername) - continue - - parent = os.path.dirname(subdir) - git_root = layer_git_root(subdir, too_far_paths) - if subdir in indiv_only and git_root: - git_indivs[git_root].add(os.path.relpath(subdir, git_root)) - if layername and any(fnmatch.fnmatchcase(layername, pat) for pat in indiv_manifests): - indiv_manifest_dirs.add(subdir) - else: - archive_path, dest_path, is_indiv = get_release_info(subdir, layername, topdir, oedir, too_far_paths, indiv_only=indiv_only, indiv_only_toplevel=indiv_only_toplevel, indiv_manifests=indiv_manifests) - to_archive.add((archive_path, dest_path, None)) - if is_indiv: - indiv_manifest_dirs.add(subdir) - - for parent, keep_files in git_indivs.items(): - to_archive.add((parent, os.path.basename(parent), tuple(keep_files))) - - outdir = d.expand('${S}/do_archive_mel_layers') - mandir = os.path.join(outdir, 'manifests') - bb.utils.mkdirhier(mandir) - bb.utils.mkdirhier(os.path.join(mandir, 'extra')) - objdir = os.path.join(outdir, 'git-bundles') - bb.utils.mkdirhier(objdir) - manifestfn = d.expand('%s/${MANIFEST_NAME}.manifest' % mandir) - manifests = [manifestfn] - message = '%s %s' % (d.getVar('DISTRO_NAME') or d.getVar('DISTRO'), d.getVar('DISTRO_VERSION')) - - l = d.createCopy() - l.setVar('SRC_URI', 'git://') - l.setVar('WORKDIR', '/invalid') - - manifestdata = collections.defaultdict(list) - for subdir, path, keep_paths in sorted(to_archive): - parent = None - if os.path.exists(os.path.join(subdir, '.git')): - parent = subdir - else: - try: - git_topdir = bb.process.run(['git', 'rev-parse', '--show-toplevel'], cwd=subdir)[0].rstrip() - except bb.process.CmdError: - pass - else: - if git_topdir != subdir: - subdir_relpath = os.path.relpath(subdir, git_topdir) - try: - ls = bb.process.run(['git', 'ls-tree', '-d', 'HEAD', subdir_relpath], cwd=subdir) - except bb.process.CmdError as exc: - pass - else: - if ls: - parent = git_topdir - - if not parent: - bb.fatal('Unable to archive non-git directory: %s' % subdir) - - l.setVar('S', subdir) - source_date_epoch = oe.reproducible.get_source_date_epoch(l, parent or subdir) - - if get_remotes: - remotes = get_remotes(subdir, d) or {} - else: - remotes = {} - pack_base, head = git_archive(subdir, objdir, message, keep_paths, remotes) - - if not remotes: - bb.note('Skipping remotes for %s' % path) - - head = git_archive(subdir, objdir, parent, message, keep_paths, source_date_epoch, is_public=bool(remotes)) - - if subdir in indiv_manifest_dirs: - name = path.replace('/', '_') - bb.utils.mkdirhier(os.path.join(mandir, 'extra', name)) - fn = d.expand('%s/extra/%s/${EXTRA_MANIFEST_NAME}-%s.manifest' % (mandir, name, name)) - else: - fn = manifestfn - manifestdata[fn].append('\t'.join([path, head] + ['%s=%s' % (k,v) for k,v in remotes.items()]) + '\n') - bb.process.run(['tar', '-cf', '%s.tar' % head, 'git-bundles/%s.bundle' % head], cwd=outdir) - os.unlink(os.path.join(objdir, '%s.bundle' % head)) - - os.rmdir(objdir) - - infofn = d.expand('%s/${MANIFEST_NAME}.info' % mandir) - with open(infofn, 'w') as infofile: - c = configparser.ConfigParser() - c['DEFAULT'] = {'bspfiles_path': d.getVar('BSPFILES_INSTALL_PATH')} - c.write(infofile) - - for fn, lines in manifestdata.items(): - with open(fn, 'w') as manifest: - manifest.writelines(lines) - files = [os.path.relpath(fn, outdir)] - if fn == manifestfn: - files.append(os.path.relpath(infofn, outdir)) - bb.process.run(['tar', '-cf', os.path.basename(fn) + '.tar'] + files, cwd=outdir) - - scripts = d.getVar('MEL_SCRIPTS_FILES').split() - bb.process.run(['tar', '--transform=s,^,scripts/,', '--transform=s,^scripts/setup-mel,setup-mel,', '-cvf', d.expand('%s/${SCRIPTS_ARTIFACT_NAME}.tar' % outdir)] + scripts, cwd=d.getVar('WORKDIR')) -} -do_archive_mel_layers[dirs] = "${S}/do_archive_mel_layers ${S}" -do_archive_mel_layers[vardeps] += "${GET_REMOTES_HOOK}" -# We make use of the distro version, so want to avoid changing checksum issues -# for snapshot builds. -do_archive_mel_layers[vardepsexclude] += "DATE TIME" -addtask archive_mel_layers after do_patch - -def git_archive(subdir, outdir, parent, message=None, keep_paths=None, source_date_epoch=None, is_public=False): - """Create an archive for the specified subdir, holding a single git object - - 1. Clone or create the repo to a temporary location - 2. Filter out paths not in keep_paths, if set - 3. Make the repo shallow - 4. Repack the repo into a single git pack - 5. Copy the pack files to outdir - """ - import glob - import tempfile - - parent_git = os.path.join(parent, bb.process.run(['git', 'rev-parse', '--git-dir'], cwd=subdir)[0].rstrip()) - # Handle git worktrees - _commondir = os.path.join(parent_git, 'commondir') - if os.path.exists(_commondir): - with open(_commondir, 'r') as f: - parent_git = os.path.join(parent_git, f.read().rstrip()) - - parent_head = bb.process.run(['git', 'rev-parse', 'HEAD'], cwd=subdir)[0].rstrip() - - with tempfile.TemporaryDirectory() as tmpdir: - gitcmd = ['git', '--git-dir', tmpdir, '--work-tree', subdir] - bb.process.run(gitcmd + ['init']) - - with open(os.path.join(tmpdir, 'objects', 'info', 'alternates'), 'w') as f: - f.write(os.path.join(parent_git, 'objects') + '\n') - - if is_public and not keep_paths: - head = parent_head - else: - bb.process.run(gitcmd + ['read-tree', parent_head]) - - if message is None: - message = 'Release of %s' % os.path.basename(subdir) - commitcmd = ['commit-tree', '-m', message] - commitcmd.extend(['-p', parent_head]) - - bb.process.run(gitcmd + ['add', '-A', '.'], cwd=subdir) - if keep_paths: - files = bb.process.run(gitcmd + ['ls-tree', '-r', '--name-only', parent_head])[0].splitlines() - kill_files = [f for f in files if f not in keep_paths and not any(f.startswith(p + '/') for p in keep_paths)] - keep_files = set(files) - set(kill_files) - if not keep_files: - bb.fatal('No files kept for %s' % parent) - - bb.process.run(gitcmd + ['update-index', '--force-remove', '--'] + kill_files, cwd=subdir) - - tree = bb.process.run(gitcmd + ['write-tree'])[0].rstrip() - commitcmd.append(tree) - - env = { - 'GIT_AUTHOR_NAME': 'Build User', - 'GIT_AUTHOR_EMAIL': 'build_user@build_host', - 'GIT_COMMITTER_NAME': 'Build User', - 'GIT_COMMITTER_EMAIL': 'build_user@build_host', - } - if source_date_epoch: - env['GIT_AUTHOR_DATE'] = str(source_date_epoch) - env['GIT_COMMITTER_DATE'] = str(source_date_epoch) - - head = bb.process.run(gitcmd + commitcmd, env=env)[0].rstrip() - - if not is_public: - with open(os.path.join(tmpdir, 'shallow'), 'w') as f: - f.write(head + '\n') - - # We need a ref to ensure repack includes the new commit, as it - # does not include dangling objects in the pack. - bb.process.run(['git', 'update-ref', 'refs/packing', head], cwd=tmpdir) - bb.process.run(['git', 'prune', '--expire=now'], cwd=tmpdir) - bb.process.run(['git', 'repack', '-a', '-d'], cwd=tmpdir) - bb.process.run(['git', 'prune-packed'], cwd=tmpdir) - - bb.process.run(['git', 'bundle', 'create', os.path.join(outdir, '%s.bundle' % head), 'refs/packing'], cwd=tmpdir) - return head - -def checksummed_downloads(dl_by_layer_fn, dl_by_layer_dl_dir, dl_dir): - with open(dl_by_layer_fn, 'r') as f: - lines = f.readlines() - - for layer_name, dl_path in (l.rstrip('\n').split('\t', 1) for l in lines): - rel_path = os.path.relpath(dl_path, dl_by_layer_dl_dir) - if rel_path.startswith('..'): - bb.fatal('Download %s (in %s) is not relative to DL_DIR' % (dl_path, dl_by_layer_fn)) - - dl_path = os.path.join(dl_dir, rel_path) - if not os.path.exists(dl_path): - # download is missing, probably excluded for license reasons - bb.warn('Download %s does not exist, excluding' % dl_path) - continue - - checksum = chksum_dl(dl_path) - yield layer_name, dl_path, rel_path, checksum - -def uninative_downloads(workdir, dldir): - for path in oe.path.find(os.path.join(workdir, 'uninative')): - relpath = os.path.relpath(path, workdir) - dlpath = os.path.join(dldir, relpath) - checksum = chksum_dl(path, dlpath) - yield None, path, relpath, checksum - -def chksum_dl(path, dlpath=None): - import pickle - - if dlpath is None: - dlpath = path - - donefile = dlpath + '.done' - checksum = None - if os.path.exists(donefile): - with open(donefile, 'rb') as cachefile: - try: - checksums = pickle.load(cachefile) - except EOFError: - pass - else: - checksum = checksums['sha256'] - - if not checksum: - checksum = bb.utils.sha256_file(path) - - return checksum - -python do_archive_mel_downloads () { - import collections - import pickle - import oe.path - - dl_dir = d.getVar('DL_DIR') - archive_dl_dir = d.getVar('ARCHIVE_RELEASE_DL_DIR') or dl_dir - dl_by_layer_fn = d.getVar('ARCHIVE_RELEASE_DL_BY_LAYER_PATH') - if not os.path.exists(dl_by_layer_fn): - bb.fatal('%s does not exist, but mel_downloads requires it. Please run `bitbake-layers dump-downloads` with appropriate arguments.' % dl_by_layer_fn) - - downloads = list(checksummed_downloads(dl_by_layer_fn, dl_dir, archive_dl_dir)) - downloads.extend(sorted(uninative_downloads(d.getVar('WORKDIR'), d.getVar('DL_DIR')))) - outdir = d.expand('${S}/do_archive_mel_downloads') - mandir = os.path.join(outdir, 'manifests') - dldir = os.path.join(outdir, 'downloads') - bb.utils.mkdirhier(mandir) - bb.utils.mkdirhier(os.path.join(mandir, 'extra')) - bb.utils.mkdirhier(dldir) - - layer_manifests = {} - corebase = os.path.realpath(d.getVar('COREBASE')) - oedir = os.path.dirname(corebase) - topdir = os.path.realpath(d.getVar('TOPDIR')) - indiv_only_toplevel = d.getVar('SUBLAYERS_INDIVIDUAL_ONLY_TOPLEVEL').split() - indiv_only = d.getVar('SUBLAYERS_INDIVIDUAL_ONLY').split() + indiv_only_toplevel - indiv_manifests = d.getVar('INDIVIDUAL_MANIFEST_LAYERS').split() - too_far_paths = d.getVar('GIT_ROOT_TOO_FAR_PATHS').split() - - layers = set(i[0] for i in downloads) - for layername in layers: - if not layername: - continue - - layerdir = d.getVar('LAYERDIR_%s' % layername) - archive_path, dest_path, is_indiv = get_release_info(layerdir, layername, topdir, oedir, too_far_paths, indiv_only=indiv_only, indiv_only_toplevel=indiv_only_toplevel, indiv_manifests=indiv_manifests) - if is_indiv: - extra_name = dest_path.replace('/', '_') - bb.utils.mkdirhier(os.path.join(mandir, 'extra', extra_name)) - manifestfn = d.expand('%s/extra/%s/${EXTRA_MANIFEST_NAME}-%s.downloads' % (mandir, extra_name, extra_name)) - layer_manifests[layername] = manifestfn - - main_manifest = d.expand('%s/${MANIFEST_NAME}.downloads' % mandir) - manifests = collections.defaultdict(list) - for layername, path, dest_path, checksum in downloads: - manifestfn = layer_manifests.get(layername) or main_manifest - manifests[manifestfn].append((layername, path, dest_path, checksum)) - - for manifest, manifest_downloads in manifests.items(): - with open(manifest, 'w') as f: - for _, _, download_path, checksum in manifest_downloads: - f.write('%s\t%s\n' % (download_path, checksum)) - - bb.process.run(['tar', '-cf', os.path.basename(manifest) + '.tar', os.path.relpath(manifest, outdir)], cwd=outdir) - - for name, path, dest_path, checksum in manifest_downloads: - dest = os.path.join(dldir, checksum) - oe.path.symlink(path, dest, force=True) - bb.process.run(['tar', '-chf', '%s/download-%s.tar' % (dldir, checksum), os.path.relpath(dest, outdir)], cwd=outdir) - os.unlink(dest) -} -do_archive_mel_downloads[depends] += "${@'${RELEASE_IMAGE}:${FETCHALL_TASK}' if '${RELEASE_IMAGE}' else ''}" - -archive_uninative_downloads () { - # Ensure that uninative downloads are in ARCHIVE_RELEASE_DL_DIR, since - # they're listed in the manifest - find uninative -type f | while read -r fn; do - mkdir -p "${ARCHIVE_RELEASE_DL_DIR}/$(dirname "$fn")" - ln -sf "${DL_DIR}/$fn" "${ARCHIVE_RELEASE_DL_DIR}/$fn" - done -} -archive_uninative_downloads[dirs] = "${WORKDIR}" -do_archive_mel_downloads[prefuncs] += "archive_uninative_downloads" diff --git a/meta-mel/meta-python/recipes-devtools/python/python3-unidiff_%.bbappend b/meta-mel/meta-python/recipes-devtools/python/python3-unidiff_%.bbappend deleted file mode 100644 index 7c4e9f67..00000000 --- a/meta-mel/meta-python/recipes-devtools/python/python3-unidiff_%.bbappend +++ /dev/null @@ -1,5 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -BBCLASSEXTEND += "native" diff --git a/meta-mel/openembedded-layer/recipes-connectivity/libwebsockets/libwebsockets_4.2.2.bbappend b/meta-mel/openembedded-layer/recipes-connectivity/libwebsockets/libwebsockets_4.2.2.bbappend deleted file mode 100644 index 7742468a..00000000 --- a/meta-mel/openembedded-layer/recipes-connectivity/libwebsockets/libwebsockets_4.2.2.bbappend +++ /dev/null @@ -1,2 +0,0 @@ -SRCREV:mel = "7e4482075d30bd276c66b9f8daa1f9b8871c8743" -SRC_URI:mel = "git://github.com/MentorEmbedded/libwebsockets.git;protocol=https;branch=v4.2-stable" diff --git a/meta-mel/openembedded-layer/recipes-core/initrdscripts/dmcrypt-initramfs-init.bb b/meta-mel/openembedded-layer/recipes-core/initrdscripts/dmcrypt-initramfs-init.bb deleted file mode 100644 index 05b3970e..00000000 --- a/meta-mel/openembedded-layer/recipes-core/initrdscripts/dmcrypt-initramfs-init.bb +++ /dev/null @@ -1,30 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -SUMMARY = "MEL DM-Crypt Image initramfs init" -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" - -DEPENDS = "virtual/kernel" -RDEPENDS:${PN} += "cryptsetup" -RDEPENDS:${PN} += "lvm2" -RDEPENDS:${PN} += "lvm2-udevrules" -RDEPENDS:${PN} += "udev" - -PR = "r0" - -SRC_URI = "file://init.sh" - -S = "${WORKDIR}" - -do_install() { - install -m 0755 ${WORKDIR}/init.sh ${D}/init - install -d ${D}/dev - mknod -m 622 ${D}/dev/console c 5 1 -} - -FILES:${PN} += "/init /dev" - -# Due to kernel dependency -PACKAGE_ARCH = "${MACHINE_ARCH}" diff --git a/meta-mel/openembedded-layer/recipes-core/initrdscripts/dmcrypt-initramfs-init/init.sh b/meta-mel/openembedded-layer/recipes-core/initrdscripts/dmcrypt-initramfs-init/init.sh deleted file mode 100644 index 1807ec7b..00000000 --- a/meta-mel/openembedded-layer/recipes-core/initrdscripts/dmcrypt-initramfs-init/init.sh +++ /dev/null @@ -1,196 +0,0 @@ -#!/bin/sh - -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -PATH=/sbin:/bin:/usr/sbin:/usr/bin -CONSOLE="/dev/console" - -TARGET_ROOT_MOUNT="/target_rootfs" - -# LUKS-enabled devices -TARGET_ROOTFS_NAME="rootfs" -TARGET_LOGFS_NAME="logfs" -TARGET_ROOTFS_DEVICE="/dev/mapper/${TARGET_ROOTFS_NAME}" - -LOG_FILE="${TARGET_BOOT_MOUNT}/boot.log" - -# log <error-level> <msg> -function log { - if [ "$#" -ne "2" ]; then - echo "${FUNCNAME} <error-level> <msg>" - fi - - local level="$1"; - local msg="$2"; - - date=`date`; - - if [ -n "${SYSTEMD_ENV}" ] && [ "${SYSTEMD_ENV}" -eq "1" ]; then - echo -e "${level} ${msg}" - else - echo -e "# ${date} ${level} ${msg}" - fi - - echo "# ${date} ${level} ${msg}" >> ${LOG_FILE} - - if [ "${level}" == "error" ]; then - local frame=0 - local stacktrace=""; - - while true; do - stacktrace+=`caller $frame` - if [ "$?" -ne 0 ]; then - break - fi - - _ret=$? - stacktrace+=$'\n' - ((frame++)); - done - - stacktrace=`echo ${stacktrace} |cut -f1-2 -d' ' |tr ' ' ':'` - - echo "Stacktrace: " - echo "${stacktrace}" - echo "Stacktrace: " >> ${LOG_FILE} - echo "${stacktrace}" >> ${LOG_FILE} - fi; -} - -udev_daemon() { - OPTIONS="/sbin/udev/udevd /sbin/udevd /lib/udev/udevd /lib/systemd/systemd-udevd" - - for o in $OPTIONS; do - if [ -x "$o" ]; then - echo $o - return 0 - fi - done - - return 1 -} - -_UDEV_DAEMON=`udev_daemon` - - -early_setup() { - mkdir -p /proc - mkdir -p /sys - mount -t proc proc /proc - mount -t sysfs sysfs /sys - mount -n -o mode=0755 -t devtmpfs none /dev - - - mkdir -p /run - mkdir -p /var/run - $_UDEV_DAEMON --daemon - udevadm trigger --action=add - udevadm settle --timeout=3 - return 0 -} - -read_args() { - for arg in $CMDLINE; do - optarg=`expr "x$arg" : 'x[^=]*=\(.*\)'` - case $arg in - LABEL=*) - label=$optarg - ;; - ROOT_PART=*) - ROOT_PART=$optarg - ;; - esac - done -} - -do_boot() { - echo "Boot procedure ..." - - if [ -z "${ROOT_PART}" ]; then - log "error" "ROOT_PART not set" - return 1 - fi - - # rootfs - sleep 4s - echo -ne "\n\n Open Encrypted root filesystem...\n" - cmd="cryptsetup -v open ${ROOT_PART} ${TARGET_ROOTFS_NAME}" - output=`eval ${cmd}` - ret=$? - if [ ${ret} -ne 0 ]; then - log "error" "failed to open LUKS device ${ROOT_PART} as ${TARGET_ROOTFS_NAME}" - log "error" "${cmd} (${ret}): ${output}" - return 1 - fi; - - # TODO check filesystems - - # Watches the udev event queue, and exits if all current events are handled - udevadm settle --timeout=3 - killall "${_UDEV_DAEMON##*/}" 2>/dev/null - - cmd="mkdir -p ${TARGET_ROOT_MOUNT}" - output=`eval ${cmd}` - ret=$? - if [ ${ret} -ne 0 ]; then - log "error" "${cmd} (${ret}): ${output}" - return 1 - fi; - - cmd="mount -t ext4 ${TARGET_ROOTFS_DEVICE} ${TARGET_ROOT_MOUNT}" - output=`eval ${cmd}` - ret=$? - if [ ${ret} -ne 0 ]; then - log "error" "${cmd} (${ret}): ${output}" - return 1 - fi; - - cd ${TARGET_ROOT_MOUNT} - exec switch_root ${TARGET_ROOT_MOUNT} /sbin/init $CMDLINE -} - -do_console() { - echo "Starting console ..." - - # get name of active terminal - CONSOLE=`cat /sys/devices/virtual/tty/console/active | cut -d " " -f2` - - # run shell on active terminal - setsid sh -c "exec sh </dev/$CONSOLE >/dev/$CONSOLE 2>&1" -} - -# Main - -early_setup -if [ "$?" -ne "0" ]; then - log "error" "early_setup failed" - do_console -fi; - -if [ $# -ne 0 ]; then - CMDLINE="$@" -else - CMDLINE=`cat /proc/cmdline` -fi; - -read_args -case $label in - boot) - do_boot - if [ "$?" -ne "0" ]; then - log "error" "boot failed, rebooting in 10 sec" - sleep 10 - reboot -f - fi; - ;; - - console) - do_console - ;; - *) - echo "Unrecognized option ${label}" - ;; - -esac diff --git a/meta-mel/openembedded-layer/recipes-support/lvm2/lvm2/lvm2-mel.service b/meta-mel/openembedded-layer/recipes-support/lvm2/lvm2/lvm2-mel.service deleted file mode 100644 index 3977aa09..00000000 --- a/meta-mel/openembedded-layer/recipes-support/lvm2/lvm2/lvm2-mel.service +++ /dev/null @@ -1,15 +0,0 @@ -[Unit] -Description=Linux Volume Manager -DefaultDependencies=no -Before=fsck-root.service local-fs.target -After=udev.service - -[Service] -Type=oneshot -RemainAfterExit=yes -ExecStart=/usr/sbin/vgmknodes --refresh -ExecStop=/usr/sbin/pvchange -an -ExecStop=/usr/sbin/vgchange -an - -[Install] -WantedBy=sysinit.target diff --git a/meta-mel/openembedded-layer/recipes-support/lvm2/lvm2_%.bbappend b/meta-mel/openembedded-layer/recipes-support/lvm2/lvm2_%.bbappend deleted file mode 100644 index 1505103d..00000000 --- a/meta-mel/openembedded-layer/recipes-support/lvm2/lvm2_%.bbappend +++ /dev/null @@ -1,19 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" - -SRC_URI:append = " file://lvm2-mel.service" - -PACKAGES += "${PN}-mel" -SYSTEMD_PACKAGES += "${PN}-mel" -SYSTEMD_SERVICE:${PN}-mel = "lvm2-mel.service" -SYSTEMD_AUTO_ENABLE:${PN}-mel = "enable" -RDEPENDS:${PN} += "${PN}-mel" - -do_install:append() { - if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then - install -m 0644 ${WORKDIR}/${SYSTEMD_SERVICE:${PN}-mel} ${D}${systemd_system_unitdir}/ - fi -} diff --git a/meta-mel/recipes-connectivity/connman/connman_%.bbappend b/meta-mel/recipes-connectivity/connman/connman_%.bbappend deleted file mode 100644 index aabe2b72..00000000 --- a/meta-mel/recipes-connectivity/connman/connman_%.bbappend +++ /dev/null @@ -1,9 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -# do not use connman as a DNS proxy because both dnsmasq and connman try to -# bind to same port 53. -do_install:append:mel () { - sed -i '/^ExecStart=/ s@-n@--nodnsproxy -n@g' ${D}${systemd_unitdir}/system/connman.service -} diff --git a/meta-mel/recipes-core/base-files/base-files_3.0.14.bbappend b/meta-mel/recipes-core/base-files/base-files_3.0.14.bbappend deleted file mode 100644 index 67e358bd..00000000 --- a/meta-mel/recipes-core/base-files/base-files_3.0.14.bbappend +++ /dev/null @@ -1,10 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -FILESEXTRAPATHS:prepend := "${THISDIR}:" - -dirs755:append:mel = "\ - ${sysconfdir}/alternatives \ - ${localstatedir}/lib/alternatives \ -" diff --git a/meta-mel/recipes-core/base-files/mel/issue b/meta-mel/recipes-core/base-files/mel/issue deleted file mode 100644 index 568cdd1e..00000000 --- a/meta-mel/recipes-core/base-files/mel/issue +++ /dev/null @@ -1,2 +0,0 @@ -\n \l - diff --git a/meta-mel/recipes-core/base-files/mel/issue.net b/meta-mel/recipes-core/base-files/mel/issue.net deleted file mode 100644 index c0f4fd41..00000000 --- a/meta-mel/recipes-core/base-files/mel/issue.net +++ /dev/null @@ -1,2 +0,0 @@ -%h - diff --git a/meta-mel/recipes-core/busybox/busybox/beagleboard/hwclock-default b/meta-mel/recipes-core/busybox/busybox/beagleboard/hwclock-default deleted file mode 100644 index 94ff4e85..00000000 --- a/meta-mel/recipes-core/busybox/busybox/beagleboard/hwclock-default +++ /dev/null @@ -1,2 +0,0 @@ -# Can we use hwclock on this system? -HWCLOCKACCESS=no diff --git a/meta-mel/recipes-core/busybox/busybox/fancy-head.cfg b/meta-mel/recipes-core/busybox/busybox/fancy-head.cfg deleted file mode 100644 index 16017ea4..00000000 --- a/meta-mel/recipes-core/busybox/busybox/fancy-head.cfg +++ /dev/null @@ -1 +0,0 @@ -CONFIG_FEATURE_FANCY_HEAD=y diff --git a/meta-mel/recipes-core/busybox/busybox/pidof.cfg b/meta-mel/recipes-core/busybox/busybox/pidof.cfg deleted file mode 100644 index a33483c8..00000000 --- a/meta-mel/recipes-core/busybox/busybox/pidof.cfg +++ /dev/null @@ -1,2 +0,0 @@ -CONFIG_FEATURE_PIDOF_SINGLE=y -CONFIG_FEATURE_PIDOF_OMIT=y diff --git a/meta-mel/recipes-core/busybox/busybox/setsid.cfg b/meta-mel/recipes-core/busybox/busybox/setsid.cfg deleted file mode 100644 index 5f1e1c98..00000000 --- a/meta-mel/recipes-core/busybox/busybox/setsid.cfg +++ /dev/null @@ -1 +0,0 @@ -CONFIG_SETSID=y diff --git a/meta-mel/recipes-core/busybox/busybox/top.cfg b/meta-mel/recipes-core/busybox/busybox/top.cfg deleted file mode 100644 index 625cb612..00000000 --- a/meta-mel/recipes-core/busybox/busybox/top.cfg +++ /dev/null @@ -1,5 +0,0 @@ -CONFIG_FEATURE_TOP_INTERACTIVE=y -CONFIG_FEATURE_TOP_SMP_CPU=y -CONFIG_FEATURE_TOP_DECIMALS=y -CONFIG_FEATURE_TOP_SMP_PROCESS=y -CONFIG_FEATURE_TOPMEM=y diff --git a/meta-mel/recipes-core/busybox/busybox_%.bbappend b/meta-mel/recipes-core/busybox/busybox_%.bbappend deleted file mode 100644 index a6c14879..00000000 --- a/meta-mel/recipes-core/busybox/busybox_%.bbappend +++ /dev/null @@ -1,14 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -FILESEXTRAPATHS:prepend := "${THISDIR}/busybox:" - -# fancy-head.cfg is enabled so we have head -c, which we need for our tracing -# scripts with lttng -SRC_URI:append:mel = "\ - file://setsid.cfg \ - file://fancy-head.cfg \ - file://pidof.cfg \ - file://top.cfg \ -" diff --git a/meta-mel/recipes-core/images/console-image.bb b/meta-mel/recipes-core/images/console-image.bb deleted file mode 100644 index 09f07ab7..00000000 --- a/meta-mel/recipes-core/images/console-image.bb +++ /dev/null @@ -1,20 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -SUMMARY = "A console-only image that fully supports the target device \ -hardware." - -# We want a package manager in our basic console image -IMAGE_FEATURES += "package-management" - -# We want libgcc to always be available, even if nothing needs it, as its size -# is minimal, and it's often needed by third party (or QA) binaries -IMAGE_INSTALL:append:mel = " libgcc" - -LICENSE = "MIT" - -inherit core-image - -IMAGE_FEATURES .= "${@bb.utils.contains('COMBINED_FEATURES', 'alsa', ' tools-audio', '', d)}" -IMAGE_INSTALL += " quota connman" diff --git a/meta-mel/recipes-core/images/mel-initramfs-image.bb b/meta-mel/recipes-core/images/mel-initramfs-image.bb deleted file mode 100644 index d932f182..00000000 --- a/meta-mel/recipes-core/images/mel-initramfs-image.bb +++ /dev/null @@ -1,37 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -DESCRIPTION = "MEL Image initramfs" - -PACKAGE_INSTALL = "initramfs-framework-base ${VIRTUAL-RUNTIME_base-utils} initramfs-module-udev udev base-passwd ${ROOTFS_BOOTSTRAP_INSTALL}" - -# Do not pollute the initrd image with rootfs features -IMAGE_FEATURES = "" - -export IMAGE_BASENAME = "${MLPREFIX}mel-initramfs-image" -IMAGE_NAME_SUFFIX ?= "" -IMAGE_LINGUAS = "" - -LICENSE = "MIT" - -IMAGE_FSTYPES = "${INITRAMFS_FSTYPES}" -inherit core-image - -IMAGE_ROOTFS_SIZE = "8192" -IMAGE_ROOTFS_EXTRA_SPACE = "0" - -# We don't care about root password for login on initramfs images -IMAGE_QA_COMMANDS:remove = "image_check_zapped_root_password" - -BAD_RECOMMENDATIONS += "busybox-syslog" - -# We don't need selinux labels in initramfs -IMAGE_PREPROCESS_COMMAND:remove = "selinux_set_labels ;" - -COMPATIBLE_HOST:mel = "(arm|aarch64|i.86|x86_64).*-linux" - -# Take care of warnings due to dependency on noexec ${INITRAMFS_IMAGE}:do_image_complete's -# do_packagedata() in our initramfs image for now. The fix needs to come from oe-core image -# bbclass when available, after which this can be removed -deltask do_packagedata diff --git a/meta-mel/recipes-core/initrdscripts/files/init-boot.sh b/meta-mel/recipes-core/initrdscripts/files/init-boot.sh deleted file mode 100644 index afe04581..00000000 --- a/meta-mel/recipes-core/initrdscripts/files/init-boot.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/sh - -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -PATH=/sbin:/bin:/usr/sbin:/usr/bin - -mkdir -p /proc -mkdir -p /sys -mount -t proc proc /proc -mount -t sysfs sysfs /sys - -# mount devtmpfs -mount -n -o mode=0755 -t devtmpfs none "/dev" - -# get name of active terminal -CONSOLE=`cat /sys/devices/virtual/tty/console/active | cut -d " " -f2` - -# run shell on active terminal -setsid sh -c "exec sh </dev/$CONSOLE >/dev/$CONSOLE 2>&1" diff --git a/meta-mel/recipes-core/initrdscripts/initramfs-boot_1.0.bbappend b/meta-mel/recipes-core/initrdscripts/initramfs-boot_1.0.bbappend deleted file mode 100644 index bbaf9585..00000000 --- a/meta-mel/recipes-core/initrdscripts/initramfs-boot_1.0.bbappend +++ /dev/null @@ -1,5 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -FILESEXTRAPATHS:prepend:mel := "${THISDIR}/files:" diff --git a/meta-mel/recipes-core/initrdscripts/initramfs-framework/lvm b/meta-mel/recipes-core/initrdscripts/initramfs-framework/lvm deleted file mode 100644 index e7cace85..00000000 --- a/meta-mel/recipes-core/initrdscripts/initramfs-framework/lvm +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh - -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -lvm_enabled() { - if ! lvscan |grep -i -w "inactive" &>/dev/null;then - return 1 - fi - return 0 -} - -lvm_run() { - lvm pvscan --cache --activate ay - lvm vgscan --mknodes - udevadm trigger --action=add -} diff --git a/meta-mel/recipes-core/initrdscripts/initramfs-framework_%.bbappend b/meta-mel/recipes-core/initrdscripts/initramfs-framework_%.bbappend deleted file mode 100644 index fcc6cfc5..00000000 --- a/meta-mel/recipes-core/initrdscripts/initramfs-framework_%.bbappend +++ /dev/null @@ -1,8 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" - -RDEPENDS:initramfs-module-lvm += "lvm2" -RRECOMMENDS:${PN}-base += "initramfs-module-lvm" diff --git a/meta-mel/recipes-core/kbd/kbd_2.5.0.bbappend b/meta-mel/recipes-core/kbd/kbd_2.5.0.bbappend deleted file mode 100644 index 41760e45..00000000 --- a/meta-mel/recipes-core/kbd/kbd_2.5.0.bbappend +++ /dev/null @@ -1,13 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -SRC_URI:prepend:mel = "git://github.com/MentorEmbedded/kbd;branch=2.5;protocol=https " -SRC_URI:remove:mel := "${KERNELORG_MIRROR}/linux/utils/${BPN}/${BP}.tar.xz" -SRCREV:mel = "57b52a3f3cef3b6ba144c85fc62b3d3c8f83e4cf" -S:mel = "${WORKDIR}/git" - -DEPENDS:append:mel = " bison-native" - -# Don't exclude autopoint -EXTRA_AUTORECONF:mel = "" diff --git a/meta-mel/recipes-core/meta/meta-environment.bbappend b/meta-mel/recipes-core/meta/meta-environment.bbappend deleted file mode 100644 index 47f799b3..00000000 --- a/meta-mel/recipes-core/meta/meta-environment.bbappend +++ /dev/null @@ -1,11 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -SDK_MULTILIB_VARIANTS ?= "${MULTILIB_VARIANTS}" -python set_multilib_variants () { - variants = d.getVar('SDK_MULTILIB_VARIANTS', True) - if variants: - d.setVar('MULTILIB_VARIANTS', variants) -} -do_generate_content[prefuncs] += "set_multilib_variants" diff --git a/meta-mel/recipes-core/meta/sdk-env-kernelvars.bb b/meta-mel/recipes-core/meta/sdk-env-kernelvars.bb deleted file mode 100644 index e84ad9c3..00000000 --- a/meta-mel/recipes-core/meta/sdk-env-kernelvars.bb +++ /dev/null @@ -1,21 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -SUMMARY = "Add the KERNEL_ variables to the SDK environment." -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" - -# Needed to get the vars defined -inherit kernel-arch - -do_install () { - install -d "${D}/environment-setup.d" - cat <<END >"${D}/environment-setup.d/kernel.sh" -KERNEL_CC="${KERNEL_CC}" -KERNEL_LD="${KERNEL_LD}" -KERNEL_AR="${KERNEL_AR}" -END -} - -FILES:${PN} += "/environment-setup.d/*" diff --git a/meta-mel/recipes-core/os-release/os-release.bbappend b/meta-mel/recipes-core/os-release/os-release.bbappend deleted file mode 100644 index 1d46103d..00000000 --- a/meta-mel/recipes-core/os-release/os-release.bbappend +++ /dev/null @@ -1,12 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -OS_RELEASE_FIELDS:mel = "PRETTY_NAME NAME VERSION_ID VERSION VERSION_CODENAME ID HOME_URL SUPPORT_URL BUG_REPORT_URL" - -ID:mel = "flex-os" -NAME:mel = "Flex OS" -VERSION:mel = "${DISTRO_VERSION}${@' (%s)' % DISTRO_CODENAME if 'DISTRO_CODENAME' in d else ''}" -VERSION_ID:mel = "${DISTRO_VERSION}" -VERSION_CODENAME:mel = "${@'(%s)' % DISTRO_CODENAME if 'DISTRO_CODENAME' in d else ''}" -PRETTY_NAME:mel = "${DISTRO_NAME} ${VERSION}" diff --git a/meta-mel/recipes-core/packagegroups/packagegroup-base.bbappend b/meta-mel/recipes-core/packagegroups/packagegroup-base.bbappend deleted file mode 100644 index 6051fe4f..00000000 --- a/meta-mel/recipes-core/packagegroups/packagegroup-base.bbappend +++ /dev/null @@ -1,7 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -RDEPENDS:packagegroup-base-bluetooth:append:mel = "${@bb.utils.contains('DISTRO_FEATURES', 'pulseaudio', 'pulseaudio pulseaudio-server', '', d)}" - -RDEPENDS:packagegroup-base-nfs:append:mel = " nfs-utils-client" diff --git a/meta-mel/recipes-core/packagegroups/packagegroup-core-boot.bbappend b/meta-mel/recipes-core/packagegroups/packagegroup-core-boot.bbappend deleted file mode 100644 index c6fc6cc4..00000000 --- a/meta-mel/recipes-core/packagegroups/packagegroup-core-boot.bbappend +++ /dev/null @@ -1,6 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -#Don't use sysvinit based network configuration. We have connman for that purpose -SYSVINIT_SCRIPTS:mel := "${@oe.utils.str_filter_out('init-ifupdown', SYSVINIT_SCRIPTS, d)}" diff --git a/meta-mel/recipes-core/packagegroups/packagegroup-core-tools-profile.bbappend b/meta-mel/recipes-core/packagegroups/packagegroup-core-tools-profile.bbappend deleted file mode 100644 index 7aafcd40..00000000 --- a/meta-mel/recipes-core/packagegroups/packagegroup-core-tools-profile.bbappend +++ /dev/null @@ -1,6 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -# MEL Flex does not support systemtap. Systemtap brings boost which takes lots of resources. So we do not need it. -SYSTEMTAP:mel = "" diff --git a/meta-mel/recipes-core/psplash/mel/0001-plash-colors.h-color-change.patch b/meta-mel/recipes-core/psplash/mel/0001-plash-colors.h-color-change.patch deleted file mode 100644 index ec3566f9..00000000 --- a/meta-mel/recipes-core/psplash/mel/0001-plash-colors.h-color-change.patch +++ /dev/null @@ -1,26 +0,0 @@ -From e9a4653ac28d9d27ca2da1caab0997c1b957c8fc Mon Sep 17 00:00:00 2001 -From: Srikanth Krishnakar <Srikanth_Krishnakar@mentor.com> -Date: Thu, 13 Oct 2016 19:48:55 +0530 -Subject: [PATCH] plash-colors.h: color change - -Signed-off-by: Srikanth Krishnakar <Srikanth_Krishnakar@mentor.com> ---- - psplash-colors.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/psplash-colors.h b/psplash-colors.h -index d701089..24a3a05 100644 ---- a/psplash-colors.h -+++ b/psplash-colors.h -@@ -20,7 +20,7 @@ - #define _HAVE_PSPLASH_COLORS_H - - /* This is the overall background color */ --#define PSPLASH_BACKGROUND_COLOR 0xec,0xec,0xe1 -+#define PSPLASH_BACKGROUND_COLOR 0x00,0x00,0x00 - - /* This is the color of any text output */ - #define PSPLASH_TEXT_COLOR 0x6d,0x6d,0x70 --- -2.7.4 - diff --git a/meta-mel/recipes-core/psplash/mel/0001-psplash-config-enable-fullscreen-image.patch b/meta-mel/recipes-core/psplash/mel/0001-psplash-config-enable-fullscreen-image.patch deleted file mode 100644 index 0ead5544..00000000 --- a/meta-mel/recipes-core/psplash/mel/0001-psplash-config-enable-fullscreen-image.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 524a1568d8acd54c72bda67916831df2d8312b9a Mon Sep 17 00:00:00 2001 -From: Srikanth Krishnakar <Srikanth_Krishnakar@mentor.com> -Date: Thu, 13 Oct 2016 17:06:31 +0530 -Subject: [PATCH] psplash-config: enable fullscreen image - -Signed-off-by: Srikanth Krishnakar <Srikanth_Krishnakar@mentor.com> - ---- - psplash-config.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/psplash-config.h b/psplash-config.h -index eb90ef3..d928248 100644 ---- a/psplash-config.h -+++ b/psplash-config.h -@@ -18,7 +18,7 @@ - - /* Bool indicating if the image is fullscreen, as opposed to split screen */ - #ifndef PSPLASH_IMG_FULLSCREEN --#define PSPLASH_IMG_FULLSCREEN 0 -+#define PSPLASH_IMG_FULLSCREEN 1 - #endif - - /* Bool indicated if the progress bar should be disabled */ diff --git a/meta-mel/recipes-core/psplash/mel/mel.png b/meta-mel/recipes-core/psplash/mel/mel.png Binary files differdeleted file mode 100644 index b7ca22d7..00000000 --- a/meta-mel/recipes-core/psplash/mel/mel.png +++ /dev/null diff --git a/meta-mel/recipes-core/psplash/mel/psplash-final.service b/meta-mel/recipes-core/psplash/mel/psplash-final.service deleted file mode 100644 index 90fe24ff..00000000 --- a/meta-mel/recipes-core/psplash/mel/psplash-final.service +++ /dev/null @@ -1,12 +0,0 @@ -[Unit] -Description=Show Psplash Final Screen -After=getty@tty1.service display-manager.service psplash-start.service -Before=systemd-reboot.service systemd-halt.service systemd-poweroff.service -DefaultDependencies=no - -[Service] -Environment=TMPDIR=/run -ExecStart=/usr/bin/psplash - -[Install] -WantedBy=reboot.target halt.target poweroff.target diff --git a/meta-mel/recipes-core/psplash/mel/psplash-quit.service b/meta-mel/recipes-core/psplash/mel/psplash-quit.service deleted file mode 100755 index 6881a948..00000000 --- a/meta-mel/recipes-core/psplash/mel/psplash-quit.service +++ /dev/null @@ -1,12 +0,0 @@ -[Unit] -Description=Terminate Psplash Boot Screen -After=psplash-start.service -ConditionPathExists=/run/psplash_fifo - -[Service] -Environment=TMPDIR=/run -Type=oneshot -ExecStart=/usr/bin/psplash-write QUIT - -[Install] -WantedBy=multi-user.target diff --git a/meta-mel/recipes-core/psplash/mel/psplash-start.service b/meta-mel/recipes-core/psplash/mel/psplash-start.service deleted file mode 100755 index 05c2dd80..00000000 --- a/meta-mel/recipes-core/psplash/mel/psplash-start.service +++ /dev/null @@ -1,12 +0,0 @@ -[Unit] -Description=Starts Psplash Boot screen -Wants=systemd-vconsole-setup.service -After=systemd-vconsole-setup.service -DefaultDependencies=no - -[Service] -Environment=TMPDIR=/run -ExecStart=/usr/bin/psplash - -[Install] -WantedBy=sysinit.target diff --git a/meta-mel/recipes-core/psplash/psplash_git.bbappend b/meta-mel/recipes-core/psplash/psplash_git.bbappend deleted file mode 100644 index f8d44254..00000000 --- a/meta-mel/recipes-core/psplash/psplash_git.bbappend +++ /dev/null @@ -1,39 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -FILESEXTRAPATHS:prepend := "${THISDIR}:" - -SRC_URI:append:mel = " ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '\ - file://psplash-quit.service \ - file://psplash-start.service \ - file://psplash-final.service \ - ', '', d)}" - -# Change background color and splash image with no progress bar -SRC_URI:append:mel = " file://0001-psplash-config-enable-fullscreen-image.patch \ - file://0001-plash-colors.h-color-change.patch \ - " -EXTRA_OECONF:append:mel = " --disable-progress-bar" - -# # Update to latest version of psplash -# SRCREV:mel = "5b3c1cc28f5abdc2c33830150b48b278cc4f7bca" - -SPLASH_IMAGES:mel = "file://mel.png;outsuffix=default" - -SYSTEMD_INHERIT = "" -SYSTEMD_INHERIT:mel = "systemd" -inherit ${SYSTEMD_INHERIT} - -SYSTEMD_SERVICE:${PN}:mel = "psplash-start.service psplash-quit.service psplash-final.service" -SYSTEMD_AUTO_ENABLE ?= "enable" - -do_install:append:mel() { - if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then - install -d ${D}${systemd_unitdir}/system/ - install -m 0644 ${WORKDIR}/psplash-quit.service ${D}${systemd_unitdir}/system - install -m 0644 ${WORKDIR}/psplash-start.service ${D}${systemd_unitdir}/system - install -m 0644 ${WORKDIR}/psplash-final.service ${D}${systemd_unitdir}/system - fi - rm -f ${D}${systemd_unitdir}/system/psplash-systemd.service -} diff --git a/meta-mel/recipes-core/systemd/systemd/monotonic-timestamp.patch b/meta-mel/recipes-core/systemd/systemd/monotonic-timestamp.patch deleted file mode 100644 index a79a4d5a..00000000 --- a/meta-mel/recipes-core/systemd/systemd/monotonic-timestamp.patch +++ /dev/null @@ -1,160 +0,0 @@ -From 349b0586d07a9d48b781c18c7932c0b3cd102e65 Mon Sep 17 00:00:00 2001 -From: Muhammad Shakeel <mshakeel@pkl-mshakeel-ubuntu.(none)> -Date: Tue, 25 Jun 2013 18:58:02 +0500 -Subject: [PATCH] systemctl-clock: Use monotonic instead of realtime clock - -Currently if system clock is updated then 'ago' part of any service -running time doesn't show correct information. This is reported here: -https://bugs.freedesktop.org/show_bug.cgi?id=65616 ---- - src/login/loginctl.c | 10 ++++++++-- - src/machine/machinectl.c | 2 +- - src/shared/time-util.c | 2 +- - src/systemctl/systemctl.c | 27 ++++++++++++++++++++++++--- - 4 files changed, 34 insertions(+), 7 deletions(-) - -diff --git a/src/login/loginctl.c b/src/login/loginctl.c -index 736db6a..ea64546 100644 ---- a/src/login/loginctl.c -+++ b/src/login/loginctl.c -@@ -339,6 +339,7 @@ typedef struct SessionStatusInfo { - uid_t uid; - const char *name; - usec_t timestamp; -+ usec_t timestamp_monotonic; - int vtnr; - const char *seat; - const char *tty; -@@ -358,6 +359,7 @@ typedef struct UserStatusInfo { - uid_t uid; - const char *name; - usec_t timestamp; -+ usec_t timestamp_monotonic; - const char *state; - char **sessions; - const char *display; -@@ -382,7 +384,7 @@ static void print_session_status_info(DBusConnection *bus, SessionStatusInfo *i) - else - printf("%u\n", (unsigned) i->uid); - -- s1 = format_timestamp_relative(since1, sizeof(since1), i->timestamp); -+ s1 = format_timestamp_relative(since1, sizeof(since1), i->timestamp_monotonic); - s2 = format_timestamp(since2, sizeof(since2), i->timestamp); - - if (s1) -@@ -462,7 +464,7 @@ static void print_user_status_info(DBusConnection *bus, UserStatusInfo *i) { - else - printf("%u\n", (unsigned) i->uid); - -- s1 = format_timestamp_relative(since1, sizeof(since1), i->timestamp); -+ s1 = format_timestamp_relative(since1, sizeof(since1), i->timestamp_monotonic); - s2 = format_timestamp(since2, sizeof(since2), i->timestamp); - - if (s1) -@@ -598,6 +600,8 @@ static int status_property_session(const char *name, DBusMessageIter *iter, Sess - - if (streq(name, "Timestamp")) - i->timestamp = (usec_t) u; -+ else if (streq(name, "TimestampMonotonic")) -+ i->timestamp_monotonic = (usec_t) u; - - break; - } -@@ -670,6 +674,8 @@ static int status_property_user(const char *name, DBusMessageIter *iter, UserSta - - if (streq(name, "Timestamp")) - i->timestamp = (usec_t) u; -+ else if (streq(name, "TimestampMonotonic")) -+ i->timestamp_monotonic = (usec_t) u; - - break; - } -diff --git a/src/shared/time-util.c b/src/shared/time-util.c -index 9ee711a..08c8a2f 100644 ---- a/src/shared/time-util.c -+++ b/src/shared/time-util.c -@@ -171,7 +171,7 @@ char *format_timestamp(char *buf, size_t l, usec_t t) { - char *format_timestamp_relative(char *buf, size_t l, usec_t t) { - usec_t n, d; - -- n = now(CLOCK_REALTIME); -+ n = now(CLOCK_MONOTONIC); - - if (t <= 0 || t > n || t + USEC_PER_DAY*7 <= t) - return NULL; -diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c -index 9f47b2c..a05b5f8 100644 ---- a/src/systemctl/systemctl.c -+++ b/src/systemctl/systemctl.c -@@ -2515,6 +2515,9 @@ typedef struct UnitStatusInfo { - usec_t active_enter_timestamp; - usec_t active_exit_timestamp; - usec_t inactive_enter_timestamp; -+ usec_t active_enter_timestamp_monotonic; -+ usec_t active_exit_timestamp_monotonic; -+ usec_t inactive_enter_timestamp_monotonic; - - bool need_daemon_reload; - -@@ -2531,6 +2534,7 @@ typedef struct UnitStatusInfo { - int exit_code, exit_status; - - usec_t condition_timestamp; -+ usec_t condition_timestamp_monotonic; - bool condition_result; - bool failed_condition_trigger; - bool failed_condition_negate; -@@ -2560,7 +2564,7 @@ typedef struct UnitStatusInfo { - static void print_status_info(UnitStatusInfo *i) { - ExecStatusInfo *p; - const char *on, *off, *ss; -- usec_t timestamp; -+ usec_t timestamp, timestamp_monotonic; - char since1[FORMAT_TIMESTAMP_RELATIVE_MAX], *s1; - char since2[FORMAT_TIMESTAMP_MAX], *s2; - const char *path; -@@ -2664,7 +2668,14 @@ static void print_status_info(UnitStatusInfo *i) { - streq_ptr(i->active_state, "activating") ? i->inactive_exit_timestamp : - i->active_exit_timestamp; - -- s1 = format_timestamp_relative(since1, sizeof(since1), timestamp); -+ timestamp_monotonic = (streq_ptr(i->active_state, "active") || -+ streq_ptr(i->active_state, "reloading")) ? i->active_enter_timestamp_monotonic : -+ (streq_ptr(i->active_state, "inactive") || -+ streq_ptr(i->active_state, "failed")) ? i->inactive_enter_timestamp_monotonic : -+ streq_ptr(i->active_state, "activating") ? i->inactive_exit_timestamp_monotonic : -+ i->active_exit_timestamp_monotonic; -+ -+ s1 = format_timestamp_relative(since1, sizeof(since1), timestamp_monotonic); - s2 = format_timestamp(since2, sizeof(since2), timestamp); - - if (s1) -@@ -2675,7 +2686,7 @@ static void print_status_info(UnitStatusInfo *i) { - printf("\n"); - - if (!i->condition_result && i->condition_timestamp > 0) { -- s1 = format_timestamp_relative(since1, sizeof(since1), i->condition_timestamp); -+ s1 = format_timestamp_relative(since1, sizeof(since1), i->condition_timestamp_monotonic); - s2 = format_timestamp(since2, sizeof(since2), i->condition_timestamp); - - printf(" start condition failed at %s%s%s\n", -@@ -3030,6 +3041,16 @@ static int status_property(const char *name, DBusMessageIter *iter, UnitStatusIn - i->active_exit_timestamp = (usec_t) u; - else if (streq(name, "ConditionTimestamp")) - i->condition_timestamp = (usec_t) u; -+ else if (streq(name, "ActiveEnterTimestampMonotonic")) -+ i->active_enter_timestamp_monotonic = (usec_t) u; -+ else if (streq(name, "InactiveEnterTimestampMonotonic")) -+ i->inactive_enter_timestamp_monotonic = (usec_t) u; -+ else if (streq(name, "InactiveExitTimestampMonotonic")) -+ i->inactive_exit_timestamp_monotonic = (usec_t) u; -+ else if (streq(name, "ActiveExitTimestampMonotonic")) -+ i->active_exit_timestamp_monotonic = (usec_t) u; -+ else if (streq(name, "ConditionTimestampMonotonic")) -+ i->condition_timestamp_monotonic = (usec_t) u; - - break; - } --- -1.8.3.4 - diff --git a/meta-mel/recipes-core/systemd/systemd_%.bbappend b/meta-mel/recipes-core/systemd/systemd_%.bbappend deleted file mode 100644 index 33ab5b6c..00000000 --- a/meta-mel/recipes-core/systemd/systemd_%.bbappend +++ /dev/null @@ -1,16 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -SYSTEMD_LOGLEVEL ?= "info" -SYSTEMD_LOGLEVEL:mel ?= "emerg" - -do_compile:append:mel () { - printf '[Manager]\n' >loglevel.conf - printf 'LogLevel=${SYSTEMD_LOGLEVEL}\n' >>loglevel.conf -} - -do_install:append:mel () { - install -d "${D}${nonarch_libdir}/systemd/system.conf.d" - install -m 0644 loglevel.conf "${D}${nonarch_libdir}/systemd/system.conf.d/" -} diff --git a/meta-mel/recipes-core/util-linux/util-linux_%.bbappend b/meta-mel/recipes-core/util-linux/util-linux_%.bbappend deleted file mode 100644 index fa0fcffc..00000000 --- a/meta-mel/recipes-core/util-linux/util-linux_%.bbappend +++ /dev/null @@ -1,5 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -EXTRA_OECONF:append:class-native:mel = " --disable-schedutils" diff --git a/meta-mel/recipes-devtools/e2fsprogs/e2fsprogs_%.bbappend b/meta-mel/recipes-devtools/e2fsprogs/e2fsprogs_%.bbappend deleted file mode 100644 index f8b23c13..00000000 --- a/meta-mel/recipes-devtools/e2fsprogs/e2fsprogs_%.bbappend +++ /dev/null @@ -1,8 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -# The e2fsprogs recipe has the main package depending upon blkid and badblocks -# for compatibility, but we know we aren't bitten by that compatibility issue, -# so we drop that dependency. -RDEPENDS:e2fsprogs:mel = "" diff --git a/meta-mel/recipes-devtools/llvm/llvm_%.bbappend b/meta-mel/recipes-devtools/llvm/llvm_%.bbappend deleted file mode 100644 index b9af2c56..00000000 --- a/meta-mel/recipes-devtools/llvm/llvm_%.bbappend +++ /dev/null @@ -1,6 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -# If build system has 8 or less CPU cores, build only 8 jobs in parallel -PARALLEL_MAKE:mel = "-j ${@'8' if oe.utils.cpu_count() <= 8 else oe.utils.cpu_count() * 2}" diff --git a/meta-mel/recipes-devtools/python/python3_%.bbappend b/meta-mel/recipes-devtools/python/python3_%.bbappend deleted file mode 100644 index 3330ed55..00000000 --- a/meta-mel/recipes-devtools/python/python3_%.bbappend +++ /dev/null @@ -1,54 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -# Needed by patchinfo -PATCHINFO_PYTHONPATH = "${COMPONENTS_DIR}/${BUILD_ARCH}/python3-unidiff-native/${libdir}/python${PYTHON_MAJMIN}/site-packages" -DEPENDS_UNIDIFF = "" -DEPENDS_UNIDIFF:mel:class-target = "python3-unidiff-native:do_populate_sysroot" -do_archive_release_downloads[depends] += "${DEPENDS_UNIDIFF}" - -# Write patch names and modified files to python3-patches.txt -python do_archive_release_downloads:append:mel:class-target () { - import csv - import json - from collections import defaultdict - from pathlib import Path - - sources_dir = Path(sources_dir) - layerdir = d.getVar('LAYERDIR_mel') - script = Path(layerdir).parent / 'scripts' / 'patchinfo' - if not script.exists(): - bb.fatal('Expected {} script does not exist'.format(str(script))) - - python = d.getVar('PYTHON') - env = os.environ.copy() - env['PYTHONPATH'] = d.getVar('PATCHINFO_PYTHONPATH') - - patchinfos = [] - patches = [bb.fetch.decodeurl(u)[2] for u in src_patches(d)] - for patch in patches: - try: - info, _ = bb.process.run([python, str(script), patch], cwd=sources_dir, env=env) - except bb.process.ExecutionError as exc: - bb.warn("Failed to get patchinfo for %s: %s" % (patch, exc)) - continue - else: - try: - patchinfo = json.loads(info) - except json.decoder.JSONDecodeError as exc: - bb.warn("Failed to decode json from patchinfo for %s" % patch) - continue - else: - if 'Filename' in patchinfo and 'Files' in patchinfo: - patchinfos.append(patchinfo) - else: - bb.warn("Unexpected json contents for patchinfo for %s" % patch) - - with open(sources_dir / 'python3-patches.txt', 'w') as f: - for patchinfo in patchinfos: - patch, files = patchinfo['Filename'], patchinfo['Files'] - f.write(patch + ':\n') - for fn in files: - f.write(' ' + fn + '\n') -} diff --git a/meta-mel/recipes-graphics/images/weston-image.bb b/meta-mel/recipes-graphics/images/weston-image.bb deleted file mode 100644 index 84c8653f..00000000 --- a/meta-mel/recipes-graphics/images/weston-image.bb +++ /dev/null @@ -1,22 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -SUMMARY = "Wayland/Weston image based on core-image-weston image recipe" - -IMAGE_FEATURES += "splash package-management hwcodecs" - -LICENSE = "MIT" - -inherit core-image features_check - -REQUIRED_DISTRO_FEATURES = "wayland" - -CORE_IMAGE_BASE_INSTALL += "weston weston-init weston-examples" - -# We want libgcc to always be available, even if nothing needs it, as its size -# is minimal, and it's often needed by third party (or QA) binaries -IMAGE_INSTALL:append:mel = " libgcc" - -IMAGE_FEATURES .= "${@bb.utils.contains('COMBINED_FEATURES', 'alsa', ' tools-audio', '', d)}" -IMAGE_INSTALL += " quota connman" diff --git a/meta-mel/recipes-graphics/libsdl2/libsdl2_%.bbappend b/meta-mel/recipes-graphics/libsdl2/libsdl2_%.bbappend deleted file mode 100644 index 2c3a3b38..00000000 --- a/meta-mel/recipes-graphics/libsdl2/libsdl2_%.bbappend +++ /dev/null @@ -1,5 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -DISTRO_FEATURES:remove:mel = "opengl" diff --git a/meta-mel/recipes-kernel/perf/perf.bbappend b/meta-mel/recipes-kernel/perf/perf.bbappend deleted file mode 100644 index 3f1b6404..00000000 --- a/meta-mel/recipes-kernel/perf/perf.bbappend +++ /dev/null @@ -1,7 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -# MEL supports BSP kernel versions which upstream doesn't care about. -# Remove -I/usr/local/include from the default INCLUDES -EXTRA_OEMAKE:append:mel = " 'INCLUDES=-I. $(CONFIG_INCLUDES)'" diff --git a/meta-mel/recipes-multimedia/pulseaudio/pulseaudio_%.bbappend b/meta-mel/recipes-multimedia/pulseaudio/pulseaudio_%.bbappend deleted file mode 100644 index a3eaedc6..00000000 --- a/meta-mel/recipes-multimedia/pulseaudio/pulseaudio_%.bbappend +++ /dev/null @@ -1,16 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -do_compile:append:mel () { - # Work around a toolchain issue with the default resampler (speex-float-N) - # by using speex-fixed-N. JIRA: SB-1495 - set_cfg_value src/daemon/daemon.conf resample-method speex-fixed-3 -} - -RDEPENDS:pulseaudio-server:append:mel = "\ - pulseaudio-module-switch-on-port-available \ - pulseaudio-module-cli \ - pulseaudio-module-dbus-protocol \ - pulseaudio-module-echo-cancel \ -" diff --git a/meta-mel/recipes-sato/images/core-image-sato.bbappend b/meta-mel/recipes-sato/images/core-image-sato.bbappend deleted file mode 100644 index 17bbd171..00000000 --- a/meta-mel/recipes-sato/images/core-image-sato.bbappend +++ /dev/null @@ -1,6 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -IMAGE_FEATURES:append:mel = "${@bb.utils.contains('COMBINED_FEATURES', 'alsa', ' tools-audio', '', d)}" -IMAGE_INSTALL:append:mel = " quota" diff --git a/meta-mel/recipes-support/boost/boost_%.bbappend b/meta-mel/recipes-support/boost/boost_%.bbappend deleted file mode 100644 index 65aada9e..00000000 --- a/meta-mel/recipes-support/boost/boost_%.bbappend +++ /dev/null @@ -1,5 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -PARALLEL_MAKE:mel = "-j 4" diff --git a/meta-mel/recipes-support/consolekit/consolekit/0001-Ensure-filesystems-are-still-mounted-when-consolekit.patch b/meta-mel/recipes-support/consolekit/consolekit/0001-Ensure-filesystems-are-still-mounted-when-consolekit.patch deleted file mode 100644 index 580ccad4..00000000 --- a/meta-mel/recipes-support/consolekit/consolekit/0001-Ensure-filesystems-are-still-mounted-when-consolekit.patch +++ /dev/null @@ -1,25 +0,0 @@ ---- a/data/console-kit-log-system-restart.service.in -+++ b/data/console-kit-log-system-restart.service.in -@@ -2,7 +2,7 @@ - Description=Console System Reboot Logging - DefaultDependencies=no - After=sysinit.target console-kit-log-system-start.service --Before=shutdown.target -+Before=shutdown.target umount.target - - [Service] - Type=oneshot ---- a/data/console-kit-log-system-stop.service.in -+++ b/cdata/onsole-kit-log-system-stop.service.in -@@ -2,7 +2,7 @@ - Description=Console System Shutdown Logging - DefaultDependencies=no - After=sysinit.target console-kit-log-system-start.service --Before=shutdown.target -+Before=shutdown.target umount.target - - [Service] - Type=oneshot --- -2.7.4 - diff --git a/meta-mel/recipes-support/consolekit/consolekit_%.bbappend b/meta-mel/recipes-support/consolekit/consolekit_%.bbappend deleted file mode 100644 index 914c16af..00000000 --- a/meta-mel/recipes-support/consolekit/consolekit_%.bbappend +++ /dev/null @@ -1,9 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" - -SRC_URI:append:mel = " \ - file://0001-Ensure-filesystems-are-still-mounted-when-consolekit.patch \ -" diff --git a/meta-mel/recipes-support/curl/curl_%.bbappend b/meta-mel/recipes-support/curl/curl_%.bbappend deleted file mode 100644 index 2f1dd7c6..00000000 --- a/meta-mel/recipes-support/curl/curl_%.bbappend +++ /dev/null @@ -1,8 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -# We need openssl support for nativesdk-curl to ensure we can clone https -# repositories with nativesdk-git. -DEPENDS:append:class-nativesdk:mel = " nativesdk-openssl" -PACKAGECONFIG:append:class-nativesdk:mel = " ssl" diff --git a/meta-mel/recipes-support/db/db_%.bbappend b/meta-mel/recipes-support/db/db_%.bbappend deleted file mode 100644 index f4757dd2..00000000 --- a/meta-mel/recipes-support/db/db_%.bbappend +++ /dev/null @@ -1,8 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -SRC_URI:mel = "git://github.com/MentorEmbedded/libdb;branch=5.3;protocol=https" -SRCREV:mel = "81e5dd637b0bd954904130a2a493d3ac281148dc" -PV:mel = "5.3.28+git${SRCPV}" -S:mel = "${WORKDIR}/git" diff --git a/meta-mel/scripts/lib/wic/canned-wks/sdimage-bootpart-2g.wks b/meta-mel/scripts/lib/wic/canned-wks/sdimage-bootpart-2g.wks deleted file mode 100644 index 3a6cae28..00000000 --- a/meta-mel/scripts/lib/wic/canned-wks/sdimage-bootpart-2g.wks +++ /dev/null @@ -1,10 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -# short-description: Create SD card image with a boot partition -# long-description: Creates a partitioned SD card image. Boot files -# are located in the first vfat partition. - -part /boot --source bootimg-partition --ondisk mmcblk --fstype=vfat --label boot --active --align 4096 --size 64M --extra-space 0 -part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 4096 --size 1710080K --extra-space 0 --overhead-factor 1 diff --git a/meta-mel/scripts/lib/wic/canned-wks/sdimage-bootpart-4g.wks b/meta-mel/scripts/lib/wic/canned-wks/sdimage-bootpart-4g.wks deleted file mode 100644 index 1f9ff929..00000000 --- a/meta-mel/scripts/lib/wic/canned-wks/sdimage-bootpart-4g.wks +++ /dev/null @@ -1,10 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -# short-description: Create SD card image with a boot partition -# long-description: Creates a partitioned SD card image. Boot files -# are located in the first vfat partition. - -part /boot --source bootimg-partition --ondisk mmcblk --fstype=vfat --label boot --active --align 4096 --size 64M --extra-space 0 -part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 4 --size 3600M --overhead-factor 1 --extra-space 0 diff --git a/meta-mel/scripts/lib/wic/canned-wks/sdimage-bootpart-8g.wks b/meta-mel/scripts/lib/wic/canned-wks/sdimage-bootpart-8g.wks deleted file mode 100644 index e769a2df..00000000 --- a/meta-mel/scripts/lib/wic/canned-wks/sdimage-bootpart-8g.wks +++ /dev/null @@ -1,10 +0,0 @@ -# --------------------------------------------------------------------------------------------------------------------- -# SPDX-License-Identifier: MIT -# --------------------------------------------------------------------------------------------------------------------- - -# short-description: Create SD card image with a boot partition -# long-description: Creates a partitioned SD card image. Boot files -# are located in the first vfat partition. - -part /boot --source bootimg-partition --ondisk mmcblk --fstype=vfat --label boot --active --align 4 --size 64M --extra-space 0 -part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 4 --size 7500M --overhead-factor 1 --extra-space 0 |