Index: conf/templates/leahi/bblayers.conf.sample =================================================================== diff -u --- conf/templates/leahi/bblayers.conf.sample (revision 0) +++ conf/templates/leahi/bblayers.conf.sample (revision 7279c7f40d6a83f2f14a8442a5e825419674e70b) @@ -0,0 +1,25 @@ +# POKY_BBLAYERS_CONF_VERSION is increased each time build/conf/bblayers.conf +# changes incompatibly +# LEAHI BBLAYER +POKY_BBLAYERS_CONF_VERSION = "2" + +BBPATH = "${TOPDIR}" +BBFILES ?= "" + +BBLAYERS ?= " \ + ##OEROOT##/meta \ + ##OEROOT##/meta-poky \ + ##OEROOT##/meta-yocto-bsp \ + ##DIGIBASE##/meta-openembedded/meta-oe \ + ##DIGIBASE##/meta-openembedded/meta-python \ + ##DIGIBASE##/meta-openembedded\meta-multimedia \ + ##DIGIBASE##/meta-openembedded/meta-networking \ + ##DIGIBASE##/meta-openembedded/meta-webserver \ + ##DIGIBASE##/meta-qt5 \ + ##DIGIBASE##/meta-swupdate \ + ##DIGIBASE##/meta-freescale \ + ##DIGIBASE##/meta-fsl-demos \ + ##DIGIBASE##/meta-digi/meta-digi-arm \ + ##DIGIBASE##/meta-digi/meta-digi-dey \ + ##DIGIBASE##/meta-leahi \ +" Index: conf/templates/leahi/conf-notes.txt =================================================================== diff -u --- conf/templates/leahi/conf-notes.txt (revision 0) +++ conf/templates/leahi/conf-notes.txt (revision 7279c7f40d6a83f2f14a8442a5e825419674e70b) @@ -0,0 +1,5 @@ +Digi Embedded Yocto provides the following image recipes: + + * ely-image-qt: graphical Qt image + + Index: conf/templates/leahi/local.conf.sample =================================================================== diff -u --- conf/templates/leahi/local.conf.sample (revision 0) +++ conf/templates/leahi/local.conf.sample (revision 7279c7f40d6a83f2f14a8442a5e825419674e70b) @@ -0,0 +1,307 @@ +# LEAHI LOCAL + +# +# This file is your local configuration file and is where all local user settings +# are placed. The comments in this file give some guide to the options a new user +# to the system might want to change but pretty much any configuration option can +# be set in this file. More adventurous users can look at +# local.conf.sample.extended which contains other examples of configuration which +# can be placed in this file but new users likely won't need any of them +# initially. +# +# Lines starting with the '#' character are commented out and in some cases the +# default values are provided as comments to show people example syntax. Enabling +# the option is a question of removing the # character and making any change to the +# variable as required. + +# +# Machine Selection +# +# You need to select a specific machine to target the build with. There are a selection +# of emulated machines available which can boot and run in the QEMU emulator: +# +#MACHINE ?= "qemuarm" +#MACHINE ?= "qemuarm64" +#MACHINE ?= "qemumips" +#MACHINE ?= "qemumips64" +#MACHINE ?= "qemuppc" +#MACHINE ?= "qemux86" +#MACHINE ?= "qemux86-64" +# +# There are also the following hardware board target machines included for +# demonstration purposes: +# +#MACHINE ?= "beaglebone-yocto" +#MACHINE ?= "genericx86" +#MACHINE ?= "genericx86-64" +#MACHINE ?= "edgerouter" +# +# This sets the default machine to be qemux86-64 if no other machine is selected: +#MACHINE ??= "qemux86-64" + +MACHINE = "ccimx8mm-dvk" + +# +# Use Digi's internal git repositories +# +#DIGI_INTERNAL_GIT ?= "1" + +# +# Where to place downloads +# +# During a first build the system will download many different source code tarballs +# from various upstream projects. This can take a while, particularly if your network +# connection is slow. These are all stored in DL_DIR. When wiping and rebuilding you +# can preserve this directory to speed up this part of subsequent builds. This directory +# is safe to share between multiple builds on the same machine too. +# +# The default is a downloads directory under TOPDIR which is the build directory. +# +#DL_DIR ?= "${TOPDIR}/downloads" + +# +# Where to place shared-state files +# +# BitBake has the capability to accelerate builds based on previously built output. +# This is done using "shared state" files which can be thought of as cache objects +# and this option determines where those files are placed. +# +# You can wipe out TMPDIR leaving this directory intact and the build would regenerate +# from these files if no changes were made to the configuration. If changes were made +# to the configuration, only shared state files where the state was still valid would +# be used (done using checksums). +# +# The default is a sstate-cache directory under TOPDIR. +# +#SSTATE_DIR ?= "${TOPDIR}/sstate-cache" + +# +# Where to place the build output +# +# This option specifies where the bulk of the building work should be done and +# where BitBake should place its temporary files and output. Keep in mind that +# this includes the extraction and compilation of many applications and the toolchain +# which can use Gigabytes of hard disk space. +# +# The default is a tmp directory under TOPDIR. +# +#TMPDIR = "${TOPDIR}/tmp" + +# +# Default policy config +# +# The distribution setting controls which policy settings are used as defaults. +# The default value is fine for general Yocto project use, at least initially. +# Ultimately when creating custom policy, people will likely end up subclassing +# these defaults. +# +DISTRO ?= "ely" +# As an example of a subclass there is a "bleeding" edge policy configuration +# where many versions are set to the absolute latest code from the upstream +# source control systems. This is just mentioned here as an example, its not +# useful to most new users. +# DISTRO ?= "poky-bleeding" + +# +# Package Management configuration +# +# This variable lists which packaging formats to enable. Multiple package backends +# can be enabled at once and the first item listed in the variable will be used +# to generate the root filesystems. +# Options are: +# - 'package_deb' for debian style deb files +# - 'package_ipk' for ipk files are used by opkg (a debian style embedded package manager) +# - 'package_rpm' for rpm style packages +# E.g.: PACKAGE_CLASSES ?= "package_rpm package_deb package_ipk" +# We default to rpm: +PACKAGE_CLASSES ?= "package_rpm" + +# +# SDK target architecture +# +# This variable specifies the architecture to build SDK items for and means +# you can build the SDK packages for architectures other than the machine you are +# running the build on (i.e. building i686 packages on an x86_64 host). +# Supported values are i686, x86_64, aarch64 +#SDKMACHINE ?= "i686" + +# +# Extra image configuration defaults +# +# The EXTRA_IMAGE_FEATURES variable allows extra packages to be added to the generated +# images. Some of these options are added to certain image types automatically. The +# variable can contain the following options: +# "dbg-pkgs" - add -dbg packages for all installed packages +# (adds symbol information for debugging/profiling) +# "src-pkgs" - add -src packages for all installed packages +# (adds source code for debugging) +# "dev-pkgs" - add -dev packages for all installed packages +# (useful if you want to develop against libs in the image) +# "ptest-pkgs" - add -ptest packages for all ptest-enabled packages +# (useful if you want to run the package test suites) +# "tools-sdk" - add development tools (gcc, make, pkgconfig etc.) +# "tools-debug" - add debugging tools (gdb, strace) +# "eclipse-debug" - add Eclipse remote debugging support +# "tools-profile" - add profiling tools (oprofile, lttng, valgrind) +# "tools-testapps" - add useful testing tools (ts_print, aplay, arecord etc.) +# "debug-tweaks" - make an image suitable for development +# e.g. ssh root access has a blank password +# There are other application targets that can be used here too, see +# meta/classes/image.bbclass and meta/classes/core-image.bbclass for more details. +# We default to enabling the debugging tweaks. +EXTRA_IMAGE_FEATURES ?= "debug-tweaks" + +# +# Additional image features +# +# The following is a list of additional classes to use when building images which +# enable extra features. Some available options which can be included in this variable +# are: +# - 'buildstats' collect build statistics +USER_CLASSES ?= "buildstats" + +# +# Runtime testing of images +# +# The build system can test booting virtual machine images under qemu (an emulator) +# after any root filesystems are created and run tests against those images. It can also +# run tests against any SDK that are built. To enable this uncomment these lines. +# See classes/test{image,sdk}.bbclass for further details. +#IMAGE_CLASSES += "testimage testsdk" +#TESTIMAGE_AUTO:qemuall = "1" + +# +# Interactive shell configuration +# +# Under certain circumstances the system may need input from you and to do this it +# can launch an interactive shell. It needs to do this since the build is +# multithreaded and needs to be able to handle the case where more than one parallel +# process may require the user's attention. The default is iterate over the available +# terminal types to find one that works. +# +# Examples of the occasions this may happen are when resolving patches which cannot +# be applied, to use the devshell or the kernel menuconfig +# +# Supported values are auto, gnome, xfce, rxvt, screen, konsole (KDE 3.x only), none +# Note: currently, Konsole support only works for KDE 3.x due to the way +# newer Konsole versions behave +#OE_TERMINAL = "auto" +# By default disable interactive patch resolution (tasks will just fail instead): +PATCHRESOLVE = "noop" + +# +# Disk Space Monitoring during the build +# +# Monitor the disk space during the build. If there is less that 1GB of space or less +# than 100K inodes in any key build location (TMPDIR, DL_DIR, SSTATE_DIR), gracefully +# shutdown the build. If there is less than 100MB or 1K inodes, perform a hard halt +# of the build. The reason for this is that running completely out of space can corrupt +# files and damages the build in ways which may not be easily recoverable. +# It's necessary to monitor /tmp, if there is no space left the build will fail +# with very exotic errors. +BB_DISKMON_DIRS ??= "\ + STOPTASKS,${TMPDIR},1G,100K \ + STOPTASKS,${DL_DIR},1G,100K \ + STOPTASKS,${SSTATE_DIR},1G,100K \ + STOPTASKS,/tmp,100M,100K \ + HALT,${TMPDIR},100M,1K \ + HALT,${DL_DIR},100M,1K \ + HALT,${SSTATE_DIR},100M,1K \ + HALT,/tmp,10M,1K" + +# +# Shared-state files from other locations +# +# As mentioned above, shared state files are prebuilt cache data objects which can be +# used to accelerate build time. This variable can be used to configure the system +# to search other mirror locations for these objects before it builds the data itself. +# +# This can be a filesystem directory, or a remote url such as https or ftp. These +# would contain the sstate-cache results from previous builds (possibly from other +# machines). This variable works like fetcher MIRRORS/PREMIRRORS and points to the +# cache locations to check for the shared objects. +# NOTE: if the mirror uses the same structure as SSTATE_DIR, you need to add PATH +# at the end as shown in the examples below. This will be substituted with the +# correct path within the directory structure. +#SSTATE_MIRRORS ?= "\ +#file://.* https://someserver.tld/share/sstate/PATH;downloadfilename=PATH \ +#file://.* file:///some/local/dir/sstate/PATH" + +# +# Yocto Project SState Mirror +# +# The Yocto Project has prebuilt artefacts available for its releases, you can enable +# use of these by uncommenting the following lines. This will mean the build uses +# the network to check for artefacts at the start of builds, which does slow it down +# equally, it will also speed up the builds by not having to build things if they are +# present in the cache. It assumes you can download something faster than you can build it +# which will depend on your network. +# Note: For this to work you also need hash-equivalence passthrough to the matching server +# +#BB_HASHSERVE_UPSTREAM = "typhoon.yocto.io:8687" +#SSTATE_MIRRORS ?= "file://.* http://sstate.yoctoproject.org/4.0/PATH;downloadfilename=PATH" + +# +# Qemu configuration +# +# By default native qemu will build with a builtin VNC server where graphical output can be +# seen. The line below enables the SDL UI frontend too. +PACKAGECONFIG:append:pn-qemu-system-native = " sdl" +# By default libsdl2-native will be built, if you want to use your host's libSDL instead of +# the minimal libsdl built by libsdl2-native then uncomment the ASSUME_PROVIDED line below. +#ASSUME_PROVIDED += "libsdl2-native" + +# You can also enable the Gtk UI frontend, which takes somewhat longer to build, but adds +# a handy set of menus for controlling the emulator. +#PACKAGECONFIG:append:pn-qemu-system-native = " gtk+" + +# +# Hash Equivalence +# +# Enable support for automatically running a local hash equivalence server and +# instruct bitbake to use a hash equivalence aware signature generator. Hash +# equivalence improves reuse of sstate by detecting when a given sstate +# artifact can be reused as equivalent, even if the current task hash doesn't +# match the one that generated the artifact. +# +# A shared hash equivalent server can be set with ":" format +# +#BB_HASHSERVE = "auto" +#BB_SIGNATURE_HANDLER = "OEEquivHash" + +# +# Memory Resident Bitbake +# +# Bitbake's server component can stay in memory after the UI for the current command +# has completed. This means subsequent commands can run faster since there is no need +# for bitbake to reload cache files and so on. Number is in seconds, after which the +# server will shut down. +# +#BB_SERVER_TIMEOUT = "60" + +# CONF_VERSION is increased each time build/conf/ changes incompatibly and is used to +# track the version of this file when it was generated. This can safely be ignored if +# this doesn't mean anything to you. +CONF_VERSION = "2" + +# +# Enable local PR server +# +PRSERV_HOST = "localhost:0" + +# +# Some libraries and packages are covered by NXP EULA +# +ACCEPT_FSL_EULA = "1" + + +################################################################################ +# LEAHI DISTRO CONFIGURATIONS Notes to be moved to the layer +################################################################################ + +#IMAGE_INSTALL:append = " python3-pydoc" +#IMAGE_INSTALL:append = " python3-pip" + +# the following lines are defined for files-based update. +# SWUPDATE_FILES_TARGZ_FILE = "/home/bruce/digi_yocto/ccimx8mm-dvk/update/swupdate.tar.gz" +# SWUPDATE_SCRIPT = "/home/bruce/digi_yocto/ccimx8mm-dvk/update/update_files.sh" Fisheye: Tag 7279c7f40d6a83f2f14a8442a5e825419674e70b refers to a dead (removed) revision in file `sdk/config/leahi/bblayers.conf'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 7279c7f40d6a83f2f14a8442a5e825419674e70b refers to a dead (removed) revision in file `sdk/config/leahi/conf-notes.txt'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 7279c7f40d6a83f2f14a8442a5e825419674e70b refers to a dead (removed) revision in file `sdk/config/leahi/local.conf'. Fisheye: No comparison available. Pass `N' to diff? Index: sdk/mkproject.sh =================================================================== diff -u --- sdk/mkproject.sh (revision 0) +++ sdk/mkproject.sh (revision 7279c7f40d6a83f2f14a8442a5e825419674e70b) @@ -0,0 +1,223 @@ +#!/bin/bash +#=============================================================================== +# +# mkproject.sh +# +# Copyright (C) 2013-2024 by Digi International Inc. +# All rights reserved. +# +# 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. +# +# +# !Description: Yocto project maker (for Digi's SDK) updated for Diality Leahi Project +# +#=============================================================================== + +MKP_SCRIPTNAME="$(basename ${BASH_SOURCE})" +MKP_SCRIPTPATH="$(cd $(dirname ${BASH_SOURCE}) && pwd)" +MKP_PROJECTPATH="$(pwd)" + +## Color codes +MKP_RED="\033[1;31m" +MKP_GREEN="\033[1;32m" +MKP_NONE="\033[0m" + +# Path to platform config files +MKP_CONFIGPATH="${MKP_SCRIPTPATH}/sources/meta-leahi/config/templates}" + +# Blacklist platforms (not officially supported in a DEY release) +MKP_BLACKLIST_PLATFORMS="ccimx6qpsbc ccimx6sbc ccimx8x-sbc-express" + +MKP_SETUP_ENVIRONMENT='#!/bin/bash + +# Note: +# In Leahi project there is no change needed for the scripts in meta-digi/scripts. +# Therefore ELY uses the digi script folder to be updated with Digi DEY. + +if [ "${BASH_SOURCE}" = "${0}" ]; then + printf "\\n[ERROR]: This script needs to be sourced\\n\\n" +else + ELY_INSTALLDIR="%s" + cd $(dirname ${BASH_SOURCE}) + . ${ELY_INSTALLDIR}/sources/poky/oe-init-build-env . + + # Add our own scripts directory to the PATH + PATH="$(echo $PATH | sed -e "s,:\?${ELY_INSTALLDIR}/sources/meta-digi/scripts,,g;s,^:,,g")" + export PATH="${ELY_INSTALLDIR}/sources/meta-digi/scripts:$PATH" + + unset ELY_INSTALLDIR +fi +' + +## Local functions +usage() { + cat < select platform for the project + -m Layer with the supported platforms + +Supported platforms: $(display_supported_platforms) + +EOF +} + +error() { + if [ ${#} -ne 0 ] ; then + printf "\n${MKP_RED}[ERROR]:${MKP_NONE} %s\n" "${1}" + fi + usage +} + +check_selected_platform() { + for i in : ${MKP_AVAILABLE_PLATFORMS}; do + [ "${i}" = ":" ] && continue + [ "${i}" = "${MKP_PLATFORM}" ] && return 0 + done + return 1 +} + +# Filter available platforms through the blacklist +display_supported_platforms() { + local MKP_SUPPORTED_PLATFORMS="" + for i in ${MKP_AVAILABLE_PLATFORMS}; do + if echo "${MKP_BLACKLIST_PLATFORMS}" | grep -qsv "${i}"; then + MKP_SUPPORTED_PLATFORMS="${MKP_SUPPORTED_PLATFORMS:+${MKP_SUPPORTED_PLATFORMS} }${i}" + fi + done + echo "${MKP_SUPPORTED_PLATFORMS}" + unset MKP_SUPPORTED_PLATFORMS +} + +do_license() { + local MKP_LICENSE_FILES=" \ + ${MKP_SCRIPTPATH}/sources/meta-digi/meta-digi-arm/DIGI_EULA \ + ${MKP_SCRIPTPATH}/sources/meta-digi/meta-digi-arm/DIGI_OPEN_EULA \ + " + if [ "${MKP_PLATFORM}" = "ccmp15-dvk" ] || \ + [ "${MKP_PLATFORM}" = "ccmp13-dvk" ] || \ + [ "${MKP_PLATFORM}" = "ccmp25-dvk" ]; then + local SOC_VENDOR="STM" + MKP_LICENSE_FILES=" \ + ${MKP_LICENSE_FILES} \ + ${MKP_SCRIPTPATH}/sources/meta-st-stm32mp/conf/eula/ST_EULA_SLA \ + " + else + local SOC_VENDOR="NXP" + MKP_LICENSE_FILES=" \ + ${MKP_LICENSE_FILES} \ + ${MKP_SCRIPTPATH}/sources/meta-freescale/EULA \ + " + fi + [ -z "${MKP_PAGER+x}" ] && MKP_PAGER="| more" + eval cat - "${MKP_LICENSE_FILES}" <<-_EOF_ ${MKP_PAGER}; printf "\n" + +-------------------------------------------------------------------------------+ + | | + | | + | This software depends on libraries and packages that are covered by the | + | following licenses: | + | | + | * Digi's end user license agreement | + | * Digi's third party and open source license notice | + | * ${SOC_VENDOR} Semiconductors' software license agreement | + | | + | To have the right to use those binaries in your images you need to read and | + | accept the licenses. | + | | + | | + +-------------------------------------------------------------------------------+ + + _EOF_ + unset MKP_LICENSE_FILES MKP_PAGER + + ans="" + while [ -z "${ans}" ]; do + read -p "Do you accept all three license agreements? [y/Y to accept]: " ans + done + printf "%80s\n\n" | tr ' ' '-' + + [ "${ans,,}" = "y" ] || return 1 +} + +do_mkproject() { + export TEMPLATECONF="${TEMPLATECONF:-${MKP_CONFIGPATH}/${MKP_PLATFORM}}" + source ${MKP_SCRIPTPATH}/sources/poky/oe-init-build-env . + unset TEMPLATECONF + + # Add Digi scripts directory to the PATH + PATH="$(echo $PATH | sed -e "s,:\?${MKP_SCRIPTPATH}/sources/meta-digi/scripts,,g;s,^:,,g")" + export PATH="${MKP_SCRIPTPATH}/sources/meta-digi/scripts:$PATH" + + # New project + if [ -z "${MKP_OLD_PROJECT}" ]; then + # Customize project + chmod 644 ${MKP_PROJECTPATH}/conf/bblayers.conf ${MKP_PROJECTPATH}/conf/local.conf + sed -i -e "s,##DIGIBASE##,${MKP_SCRIPTPATH}/sources,g" ${MKP_PROJECTPATH}/conf/bblayers.conf + # At this point the user has accepted all the licenses, so enable the vendor EULA + sed -i -e "s,^#\(ACCEPT.*EULA\),\1,g" ${MKP_PROJECTPATH}/conf/local.conf + # Create dey-setup-environment script + printf "${MKP_SETUP_ENVIRONMENT}" "${MKP_SCRIPTPATH}" > ${MKP_PROJECTPATH}/ely-setup-environment + chmod +x ${MKP_PROJECTPATH}/ely-setup-environment + fi +} + +# Keep the running script in sync with the one in the layer. If it differs, +# update it (copy/overwrite) and warn the user. +if ! cmp -s ${MKP_SCRIPTPATH}/${MKP_SCRIPTNAME} ${MKP_SCRIPTPATH}/sources/"${OPTARG}/sdk/${MKP_SCRIPTNAME}; then + install -m 0555 ${MKP_SCRIPTPATH}/sources/"${OPTARG}/sdk/${MKP_SCRIPTNAME} ${MKP_SCRIPTPATH}/${MKP_SCRIPTNAME} + printf "\n${MKP_GREEN}[INFO]:${MKP_NONE} %s\n" "the '${MKP_SCRIPTNAME}' script has been updated." + printf "\nPlease run '. ${BASH_SOURCE}' again.\n\n" + return +fi + +# Verify if this is a new project (so we do NOT customize it) +[ -r "${MKP_PROJECTPATH}/conf/bblayers.conf" -a -r "${MKP_PROJECTPATH}/conf/local.conf" ] && MKP_OLD_PROJECT="1" + +# The script needs to be sourced (not executed) so make sure to +# initialize OPTIND variable for getopts. +OPTIND=1 +while getopts "lp:m:" c; do + case "${c}" in + l) MKP_LIST_PLATFORMS="y";; + p) MKP_PLATFORM="${OPTARG}";; + m) MKP_CONFIGPATH="${MKP_SCRIPTPATH}/sources/${OPTARG}/config/templates";; + esac +done + +## Get available platforms +MKP_AVAILABLE_PLATFORMS="$(echo $(ls -1 ${MKP_CONFIGPATH}/*/local.conf.sample | sed -e 's,^.*templates/\([^/]\+\)/local\.conf\.sample,\1,g'))" + +## Sanity checks +if [ "${BASH_SOURCE}" = "${0}" ]; then + error "This script needs to be sourced" +elif [ ${#} -eq 0 ] ; then + usage +elif [ ! -d "${MKP_CONFIGPATH}" ]; then + error "selected platform configuration directory \"${MKP_CONFIGPATH}\" does not exist" +elif [ -n "${MKP_LIST_PLATFORMS}" ]; then + display_supported_platforms +elif [ -z "${MKP_PLATFORM}" ]; then + error "-p option is required" +elif ! check_selected_platform; then + error "the selected platform \"${MKP_PLATFORM}\" is not available" +else + do_license && do_mkproject || printf "License NOT accepted. Make project cancelled.\n\n" +fi + +# clean-up all variables (so the script can be re-sourced) +unset MKP_AVAILABLE_PLATFORMS \ + MKP_BLACKLIST_PLATFORMS \ + MKP_GREEN \ + MKP_LIST_PLATFORMS \ + MKP_NONE \ + MKP_OLD_PROJECT \ + MKP_PLATFORM \ + MKP_PROJECTPATH \ + MKP_RED \ + MKP_SCRIPTNAME \ + MKP_SCRIPTPATH \ + MKP_SETUP_ENVIRONMENT