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 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4rT@hhPm4t-!L#RNS3%plmzFem6RtIr7}3C zwFg01+1(qSXdZ^g#Iuv)NpeCWnf?t z5^Cq*U=kMo$-uxbC^(UgjYCMNk%Oa)gM(Q}h)+;(HXAFukkAA+_9hNaMqyzlA))y! zEUZF8Q`y;nF)(ln3AJ%>um}myXJu99=by*Q+RDMv#?Hjqfk9C~pqZV$kb|?4gMB6&>qIto z1`*LhPA+yq!3k_^RUDjM>}>Vy>=W488N|dUva`)#W1GdwD$mb9n~hDLU!aVGlTk#Z zj+1jTD{C1SS1A`4gQ!>o2WK@GR|6+!BPXW^A0M}%AhU?b6m||KVWHm)3@QQwtir-m z*w~h{u>50SXyN3X%gQ>3g=H=at1};8AIQrbli1iMv9pVS!cc@kSok{wgP@>b#Jqc% z3=B*+JY5_^DsH`*{ybdDQQ*M!BAqIg8BC1~Nd{6I92OlD<1X{4aDF1dN&%-`;uz&FNHGiK^H%r%ytF_ArD7K4FQR#S$c+^anmEkAr-v^}ixcM(iU zuvz%=kB5}uUng^wYl%LB4%$L{tkqU`OB@zh(RAC$#uZ)VRX?J96 zoj(2LssR1qo}b&#WM8Pb8MU>hK)jhpr2lM{UB)jL3AU&IglqN~+b?_Ce8oJ8=e*&U z$mh<|@@}0q7YYN6Z(R5!lxF(R;KEM_^A9o(mrnft%$PW1w&7wd4`+;?J?~g3t{urLO{OC57 zUq^peO02Da|K&h{@sl~RHWs^b?=vgUVwAXjv^n|x)o=Sb|8W>F2=t47$y)m*d)e9EGB8L9 z36*kid}UzhV`F0x5@Hn+YUJQ#6B6PO5^CXKkLBiW_S43+}x)a z8Ou01WCaCV*x5OSgibRu{$gPG!obkV!OkKq^pSyqUsyPbo4b{rqnv}YgPpC5oh^o& zi&gPpyMgR_ByJ%)?BmV>j7gR_O5qmP}vnVr3fgQJI?J%)>mMMyZBo4b>Zt%`%A zosF%JovnF!XRiE=zHA`D{y{}$;@a%&-MkYwZR9;x%h}PPaB883`Msj*1)e|t*Q-UR_mw^V z=>F;QZ=1g+wZCd7i{JV4oasBuqsSJfJ8O;!%sM((fq(D8-1SFNL%+rGRH^T=ebUhP ztJR*PAa0Q}YkhdwTLtzvf+9{&Zm!o_d$KDg$hm2WaMHYuQ88bog(UorWdHpxl{2-C z<>cR%8!P6!uNBJTob;P>*WdB7LxA-p6-gXn_YQl zsfs1Hx~R+j+PAyp#qOu@ynL_7>(147n(JcriJgMH%mt1<*C+T#Pm4OZWX&o*cS=wq$v@@(xe$J6tu5b*rDx+oPwY-ld&iEId2sCf6Uf z@SE2=%?f&TlZ77{NjFS<-1pi){poUkIB*IAKG^``&r5T zxZJ_6`;YsMCwrU$ll$#et$w>&k4we9mlx0#Zhy4CP~(T#>D9^4B98Zb*>K@q&$RGk z2SsgpJ{$?X@Tu1J((jw$2d6p5dz^~AzEzc7qMCj3IXQ;POC?ve{;~+4lhgF*o6^5& zXYWL#=lx|8nnBa{Ty|Z5@m7UL?#I4leTNL6-n|U>k6*00zDqQL;jg6NCOw@=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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 F0szLMP=x>h literal 0 HcmV?d00001 diff --git a/distributions/LEIoT/splash/splash-2160.png b/distributions/LEIoT/splash/splash-2160.png new file mode 100644 index 0000000000000000000000000000000000000000..aa189f1eec46808ab4e013a0a77a03c9a437f864 GIT binary patch literal 17262 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 literal 0 HcmV?d00001 diff --git a/distributions/LEIoT/splash/splash-768.png b/distributions/LEIoT/splash/splash-768.png new file mode 100644 index 0000000000000000000000000000000000000000..03cfe66b4886ccf3194db6d3257ad9ea4993f04c GIT binary patch literal 3694 zcmeAS@N?(olHy`uVBq!ia0y~yU}0cjU}oT8W?*3GO?hh1z`!6`;u=vBoS#-wo>-L1 z;Fyx1l&avFo0y&&l$w}QS$HzlhJk^>IKU^wHH?j6vp7R1Kf`$$23baidBP0FObo}Q z8H%_V+*la)NHRo}FM7H-hE&{obLVB*Yzu~l zz_JaIXMWqiRXICnTk;c@#vHXL_vYJas)*EzWt%bEhouQOFfcGNa4;w^P>Vr5li)5I zHIjNEKs}S7(ZkW;OXU>QKu%gb@V{#J-G8s&E`GFs{u9pY*Lqy%KHr}4|KI1`^^tpO zOTIV9zhS!>@TBs0hVJzmtz)O3du!zRC%TI?Y-V2|xvc2UC-CU)Cc6>eMn zT%iq8c0;;hjjx&AHkJji%-3&~VRc|&Nx09|)$%ymnL%&&Iom5t3Jgpe+-t2(7^cs4 zm%r}Cz~aEbC-;9gbHUBpZx8n|faE{C`ncbe;rH?Xi@@9s*9xpn7(!y*F10b3@XLRD-TlDo*rK|U%NOEjFE}~xP@e{aI=4dw(*?e>eeq^$3=jWZ zdHj5TiMU(p65CsFzfL8YBLS~H80CngQ6$lw`N1$z2f}55{6d? zR>W1O2g&~WYYZ~+#-1Bx|DIf%qt5a`>c#n2m-&+)v~z3+T$4@p+qCuyCMc`vj zknBHhu=T+V%PQ}`w*1ESK_tUkZ336wHy%o(n3WZY4GGF%hn8U4A8 zHA}0r7`l4B#Xw18`W%)stY8BjKnVwIHpmrdLX3E25g_ zv6?Sx+>p#15LU0hV>c+&94r`8FWM+FZ2wo3!jO0UV>#2TMIsb{=m!0*-`yR_QIwE>(B408gu z-uXJ4g)w8g^Hv)@hKrwPWmP67h%qo)ERMdka8`T!tKY{jb2As%OXwGVo@I7NfKi~~ zGJ8VR?-hP>4Mopaw(ezo@n}<+{`IR|4GeRF5?1v6X1<`mziG8N+k%_Zx90r3{ftS0 zVY!K}f5UzGgZUf>{<7@4Z@#gE_rTxd@4x>w4Xk$&pCQ80z%a*O@W-YzW$X&vGNI;A zUo%Z$?_>Pc!FeEwv6X@2fTr%V-)Chi&+2UH*MIgq_CfU5PR13?jH}kY4!hPa1WHzO zf`nxbe?7;b)2DPR%b#%(^9GB@7HjkzWM?_n)JlVr-S;bP`_^o~$N#5Vetq-fES-3f zhTp$`fFMm4y@A~6k^e(Ss(Aoc{zI5rT)6-cJW^R4G{{4q{ z-JfTd3ft)Hs;>o^Sn1Dn=Tv|1O`hQ0mJE&Eb@JIxy6oGCXiw&i-9&){B<-n{T7j&dmPpGLD?3{ZUI1XgCzMqiUetO?g zHuYPn^Y>~nJls5^@_Qz;UhR(s%LN%2E!Mj~KX!VL{;sv{4E^hspOhNf{1r%8CpR}Y z=kp?o>8mBW{#`uTD7u}ItAU~Bac;Tyv-P!mv@YwGIWv^)y^(Pklwcp+o;6RfA-4a& zDu=@^hO3(yI1a2l&ot#c$AKDK6NYNJtQZ?l6$Yk)w7bDf1)BW44y!uPp5j(wQee0r z{pm#(&s}QR 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