From 0cf465a34507b29ddadfdaf215a1e71eef7ae318 Mon Sep 17 00:00:00 2001 From: Christian Hewitt Date: Mon, 7 Apr 2025 11:48:27 +0000 Subject: [PATCH 01/19] treewide: unbrand LIBREELEC_VERSION to DISTRO_VERSION Signed-off-by: Christian Hewitt --- config/noobs/os.json | 2 +- config/path | 6 +++--- distributions/LibreELEC/options | 2 +- distributions/LibreELEC/version | 2 +- packages/devel/elfutils/package.mk | 2 +- packages/sysutils/v4l-utils/package.mk | 2 +- scripts/image | 28 +++++++++++++------------- tools/distro-tool | 12 +++++------ 8 files changed, 28 insertions(+), 28 deletions(-) diff --git a/config/noobs/os.json b/config/noobs/os.json index 2fb08c7f63..5b5cbbb413 100644 --- a/config/noobs/os.json +++ b/config/noobs/os.json @@ -1,6 +1,6 @@ { "name": "@DISTRONAME@_@PROJECT@", - "version": "@LIBREELEC_VERSION@", + "version": "@DISTRO_VERSION@", "release_date": "@RELEASE_DATE@", "kernel": "@KERNEL_VERSION@", "description": "@DESCRIPTION@", diff --git a/config/path b/config/path index 0151372e24..48b04d5a07 100644 --- a/config/path +++ b/config/path @@ -16,9 +16,9 @@ set -e [ -z "${HOST_NAME}" ] && export HOST_NAME="$($LOCAL_CC -dumpmachine)" TARGET_NAME=$TARGET_GCC_ARCH-libreelec-linux-gnu${TARGET_ABI} -BUILD=${BUILD_ROOT}/${BUILD_BASE}.${DISTRONAME}-${DEVICE:-$PROJECT}.${TARGET_ARCH}-${LIBREELEC_VERSION} -if [ "${LIBREELEC_VERSION}" = "devel" ] ; then - BUILD=${BUILD_ROOT}/${BUILD_BASE}.${DISTRONAME}-${DEVICE:-$PROJECT}.${TARGET_ARCH}-${OS_VERSION}-${LIBREELEC_VERSION} +BUILD=${BUILD_ROOT}/${BUILD_BASE}.${DISTRONAME}-${DEVICE:-$PROJECT}.${TARGET_ARCH}-${DISTRO_VERSION} +if [ "${DISTRO_VERSION}" = "devel" ] ; then + BUILD=${BUILD_ROOT}/${BUILD_BASE}.${DISTRONAME}-${DEVICE:-$PROJECT}.${TARGET_ARCH}-${OS_VERSION}-${DISTRO_VERSION} fi if [ -n "$BUILD_SUFFIX" ]; then diff --git a/distributions/LibreELEC/options b/distributions/LibreELEC/options index 0b93737c0f..4998b31463 100644 --- a/distributions/LibreELEC/options +++ b/distributions/LibreELEC/options @@ -172,7 +172,7 @@ # Distribution Specific source location DISTRO_MIRROR="http://sources.libreelec.tv/mirror" - DISTRO_SRC="http://sources.libreelec.tv/$LIBREELEC_VERSION" + DISTRO_SRC="http://sources.libreelec.tv/$DISTRO_VERSION" # Addon Server Url ADDON_SERVER_URL="https://addons.libreelec.tv" diff --git a/distributions/LibreELEC/version b/distributions/LibreELEC/version index 1efd036ffa..80b4c1ce36 100644 --- a/distributions/LibreELEC/version +++ b/distributions/LibreELEC/version @@ -1,5 +1,5 @@ # VERSION: set full version, use "devel" for development version - LIBREELEC_VERSION="devel" + DISTRO_VERSION="devel" # OS_VERSION: OS Version OS_VERSION="13.0" diff --git a/packages/devel/elfutils/package.mk b/packages/devel/elfutils/package.mk index 600655dd71..006150323e 100644 --- a/packages/devel/elfutils/package.mk +++ b/packages/devel/elfutils/package.mk @@ -14,7 +14,7 @@ PKG_LONGDESC="A collection of utilities to handle ELF objects." PKG_TOOLCHAIN="autotools" PKG_BUILD_FLAGS="+pic -cfg-libs -cfg-libs:host" -if [ "${LIBREELEC_VERSION}" = "devel" ]; then +if [ "${DISTRO_VERSION}" = "devel" ]; then PKG_PROGRAMS="--enable-programs --program-prefix=" PKG_PROGRAMS_LIST="readelf" else diff --git a/packages/sysutils/v4l-utils/package.mk b/packages/sysutils/v4l-utils/package.mk index bccda93218..2262816c29 100644 --- a/packages/sysutils/v4l-utils/package.mk +++ b/packages/sysutils/v4l-utils/package.mk @@ -35,7 +35,7 @@ create_multi_keymap() { post_makeinstall_target() { local f keymap - if [ ! "${LIBREELEC_VERSION}" == "devel" ]; then + if [ ! "${DISTRO_VERSION}" == "devel" ]; then rm ${INSTALL}/usr/bin/v4l2-compliance fi diff --git a/scripts/image b/scripts/image index a4caaf0ee6..b6b293452e 100755 --- a/scripts/image +++ b/scripts/image @@ -64,24 +64,24 @@ else GIT_HASH=$(git rev-parse HEAD) fi -if [ "${LIBREELEC_VERSION}" = "devel" ]; then +if [ "${DISTRO_VERSION}" = "devel" ]; then GIT_ABBREV=${GIT_HASH:0:7} - DEVEL_VERSION=${LIBREELEC_VERSION} + DEVEL_VERSION=${DISTRO_VERSION} case "${BUILD_PERIODIC}" in nightly) - LIBREELEC_VERSION=nightly-$(date +%Y%m%d)-${GIT_ABBREV} + DISTRO_VERSION=nightly-$(date +%Y%m%d)-${GIT_ABBREV} ;; daily) - LIBREELEC_VERSION=daily-$(date +%Y%j)-${GIT_ABBREV} + DISTRO_VERSION=daily-$(date +%Y%j)-${GIT_ABBREV} ;; weekly) - LIBREELEC_VERSION=weekly-$(date +%G%V)-${GIT_ABBREV} + DISTRO_VERSION=weekly-$(date +%G%V)-${GIT_ABBREV} ;; monthly) - LIBREELEC_VERSION=monthly-$(date +%Y%m)-${GIT_ABBREV} + DISTRO_VERSION=monthly-$(date +%Y%m)-${GIT_ABBREV} ;; *) - LIBREELEC_VERSION=devel-$(date +%Y%m%d%H%M%S)-${GIT_ABBREV} + DISTRO_VERSION=devel-$(date +%Y%m%d%H%M%S)-${GIT_ABBREV} ;; esac fi @@ -101,17 +101,17 @@ else fi if [ -n "${CUSTOM_VERSION}" ]; then - LIBREELEC_VERSION="${CUSTOM_VERSION}" + DISTRO_VERSION="${CUSTOM_VERSION}" fi LIBREELEC_ARCH="${DEVICE:-${PROJECT}}.${TARGET_ARCH}" -TARGET_VERSION="${LIBREELEC_ARCH}-${LIBREELEC_VERSION}" +TARGET_VERSION="${LIBREELEC_ARCH}-${DISTRO_VERSION}" if [ -n "${CUSTOM_IMAGE_NAME}" ]; then IMAGE_NAME="${CUSTOM_IMAGE_NAME}" else if [ "${DEVEL_VERSION}" = "devel" ]; then - IMAGE_NAME="${DISTRONAME}-${LIBREELEC_ARCH}-${OS_VERSION}-${LIBREELEC_VERSION}" + IMAGE_NAME="${DISTRONAME}-${LIBREELEC_ARCH}-${OS_VERSION}-${DISTRO_VERSION}" else IMAGE_NAME="${DISTRONAME}-${TARGET_VERSION}" fi @@ -166,10 +166,10 @@ echo "${TARGET_VERSION}" >${INSTALL}/etc/release # Create /etc/os-release cat <${INSTALL}/etc/os-release NAME="${DISTRONAME}" -VERSION="${LIBREELEC_VERSION}" +VERSION="${DISTRO_VERSION}" ID="${DISTRONAME,,}" VERSION_ID="${OS_VERSION}" -PRETTY_NAME="${DISTRONAME} (${LIBREELEC_BUILD}): ${LIBREELEC_VERSION}" +PRETTY_NAME="${DISTRONAME} (${LIBREELEC_BUILD}): ${DISTRO_VERSION}" HOME_URL="https://libreelec.tv" BUG_REPORT_URL="${ORIGIN_URL}" BUILD_ID="${GIT_HASH}" @@ -188,7 +188,7 @@ ${GREETING1} ${GREETING2} ${GREETING3} ${GREETING4} -${DISTRONAME} (${LIBREELEC_BUILD}): ${LIBREELEC_VERSION} (${LIBREELEC_ARCH}) +${DISTRONAME} (${LIBREELEC_BUILD}): ${DISTRO_VERSION} (${LIBREELEC_ARCH}) EOF ln -sf /etc/issue ${INSTALL}/etc/motd @@ -406,7 +406,7 @@ if [ "${1}" = "release" -o "${1}" = "mkimage" -o "${1}" = "noobs" ]; then sed -e "s%@DISTRONAME@%${DISTRONAME}%g" \ -e "s%@PROJECT@%${DEVICE:-${PROJECT}}%g" \ - -e "s%@LIBREELEC_VERSION@%${LIBREELEC_VERSION}%g" \ + -e "s%@DISTRO_VERSION@%${DISTRO_VERSION}%g" \ -e "s%@RELEASE_DATE@%$(date +%F)%g" \ -e "s%@KERNEL_VERSION@%$(kernel_version)%g" \ -e "s%@DESCRIPTION@%${DESCRIPTION}%g" \ diff --git a/tools/distro-tool b/tools/distro-tool index 00441bc0bd..4ed0a2addd 100755 --- a/tools/distro-tool +++ b/tools/distro-tool @@ -742,7 +742,7 @@ get_libreelec_branch() { git rev-parse --abbrev-ref HEAD } -# 1: LibreELEC variable, eg. LIBREELEC_VERSION +# 1: LibreELEC variable, eg. DISTRO_VERSION get_libreelec_option() { local variable="$1" cd $LIBREELEC_DIR @@ -1047,17 +1047,17 @@ LIBREELEC_DIR="$(get_abs_path "${LIBREELEC_DIR}")" DISTRO_SOURCE="$(get_libreelec_option DISTRO_SRC)" DISTRO_MIRROR="$(get_libreelec_option DISTRO_MIRROR)" -LIBREELEC_VER="$(get_libreelec_option LIBREELEC_VERSION)" +DISTRO_VER="$(get_libreelec_option DISTRO_VERSION)" if [ ${IS_MIRROR} = no ]; then - TARGET_DIR="$(get_abs_path "${TARGET_DIR}/${LIBREELEC_VER}")" + TARGET_DIR="$(get_abs_path "${TARGET_DIR}/${DISTRO_VER}")" else TARGET_DIR="$(get_abs_path "${TARGET_DIR}/mirror")" fi check_exists TARGET_DIR || exit if [ ${IS_MIRROR} = no ]; then - DOWNLOAD_DIR="$(get_abs_path "${DOWNLOAD_DIR}/${LIBREELEC_VER}")" + DOWNLOAD_DIR="$(get_abs_path "${DOWNLOAD_DIR}/${DISTRO_VER}")" else DOWNLOAD_DIR="$(get_abs_path "${DOWNLOAD_DIR}/mirror")" fi @@ -1070,9 +1070,9 @@ fi echo if [ ${IS_MIRROR} = yes ]; then - echo "Synchronising LibreELEC.tv (branch: $(get_libreelec_branch), version: ${LIBREELEC_VER}) with MIRROR server ${TARGET_DIR}" + echo "Synchronising LibreELEC.tv (branch: $(get_libreelec_branch), version: ${DISTRO_VER}) with MIRROR server ${TARGET_DIR}" else - echo "Synchronising LibreELEC.tv (branch: $(get_libreelec_branch), version: ${LIBREELEC_VER}) with SOURCE server ${TARGET_DIR}" + echo "Synchronising LibreELEC.tv (branch: $(get_libreelec_branch), version: ${DISTRO_VER}) with SOURCE server ${TARGET_DIR}" fi echo echo "Distro Source is: ${DISTRO_SOURCE}" From 868b16b46e1e951945844d4c6b6f232a53892055 Mon Sep 17 00:00:00 2001 From: Christian Hewitt Date: Mon, 7 Apr 2025 11:54:01 +0000 Subject: [PATCH 02/19] treewide: unbrand LIBREELEC_ARCH to DISTRO_ARCH Signed-off-by: Christian Hewitt --- .../service/snapclient/source/bin/snapclient.start | 2 +- packages/addons/tools/system-tools/source/default.py | 2 +- packages/mediacenter/kodi/scripts/pastekodi | 2 +- packages/sysutils/busybox/scripts/init | 2 +- scripts/image | 10 +++++----- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/addons/service/snapclient/source/bin/snapclient.start b/packages/addons/service/snapclient/source/bin/snapclient.start index f46d6f046d..4dc2b52f23 100644 --- a/packages/addons/service/snapclient/source/bin/snapclient.start +++ b/packages/addons/service/snapclient/source/bin/snapclient.start @@ -7,7 +7,7 @@ oe_setup_addon service.snapclient . /etc/os-release -case "$LIBREELEC_ARCH" in +case "$DISTRO_ARCH" in RPi*.arm) if [ "$sc_a" == "true" ]; then ALSA="/proc/asound/ALSA" diff --git a/packages/addons/tools/system-tools/source/default.py b/packages/addons/tools/system-tools/source/default.py index 4655d0c679..95c5d81108 100644 --- a/packages/addons/tools/system-tools/source/default.py +++ b/packages/addons/tools/system-tools/source/default.py @@ -13,7 +13,7 @@ vars = re.findall(r"^[a-zA-Z0-9_]+=.*$", contents, flags=re.MULTILINE) reader = csv.reader(vars, delimiter="=") osrelease = dict(reader) -if osrelease['LIBREELEC_ARCH'] == 'x11.x86_64' or osrelease['LIBREELEC_ARCH'] == 'Generic-legacy.x86_64': +if osrelease['DISTRO_ARCH'] == 'x11.x86_64' or osrelease['DISTRO_ARCH'] == 'Generic-legacy.x86_64': yes = xbmcgui.Dialog().yesno('System Tools', 'This is a console-only addon.[CR][CR]Open a terminal window?',nolabel='No',yeslabel='Yes') if yes: subprocess.Popen(["systemd-run","sh","-c",". /etc/profile;cd;exec st -e sh -l"], shell=False, close_fds=True) diff --git a/packages/mediacenter/kodi/scripts/pastekodi b/packages/mediacenter/kodi/scripts/pastekodi index 009c7b9c5c..6d73d27f11 100755 --- a/packages/mediacenter/kodi/scripts/pastekodi +++ b/packages/mediacenter/kodi/scripts/pastekodi @@ -54,7 +54,7 @@ while getopts ":hc" opt; do done source /etc/os-release -SYSTEM_ARCH="${LIBREELEC_ARCH#*.}" +SYSTEM_ARCH="${DISTRO_ARCH#*.}" # If running in SAFE mode, send FAILED logs if [ "$(cat "/storage/.config/boot.status" 2>/dev/null)" = "SAFE" ]; then diff --git a/packages/sysutils/busybox/scripts/init b/packages/sysutils/busybox/scripts/init index 96ee59ff53..0ac85fcb54 100755 --- a/packages/sysutils/busybox/scripts/init +++ b/packages/sysutils/busybox/scripts/init @@ -261,7 +261,7 @@ mount_sysroot() { get_project_arch() { if [ -f ${1}/etc/os-release ]; then . ${1}/etc/os-release - echo "${LIBREELEC_ARCH}" + echo "${DISTRO_ARCH}" fi } diff --git a/scripts/image b/scripts/image index b6b293452e..45d4994a01 100755 --- a/scripts/image +++ b/scripts/image @@ -104,14 +104,14 @@ if [ -n "${CUSTOM_VERSION}" ]; then DISTRO_VERSION="${CUSTOM_VERSION}" fi -LIBREELEC_ARCH="${DEVICE:-${PROJECT}}.${TARGET_ARCH}" -TARGET_VERSION="${LIBREELEC_ARCH}-${DISTRO_VERSION}" +DISTRO_ARCH="${DEVICE:-${PROJECT}}.${TARGET_ARCH}" +TARGET_VERSION="${DISTRO_ARCH}-${DISTRO_VERSION}" if [ -n "${CUSTOM_IMAGE_NAME}" ]; then IMAGE_NAME="${CUSTOM_IMAGE_NAME}" else if [ "${DEVEL_VERSION}" = "devel" ]; then - IMAGE_NAME="${DISTRONAME}-${LIBREELEC_ARCH}-${OS_VERSION}-${DISTRO_VERSION}" + IMAGE_NAME="${DISTRONAME}-${DISTRO_ARCH}-${OS_VERSION}-${DISTRO_VERSION}" else IMAGE_NAME="${DISTRONAME}-${TARGET_VERSION}" fi @@ -173,7 +173,7 @@ PRETTY_NAME="${DISTRONAME} (${LIBREELEC_BUILD}): ${DISTRO_VERSION}" HOME_URL="https://libreelec.tv" BUG_REPORT_URL="${ORIGIN_URL}" BUILD_ID="${GIT_HASH}" -LIBREELEC_ARCH="${LIBREELEC_ARCH}" +DISTRO_ARCH="${DISTRO_ARCH}" LIBREELEC_BUILD="${LIBREELEC_BUILD}" LIBREELEC_PROJECT="${PROJECT}" EOF @@ -188,7 +188,7 @@ ${GREETING1} ${GREETING2} ${GREETING3} ${GREETING4} -${DISTRONAME} (${LIBREELEC_BUILD}): ${DISTRO_VERSION} (${LIBREELEC_ARCH}) +${DISTRONAME} (${LIBREELEC_BUILD}): ${DISTRO_VERSION} (${DISTRO_ARCH}) EOF ln -sf /etc/issue ${INSTALL}/etc/motd From 1789798523ea4341e2bd3a7ab622ece819fd4f30 Mon Sep 17 00:00:00 2001 From: Christian Hewitt Date: Mon, 7 Apr 2025 11:56:08 +0000 Subject: [PATCH 03/19] treewide: unbrand LIBREELEC_BUILD to DISTRO_BUILD Signed-off-by: Christian Hewitt --- scripts/image | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/scripts/image b/scripts/image index 45d4994a01..a8acf16efe 100755 --- a/scripts/image +++ b/scripts/image @@ -91,12 +91,12 @@ ORIGIN_URL="$(git remote -v | awk '$1 == "origin" { print $2 }' | head -1 | sed [ "${BUILDER_NAME,,}" = "official" ] && BUILDER_NAME= if [ "${OFFICIAL}" = "yes" ]; then - LIBREELEC_BUILD="official" + DISTRO_BUILD="official" else if [ -n "${BUILDER_NAME}" ]; then - LIBREELEC_BUILD="${BUILDER_NAME}" + DISTRO_BUILD="${BUILDER_NAME}" else - LIBREELEC_BUILD="community" + DISTRO_BUILD="community" fi fi @@ -169,12 +169,12 @@ NAME="${DISTRONAME}" VERSION="${DISTRO_VERSION}" ID="${DISTRONAME,,}" VERSION_ID="${OS_VERSION}" -PRETTY_NAME="${DISTRONAME} (${LIBREELEC_BUILD}): ${DISTRO_VERSION}" +PRETTY_NAME="${DISTRONAME} (${DISTRO_BUILD}): ${DISTRO_VERSION}" HOME_URL="https://libreelec.tv" BUG_REPORT_URL="${ORIGIN_URL}" BUILD_ID="${GIT_HASH}" DISTRO_ARCH="${DISTRO_ARCH}" -LIBREELEC_BUILD="${LIBREELEC_BUILD}" +DISTRO_BUILD="${DISTRO_BUILD}" LIBREELEC_PROJECT="${PROJECT}" EOF [ -n "${DEVICE}" ] && echo "LIBREELEC_DEVICE=\"${DEVICE}\"" >>${INSTALL}/etc/os-release @@ -188,7 +188,7 @@ ${GREETING1} ${GREETING2} ${GREETING3} ${GREETING4} -${DISTRONAME} (${LIBREELEC_BUILD}): ${DISTRO_VERSION} (${DISTRO_ARCH}) +${DISTRONAME} (${DISTRO_BUILD}): ${DISTRO_VERSION} (${DISTRO_ARCH}) EOF ln -sf /etc/issue ${INSTALL}/etc/motd From c76d6596cdeb400ac9531e23ace8aa9d4479c185 Mon Sep 17 00:00:00 2001 From: Christian Hewitt Date: Mon, 7 Apr 2025 11:57:29 +0000 Subject: [PATCH 04/19] treewide: unbrand LIBREELEC_PROJECT to DISTRO_PROJECT Signed-off-by: Christian Hewitt --- packages/mediacenter/kodi/scripts/pastekodi | 4 ++-- scripts/image | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/mediacenter/kodi/scripts/pastekodi b/packages/mediacenter/kodi/scripts/pastekodi index 6d73d27f11..963df98e0e 100755 --- a/packages/mediacenter/kodi/scripts/pastekodi +++ b/packages/mediacenter/kodi/scripts/pastekodi @@ -81,7 +81,7 @@ fi echo "Firmware Boot Mode: BIOS" fi fi - if [ "${LIBREELEC_PROJECT}" = "RPi" ]; then + if [ "${DISTRO_PROJECT}" = "RPi" ]; then echo "RPi Hardware Revision: $(vcgencmd otp_dump | grep 30: | cut -d: -f2)" echo "RPi $(vcgencmd get_throttled)" fi @@ -92,7 +92,7 @@ fi kmsprint | cat_data "kmsprint" - if [ "${LIBREELEC_PROJECT}" = "RPi" ]; then + if [ "${DISTRO_PROJECT}" = "RPi" ]; then vcgencmd bootloader_version | cat_data "Bootloader version" fi diff --git a/scripts/image b/scripts/image index a8acf16efe..42a5c9c778 100755 --- a/scripts/image +++ b/scripts/image @@ -175,7 +175,7 @@ BUG_REPORT_URL="${ORIGIN_URL}" BUILD_ID="${GIT_HASH}" DISTRO_ARCH="${DISTRO_ARCH}" DISTRO_BUILD="${DISTRO_BUILD}" -LIBREELEC_PROJECT="${PROJECT}" +DISTRO_PROJECT="${PROJECT}" EOF [ -n "${DEVICE}" ] && echo "LIBREELEC_DEVICE=\"${DEVICE}\"" >>${INSTALL}/etc/os-release [ -n "${BUILDER_NAME}" ] && echo "BUILDER_NAME=\"${BUILDER_NAME}\"" >>${INSTALL}/etc/os-release From 2bb6195b2d2a345c7358b1a32c5cac47cff7ed7a Mon Sep 17 00:00:00 2001 From: Christian Hewitt Date: Mon, 7 Apr 2025 11:58:41 +0000 Subject: [PATCH 05/19] treewide: unbrand LIBREELEC_DEVICE to DISTRO_DEVICE Signed-off-by: Christian Hewitt --- scripts/image | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/image b/scripts/image index 42a5c9c778..5713f846c8 100755 --- a/scripts/image +++ b/scripts/image @@ -177,7 +177,7 @@ DISTRO_ARCH="${DISTRO_ARCH}" DISTRO_BUILD="${DISTRO_BUILD}" DISTRO_PROJECT="${PROJECT}" EOF -[ -n "${DEVICE}" ] && echo "LIBREELEC_DEVICE=\"${DEVICE}\"" >>${INSTALL}/etc/os-release +[ -n "${DEVICE}" ] && echo "DISTRO_DEVICE=\"${DEVICE}\"" >>${INSTALL}/etc/os-release [ -n "${BUILDER_NAME}" ] && echo "BUILDER_NAME=\"${BUILDER_NAME}\"" >>${INSTALL}/etc/os-release [ -n "${BUILDER_VERSION}" ] && echo "BUILDER_VERSION=\"${BUILDER_VERSION}\"" >>${INSTALL}/etc/os-release From 51b1613d9e7fab36fb29a7b7c673958af942995f Mon Sep 17 00:00:00 2001 From: Christian Hewitt Date: Mon, 7 Apr 2025 12:10:10 +0000 Subject: [PATCH 06/19] scripts: unbranding changes for image script Signed-off-by: Christian Hewitt --- scripts/image | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/image b/scripts/image index 5713f846c8..24bcfd2490 100755 --- a/scripts/image +++ b/scripts/image @@ -139,7 +139,7 @@ rm -rf ${INSTALL} rm -rf ${STAMPS_INSTALL} mkdir -p ${INSTALL} -# Create base layout of LibreELEC read-only file system +# Create base layout of read-only file system for directory in etc dev proc run sys tmp usr var flash storage; do mkdir -p ${INSTALL}/${directory} done @@ -374,7 +374,7 @@ if [ "${1}" = "release" -o "${1}" = "mkimage" -o "${1}" = "noobs" ]; then RELEASE_DIR="${TARGET_IMG}/${IMAGE_NAME}-${1}" - # eg. LibreELEC_RPi, LibreELEC_RPi2 etc. + # eg. Distro_RPi, Distro_RPi2 etc. NOOBS_DISTRO="${DISTRONAME}_${DEVICE:-${PROJECT}}" # Create release dir From c45a2ac11884efba090d076407fd275d32810645 Mon Sep 17 00:00:00 2001 From: Christian Hewitt Date: Mon, 7 Apr 2025 12:19:36 +0000 Subject: [PATCH 07/19] tools: unbranding changes for distro-tool Signed-off-by: Christian Hewitt --- tools/distro-tool | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/tools/distro-tool b/tools/distro-tool index 4ed0a2addd..b2164717bf 100755 --- a/tools/distro-tool +++ b/tools/distro-tool @@ -9,7 +9,7 @@ export NOONEXIT=yes [ -z "${DEBUG_LOG}" ] && DEBUG_LOG=/tmp/distro-tool.log -LIBREELEC_DIR=$HOME/LibreELEC.tv +DISTRO_DIR=$HOME/LibreELEC.tv TARGET_DIR=$HOME/sources DOWNLOAD_DIR=$HOME/download REVISION= @@ -737,15 +737,15 @@ Options: EOF } -get_libreelec_branch() { - cd $LIBREELEC_DIR +get_distro_branch() { + cd $DISTRO_DIR git rev-parse --abbrev-ref HEAD } # 1: LibreELEC variable, eg. DISTRO_VERSION -get_libreelec_option() { +get_distro_option() { local variable="$1" - cd $LIBREELEC_DIR + cd $DISTRO_DIR source config/options "" echo "${!variable}" } @@ -827,7 +827,7 @@ generate_work_worker() { : } - cd $LIBREELEC_DIR + cd $DISTRO_DIR source config/options "" @@ -845,8 +845,8 @@ generate_work_worker() { fi PKG_IS_ADDON=No - [[ ${PKG_DIR/${LIBREELEC_DIR}/} =~ ^/packages/addons/.* ]] && PKG_IS_ADDON=Yes - [[ ${PKG_DIR/${LIBREELEC_DIR}/} =~ ^/packages/mediacenter/kodi-binary-addons/.* ]] && PKG_IS_ADDON=Yes + [[ ${PKG_DIR/${DISTRO_DIR}/} =~ ^/packages/addons/.* ]] && PKG_IS_ADDON=Yes + [[ ${PKG_DIR/${DISTRO_DIR}/} =~ ^/packages/mediacenter/kodi-binary-addons/.* ]] && PKG_IS_ADDON=Yes echo " {" >>${workfile_o} for var in ${wanted_vars}; do @@ -883,7 +883,7 @@ get_packages() { local anchor="@?+?@" ( - cd $LIBREELEC_DIR + cd $DISTRO_DIR # Generate package caches... source config/options "" @@ -945,7 +945,7 @@ while [ : ]; do ;; -l | --libreelec) shift - LIBREELEC_DIR=$1 + DISTRO_DIR=$1 ;; -t | --target) shift @@ -1031,23 +1031,23 @@ done if [ ${DOGIT} = yes ]; then ( - if [ -d ${LIBREELEC_DIR}/.git ]; then - cd ${LIBREELEC_DIR} + if [ -d ${DISTRO_DIR}/.git ]; then + cd ${DISTRO_DIR} git pull else - mkdir -p $(dirname "${LIBREELEC_DIR}") 2>/dev/null - cd $(dirname "${LIBREELEC_DIR}") - git clone https://github.com/LibreELEC/LibreELEC.tv.git $(basename "${LIBREELEC_DIR}") + mkdir -p $(dirname "${DISTRO_DIR}") 2>/dev/null + cd $(dirname "${DISTRO_DIR}") + git clone https://github.com/LibreELEC/LibreELEC.tv.git $(basename "${DISTRO_DIR}") fi ) fi -check_exists LIBREELEC_DIR || exit -LIBREELEC_DIR="$(get_abs_path "${LIBREELEC_DIR}")" +check_exists DISTRO_DIR || exit +DISTRO_DIR="$(get_abs_path "${DISTRO_DIR}")" -DISTRO_SOURCE="$(get_libreelec_option DISTRO_SRC)" -DISTRO_MIRROR="$(get_libreelec_option DISTRO_MIRROR)" -DISTRO_VER="$(get_libreelec_option DISTRO_VERSION)" +DISTRO_SOURCE="$(get_distro_option DISTRO_SRC)" +DISTRO_MIRROR="$(get_distro_option DISTRO_MIRROR)" +DISTRO_VER="$(get_distro_option DISTRO_VERSION)" if [ ${IS_MIRROR} = no ]; then TARGET_DIR="$(get_abs_path "${TARGET_DIR}/${DISTRO_VER}")" @@ -1070,9 +1070,9 @@ fi echo if [ ${IS_MIRROR} = yes ]; then - echo "Synchronising LibreELEC.tv (branch: $(get_libreelec_branch), version: ${DISTRO_VER}) with MIRROR server ${TARGET_DIR}" + echo "Synchronising (branch: $(get_distro_branch), version: ${DISTRO_VER}) with MIRROR server ${TARGET_DIR}" else - echo "Synchronising LibreELEC.tv (branch: $(get_libreelec_branch), version: ${DISTRO_VER}) with SOURCE server ${TARGET_DIR}" + echo "Synchronising (branch: $(get_distro_branch), version: ${DISTRO_VER}) with SOURCE server ${TARGET_DIR}" fi echo echo "Distro Source is: ${DISTRO_SOURCE}" From fa90a43177bbe2fb583ab7c5cff58e6591362ba6 Mon Sep 17 00:00:00 2001 From: Christian Hewitt Date: Mon, 7 Apr 2025 12:25:03 +0000 Subject: [PATCH 08/19] treewide: unbrand LE_TMP to IMG_TMP Signed-off-by: Christian Hewitt --- projects/Amlogic/bootloader/mkimage | 16 ++--- projects/NXP/devices/iMX6/bootloader/mkimage | 6 +- projects/Samsung/bootloader/mkimage | 6 +- scripts/mkimage | 70 ++++++++++---------- 4 files changed, 49 insertions(+), 49 deletions(-) diff --git a/projects/Amlogic/bootloader/mkimage b/projects/Amlogic/bootloader/mkimage index 282600bd55..2bb4437a23 100644 --- a/projects/Amlogic/bootloader/mkimage +++ b/projects/Amlogic/bootloader/mkimage @@ -25,35 +25,35 @@ mkimage_bootini(){ mkimage_uEnv(){ echo "image: creating uEnv.ini" -cat << EOF > "${LE_TMP}/uEnv.ini" +cat << EOF > "${IMG_TMP}/uEnv.ini" dtb_name=/amlogic/${DTB} bootargs=boot=UUID=${UUID_SYSTEM} disk=UUID=${UUID_STORAGE} quiet ${EXTRA_CMDLINE} EOF - mcopy -s "${LE_TMP}/uEnv.ini" :: + mcopy -s "${IMG_TMP}/uEnv.ini" :: } mkimage_extlinux(){ echo "image: copying exlinux.conf" - mkdir -p "${LE_TMP}/extlinux" - cat << EOF > "${LE_TMP}/extlinux/extlinux.conf" + mkdir -p "${IMG_TMP}/extlinux" + cat << EOF > "${IMG_TMP}/extlinux/extlinux.conf" LABEL ${DISTRO} LINUX /${KERNEL_NAME} FDT /amlogic/${DTB} APPEND boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} quiet ${EXTRA_CMDLINE} EOF - mcopy -s -o "${LE_TMP}/extlinux" :: + mcopy -s -o "${IMG_TMP}/extlinux" :: } mkimage_extlinux_fdtdir(){ echo "image: copying exlinux.conf" - mkdir -p "${LE_TMP}/extlinux" - cat << EOF > "${LE_TMP}/extlinux/extlinux.conf" + mkdir -p "${IMG_TMP}/extlinux" + cat << EOF > "${IMG_TMP}/extlinux/extlinux.conf" LABEL ${DISTRO} LINUX /${KERNEL_NAME} FDTDIR / APPEND boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} quiet ${EXTRA_CMDLINE} EOF - mcopy -s -o "${LE_TMP}/extlinux" :: + mcopy -s -o "${IMG_TMP}/extlinux" :: } mkimage_dtb(){ diff --git a/projects/NXP/devices/iMX6/bootloader/mkimage b/projects/NXP/devices/iMX6/bootloader/mkimage index 1cdf3ca848..d497ed3e41 100644 --- a/projects/NXP/devices/iMX6/bootloader/mkimage +++ b/projects/NXP/devices/iMX6/bootloader/mkimage @@ -16,11 +16,11 @@ mcopy -s -o "${RELEASE_DIR}/3rdparty/bootloader"/imx6d*${UBOOT_SYSTEM}*.dtb :: mcopy -s -o "${RELEASE_DIR}/3rdparty/bootloader"/imx6q*${UBOOT_SYSTEM}*.dtb :: echo "image: copying exlinux.conf" -mkdir -p "${LE_TMP}/extlinux" -cat << EOF > "${LE_TMP}/extlinux/extlinux.conf" +mkdir -p "${IMG_TMP}/extlinux" +cat << EOF > "${IMG_TMP}/extlinux/extlinux.conf" LABEL ${DISTRO} LINUX /${KERNEL_NAME} FDTDIR / APPEND boot=UUID=${UUID_SYSTEM} disk=UUID=${UUID_STORAGE} quiet ${EXTRA_CMDLINE} EOF -mcopy -s -o "${LE_TMP}/extlinux" :: +mcopy -s -o "${IMG_TMP}/extlinux" :: diff --git a/projects/Samsung/bootloader/mkimage b/projects/Samsung/bootloader/mkimage index f5af45ab15..0e16dee79f 100644 --- a/projects/Samsung/bootloader/mkimage +++ b/projects/Samsung/bootloader/mkimage @@ -14,14 +14,14 @@ mkimage_uboot(){ mkimage_extlinux(){ echo "image: copying exlinux.conf" - mkdir -p "${LE_TMP}/extlinux" - cat << EOF > "${LE_TMP}/extlinux/extlinux.conf" + mkdir -p "${IMG_TMP}/extlinux" + cat << EOF > "${IMG_TMP}/extlinux/extlinux.conf" LABEL ${DISTRO} LINUX /${KERNEL_NAME} FDT /${DTB} APPEND boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} ${EXTRA_CMDLINE} EOF - mcopy -s -o "${LE_TMP}/extlinux" :: + mcopy -s -o "${IMG_TMP}/extlinux" :: } mkimage_dtb(){ diff --git a/scripts/mkimage b/scripts/mkimage index c29761ea4a..5e1a233a47 100755 --- a/scripts/mkimage +++ b/scripts/mkimage @@ -10,8 +10,8 @@ ################################################################################ # set variables -LE_TMP=$(mktemp -d -p ${TARGET_IMG}) -SAVE_ERROR="${LE_TMP}/save_error" +IMG_TMP=$(mktemp -d -p ${TARGET_IMG}) +SAVE_ERROR="${IMG_TMP}/save_error" if [ -z "${SYSTEM_SIZE}" -o -z "${SYSTEM_PART_START}" ]; then echo "mkimage: SYSTEM_SIZE and SYSTEM_PART_START must be configured!" @@ -27,7 +27,7 @@ DISK="${DISK_BASENAME}.img" # functions cleanup() { echo -e "image: cleanup...\n" - rm -rf "${LE_TMP}" + rm -rf "${IMG_TMP}" } show_error() { @@ -36,7 +36,7 @@ show_error() { if [ -s "${SAVE_ERROR}" ]; then cat "${SAVE_ERROR}" else - echo "Folder ${LE_TMP} might be out of free space..." + echo "Folder ${IMG_TMP} might be out of free space..." fi echo cleanup @@ -88,26 +88,26 @@ fi echo "image: creating sparse file for part2..." STORAGE_PART_COUNT=$((${STORAGE_PART_END} - ${STORAGE_PART_START} + 1)) sync -dd if="${DISK}" of="${LE_TMP}/part2.ext4" bs=512 count=0 seek="${STORAGE_PART_COUNT}" conv=fsync >"${SAVE_ERROR}" 2>&1 || show_error +dd if="${DISK}" of="${IMG_TMP}/part2.ext4" bs=512 count=0 seek="${STORAGE_PART_COUNT}" conv=fsync >"${SAVE_ERROR}" 2>&1 || show_error # create filesystem on part2 echo "image: creating filesystem on part2..." -mke2fs -F -q -t ext4 -O ^orphan_file -m 0 "${LE_TMP}/part2.ext4" -tune2fs -L "${DISTRO_DISKLABEL}" -U ${UUID_STORAGE} "${LE_TMP}/part2.ext4" >"${SAVE_ERROR}" 2>&1 || show_error -e2fsck -n "${LE_TMP}/part2.ext4" >"${SAVE_ERROR}" 2>&1 || show_error +mke2fs -F -q -t ext4 -O ^orphan_file -m 0 "${IMG_TMP}/part2.ext4" +tune2fs -L "${DISTRO_DISKLABEL}" -U ${UUID_STORAGE} "${IMG_TMP}/part2.ext4" >"${SAVE_ERROR}" 2>&1 || show_error +e2fsck -n "${IMG_TMP}/part2.ext4" >"${SAVE_ERROR}" 2>&1 || show_error sync # add resize mark -mkdir "${LE_TMP}/part2.fs" -touch "${LE_TMP}/part2.fs/.please_resize_me" +mkdir "${IMG_TMP}/part2.fs" +touch "${IMG_TMP}/part2.fs/.please_resize_me" echo "image: populating filesystem on part2..." -populatefs -U -d "${LE_TMP}/part2.fs" "${LE_TMP}/part2.ext4" >"${SAVE_ERROR}" 2>&1 || show_error +populatefs -U -d "${IMG_TMP}/part2.fs" "${IMG_TMP}/part2.ext4" >"${SAVE_ERROR}" 2>&1 || show_error sync -e2fsck -n "${LE_TMP}/part2.ext4" >"${SAVE_ERROR}" 2>&1 || show_error +e2fsck -n "${IMG_TMP}/part2.ext4" >"${SAVE_ERROR}" 2>&1 || show_error # merge part2 into disk image echo "image: merging part2 into disk image..." -dd if="${LE_TMP}/part2.ext4" of="${DISK}" bs=512 seek="${STORAGE_PART_START}" conv=fsync,notrunc >"${SAVE_ERROR}" 2>&1 || show_error +dd if="${IMG_TMP}/part2.ext4" of="${DISK}" bs=512 seek="${STORAGE_PART_START}" conv=fsync,notrunc >"${SAVE_ERROR}" 2>&1 || show_error # create disk image for virtual appliance if [ "${PROJECT}" = "Generic" ]; then @@ -120,24 +120,24 @@ fi echo "image: creating sparse file for part1..." SYSTEM_PART_COUNT=$((${SYSTEM_PART_END} - ${SYSTEM_PART_START} + 1)) sync -dd if=/dev/zero of="${LE_TMP}/part1.fat" bs=512 count=0 seek="${SYSTEM_PART_COUNT}" conv=fsync >"${SAVE_ERROR}" 2>&1 || show_error +dd if=/dev/zero of="${IMG_TMP}/part1.fat" bs=512 count=0 seek="${SYSTEM_PART_COUNT}" conv=fsync >"${SAVE_ERROR}" 2>&1 || show_error shopt -s expand_aliases # enables alias expansion in script -alias mcopy='mcopy -i "${LE_TMP}/part1.fat" -o' -alias mmd='mmd -i "${LE_TMP}/part1.fat"' +alias mcopy='mcopy -i "${IMG_TMP}/part1.fat" -o' +alias mmd='mmd -i "${IMG_TMP}/part1.fat"' # create filesystem on part1 echo "image: creating filesystem on part1..." if [ "${BOOTLOADER}" = "syslinux" -o "${BOOTLOADER}" = "bcm2835-bootloader" -o "${BOOTLOADER}" = "u-boot" ]; then - mformat -i "${LE_TMP}/part1.fat" -v "${DISTRO_BOOTLABEL}" -N "${UUID_SYSTEM//-/}" :: >"${SAVE_ERROR}" 2>&1 || show_error + mformat -i "${IMG_TMP}/part1.fat" -v "${DISTRO_BOOTLABEL}" -N "${UUID_SYSTEM//-/}" :: >"${SAVE_ERROR}" 2>&1 || show_error fi sync if [ "${BOOTLOADER}" = "syslinux" ]; then # create bootloader configuration echo "image: creating bootloader configuration..." - cat <"${LE_TMP}/syslinux.cfg" + cat <"${IMG_TMP}/syslinux.cfg" SAY Wait for installer mode to start automatically in 5 seconds... SAY SAY Options @@ -163,7 +163,7 @@ LABEL run APPEND boot=UUID=${UUID_SYSTEM} disk=UUID=${UUID_STORAGE} portable quiet EOF - cat <"${LE_TMP}/grub.cfg" + cat <"${IMG_TMP}/grub.cfg" set timeout="25" set default="Installer" menuentry "Installer" { @@ -180,11 +180,11 @@ menuentry "Run" { } EOF - mcopy "${LE_TMP}/syslinux.cfg" :: >"${SAVE_ERROR}" 2>&1 || show_error + mcopy "${IMG_TMP}/syslinux.cfg" :: >"${SAVE_ERROR}" 2>&1 || show_error # install syslinux echo "image: installing syslinux to part1..." - syslinux.mtools -i "${LE_TMP}/part1.fat" >"${SAVE_ERROR}" 2>&1 || show_error + syslinux.mtools -i "${IMG_TMP}/part1.fat" >"${SAVE_ERROR}" 2>&1 || show_error # copy files echo "image: copying files to part1..." @@ -197,16 +197,16 @@ EOF mcopy "${TOOLCHAIN}/share/syslinux/bootx64.efi" ::/EFI/BOOT >"${SAVE_ERROR}" 2>&1 || show_error mcopy "${TOOLCHAIN}/share/syslinux/ldlinux.e64" ::/EFI/BOOT >"${SAVE_ERROR}" 2>&1 || show_error mcopy "${TOOLCHAIN}/share/grub/bootia32.efi" ::/EFI/BOOT >"${SAVE_ERROR}" 2>&1 || show_error - mcopy "${LE_TMP}/grub.cfg" ::/EFI/BOOT >"${SAVE_ERROR}" 2>&1 || show_error + mcopy "${IMG_TMP}/grub.cfg" ::/EFI/BOOT >"${SAVE_ERROR}" 2>&1 || show_error elif [ "${BOOTLOADER}" = "bcm2835-bootloader" ]; then # create bootloader configuration echo "image: creating bootloader configuration..." - cat <"${LE_TMP}/cmdline.txt" + cat <"${IMG_TMP}/cmdline.txt" boot=UUID=${UUID_SYSTEM} disk=UUID=${UUID_STORAGE} quiet ${EXTRA_CMDLINE} EOF - mcopy "${LE_TMP}/cmdline.txt" :: >"${SAVE_ERROR}" 2>&1 || show_error + mcopy "${IMG_TMP}/cmdline.txt" :: >"${SAVE_ERROR}" 2>&1 || show_error # copy files echo "image: copying files to part1..." @@ -253,16 +253,16 @@ elif [ "${BOOTLOADER}" = "u-boot" -a -n "${UBOOT_SYSTEM}" ]; then mcopy -s "${RELEASE_DIR}/3rdparty/bootloader/overlays" :: >"${SAVE_ERROR}" 2>&1 || show_error fi - mkdir -p "${LE_TMP}/extlinux" + mkdir -p "${IMG_TMP}/extlinux" - cat <"${LE_TMP}/extlinux/extlinux.conf" + cat <"${IMG_TMP}/extlinux/extlinux.conf" LABEL ${DISTRO} LINUX /${KERNEL_NAME} FDT /${DTB} APPEND boot=UUID=${UUID_SYSTEM} disk=UUID=${UUID_STORAGE} quiet ${EXTRA_CMDLINE} EOF - mcopy -s "${LE_TMP}/extlinux" :: >"${SAVE_ERROR}" 2>&1 || show_error + mcopy -s "${IMG_TMP}/extlinux" :: >"${SAVE_ERROR}" 2>&1 || show_error fi if [ -f "${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}/bootloader/mkimage" ]; then @@ -288,27 +288,27 @@ fi # bootloader # run fsck echo "image: checking filesystem on part1..." sync -fsck.fat -n "${LE_TMP}/part1.fat" >"${SAVE_ERROR}" 2>&1 || show_error +fsck.fat -n "${IMG_TMP}/part1.fat" >"${SAVE_ERROR}" 2>&1 || show_error # merge part1 into disk image echo "image: merging part1 into disk image..." -dd if="${LE_TMP}/part1.fat" of="${DISK}" bs=512 seek="${SYSTEM_PART_START}" conv=fsync,notrunc >"${SAVE_ERROR}" 2>&1 || show_error +dd if="${IMG_TMP}/part1.fat" of="${DISK}" bs=512 seek="${SYSTEM_PART_START}" conv=fsync,notrunc >"${SAVE_ERROR}" 2>&1 || show_error # finalize virtual appliance if [ "${PROJECT}" = "Generic" ]; then # change syslinux default to 'run' echo "image: modifying files on part1 for open virtual appliance..." - sed -e "/DEFAULT/ s/installer/run/" -i "${LE_TMP}/syslinux.cfg" - sed -e "/set default=/s/\"Installer\"/\"Run\"/" -i "${LE_TMP}/grub.cfg" - mcopy "${LE_TMP}/syslinux.cfg" :: >"${SAVE_ERROR}" 2>&1 || show_error - mcopy "${LE_TMP}/grub.cfg" ::/EFI/BOOT >"${SAVE_ERROR}" 2>&1 || show_error + sed -e "/DEFAULT/ s/installer/run/" -i "${IMG_TMP}/syslinux.cfg" + sed -e "/set default=/s/\"Installer\"/\"Run\"/" -i "${IMG_TMP}/grub.cfg" + mcopy "${IMG_TMP}/syslinux.cfg" :: >"${SAVE_ERROR}" 2>&1 || show_error + mcopy "${IMG_TMP}/grub.cfg" ::/EFI/BOOT >"${SAVE_ERROR}" 2>&1 || show_error sync # run fsck echo "image: checking filesystem on part1..." - fsck.fat -n "${LE_TMP}/part1.fat" >"${SAVE_ERROR}" 2>&1 || show_error + fsck.fat -n "${IMG_TMP}/part1.fat" >"${SAVE_ERROR}" 2>&1 || show_error # merge modified part1 into tmp disk image echo "image: merging part1 into open virtual appliance..." - dd if="${LE_TMP}/part1.fat" of="${DISK_BASENAME}.tmp" bs=512 seek="${SYSTEM_PART_START}" conv=fsync,notrunc >"${SAVE_ERROR}" 2>&1 || show_error + dd if="${IMG_TMP}/part1.fat" of="${DISK_BASENAME}.tmp" bs=512 seek="${SYSTEM_PART_START}" conv=fsync,notrunc >"${SAVE_ERROR}" 2>&1 || show_error # create vmdk from tmp ${DISK} echo "image: creating vmdk for open virtual appliance..." qemu-img convert -O vmdk -o subformat=streamOptimized "${DISK_BASENAME}.tmp" "${DISK_BASENAME}.vmdk" From 49c5b6d70453f8ea3dab94c6fb76b154246e31e6 Mon Sep 17 00:00:00 2001 From: Christian Hewitt Date: Mon, 7 Apr 2025 12:31:56 +0000 Subject: [PATCH 09/19] distributions: relocate URL options in options file Signed-off-by: Christian Hewitt --- distributions/LibreELEC/options | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/distributions/LibreELEC/options b/distributions/LibreELEC/options index 4998b31463..06a48c90a9 100644 --- a/distributions/LibreELEC/options +++ b/distributions/LibreELEC/options @@ -6,8 +6,9 @@ # short project description DESCRIPTION="LibreELEC is a fast and user-friendly Kodi Entertainment Center distribution." - -### USER INTERFACE SETTINGS ### +# Distribution Specific source location + DISTRO_MIRROR="http://sources.libreelec.tv/mirror" + DISTRO_SRC="http://sources.libreelec.tv/$DISTRO_VERSION" # Welcome Message for e.g. SSH Server (up to 5 Lines) GREETING0="##############################################" @@ -170,10 +171,6 @@ ### KODI ADDONS ### -# Distribution Specific source location - DISTRO_MIRROR="http://sources.libreelec.tv/mirror" - DISTRO_SRC="http://sources.libreelec.tv/$DISTRO_VERSION" - # Addon Server Url ADDON_SERVER_URL="https://addons.libreelec.tv" From addfbf42b25ec38a31969efe937da7590bdcf390 Mon Sep 17 00:00:00 2001 From: Christian Hewitt Date: Mon, 7 Apr 2025 12:39:43 +0000 Subject: [PATCH 10/19] treewide: set DISTRO_HOME_URL from options Signed-off-by: Christian Hewitt --- distributions/LibreELEC/options | 3 +++ scripts/image | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/distributions/LibreELEC/options b/distributions/LibreELEC/options index 06a48c90a9..11964fd396 100644 --- a/distributions/LibreELEC/options +++ b/distributions/LibreELEC/options @@ -10,6 +10,9 @@ DISTRO_MIRROR="http://sources.libreelec.tv/mirror" DISTRO_SRC="http://sources.libreelec.tv/$DISTRO_VERSION" +# Distribution Home URL + DISTRO_HOME_URL="https://libreelec.tv" + # Welcome Message for e.g. SSH Server (up to 5 Lines) GREETING0="##############################################" GREETING1="# LibreELEC #" diff --git a/scripts/image b/scripts/image index 24bcfd2490..343d06cad7 100755 --- a/scripts/image +++ b/scripts/image @@ -170,7 +170,7 @@ VERSION="${DISTRO_VERSION}" ID="${DISTRONAME,,}" VERSION_ID="${OS_VERSION}" PRETTY_NAME="${DISTRONAME} (${DISTRO_BUILD}): ${DISTRO_VERSION}" -HOME_URL="https://libreelec.tv" +HOME_URL="${DISTRO_HOME_URL}" BUG_REPORT_URL="${ORIGIN_URL}" BUILD_ID="${GIT_HASH}" DISTRO_ARCH="${DISTRO_ARCH}" From 92797638daa5202652e1000a306a4ffccaf0c673 Mon Sep 17 00:00:00 2001 From: Christian Hewitt Date: Mon, 7 Apr 2025 12:41:57 +0000 Subject: [PATCH 11/19] distributions: use https sources and minor cleanups Signed-off-by: Christian Hewitt --- distributions/LibreELEC/options | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/distributions/LibreELEC/options b/distributions/LibreELEC/options index 11964fd396..c98866d21a 100644 --- a/distributions/LibreELEC/options +++ b/distributions/LibreELEC/options @@ -1,19 +1,19 @@ ### DISTRO INFORMATION ### -# Name of the Distro to build (full name, without special characters) +# Distro name (full name, without special characters) DISTRONAME="LibreELEC" -# short project description +# Short distro description DESCRIPTION="LibreELEC is a fast and user-friendly Kodi Entertainment Center distribution." -# Distribution Specific source location - DISTRO_MIRROR="http://sources.libreelec.tv/mirror" - DISTRO_SRC="http://sources.libreelec.tv/$DISTRO_VERSION" +# Distribution Source location + DISTRO_MIRROR="https://sources.libreelec.tv/mirror" + DISTRO_SRC="https://sources.libreelec.tv/$DISTRO_VERSION" # Distribution Home URL DISTRO_HOME_URL="https://libreelec.tv" -# Welcome Message for e.g. SSH Server (up to 5 Lines) +# Welcome Message for SSH Server (up to 5 Lines) GREETING0="##############################################" GREETING1="# LibreELEC #" GREETING2="# https://libreelec.tv #" From 2525a6d73df9e20e1165f5d5b47d568d4b129398 Mon Sep 17 00:00:00 2001 From: Christian Hewitt Date: Mon, 7 Apr 2025 13:47:59 +0000 Subject: [PATCH 12/19] Generic: unbrand ovf.template Signed-off-by: Christian Hewitt --- projects/Generic/config/ovf.template | 12 ++++++------ scripts/image | 1 + scripts/mkimage | 4 +++- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/projects/Generic/config/ovf.template b/projects/Generic/config/ovf.template index 7184beb6cf..35fa502d73 100644 --- a/projects/Generic/config/ovf.template +++ b/projects/Generic/config/ovf.template @@ -19,14 +19,14 @@ xmlns:vssd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemS @DISTRO@ Meta-information about the installed software - LibreELEC - LibreELEC - https://libreelec.tv - https://libreelec.tv + @DISTRO@ + @DISTRO@ + @DISTRO_HOME_URL@ + @DISTRO_HOME_URL@ A human-readable annotation - LibreELEC is ‘Just enough OS’ for Kodi, a Linux distribution built to run Kodi on current and popular mediacentre hardware. After importing the OVA image adjust CPU, RAM, and HDD storage to the required configuration before first boot. + After importing the OVA image, adjust CPU, RAM, and HDD storage to the required configuration before first boot. The kind of installed guest operating system @@ -35,7 +35,7 @@ xmlns:vssd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemS Virtual Hardware Family 0 - LibreELEC + @DISTRO@ vmx-12 diff --git a/scripts/image b/scripts/image index 343d06cad7..66fe6f5183 100755 --- a/scripts/image +++ b/scripts/image @@ -38,6 +38,7 @@ function do_mkimage() { PROJECT="${PROJECT}" \ DEVICE="${DEVICE}" \ DISTRO="${DISTRO}" \ + DISTRO_HOME_URL="${DISTRO_HOME_URL}" \ TARGET_IMG="${TARGET_IMG}" \ BUILD_NAME="${IMAGE_NAME}" \ IMAGE_NAME="${1:-${IMAGE_NAME}}" \ diff --git a/scripts/mkimage b/scripts/mkimage index 5e1a233a47..1823ed3667 100755 --- a/scripts/mkimage +++ b/scripts/mkimage @@ -313,7 +313,9 @@ if [ "${PROJECT}" = "Generic" ]; then echo "image: creating vmdk for open virtual appliance..." qemu-img convert -O vmdk -o subformat=streamOptimized "${DISK_BASENAME}.tmp" "${DISK_BASENAME}.vmdk" # generate ovf from template - sed -e "s,@DISTRO@,${DISTRO},g" -e "s,@DISK@,${IMAGE_NAME},g" \ + sed -e "s,@DISTRO@,${DISTRO},g" \ + -e "s,@DISTRO_HOME_URL@,${DISTRO_HOME_URL},g" \ + -e "s,@DISK@,${IMAGE_NAME},g" \ -e "s,@OVA_SIZE@,$((${OVA_SIZE} * 1024 * 1024)),g" \ "${PROJECT_DIR}/${PROJECT}/config/ovf.template" >"${DISK_BASENAME}.ovf" # combine ovf and vmdk into official ova From d7c7c37ab2699165a07e3af2d9b5d2803f782732 Mon Sep 17 00:00:00 2001 From: Christian Hewitt Date: Sat, 19 Apr 2025 15:40:47 +0000 Subject: [PATCH 13/19] installer: unbrand and use @DISTRONAME@ Signed-off-by: Christian Hewitt --- packages/tools/installer/scripts/installer | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/tools/installer/scripts/installer b/packages/tools/installer/scripts/installer index 54164aa5ee..9967cbf89f 100755 --- a/packages/tools/installer/scripts/installer +++ b/packages/tools/installer/scripts/installer @@ -281,9 +281,9 @@ EOF cat << EOF > $TMPDIR/part1/EFI/BOOT/grub.cfg set timeout="0" -set default="LibreELEC" +set default="@DISTRONAME@" -menuentry "LibreELEC" { +menuentry "@DISTRONAME@" { search --set -f /KERNEL linux /KERNEL boot=UUID=$UUID_SYSTEM disk=UUID=$UUID_STORAGE quiet } From c5bc81b3feddc18e0fd68251eae89a1e09ccb3b2 Mon Sep 17 00:00:00 2001 From: Christian Hewitt Date: Mon, 7 Apr 2025 16:40:35 +0000 Subject: [PATCH 14/19] treewide: move DRIVER_ADDONS_SUPPORT to distribution options Note: the digital_devices package only builds for x86_64 arch. Signed-off-by: Christian Hewitt --- distributions/LibreELEC/options | 8 ++++++++ projects/Amlogic/options | 8 -------- projects/Generic/options | 8 -------- projects/NXP/options | 8 -------- projects/Qualcomm/devices/Dragonboard/options | 8 -------- projects/RPi/options | 8 -------- projects/Rockchip/options | 8 -------- projects/Samsung/options | 8 -------- 8 files changed, 8 insertions(+), 56 deletions(-) diff --git a/distributions/LibreELEC/options b/distributions/LibreELEC/options index c98866d21a..6fb122e338 100644 --- a/distributions/LibreELEC/options +++ b/distributions/LibreELEC/options @@ -259,3 +259,11 @@ # Space separated list is supported, # e.g. ADDITIONAL_PACKAGES="PACKAGE1 PACKAGE2" ADDITIONAL_PACKAGES="" + +# build and install driver addons (yes / no) + DRIVER_ADDONS_SUPPORT="no" + +# driver addons to install: +# for a list of additional drivers see packages/linux-driver-addons +# Space separated list is supported, + DRIVER_ADDONS="crazycat digital_devices dvb-latest" diff --git a/projects/Amlogic/options b/projects/Amlogic/options index 3cd89e6d95..d95b36116a 100644 --- a/projects/Amlogic/options +++ b/projects/Amlogic/options @@ -66,14 +66,6 @@ # e.g. ADDITIONAL_DRIVERS+=" DRIVER1 DRIVER2" ADDITIONAL_DRIVERS+="" - # build and install driver addons (yes / no) - DRIVER_ADDONS_SUPPORT="no" - - # driver addons to install: - # for a list of additional drivers see packages/linux-driver-addons - # Space separated list is supported, - DRIVER_ADDONS="crazycat dvb-latest" - # additional packages to install: ADDITIONAL_PACKAGES+=" dtc ethmactool emmctool flashrom pciutils" diff --git a/projects/Generic/options b/projects/Generic/options index d23531047e..0b2da2ef49 100644 --- a/projects/Generic/options +++ b/projects/Generic/options @@ -62,14 +62,6 @@ # e.g. ADDITIONAL_DRIVERS+=" DRIVER1 DRIVER2" ADDITIONAL_DRIVERS+="" - # build and install driver addons (yes / no) - DRIVER_ADDONS_SUPPORT="no" - - # driver addons to install: - # for a list of additional drivers see packages/linux-driver-addons - # Space separated list is supported, - DRIVER_ADDONS="crazycat digital_devices dvb-latest" - # Default size of the ova image, in MB, eg. 4096 OVA_SIZE="4096" diff --git a/projects/NXP/options b/projects/NXP/options index 38758016fb..05820bf8e6 100644 --- a/projects/NXP/options +++ b/projects/NXP/options @@ -52,14 +52,6 @@ # KODI Player implementation to use (default / bcm2835-driver / libfslvpuwrap) KODIPLAYER_DRIVER="mesa" - # build and install driver addons (yes / no) - DRIVER_ADDONS_SUPPORT="no" - - # driver addons to install: - # for a list of additional drivers see packages/linux-driver-addons - # Space separated list is supported, - DRIVER_ADDONS="crazycat dvb-latest" - # additional Firmware to use (dvb-firmware, misc-firmware, wlan-firmware) # Space separated list is supported, # e.g. FIRMWARE="dvb-firmware misc-firmware wlan-firmware" diff --git a/projects/Qualcomm/devices/Dragonboard/options b/projects/Qualcomm/devices/Dragonboard/options index f7dda9d0a8..dd56d1faba 100644 --- a/projects/Qualcomm/devices/Dragonboard/options +++ b/projects/Qualcomm/devices/Dragonboard/options @@ -85,14 +85,6 @@ # e.g. FIRMWARE="dvb-firmware misc-firmware wlan-firmware" FIRMWARE="misc-firmware wlan-firmware dvb-firmware firmware-dragonboard" - # build and install driver addons (yes / no) - DRIVER_ADDONS_SUPPORT="no" - - # driver addons to install: - # for a list of additional drivers see packages/linux-driver-addons - # Space separated list is supported, - DRIVER_ADDONS="crazycat dvb-latest" - # build with installer (yes / no) INSTALLER_SUPPORT="no" diff --git a/projects/RPi/options b/projects/RPi/options index dbba3f22fd..8552dfa420 100644 --- a/projects/RPi/options +++ b/projects/RPi/options @@ -80,14 +80,6 @@ ADDITIONAL_DRIVERS+=" rpi-cirrus-config" fi - # build and install driver addons (yes / no) - DRIVER_ADDONS_SUPPORT="no" - - # driver addons to install: - # for a list of additional drivers see packages/linux-driver-addons - # Space separated list is supported, - DRIVER_ADDONS="crazycat dvb-latest" - # additional packages to install: ADDITIONAL_PACKAGES+=" bcm2835-utils dtc" diff --git a/projects/Rockchip/options b/projects/Rockchip/options index 83d79af254..0ddd428fea 100644 --- a/projects/Rockchip/options +++ b/projects/Rockchip/options @@ -73,13 +73,5 @@ # Start boot partition at 16MiB, same as https://github.com/rockchip-linux/build images SYSTEM_PART_START=32768 - # build and install driver addons (yes / no) - DRIVER_ADDONS_SUPPORT="no" - - # driver addons to install: - # for a list of additinoal drivers see packages/linux-driver-addons - # Space separated list is supported, - DRIVER_ADDONS="dvb-latest" - # debug tty path DEBUG_TTY="/dev/ttyS2" diff --git a/projects/Samsung/options b/projects/Samsung/options index 2fb31ebbdd..5928b2d023 100644 --- a/projects/Samsung/options +++ b/projects/Samsung/options @@ -73,14 +73,6 @@ # e.g. ADDITIONAL_DRIVERS+=" DRIVER1 DRIVER2" ADDITIONAL_DRIVERS+="" - # build and install driver addons (yes / no) - DRIVER_ADDONS_SUPPORT="no" - - # driver addons to install: - # for a list of additional drivers see packages/linux-driver-addons - # Space separated list is supported, - DRIVER_ADDONS="crazycat dvb-latest" - # use the kernel CEC framework for libcec (yes / no) CEC_FRAMEWORK_SUPPORT="yes" From 4130b59b509511be2ea62c2696f407d9551594e9 Mon Sep 17 00:00:00 2001 From: Christian Hewitt Date: Thu, 10 Apr 2025 15:01:10 +0000 Subject: [PATCH 15/19] distributions: add LEIoT distro Signed-off-by: Christian Hewitt --- distributions/LEIoT/LEIoT.png | Bin 0 -> 1218 bytes distributions/LEIoT/LEIoT_40x40.png | Bin 0 -> 919 bytes distributions/LEIoT/kernel_options | 1 + distributions/LEIoT/options | 269 +++++++++++++++++++++ distributions/LEIoT/show_config | 3 + distributions/LEIoT/splash/splash-1080.png | Bin 0 -> 6264 bytes distributions/LEIoT/splash/splash-1200.png | Bin 0 -> 6637 bytes distributions/LEIoT/splash/splash-2160.png | Bin 0 -> 17262 bytes distributions/LEIoT/splash/splash-720.png | Bin 0 -> 3743 bytes distributions/LEIoT/splash/splash-768.png | Bin 0 -> 3694 bytes distributions/LEIoT/version | 5 + 11 files changed, 278 insertions(+) create mode 100644 distributions/LEIoT/LEIoT.png create mode 100644 distributions/LEIoT/LEIoT_40x40.png create mode 120000 distributions/LEIoT/kernel_options create mode 100644 distributions/LEIoT/options create mode 100644 distributions/LEIoT/show_config create mode 100644 distributions/LEIoT/splash/splash-1080.png create mode 100644 distributions/LEIoT/splash/splash-1200.png create mode 100644 distributions/LEIoT/splash/splash-2160.png create mode 100644 distributions/LEIoT/splash/splash-720.png create mode 100644 distributions/LEIoT/splash/splash-768.png create mode 100644 distributions/LEIoT/version diff --git a/distributions/LEIoT/LEIoT.png b/distributions/LEIoT/LEIoT.png new file mode 100644 index 0000000000000000000000000000000000000000..5f2bfec24478965656cddf6c4938a3dd2b2def58 GIT binary patch literal 1218 zcmV;z1U>tSP)}xm z0umCR1Ox>V5|sxB`Tzh45)y_82m}%np9KXY4-cLN1%(I*h6e`*5)us&5r78=Iu8$f z2nUY`2X+Vu5D^gy5)l9s5`72=2@w$^5D001En5Q7H?aR>>42nU%4 z1(5~^02CE*2?_@h5s(H3dI$-M2L^u!2apE`02UUJ2L_l12ATy09}f?k1_mDw5OxR& z0TdK|2?>)01$GJwbqWdq6&8R93400(fC&kK2?Am-6dbyqP zU(a$==L0n((#=3zSdBj`m%f47MFf)(s9dOQS37sn3*qtoiiJlkq20s05BSAf@l#Q>b!V__)O@A;e1a-5oBOIq4E4k z8ZrGsHzd|!Oc6jU61+PmtBV-J5U7INK|F2H1R3F*f|n-@@dfBs7cmQ8gLvI=4zxwA zY-3*#FAXDJ!*QW+qt~GGaxY4}Zt(KTQSRH~ZK3jV45iu_e7t&@q+wOWQjgQ9wZZcJ zLU8emKQ;hky%xlni*;=)H za2JCN6pzh%K4|(x7zXA36MVcgKc?k_)Hh-b&oT5_=R+GGMu~jTaZoeZ(DD*yHU2Qr z`9L@D96-{@`||-|n42;4NF7(SPld(OSL4V-gYC@`=SHV_6gW^o@890DoLuo959NLNAVScU{}wFR{D zVJn5vD&qJd5w~T_mNC{rvIG&curL_lM68CvnvtML7Dd6xK%lz%;ZpFtYOVKeSNG+*2VpOWji%N|-#-fs% zsxjjp02ozv*1?PbO4t1bnG7ft6ys-pFPE7SiX_CtFb@GZ&T$|l1cZhHN?!nQhhZcb ziz#(N=mTIG04EEbkX-^GoRH%Ptpea;Sur7jgft+IB?J*-L+~R(Xh5hMA%;?&AhbXz z#dtf$H3&%vu^@DtVg3|}1dM|zeg5(+8%SvcAzDG06p3sI@q|D^@&#d>Vayzg#MlNQ zN5}-jYyj{S06T(WN>%^}qV$j;*dekY&H>pL$m#`NM5zNpGvewI)boNBaiN%J2PS~U1g#klKXN~vUn0JL( zdHS4nX<%E(T#4l0$FE9N{Fw=Us_c&|SSqSa&6+-Upy2!~QpnE-?he`?yI`{9{ubU- znb0-)Ai}j7-JbVrXP8AB-LL+@%b#pG)xFp?m=qt|l2Gv(?L0ceZ?W2$>E_*)&ctFm zzbm4??XK&=fzpNVf};C}$8~A?Hcg6YcI!InE{vR9Zt6d+c`s_+tj@jfxV5w#=Jb>VE^6=&P7#j|F`j+~A`PlkJHwmP$X q#Z~;~`=4YvuYtMIsgu(K@HvSI<4>{8S literal 0 HcmV?d00001 diff --git a/distributions/LEIoT/kernel_options b/distributions/LEIoT/kernel_options new file mode 120000 index 0000000000..1c8f75ccda --- /dev/null +++ b/distributions/LEIoT/kernel_options @@ -0,0 +1 @@ +distributions/LibreELEC/kernel_options \ No newline at end of file diff --git a/distributions/LEIoT/options b/distributions/LEIoT/options new file mode 100644 index 0000000000..11218ce958 --- /dev/null +++ b/distributions/LEIoT/options @@ -0,0 +1,269 @@ +### DISTRO INFORMATION ### + +# Distro name (full name, without special characters) + DISTRONAME="LEIoT" + +# Short distro description + DESCRIPTION="LibreELEC for IoT (LEIoT) is a simple appliance OS for containers." + +# Distribution Source location + DISTRO_MIRROR="https://src.leiot.org/mirror" + DISTRO_SRC="https://src.leiot.org/$DISTRO_VERSION" + +# Distribution Home URL + DISTRO_HOME_URL="https://leiot.org" + +# Welcome Message for SSH Server (up to 5 Lines) + GREETING0="##############################################" + GREETING1="# LEIoT #" + GREETING2="# https://leiot.org #" + GREETING3="##############################################" + GREETING4="" + +# Root password to integrate in the target system + ROOT_PASSWORD="libreelec" + +# Partition labels for USB/SD installation media + DISTRO_BOOTLABEL="LEIOT" + DISTRO_DISKLABEL="STORAGE" + + +### BUILDSYSTEM SETTINGS #### + +# LTO (Link Time Optimization) support + LTO_SUPPORT="yes" + +# GOLD (Google Linker) support + GOLD_SUPPORT="yes" + +# MOLD (Modern Linker) support + MOLD_SUPPORT="no" + +# default linker (bfd / gold / mold) + DEFAULT_LINKER="gold" + +# HARDENING (security relevant linker and compiler flags) support + HARDENING_SUPPORT="no" + +# Default supported get handlers (archive, git, file etc.) + GET_HANDLER_SUPPORT="archive" + +# use local ccache on build host, if available, for early package +# builds before ccache has been built + LOCAL_CCACHE_SUPPORT="yes" + +### OS CONFIGURATION ### + +# Install glibc locales to the build (yes / no) + GLIBC_LOCALES="yes" + +# Install arm-mem package on ARM32 (yes / no) + if [ "${TARGET_ARCH}" = "arm" ]; then + ARM_MEM_SUPPORT="yes" + else + ARM_MEM_SUPPORT="no" + fi + +# additional drivers to install: +# for a list of additional drivers see packages/linux-drivers +# Space separated list is supported, +# e.g. ADDITIONAL_DRIVERS="DRIVER1 DRIVER2" + ADDITIONAL_DRIVERS="" + +# Default size of system partition, in MB, eg. 512 + SYSTEM_SIZE=1024 + +# Default system partition offset, in sectors, eg. 2048 + SYSTEM_PART_START=8192 + +# Size of storage partition, in MB. Must be >=32 + STORAGE_SIZE=32 + +# build with swap support (yes / no) + SWAP_SUPPORT="yes" + +# swap support enabled per default (yes / no) + SWAP_ENABLED_DEFAULT="yes" + +# swapfile size if SWAP_SUPPORT=yes in MB + SWAPFILESIZE="2048" + +# debug tty path + DEBUG_TTY="/dev/tty3" + +# local console login prompt (yes / no) + LOCAL_LOGIN="yes" + +### KODI SETTINGS ### +# Mediacenter to use (kodi / no) + MEDIACENTER="no" + +# Skins to install (Estuary) +# Space separated list is supported, +# e.g. SKINS="Estuary" + SKINS="" + +# Default Skin (Estuary) + SKIN_DEFAULT="" + +# install extra subtitle Fonts for KODI (yes / no) + KODI_EXTRA_FONTS="no" + +# build and install PulseAudio support (yes / no) + PULSEAUDIO_SUPPORT="no" + +# build and install pipewire support (yes / no) + PIPEWIRE_SUPPORT="no" + +# build and install eSpeak-NG support (yes / no) + ESPEAK_SUPPORT="no" + +# build and install with BluRay support (yes / no) + KODI_BLURAY_SUPPORT="no" + +# build and install with BD+ support +# (BD+ decryption support in KODI) (yes / no) + BLURAY_BDPLUS_SUPPORT="no" + +# build and install with AACS support +# (BD decryption support in KODI) (yes / no) + BLURAY_AACS_SUPPORT="no" + +# build and install with DVDCSS support +# (DVD decryption support in KODI) (yes / no) + KODI_DVDCSS_SUPPORT="no" + +# build and install bluetooth support (yes / no) + BLUETOOTH_SUPPORT="no" + +# build and install with KODI webfrontend (yes / no) + KODI_WEBSERVER_SUPPORT="no" + +# build and install Avahi (Zeroconf) daemon (yes / no) + AVAHI_DAEMON="yes" + +# build with UPnP support (yes / no) + KODI_UPNP_SUPPORT="yes" + +# build with MySQL support (mariadb / none) + KODI_MYSQL_SUPPORT="mariadb" + +# build Kodi with optical drive support (yes / no) + KODI_OPTICAL_SUPPORT="yes" + +# build with AirPlay support (stream videos from iDevices to KODI) (yes / no) + KODI_AIRPLAY_SUPPORT="yes" + +# build with AirTunes support (stream music from iDevices to KODI) (yes / no) + KODI_AIRTUNES_SUPPORT="yes" + +# build with libnfs support (mounting nfs shares with KODI) (yes / no) + KODI_NFS_SUPPORT="yes" + +# build with Samba Client support (mounting SAMBA shares with KODI) (yes / no) + KODI_SAMBA_SUPPORT="yes" + +# build kodi with alsa support (yes/no) + KODI_ALSA_SUPPORT="yes" + +# build kodi with pulseaudio support (yes/no) + KODI_PULSEAUDIO_SUPPORT="yes" + +# build kodi with pipewire support (yes/no) + KODI_PIPEWIRE_SUPPORT="no" + +### KODI ADDONS ### + +# Addon Server Url + ADDON_SERVER_URL="https://addons.libreelec.tv" + +# set the default addon project + ADDON_PROJECT="${DEVICE:-$PROJECT}" + +# Settings package name - blank if not required + DISTRO_PKG_SETTINGS="" + DISTRO_PKG_SETTINGS_ID="" + + +### ADDITIONAL PROGRAMS / FUNCTIONS ### + +# Testpackages for development (yes / no) + TESTING="no" + +# Configure debug groups (space delimited key=value pairs, with each value comma-delimited) and default group when DEBUG=yes +# Use ! or - prefix to prevent a dependent package from being built with debug. Add + suffix to build dependenencies with debug. + DEBUG_GROUPS="" + DEBUG_GROUP_YES="" + +# build and install iSCSI support - iscsistart (yes / no) + ISCSI_SUPPORT="no" + +# build with NFS support (mounting nfs shares via the OS) (yes / no) + NFS_SUPPORT="no" + +# build with Samba Client support (mounting samba shares via the OS) (yes / no) + SAMBA_SUPPORT="no" + +# build and install Samba Server (yes / no) + SAMBA_SERVER="no" + +# build and install SFTP Server (yes / no) + SFTP_SERVER="yes" + +# build and install OpenVPN support (yes / no) + OPENVPN_SUPPORT="yes" + +# build and install WireGuard support (yes / no) + WIREGUARD_SUPPORT="yes" + +# build and install diskmounter support (udevil) +# this service provide auto mounting support for external drives in the +# mediacenter also automount internally drives at boottime via udev (yes / no) + UDEVIL="yes" + +# Support for partitioning and formatting disks in initramfs (yes / no) +# This adds support for parted and mkfs.ext3/4 to initramfs for OEM usage + INITRAMFS_PARTED_SUPPORT="no" + +# build and install nano text editor (yes / no) + NANO_EDITOR="yes" + +# cron support (yes / no) + CRON_SUPPORT="yes" + +# build with installer (yes / no) + INSTALLER_SUPPORT="yes" + +# build and install remote support (yes / no) + REMOTE_SUPPORT="no" + +# IR remote keymaps supported in default config + IR_REMOTE_KEYMAPS="rc6_mce xbox_360 xbox_one" + +# build and install Joystick support (yes / no) + JOYSTICK_SUPPORT="no" + +# build and install CEC adapter support (yes / no) + CEC_SUPPORT="no" + +# build and install CEC framework support (yes / no) + CEC_FRAMEWORK_SUPPORT="no" + +# OEM packages for OEM's (yes / no) + OEM_SUPPORT="no" + +# build and install ALSA Audio support (yes / no) + ALSA_SUPPORT="no" + +# additional packages to install: +# Space separated list is supported, +# e.g. ADDITIONAL_PACKAGES="PACKAGE1 PACKAGE2" + ADDITIONAL_PACKAGES="avahi curl docker htop Python3" + +# build and install driver addons (yes / no) + DRIVER_ADDONS_SUPPORT="no" + +# driver addons to install: +# for a list of additional drivers see packages/linux-driver-addons +# Space separated list is supported, + DRIVER_ADDONS="" diff --git a/distributions/LEIoT/show_config b/distributions/LEIoT/show_config new file mode 100644 index 0000000000..d187eb59ab --- /dev/null +++ b/distributions/LEIoT/show_config @@ -0,0 +1,3 @@ +show_distro_config() { + : no-op +} diff --git a/distributions/LEIoT/splash/splash-1080.png b/distributions/LEIoT/splash/splash-1080.png new file mode 100644 index 0000000000000000000000000000000000000000..3325fbf147205c7205cfd6699825429062ad503e GIT binary patch literal 6264 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 C#~={^ literal 0 HcmV?d00001 diff --git a/distributions/LEIoT/splash/splash-1200.png b/distributions/LEIoT/splash/splash-1200.png new file mode 100644 index 0000000000000000000000000000000000000000..0f1eba7698b2353bcab8a19b318b9cc6ee369c8f GIT binary patch literal 6637 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 pnDl9G`yb~1DW>=UMmXhwW8nHseR1s?_6 Date: Sat, 19 Apr 2025 11:23:30 +0000 Subject: [PATCH 16/19] docker-compose: add initial package Signed-off-by: Christian Hewitt --- .../docker/docker-compose/package.mk | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 packages/addons/addon-depends/docker/docker-compose/package.mk diff --git a/packages/addons/addon-depends/docker/docker-compose/package.mk b/packages/addons/addon-depends/docker/docker-compose/package.mk new file mode 100644 index 0000000000..7447c15e60 --- /dev/null +++ b/packages/addons/addon-depends/docker/docker-compose/package.mk @@ -0,0 +1,32 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2025-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="docker-compose" +PKG_VERSION="2.35.1" +PKG_LICENSE="Apache-2.0" +PKG_SITE="https://github.com/docker/compose" +PKG_LONGDESC="Define and run multi-container applications with Docker." +PKG_TOOLCHAIN="manual" + +case ${ARCH} in + x86_64) + PKG_URL="${PKG_SITE}/releases/download/v${PKG_VERSION}/docker-compose-linux-x86_64" + PKG_SHA256="7bdb2ce2916e5dd0354e5d129892bf96fdcdb1a9ab8eed69b9173e131db4c230" + ;; + aarch64) + PKG_URL="${PKG_SITE}/releases/download/v${PKG_VERSION}/docker-compose-linux-aarch64" + PKG_SHA256="a91e930a076b91e6c69f11d1dbe3c06729ae765fb9dbb3f97cb808e784647399" + ;; + arm) + PKG_URL="${PKG_SITE}/releases/download/v${PKG_VERSION}/docker-compose-linux-armv7" + PKG_SHA256="50aba1c8fe1eb8efefede3dab9e6c2226ba756a5ffa5cf4f4f5baadaee9a7455" + ;; +esac + +PKG_SOURCE_NAME="docker-compose-linux-${ARCH}-${PKG_VERSION}" + +unpack() { + mkdir -p ${PKG_BUILD} + cp -P ${SOURCES}/${PKG_NAME}/${PKG_SOURCE_NAME} ${PKG_BUILD}/docker-compose + chmod +x ${PKG_BUILD}/docker-compose +} From f0a7445fb4c240cdcad7926ab7f7dc31809e18cd Mon Sep 17 00:00:00 2001 From: Christian Hewitt Date: Mon, 10 Jun 2024 08:22:49 +0000 Subject: [PATCH 17/19] docker: add support for docker:target with docker-compose --- .../addons/service/docker/config/docker.conf | 2 + .../addons/service/docker/lib/dockermon.py | 161 ++++++++++++++++++ packages/addons/service/docker/package.mk | 39 ++++- .../service/docker/system.d/docker.service | 23 +++ .../docker/tmpfiles.d/z_05_docker.conf | 4 + 5 files changed, 228 insertions(+), 1 deletion(-) create mode 100644 packages/addons/service/docker/config/docker.conf create mode 100755 packages/addons/service/docker/lib/dockermon.py create mode 100644 packages/addons/service/docker/system.d/docker.service create mode 100644 packages/addons/service/docker/tmpfiles.d/z_05_docker.conf diff --git a/packages/addons/service/docker/config/docker.conf b/packages/addons/service/docker/config/docker.conf new file mode 100644 index 0000000000..acc6e63df4 --- /dev/null +++ b/packages/addons/service/docker/config/docker.conf @@ -0,0 +1,2 @@ +DOCKER_DAEMON_OPTS="--data-root=/storage/docker" +DOCKER_STORAGE_OPTS="--storage-driver=overlay2" diff --git a/packages/addons/service/docker/lib/dockermon.py b/packages/addons/service/docker/lib/dockermon.py new file mode 100755 index 0000000000..2a973bc355 --- /dev/null +++ b/packages/addons/service/docker/lib/dockermon.py @@ -0,0 +1,161 @@ +#!/usr/bin/env python +"""docker monitor using docker /events HTTP streaming API""" +"""https://github.com/CyberInt/dockermon""" + +from contextlib import closing +from functools import partial +from socket import socket, AF_UNIX, timeout +from subprocess import Popen, PIPE +from sys import stdout, version_info +import json +import shlex + +if version_info[:2] < (3, 0): + from httplib import OK as HTTP_OK + from urlparse import urlparse +else: + from http.client import OK as HTTP_OK + from urllib.parse import urlparse + +__version__ = '0.2.2' +# buffer size must be 256 or lower otherwise events won't show in realtime +bufsize = 256 +default_sock_url = 'ipc:///var/run/docker.sock' + + +class DockermonError(Exception): + pass + + +def read_http_header(sock): + """Read HTTP header from socket, return header and rest of data.""" + buf = [] + hdr_end = '\r\n\r\n' + + while True: + buf.append(sock.recv(bufsize).decode('utf-8')) + data = ''.join(buf) + i = data.find(hdr_end) + if i == -1: + continue + return data[:i], data[i + len(hdr_end):] + + +def header_status(header): + """Parse HTTP status line, return status (int) and reason.""" + status_line = header[:header.find('\r')] + # 'HTTP/1.1 200 OK' -> (200, 'OK') + fields = status_line.split(None, 2) + return int(fields[1]), fields[2] + + +def connect(url): + """Connect to UNIX or TCP socket. + + url can be either tcp://:port or ipc:// + """ + url = urlparse(url) + if url.scheme == 'tcp': + sock = socket() + netloc = tuple(url.netloc.rsplit(':', 1)) + hostname = socket.gethostname() + elif url.scheme == 'ipc': + sock = socket(AF_UNIX) + netloc = url.path + hostname = 'localhost' + else: + raise ValueError('unknown socket type: %s' % url.scheme) + + sock.connect(netloc) + return sock, hostname + + +def watch(callback, url=default_sock_url, run=None): + """Watch docker events. Will call callback with each new event (dict). + + url can be either tcp://:port or ipc:// + """ + sock, hostname = connect(url) + if run: + sock.settimeout(1.5) + request = 'GET /events HTTP/1.1\nHost: %s\n\n' % hostname + request = request.encode('utf-8') + + with closing(sock): + sock.sendall(request) + header, payload = read_http_header(sock) + status, reason = header_status(header) + if status != HTTP_OK: + raise DockermonError('bad HTTP status: %s %s' % (status, reason)) + + # Messages are \r\n\r\n + buf = [payload] + while True: + try: + chunk = sock.recv(bufsize) + except timeout: + if run(): + continue + if run and not run(): + raise DockermonError('stopped') + if not chunk: + raise EOFError('socket closed') + buf.append(chunk.decode('utf-8')) + data = ''.join(buf) + i = data.find('\r\n') + if i == -1: + continue + + size = int(data[:i], 16) + start = i + 2 # Skip initial \r\n + + if len(data) < start + size + 2: + continue + payload = data[start:start+size] + callback(json.loads(payload)) + buf = [data[start+size+2:]] # Skip \r\n suffix + + +def print_callback(msg): + """Print callback, prints message to stdout as JSON in one line.""" + json.dump(msg, stdout) + stdout.write('\n') + stdout.flush() + + +def prog_callback(prog, msg): + """Program callback, calls prog with message in stdin""" + pipe = Popen(prog, stdin=PIPE) + data = json.dumps(msg) + pipe.stdin.write(data.encode('utf-8')) + pipe.stdin.close() + + +if __name__ == '__main__': + from argparse import ArgumentParser + + parser = ArgumentParser(description=__doc__) + parser.add_argument('--prog', default=None, + help='program to call (e.g. "jq --unbuffered .")') + parser.add_argument( + '--socket-url', default=default_sock_url, + help='socket url (ipc:///path/to/sock or tcp:///host:port)') + parser.add_argument( + '--version', help='print version and exit', + action='store_true', default=False) + args = parser.parse_args() + + if args.version: + print('dockermon %s' % __version__) + raise SystemExit + + if args.prog: + prog = shlex.split(args.prog) + callback = partial(prog_callback, prog) + else: + callback = print_callback + + try: + watch(callback, args.socket_url) + except (KeyboardInterrupt, EOFError): + pass diff --git a/packages/addons/service/docker/package.mk b/packages/addons/service/docker/package.mk index a7e056349b..a1166a48e5 100644 --- a/packages/addons/service/docker/package.mk +++ b/packages/addons/service/docker/package.mk @@ -6,7 +6,7 @@ PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="ASL" PKG_SITE="http://www.docker.com/" -PKG_DEPENDS_TARGET="cli containerd ctop moby runc tini" +PKG_DEPENDS_TARGET="cli containerd ctop docker-compose moby runc tini" PKG_SECTION="service/system" PKG_SHORTDESC="Docker is an open-source engine that automates the deployment of any application as a lightweight, portable, self-sufficient container that will run virtually anywhere." PKG_LONGDESC="Docker containers can encapsulate any payload, and will run consistently on and between virtually any server. The same container that a developer builds and tests on a laptop will run at scale, in production*, on VMs, bare-metal servers, OpenStack clusters, public instances, or combinations of the above." @@ -43,3 +43,40 @@ addon() { post_install_addon() { sed -e "s/@DISTRO_PKG_SETTINGS_ID@/${DISTRO_PKG_SETTINGS_ID}/g" -i "${INSTALL}/default.py" } + +post_makeinstall_target() { + mkdir -p ${INSTALL}/etc + # docker.conf + cp -P ${PKG_DIR}/config/docker.conf ${INSTALL}/etc + + mkdir -p ${INSTALL}/usr/bin + # dockermon.py + cp -P ${PKG_DIR}/lib/dockermon.py ${INSTALL}/usr/bin/dockermon + + # cli + cp -P $(get_build_dir cli)/bin/docker ${INSTALL}/usr/bin + + # moby + cp -P $(get_build_dir moby)/bin/dockerd ${INSTALL}/usr/bin + cp -P $(get_build_dir moby)/bin/docker-proxy ${INSTALL}/usr/bin/docker-proxy + + # containerd + cp -P $(get_build_dir containerd)/bin/containerd ${INSTALL}/usr/bin/containerd + cp -P $(get_build_dir containerd)/bin/containerd-shim-runc-v2 ${INSTALL}/usr/bin/containerd-shim-runc-v2 + + # ctop + cp -P $(get_build_dir ctop)/bin/ctop ${INSTALL}/usr/bin/ctop + + # docker-compose + cp -P $(get_build_dir docker-compose)/docker-compose ${INSTALL}/usr/bin/docker-compose + + # runc + cp -P $(get_build_dir runc)/bin/runc ${INSTALL}/usr/bin/runc + + # tini + cp -P $(get_build_dir tini)/.${TARGET_NAME}/tini-static ${INSTALL}/usr/bin/docker-init +} + +post_install() { + enable_service docker.service +} diff --git a/packages/addons/service/docker/system.d/docker.service b/packages/addons/service/docker/system.d/docker.service new file mode 100644 index 0000000000..61008ba6b7 --- /dev/null +++ b/packages/addons/service/docker/system.d/docker.service @@ -0,0 +1,23 @@ +[Unit] +Description=Docker Application Container Engine +Documentation=https://docs.docker.com +After=network.target + +[Service] +Type=notify +EnvironmentFile=-/etc/docker.conf +ExecStart=/usr/bin/dockerd --exec-opt native.cgroupdriver=systemd \ + --log-driver=journald \ + --group=root \ + $DOCKER_DAEMON_OPTS \ + $DOCKER_STORAGE_OPTS +ExecReload=/bin/kill -s HUP $MAINPID +TasksMax=8192 +LimitNOFILE=1048576 +LimitNPROC=1048576 +LimitCORE=infinity +TimeoutStartSec=0 +Restart=on-abnormal + +[Install] +WantedBy=multi-user.target diff --git a/packages/addons/service/docker/tmpfiles.d/z_05_docker.conf b/packages/addons/service/docker/tmpfiles.d/z_05_docker.conf new file mode 100644 index 0000000000..b5c233efef --- /dev/null +++ b/packages/addons/service/docker/tmpfiles.d/z_05_docker.conf @@ -0,0 +1,4 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2025-present Team LibreELEC (https://libreelec.tv) + +d /storage/docker 0755 root root - - From ef377a261eeb8d990e3b164fbe5eb692b6fc9917 Mon Sep 17 00:00:00 2001 From: Christian Hewitt Date: Sun, 20 Apr 2025 04:21:22 +0000 Subject: [PATCH 18/19] openssh: support SSH_ENABLED_DEFAULT option Signed-off-by: Christian Hewitt --- distributions/LEIoT/options | 3 +++ distributions/LibreELEC/options | 3 +++ packages/network/openssh/package.mk | 3 +++ 3 files changed, 9 insertions(+) diff --git a/distributions/LEIoT/options b/distributions/LEIoT/options index 11218ce958..8221c23829 100644 --- a/distributions/LEIoT/options +++ b/distributions/LEIoT/options @@ -94,6 +94,9 @@ # local console login prompt (yes / no) LOCAL_LOGIN="yes" +# Enable SSH on boot (yes / no) + SSH_ENABLED_DEFAULT="yes" + ### KODI SETTINGS ### # Mediacenter to use (kodi / no) MEDIACENTER="no" diff --git a/distributions/LibreELEC/options b/distributions/LibreELEC/options index 6fb122e338..f01cbd74d3 100644 --- a/distributions/LibreELEC/options +++ b/distributions/LibreELEC/options @@ -94,6 +94,9 @@ # local console login prompt (yes / no) LOCAL_LOGIN="no" +# Enable SSH on boot (yes / no) + SSH_ENABLED_DEFAULT="no" + ### KODI SETTINGS ### # Mediacenter to use (kodi / no) MEDIACENTER="kodi" diff --git a/packages/network/openssh/package.mk b/packages/network/openssh/package.mk index a7f1c0b3ca..fe33245d2a 100644 --- a/packages/network/openssh/package.mk +++ b/packages/network/openssh/package.mk @@ -55,5 +55,8 @@ post_makeinstall_target() { } post_install() { + if [ "${SSH_ENABLED_DEFAULT}" = "yes" ]; then + sed -e "\|^Condition.*|d" -i ${INSTALL}/usr/lib/systemd/system/sshd.service + fi enable_service sshd.service } From b40bee501829972afb4b0bc74ce23d8316bce0ae Mon Sep 17 00:00:00 2001 From: Christian Hewitt Date: Sun, 20 Apr 2025 04:50:04 +0000 Subject: [PATCH 19/19] busybox: ledfix should not depend on kodi or gui Signed-off-by: Christian Hewitt --- packages/sysutils/busybox/system.d/ledfix.service | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/sysutils/busybox/system.d/ledfix.service b/packages/sysutils/busybox/system.d/ledfix.service index 5fbafbc56c..dade743d04 100644 --- a/packages/sysutils/busybox/system.d/ledfix.service +++ b/packages/sysutils/busybox/system.d/ledfix.service @@ -1,8 +1,6 @@ [Unit] Description=LEDfix Service -After=network-online.target graphical.target -Requires=graphical.target -Wants=kodi.target +After=network-online.target [Service] Type=oneshot @@ -11,4 +9,4 @@ RemainAfterExit=yes StartLimitInterval=0 [Install] -WantedBy=kodi.target +WantedBy=multi-user.target