From 6ba1d61468433c43b8e819728200588763bc9f8b Mon Sep 17 00:00:00 2001 From: MichaIng Date: Wed, 10 May 2023 21:06:07 +0200 Subject: [PATCH 001/106] Init v8.18 - DietPi-Software | Restic: Resolved an issue where Restic was installed without executable flag. Many thanks to @ for reporting this issue: https://github.com/MichaIng/DietPi/pull/6350 --- .meta/dietpi-survey_report | 10 ++++++++-- .update/version | 4 ++-- CHANGELOG.txt | 16 ++++++++++++++++ dietpi/dietpi-software | 1 + dietpi/func/dietpi-globals | 4 ++-- 5 files changed, 29 insertions(+), 6 deletions(-) diff --git a/.meta/dietpi-survey_report b/.meta/dietpi-survey_report index 5a2a556c8b..3ec091a3f7 100755 --- a/.meta/dietpi-survey_report +++ b/.meta/dietpi-survey_report @@ -663,10 +663,16 @@ shopt -s extglob aSOFTWARE_NAME8_17[208]='Moonlight (GUI)' aSOFTWARE_NAME8_17[209]='Restic' + aSOFTWARE_NAME8_18=() + for i in "${!aSOFTWARE_NAME8_17[@]}" + do + aSOFTWARE_NAME8_18[$i]=${aSOFTWARE_NAME8_16[$i]} + done + # Pre-create software counter array so that we can see also software (available in newest version) with 0 installs - for i in "${aSOFTWARE_NAME8_17[@]}" + for i in "${aSOFTWARE_NAME8_18[@]}" do - aSOFTWARE["$i"]=0 + aSOFTWARE[i]=0 done # $1 = File name diff --git a/.update/version b/.update/version index 0b06dddb90..41640ace32 100644 --- a/.update/version +++ b/.update/version @@ -2,8 +2,8 @@ # shellcheck disable=SC2034 # Available DietPi version G_REMOTE_VERSION_CORE=8 -G_REMOTE_VERSION_SUB=17 -G_REMOTE_VERSION_RC=2 +G_REMOTE_VERSION_SUB=18 +G_REMOTE_VERSION_RC=-1 # Minimum DietPi version to allow update G_MIN_VERSION_CORE=6 G_MIN_VERSION_SUB=14 diff --git a/CHANGELOG.txt b/CHANGELOG.txt index cbb8bac5f2..a9860b12f8 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,3 +1,19 @@ +v8.18 +(2023-06-03) + +New software: +- + +Enhancements: +- + +Bug fixes: +- DietPi-Software | Restic: Resolved an issue where Restic was installed without executable flag. Many thanks to @ for reporting this issue: https://github.com/MichaIng/DietPi/pull/6350#issuecomment-1537656560 + +As always, many smaller code performance and stability improvements, visual and spelling fixes have been done, too much to list all of them here. Check out all code changes of this release on GitHub: https://github.com/MichaIng/DietPi/pull/XXXX + +----------------------------------------------------------------------------------------------------------- + v8.17 (2023-05-06) diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index 973ded07ba..ca2feac074 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -11701,6 +11701,7 @@ _EOF_ local fallback_url="https://github.com/restic/restic/releases/download/v0.15.2/restic_0.15.2_linux_$arch.bz2" Download_Install "$(curl -sSfL 'https://api.github.com/repos/restic/restic/releases/latest' | mawk -F\" "/^ * \"browser_download_url\": \".*\/restic_[^\"\/]*_linux_$arch\.bz2\"$/{print \$4}")" /usr/local/bin/restic + G_EXEC chmod +x /usr/local/bin/restic fi if To_Install 205 # Homer diff --git a/dietpi/func/dietpi-globals b/dietpi/func/dietpi-globals index 52e01b155a..ec153f0b30 100644 --- a/dietpi/func/dietpi-globals +++ b/dietpi/func/dietpi-globals @@ -58,8 +58,8 @@ [[ -f '/boot/dietpi/.version' ]] && . /boot/dietpi/.version # - Assign defaults/code version as fallback [[ $G_DIETPI_VERSION_CORE ]] || G_DIETPI_VERSION_CORE=8 - [[ $G_DIETPI_VERSION_SUB ]] || G_DIETPI_VERSION_SUB=17 - [[ $G_DIETPI_VERSION_RC ]] || G_DIETPI_VERSION_RC=2 + [[ $G_DIETPI_VERSION_SUB ]] || G_DIETPI_VERSION_SUB=18 + [[ $G_DIETPI_VERSION_RC ]] || G_DIETPI_VERSION_RC=-1 [[ $G_GITBRANCH ]] || G_GITBRANCH='master' [[ $G_GITOWNER ]] || G_GITOWNER='MichaIng' # - Save current version and Git branch From 5f70a208fc09a18f7fa2f5a3ce48b99590248eda Mon Sep 17 00:00:00 2001 From: Joulinar <47155374+Joulinar@users.noreply.github.com> Date: Wed, 10 May 2023 21:57:08 +0200 Subject: [PATCH 002/106] v8.18 (#6371) - DietPi-Software | Domoticz: Resolved an issue where the installation failed when trying to unpack the tarball. Many thanks to @mcnahum for reporting this issue: https://github.com/MichaIng/DietPi/issues/6369 --- CHANGELOG.txt | 1 + dietpi/dietpi-software | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index a9860b12f8..312809d967 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -9,6 +9,7 @@ Enhancements: Bug fixes: - DietPi-Software | Restic: Resolved an issue where Restic was installed without executable flag. Many thanks to @ for reporting this issue: https://github.com/MichaIng/DietPi/pull/6350#issuecomment-1537656560 +- DietPi-Software | Domoticz: Resolved an issue where the installation failed when trying to unpack the tarball. Many thanks to @mcnahum for reporting this issue: https://github.com/MichaIng/DietPi/issues/6369 As always, many smaller code performance and stability improvements, visual and spelling fixes have been done, too much to list all of them here. Check out all code changes of this release on GitHub: https://github.com/MichaIng/DietPi/pull/XXXX diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index ca2feac074..539cb41d16 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -11552,7 +11552,7 @@ _EOF_ # APT deps aDEPS=('libusb-0.1-4') - Download_Install "https://releases.domoticz.com/releases/release/domoticz_linux_${G_HW_ARCH_NAME/armv6l/armv7l}.tgz" domoticz + Download_Install "https://releases.domoticz.com/releases/release/domoticz_linux_${G_HW_ARCH_NAME/armv6l/armv7l}.tgz" ./domoticz # Reinstall: Clean old install dir [[ -d '/opt/domoticz' ]] && G_EXEC rm -R /opt/domoticz G_EXEC mv domoticz /opt/ From 6736daae769847a35418bf3fc08e1623101c791f Mon Sep 17 00:00:00 2001 From: MichaIng Date: Wed, 10 May 2023 22:05:09 +0200 Subject: [PATCH 003/106] v8.18 - CHANGELOG | Satisfy shellcheck --- CHANGELOG.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 312809d967..d7fdc0cc4d 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -2,10 +2,10 @@ v8.18 (2023-06-03) New software: -- +- Enhancements: -- +- Bug fixes: - DietPi-Software | Restic: Resolved an issue where Restic was installed without executable flag. Many thanks to @ for reporting this issue: https://github.com/MichaIng/DietPi/pull/6350#issuecomment-1537656560 From 20c04ad1b785c4528f902b88a4c9eb3835ae74a2 Mon Sep 17 00:00:00 2001 From: Daniel Kutka Date: Wed, 10 May 2023 23:18:59 +0200 Subject: [PATCH 004/106] v8.18 (#6370) - Quartz64 | Enabled (software) RAID and LVM support. Many thanks to @dano6 for implementing this: https://github.com/MichaIng/DietPi/pull/6370 --- .build/images/Quartz64/quartz64_defconfig | 9 +++++++++ CHANGELOG.txt | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/.build/images/Quartz64/quartz64_defconfig b/.build/images/Quartz64/quartz64_defconfig index 5f4572bda7..b1d3e7a093 100644 --- a/.build/images/Quartz64/quartz64_defconfig +++ b/.build/images/Quartz64/quartz64_defconfig @@ -408,6 +408,15 @@ CONFIG_SATA_MV=y CONFIG_PATA_PLATFORM=y CONFIG_PATA_OF_PLATFORM=y CONFIG_MD=y +CONFIG_MD_LINEAR=m +CONFIG_MD_RAID0=m +CONFIG_MD_RAID1=m +CONFIG_MD_RAID10=m +CONFIG_MD_RAID456=m +CONFIG_MD_MULTIPATH=m +CONFIG_MD_FAULTY=m +CONFIG_MD_CLUSTER=m + CONFIG_BLK_DEV_MD=m CONFIG_BLK_DEV_DM=m CONFIG_DM_MIRROR=m diff --git a/CHANGELOG.txt b/CHANGELOG.txt index d7fdc0cc4d..27796bc980 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -5,7 +5,7 @@ New software: - Enhancements: -- +- Quartz64 | Enabled (software) RAID and LVM support. Many thanks to @dano6 for implementing this: https://github.com/MichaIng/DietPi/pull/6370 Bug fixes: - DietPi-Software | Restic: Resolved an issue where Restic was installed without executable flag. Many thanks to @ for reporting this issue: https://github.com/MichaIng/DietPi/pull/6350#issuecomment-1537656560 From 8d54e0ecdc9fac715d3acc1676aed444f4d8fbe1 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Thu, 11 May 2023 20:17:07 +0200 Subject: [PATCH 005/106] v8.18 - dietpi-bookworm-upgrade | Migrate add new non-free-firmware component --- .meta/dietpi-bookworm-upgrade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.meta/dietpi-bookworm-upgrade b/.meta/dietpi-bookworm-upgrade index 126b9f70d1..4dbb455e2c 100755 --- a/.meta/dietpi-bookworm-upgrade +++ b/.meta/dietpi-bookworm-upgrade @@ -33,7 +33,7 @@ G_DIETPI-NOTIFY 2 'Updating DietPi to latest version' /boot/dietpi/dietpi-update 1 G_DIETPI-NOTIFY 2 'Migrating package lists to Bookworm suite' -G_EXEC sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list +G_EXEC sed -i -e 's/bullseye/bookworm/g' -e 's/ non-free$/ non-free non-free-firmware/' /etc/apt/sources.list [[ $(find /etc/apt/sources.list/*.list 2> /dev/null) ]] && G_EXEC sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list.d/*.list [[ -f '/etc/apt/sources.list.d/dietpi-mympd.list' ]] && G_EXEC sed -i 's/Debian_11/Debian_Testing/' /etc/apt/sources.list.d/dietpi-mympd.list From 139cffc3e1adab166806642e4b2be9b38b6f93b7 Mon Sep 17 00:00:00 2001 From: StephanStS Date: Sat, 13 May 2023 17:19:43 +0200 Subject: [PATCH 006/106] v8.18 (#6378) - META | DietPi-Survey_report: Fix v8.18 software list --- .meta/dietpi-survey_report | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.meta/dietpi-survey_report b/.meta/dietpi-survey_report index 3ec091a3f7..91f8536b78 100755 --- a/.meta/dietpi-survey_report +++ b/.meta/dietpi-survey_report @@ -666,7 +666,7 @@ shopt -s extglob aSOFTWARE_NAME8_18=() for i in "${!aSOFTWARE_NAME8_17[@]}" do - aSOFTWARE_NAME8_18[$i]=${aSOFTWARE_NAME8_16[$i]} + aSOFTWARE_NAME8_18[$i]=${aSOFTWARE_NAME8_17[$i]} done # Pre-create software counter array so that we can see also software (available in newest version) with 0 installs From 035ec2f82c4fd2ac816dd7d1cb56bfce658be0b3 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Wed, 17 May 2023 18:22:44 +0200 Subject: [PATCH 007/106] v8.18 - DietPi-Software | motionEye: Resolved an issue where the installation failed on ARMv6, ARMv7 and RISC-V Bookworm systems due to missing build dependencies. Many thanks to @magicfoxt-magicfox for reporting this issue: https://github.com/MichaIng/DietPi/issues/6333 --- CHANGELOG.txt | 1 + dietpi/dietpi-software | 13 +++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 27796bc980..e1f36a4205 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -10,6 +10,7 @@ Enhancements: Bug fixes: - DietPi-Software | Restic: Resolved an issue where Restic was installed without executable flag. Many thanks to @ for reporting this issue: https://github.com/MichaIng/DietPi/pull/6350#issuecomment-1537656560 - DietPi-Software | Domoticz: Resolved an issue where the installation failed when trying to unpack the tarball. Many thanks to @mcnahum for reporting this issue: https://github.com/MichaIng/DietPi/issues/6369 +- DietPi-Software | motionEye: Resolved an issue where the installation failed on ARMv6, ARMv7 and RISC-V Bookworm systems due to missing build dependencies. Many thanks to @magicfoxt-magicfox for reporting this issue: https://github.com/MichaIng/DietPi/issues/6333 As always, many smaller code performance and stability improvements, visual and spelling fixes have been done, too much to list all of them here. Check out all code changes of this release on GitHub: https://github.com/MichaIng/DietPi/pull/XXXX diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index 539cb41d16..ed826965c5 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -9125,8 +9125,17 @@ _EOF_ if To_Install 136 motioneye # motionEye then - # x86_64/ARMv8 dependencies: libcurl4-openssl-dev gcc libssl-dev for pycurl build - [[ $G_HW_MODEL == [12] ]] || G_AGI libcurl4-openssl-dev gcc libssl-dev + # APT deps + # - ARMv6/7 Bookworm + RISC-V: libcurl4-openssl-dev gcc libssl-dev for pycurl, libjpeg-dev for Pillow + if (( ( $G_HW_ARCH < 3 && $G_DISTRO > 6 ) || $G_HW_ARCH == 11 )) + then + G_AGI libcurl4-openssl-dev gcc libssl-dev libjpeg-dev + + # - ARMv8/x86_64: + elif (( $G_HW_ARCH > 2 )) + then + G_AGI libcurl4-openssl-dev gcc libssl-dev + fi # RPi: Enable camera module (( $G_HW_MODEL > 9 )) || /boot/dietpi/func/dietpi-set_hardware rpi-camera enable From cf88052de7e6f6c7b9deea3ef0b24af2c773f7a8 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Wed, 17 May 2023 18:29:33 +0200 Subject: [PATCH 008/106] v8.18 - Tiny --- dietpi/dietpi-software | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index ed826965c5..a11169825e 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -9131,7 +9131,7 @@ _EOF_ then G_AGI libcurl4-openssl-dev gcc libssl-dev libjpeg-dev - # - ARMv8/x86_64: + # - ARMv8/x86_64 elif (( $G_HW_ARCH > 2 )) then G_AGI libcurl4-openssl-dev gcc libssl-dev From 0821e06f51f6e78d0fb9f28f17a13d0597846694 Mon Sep 17 00:00:00 2001 From: pulpe <45254364+pulpe@users.noreply.github.com> Date: Wed, 17 May 2023 22:38:44 +0200 Subject: [PATCH 009/106] v8.18 (#6380) - DietPi-Software | youtube-dl: Since the development of the original youtube-dl project stalled for some years, we migrated to the well known actively developed fork "yt-dlp": https://github.com/yt-dlp/yt-dlp. If you installed youtube-dl before, you can migrate via reinstall: "dietpi-software reinstall 195". For backwards compatibility, the "youtube-dl" command will stay valid as a symlink to "yt-dlp", but there are some differences you should be aware about when doing the migration on your system: https://github.com/yt-dlp/yt-dlp#differences-in-default-behavior. Many thanks to @rgabbo for suggestion and @pulpe for implementing this change: https://github.com/MichaIng/DietPi/discussions/5670, https://github.com/MichaIng/DietPi/pull/6380 --- CHANGELOG.txt | 1 + dietpi/dietpi-software | 13 ++++++------- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index e1f36a4205..4b94dcdd7d 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -6,6 +6,7 @@ New software: Enhancements: - Quartz64 | Enabled (software) RAID and LVM support. Many thanks to @dano6 for implementing this: https://github.com/MichaIng/DietPi/pull/6370 +- DietPi-Software | youtube-dl: Since the development of the original youtube-dl project stalled for some years, we migrated to the well known actively developed fork "yt-dlp": https://github.com/yt-dlp/yt-dlp. If you installed youtube-dl before, you can migrate via reinstall: "dietpi-software reinstall 195". For backwards compatibility, the "youtube-dl" command will stay valid as a symlink to "yt-dlp", but there are some differences you should be aware about when doing the migration on your system: https://github.com/yt-dlp/yt-dlp#differences-in-default-behavior. Many thanks to @rgabbo for suggestion and @pulpe for implementing this change: https://github.com/MichaIng/DietPi/discussions/5670, https://github.com/MichaIng/DietPi/pull/6380 Bug fixes: - DietPi-Software | Restic: Resolved an issue where Restic was installed without executable flag. Many thanks to @ for reporting this issue: https://github.com/MichaIng/DietPi/pull/6350#issuecomment-1537656560 diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index a11169825e..25037c1602 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -745,9 +745,10 @@ Available commands: #------------------ software_id=195 aSOFTWARE_NAME[$software_id]='youtube-dl' - aSOFTWARE_DESC[$software_id]='Download videos from YouTube and other video sites' + aSOFTWARE_DESC[$software_id]='Download videos from YouTube and other sites (using yt-dlp fork)' aSOFTWARE_CATX[$software_id]=3 aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/bittorrent/#youtube-dl' + aSOFTWARE_DEPS[$software_id]='7' # Cloud & Backup #-------------------------------------------------------------------------------- @@ -5648,11 +5649,9 @@ _EOF_ if To_Install 195 # youtube-dl then aDEPS=('python3') - Download_Install 'https://yt-dl.org/downloads/latest/youtube-dl' /usr/local/bin/youtube-dl - G_EXEC chmod +x /usr/local/bin/youtube-dl - - # youtube-dl supports Python 2 and Python 3, but its shebang calls Python 2, else fails: https://github.com/ytdl-org/youtube-dl/issues/27649 - G_EXEC sed -i '1s/python$/python3/' /usr/local/bin/youtube-dl + Download_Install 'https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp' /usr/local/bin/yt-dlp + G_EXEC chmod +x /usr/local/bin/yt-dlp + G_EXEC ln -sf /usr/local/bin/yt-dlp /usr/local/bin/youtube-dl # Remove obsolete /usr/local/bin/youtube-dl-py2 we used previously [[ -f '/usr/local/bin/youtube-dl-py2' ]] && G_EXEC rm /usr/local/bin/youtube-dl-py2 @@ -12539,7 +12538,7 @@ If no WireGuard (auto)start is included, but you require it, please do the follo if To_Uninstall 195 # youtube-dl then - G_EXEC rm -f /usr/local/bin/youtube-dl{,-py2} + G_EXEC rm -f /usr/local/bin/{yt-dlp,youtube-dl,youtube-dl-py2} fi if To_Uninstall 123 # Mosquitto From 3398a0ee1f99437f8b5a8298d5b327ed13be0258 Mon Sep 17 00:00:00 2001 From: Matthias <36804279+ma651851384@users.noreply.github.com> Date: Thu, 18 May 2023 18:12:11 +0200 Subject: [PATCH 010/106] v8.18 (#6375) - DietPi-DDNS | Resolved an issue where the IP sync failed because the API URL changed recently. Many thanks to @ma651851384 for implementing the update: https://github.com/MichaIng/DietPi/pull/6375 --- CHANGELOG.txt | 3 ++- dietpi/dietpi-ddns | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 4b94dcdd7d..25ef12c6df 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -9,7 +9,8 @@ Enhancements: - DietPi-Software | youtube-dl: Since the development of the original youtube-dl project stalled for some years, we migrated to the well known actively developed fork "yt-dlp": https://github.com/yt-dlp/yt-dlp. If you installed youtube-dl before, you can migrate via reinstall: "dietpi-software reinstall 195". For backwards compatibility, the "youtube-dl" command will stay valid as a symlink to "yt-dlp", but there are some differences you should be aware about when doing the migration on your system: https://github.com/yt-dlp/yt-dlp#differences-in-default-behavior. Many thanks to @rgabbo for suggestion and @pulpe for implementing this change: https://github.com/MichaIng/DietPi/discussions/5670, https://github.com/MichaIng/DietPi/pull/6380 Bug fixes: -- DietPi-Software | Restic: Resolved an issue where Restic was installed without executable flag. Many thanks to @ for reporting this issue: https://github.com/MichaIng/DietPi/pull/6350#issuecomment-1537656560 +- DietPi-DDNS | Resolved an issue where the IP sync failed because the API URL changed recently. Many thanks to @ma651851384 for implementing the update: https://github.com/MichaIng/DietPi/pull/6375 +- DietPi-Software | Restic: Resolved an issue where Restic was installed without executable flag. Many thanks to @lima1 for reporting this issue: https://github.com/MichaIng/DietPi/pull/6350#issuecomment-1537656560 - DietPi-Software | Domoticz: Resolved an issue where the installation failed when trying to unpack the tarball. Many thanks to @mcnahum for reporting this issue: https://github.com/MichaIng/DietPi/issues/6369 - DietPi-Software | motionEye: Resolved an issue where the installation failed on ARMv6, ARMv7 and RISC-V Bookworm systems due to missing build dependencies. Many thanks to @magicfoxt-magicfox for reporting this issue: https://github.com/MichaIng/DietPi/issues/6333 diff --git a/dietpi/dietpi-ddns b/dietpi/dietpi-ddns index 242233c2f2..b95562e584 100755 --- a/dietpi/dietpi-ddns +++ b/dietpi/dietpi-ddns @@ -169,7 +169,7 @@ Apply() # - FreeDNS elif [[ $PROVIDER == 'FreeDNS' ]] then - url="https://sync.afraid.org/u/$PASSWORD/" + url="https://freedns.afraid.org/dynamic/update.php?$PASSWORD" http_auth= # - OVH From 55f85148e8846594962cd8213a80026a68eda8a8 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sat, 20 May 2023 01:57:18 +0200 Subject: [PATCH 011/106] v8.18 - DietPi-Build | Update Debian archive keyring packages --- .build/images/dietpi-build | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.build/images/dietpi-build b/.build/images/dietpi-build index c1261385ba..7fdac3a011 100755 --- a/.build/images/dietpi-build +++ b/.build/images/dietpi-build @@ -212,8 +212,8 @@ if [[ ! -f $keyring ]] then case $keyring in *'raspbian'*) url='https://archive.raspbian.org/raspbian/pool/main/r/raspbian-archive-keyring/raspbian-archive-keyring_20120528.2_all.deb';; - *'debian-ports'*) url='http://deb.debian.org/debian/pool/main/d/debian-ports-archive-keyring/debian-ports-archive-keyring_2023.02.01_all.deb';; - *) url='https://deb.debian.org/debian/pool/main/d/debian-archive-keyring/debian-archive-keyring_2021.1.1_all.deb';; + *'debian-ports'*) url='https://deb.debian.org/debian/pool/main/d/debian-ports-archive-keyring/debian-ports-archive-keyring_2023.02.01~deb11u1_all.deb';; + *) url='https://deb.debian.org/debian/pool/main/d/debian-archive-keyring/debian-archive-keyring_2023.3_all.deb';; esac G_EXEC curl -sSf "$url" -o /tmp/keyring.deb G_EXEC_OUTPUT=1 G_EXEC dpkg -i /tmp/keyring.deb From 0efd632be99d2fe7a467c22ddeeadcdd471843b1 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sat, 20 May 2023 02:22:53 +0200 Subject: [PATCH 012/106] v8.18 - DietPi-Set_hardware | Syntax --- dietpi/func/dietpi-set_hardware | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dietpi/func/dietpi-set_hardware b/dietpi/func/dietpi-set_hardware index 0585948e6f..c727cda6a8 100755 --- a/dietpi/func/dietpi-set_hardware +++ b/dietpi/func/dietpi-set_hardware @@ -162,7 +162,7 @@ $FP_SCRIPT gpudriver none|intel|nvidia|amd|custom G_EXEC eval "echo 'blacklist bcm2835_codec' > /etc/modprobe.d/dietpi-disable_rpi_codec.conf" # Disable HEVC decoder - grep -q '^[[:blank:]]*dtoverlay=rpivid-v4l2$' && /boot/config.txt && G_EXEC sed -i '/^[[:blank:]]*dtoverlay=rpivid-v4l2$/d' /boot/config.txt + grep -q '^[[:blank:]]*dtoverlay=rpivid-v4l2$' /boot/config.txt && G_EXEC sed -i '/^[[:blank:]]*dtoverlay=rpivid-v4l2$/d' /boot/config.txt else Unknown_Input_Mode fi From f1c385e4f5c109b113e4f42bc1ae6fb999bad3d3 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sun, 21 May 2023 17:54:09 +0200 Subject: [PATCH 013/106] v8.18 - DietPi-Software | Readarr: Update fallback URL --- dietpi/dietpi-software | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index 25037c1602..6ef47435ab 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -10232,7 +10232,7 @@ _EOF_ *) local arch='x64';; esac - local fallback_url="https://github.com/Readarr/Readarr/releases/download/v0.1.4.1596/Readarr.develop.0.1.4.1596.linux-core-$arch.tar.gz" + local fallback_url="https://github.com/Readarr/Readarr/releases/download/v0.1.5.1832/Readarr.develop.0.1.5.1832.linux-core-$arch.tar.gz" Download_Install "$(curl -sSfL 'https://api.github.com/repos/Readarr/Readarr/releases' | mawk -F\" "/\"browser_download_url\": .*linux-core-$arch\.tar\.gz\"/{print \$4}" | head -1)" G_EXEC mv Readarr /opt/readarr fi From 21a5e3f93400fc21a4147056b244ff54b0ba97a7 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sun, 21 May 2023 18:41:51 +0200 Subject: [PATCH 014/106] v8.18 - CI | Shairport Sync: Obtain latest version automatically and update configuration file --- .build/software/shairport-sync/build.bash | 42 ++++++++++++++++++----- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/.build/software/shairport-sync/build.bash b/.build/software/shairport-sync/build.bash index 576f65b5db..b8d2ceedd4 100755 --- a/.build/software/shairport-sync/build.bash +++ b/.build/software/shairport-sync/build.bash @@ -13,11 +13,14 @@ G_AGUP G_AGDUG automake pkg-config make g++ libpopt-dev libconfig-dev libssl-dev libsoxr-dev libavahi-client-dev libasound2-dev libglib2.0-dev libmosquitto-dev avahi-daemon git libplist-dev libsodium-dev libgcrypt20-dev libavformat-dev xxd (( $G_DISTRO == 5 )) && G_EXEC systemctl unmask avahi-daemon -# Download +# Obtain latest version name='shairport-sync' name_pretty='Shairport Sync' repo='https://github.com/mikebrady/shairport-sync' -version='4.1.1' +version=$(curl -sSf 'https://api.github.com/repos/mikebrady/shairport-sync/releases/latest' | mawk -F\" '/^ "tag_name"/{print $4}') +[[ $version ]] || { G_DIETPI-NOTIFY 1 "No latest $name_pretty version found, aborting ..."; exit 1; } + +# Download G_DIETPI-NOTIFY 2 "Building $name_pretty version \e[33m$version" G_EXEC cd /tmp G_EXEC curl -sSfLO "$repo/archive/$version.tar.gz" @@ -83,7 +86,7 @@ general = // drift_tolerance_in_seconds = 0.002; // allow a timing error of this number of seconds of drift away from exact synchronisation before attempting to correct it // resync_threshold_in_seconds = 0.050; // a synchronisation error greater than this number of seconds will cause resynchronisation; 0 disables it - +// resync_recovery_time_in_seconds = 0.100; // allow this extra time to recover after a late resync. Increase the value, possibly to 0.5, in a virtual machine. // playback_mode = "stereo"; // This can be "stereo", "mono", "reverse stereo", "both left" or "both right". Default is "stereo". // alac_decoder = "hammerton"; // This can be "hammerton" or "apple". This advanced setting allows you to choose // the original Shairport decoder by David Hammerton or the Apple Lossless Audio Codec (ALAC) decoder written by Apple. @@ -98,9 +101,24 @@ general = // "standard" makes the volume change more quickly at lower volumes and slower at higher volumes. // "flat" makes the volume change at the same rate at all volumes. // volume_control_combined_hardware_priority = "no"; // when extending the volume range by combining the built-in software attenuator with the hardware mixer attenuator, set this to "yes" to reduce volume by using the hardware mixer first, then the built-in software attenuator. + +// default_airplay_volume = -24.0; // this is the suggested volume after a reset or after the high_volume_threshold has been exceed and the high_volume_idle_timeout_in_minutes has passed + +// The following settings are for dealing with potentially surprising high ("very loud") volume levels. +// When a new play session starts, it usually requests a suggested volume level from Shairport Sync. This is normally the volume level of the last session. +// This can cause unpleasant surprises if the last session was (a) very loud and (b) a long time ago. +// Thus, the user could be unpleasantly surprised by the volume level of the new session. + +// To deal with this, when the last session volume is "very loud", the following two settings will lower the suggested volume after a period of idleness: + +// high_threshold_airplay_volume = -16.0; // airplay volume greater or equal to this is "very loud" +// high_volume_idle_timeout_in_minutes = 0; // if the current volume is "very loud" and the device is not playing for more than this time, suggest the default volume for new connections instead of the current volume. +// Note 1: This timeout is set to 0 by default to disable this feature. Set it to some positive number, e.g. 180 to activate the feature. +// Note 2: Not all applications use the suggested volume: MacOS Music and Mac OS System Sounds use their own settings. + // run_this_when_volume_is_set = "/full/path/to/application/and/args"; // Run the specified application whenever the volume control is set or changed. // The desired AirPlay volume is appended to the end of the command line – leave a space if you want it treated as an extra argument. -// AirPlay volume goes from 0 to -30 and -144 means "mute". +// AirPlay volume goes from 0.0 to -30.0 and -144.0 means "mute". // audio_backend_latency_offset_in_seconds = 0.0; // This is added to the latency requested by the player to delay or advance the output by a fixed amount. // Use it, for example, to compensate for a fixed delay in the audio back end. @@ -315,16 +333,24 @@ DEPS_APT_VERSIONED=${DEPS_APT_VERSIONED%,} # shellcheck disable=SC2001 grep -q 'raspbian' /etc/os-release && DEPS_APT_VERSIONED=$(sed 's/+rp[it][0-9]\+[^)]*)/)/g' <<< "$DEPS_APT_VERSIONED") || DEPS_APT_VERSIONED=$(sed 's/+b[0-9]\+)/)/g' <<< "$DEPS_APT_VERSIONED") +# - Obtain version suffix +G_EXEC curl -sSfo package.deb "https://dietpi.com/downloads/binaries/$G_DISTRO_NAME/shairport-sync_$G_HW_ARCH_NAME.deb" +old_version=$(dpkg-deb -f package.deb Version) +G_EXEC rm package.deb +suffix=${old_version#*-dietpi} +[[ $old_version == "$version-"* ]] && suffix="dietpi$((suffix+1))" || suffix="dietpi1" + # - control cat << _EOF_ > "$DIR/DEBIAN/control" Package: $name -Version: $version-dietpi1 +Version: $version-$suffix Architecture: $(dpkg --print-architecture) Maintainer: MichaIng Date: $(date -u '+%a, %d %b %Y %T %z') -Standards-Version: 4.6.1.1 +Standards-Version: 4.6.2.0 Installed-Size: $(du -sk "$DIR" | mawk '{print $1}') Depends:$DEPS_APT_VERSIONED +Conflicts: $name-airplay2 Section: sound Priority: optional Homepage: $repo @@ -472,14 +498,14 @@ grep -q 'raspbian' /etc/os-release && DEPS_APT_VERSIONED=$(sed 's/+rp[it][0-9]\+ # - control cat << _EOF_ > "$DIR/DEBIAN/control" Package: $name-airplay2 -Version: $version-dietpi1 +Version: $version-$suffix Architecture: $(dpkg --print-architecture) Maintainer: MichaIng Date: $(date -u '+%a, %d %b %Y %T %z') Standards-Version: 4.6.2.0 Installed-Size: $(du -sk "$DIR" | mawk '{print $1}') Depends:$DEPS_APT_VERSIONED -Conflicts: shairport-sync +Conflicts: $name Section: sound Priority: optional Homepage: $repo From a15078bba80607b6bbcd72aa68738974ba0311a6 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sun, 21 May 2023 19:10:56 +0200 Subject: [PATCH 015/106] v8.18 - CI | Shairport Sync: Use matrix builds in workflow, input selection instead of text box and other enhancements --- .../shairport-sync/container_build.bash | 25 +- .github/workflows/shairport-sync.yml | 284 ++++-------------- 2 files changed, 62 insertions(+), 247 deletions(-) diff --git a/.build/software/shairport-sync/container_build.bash b/.build/software/shairport-sync/container_build.bash index ac9532e1d5..330187de1c 100755 --- a/.build/software/shairport-sync/container_build.bash +++ b/.build/software/shairport-sync/container_build.bash @@ -43,18 +43,13 @@ do esac shift done -case $DISTRO in - 5) distro='buster';; - 6) distro='bullseye';; - 7) distro='bookworm';; - *) G_DIETPI-NOTIFY 1 "Invalid distro \"$DISTRO\" passed, aborting..."; exit 1;; -esac +[[ $DISTRO =~ ^'buster'|'bullseye'|'bookworm'$ ]] || { G_DIETPI-NOTIFY 1 "Invalid distro \"$DISTRO\" passed, aborting..."; exit 1; } case $ARCH in - 1) image="DietPi_Container-ARMv6-${distro^}" arch='armv6l';; - 2) image="DietPi_Container-ARMv7-${distro^}" arch='armv7l';; - 3) image="DietPi_Container-ARMv8-${distro^}" arch='aarch64';; - 10) image="DietPi_Container-x86_64-${distro^}" arch='x86_64';; - 11) image='DietPi_Container-RISC-V-Sid' arch='riscv64';; + 'armv6l') image="DietPi_Container-ARMv6-${DISTRO^}" arch=1;; + 'armv7l') image="DietPi_Container-ARMv7-${DISTRO^}" arch=2;; + 'aarch64') image="DietPi_Container-ARMv8-${DISTRO^}" arch=3;; + 'x86_64') image="DietPi_Container-x86_64-${DISTRO^}" arch=10;; + 'riscv64') image='DietPi_Container-RISC-V-Sid' arch=11;; *) G_DIETPI-NOTIFY 1 "Invalid architecture \"$ARCH\" passed, aborting..."; exit 1;; esac @@ -62,7 +57,7 @@ esac # Dependencies ########################################## apackages=('7zip' 'parted' 'fdisk' 'systemd-container') -(( $G_HW_ARCH == $ARCH || ( $G_HW_ARCH < 10 && $G_HW_ARCH > $ARCH ) )) || apackages+=('qemu-user-static' 'binfmt-support') +(( $G_HW_ARCH == $arch || ( $G_HW_ARCH < 10 && $G_HW_ARCH > $arch ) )) || apackages+=('qemu-user-static' 'binfmt-support') G_AG_CHECK_INSTALL_PREREQ "${apackages[@]}" ########################################## @@ -92,7 +87,7 @@ G_EXEC mount "${FP_LOOP}p1" rootfs G_CONFIG_INJECT 'AUTO_SETUP_AUTOMATED=' 'AUTO_SETUP_AUTOMATED=1' rootfs/boot/dietpi.txt # Force ARMv6 arch on Raspbian -(( $ARCH == 1 )) && echo 'sed -i -e '\''/^G_HW_ARCH=/c\G_HW_ARCH=1'\'' -e '\''/^G_HW_ARCH_NAME=/c\G_HW_ARCH_NAME=armv6l'\'' /boot/dietpi/.hw_model' > rootfs/boot/Automation_Custom_PreScript.sh +(( $arch == 1 )) && echo 'sed -i -e '\''/^G_HW_ARCH=/c\G_HW_ARCH=1'\'' -e '\''/^G_HW_ARCH_NAME=/c\G_HW_ARCH_NAME=armv6l'\'' /boot/dietpi/.hw_model' > rootfs/boot/Automation_Custom_PreScript.sh # Avoid DietPi-Survey uploads to not mess with the statistics G_EXEC rm rootfs/root/.ssh/known_hosts @@ -109,7 +104,7 @@ cat << _EOF_ > rootfs/boot/Automation_Custom_Script.sh || exit 1 #!/bin/dash echo '[ INFO ] Running Shairport Sync build script...' bash -c "\$(curl -sSf 'https://raw.githubusercontent.com/$G_GITOWNER/DietPi/$G_GITBRANCH/.build/software/shairport-sync/build.bash')" -mv -v '/tmp/shairport-sync_$arch.deb' '/tmp/shairport-sync-airplay2_$arch.deb' / +mv -v '/tmp/shairport-sync_$ARCH.deb' '/tmp/shairport-sync-airplay2_$ARCH.deb' / poweroff _EOF_ @@ -117,5 +112,5 @@ _EOF_ # Boot container ########################################## systemd-nspawn -bD rootfs -[[ -f rootfs/shairport-sync_$arch.deb ]] || exit 1 +[[ -f rootfs/shairport-sync_$ARCH.deb ]] || exit 1 } diff --git a/.github/workflows/shairport-sync.yml b/.github/workflows/shairport-sync.yml index 8bdc9c1407..ed6b5b1d44 100644 --- a/.github/workflows/shairport-sync.yml +++ b/.github/workflows/shairport-sync.yml @@ -3,254 +3,74 @@ on: workflow_dispatch: inputs: arch: - description: 'Target architecture index: 1, 2, 3, 10 or all' + description: 'Target architecture' + type: choice + options: [armv6l, armv7l, aarch64, x86_64, riscv64, all] + default: all required: true - distro: - description: 'Target Debian version index: 5, 6, 7 or all' + dist: + description: 'Target Debian version' + type: choice + options: [buster, bullseye, bookworm, all] + default: all required: true concurrency: group: ${{ github.workflow }}-${{ github.event.inputs.arch }}-${{ github.event.inputs.distro }} cancel-in-progress: true permissions: {} +defaults: + run: + shell: sh + working-directory: /dev/shm jobs: - armv6_buster: - if: ( github.event.inputs.arch == 1 || github.event.inputs.arch == 'all' ) && ( github.event.inputs.distro == 5 || github.event.inputs.distro == 'all' ) - # https://github.com/actions/virtual-environments - runs-on: ubuntu-22.04 - defaults: - run: - shell: sh - working-directory: /dev/shm - steps: - - name: Start build container - run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=${GITHUB_REF#refs/heads/}; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/${GITHUB_REF#refs/heads/}/.build/software/shairport-sync/container_build.bash")" 'DietPi-Build_Shairport-Sync' -a 1 -d 5 - - name: Upload package - run: | - [ -d ~/.ssh ] || mkdir ~/.ssh - umask 377 - echo '${{ secrets.KNOWN_HOSTS }}' > ~/.ssh/known_hosts - echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_ed25519 - curl -T rootfs/shairport-sync_armv6l.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}buster/' - curl -T rootfs/shairport-sync-airplay2_armv6l.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}buster/' - curl 'https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache' -H 'Authorization: Bearer ${{ secrets.CF_TOKEN }}' -H 'Content-Type: application/json' \ - --data '{"files":["https://dietpi.com/downloads/binaries/buster/testing/","https://dietpi.com/downloads/binaries/buster/testing/shairport-sync_armv6l.deb","https://dietpi.com/downloads/binaries/buster/testing/shairport-sync-airplay2_armv6l.deb"]}' - armv6_bullseye: - if: ( github.event.inputs.arch == 1 || github.event.inputs.arch == 'all' ) && ( github.event.inputs.distro == 6 || github.event.inputs.distro == 'all' ) + prep: + outputs: + arch: ${{ steps.arch.outputs.arch }} + dist: ${{ steps.dist.outputs.dist }} runs-on: ubuntu-22.04 - defaults: - run: - shell: sh - working-directory: /dev/shm steps: - - name: Start build container - run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=${GITHUB_REF#refs/heads/}; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/${GITHUB_REF#refs/heads/}/.build/software/shairport-sync/container_build.bash")" 'DietPi-Build_Shairport-Sync' -a 1 -d 6 - - name: Upload package + - id: arch run: | - [ -d ~/.ssh ] || mkdir ~/.ssh - umask 377 - echo '${{ secrets.KNOWN_HOSTS }}' > ~/.ssh/known_hosts - echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_ed25519 - curl -T rootfs/shairport-sync_armv6l.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}bullseye/' - curl -T rootfs/shairport-sync-airplay2_armv6l.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}bullseye/' - curl 'https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache' -H 'Authorization: Bearer ${{ secrets.CF_TOKEN }}' -H 'Content-Type: application/json' \ - --data '{"files":["https://dietpi.com/downloads/binaries/bullseye/testing/","https://dietpi.com/downloads/binaries/bullseye/testing/shairport-sync_armv6l.deb","https://dietpi.com/downloads/binaries/bullseye/testing/shairport-sync-airplay2_armv6l.deb"]}' - armv6_bookworm: - if: ( github.event.inputs.arch == 1 || github.event.inputs.arch == 'all' ) && ( github.event.inputs.distro == 7 || github.event.inputs.distro == 'all' ) - runs-on: ubuntu-22.04 - defaults: - run: - shell: sh - working-directory: /dev/shm - steps: - - name: Start build container - run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=${GITHUB_REF#refs/heads/}; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/${GITHUB_REF#refs/heads/}/.build/software/shairport-sync/container_build.bash")" 'DietPi-Build_Shairport-Sync' -a 1 -d 7 - - name: Upload package + if [ '${{ github.event.inputs.arch }}' = 'all' ] + then + echo 'arch=[armv6l, armv7l, aarch64, x86_64, riscv64]' >> "$GITHUB_OUTPUT" + else + echo 'arch=[${{ github.event.inputs.arch }}]' >> "$GITHUB_OUTPUT" + fi + - id: dist run: | - [ -d ~/.ssh ] || mkdir ~/.ssh - umask 377 - echo '${{ secrets.KNOWN_HOSTS }}' > ~/.ssh/known_hosts - echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_ed25519 - curl -T rootfs/shairport-sync_armv6l.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}bookworm/' - curl -T rootfs/shairport-sync-airplay2_armv6l.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}bookworm/' - curl 'https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache' -H 'Authorization: Bearer ${{ secrets.CF_TOKEN }}' -H 'Content-Type: application/json' \ - --data '{"files":["https://dietpi.com/downloads/binaries/bookworm/testing/","https://dietpi.com/downloads/binaries/bookworm/testing/shairport-sync_armv6l.deb","https://dietpi.com/downloads/binaries/bookworm/testing/shairport-sync-airplay2_armv6l.deb"]}' - - armv7_buster: - if: ( github.event.inputs.arch == 2 || github.event.inputs.arch == 'all' ) && ( github.event.inputs.distro == 5 || github.event.inputs.distro == 'all' ) - runs-on: ubuntu-22.04 - defaults: - run: - shell: sh - working-directory: /dev/shm - steps: - - name: Start build container - run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=${GITHUB_REF#refs/heads/}; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/${GITHUB_REF#refs/heads/}/.build/software/shairport-sync/container_build.bash")" 'DietPi-Build_Shairport-Sync' -a 2 -d 5 - - name: Upload package - run: | - [ -d ~/.ssh ] || mkdir ~/.ssh - umask 377 - echo '${{ secrets.KNOWN_HOSTS }}' > ~/.ssh/known_hosts - echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_ed25519 - curl -T rootfs/shairport-sync_armv7l.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}buster/' - curl -T rootfs/shairport-sync-airplay2_armv7l.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}buster/' - curl 'https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache' -H 'Authorization: Bearer ${{ secrets.CF_TOKEN }}' -H 'Content-Type: application/json' \ - --data '{"files":["https://dietpi.com/downloads/binaries/buster/testing/","https://dietpi.com/downloads/binaries/buster/testing/shairport-sync_armv7l.deb","https://dietpi.com/downloads/binaries/buster/testing/shairport-sync-airplay2_armv7l.deb"]}' - armv7_bullseye: - if: ( github.event.inputs.arch == 2 || github.event.inputs.arch == 'all' ) && ( github.event.inputs.distro == 6 || github.event.inputs.distro == 'all' ) - runs-on: ubuntu-22.04 - defaults: - run: - shell: sh - working-directory: /dev/shm - steps: - - name: Start build container - run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=${GITHUB_REF#refs/heads/}; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/${GITHUB_REF#refs/heads/}/.build/software/shairport-sync/container_build.bash")" 'DietPi-Build_Shairport-Sync' -a 2 -d 6 - - name: Upload package - run: | - [ -d ~/.ssh ] || mkdir ~/.ssh - umask 377 - echo '${{ secrets.KNOWN_HOSTS }}' > ~/.ssh/known_hosts - echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_ed25519 - curl -T rootfs/shairport-sync_armv7l.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}bullseye/' - curl -T rootfs/shairport-sync-airplay2_armv7l.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}bullseye/' - curl 'https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache' -H 'Authorization: Bearer ${{ secrets.CF_TOKEN }}' -H 'Content-Type: application/json' \ - --data '{"files":["https://dietpi.com/downloads/binaries/bullseye/testing/","https://dietpi.com/downloads/binaries/bullseye/testing/shairport-sync_armv7l.deb","https://dietpi.com/downloads/binaries/bullseye/testing/shairport-sync-airplay2_armv7l.deb"]}' - armv7_bookworm: - if: ( github.event.inputs.arch == 2 || github.event.inputs.arch == 'all' ) && ( github.event.inputs.distro == 7 || github.event.inputs.distro == 'all' ) - runs-on: ubuntu-22.04 - defaults: - run: - shell: sh - working-directory: /dev/shm - steps: - - name: Start build container - run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=${GITHUB_REF#refs/heads/}; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/${GITHUB_REF#refs/heads/}/.build/software/shairport-sync/container_build.bash")" 'DietPi-Build_Shairport-Sync' -a 2 -d 7 - - name: Upload package - run: | - [ -d ~/.ssh ] || mkdir ~/.ssh - umask 377 - echo '${{ secrets.KNOWN_HOSTS }}' > ~/.ssh/known_hosts - echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_ed25519 - curl -T rootfs/shairport-sync_armv7l.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}bookworm/' - curl -T rootfs/shairport-sync-airplay2_armv7l.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}bookworm/' - curl 'https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache' -H 'Authorization: Bearer ${{ secrets.CF_TOKEN }}' -H 'Content-Type: application/json' \ - --data '{"files":["https://dietpi.com/downloads/binaries/bookworm/testing/","https://dietpi.com/downloads/binaries/bookworm/testing/shairport-sync_armv7l.deb","https://dietpi.com/downloads/binaries/bookworm/testing/shairport-sync-airplay2_armv7l.deb"]}' - - armv8_buster: - if: ( github.event.inputs.arch == 3 || github.event.inputs.arch == 'all' ) && ( github.event.inputs.distro == 5 || github.event.inputs.distro == 'all' ) - runs-on: ubuntu-22.04 - defaults: - run: - shell: sh - steps: - - name: Start build container - run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=${GITHUB_REF#refs/heads/}; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/${GITHUB_REF#refs/heads/}/.build/software/shairport-sync/container_build.bash")" 'DietPi-Build_Shairport-Sync' -a 3 -d 5 - - name: Upload package - run: | - [ -d ~/.ssh ] || mkdir ~/.ssh - umask 377 - echo '${{ secrets.KNOWN_HOSTS }}' > ~/.ssh/known_hosts - echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_ed25519 - curl -T rootfs/shairport-sync_aarch64.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}buster/' - curl -T rootfs/shairport-sync-airplay2_aarch64.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}buster/' - curl 'https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache' -H 'Authorization: Bearer ${{ secrets.CF_TOKEN }}' -H 'Content-Type: application/json' \ - --data '{"files":["https://dietpi.com/downloads/binaries/buster/testing/","https://dietpi.com/downloads/binaries/buster/testing/shairport-sync_aarch64.deb","https://dietpi.com/downloads/binaries/buster/testing/shairport-sync-airplay2_aarch64.deb"]}' - armv8_bullseye: - if: ( github.event.inputs.arch == 3 || github.event.inputs.arch == 'all' ) && ( github.event.inputs.distro == 6 || github.event.inputs.distro == 'all' ) - runs-on: ubuntu-22.04 - defaults: - run: - shell: sh - steps: - - name: Start build container - run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=${GITHUB_REF#refs/heads/}; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/${GITHUB_REF#refs/heads/}/.build/software/shairport-sync/container_build.bash")" 'DietPi-Build_Shairport-Sync' -a 3 -d 6 - - name: Upload package - run: | - [ -d ~/.ssh ] || mkdir ~/.ssh - umask 377 - echo '${{ secrets.KNOWN_HOSTS }}' > ~/.ssh/known_hosts - echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_ed25519 - curl -T rootfs/shairport-sync_aarch64.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}bullseye/' - curl -T rootfs/shairport-sync-airplay2_aarch64.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}bullseye/' - curl 'https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache' -H 'Authorization: Bearer ${{ secrets.CF_TOKEN }}' -H 'Content-Type: application/json' \ - --data '{"files":["https://dietpi.com/downloads/binaries/bullseye/testing/","https://dietpi.com/downloads/binaries/bullseye/testing/shairport-sync_aarch64.deb","https://dietpi.com/downloads/binaries/bullseye/testing/shairport-sync-airplay2_aarch64.deb"]}' - armv8_bookworm: - if: ( github.event.inputs.arch == 3 || github.event.inputs.arch == 'all' ) && ( github.event.inputs.distro == 7 || github.event.inputs.distro == 'all' ) + if [ '${{ github.event.inputs.dist }}' = 'all' ] + then + echo 'dist=[buster, bullseye, bookworm]' >> "$GITHUB_OUTPUT" + else + echo 'dist=[${{ github.event.inputs.dist }}]' >> "$GITHUB_OUTPUT" + fi + build: + needs: prep + strategy: + matrix: + arch: ${{ fromJson(needs.prep.outputs.arch) }} + dist: ${{ fromJson(needs.prep.outputs.dist) }} + exclude: + - { arch: riscv64, dist: buster } + - { arch: riscv64, dist: bullseye } + fail-fast: false + name: "Build: ${{ matrix.arch }} - ${{ matrix.dist }}" + # https://github.com/actions/virtual-environments runs-on: ubuntu-22.04 - defaults: - run: - shell: sh steps: - - name: Start build container - run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=${GITHUB_REF#refs/heads/}; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/${GITHUB_REF#refs/heads/}/.build/software/shairport-sync/container_build.bash")" 'DietPi-Build_Shairport-Sync' -a 3 -d 7 - - name: Upload package + - name: Build + run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=$GITHUB_REF_NAME; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/$GITHUB_REF_NAME/.build/software/shairport-sync/container_build.bash")" -- -a '${{ matrix.arch }}' -d '${{ matrix.dist }}' + - name: Upload run: | - [ -d ~/.ssh ] || mkdir ~/.ssh + # SSH server and client keys + mkdir ~/.ssh umask 377 echo '${{ secrets.KNOWN_HOSTS }}' > ~/.ssh/known_hosts echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_ed25519 - curl -T rootfs/shairport-sync_aarch64.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}bookworm/' - curl -T rootfs/shairport-sync-airplay2_aarch64.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}bookworm/' - curl 'https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache' -H 'Authorization: Bearer ${{ secrets.CF_TOKEN }}' -H 'Content-Type: application/json' \ - --data '{"files":["https://dietpi.com/downloads/binaries/bookworm/testing/","https://dietpi.com/downloads/binaries/bookworm/testing/shairport-sync_aarch64.deb","https://dietpi.com/downloads/binaries/bookworm/testing/shairport-sync-airplay2_aarch64.deb"]}' - x86_64_buster: - if: ( github.event.inputs.arch == 10 || github.event.inputs.arch == 'all' ) && ( github.event.inputs.distro == 5 || github.event.inputs.distro == 'all' ) - runs-on: ubuntu-22.04 - defaults: - run: - shell: sh - working-directory: /dev/shm - steps: - - name: Start build container - run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=${GITHUB_REF#refs/heads/}; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/${GITHUB_REF#refs/heads/}/.build/software/shairport-sync/container_build.bash")" 'DietPi-Build_Shairport-Sync' -a 10 -d 5 - - name: Upload package - run: | - [ -d ~/.ssh ] || mkdir ~/.ssh - umask 377 - echo '${{ secrets.KNOWN_HOSTS }}' > ~/.ssh/known_hosts - echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_ed25519 - curl -T rootfs/shairport-sync_x86_64.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}buster/' - curl -T rootfs/shairport-sync-airplay2_x86_64.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}buster/' - curl 'https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache' -H 'Authorization: Bearer ${{ secrets.CF_TOKEN }}' -H 'Content-Type: application/json' \ - --data '{"files":["https://dietpi.com/downloads/binaries/buster/testing/","https://dietpi.com/downloads/binaries/buster/testing/shairport-sync_x86_64.deb","https://dietpi.com/downloads/binaries/buster/testing/shairport-sync-airplay2_x86_64.deb"]}' - x86_64_bullseye: - if: ( github.event.inputs.arch == 10 || github.event.inputs.arch == 'all' ) && ( github.event.inputs.distro == 6 || github.event.inputs.distro == 'all' ) - runs-on: ubuntu-22.04 - defaults: - run: - shell: sh - working-directory: /dev/shm - steps: - - name: Start build container - run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=${GITHUB_REF#refs/heads/}; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/${GITHUB_REF#refs/heads/}/.build/software/shairport-sync/container_build.bash")" 'DietPi-Build_Shairport-Sync' -a 10 -d 6 - - name: Upload package - run: | - [ -d ~/.ssh ] || mkdir ~/.ssh - umask 377 - echo '${{ secrets.KNOWN_HOSTS }}' > ~/.ssh/known_hosts - echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_ed25519 - curl -T rootfs/shairport-sync_x86_64.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}bullseye/' - curl -T rootfs/shairport-sync-airplay2_x86_64.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}bullseye/' - curl 'https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache' -H 'Authorization: Bearer ${{ secrets.CF_TOKEN }}' -H 'Content-Type: application/json' \ - --data '{"files":["https://dietpi.com/downloads/binaries/bullseye/testing/","https://dietpi.com/downloads/binaries/bullseye/testing/shairport-sync_x86_64.deb","https://dietpi.com/downloads/binaries/bullseye/testing/shairport-sync-airplay2_x86_64.deb"]}' - x86_64_bookworm: - if: ( github.event.inputs.arch == 10 || github.event.inputs.arch == 'all' ) && ( github.event.inputs.distro == 7 || github.event.inputs.distro == 'all' ) - runs-on: ubuntu-22.04 - defaults: - run: - shell: sh - working-directory: /dev/shm - steps: - - name: Start build container - run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=${GITHUB_REF#refs/heads/}; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/${GITHUB_REF#refs/heads/}/.build/software/shairport-sync/container_build.bash")" 'DietPi-Build_Shairport-Sync' -a 10 -d 7 - - name: Upload package - run: | - [ -d ~/.ssh ] || mkdir ~/.ssh - umask 377 - echo '${{ secrets.KNOWN_HOSTS }}' > ~/.ssh/known_hosts - echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_ed25519 - curl -T rootfs/shairport-sync_x86_64.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}bookworm/' - curl -T rootfs/shairport-sync-airplay2_x86_64.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}bookworm/' + # Upload + curl -T 'rootfs/shairport-sync_${{ matrix.arch }}.deb' --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}${{ matrix.dist }}/' + curl -T 'rootfs/shairport-sync-airplay2_${{ matrix.arch }}.deb' --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}${{ matrix.dist }}/' curl 'https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache' -H 'Authorization: Bearer ${{ secrets.CF_TOKEN }}' -H 'Content-Type: application/json' \ - --data '{"files":["https://dietpi.com/downloads/binaries/bookworm/testing/","https://dietpi.com/downloads/binaries/bookworm/testing/shairport-sync_x86_64.deb","https://dietpi.com/downloads/binaries/bookworm/testing/shairport-sync-airplay2_x86_64.deb"]}' + --data '{"files":["https://dietpi.com/downloads/binaries/${{ matrix.dist }}/testing/","https://dietpi.com/downloads/binaries/${{ matrix.dist }}/testing/shairport-sync_${{ matrix.arch }}.deb","https://dietpi.com/downloads/binaries/${{ matrix.dist }}/testing/shairport-sync-airplay2_${{ matrix.arch }}.deb"]}' From a599e33d49dd8a0e8e6962b40001153a579beb22 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sun, 21 May 2023 19:29:09 +0200 Subject: [PATCH 016/106] v8.18 - CI | Shairport Sync: Syntax --- .github/workflows/shairport-sync.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/shairport-sync.yml b/.github/workflows/shairport-sync.yml index ed6b5b1d44..0300637d74 100644 --- a/.github/workflows/shairport-sync.yml +++ b/.github/workflows/shairport-sync.yml @@ -33,17 +33,17 @@ jobs: run: | if [ '${{ github.event.inputs.arch }}' = 'all' ] then - echo 'arch=[armv6l, armv7l, aarch64, x86_64, riscv64]' >> "$GITHUB_OUTPUT" + echo 'arch=["armv6l", "armv7l", "aarch64", "x86_64", "riscv64"]' >> "$GITHUB_OUTPUT" else - echo 'arch=[${{ github.event.inputs.arch }}]' >> "$GITHUB_OUTPUT" + echo 'arch=["${{ github.event.inputs.arch }}"]' >> "$GITHUB_OUTPUT" fi - id: dist run: | if [ '${{ github.event.inputs.dist }}' = 'all' ] then - echo 'dist=[buster, bullseye, bookworm]' >> "$GITHUB_OUTPUT" + echo 'dist=["buster", "bullseye", "bookworm"]' >> "$GITHUB_OUTPUT" else - echo 'dist=[${{ github.event.inputs.dist }}]' >> "$GITHUB_OUTPUT" + echo 'dist=["${{ github.event.inputs.dist }}"]' >> "$GITHUB_OUTPUT" fi build: needs: prep From c7d7a05b9c84ce9f98f59ecd10c6b7dfb387d39b Mon Sep 17 00:00:00 2001 From: MichaIng Date: Wed, 24 May 2023 19:44:34 +0200 Subject: [PATCH 017/106] v8.18 - DietPi-Software | Allo GUI: There are now major version tags which always point to the latest subversion - DietPi-Patches | Update Allo GUI which contains a fix for failing GMediaRender service handling --- .update/patches | 58 ++++++++++++++++++++++-------------------- dietpi/dietpi-software | 8 ++---- 2 files changed, 33 insertions(+), 33 deletions(-) diff --git a/.update/patches b/.update/patches index 4f8110ab01..e9f2d569a9 100755 --- a/.update/patches +++ b/.update/patches @@ -644,33 +644,6 @@ Patch_8_2() local id=$(mawk -F\" '/"[0-9a-f]+",/{print $2;exit}' /mnt/dietpi_userdata/deluge/.config/deluge/hostlist.conf) G_CONFIG_INJECT '"default_daemon":' " \"default_daemon\": \"$id\"," /mnt/dietpi_userdata/deluge/.config/deluge/web.conf fi - - # Update Allo GUI: https://github.com/MichaIng/DietPi/pull/5328 - if [[ -f '/boot/dietpi/.installed' ]] && grep -q '^[[:blank:]]*aSOFTWARE_INSTALL_STATE\[160\]=2' /boot/dietpi/.installed - then - # shellcheck disable=SC2016 - G_WHIP_MSG '[ INFO ] Updating Allo GUI to v14.0 -\nThe Allo GUI has been received a major version update with a few breaking changes: -- The database is now generated on install, containing only the login credentials, using the global software password. -- It uses APCu now as memory based cache and session store, reducing disk writes and enhancing performance. -- It does shell command calls now natively via PHP instead of invoking the "allo" user via SSH, which renders this user obsolete. -- It is now installed to /opt/allo, only linking the "public" subdirectory into the webserver document root. -- A number of other updates, fixes, security hardenings and cleanups have been applied. -\nThe update is applied now, along with the following migration steps: -- The database is recreated from scratch, using the global software password (default: "dietpi") for login instead of the hardcoded "allo". You can change the password with the following command: - - mysql -e "update allo.users set password='\''$(php -r '\''echo password_hash("yourPassword",PASSWORD_BCRYPT);'\'')'\'' where id=1;" -- The obsolete "allo" user is removed. Its home directory /home/allo remains, just in case you stored files there, but otherwise you can safely remove it.' - - echo 160 >> /var/tmp/dietpi/dietpi-update_reinstalls - getent passwd allo > /dev/null && G_EXEC userdel allo - if G_EXEC_NOHALT=1 G_EXEC systemctl start mariadb - then - [[ -d '/mnt/dietpi_userdata/mysql/allo_db' ]] && G_EXEC mysqladmin -f drop allo_db - [[ $(mysql -e 'select user from mysql.user where user="allo_db";') ]] && G_EXEC mysql -e 'drop user allo_db@localhost' - fi - # Beta v8.2.1 - [[ -d '/mnt/dietpi_userdata/allo' ]] && G_EXEC rm -R /mnt/dietpi_userdata/allo - fi } Patch_8_3(){ :; } @@ -1356,6 +1329,37 @@ _EOF_ fi } +Patch_8_18() +{ + # Update Allo GUI + if [[ -f '/boot/dietpi/.installed' ]] && grep -q '^[[:blank:]]*aSOFTWARE_INSTALL_STATE\[160\]=2' /boot/dietpi/.installed + then + G_DIETPI-NOTIFY 2 'Scheduling Allo GUI update to v14.3' + echo 160 >> /var/tmp/dietpi/dietpi-update_reinstalls + getent passwd allo > /dev/null && G_EXEC userdel allo + # Pre-v14.0 database migration + if [[ -d '/mnt/dietpi_userdata/mysql/allo_db' ]] && G_EXEC_NOHALT=1 G_EXEC systemctl start mariadb + then + G_EXEC mysqladmin -f drop allo_db + [[ $(mysql -e 'select user from mysql.user where user="allo_db";') ]] && G_EXEC mysql -e 'drop user allo_db@localhost' + fi + # Beta v8.2.1 + [[ -d '/mnt/dietpi_userdata/allo' ]] && G_EXEC rm -R /mnt/dietpi_userdata/allo + # Pre-v8.10 + if [[ -f '/etc/systemd/system/gmrender.service.disable' ]] + then + [[ -f '/etc/systemd/system/gmediarender.service' || -f '/lib/systemd/system/gmediarender.service' ]] && G_EXEC rm /etc/systemd/system/gmrender.service.disable || G_EXEC mv /etc/systemd/system/gm{,edia}render.service.disable + fi + # Pre-v14.3/DietPi v8.16 service handling + local i + for i in roonbridge gmediarender netdata squeezelite + then + [[ -f /etc/systemd/system/$i.service.disable ]] && G_EXEC mv "/etc/systemd/system/$i.service"{.disable,} && G_EXEC systemctl disable "$i" + [[ -f /lib/systemd/system/$i.service.disable ]] && G_EXEC mv "/lib/systemd/system/$i.service"{.disable,} && G_EXEC systemctl disable "$i" + done + fi +} + # v6.35 => v7 migration if (( $G_DIETPI_VERSION_CORE == 6 && $G_DIETPI_VERSION_SUB > 34 )) then diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index 6ef47435ab..9e856d3abf 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -10770,13 +10770,9 @@ _EOF_ if To_Install 160 # Allo GUI then - # Get latest compatible version - local version=$(curl -sSf 'https://api.github.com/repos/MichaIng/DietPi-AlloGUI/tags' | mawk -F\" '/"name": "v14\..*",/{print $4;exit}'); version=${version#v} - [[ $version ]] || { version='14.2'; G_DIETPI-NOTIFY 1 "Automatic latest ${aSOFTWARE_NAME[$software_id]} version detection failed. Version \"$version\" will be installed as fallback, but a newer version might be available. Please report this at: https://github.com/MichaIng/DietPi/issues"; } - # Download - Download_Install "https://github.com/MichaIng/DietPi-AlloGUI/archive/v$version.tar.gz" - G_EXEC mv "DietPi-AlloGUI-$version" allo + Download_Install 'https://github.com/MichaIng/DietPi-AlloGUI/archive/v14.tar.gz' + G_EXEC mv DietPi-AlloGUI-14 allo # Permissions G_EXEC chmod -R 'o=,g-w' allo From a18ac82350a73291c34e99352138c36a7c690d96 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Wed, 24 May 2023 19:51:42 +0200 Subject: [PATCH 018/106] v8.18 - DietPi-Patches | Syntax --- .update/patches | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.update/patches b/.update/patches index e9f2d569a9..eaa28522d9 100755 --- a/.update/patches +++ b/.update/patches @@ -1353,7 +1353,7 @@ Patch_8_18() # Pre-v14.3/DietPi v8.16 service handling local i for i in roonbridge gmediarender netdata squeezelite - then + do [[ -f /etc/systemd/system/$i.service.disable ]] && G_EXEC mv "/etc/systemd/system/$i.service"{.disable,} && G_EXEC systemctl disable "$i" [[ -f /lib/systemd/system/$i.service.disable ]] && G_EXEC mv "/lib/systemd/system/$i.service"{.disable,} && G_EXEC systemctl disable "$i" done From e6f6251f124e86cb79419d60411d273a04a28d17 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Wed, 24 May 2023 20:00:49 +0200 Subject: [PATCH 019/106] v8.18 - Coding | Satisfy shellcheck --- .update/patches | 1 + 1 file changed, 1 insertion(+) diff --git a/.update/patches b/.update/patches index eaa28522d9..95bf4eb2de 100755 --- a/.update/patches +++ b/.update/patches @@ -1348,6 +1348,7 @@ Patch_8_18() # Pre-v8.10 if [[ -f '/etc/systemd/system/gmrender.service.disable' ]] then + # shellcheck disable=SC2015 [[ -f '/etc/systemd/system/gmediarender.service' || -f '/lib/systemd/system/gmediarender.service' ]] && G_EXEC rm /etc/systemd/system/gmrender.service.disable || G_EXEC mv /etc/systemd/system/gm{,edia}render.service.disable fi # Pre-v14.3/DietPi v8.16 service handling From deed5084236bc349504a0479ffe2dc5185a5b905 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Thu, 25 May 2023 00:35:46 +0200 Subject: [PATCH 020/106] v8.18 - DietPi-Build | Enable all services after installing Allo GUI --- .build/images/dietpi-build | 1 + 1 file changed, 1 insertion(+) diff --git a/.build/images/dietpi-build b/.build/images/dietpi-build index 7fdac3a011..a0e18b0faf 100755 --- a/.build/images/dietpi-build +++ b/.build/images/dietpi-build @@ -551,6 +551,7 @@ then { . /boot/dietpi/func/dietpi-globals /boot/dietpi/dietpi-services stop +/boot/dietpi/dietpi-services enable # RPi: Reset for supporting all models if (( $G_HW_MODEL < 10 )) From bab0373bbc5f767978ae614bfda645a78bdfc738 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Thu, 25 May 2023 00:51:04 +0200 Subject: [PATCH 021/106] v8.18 - DietPi-Software | TasmoAdmin: Update fallback URL --- dietpi/dietpi-software | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index 9e856d3abf..913bd2164e 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -11246,7 +11246,7 @@ _EOF_ # v3 drops PHP 7.4 support: https://github.com/TasmoAdmin/TasmoAdmin/releases/tag/v3.0.0 if (( $G_DISTRO > 6 )) then - local fallback_url='https://github.com/TasmoAdmin/TasmoAdmin/releases/download/v3.0.3/tasmoadmin_v3.0.3.tar.gz' + local fallback_url='https://github.com/TasmoAdmin/TasmoAdmin/releases/download/v3.0.5/tasmoadmin_v3.0.5.tar.gz' Download_Install "$(curl -sSfL 'https://api.github.com/repos/TasmoAdmin/TasmoAdmin/releases/latest' | mawk -F\" '/^ *"browser_download_url": ".*\/tasmoadmin_v[^"\/]*\.tar\.gz"$/{print $4}')" # v2 drops PHP <7.4 support: https://github.com/TasmoAdmin/TasmoAdmin/releases/tag/v2.0.0 From 1bdb9f2f103661caa1873b6a83d63832f2aac782 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sat, 27 May 2023 15:01:39 +0200 Subject: [PATCH 022/106] v8.18 - DietPi-Software | Prometheus Node Exporter: Update fallback URL --- dietpi/dietpi-software | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index 913bd2164e..52d2422c79 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -3309,7 +3309,7 @@ _EOF_ esac # Download binary - local fallback_url="https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5.0.linux-$arch.tar.gz" + local fallback_url="https://github.com/prometheus/node_exporter/releases/download/v1.6.0/node_exporter-1.6.0.linux-$arch.tar.gz" Download_Install "$(curl -sSfL 'https://api.github.com/repos/prometheus/node_exporter/releases/latest' | mawk -F\" "/^ *\"browser_download_url\": \".*\/node_exporter-.*\.linux-$arch\.tar\.gz\"$/{print \$4}")" G_EXEC mkdir -p /opt/node_exporter G_EXEC cp --preserve=mode node_exporter*/node_exporter /opt/node_exporter/ From 11b653b5c933cd3468ea228408e700135f0809a8 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sat, 27 May 2023 15:07:57 +0200 Subject: [PATCH 023/106] v8.18 - META | Remove live patches from merged from master --- .update/version | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/.update/version b/.update/version index acc028a113..41640ace32 100644 --- a/.update/version +++ b/.update/version @@ -14,15 +14,6 @@ G_MIN_DEBIAN=5 # Alternative Git branch to automatically migrate to when Debian version is too low G_OLD_DEBIAN_BRANCH='stretch' # Live patches -G_LIVE_PATCH_DESC=( - [0]='Fix missing executable bit on Restic install' - [1]='Fix endless hang when disabling RPi HEVC decoder' -) -G_LIVE_PATCH_COND=( - [0]='! grep -q '\''G_EXEC chmod +x /usr/local/bin/restic'\'' /boot/dietpi/dietpi-software' - [1]='(( $G_HW_MODEL < 10 )) && grep -q '\''&& /boot/config.txt'\'' /boot/dietpi/func/dietpi-set_hardware' -) -G_LIVE_PATCH=( - [0]='sed -i '\''\|Download_Install.*/usr/local/bin/restic|a\\t\t\tG_EXEC chmod +x /usr/local/bin/restic'\'' /boot/dietpi/dietpi-software' - [1]='sed -i '\''s|&& /boot/config.txt|/boot/config.txt|'\'' /boot/dietpi/func/dietpi-set_hardware' -) +G_LIVE_PATCH_DESC=() +G_LIVE_PATCH_COND=() +G_LIVE_PATCH=() From 14ef8094ecf93d408385c51195b345b0b70e45d8 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sat, 27 May 2023 22:00:54 +0200 Subject: [PATCH 024/106] v8.18 (#6391) - DietPi-Build | Add support for Sparky SBC --- .build/images/dietpi-build | 5 +- .build/images/dietpi-installer | 122 ++++++++--------------------- .github/workflows/dietpi-build.yml | 1 + 3 files changed, 37 insertions(+), 91 deletions(-) diff --git a/.build/images/dietpi-build b/.build/images/dietpi-build index a0e18b0faf..87fb6bad9d 100755 --- a/.build/images/dietpi-build +++ b/.build/images/dietpi-build @@ -111,6 +111,7 @@ case $HW_MODEL in '68.1') iname='NanoPiM4' HW_ARCH=3 partition_start=16 root_size=752;; '68.2') iname='NanoPCT4' HW_ARCH=3 partition_start=16 root_size=752;; '68.3') iname='NanoPiNEO4' HW_ARCH=3 partition_start=16 root_size=752;; + 70) iname='SparkySBC' HW_ARCH=2 partition_start=8 boot_size=48 root_size=712 boot_fstype='fat16';; 72) iname='ROCKPi4' HW_ARCH=3 partition_start=16 root_size=752;; 73) iname='ROCKPiS' HW_ARCH=3 partition_start=16 root_size=752;; 74) iname='RadxaZero' HW_ARCH=3 partition_start=4 root_size=764;; @@ -459,7 +460,7 @@ export FP_ROOT_DEV CLONING_TOOL OUTPUT_IMG_NAME MOUNT_IT='Off' SKIP_ARCHIVE SKIP [[ $EDITION && $EDITION != 'all' ]] || bash -c "$(curl -sSf "https://raw.githubusercontent.com/$G_GITOWNER/DietPi/$G_GITBRANCH/.build/images/dietpi-imager")" 'DietPi-Imager' "$OUTPUT_IMG_NAME.img" || exit 1 # Amiberry edition: Install automatically on first boot, enable autostart option and onboard audio on RPi -if [[ $EDITION =~ ^(Amiberry|all)$ ]] +if [[ $EDITION == 'Amiberry' || ( $EDITION == 'all' && $HW_MODEL == 0 ) ]] then G_EXEC mv "$OUTPUT_IMG_NAME.img" "${OUTPUT_IMG_NAME}_Amiberry.img" OUTPUT_IMG_NAME="${OUTPUT_IMG_NAME}_Amiberry" @@ -498,7 +499,7 @@ then fi # AlloGUI edition: Pre-install Allo GUI with all managed audiophile software -if [[ $EDITION =~ ^(AlloGUI|all)$ ]] +if [[ $EDITION == 'AlloGUI' || ( $EDITION == 'all' && $HW_MODEL =~ ^(0|70)$ ) ]] then G_EXEC mv "$OUTPUT_IMG_NAME.img" "${OUTPUT_IMG_NAME%_Amiberry}_AlloGUI.img" OUTPUT_IMG_NAME="${OUTPUT_IMG_NAME%_Amiberry}_AlloGUI" diff --git a/.build/images/dietpi-installer b/.build/images/dietpi-installer index 7e825d230d..a313d71bdc 100755 --- a/.build/images/dietpi-installer +++ b/.build/images/dietpi-installer @@ -1053,19 +1053,19 @@ _EOF_ # Workaround for Odroid N2 failing to boot from eMMC: https://forum.armbian.com/topic/20206-odroid-n2-issues-with-recent-firmware-and-emmc-modules/#comment-142409 elif (( $G_HW_MODEL == 15 )) then - G_EXEC curl -sSfO 'https://dietpi.com/downloads/binaries/u-boot-odroidn2.bin.gz' - G_EXEC gzip -d u-boot-odroidn2.bin.gz - G_EXEC dd if=u-boot-odroidn2.bin "of=$BOOT_DEVICE" bs=512 seek=1 conv=notrunc,fdatasync - G_EXEC rm u-boot-odroidn2.bin + G_EXEC curl -sSfo u-boot.gz 'https://dietpi.com/downloads/binaries/u-boot-odroidn2.bin.gz' + G_EXEC gzip -d u-boot.gz + G_EXEC dd if=u-boot "of=$BOOT_DEVICE" bs=512 seek=1 conv=notrunc,fdatasync + G_EXEC rm u-boot # Workaround for NanoPi R1 failing boot: https://github.com/MichaIng/DietPi/issues/5927 elif (( $G_HW_MODEL == 48 )) then - G_EXEC curl -sSfO 'https://dietpi.com/downloads/binaries/u-boot-nanopir1.bin.gz' - G_EXEC gzip -d u-boot-nanopir1.bin.gz + G_EXEC curl -sSfo u-boot.gz 'https://dietpi.com/downloads/binaries/u-boot-nanopir1.bin.gz' + G_EXEC gzip -d u-boot.gz G_EXEC dd if=/dev/zero "of=$BOOT_DEVICE" bs=1K count=1023 seek=1 conv=notrunc,fdatasync - G_EXEC dd if=u-boot-nanopir1.bin "of=$BOOT_DEVICE" bs=1K seek=8 conv=notrunc,fdatasync - G_EXEC rm u-boot-nanopir1.bin + G_EXEC dd if=u-boot "of=$BOOT_DEVICE" bs=1K seek=8 conv=notrunc,fdatasync + G_EXEC rm u-boot fi # RPi @@ -1122,15 +1122,35 @@ _EOF_ G_EXEC rm package.deb # VisionFive 2 - elif [[ $G_HW_MODEL == 81 ]] + elif (( $G_HW_MODEL == 81 )) then - [[ -f '/boot/extlinux/extlinux.conf' ]] && G_EXEC rm /boot/extlinux/extlinux.conf G_EXEC curl -sSfo package.deb 'https://dietpi.com/downloads/binaries/linux-image-visionfive2.deb' + [[ -f '/boot/extlinux/extlinux.conf' ]] && G_EXEC rm /boot/extlinux/extlinux.conf G_EXEC_OUTPUT=1 G_EXEC dpkg -i package.deb G_EXEC rm package.deb G_EXEC sed -i "s/root=[^[:blank:]]*/root=PARTUUID=$(findmnt -Ufnro PARTUUID -M /)/" /boot/extlinux/extlinux.conf G_EXEC sed -i "s/rootfstype=[^[:blank:]]*/rootfstype=$(findmnt -Ufnro FSTYPE -M /)/" /boot/extlinux/extlinux.conf + # Sparky SBC + elif (( $G_HW_MODEL == 70 )) + then + G_EXEC curl -sSfo package.deb 'https://dietpi.com/downloads/binaries/firmware-sparkysbc.deb' + [[ -f '/boot/uenv.txt' ]] && G_EXEC rm /boot/uenv.txt + G_EXEC_OUTPUT=1 G_EXEC dpkg -i package.deb + G_EXEC rm package.deb + + G_EXEC curl -sSfo u-boot.gz 'https://dietpi.com/downloads/binaries/u-boot-sparkysbc.img.gz' + G_EXEC gzip -d u-boot.gz + G_EXEC dd if=u-boot "of=$BOOT_DEVICE" bs=1 count=442 conv=notrunc,fdatasync + G_EXEC dd if=u-boot "of=$BOOT_DEVICE" bs=512 skip=1 seek=1 conv=notrunc,fdatasync + G_EXEC rm u-boot + + # Use performance governor for stability + G_CONFIG_INJECT 'CONFIG_CPU_GOVERNOR=' 'CONFIG_CPU_GOVERNOR=performance' /boot/dietpi.txt + + # Apply Lighttpd as default webserver, since Apache does not run on Linux 3.10: https://dietpi.com/forum/t/allogui-not-working-apache-service-doesnt-start/15708 + G_CONFIG_INJECT 'AUTO_SETUP_WEB_SERVER_INDEX=' 'AUTO_SETUP_WEB_SERVER_INDEX=-2' /boot/dietpi.txt + # Armbian grab currently installed packages elif [[ $G_HW_MODEL != 75 && $(dpkg-query -Wf '${Package} ') == *'armbian'* ]] then @@ -1196,8 +1216,8 @@ _EOF_ G_EXEC rm -Rf /etc/apt/sources.list.d/{,.??,.[^.]}* G_EXEC eval "echo 'deb https://apt.armbian.com/ $DISTRO_TARGET_NAME main' > /etc/apt/sources.list.d/dietpi-armbian.list" - # Generic kernel + device tree + U-Boot package auto detect + initramfs-tools (not required on Sparky SBC) - elif (( $G_HW_MODEL != 75 && $G_HW_MODEL != 70 )) + # Generic kernel + device tree + U-Boot package auto detect + initramfs-tools + elif (( $G_HW_MODEL != 75 )) then mapfile -t apackages < <(dpkg-query -Wf '${Package}\n' | grep -E '^linux-(image|dtb|u-boot)-|^u-boot') [[ ${apackages[0]} ]] || G_DIETPI-NOTIFY 2 'Unable to find kernel packages for installation. Assuming non-APT/.deb kernel installation.' @@ -1809,84 +1829,8 @@ _EOF_' G_EXEC eval 'echo -e '\''apm = 127\nforce_spindown_time = 120'\'' > /etc/hdparm.conf' fi - # Sparky SBC - if (( $G_HW_MODEL == 70 )) - then - # Install latest kernel/drivers - G_EXEC curl -sSf 'https://raw.githubusercontent.com/sparky-sbc/sparky-test/master/dragon_fly_check/uImage' -o /boot/uImage - G_EXEC curl -sSfO 'https://raw.githubusercontent.com/sparky-sbc/sparky-test/master/dragon_fly_check/3.10.38.bz2' - G_EXEC rm -Rf /lib/modules/* - G_EXEC tar -xf 3.10.38.bz2 -C /lib/modules/ - G_EXEC rm 3.10.38.bz2 - # - USB audio update - G_EXEC curl -sSf 'https://raw.githubusercontent.com/sparky-sbc/sparky-test/master/dsd-marantz/snd-usb-audio.ko' -o /lib/modules/3.10.38/kernel/sound/usb/snd-usb-audio.ko - # - Ethernet update - G_EXEC curl -sSf 'https://raw.githubusercontent.com/sparky-sbc/sparky-test/master/sparky-eth/ethernet.ko' -o /lib/modules/3.10.38/kernel/drivers/net/ethernet/acts/ethernet.ko - - # Boot args - cat << '_EOF_' > /boot/uenv.txt -uenvcmd=setenv os_type linux; -bootargs=earlyprintk clk_ignore_unused selinux=0 scandelay console=tty0 loglevel=1 real_rootflag=rw root=/dev/mmcblk0p2 rootwait init=/lib/systemd/systemd aotg.urb_fix=1 aotg.aotg1_speed=0 net.ifnames=0 systemd.unified_cgroup_hierarchy=0 -_EOF_ - # Blacklist GPU and touch screen modules: https://github.com/MichaIng/DietPi/issues/699#issuecomment-271362441 - cat << '_EOF_' > /etc/modprobe.d/dietpi-disable_sparkysbc_touchscreen.conf -blacklist owl_camera -blacklist gsensor_stk8313 -blacklist ctp_ft5x06 -blacklist ctp_gsl3680 -blacklist gsensor_bma222 -blacklist gsensor_mir3da -_EOF_ - cat << '_EOF_' > /etc/modprobe.d/dietpi-disable_sparkysbc_gpu.conf -blacklist pvrsrvkm -blacklist drm -blacklist videobuf2_vmalloc -blacklist bc_example -_EOF_ - # Use performance gov for stability - G_CONFIG_INJECT 'CONFIG_CPU_GOVERNOR=' 'CONFIG_CPU_GOVERNOR=performance' /boot/dietpi.txt - - # Install script to toggle between USB and onboard Ethernet automatically - cat << '_EOF_' > /var/lib/dietpi/services/dietpi-sparkysbc_ethernet.sh -#!/bin/dash -# Called from: /etc/systemd/system/dietpi-sparkysbc_ethernet.service -# We need to wait until USB Ethernet is established on USB bus, which takes much longer than onboard init. -sleep 20 -# Disable onboard Ethernet if USB Ethernet is found -if ip a s eth1 > /dev/null 2>&1; then - - echo 'blacklist ethernet' > /etc/modprobe.d/dietpi-disable_sparkysbc_ethernet.conf - reboot - -# Enable onboard Ethernet if no adapter is found -elif ! ip a s eth0 > /dev/null 2>&1; then - - rm -f /etc/modprobe.d/dietpi-disable_sparkysbc_ethernet.conf - reboot - -fi -_EOF_ - G_EXEC chmod +x /var/lib/dietpi/services/dietpi-sparkysbc_ethernet.sh - cat << '_EOF_' > /etc/systemd/system/dietpi-sparkysbc_ethernet.service -[Unit] -Description=Sparky SBC auto detect and toggle onboard/USB Ethernet -Wants=network-online.target -After=network-online.target - -[Service] -RemainAfterExit=yes -ExecStart=/var/lib/dietpi/services/dietpi-sparkysbc_ethernet.sh - -[Install] -WantedBy=multi-user.target -_EOF_ - G_EXEC systemctl enable dietpi-sparkysbc_ethernet - - # Apply Lighttpd as default webserver, since Apache does not run on Linux 3.10: https://dietpi.com/forum/t/allogui-not-working-apache-service-doesnt-start/15708 - G_CONFIG_INJECT 'AUTO_SETUP_WEB_SERVER_INDEX=' 'AUTO_SETUP_WEB_SERVER_INDEX=-2' /boot/dietpi.txt - # RPi - elif (( $G_HW_MODEL < 10 )) + if (( $G_HW_MODEL < 10 )) then # Apply minimum GPU memory split for server usage: This applies a custom dtoverlay to disable VCSM: https://github.com/MichaIng/DietPi/pull/3900 /boot/dietpi/func/dietpi-set_hardware gpumemsplit 16 diff --git a/.github/workflows/dietpi-build.yml b/.github/workflows/dietpi-build.yml index c7bf684f35..a3d3277253 100644 --- a/.github/workflows/dietpi-build.yml +++ b/.github/workflows/dietpi-build.yml @@ -64,6 +64,7 @@ jobs: '"-m 68.1 -d 6", "-m 68.1 -d 7", '\ '"-m 68.2 -d 6", "-m 68.2 -d 7", '\ '"-m 68.3 -d 6", "-m 68.3 -d 7", '\ + '"-m 70 -d 6 -e all", '\ '"-m 72 -d 6", "-m 72 -d 7", '\ '"-m 73 -d 6", "-m 73 -d 7", '\ '"-m 74 -d 6", "-m 74 -d 7", '\ From 930de490745c8d9e7b45c19b38576302d18444ba Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sat, 27 May 2023 22:08:34 +0200 Subject: [PATCH 025/106] v8.18 - DietPi-Software | Enable installed services before automation post installation steps, so that the custom script can terminate DietPi-Software without leaving services disabled --- dietpi/dietpi-software | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index 52d2422c79..5e4446e0e4 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -14212,6 +14212,16 @@ _EOF_ G_DIETPI-NOTIFY 3 "$G_PROGRAM_NAME" 'Finalising install' + # Enable installed services + if [[ ${aENABLE_SERVICES[0]}${aSTART_SERVICES[0]} ]] + then + G_DIETPI-NOTIFY 2 'Enabling installed services' + for i in "${aENABLE_SERVICES[@]}" "${aSTART_SERVICES[@]}" + do + G_EXEC_NOHALT=1 G_EXEC systemctl --no-reload enable "$i" + done + fi + # Reload systemd units G_EXEC systemctl daemon-reload @@ -14253,8 +14263,6 @@ _EOF_ - Console\n - Desktop\n - Kodi' && /boot/dietpi/dietpi-autostart fi - # Interactive software post-configuration - # Install finished, set all installed software to state 2 (installed) for i in "${!aSOFTWARE_NAME[@]}" do @@ -15491,16 +15499,6 @@ List of installed software and their online documentation URLs: G_DIETPI-NOTIFY 3 "$G_PROGRAM_NAME" 'Install completed' - # Enable installed services - if [[ ${aENABLE_SERVICES[0]}${aSTART_SERVICES[0]} ]] - then - G_DIETPI-NOTIFY 2 'Enabling installed services' - for i in "${aENABLE_SERVICES[@]}" "${aSTART_SERVICES[@]}" - do - G_EXEC_NOHALT=1 G_EXEC systemctl --no-reload enable "$i" - done - fi - # Upload DietPi-Survey data if opted in, prompt user choice if no settings file exists # - Skip if G_SERVICE_CONTROL == 0, exported by "patches" (DietPi-Update) which sends survey already # Start services, restart to reload configs of possibly running services From 138646113da5b37f42432af6ed073e957823da12 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sat, 27 May 2023 22:09:25 +0200 Subject: [PATCH 026/106] v8.18 - RC up --- .update/version | 2 +- dietpi/func/dietpi-globals | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.update/version b/.update/version index 41640ace32..bd0c332c83 100644 --- a/.update/version +++ b/.update/version @@ -3,7 +3,7 @@ # Available DietPi version G_REMOTE_VERSION_CORE=8 G_REMOTE_VERSION_SUB=18 -G_REMOTE_VERSION_RC=-1 +G_REMOTE_VERSION_RC=0 # Minimum DietPi version to allow update G_MIN_VERSION_CORE=6 G_MIN_VERSION_SUB=14 diff --git a/dietpi/func/dietpi-globals b/dietpi/func/dietpi-globals index ec153f0b30..f344fea13f 100644 --- a/dietpi/func/dietpi-globals +++ b/dietpi/func/dietpi-globals @@ -59,7 +59,7 @@ # - Assign defaults/code version as fallback [[ $G_DIETPI_VERSION_CORE ]] || G_DIETPI_VERSION_CORE=8 [[ $G_DIETPI_VERSION_SUB ]] || G_DIETPI_VERSION_SUB=18 - [[ $G_DIETPI_VERSION_RC ]] || G_DIETPI_VERSION_RC=-1 + [[ $G_DIETPI_VERSION_RC ]] || G_DIETPI_VERSION_RC=0 [[ $G_GITBRANCH ]] || G_GITBRANCH='master' [[ $G_GITOWNER ]] || G_GITOWNER='MichaIng' # - Save current version and Git branch From 80c4f412eef3005a4a1a71961e39967b34b2e5a5 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sun, 28 May 2023 00:07:48 +0200 Subject: [PATCH 027/106] v8.18 (#6365) - CI | DietPi-Software: Check installed services, ports and commands automatically after software install tests --- .github/workflows/dietpi-software.bash | 186 ++++++++++++++++++++++++- 1 file changed, 185 insertions(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index a66b936877..223e31b509 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -59,6 +59,161 @@ esac [[ $SOFTWARE =~ ^[0-9\ ]+$ ]] || { G_DIETPI-NOTIFY 1 "Invalid software list \"$SOFTWARE\" passed, aborting..."; exit 1; } [[ $RPI =~ ^|'false'|'true'$ ]] || { G_DIETPI-NOTIFY 1 "Invalid RPi flag \"$RPI\" passed, aborting..."; exit 1; } +########################################## +# Create service and port lists +########################################## +aSERVICES=() aPORTS=() aCOMMANDS=() +Process_Software() +{ + local i + for i in "$@" + do + case $i in + 'webserver') [[ $SOFTWARE =~ (^| )8[345]( |$) ]] || aSERVICES[83]='apache2' aPORTS[80]='tcp';; + 152) aSERVICES[i]='avahi-daemon' aPORTS[5353]='udp';; + 104) aSERVICES[i]='dropbear' aPORTS[22]='tcp';; + 105) aSERVICES[i]='ssh' aPORTS[22]='tcp';; + 194) aSERVICES[i]='postgresql';; + 29) aSERVICES[i]='xrdp' aPORTS[3389]='tcp';; + 30) aSERVICES[i]='nxserver' aPORTS[4000]='tcp';; + 200) aSERVICES[i]='dietpi-dashboard' aPORTS[5252]='tcp';; + 99) aSERVICES[i]='node_exporter' aPORTS[9100]='tcp';; + 44) aSERVICES[i]='transmission-daemon' aPORTS[9091]='tcp';; + 94) aSERVICES[i]='proftpd' aPORTS[21]='tcp';; + 96) aSERVICES[i]='smbd' aPORTS[139]='tcp' aPORTS[445]='tcp';; + 95) aSERVICES[i]='vsftpd' aPORTS[21]='tcp';; + 109) aSERVICES[i]='nfs-kernel-server' aPORTS[2049]='tcp';; + 83) aSERVICES[i]='apache2' aPORTS[80]='tcp';; + 85) aSERVICES[i]='nginx' aPORTS[80]='tcp';; + 84) aSERVICES[i]='lighttpd' aPORTS[80]='tcp';; + 88) aSERVICES[i]='mariadb' aPORTS[3306]='tcp';; + 91) aSERVICES[i]='redis-server' aPORTS[6379]='tcp';; + 89) case $DISTRO in 'buster') aSERVICES[i]='php7.3-fpm';; 'bullseye') aSERVICES[i]='php7.4-fpm';; *) aSERVICES[i]='php8.2-fpm';; esac;; + 125) aSERVICES[i]='synapse' aPORTS[8008]='tcp';; + 128) aSERVICES[i]='mpd' aPORTS[6600]='tcp';; + 133) aSERVICES[i]='yacy' aPORTS[8090]='tcp';; + 186) aSERVICES[i]='ipfs' aPORTS[5003]='tcp' aPORTS[8087]='tcp';; + 16) aSERVICES[i]='microblog-pub' aPORTS[8007]='tcp';; + 2) aSERVICES[i]='fahclient' aPORTS[7396]='tcp';; + 32) aSERVICES[i]='ympd' aPORTS[1337]='tcp';; + 148) aSERVICES[i]='mympd' aPORTS[1333]='tcp';; + 121) aSERVICES[i]='roonbridge' aPORTS[9003]='udp';; + 118) aSERVICES[i]='mopidy' aPORTS[6680]='tcp';; + 39) aSERVICES[i]='minidlna' aPORTS[8200]='tcp';; + 111) aSERVICES[i]='urbackupsrv' aPORTS[55414]='tcp';; + 59) aSERVICES[i]='raspimjpeg';; + 45) aSERVICES[i]='deluged deluge-web' aPORTS[8112]='tcp' aPORTS[58846]='tcp' aPORTS[6882]='tcp';; + 115) aSERVICES[i]='webmin' aPORTS[10000]='tcp';; + 135) aSERVICES[i]='icecast2 darkice' aPORTS[8000]='tcp';; + #184) aSERVICES[i]='tor' aPORTS[443]='tcp' aPORTS[9051]='tcp';; # Cannot be installed non-interactively, ports can be chosen and depend on chosen relay type + 182) aSERVICES[i]='unbound' aPORTS[53]='udp'; [[ ${aSERVICES[126]} ]] && aPORTS[5353]='udp';; # Uses port 5353 if Pi-hole or AdGuard Home is installed, but those do listen on port 53 instead + #93) aSERVICES[i]='pihole-FTL' aPORTS[53]='udp';; # Cannot be installed non-interactively + 126) aSERVICES[i]='adguardhome' aPORTS[53]='udp' aPORTS[8083]='tcp'; [[ ${aSERVICES[182]} ]] && aPORTS[5353]='udp';; # Unbound uses port 5353 if AdGuard Home is installed + 33) aSERVICES[i]='airsonic' aPORTS[8080]='tcp';; + 204) aSERVICES[i]='navidrome' aPORTS[4533]='tcp';; + 100) aSERVICES[i]='pijuice';; # aPORTS[????]='tcp';; + #171) aSERVICES[i]='frps frpc' aPORTS[7000]='tcp' aPORTS[7500]='tcp' aPORTS[7400]='tcp';; # Cannot be installed non-interactively, ports on chosen type + 122) aSERVICES[i]='node-red' aPORTS[1880]='tcp';; + 123) aSERVICES[i]='mosquitto' aPORTS[1883]='tcp';; + 131) aSERVICES[i]='blynkserver' aPORTS[9443]='tcp';; + 124) aSERVICES[i]='networkaudiod';; # aPORTS[????]='tcp';; + 71) aSERVICES[i]='webiopi' aPORTS[8002]='tcp';; + 98) aSERVICES[i]='haproxy' aPORTS[80]='tcp';; + 35) aSERVICES[i]='logitechmediaserver' aPORTS[9000]='tcp';; + 28|120) aSERVICES[i]='vncserver' aPORTS[5901]='tcp';; + 73) aSERVICES[i]='fail2ban';; + 74) aSERVICES[i]='influxdb' aPORTS[8086]='tcp' aPORTS[8088]='tcp';; + 77) aSERVICES[i]='grafana-server' aPORTS[3001]='tcp';; + 80) aSERVICES[i]='ubooquity' aPORTS[2038]='tcp' aPORTS[2039]='tcp';; + 179) aSERVICES[i]='komga' aPORTS[2037]='tcp';; + 58) aSERVICES[i]='tailscale';; # aPORTS[????]='udp';; + 97) aSERVICES[i]='openvpn' aPORTS[1194]='udp';; + #117) :;; # ToDo: Implement automated install via /boot/unattended_pivpn.conf + 201) aSERVICES[i]='zerotier-one' aPORTS[9993]='tcp';; + #60) aPORTS[53]='udp' aPORTS[68]='udp';; Cannot be installed in CI since a WiFi interface is required + #61) aSERVICES[i]='tor' aPORTS[9040]='udp';; Cannot be installed in CI since a WiFi interface is required + 37) aSERVICES[i]='shairport-sync' aPORTS[5000]='tcp';; # AirPlay 2 would be TCP port 7000 + 36) aSERVICES[i]='Squeezelite';; # Random high UDP port + 66) aSERVICES[i]='rpimonitor' aPORTS[8888]='tcp';; + 65) aSERVICES[i]='netdata' aPORTS[19999]='tcp';; + 43) aSERVICES[i]='mumble-server' aPORTS[64738]='tcp';; + 41) aSERVICES[i]='emby-server' aPORTS[8096]='tcp';; + 42) aSERVICES[i]='plexmediaserver' aPORTS[32400]='tcp';; + 52) aSERVICES[i]='cuberite' aPORTS[1339]='tcp';; + 53) aSERVICES[i]='mineos' aPORTS[8443]='tcp';; + 49) aSERVICES[i]='gogs' aPORTS[3000]='tcp';; + 165) aSERVICES[i]='gitea' aPORTS[3000]='tcp';; + 46) aSERVICES[i]='qbittorrent' aPORTS[1340]='tcp' aPORTS[6881]='tcp';; + 107) aSERVICES[i]='rtorrent' aPORTS[49164]='tcp' aPORTS[6881]='udp';; + 132) aSERVICES[i]='aria2' aPORTS[6800]='tcp';; # aPORTS[6881-6999]='tcp';; # Listens on random port + 116) aSERVICES[i]='medusa' aPORTS[8081]='tcp';; + 50) aSERVICES[i]='syncthing' aPORTS[8384]='tcp';; + 136) aSERVICES[i]='motioneye' aPORTS[8765]='tcp';; + 137) aSERVICES[i]='mjpg-streamer' aPORTS[8082]='tcp';; + 138) aSERVICES[i]='virtualhere' aPORTS[7575]='tcp';; + 139) aSERVICES[i]='sabnzbd' aPORTS[8080]='tcp';; # ToDo: Solve conflict with Airsonic + 177) aSERVICES[i]='firefox-sync' aPORTS[5002]='tcp';; + 183) aSERVICES[i]='vaultwarden' aPORTS[8001]='tcp';; + 142) aSERVICES[i]='snapd';; + 141) aSERVICES[i]='spotify-connect-web' aPORTS[4000]='tcp';; + 143) aSERVICES[i]='koel' aPORTS[8003]='tcp';; + 144) aSERVICES[i]='sonarr' aPORTS[8989]='tcp';; + 145) aSERVICES[i]='radarr' aPORTS[7878]='tcp';; + 106) aSERVICES[i]='lidarr' aPORTS[8686]='tcp';; + 180) aSERVICES[i]='bazarr' aPORTS[6767]='tcp';; + 146) aSERVICES[i]='tautulli' aPORTS[8181]='tcp';; + 147) aSERVICES[i]='jackett' aPORTS[9117]='tcp';; + 149) aSERVICES[i]='nzbget' aPORTS[6789]='tcp';; + 151) aSERVICES[i]='prowlarr' aPORTS[9696]='tcp';; + 203) aSERVICES[i]='readarr' aPORTS[8787]='tcp';; + 155) aSERVICES[i]='htpc-manager' aPORTS[8085]='tcp';; + 153) aSERVICES[i]='octoprint' aPORTS[5001]='tcp';; + 187) aSERVICES[i]='cups' aPORTS[631]='tcp';; + 154) aSERVICES[i]='roonserver';; # Listens on a variety of different port ranges + 158) aSERVICES[i]='minio' aPORTS[9000]='tcp';; # ToDo: Solve port conflict with LMS + 162) aSERVICES[i]='docker';; + 161) aSERVICES[i]='bdd' aPORTS[80]='tcp' aPORTS[443]='tcp';; + 164) aSERVICES[i]='nukkit' aPORTS[19132]='udp';; + 163) aSERVICES[i]='gmediarender';; # DLNA => UPnP high range of ports + 166) aSERVICES[i]='pi-spc';; + 167) aSERVICES[i]='raspotify';; + 169) aSERVICES[i]='voice-recognizer';; + 176) aSERVICES[i]='mycroft';; + 86) aSERVICES[i]='roon-extension-manager';; + 178) aSERVICES[i]='jellyfin' aPORTS[8097]='tcp';; + 206) aSERVICES[i]='openhab' aPORTS[8444]='tcp';; + 157) aSERVICES[i]='home-assistant' aPORTS[8123]='tcp';; + 181) aSERVICES[i]='papermc' aPORTS[25565]='tcp';; + 140) aSERVICES[i]='domoticz' aPORTS[8124]='tcp' aPORTS[8424]='tcp';; + 191) aSERVICES[i]='snapserver' aPORTS[1780]='tcp';; + #192) aSERVICES[i]='snapclient';; # cannot be installed non-interactively + 202) aCOMMANDS[i]='rclone -h';; + 209) aCOMMANDS[i]='restic version';; + 198) aSERVICES[i]='filebrowser' aPORTS[8084]='tcp';; + 199) aSERVICES[i]='spotifyd';; # aPORTS[4079]='tcp';; ??? + 185) aSERVICES[i]='docker' aPORTS[9002]='tcp';; + #172) aSERVICES[i]='wg-quick@wg0' aPORTS[51820]='udp';; # cannot be installed non-interactively + *) :;; + esac + done +} +for i in $SOFTWARE +do + case $i in + 47|114|168) Process_Software 88 89 91 webserver;; + 38|40|48|54|55|57|59|90|160) Process_Software 88 89 webserver;; + 27|56|63|64|107|132) Process_Software 89 webserver;; # 93 (Pi-hole) cannot be installed non-interactively + 125) Process_Software 194;; + 32|148|119) Process_Software 128;; + 129) Process_Software 88 89 128 webserver;; + #61) Process_Software 60;; # Cannot be installed in CI + 49|165) Process_Software 88;; + 205) Process_Software webserver;; + *) :;; + esac + Process_Software "$i" +done + ########################################## # Dependencies ########################################## @@ -144,8 +299,37 @@ fi # Workaround for failing 32-bit ARM Rust builds on ext4 in QEMU emulated container on 64-bit host: https://github.com/rust-lang/cargo/issues/9545 (( $ARCH < 3 && $G_HW_ARCH > 9 )) && G_EXEC eval 'echo -e '\''tmpfs /mnt/dietpi_userdata tmpfs size=3G,noatime,lazytime\ntmpfs /root tmpfs size=3G,noatime,lazytime'\'' >> rootfs/etc/fstab' +# Check for service status, ports and commands +G_EXEC eval 'echo -e '\''#!/bin/dash\nexit_code=0; /boot/dietpi/dietpi-services start || exit_code=1'\'' > rootfs/boot/Automation_Custom_Script.sh' +if (( ${#aSERVICES[@]} || ${#aPORTS[@]} || ${#aCOMMANDS[@]} )) +then + G_EXEC eval 'echo '\''sleep 30'\'' >> rootfs/boot/Automation_Custom_Script.sh' + for i in "${aSERVICES[@]}" + do + cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh +echo -n '\e[33m[ INFO ] Checking $i service status:\e[0m ' +systemctl is-active '$i' || exit_code=1 +_EOF_ + done + for i in "${!aPORTS[@]}" + do + cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh +echo '\e[33m[ INFO ] Checking ${aPORTS[i]^^} port $i status:\e[0m' +ss -${aPORTS[i]::1}lpn | grep ':${i}[[:blank:]]' || exit_code=1 +_EOF_ + done + for i in "${aCOMMANDS[@]}" + do + cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh +echo '\e[33m[ INFO ] Testing command $i:\e[0m' +$i || exit_code=1 +_EOF_ + done +fi + # Success flag and shutdown -G_EXEC eval 'echo -e '\''#!/bin/dash\n/boot/dietpi/dietpi-services start\n> /success\npoweroff'\'' > rootfs/boot/Automation_Custom_Script.sh' +# shellcheck disable=SC2016 +G_EXEC eval 'echo '\''[ $exit_code = 0 ] && > /success; poweroff'\'' >> rootfs/boot/Automation_Custom_Script.sh' # Shutdown as well on failure G_EXEC sed -i 's|Prompt_on_Failure$|{ journalctl -e; ss -tlpn; df -h; free -h; poweroff; }|' rootfs/boot/dietpi/dietpi-login From d2e513a8d0adfa4e3c0b65ac3bf58f281802eb6c Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sun, 28 May 2023 17:33:16 +0200 Subject: [PATCH 028/106] v8.18 - DietPi-Software | Update Radarr and Readarr fallback URLs --- dietpi/dietpi-software | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index 5e4446e0e4..070b64755c 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -9700,7 +9700,7 @@ _EOF_ # ARMv7 else local url=$(curl -sSfL 'https://api.github.com/repos/Radarr/Radarr/releases/latest' | mawk -F\" '/"browser_download_url": .*linux-core-arm\.tar\.gz"/{print $4}') - local fallback_url='https://github.com/Radarr/Radarr/releases/download/v4.4.4.7068/Radarr.master.4.4.4.7068.linux-core-arm.tar.gz' + local fallback_url='https://github.com/Radarr/Radarr/releases/download/v4.5.2.7388/Radarr.master.4.5.2.7388.linux-core-arm.tar.gz' fi # ARMv8 @@ -10232,7 +10232,7 @@ _EOF_ *) local arch='x64';; esac - local fallback_url="https://github.com/Readarr/Readarr/releases/download/v0.1.5.1832/Readarr.develop.0.1.5.1832.linux-core-$arch.tar.gz" + local fallback_url="https://github.com/Readarr/Readarr/releases/download/v0.1.6.1867/Readarr.develop.0.1.6.1867.linux-core-$arch.tar.gz" Download_Install "$(curl -sSfL 'https://api.github.com/repos/Readarr/Readarr/releases' | mawk -F\" "/\"browser_download_url\": .*linux-core-$arch\.tar\.gz\"/{print \$4}" | head -1)" G_EXEC mv Readarr /opt/readarr fi From 5991a7af359fa003a09f9a0e4c055ec576513fdd Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sun, 28 May 2023 18:10:13 +0200 Subject: [PATCH 029/106] v8.18 - DietPi-Software | Minor --- dietpi/dietpi-software | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index 070b64755c..18d973d329 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -1548,13 +1548,12 @@ Available commands: #-------------------------------------------------------------------------------- software_id=2 aSOFTWARE_NAME[$software_id]='Folding@Home' - aSOFTWARE_DESC[$software_id]='distributed disease research project' + aSOFTWARE_DESC[$software_id]='Help desease research with your computing power!' aSOFTWARE_CATX[$software_id]=19 aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/distributed_projects/#foldinghome' - # - ARMv6 - ARMv7 + # - ARMv6/7/RISC-V: No package: https://download.foldingathome.org/releases/public/release/fahclient/ aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,1]=0 aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,2]=0 - # - RISC-V: No package: https://download.foldingathome.org/releases/public/release/fahclient/ aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0 #------------------ software_id=133 From 044ec97de14374d4fb0d82aca473287e90a14fe2 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sun, 28 May 2023 18:17:03 +0200 Subject: [PATCH 030/106] v8.18 - CI | DietPi-Software: Test java command when testing JRE and JDK install --- .github/workflows/dietpi-software.bash | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 223e31b509..327c3490f0 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -193,6 +193,7 @@ Process_Software() 199) aSERVICES[i]='spotifyd';; # aPORTS[4079]='tcp';; ??? 185) aSERVICES[i]='docker' aPORTS[9002]='tcp';; #172) aSERVICES[i]='wg-quick@wg0' aPORTS[51820]='udp';; # cannot be installed non-interactively + 196) aCOMMANDS[i]='java -version' *) :;; esac done @@ -209,6 +210,7 @@ do #61) Process_Software 60;; # Cannot be installed in CI 49|165) Process_Software 88;; 205) Process_Software webserver;; + 8) Process_Software 196;; *) :;; esac Process_Software "$i" From e6d4ba34b4acf678267f67a304c4512c85f44f5d Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sun, 28 May 2023 18:18:19 +0200 Subject: [PATCH 031/106] v8.18 - CI | DietPi-Software: Syntax --- .github/workflows/dietpi-software.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 327c3490f0..7d50397e20 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -193,7 +193,7 @@ Process_Software() 199) aSERVICES[i]='spotifyd';; # aPORTS[4079]='tcp';; ??? 185) aSERVICES[i]='docker' aPORTS[9002]='tcp';; #172) aSERVICES[i]='wg-quick@wg0' aPORTS[51820]='udp';; # cannot be installed non-interactively - 196) aCOMMANDS[i]='java -version' + 196) aCOMMANDS[i]='java -version';; *) :;; esac done From 42ec9a572f054892e1fc188e0a3f2686fc6d1bd8 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Mon, 29 May 2023 19:43:30 +0200 Subject: [PATCH 032/106] v8.18 - DietPi-Software | LXQt: Resolved an issue where the install on Bookworm systems failed since configs were missing. --- .conf/desktop/lxqt/lxqt-bookworm.7z | Bin 0 -> 1058 bytes .conf/desktop/lxqt/lxqt-stretch.7z | Bin 4208 -> 0 bytes CHANGELOG.txt | 1 + 3 files changed, 1 insertion(+) create mode 100644 .conf/desktop/lxqt/lxqt-bookworm.7z delete mode 100644 .conf/desktop/lxqt/lxqt-stretch.7z diff --git a/.conf/desktop/lxqt/lxqt-bookworm.7z b/.conf/desktop/lxqt/lxqt-bookworm.7z new file mode 100644 index 0000000000000000000000000000000000000000..ddbf415a270609a06fbceb57a8571c8a5f9ac855 GIT binary patch literal 1058 zcmV+-1l{{Ldc3bE8~_BvIcN3X0{{R30000Z0000000009GXG`Z1rP$~T>veS$qe+c zc_^(c+amxA0lrBqSoF`EZNhg4Gn37M<;KgNMH{wd+ad@-xi2$ z2GH6p=@$O9Z?CX>J}82Y4*~}Q#M1T=n9t3S+w+CaO}Jbuj}y#jgjjS$Gz2~VdB)R2 zEO^}2IAYs%+{NQ`h-Yj~d-`+l5$afK4BL`~MI@}31B(MSW z=Srhg|98Bx{&V#v_-Ca4h0luaxTU>gChy8y1!Y?+qZO~dwXeByoQ!TIs`$_JU&XnW zhj-B|HEo;vyuw%#7q)VsAa^E$G^AP8tc8jx zaFdvlp1xjQq!05-029?H_iFWz1nDP_L)zHoY=L+7=-CTBie+On-p zNz!_7OE)huyEthXMmsxqsAP&VS9M3+Z?^?`foJwA!p)?(v)J7>?I;2{)= zG1Lmj{drtTMakb=WU)FufkA$XWz8Gw0RjvvFS;rgr6hozqqT*@aYH+S5WbU) zV=wJnMUy=1OzG}!8{C~^)E97ey_xYN_T_KYR;7N?3y}anA;%?0R|V4?qgWzE2qd=@kSqI!whszFoMR$2ha}sx zGkf>gy&0n`A;#YEu^2#+f>;}!162#df>kS#4wBXM1nME}3l#j@{=&qVaZ990^9fSC zoqRvV&+0DC@DfAe5M8WkqG1UlGx-conr?gM(36Qp9FMwrT`?Tb*9HyVz!I>|<^ud? z9bHJ4a=bMt5JMwXnKwR8*G zunX7nSRsd?iT*gXtVLG_{TNfY6{uQc9a>5u@ax;%^4cVIWg?kLfB+W;g6{zdfbakZ c3jqKDBLe{e1zi9T000bu)(Qb7s8iDb0D1G_g8%>k literal 0 HcmV?d00001 diff --git a/.conf/desktop/lxqt/lxqt-stretch.7z b/.conf/desktop/lxqt/lxqt-stretch.7z deleted file mode 100644 index 119d1045a9d44aeb0c34bc516d333059125b4780..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4208 zcmai&S3Dblx5pEEkJ@`y?IKoGjMj`=tyQx|%qoHirNnN8qQtCOdsCx!>{S$16t(xJ zMpfPZ?|rzR`_g+J&Uya+&ib4q7tmUDj~ze|^Z>#sMg#b7EYdTMCR!(sJo47!0v?8cyga-r}r%yy8b9Us`r^F$xY} zwq23GG!%iUQLfS&Vizx!9uKphYz!ifK*&=?ZE$5$K#A)_D_6Vg5K-c2^&`bG{SvV+ zIZtnN0Ha_%(%s!V+<4_m&G>U8iY`SCOI`gN&F(J2by!6eT^*%TCbsBAHRX>#Mf@-Z zw;#(yIe+dY@7_6V7YwiRyQ2t0fi%SRxh&rv0D70#}D})8^ik$^AxT|D-|IquvBNC+;i- zR&+JyO|19WDO36$I@pE~HNwwwv*akJ^`PX#<2w9E{j?z1ScBLI5iRwT6|dL>?8H|FtH5D%mEOnpkhkWsNo@1+Adpwf?G40DEA zf=n`=C9#a&AL(9jhtZwbK7$cydM+XKw=3=!3Y2hdWaya$)>>4M)w?TD5LZ{kCvcIq zFvfuODOX3cCQJUrYs>#`wRx}CI9rtR-2bIJ9Dc-?owff5DrdtQH+m;%;h0FCzGbG` zsY19Glju+N=1%N=&r>O8)1Tf27eZZhAkSDP!@~XTlR_QkgL$ zu+ExPq%Fh)4FCWE92T0emoT{P3o9~jmjD<<<>_B9C@%r#mY0?hA_FV|5rFo8r*Q45 zl&YN+r)|S-koxn|%8agPHD5(Zv^-A=d*=}3#`Euydm?22X)R5tf#gpX8a?l}? zDtqv57~?Kmzy~TJ!f-c8t6_~RaI*a`r;UxTHw^CR@&aaK1Mz|T!v0bMz5^QmOUwmTgho)vtbYH!#eN7y(@7mB< z^tC=QmG8*X-#C?kt;nr`!AEIB+Pl1Tg21n{%SzXhfnrz4Qf)~Q}m%ff!xOFn&Io`H*eJ|ye%R$ z^Mr!H0I5}ulWIK0J1$spQ$rdC3mZm_KC z3Nx=He-!N7>>f2(k_n3I46{jmtCtk&vIp6?t4UiP$+m72I&foP8iVhEJQaqgQqIe& zm&1_9#jE^`B#j`0BkG&OfOj7L0#EzDu2GErmeAUM!KpProLo}pkUsOfvj_UqJ*8h; z-I7{qj5cB-<1;sU*5MhPSEX11-GB1B-iWiv8@WS@_}=va%R_GkOrcf( zWkOInA-{^9>|;RBd2T%}mQksJh|tHo$!ar?`F>KpD6V3M=LyxNtGvoWb9J5ilMU1K zG{a)oYw_#w2Qo&ak&j5c)RJ;0+n3XO(x1@aB_1Q%U0FAkevh0EQK)?+>4ra-CVm+! za31{bwqr8Sj~jhFdd;BwRsZ8PTj`KW+WY|Kw0DX8)wEg6nYkV=(jz1$&hEXumi)KcyqVKbk^PCwqHrXtaIqHq(-58>s-+2RQ2A{jc}UIzjwgC*j1)zhknHJS7KA13FBl6>0@NXum3m>t-54)R7CuSjIwuuzb zaBB^tmQ!_mfwzQbl4~cPNi5$A7a;Lm)r)qmq%3mW2%nHa5WV>)WP~w1b?m`&P%|wX zT(zMp>K?|b|LL*0@EY{(nh7|C2Imp@jvzAT0iWdB+W@!Pt5Pr(-%M-(r|4+~sbBQd z1|{`VhmzqQToJ~iEKnlzFvXxmo3ds*S(t+75Z|uS-rOtlvde`@aBos3#tvB9N+wpM ze7mg&+0|t{r0Dq?l+yR!9`+U5rGYA?Age!E`JQ6EtsoX|yaZUnYXM6BQ;)yv-ib%g zMkl5d;wS_k3{E)0E$~Zb&KNR7rLjr@ zhgE5 zPS^!(YeVHpW~Q@glRg6?1cgkm16tf;lODYDqG=2ts>^cm+fMED%at;TF+cX>m@oKa z0QwXmem=RQi5dsO0}aO0^mX_m+e-&YVa%vkD=E&`LptOYzatgsO}DKWqlMI`X5yM9 zy;=SoG{x;4Q~BHlED94evr&r@(BY>yI|nIp6N#Aq(%DP_%uJ+@ zVrzx&9^t-hFpy`r#G#ISXVl=_6u5fIs0cQCWILNlQWR?iC$_N#Jnuj3*rtzzHW9u3 z(P(V;g|jhd?9^+g#66c+Ft)t-^RL%ymBKe}g6QWg!kS9*N{;Lup}oVw3jRX@TI0hjumqASGteD~IZ2AJ+^CpVO< zCTmfuUDErkOx1;boz9d`35MA4^h(}v{kBlWQWUA$f`Tqn)2|M+r&ef*#Bj=dQj>Pi|fh#{78iiazbLoM=*M*L8#ryi=?wNt7b`_ z^OLx9N#*FM(s0|4U9}_^bna)8P$PNx{){TLoTP0X?au8}?E%e0Fprf0J6x525fXGJ z2}k|Z(2V#LNFNMyo59R97@WEIrP%P>-B%O5<44;LN?blems@fgs;^pUAym79!x>GW zf6`74R`DivG1uydAsh=kZmaO9Kcz6ufD7|0<2JBd2CtyX#rUCAZtiu6!uWw;&Z1pd zHM7=WYy1=NGi{TLy%L(#DBQ+*)=O!7A0u)`%jwVU__}ME(-6^%|$df_J}k?qo3djQJNaU8IS9&5aITnttWM`(^JxCo2j>TxIx~y}^Xd zOncAl&CpNrA{2kR32V&5OKa$J+X0F89c>02c_DF4YeDFvz&d(!!Ka>W$+HA z9CkhnZ_F(=HpC*=B6xg);Zv3kllAE%*txz(#@5K4a3h+Fp&F{8litJP6=QZcnJg#N zK?YyZ`Yg@S0_MG*x@fHA#XPZ^?R|;!jVw2EY3#24ea{|b&iN-0qmag`u*kku?=4y! zpM`FUUk|06pLIR?-RKwZ!&*W*443O_qD(2OcuEbrw7pm?nA_j~tgW{z2tF>iUl*;3x7}2;z7QeI?PV;a zF$I+Tpaphto$zE)Jk9UHy^hK_f>b{i8{`dPO;?b%d~Fe6|Ix?qV@HgYf}do@VkY;P vz&Jws9v}w*U?Peu1(Kq|0L0`#0FVzK2qd%u{Cz4=gw2rwkBvqt0D%7jBxle& diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 25ef12c6df..90c896f26e 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -13,6 +13,7 @@ Bug fixes: - DietPi-Software | Restic: Resolved an issue where Restic was installed without executable flag. Many thanks to @lima1 for reporting this issue: https://github.com/MichaIng/DietPi/pull/6350#issuecomment-1537656560 - DietPi-Software | Domoticz: Resolved an issue where the installation failed when trying to unpack the tarball. Many thanks to @mcnahum for reporting this issue: https://github.com/MichaIng/DietPi/issues/6369 - DietPi-Software | motionEye: Resolved an issue where the installation failed on ARMv6, ARMv7 and RISC-V Bookworm systems due to missing build dependencies. Many thanks to @magicfoxt-magicfox for reporting this issue: https://github.com/MichaIng/DietPi/issues/6333 +- DietPi-Software | LXQt: Resolved an issue where the install on Bookworm systems failed since configs were missing. As always, many smaller code performance and stability improvements, visual and spelling fixes have been done, too much to list all of them here. Check out all code changes of this release on GitHub: https://github.com/MichaIng/DietPi/pull/XXXX From 070f07c7570447310d1aff3ac94eb587604d5ebc Mon Sep 17 00:00:00 2001 From: MichaIng Date: Mon, 29 May 2023 19:56:49 +0200 Subject: [PATCH 033/106] v8.18 - DietPi-Software | frp: Update fallback URL --- dietpi/dietpi-software | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index 18d973d329..17d6b468f3 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -6573,7 +6573,7 @@ _EOF_ esac # Download - local fallback_url="https://github.com/fatedier/frp/releases/download/v0.48.0/frp_0.48.0_linux_$arch.tar.gz" + local fallback_url="https://github.com/fatedier/frp/releases/download/v0.49.0/frp_0.49.0_linux_$arch.tar.gz" Download_Install "$(curl -sSfL 'https://api.github.com/repos/fatedier/frp/releases/latest' | mawk -F\" "/\"browser_download_url\": .*\/frp_[0-9.]*_linux_$arch\.tar\.gz\"/{print \$4}")" G_EXEC cd frp_* From 46fd29b616a730ceadc26de34081f668517d791d Mon Sep 17 00:00:00 2001 From: MichaIng Date: Mon, 29 May 2023 20:10:23 +0200 Subject: [PATCH 034/106] v8.18 - CI | DietPi-Software: Numerically sort software ID case loop --- .github/workflows/dietpi-software.bash | 180 ++++++++++++------------- 1 file changed, 90 insertions(+), 90 deletions(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 7d50397e20..0e6a891a0f 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -70,130 +70,130 @@ Process_Software() do case $i in 'webserver') [[ $SOFTWARE =~ (^| )8[345]( |$) ]] || aSERVICES[83]='apache2' aPORTS[80]='tcp';; - 152) aSERVICES[i]='avahi-daemon' aPORTS[5353]='udp';; - 104) aSERVICES[i]='dropbear' aPORTS[22]='tcp';; - 105) aSERVICES[i]='ssh' aPORTS[22]='tcp';; - 194) aSERVICES[i]='postgresql';; + 2) aSERVICES[i]='fahclient' aPORTS[7396]='tcp';; + 16) aSERVICES[i]='microblog-pub' aPORTS[8007]='tcp';; + 28|120) aSERVICES[i]='vncserver' aPORTS[5901]='tcp';; 29) aSERVICES[i]='xrdp' aPORTS[3389]='tcp';; 30) aSERVICES[i]='nxserver' aPORTS[4000]='tcp';; - 200) aSERVICES[i]='dietpi-dashboard' aPORTS[5252]='tcp';; - 99) aSERVICES[i]='node_exporter' aPORTS[9100]='tcp';; - 44) aSERVICES[i]='transmission-daemon' aPORTS[9091]='tcp';; - 94) aSERVICES[i]='proftpd' aPORTS[21]='tcp';; - 96) aSERVICES[i]='smbd' aPORTS[139]='tcp' aPORTS[445]='tcp';; - 95) aSERVICES[i]='vsftpd' aPORTS[21]='tcp';; - 109) aSERVICES[i]='nfs-kernel-server' aPORTS[2049]='tcp';; - 83) aSERVICES[i]='apache2' aPORTS[80]='tcp';; - 85) aSERVICES[i]='nginx' aPORTS[80]='tcp';; - 84) aSERVICES[i]='lighttpd' aPORTS[80]='tcp';; - 88) aSERVICES[i]='mariadb' aPORTS[3306]='tcp';; - 91) aSERVICES[i]='redis-server' aPORTS[6379]='tcp';; - 89) case $DISTRO in 'buster') aSERVICES[i]='php7.3-fpm';; 'bullseye') aSERVICES[i]='php7.4-fpm';; *) aSERVICES[i]='php8.2-fpm';; esac;; - 125) aSERVICES[i]='synapse' aPORTS[8008]='tcp';; - 128) aSERVICES[i]='mpd' aPORTS[6600]='tcp';; - 133) aSERVICES[i]='yacy' aPORTS[8090]='tcp';; - 186) aSERVICES[i]='ipfs' aPORTS[5003]='tcp' aPORTS[8087]='tcp';; - 16) aSERVICES[i]='microblog-pub' aPORTS[8007]='tcp';; - 2) aSERVICES[i]='fahclient' aPORTS[7396]='tcp';; 32) aSERVICES[i]='ympd' aPORTS[1337]='tcp';; - 148) aSERVICES[i]='mympd' aPORTS[1333]='tcp';; - 121) aSERVICES[i]='roonbridge' aPORTS[9003]='udp';; - 118) aSERVICES[i]='mopidy' aPORTS[6680]='tcp';; + 33) aSERVICES[i]='airsonic' aPORTS[8080]='tcp';; + 35) aSERVICES[i]='logitechmediaserver' aPORTS[9000]='tcp';; + 36) aSERVICES[i]='Squeezelite';; # Random high UDP port + 37) aSERVICES[i]='shairport-sync' aPORTS[5000]='tcp';; # AirPlay 2 would be TCP port 7000 39) aSERVICES[i]='minidlna' aPORTS[8200]='tcp';; - 111) aSERVICES[i]='urbackupsrv' aPORTS[55414]='tcp';; - 59) aSERVICES[i]='raspimjpeg';; + 41) aSERVICES[i]='emby-server' aPORTS[8096]='tcp';; + 42) aSERVICES[i]='plexmediaserver' aPORTS[32400]='tcp';; + 43) aSERVICES[i]='mumble-server' aPORTS[64738]='tcp';; + 44) aSERVICES[i]='transmission-daemon' aPORTS[9091]='tcp';; 45) aSERVICES[i]='deluged deluge-web' aPORTS[8112]='tcp' aPORTS[58846]='tcp' aPORTS[6882]='tcp';; - 115) aSERVICES[i]='webmin' aPORTS[10000]='tcp';; - 135) aSERVICES[i]='icecast2 darkice' aPORTS[8000]='tcp';; - #184) aSERVICES[i]='tor' aPORTS[443]='tcp' aPORTS[9051]='tcp';; # Cannot be installed non-interactively, ports can be chosen and depend on chosen relay type - 182) aSERVICES[i]='unbound' aPORTS[53]='udp'; [[ ${aSERVICES[126]} ]] && aPORTS[5353]='udp';; # Uses port 5353 if Pi-hole or AdGuard Home is installed, but those do listen on port 53 instead - #93) aSERVICES[i]='pihole-FTL' aPORTS[53]='udp';; # Cannot be installed non-interactively - 126) aSERVICES[i]='adguardhome' aPORTS[53]='udp' aPORTS[8083]='tcp'; [[ ${aSERVICES[182]} ]] && aPORTS[5353]='udp';; # Unbound uses port 5353 if AdGuard Home is installed - 33) aSERVICES[i]='airsonic' aPORTS[8080]='tcp';; - 204) aSERVICES[i]='navidrome' aPORTS[4533]='tcp';; - 100) aSERVICES[i]='pijuice';; # aPORTS[????]='tcp';; - #171) aSERVICES[i]='frps frpc' aPORTS[7000]='tcp' aPORTS[7500]='tcp' aPORTS[7400]='tcp';; # Cannot be installed non-interactively, ports on chosen type - 122) aSERVICES[i]='node-red' aPORTS[1880]='tcp';; - 123) aSERVICES[i]='mosquitto' aPORTS[1883]='tcp';; - 131) aSERVICES[i]='blynkserver' aPORTS[9443]='tcp';; - 124) aSERVICES[i]='networkaudiod';; # aPORTS[????]='tcp';; + 46) aSERVICES[i]='qbittorrent' aPORTS[1340]='tcp' aPORTS[6881]='tcp';; + 49) aSERVICES[i]='gogs' aPORTS[3000]='tcp';; + 50) aSERVICES[i]='syncthing' aPORTS[8384]='tcp';; + 52) aSERVICES[i]='cuberite' aPORTS[1339]='tcp';; + 53) aSERVICES[i]='mineos' aPORTS[8443]='tcp';; + 58) aSERVICES[i]='tailscale';; # aPORTS[????]='udp';; + 59) aSERVICES[i]='raspimjpeg';; + #60) aPORTS[53]='udp' aPORTS[68]='udp';; Cannot be installed in CI since a WiFi interface is required + #61) aSERVICES[i]='tor' aPORTS[9040]='udp';; Cannot be installed in CI since a WiFi interface is required + 65) aSERVICES[i]='netdata' aPORTS[19999]='tcp';; + 66) aSERVICES[i]='rpimonitor' aPORTS[8888]='tcp';; 71) aSERVICES[i]='webiopi' aPORTS[8002]='tcp';; - 98) aSERVICES[i]='haproxy' aPORTS[80]='tcp';; - 35) aSERVICES[i]='logitechmediaserver' aPORTS[9000]='tcp';; - 28|120) aSERVICES[i]='vncserver' aPORTS[5901]='tcp';; 73) aSERVICES[i]='fail2ban';; 74) aSERVICES[i]='influxdb' aPORTS[8086]='tcp' aPORTS[8088]='tcp';; 77) aSERVICES[i]='grafana-server' aPORTS[3001]='tcp';; 80) aSERVICES[i]='ubooquity' aPORTS[2038]='tcp' aPORTS[2039]='tcp';; - 179) aSERVICES[i]='komga' aPORTS[2037]='tcp';; - 58) aSERVICES[i]='tailscale';; # aPORTS[????]='udp';; + 83) aSERVICES[i]='apache2' aPORTS[80]='tcp';; + 84) aSERVICES[i]='lighttpd' aPORTS[80]='tcp';; + 85) aSERVICES[i]='nginx' aPORTS[80]='tcp';; + 86) aSERVICES[i]='roon-extension-manager';; + 88) aSERVICES[i]='mariadb' aPORTS[3306]='tcp';; + 89) case $DISTRO in 'buster') aSERVICES[i]='php7.3-fpm';; 'bullseye') aSERVICES[i]='php7.4-fpm';; *) aSERVICES[i]='php8.2-fpm';; esac;; + 91) aSERVICES[i]='redis-server' aPORTS[6379]='tcp';; + #93) aSERVICES[i]='pihole-FTL' aPORTS[53]='udp';; # Cannot be installed non-interactively + 94) aSERVICES[i]='proftpd' aPORTS[21]='tcp';; + 95) aSERVICES[i]='vsftpd' aPORTS[21]='tcp';; + 96) aSERVICES[i]='smbd' aPORTS[139]='tcp' aPORTS[445]='tcp';; 97) aSERVICES[i]='openvpn' aPORTS[1194]='udp';; - #117) :;; # ToDo: Implement automated install via /boot/unattended_pivpn.conf - 201) aSERVICES[i]='zerotier-one' aPORTS[9993]='tcp';; - #60) aPORTS[53]='udp' aPORTS[68]='udp';; Cannot be installed in CI since a WiFi interface is required - #61) aSERVICES[i]='tor' aPORTS[9040]='udp';; Cannot be installed in CI since a WiFi interface is required - 37) aSERVICES[i]='shairport-sync' aPORTS[5000]='tcp';; # AirPlay 2 would be TCP port 7000 - 36) aSERVICES[i]='Squeezelite';; # Random high UDP port - 66) aSERVICES[i]='rpimonitor' aPORTS[8888]='tcp';; - 65) aSERVICES[i]='netdata' aPORTS[19999]='tcp';; - 43) aSERVICES[i]='mumble-server' aPORTS[64738]='tcp';; - 41) aSERVICES[i]='emby-server' aPORTS[8096]='tcp';; - 42) aSERVICES[i]='plexmediaserver' aPORTS[32400]='tcp';; - 52) aSERVICES[i]='cuberite' aPORTS[1339]='tcp';; - 53) aSERVICES[i]='mineos' aPORTS[8443]='tcp';; - 49) aSERVICES[i]='gogs' aPORTS[3000]='tcp';; - 165) aSERVICES[i]='gitea' aPORTS[3000]='tcp';; - 46) aSERVICES[i]='qbittorrent' aPORTS[1340]='tcp' aPORTS[6881]='tcp';; + 98) aSERVICES[i]='haproxy' aPORTS[80]='tcp';; + 99) aSERVICES[i]='node_exporter' aPORTS[9100]='tcp';; + 100) aSERVICES[i]='pijuice';; # aPORTS[????]='tcp';; + 104) aSERVICES[i]='dropbear' aPORTS[22]='tcp';; + 105) aSERVICES[i]='ssh' aPORTS[22]='tcp';; + 106) aSERVICES[i]='lidarr' aPORTS[8686]='tcp';; 107) aSERVICES[i]='rtorrent' aPORTS[49164]='tcp' aPORTS[6881]='udp';; - 132) aSERVICES[i]='aria2' aPORTS[6800]='tcp';; # aPORTS[6881-6999]='tcp';; # Listens on random port + 109) aSERVICES[i]='nfs-kernel-server' aPORTS[2049]='tcp';; + 111) aSERVICES[i]='urbackupsrv' aPORTS[55414]='tcp';; + 115) aSERVICES[i]='webmin' aPORTS[10000]='tcp';; 116) aSERVICES[i]='medusa' aPORTS[8081]='tcp';; - 50) aSERVICES[i]='syncthing' aPORTS[8384]='tcp';; + #117) :;; # ToDo: Implement automated install via /boot/unattended_pivpn.conf + 118) aSERVICES[i]='mopidy' aPORTS[6680]='tcp';; + 121) aSERVICES[i]='roonbridge' aPORTS[9003]='udp';; + 122) aSERVICES[i]='node-red' aPORTS[1880]='tcp';; + 123) aSERVICES[i]='mosquitto' aPORTS[1883]='tcp';; + 124) aSERVICES[i]='networkaudiod';; # aPORTS[????]='tcp';; + 125) aSERVICES[i]='synapse' aPORTS[8008]='tcp';; + 126) aSERVICES[i]='adguardhome' aPORTS[53]='udp' aPORTS[8083]='tcp'; [[ ${aSERVICES[182]} ]] && aPORTS[5353]='udp';; # Unbound uses port 5353 if AdGuard Home is installed + 128) aSERVICES[i]='mpd' aPORTS[6600]='tcp';; + 131) aSERVICES[i]='blynkserver' aPORTS[9443]='tcp';; + 132) aSERVICES[i]='aria2' aPORTS[6800]='tcp';; # aPORTS[6881-6999]='tcp';; # Listens on random port + 133) aSERVICES[i]='yacy' aPORTS[8090]='tcp';; + 135) aSERVICES[i]='icecast2 darkice' aPORTS[8000]='tcp';; 136) aSERVICES[i]='motioneye' aPORTS[8765]='tcp';; 137) aSERVICES[i]='mjpg-streamer' aPORTS[8082]='tcp';; 138) aSERVICES[i]='virtualhere' aPORTS[7575]='tcp';; 139) aSERVICES[i]='sabnzbd' aPORTS[8080]='tcp';; # ToDo: Solve conflict with Airsonic - 177) aSERVICES[i]='firefox-sync' aPORTS[5002]='tcp';; - 183) aSERVICES[i]='vaultwarden' aPORTS[8001]='tcp';; - 142) aSERVICES[i]='snapd';; + 140) aSERVICES[i]='domoticz' aPORTS[8124]='tcp' aPORTS[8424]='tcp';; 141) aSERVICES[i]='spotify-connect-web' aPORTS[4000]='tcp';; + 142) aSERVICES[i]='snapd';; 143) aSERVICES[i]='koel' aPORTS[8003]='tcp';; 144) aSERVICES[i]='sonarr' aPORTS[8989]='tcp';; 145) aSERVICES[i]='radarr' aPORTS[7878]='tcp';; - 106) aSERVICES[i]='lidarr' aPORTS[8686]='tcp';; - 180) aSERVICES[i]='bazarr' aPORTS[6767]='tcp';; 146) aSERVICES[i]='tautulli' aPORTS[8181]='tcp';; 147) aSERVICES[i]='jackett' aPORTS[9117]='tcp';; + 148) aSERVICES[i]='mympd' aPORTS[1333]='tcp';; 149) aSERVICES[i]='nzbget' aPORTS[6789]='tcp';; 151) aSERVICES[i]='prowlarr' aPORTS[9696]='tcp';; - 203) aSERVICES[i]='readarr' aPORTS[8787]='tcp';; - 155) aSERVICES[i]='htpc-manager' aPORTS[8085]='tcp';; + 152) aSERVICES[i]='avahi-daemon' aPORTS[5353]='udp';; 153) aSERVICES[i]='octoprint' aPORTS[5001]='tcp';; - 187) aSERVICES[i]='cups' aPORTS[631]='tcp';; 154) aSERVICES[i]='roonserver';; # Listens on a variety of different port ranges + 155) aSERVICES[i]='htpc-manager' aPORTS[8085]='tcp';; + 157) aSERVICES[i]='home-assistant' aPORTS[8123]='tcp';; 158) aSERVICES[i]='minio' aPORTS[9000]='tcp';; # ToDo: Solve port conflict with LMS - 162) aSERVICES[i]='docker';; 161) aSERVICES[i]='bdd' aPORTS[80]='tcp' aPORTS[443]='tcp';; - 164) aSERVICES[i]='nukkit' aPORTS[19132]='udp';; + 162) aSERVICES[i]='docker';; 163) aSERVICES[i]='gmediarender';; # DLNA => UPnP high range of ports + 164) aSERVICES[i]='nukkit' aPORTS[19132]='udp';; + 165) aSERVICES[i]='gitea' aPORTS[3000]='tcp';; 166) aSERVICES[i]='pi-spc';; 167) aSERVICES[i]='raspotify';; 169) aSERVICES[i]='voice-recognizer';; + #171) aSERVICES[i]='frps frpc' aPORTS[7000]='tcp' aPORTS[7500]='tcp' aPORTS[7400]='tcp';; # Cannot be installed non-interactively, ports on chosen type + #172) aSERVICES[i]='wg-quick@wg0' aPORTS[51820]='udp';; # cannot be installed non-interactively 176) aSERVICES[i]='mycroft';; - 86) aSERVICES[i]='roon-extension-manager';; + 177) aSERVICES[i]='firefox-sync' aPORTS[5002]='tcp';; 178) aSERVICES[i]='jellyfin' aPORTS[8097]='tcp';; - 206) aSERVICES[i]='openhab' aPORTS[8444]='tcp';; - 157) aSERVICES[i]='home-assistant' aPORTS[8123]='tcp';; + 179) aSERVICES[i]='komga' aPORTS[2037]='tcp';; + 180) aSERVICES[i]='bazarr' aPORTS[6767]='tcp';; 181) aSERVICES[i]='papermc' aPORTS[25565]='tcp';; - 140) aSERVICES[i]='domoticz' aPORTS[8124]='tcp' aPORTS[8424]='tcp';; + 182) aSERVICES[i]='unbound' aPORTS[53]='udp'; [[ ${aSERVICES[126]} ]] && aPORTS[5353]='udp';; # Uses port 5353 if Pi-hole or AdGuard Home is installed, but those do listen on port 53 instead + 183) aSERVICES[i]='vaultwarden' aPORTS[8001]='tcp';; + #184) aSERVICES[i]='tor' aPORTS[443]='tcp' aPORTS[9051]='tcp';; # Cannot be installed non-interactively, ports can be chosen and depend on chosen relay type + 185) aSERVICES[i]='docker' aPORTS[9002]='tcp';; + 186) aSERVICES[i]='ipfs' aPORTS[5003]='tcp' aPORTS[8087]='tcp';; + 187) aSERVICES[i]='cups' aPORTS[631]='tcp';; 191) aSERVICES[i]='snapserver' aPORTS[1780]='tcp';; #192) aSERVICES[i]='snapclient';; # cannot be installed non-interactively - 202) aCOMMANDS[i]='rclone -h';; - 209) aCOMMANDS[i]='restic version';; + 194) aSERVICES[i]='postgresql';; + 196) aCOMMANDS[i]='java -version';; 198) aSERVICES[i]='filebrowser' aPORTS[8084]='tcp';; 199) aSERVICES[i]='spotifyd';; # aPORTS[4079]='tcp';; ??? - 185) aSERVICES[i]='docker' aPORTS[9002]='tcp';; - #172) aSERVICES[i]='wg-quick@wg0' aPORTS[51820]='udp';; # cannot be installed non-interactively - 196) aCOMMANDS[i]='java -version';; + 200) aSERVICES[i]='dietpi-dashboard' aPORTS[5252]='tcp';; + 201) aSERVICES[i]='zerotier-one' aPORTS[9993]='tcp';; + 202) aCOMMANDS[i]='rclone -h';; + 203) aSERVICES[i]='readarr' aPORTS[8787]='tcp';; + 204) aSERVICES[i]='navidrome' aPORTS[4533]='tcp';; + 206) aSERVICES[i]='openhab' aPORTS[8444]='tcp';; + 209) aCOMMANDS[i]='restic version';; *) :;; esac done @@ -201,16 +201,16 @@ Process_Software() for i in $SOFTWARE do case $i in - 47|114|168) Process_Software 88 89 91 webserver;; - 38|40|48|54|55|57|59|90|160) Process_Software 88 89 webserver;; + 205) Process_Software webserver;; 27|56|63|64|107|132) Process_Software 89 webserver;; # 93 (Pi-hole) cannot be installed non-interactively - 125) Process_Software 194;; + 38|40|48|54|55|57|59|90|160) Process_Software 88 89 webserver;; + 47|114|168) Process_Software 88 89 91 webserver;; + 8) Process_Software 196;; 32|148|119) Process_Software 128;; 129) Process_Software 88 89 128 webserver;; - #61) Process_Software 60;; # Cannot be installed in CI 49|165) Process_Software 88;; - 205) Process_Software webserver;; - 8) Process_Software 196;; + #61) Process_Software 60;; # Cannot be installed in CI + 125) Process_Software 194;; *) :;; esac Process_Software "$i" From 70f7fae2f2ba3f2cc485ef0a1ea032682d28cd18 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Mon, 29 May 2023 20:36:36 +0200 Subject: [PATCH 035/106] v8.18 - CI | DietPi-Software: Show last 25 journal lines only on failure --- .github/workflows/dietpi-software.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 0e6a891a0f..644ac2e8eb 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -334,7 +334,7 @@ fi G_EXEC eval 'echo '\''[ $exit_code = 0 ] && > /success; poweroff'\'' >> rootfs/boot/Automation_Custom_Script.sh' # Shutdown as well on failure -G_EXEC sed -i 's|Prompt_on_Failure$|{ journalctl -e; ss -tlpn; df -h; free -h; poweroff; }|' rootfs/boot/dietpi/dietpi-login +G_EXEC sed -i 's|Prompt_on_Failure$|{ journalctl -n 25; ss -tlpn; df -h; free -h; poweroff; }|' rootfs/boot/dietpi/dietpi-login ########################################## # Boot container From afd1ca188f26a2d808d4f987d2294ea6b2d4a5f5 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Mon, 29 May 2023 20:45:24 +0200 Subject: [PATCH 036/106] v8.18 - DietPi-Software | TigerVNC: Resolved an issue on Bookworm systems where the VNC password was not set as expected since the tigervncpasswd command became a dedicated DEB package "tigervnc-tools". --- CHANGELOG.txt | 3 ++- dietpi/dietpi-software | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 90c896f26e..c17af42085 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -13,7 +13,8 @@ Bug fixes: - DietPi-Software | Restic: Resolved an issue where Restic was installed without executable flag. Many thanks to @lima1 for reporting this issue: https://github.com/MichaIng/DietPi/pull/6350#issuecomment-1537656560 - DietPi-Software | Domoticz: Resolved an issue where the installation failed when trying to unpack the tarball. Many thanks to @mcnahum for reporting this issue: https://github.com/MichaIng/DietPi/issues/6369 - DietPi-Software | motionEye: Resolved an issue where the installation failed on ARMv6, ARMv7 and RISC-V Bookworm systems due to missing build dependencies. Many thanks to @magicfoxt-magicfox for reporting this issue: https://github.com/MichaIng/DietPi/issues/6333 -- DietPi-Software | LXQt: Resolved an issue where the install on Bookworm systems failed since configs were missing. +- DietPi-Software | LXQt: Resolved an issue on Bookworm systems where the install failed since configs were missing. +- DietPi-Software | TigerVNC: Resolved an issue on Bookworm systems where the VNC password was not set as expected since the tigervncpasswd command became a dedicated DEB package "tigervnc-tools". As always, many smaller code performance and stability improvements, visual and spelling fixes have been done, too much to list all of them here. Check out all code changes of this release on GitHub: https://github.com/MichaIng/DietPi/pull/XXXX diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index 17d6b468f3..fa43179069 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -7171,8 +7171,10 @@ _EOF_ # netbase is required until Bullseye to solve: "Use of uninitialized value $proto in socket at /usr/bin/tigervncserver" # - It is a recommendation and no dependency of perl, but expected by some packages depending on perl only: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=939055 # tigervnc-common is required as it is a recommendation only until Bullseye. + # tigervnc-tools ships tigervncpasswd as dedicated package since Bookworm. local apackages=() (( $G_DISTRO > 5 )) || apackages=('tigervnc-common' 'netbase') + (( $G_DISTRO > 6 )) && apackages=('tigervnc-tools') G_AGI tigervnc-standalone-server tigervnc-scraping-server "${apackages[@]}" fi From 97e380af765b7e58938a84e78a61311814b00da5 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Mon, 29 May 2023 21:26:50 +0200 Subject: [PATCH 037/106] v8.18 - CI | DietPi-Software: Start non-controlled services as well before testing service and port status --- .github/workflows/dietpi-software.bash | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 644ac2e8eb..b85199c8d0 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -302,6 +302,8 @@ fi (( $ARCH < 3 && $G_HW_ARCH > 9 )) && G_EXEC eval 'echo -e '\''tmpfs /mnt/dietpi_userdata tmpfs size=3G,noatime,lazytime\ntmpfs /root tmpfs size=3G,noatime,lazytime'\'' >> rootfs/etc/fstab' # Check for service status, ports and commands +# shellcheck disable=SC2016 +G_EXEC sed -i '/# Start DietPi-Software/a\sed -i '\''/# Custom 1st run script/a\for i in "${aSTART_SERVICES[@]}"; do G_EXEC_NOHALT=1 G_EXEC systemctl start "$i"; done'\'' /boot/dietpi/dietpi-software' rootfs/boot/dietpi/dietpi-login G_EXEC eval 'echo -e '\''#!/bin/dash\nexit_code=0; /boot/dietpi/dietpi-services start || exit_code=1'\'' > rootfs/boot/Automation_Custom_Script.sh' if (( ${#aSERVICES[@]} || ${#aPORTS[@]} || ${#aCOMMANDS[@]} )) then @@ -340,5 +342,5 @@ G_EXEC sed -i 's|Prompt_on_Failure$|{ journalctl -n 25; ss -tlpn; df -h; free -h # Boot container ########################################## systemd-nspawn -bD rootfs -[[ -f 'rootfs/success' ]] || { journalctl -e; df -h; free -h; exit 1; } +[[ -f 'rootfs/success' ]] || { journalctl -n 25; df -h; free -h; exit 1; } } From 45c6b01b3f13996be39fb9cb74ec726b5af388a1 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Mon, 29 May 2023 21:48:57 +0200 Subject: [PATCH 038/106] v8.18 - CI | DietPi-Software: Add tests for SSH client, SMB client, FFmpeg, Node and Git commands --- .github/workflows/dietpi-software.bash | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index b85199c8d0..7eaed8ced5 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -70,8 +70,13 @@ Process_Software() do case $i in 'webserver') [[ $SOFTWARE =~ (^| )8[345]( |$) ]] || aSERVICES[83]='apache2' aPORTS[80]='tcp';; + 0) aSERVICES[i]='ssh -V';; + 1) aSERVICES[i]='smbclient -V';; 2) aSERVICES[i]='fahclient' aPORTS[7396]='tcp';; + 7) aSERVICES[i]='ffmpeg -version';; + 9) aSERVICES[i]='node -v';; 16) aSERVICES[i]='microblog-pub' aPORTS[8007]='tcp';; + 17) aSERVICES[i]='git -v';; 28|120) aSERVICES[i]='vncserver' aPORTS[5901]='tcp';; 29) aSERVICES[i]='xrdp' aPORTS[3389]='tcp';; 30) aSERVICES[i]='nxserver' aPORTS[4000]='tcp';; From a6973d08b3bdc5e95e38d097a791d9b95e352e5f Mon Sep 17 00:00:00 2001 From: MichaIng Date: Mon, 29 May 2023 21:52:28 +0200 Subject: [PATCH 039/106] v8.18 - CI | DietPi-Software: Syntax --- .github/workflows/dietpi-software.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 7eaed8ced5..953a2a75c7 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -308,7 +308,7 @@ fi # Check for service status, ports and commands # shellcheck disable=SC2016 -G_EXEC sed -i '/# Start DietPi-Software/a\sed -i '\''/# Custom 1st run script/a\for i in "${aSTART_SERVICES[@]}"; do G_EXEC_NOHALT=1 G_EXEC systemctl start "$i"; done'\'' /boot/dietpi/dietpi-software' rootfs/boot/dietpi/dietpi-login +G_EXEC sed -i '/# Start DietPi-Software/a\sed -i '\''/# Custom 1st run script/a\\for i in "${aSTART_SERVICES[@]}"; do G_EXEC_NOHALT=1 G_EXEC systemctl start "$i"; done'\'' /boot/dietpi/dietpi-software' rootfs/boot/dietpi/dietpi-login G_EXEC eval 'echo -e '\''#!/bin/dash\nexit_code=0; /boot/dietpi/dietpi-services start || exit_code=1'\'' > rootfs/boot/Automation_Custom_Script.sh' if (( ${#aSERVICES[@]} || ${#aPORTS[@]} || ${#aCOMMANDS[@]} )) then From baf4e55e1aa98c8f288514839b362fc5f75eaef2 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Mon, 29 May 2023 22:22:45 +0200 Subject: [PATCH 040/106] v8.18 - CI | DietPi-Software: Typos --- .github/workflows/dietpi-software.bash | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 953a2a75c7..da9b45c689 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -70,13 +70,13 @@ Process_Software() do case $i in 'webserver') [[ $SOFTWARE =~ (^| )8[345]( |$) ]] || aSERVICES[83]='apache2' aPORTS[80]='tcp';; - 0) aSERVICES[i]='ssh -V';; - 1) aSERVICES[i]='smbclient -V';; + 0) aCOMMANDS[i]='ssh -V';; + 1) aCOMMANDS[i]='smbclient -V';; 2) aSERVICES[i]='fahclient' aPORTS[7396]='tcp';; - 7) aSERVICES[i]='ffmpeg -version';; - 9) aSERVICES[i]='node -v';; + 7) aCOMMANDS[i]='ffmpeg -version';; + 9) aCOMMANDS[i]='node -v';; 16) aSERVICES[i]='microblog-pub' aPORTS[8007]='tcp';; - 17) aSERVICES[i]='git -v';; + 17) aCOMMANDS[i]='git -v';; 28|120) aSERVICES[i]='vncserver' aPORTS[5901]='tcp';; 29) aSERVICES[i]='xrdp' aPORTS[3389]='tcp';; 30) aSERVICES[i]='nxserver' aPORTS[4000]='tcp';; From 79fc97a3739d904f4bcb3492a9d7dd46d008fc23 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Mon, 29 May 2023 22:40:32 +0200 Subject: [PATCH 041/106] v8.18 - DietPi-Software | Disable browser dependency/preference on RISC-V as there are neither Chromium nor Firefox packages available for this arch yet --- dietpi/dietpi-software | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index fa43179069..184a0c6c21 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -1815,7 +1815,7 @@ Available commands: aSOFTWARE_DEPS[$software_id]='5 6' # - ARMv6 since Bullseye: https://github.com/RPi-Distro/chromium-browser/issues/21 (( $G_DISTRO < 6 )) || aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,1]=0 - # - RISC-V: Missing package + # - RISC-V: Missing package: https://packages.debian.org/sid/chromium aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0 #------------------ software_id=67 @@ -1826,7 +1826,7 @@ Available commands: aSOFTWARE_DEPS[$software_id]='5 6' # - ARMv6 since Bullseye: https://github.com/RPi-Distro/chromium-browser/issues/21#issuecomment-997044303 (( $G_DISTRO < 6 )) || aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,1]=0 - # - RISC-V: Missing package + # - RISC-V: Missing package: https://packages.debian.org/sid/firefox-esr aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0 #------------------ software_id=174 @@ -2095,8 +2095,8 @@ Available commands: # - Do no reinstalls, as those are loose dependencies (( ${aSOFTWARE_INSTALL_STATE[67]} < 1 && ${aSOFTWARE_INSTALL_STATE[113]} < 1 )) || return 1 - # Disable browser preference on ARMv6 Bullseye+ systems: https://github.com/RPi-Distro/chromium-browser/issues/21 - (( $G_HW_ARCH == 1 && $G_DISTRO > 5 )) && return 1 + # Disable browser preference on ARMv6 Bullseye+ and RISC-V systems: https://github.com/RPi-Distro/chromium-browser/issues/21 + (( $G_HW_ARCH == 1 && $G_DISTRO > 5 )) || (( $G_HW_ARCH == 11 )) && return 1 # Auto-select browser if manually installed if dpkg-query -s 'firefox-esr' &> /dev/null From 8d797640abc0ab82d3f08388180b13432948b4cc Mon Sep 17 00:00:00 2001 From: MichaIng Date: Mon, 29 May 2023 22:51:48 +0200 Subject: [PATCH 042/106] v8.18 - CI | DietPi-Software: Workaround for Node.js on ARMv6 --- .github/workflows/dietpi-software.bash | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index da9b45c689..59dccf186d 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -306,6 +306,9 @@ fi # Workaround for failing 32-bit ARM Rust builds on ext4 in QEMU emulated container on 64-bit host: https://github.com/rust-lang/cargo/issues/9545 (( $ARCH < 3 && $G_HW_ARCH > 9 )) && G_EXEC eval 'echo -e '\''tmpfs /mnt/dietpi_userdata tmpfs size=3G,noatime,lazytime\ntmpfs /root tmpfs size=3G,noatime,lazytime'\'' >> rootfs/etc/fstab' +# Workaround for Node.js on ARMv6 +(( $ARCH == 1 )) && G_EXEC sed -i '/# Start DietPi-Software/a\sed -i '\''/G_EXEC chmod +x node-install.sh/a\\sed -i "/^ARCH=/c\\ARCH=armv6l" node-install.sh'\'' /boot/dietpi/dietpi-software' rootfs/boot/dietpi/dietpi-login + # Check for service status, ports and commands # shellcheck disable=SC2016 G_EXEC sed -i '/# Start DietPi-Software/a\sed -i '\''/# Custom 1st run script/a\\for i in "${aSTART_SERVICES[@]}"; do G_EXEC_NOHALT=1 G_EXEC systemctl start "$i"; done'\'' /boot/dietpi/dietpi-software' rootfs/boot/dietpi/dietpi-login From 6bde1296aa54bb2ce2e1e89853fa6cdf0b43a4e0 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Mon, 29 May 2023 23:21:45 +0200 Subject: [PATCH 043/106] v8.18 - CI | DietPi-Software: Fix ARM index handling --- .github/workflows/dietpi-software.bash | 28 +++++++++++++------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 59dccf186d..788ce00272 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -49,11 +49,11 @@ do done [[ $DISTRO =~ ^'buster'|'bullseye'|'bookworm'$ ]] || { G_DIETPI-NOTIFY 1 "Invalid distro \"$DISTRO\" passed, aborting..."; exit 1; } case $ARCH in - 'armv6l') image="DietPi_Container-ARMv6-${DISTRO^}";; - 'armv7l') image="DietPi_Container-ARMv7-${DISTRO^}";; - 'aarch64') image="DietPi_Container-ARMv8-${DISTRO^}";; - 'x86_64') image="DietPi_Container-x86_64-${DISTRO^}";; - 'riscv64') image="DietPi_Container-RISC-V-Sid";; + 'armv6l') image="DietPi_Container-ARMv6-${DISTRO^}" arch=1;; + 'armv7l') image="DietPi_Container-ARMv7-${DISTRO^}" arch=2;; + 'aarch64') image="DietPi_Container-ARMv8-${DISTRO^}" arch=3;; + 'x86_64') image="DietPi_Container-x86_64-${DISTRO^}" arch=10;; + 'riscv64') image="DietPi_Container-RISC-V-Sid" arch=11;; *) G_DIETPI-NOTIFY 1 "Invalid architecture \"$ARCH\" passed, aborting..."; exit 1;; esac [[ $SOFTWARE =~ ^[0-9\ ]+$ ]] || { G_DIETPI-NOTIFY 1 "Invalid software list \"$SOFTWARE\" passed, aborting..."; exit 1; } @@ -225,7 +225,7 @@ done # Dependencies ########################################## apackages=('7zip' 'parted' 'fdisk' 'systemd-container') -(( $G_HW_ARCH == $ARCH || ( $G_HW_ARCH < 10 && $G_HW_ARCH > $ARCH ) )) || apackages+=('qemu-user-static' 'binfmt-support') +(( $G_HW_ARCH == $arch || ( $G_HW_ARCH < 10 && $G_HW_ARCH > $arch ) )) || apackages+=('qemu-user-static' 'binfmt-support') G_AG_CHECK_INSTALL_PREREQ "${apackages[@]}" ########################################## @@ -252,15 +252,15 @@ G_EXEC mkdir rootfs G_EXEC mount "${FP_LOOP}p1" rootfs # Force ARMv6 arch on Raspbian -[[ $ARCH == 'armv6l' ]] && G_EXEC sed -i '/# Start DietPi-Software/iG_EXEC sed -i -e '\''/^G_HW_ARCH=/cG_HW_ARCH=1'\'' -e '\''/^G_HW_ARCH_NAME=/cG_HW_ARCH_NAME=armv6l'\'' /boot/dietpi/.hw_model' rootfs/boot/dietpi/dietpi-login +(( $arch == 1 )) && G_EXEC sed -i '/# Start DietPi-Software/iG_EXEC sed -i -e '\''/^G_HW_ARCH=/cG_HW_ARCH=1'\'' -e '\''/^G_HW_ARCH_NAME=/cG_HW_ARCH_NAME=armv6l'\'' /boot/dietpi/.hw_model' rootfs/boot/dietpi/dietpi-login # Force RPi on ARM systems if requested -if [[ $RPI == 'true' && $ARCH == 'a'* ]] +if [[ $RPI == 'true' ]] && (( $arch < 10 )) then - case $ARCH in - 'armv6l') model=1;; - 'armv7l') model=2;; - 'aarch64') model=4;; + case $arch in + 1) model=1;; + 2) model=2;; + 3) model=4;; *) G_DIETPI-NOTIFY 1 "Invalid architecture $ARCH beginning with \"a\" but not being one of the known/accepted ARM architectures. This should never happen!"; exit 1;; esac G_EXEC sed -i "/# Start DietPi-Software/iG_EXEC sed -i -e '/^G_HW_MODEL=/cG_HW_MODEL=$model' -e '/^G_HW_MODEL_NAME=/cG_HW_MODEL_NAME=\"RPi $model ($ARCH)\"' /boot/dietpi/.hw_model; > /boot/config.txt; > /boot/cmdline.txt" rootfs/boot/dietpi/dietpi-login @@ -304,10 +304,10 @@ then fi # Workaround for failing 32-bit ARM Rust builds on ext4 in QEMU emulated container on 64-bit host: https://github.com/rust-lang/cargo/issues/9545 -(( $ARCH < 3 && $G_HW_ARCH > 9 )) && G_EXEC eval 'echo -e '\''tmpfs /mnt/dietpi_userdata tmpfs size=3G,noatime,lazytime\ntmpfs /root tmpfs size=3G,noatime,lazytime'\'' >> rootfs/etc/fstab' +(( $arch < 3 && $G_HW_ARCH > 9 )) && G_EXEC eval 'echo -e '\''tmpfs /mnt/dietpi_userdata tmpfs size=3G,noatime,lazytime\ntmpfs /root tmpfs size=3G,noatime,lazytime'\'' >> rootfs/etc/fstab' # Workaround for Node.js on ARMv6 -(( $ARCH == 1 )) && G_EXEC sed -i '/# Start DietPi-Software/a\sed -i '\''/G_EXEC chmod +x node-install.sh/a\\sed -i "/^ARCH=/c\\ARCH=armv6l" node-install.sh'\'' /boot/dietpi/dietpi-software' rootfs/boot/dietpi/dietpi-login +(( $arch == 1 )) && G_EXEC sed -i '/# Start DietPi-Software/a\sed -i '\''/G_EXEC chmod +x node-install.sh/a\\sed -i "/^ARCH=/c\\ARCH=armv6l" node-install.sh'\'' /boot/dietpi/dietpi-software' rootfs/boot/dietpi/dietpi-login # Check for service status, ports and commands # shellcheck disable=SC2016 From fcd7ce8459c58b8e2280d9e95634bf78c757a6b9 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Mon, 29 May 2023 23:32:01 +0200 Subject: [PATCH 044/106] v8.18 - CI | DietPi-Software: Show service logs on failure --- .github/workflows/dietpi-software.bash | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 788ce00272..6db88849f7 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -320,7 +320,7 @@ then do cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh echo -n '\e[33m[ INFO ] Checking $i service status:\e[0m ' -systemctl is-active '$i' || exit_code=1 +systemctl is-active '$i' || { journalctl -u '$i'; exit_code=1; } _EOF_ done for i in "${!aPORTS[@]}" @@ -341,7 +341,7 @@ fi # Success flag and shutdown # shellcheck disable=SC2016 -G_EXEC eval 'echo '\''[ $exit_code = 0 ] && > /success; poweroff'\'' >> rootfs/boot/Automation_Custom_Script.sh' +G_EXEC eval 'echo '\''[ $exit_code = 0 ] && > /success || { journalctl -n 25; ss -tlpn; df -h; free -h; poweroff; }; poweroff'\'' >> rootfs/boot/Automation_Custom_Script.sh' # Shutdown as well on failure G_EXEC sed -i 's|Prompt_on_Failure$|{ journalctl -n 25; ss -tlpn; df -h; free -h; poweroff; }|' rootfs/boot/dietpi/dietpi-login From 9852c8a0743608be4b83be725a68f5c468427ede Mon Sep 17 00:00:00 2001 From: MichaIng Date: Tue, 30 May 2023 01:57:39 +0200 Subject: [PATCH 045/106] v8.18 - CI | DietPi-Software: Airsonic depends on JRE --- .github/workflows/dietpi-software.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 6db88849f7..885b1be6df 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -210,7 +210,7 @@ do 27|56|63|64|107|132) Process_Software 89 webserver;; # 93 (Pi-hole) cannot be installed non-interactively 38|40|48|54|55|57|59|90|160) Process_Software 88 89 webserver;; 47|114|168) Process_Software 88 89 91 webserver;; - 8) Process_Software 196;; + 8|33) Process_Software 196;; 32|148|119) Process_Software 128;; 129) Process_Software 88 89 128 webserver;; 49|165) Process_Software 88;; From 6dbcd553682fc6736b0990bdbffc711a9c9f42c7 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Tue, 30 May 2023 16:30:05 +0200 Subject: [PATCH 046/106] v8.18 - CI | DietPi-Software: Check service port and command only if software really got installed, i.e. if it is supported on the tested hardware and distro version --- .github/workflows/dietpi-software.bash | 262 +++++++++++++------------ 1 file changed, 135 insertions(+), 127 deletions(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 885b1be6df..a1e5e8226a 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -62,142 +62,142 @@ esac ########################################## # Create service and port lists ########################################## -aSERVICES=() aPORTS=() aCOMMANDS=() +aSERVICES=() aTCP=() aUDP=() aCOMMANDS=() Process_Software() { local i for i in "$@" do case $i in - 'webserver') [[ $SOFTWARE =~ (^| )8[345]( |$) ]] || aSERVICES[83]='apache2' aPORTS[80]='tcp';; + 'webserver') [[ $SOFTWARE =~ (^| )8[345]( |$) ]] || aSERVICES[83]='apache2' aTCP[i]='80';; 0) aCOMMANDS[i]='ssh -V';; 1) aCOMMANDS[i]='smbclient -V';; - 2) aSERVICES[i]='fahclient' aPORTS[7396]='tcp';; + 2) aSERVICES[i]='fahclient' aTCP[i]='7396';; 7) aCOMMANDS[i]='ffmpeg -version';; 9) aCOMMANDS[i]='node -v';; - 16) aSERVICES[i]='microblog-pub' aPORTS[8007]='tcp';; + 16) aSERVICES[i]='microblog-pub' aTCP[i]='8007';; 17) aCOMMANDS[i]='git -v';; - 28|120) aSERVICES[i]='vncserver' aPORTS[5901]='tcp';; - 29) aSERVICES[i]='xrdp' aPORTS[3389]='tcp';; - 30) aSERVICES[i]='nxserver' aPORTS[4000]='tcp';; - 32) aSERVICES[i]='ympd' aPORTS[1337]='tcp';; - 33) aSERVICES[i]='airsonic' aPORTS[8080]='tcp';; - 35) aSERVICES[i]='logitechmediaserver' aPORTS[9000]='tcp';; + 28|120) aSERVICES[i]='vncserver' aTCP[i]='5901';; + 29) aSERVICES[i]='xrdp' aTCP[i]='3389';; + 30) aSERVICES[i]='nxserver' aTCP[i]='4000';; + 32) aSERVICES[i]='ympd' aTCP[i]='1337';; + 33) aSERVICES[i]='airsonic' aTCP[i]='8080';; + 35) aSERVICES[i]='logitechmediaserver' aTCP[i]='9000';; 36) aSERVICES[i]='Squeezelite';; # Random high UDP port - 37) aSERVICES[i]='shairport-sync' aPORTS[5000]='tcp';; # AirPlay 2 would be TCP port 7000 - 39) aSERVICES[i]='minidlna' aPORTS[8200]='tcp';; - 41) aSERVICES[i]='emby-server' aPORTS[8096]='tcp';; - 42) aSERVICES[i]='plexmediaserver' aPORTS[32400]='tcp';; - 43) aSERVICES[i]='mumble-server' aPORTS[64738]='tcp';; - 44) aSERVICES[i]='transmission-daemon' aPORTS[9091]='tcp';; - 45) aSERVICES[i]='deluged deluge-web' aPORTS[8112]='tcp' aPORTS[58846]='tcp' aPORTS[6882]='tcp';; - 46) aSERVICES[i]='qbittorrent' aPORTS[1340]='tcp' aPORTS[6881]='tcp';; - 49) aSERVICES[i]='gogs' aPORTS[3000]='tcp';; - 50) aSERVICES[i]='syncthing' aPORTS[8384]='tcp';; - 52) aSERVICES[i]='cuberite' aPORTS[1339]='tcp';; - 53) aSERVICES[i]='mineos' aPORTS[8443]='tcp';; - 58) aSERVICES[i]='tailscale';; # aPORTS[????]='udp';; + 37) aSERVICES[i]='shairport-sync' aTCP[i]='5000';; # AirPlay 2 would be TCP port 7000 + 39) aSERVICES[i]='minidlna' aTCP[i]='8200';; + 41) aSERVICES[i]='emby-server' aTCP[i]='8096';; + 42) aSERVICES[i]='plexmediaserver' aTCP[i]='32400';; + 43) aSERVICES[i]='mumble-server' aTCP[i]='64738';; + 44) aSERVICES[i]='transmission-daemon' aTCP[i]='9091';; + 45) aSERVICES[i]='deluged deluge-web' aTCP[i]='8112 58846 6882';; + 46) aSERVICES[i]='qbittorrent' aTCP[i]='1340 6881';; + 49) aSERVICES[i]='gogs' aTCP[i]='3000';; + 50) aSERVICES[i]='syncthing' aTCP[i]='8384';; + 52) aSERVICES[i]='cuberite' aTCP[i]='1339';; + 53) aSERVICES[i]='mineos' aTCP[i]='8443';; + 58) aSERVICES[i]='tailscale';; # aUDP[i]='????';; 59) aSERVICES[i]='raspimjpeg';; - #60) aPORTS[53]='udp' aPORTS[68]='udp';; Cannot be installed in CI since a WiFi interface is required - #61) aSERVICES[i]='tor' aPORTS[9040]='udp';; Cannot be installed in CI since a WiFi interface is required - 65) aSERVICES[i]='netdata' aPORTS[19999]='tcp';; - 66) aSERVICES[i]='rpimonitor' aPORTS[8888]='tcp';; - 71) aSERVICES[i]='webiopi' aPORTS[8002]='tcp';; + #60) aUDP[i]='53 68';; Cannot be installed in CI since a WiFi interface is required + #61) aSERVICES[i]='tor' aUDP[i]='9040';; Cannot be installed in CI since a WiFi interface is required + 65) aSERVICES[i]='netdata' aTCP[i]='19999';; + 66) aSERVICES[i]='rpimonitor' aTCP[i]='8888';; + 71) aSERVICES[i]='webiopi' aTCP[i]='8002';; 73) aSERVICES[i]='fail2ban';; - 74) aSERVICES[i]='influxdb' aPORTS[8086]='tcp' aPORTS[8088]='tcp';; - 77) aSERVICES[i]='grafana-server' aPORTS[3001]='tcp';; - 80) aSERVICES[i]='ubooquity' aPORTS[2038]='tcp' aPORTS[2039]='tcp';; - 83) aSERVICES[i]='apache2' aPORTS[80]='tcp';; - 84) aSERVICES[i]='lighttpd' aPORTS[80]='tcp';; - 85) aSERVICES[i]='nginx' aPORTS[80]='tcp';; + 74) aSERVICES[i]='influxdb' aTCP[i]='8086 8088';; + 77) aSERVICES[i]='grafana-server' aTCP[i]='3001';; + 80) aSERVICES[i]='ubooquity' aTCP[i]='2038 2039';; + 83) aSERVICES[i]='apache2' aTCP[i]='80';; + 84) aSERVICES[i]='lighttpd' aTCP[i]='80';; + 85) aSERVICES[i]='nginx' aTCP[i]='80';; 86) aSERVICES[i]='roon-extension-manager';; - 88) aSERVICES[i]='mariadb' aPORTS[3306]='tcp';; + 88) aSERVICES[i]='mariadb' aTCP[i]='3306';; 89) case $DISTRO in 'buster') aSERVICES[i]='php7.3-fpm';; 'bullseye') aSERVICES[i]='php7.4-fpm';; *) aSERVICES[i]='php8.2-fpm';; esac;; - 91) aSERVICES[i]='redis-server' aPORTS[6379]='tcp';; - #93) aSERVICES[i]='pihole-FTL' aPORTS[53]='udp';; # Cannot be installed non-interactively - 94) aSERVICES[i]='proftpd' aPORTS[21]='tcp';; - 95) aSERVICES[i]='vsftpd' aPORTS[21]='tcp';; - 96) aSERVICES[i]='smbd' aPORTS[139]='tcp' aPORTS[445]='tcp';; - 97) aSERVICES[i]='openvpn' aPORTS[1194]='udp';; - 98) aSERVICES[i]='haproxy' aPORTS[80]='tcp';; - 99) aSERVICES[i]='node_exporter' aPORTS[9100]='tcp';; - 100) aSERVICES[i]='pijuice';; # aPORTS[????]='tcp';; - 104) aSERVICES[i]='dropbear' aPORTS[22]='tcp';; - 105) aSERVICES[i]='ssh' aPORTS[22]='tcp';; - 106) aSERVICES[i]='lidarr' aPORTS[8686]='tcp';; - 107) aSERVICES[i]='rtorrent' aPORTS[49164]='tcp' aPORTS[6881]='udp';; - 109) aSERVICES[i]='nfs-kernel-server' aPORTS[2049]='tcp';; - 111) aSERVICES[i]='urbackupsrv' aPORTS[55414]='tcp';; - 115) aSERVICES[i]='webmin' aPORTS[10000]='tcp';; - 116) aSERVICES[i]='medusa' aPORTS[8081]='tcp';; + 91) aSERVICES[i]='redis-server' aTCP[i]='6379';; + #93) aSERVICES[i]='pihole-FTL' aUDP[i]='53';; # Cannot be installed non-interactively + 94) aSERVICES[i]='proftpd' aTCP[i]='21';; + 95) aSERVICES[i]='vsftpd' aTCP[i]='21';; + 96) aSERVICES[i]='smbd' aTCP[i]='139 445';; + 97) aSERVICES[i]='openvpn' aUDP[i]='1194';; + 98) aSERVICES[i]='haproxy' aTCP[i]='80';; + 99) aSERVICES[i]='node_exporter' aTCP[i]='9100';; + 100) aSERVICES[i]='pijuice';; # aTCP[i]='????';; + 104) aSERVICES[i]='dropbear' aTCP[i]='22';; + 105) aSERVICES[i]='ssh' aTCP[i]='22';; + 106) aSERVICES[i]='lidarr' aTCP[i]='8686';; + 107) aSERVICES[i]='rtorrent' aTCP[i]='49164' aUDP[i]='6881';; + 109) aSERVICES[i]='nfs-kernel-server' aTCP[i]='2049';; + 111) aSERVICES[i]='urbackupsrv' aTCP[i]='55414';; + 115) aSERVICES[i]='webmin' aTCP[i]='10000';; + 116) aSERVICES[i]='medusa' aTCP[i]='8081';; #117) :;; # ToDo: Implement automated install via /boot/unattended_pivpn.conf - 118) aSERVICES[i]='mopidy' aPORTS[6680]='tcp';; - 121) aSERVICES[i]='roonbridge' aPORTS[9003]='udp';; - 122) aSERVICES[i]='node-red' aPORTS[1880]='tcp';; - 123) aSERVICES[i]='mosquitto' aPORTS[1883]='tcp';; - 124) aSERVICES[i]='networkaudiod';; # aPORTS[????]='tcp';; - 125) aSERVICES[i]='synapse' aPORTS[8008]='tcp';; - 126) aSERVICES[i]='adguardhome' aPORTS[53]='udp' aPORTS[8083]='tcp'; [[ ${aSERVICES[182]} ]] && aPORTS[5353]='udp';; # Unbound uses port 5353 if AdGuard Home is installed - 128) aSERVICES[i]='mpd' aPORTS[6600]='tcp';; - 131) aSERVICES[i]='blynkserver' aPORTS[9443]='tcp';; - 132) aSERVICES[i]='aria2' aPORTS[6800]='tcp';; # aPORTS[6881-6999]='tcp';; # Listens on random port - 133) aSERVICES[i]='yacy' aPORTS[8090]='tcp';; - 135) aSERVICES[i]='icecast2 darkice' aPORTS[8000]='tcp';; - 136) aSERVICES[i]='motioneye' aPORTS[8765]='tcp';; - 137) aSERVICES[i]='mjpg-streamer' aPORTS[8082]='tcp';; - 138) aSERVICES[i]='virtualhere' aPORTS[7575]='tcp';; - 139) aSERVICES[i]='sabnzbd' aPORTS[8080]='tcp';; # ToDo: Solve conflict with Airsonic - 140) aSERVICES[i]='domoticz' aPORTS[8124]='tcp' aPORTS[8424]='tcp';; - 141) aSERVICES[i]='spotify-connect-web' aPORTS[4000]='tcp';; + 118) aSERVICES[i]='mopidy' aTCP[i]='6680';; + 121) aSERVICES[i]='roonbridge' aUDP[i]='9003';; + 122) aSERVICES[i]='node-red' aTCP[i]='1880';; + 123) aSERVICES[i]='mosquitto' aTCP[i]='1883';; + 124) aSERVICES[i]='networkaudiod';; # aUDP[i]='????';; + 125) aSERVICES[i]='synapse' aTCP[i]='8008';; + 126) aSERVICES[i]='adguardhome' aUDP[i]='53' aTCP[i]='8083'; [[ ${aSERVICES[182]} ]] && aUDP[i]+=' 5353';; # Unbound uses port 5353 if AdGuard Home is installed + 128) aSERVICES[i]='mpd' aTCP[i]='6600';; + 131) aSERVICES[i]='blynkserver' aTCP[i]='9443';; + 132) aSERVICES[i]='aria2' aTCP[i]='6800';; # aTCP[i]+=' 6881-6999';; # Listens on random port + 133) aSERVICES[i]='yacy' aTCP[i]='8090';; + 135) aSERVICES[i]='icecast2 darkice' aTCP[i]='8000';; + 136) aSERVICES[i]='motioneye' aTCP[i]='8765';; + 137) aSERVICES[i]='mjpg-streamer' aTCP[i]='8082';; + 138) aSERVICES[i]='virtualhere' aTCP[i]='7575';; + 139) aSERVICES[i]='sabnzbd' aTCP[i]='8080';; # ToDo: Solve conflict with Airsonic + 140) aSERVICES[i]='domoticz' aTCP[i]='8124 8424';; + 141) aSERVICES[i]='spotify-connect-web' aTCP[i]='4000';; 142) aSERVICES[i]='snapd';; - 143) aSERVICES[i]='koel' aPORTS[8003]='tcp';; - 144) aSERVICES[i]='sonarr' aPORTS[8989]='tcp';; - 145) aSERVICES[i]='radarr' aPORTS[7878]='tcp';; - 146) aSERVICES[i]='tautulli' aPORTS[8181]='tcp';; - 147) aSERVICES[i]='jackett' aPORTS[9117]='tcp';; - 148) aSERVICES[i]='mympd' aPORTS[1333]='tcp';; - 149) aSERVICES[i]='nzbget' aPORTS[6789]='tcp';; - 151) aSERVICES[i]='prowlarr' aPORTS[9696]='tcp';; - 152) aSERVICES[i]='avahi-daemon' aPORTS[5353]='udp';; - 153) aSERVICES[i]='octoprint' aPORTS[5001]='tcp';; + 143) aSERVICES[i]='koel' aTCP[i]='8003';; + 144) aSERVICES[i]='sonarr' aTCP[i]='8989';; + 145) aSERVICES[i]='radarr' aTCP[i]='7878';; + 146) aSERVICES[i]='tautulli' aTCP[i]='8181';; + 147) aSERVICES[i]='jackett' aTCP[i]='9117';; + 148) aSERVICES[i]='mympd' aTCP[i]='1333';; + 149) aSERVICES[i]='nzbget' aTCP[i]='6789';; + 151) aSERVICES[i]='prowlarr' aTCP[i]='9696';; + 152) aSERVICES[i]='avahi-daemon' aUDP[i]='5353';; + 153) aSERVICES[i]='octoprint' aTCP[i]='5001';; 154) aSERVICES[i]='roonserver';; # Listens on a variety of different port ranges - 155) aSERVICES[i]='htpc-manager' aPORTS[8085]='tcp';; - 157) aSERVICES[i]='home-assistant' aPORTS[8123]='tcp';; - 158) aSERVICES[i]='minio' aPORTS[9000]='tcp';; # ToDo: Solve port conflict with LMS - 161) aSERVICES[i]='bdd' aPORTS[80]='tcp' aPORTS[443]='tcp';; + 155) aSERVICES[i]='htpc-manager' aTCP[i]='8085';; + 157) aSERVICES[i]='home-assistant' aTCP[i]='8123';; + 158) aSERVICES[i]='minio' aTCP[i]='9000';; # ToDo: Solve port conflict with LMS + 161) aSERVICES[i]='bdd' aTCP[i]='80 443';; 162) aSERVICES[i]='docker';; 163) aSERVICES[i]='gmediarender';; # DLNA => UPnP high range of ports - 164) aSERVICES[i]='nukkit' aPORTS[19132]='udp';; - 165) aSERVICES[i]='gitea' aPORTS[3000]='tcp';; + 164) aSERVICES[i]='nukkit' aUDP[i]='19132';; + 165) aSERVICES[i]='gitea' aTCP[i]='3000';; 166) aSERVICES[i]='pi-spc';; 167) aSERVICES[i]='raspotify';; 169) aSERVICES[i]='voice-recognizer';; - #171) aSERVICES[i]='frps frpc' aPORTS[7000]='tcp' aPORTS[7500]='tcp' aPORTS[7400]='tcp';; # Cannot be installed non-interactively, ports on chosen type - #172) aSERVICES[i]='wg-quick@wg0' aPORTS[51820]='udp';; # cannot be installed non-interactively + #171) aSERVICES[i]='frps frpc' aTCP[i]='7000 7400 7500';; # Cannot be installed non-interactively, ports on chosen type + #172) aSERVICES[i]='wg-quick@wg0' aUDP[i]='51820';; # cannot be installed non-interactively 176) aSERVICES[i]='mycroft';; - 177) aSERVICES[i]='firefox-sync' aPORTS[5002]='tcp';; - 178) aSERVICES[i]='jellyfin' aPORTS[8097]='tcp';; - 179) aSERVICES[i]='komga' aPORTS[2037]='tcp';; - 180) aSERVICES[i]='bazarr' aPORTS[6767]='tcp';; - 181) aSERVICES[i]='papermc' aPORTS[25565]='tcp';; - 182) aSERVICES[i]='unbound' aPORTS[53]='udp'; [[ ${aSERVICES[126]} ]] && aPORTS[5353]='udp';; # Uses port 5353 if Pi-hole or AdGuard Home is installed, but those do listen on port 53 instead - 183) aSERVICES[i]='vaultwarden' aPORTS[8001]='tcp';; - #184) aSERVICES[i]='tor' aPORTS[443]='tcp' aPORTS[9051]='tcp';; # Cannot be installed non-interactively, ports can be chosen and depend on chosen relay type - 185) aSERVICES[i]='docker' aPORTS[9002]='tcp';; - 186) aSERVICES[i]='ipfs' aPORTS[5003]='tcp' aPORTS[8087]='tcp';; - 187) aSERVICES[i]='cups' aPORTS[631]='tcp';; - 191) aSERVICES[i]='snapserver' aPORTS[1780]='tcp';; + 177) aSERVICES[i]='firefox-sync' aTCP[i]='5002';; + 178) aSERVICES[i]='jellyfin' aTCP[i]='8097';; + 179) aSERVICES[i]='komga' aTCP[i]='2037';; + 180) aSERVICES[i]='bazarr' aTCP[i]='6767';; + 181) aSERVICES[i]='papermc' aTCP[i]='25565';; + 182) aSERVICES[i]='unbound' aUDP[i]='53'; [[ ${aSERVICES[126]} ]] && aUDP[i]+=' 5353';; # Uses port 5353 if Pi-hole or AdGuard Home is installed, but those do listen on port 53 instead + 183) aSERVICES[i]='vaultwarden' aTCP[i]='8001';; + #184) aSERVICES[i]='tor' aTCP[i]='443 9051';; # Cannot be installed non-interactively, ports can be chosen and depend on chosen relay type + 185) aSERVICES[i]='docker' aTCP[i]='9002';; + 186) aSERVICES[i]='ipfs' aTCP[i]='5003 8087';; + 187) aSERVICES[i]='cups' aTCP[i]='631';; + 191) aSERVICES[i]='snapserver' aTCP[i]='1780';; #192) aSERVICES[i]='snapclient';; # cannot be installed non-interactively 194) aSERVICES[i]='postgresql';; 196) aCOMMANDS[i]='java -version';; - 198) aSERVICES[i]='filebrowser' aPORTS[8084]='tcp';; - 199) aSERVICES[i]='spotifyd';; # aPORTS[4079]='tcp';; ??? - 200) aSERVICES[i]='dietpi-dashboard' aPORTS[5252]='tcp';; - 201) aSERVICES[i]='zerotier-one' aPORTS[9993]='tcp';; + 198) aSERVICES[i]='filebrowser' aTCP[i]='8084';; + 199) aSERVICES[i]='spotifyd';; # aTCP[i]='4079';; ??? + 200) aSERVICES[i]='dietpi-dashboard' aTCP[i]='5252';; + 201) aSERVICES[i]='zerotier-one' aTCP[i]='9993';; 202) aCOMMANDS[i]='rclone -h';; - 203) aSERVICES[i]='readarr' aPORTS[8787]='tcp';; - 204) aSERVICES[i]='navidrome' aPORTS[4533]='tcp';; - 206) aSERVICES[i]='openhab' aPORTS[8444]='tcp';; + 203) aSERVICES[i]='readarr' aTCP[i]='8787';; + 204) aSERVICES[i]='navidrome' aTCP[i]='4533';; + 206) aSERVICES[i]='openhab' aTCP[i]='8444';; 209) aCOMMANDS[i]='restic version';; *) :;; esac @@ -311,33 +311,41 @@ fi # Check for service status, ports and commands # shellcheck disable=SC2016 +# - Start all services G_EXEC sed -i '/# Start DietPi-Software/a\sed -i '\''/# Custom 1st run script/a\\for i in "${aSTART_SERVICES[@]}"; do G_EXEC_NOHALT=1 G_EXEC systemctl start "$i"; done'\'' /boot/dietpi/dietpi-software' rootfs/boot/dietpi/dietpi-login -G_EXEC eval 'echo -e '\''#!/bin/dash\nexit_code=0; /boot/dietpi/dietpi-services start || exit_code=1'\'' > rootfs/boot/Automation_Custom_Script.sh' -if (( ${#aSERVICES[@]} || ${#aPORTS[@]} || ${#aCOMMANDS[@]} )) +G_EXEC eval 'echo -e '\''#!/bin/dash\nexit_code=0; /boot/dietpi/dietpi-services start || exit_code=1; sleep 30'\'' > rootfs/boot/Automation_Custom_Script.sh' +# - Loop through software IDs to test +printf '%s\n' "${!aSERVICES[@]}" "$!#aTCP[@]}" "${!aUDP[@]}" "${!aCOMMANDS[@]}" | sort -u | while read -r i +do + # - Check whether ID really got installed, to skip software unsupported on hardware or distro + cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh +if grep -q '^aSOFTWARE_INSTALL_STATE\[$i\]=2$' /boot/dietpi/.installed then - G_EXEC eval 'echo '\''sleep 30'\'' >> rootfs/boot/Automation_Custom_Script.sh' - for i in "${aSERVICES[@]}" - do - cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh -echo -n '\e[33m[ INFO ] Checking $i service status:\e[0m ' -systemctl is-active '$i' || { journalctl -u '$i'; exit_code=1; } _EOF_ - done - for i in "${!aPORTS[@]}" - do - cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh -echo '\e[33m[ INFO ] Checking ${aPORTS[i]^^} port $i status:\e[0m' -ss -${aPORTS[i]::1}lpn | grep ':${i}[[:blank:]]' || exit_code=1 + # - Check service status + [[ ${aSERVICES[i]} ]] && cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh +echo -n '\e[33m[ INFO ] Checking ${aSERVICES[i]} service status:\e[0m ' +systemctl is-active '${aSERVICES[i]}' || { journalctl -u '${aSERVICES[i]}'; exit_code=1; } +_EOF_ + # - Check TCP ports + [[ ${aTCP[i]} ]] && for j in ${aTCP[i]}; do cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh +echo '\e[33m[ INFO ] Checking TCP port $j status:\e[0m' +ss -tlpn | grep ':${j}[[:blank:]]' || exit_code=1 _EOF_ done - for i in "${aCOMMANDS[@]}" - do - cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh -echo '\e[33m[ INFO ] Testing command $i:\e[0m' -$i || exit_code=1 + # - Check UDP ports + [[ ${aUDP[i]} ]] && for j in ${aUDP[i]}; do cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh +echo '\e[33m[ INFO ] Checking UDP port $j status:\e[0m' +ss -ulpn | grep ':${j}[[:blank:]]' || exit_code=1 _EOF_ done -fi + # - Check commands + [[ ${aCOMMANDS[i]} ]] && cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh +echo '\e[33m[ INFO ] Testing command ${aCOMMANDS[i]}:\e[0m' +${aCOMMANDS[i]} || exit_code=1 +_EOF_ + echo 'fi' >> rootfs/boot/Automation_Custom_Script.sh +done # Success flag and shutdown # shellcheck disable=SC2016 From 0844cf8f4a60a674a0828afbaca3b5268354b956 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Tue, 30 May 2023 17:48:57 +0200 Subject: [PATCH 047/106] v8.18 - CI | DietPi-Software: Syntax --- .github/workflows/dietpi-software.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index a1e5e8226a..30cc683241 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -315,7 +315,7 @@ fi G_EXEC sed -i '/# Start DietPi-Software/a\sed -i '\''/# Custom 1st run script/a\\for i in "${aSTART_SERVICES[@]}"; do G_EXEC_NOHALT=1 G_EXEC systemctl start "$i"; done'\'' /boot/dietpi/dietpi-software' rootfs/boot/dietpi/dietpi-login G_EXEC eval 'echo -e '\''#!/bin/dash\nexit_code=0; /boot/dietpi/dietpi-services start || exit_code=1; sleep 30'\'' > rootfs/boot/Automation_Custom_Script.sh' # - Loop through software IDs to test -printf '%s\n' "${!aSERVICES[@]}" "$!#aTCP[@]}" "${!aUDP[@]}" "${!aCOMMANDS[@]}" | sort -u | while read -r i +printf '%s\n' "${!aSERVICES[@]}" "${!aTCP[@]}" "${!aUDP[@]}" "${!aCOMMANDS[@]}" | sort -u | while read -r i do # - Check whether ID really got installed, to skip software unsupported on hardware or distro cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh From 00cefd7bee0a52699ac3eff7fe1845590a0f8c6e Mon Sep 17 00:00:00 2001 From: MichaIng Date: Tue, 30 May 2023 18:37:29 +0200 Subject: [PATCH 048/106] v8.18 - CI | DietPi-Software: Switch to Lighttpd as default webserver due to a bug on Bookworm systems in 32-bit ARM containers. Actively replace requested Apache install with Lighttpd as well in this circumstance and print a related warning --- .github/workflows/dietpi-software.bash | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 30cc683241..8028e62c67 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -47,7 +47,7 @@ do esac shift done -[[ $DISTRO =~ ^'buster'|'bullseye'|'bookworm'$ ]] || { G_DIETPI-NOTIFY 1 "Invalid distro \"$DISTRO\" passed, aborting..."; exit 1; } +[[ $DISTRO =~ ^('buster'|'bullseye'|'bookworm')$ ]] || { G_DIETPI-NOTIFY 1 "Invalid distro \"$DISTRO\" passed, aborting..."; exit 1; } case $ARCH in 'armv6l') image="DietPi_Container-ARMv6-${DISTRO^}" arch=1;; 'armv7l') image="DietPi_Container-ARMv7-${DISTRO^}" arch=2;; @@ -57,7 +57,10 @@ case $ARCH in *) G_DIETPI-NOTIFY 1 "Invalid architecture \"$ARCH\" passed, aborting..."; exit 1;; esac [[ $SOFTWARE =~ ^[0-9\ ]+$ ]] || { G_DIETPI-NOTIFY 1 "Invalid software list \"$SOFTWARE\" passed, aborting..."; exit 1; } -[[ $RPI =~ ^|'false'|'true'$ ]] || { G_DIETPI-NOTIFY 1 "Invalid RPi flag \"$RPI\" passed, aborting..."; exit 1; } +[[ $RPI =~ ^(|'false'|'true')$ ]] || { G_DIETPI-NOTIFY 1 "Invalid RPi flag \"$RPI\" passed, aborting..."; exit 1; } + +# Workaround for "Could not execute systemctl: at /usr/bin/deb-systemd-invoke line 145." during Apache2 DEB postinst in 32-bit ARM Bookworm container: https://lists.ubuntu.com/archives/foundations-bugs/2022-January/467253.html +[[ $SOFTWARE =~ (^| )83( |$) && $DISTRO == 'bookworm' ]] && (( $arch < 3 )) && { echo '[ WARN ] Installing Lighttpd instead of Apache due to a bug in 32-bit ARM containers'; SOFTWARE=$(sed -Ei 's/(^| )83( |$)/\184\2/' <<< "$SOFTWARE"); } ########################################## # Create service and port lists @@ -69,7 +72,7 @@ Process_Software() for i in "$@" do case $i in - 'webserver') [[ $SOFTWARE =~ (^| )8[345]( |$) ]] || aSERVICES[83]='apache2' aTCP[i]='80';; + 'webserver') [[ $SOFTWARE =~ (^| )8[345]( |$) ]] || aSERVICES[84]='lighttpd' aTCP[84]='80';; # Lighttpd as default due to above bug in 32-bit ARM Bookworm containers 0) aCOMMANDS[i]='ssh -V';; 1) aCOMMANDS[i]='smbclient -V';; 2) aSERVICES[i]='fahclient' aTCP[i]='7396';; @@ -289,6 +292,9 @@ G_EXEC rm rootfs/root/.ssh/known_hosts # Apply software IDs to install for i in $SOFTWARE; do G_CONFIG_INJECT "AUTO_SETUP_INSTALL_SOFTWARE_ID=$i" "AUTO_SETUP_INSTALL_SOFTWARE_ID=$i" rootfs/boot/dietpi.txt; done +# Workaround for "Could not execute systemctl: at /usr/bin/deb-systemd-invoke line 145." during Apache2 DEB postinst in 32-bit ARM Bookworm container: https://lists.ubuntu.com/archives/foundations-bugs/2022-January/467253.html +G_CONFIG_INJECT 'AUTO_SETUP_WEB_SERVER_INDEX=' 'AUTO_SETUP_WEB_SERVER_INDEX=-2' rootfs/boot/dietpi.txt + # Workaround for failing Redis as of PrivateUsers=true leading to "Failed to set up user namespacing" G_EXEC mkdir rootfs/etc/systemd/system/redis-server.service.d G_EXEC eval 'echo -e '\''[Service]\nPrivateUsers=0'\'' > rootfs/etc/systemd/system/redis-server.service.d/dietpi-container.conf' From 4f7b00763becc1466eea2470cf5d6701efc2e937 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Tue, 30 May 2023 19:13:38 +0200 Subject: [PATCH 049/106] v8.18 - CI | DietPi-Software: Syntax --- .github/workflows/dietpi-software.bash | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 8028e62c67..7ad7531256 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -60,7 +60,7 @@ esac [[ $RPI =~ ^(|'false'|'true')$ ]] || { G_DIETPI-NOTIFY 1 "Invalid RPi flag \"$RPI\" passed, aborting..."; exit 1; } # Workaround for "Could not execute systemctl: at /usr/bin/deb-systemd-invoke line 145." during Apache2 DEB postinst in 32-bit ARM Bookworm container: https://lists.ubuntu.com/archives/foundations-bugs/2022-January/467253.html -[[ $SOFTWARE =~ (^| )83( |$) && $DISTRO == 'bookworm' ]] && (( $arch < 3 )) && { echo '[ WARN ] Installing Lighttpd instead of Apache due to a bug in 32-bit ARM containers'; SOFTWARE=$(sed -Ei 's/(^| )83( |$)/\184\2/' <<< "$SOFTWARE"); } +[[ $SOFTWARE =~ (^| )83( |$) && $DISTRO == 'bookworm' ]] && (( $arch < 3 )) && { echo '[ WARN ] Installing Lighttpd instead of Apache due to a bug in 32-bit ARM containers'; SOFTWARE=$(sed -E 's/(^| )83( |$)/\184\2/g' <<< "$SOFTWARE"); } ########################################## # Create service and port lists @@ -350,7 +350,7 @@ _EOF_ echo '\e[33m[ INFO ] Testing command ${aCOMMANDS[i]}:\e[0m' ${aCOMMANDS[i]} || exit_code=1 _EOF_ - echo 'fi' >> rootfs/boot/Automation_Custom_Script.sh + G_EXEC eval 'echo fi >> rootfs/boot/Automation_Custom_Script.sh' done # Success flag and shutdown From 5406f65d7235de27107a4aa3115b6ba69476ffb5 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Tue, 30 May 2023 22:19:23 +0200 Subject: [PATCH 050/106] v8.18 (#6398) - CI | DietPi-Software: Add support for defining individual check delays for each software title to give all services sufficient time to start up before checking their status - CI DietPi-Software: Disable Airsonic checks on ARM and RISC-V since the service fails in QEMU-emulated containers, probably due to missing device access --- .github/workflows/dietpi-software.bash | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 7ad7531256..96bc8544c9 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -65,7 +65,7 @@ esac ########################################## # Create service and port lists ########################################## -aSERVICES=() aTCP=() aUDP=() aCOMMANDS=() +aSERVICES=() aTCP=() aUDP=() aCOMMANDS=() aDELAY=() Process_Software() { local i @@ -84,7 +84,7 @@ Process_Software() 29) aSERVICES[i]='xrdp' aTCP[i]='3389';; 30) aSERVICES[i]='nxserver' aTCP[i]='4000';; 32) aSERVICES[i]='ympd' aTCP[i]='1337';; - 33) aSERVICES[i]='airsonic' aTCP[i]='8080';; + 33) (( $arch == 10 )) && aSERVICES[i]='airsonic' aTCP[i]='8080' aDELAY[i]=30;; # Fails in QEMU-emulated containers, probably due to missing device access 35) aSERVICES[i]='logitechmediaserver' aTCP[i]='9000';; 36) aSERVICES[i]='Squeezelite';; # Random high UDP port 37) aSERVICES[i]='shairport-sync' aTCP[i]='5000';; # AirPlay 2 would be TCP port 7000 @@ -319,33 +319,35 @@ fi # shellcheck disable=SC2016 # - Start all services G_EXEC sed -i '/# Start DietPi-Software/a\sed -i '\''/# Custom 1st run script/a\\for i in "${aSTART_SERVICES[@]}"; do G_EXEC_NOHALT=1 G_EXEC systemctl start "$i"; done'\'' /boot/dietpi/dietpi-software' rootfs/boot/dietpi/dietpi-login -G_EXEC eval 'echo -e '\''#!/bin/dash\nexit_code=0; /boot/dietpi/dietpi-services start || exit_code=1; sleep 30'\'' > rootfs/boot/Automation_Custom_Script.sh' +delay=10 +for i in "${aDELAY[@]}"; do (( $i > $delay )) && delay=$i; done +G_EXEC eval "echo -e '#!/bin/dash\nexit_code=0; /boot/dietpi/dietpi-services start || exit_code=1; sleep $delay' > rootfs/boot/Automation_Custom_Script.sh" # - Loop through software IDs to test printf '%s\n' "${!aSERVICES[@]}" "${!aTCP[@]}" "${!aUDP[@]}" "${!aCOMMANDS[@]}" | sort -u | while read -r i do - # - Check whether ID really got installed, to skip software unsupported on hardware or distro + # Check whether ID really got installed, to skip software unsupported on hardware or distro cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh if grep -q '^aSOFTWARE_INSTALL_STATE\[$i\]=2$' /boot/dietpi/.installed then _EOF_ - # - Check service status + # Check service status [[ ${aSERVICES[i]} ]] && cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh echo -n '\e[33m[ INFO ] Checking ${aSERVICES[i]} service status:\e[0m ' systemctl is-active '${aSERVICES[i]}' || { journalctl -u '${aSERVICES[i]}'; exit_code=1; } _EOF_ - # - Check TCP ports + # Check TCP ports [[ ${aTCP[i]} ]] && for j in ${aTCP[i]}; do cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh echo '\e[33m[ INFO ] Checking TCP port $j status:\e[0m' ss -tlpn | grep ':${j}[[:blank:]]' || exit_code=1 _EOF_ done - # - Check UDP ports + # Check UDP ports [[ ${aUDP[i]} ]] && for j in ${aUDP[i]}; do cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh echo '\e[33m[ INFO ] Checking UDP port $j status:\e[0m' ss -ulpn | grep ':${j}[[:blank:]]' || exit_code=1 _EOF_ done - # - Check commands + # Check commands [[ ${aCOMMANDS[i]} ]] && cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh echo '\e[33m[ INFO ] Testing command ${aCOMMANDS[i]}:\e[0m' ${aCOMMANDS[i]} || exit_code=1 From 18b3e4d9393a67910a75a7e792a411d7d61cc703 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Tue, 30 May 2023 22:47:21 +0200 Subject: [PATCH 051/106] v8.18 - DietPi-Software | Deluge: Resolved an issue on Bookworm systems where the install failed when trying to alter the service user. --- CHANGELOG.txt | 1 + dietpi/dietpi-software | 12 +++++++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index c17af42085..ef5b8bf33b 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -15,6 +15,7 @@ Bug fixes: - DietPi-Software | motionEye: Resolved an issue where the installation failed on ARMv6, ARMv7 and RISC-V Bookworm systems due to missing build dependencies. Many thanks to @magicfoxt-magicfox for reporting this issue: https://github.com/MichaIng/DietPi/issues/6333 - DietPi-Software | LXQt: Resolved an issue on Bookworm systems where the install failed since configs were missing. - DietPi-Software | TigerVNC: Resolved an issue on Bookworm systems where the VNC password was not set as expected since the tigervncpasswd command became a dedicated DEB package "tigervnc-tools". +- DietPi-Software | Deluge: Resolved an issue on Bookworm systems where the install failed when trying to alter the service user. As always, many smaller code performance and stability improvements, visual and spelling fixes have been done, too much to list all of them here. Check out all code changes of this release on GitHub: https://github.com/MichaIng/DietPi/pull/XXXX diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index 184a0c6c21..ea554f52a7 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -5533,6 +5533,7 @@ _EOF_ then # Packages G_AGI deluged deluge-web deluge-console + (( $G_DISTRO > 6 )) && G_EXEC systemctl stop deluge-web G_EXEC systemctl stop deluged # Remove SysV service leftovers, installed by Debian APT package @@ -5587,7 +5588,7 @@ _EOF_ G_EXEC chown -R debian-deluged:root /mnt/dietpi_userdata/deluge # Service: https://github.com/deluge-torrent/deluge/blob/develop/packaging/systemd/deluged.service - cat << _EOF_ > /etc/systemd/system/deluged.service + cat << '_EOF_' > /etc/systemd/system/deluged.service [Unit] Description=Deluge Daemon (DietPi) Documentation=man:deluged @@ -5596,8 +5597,8 @@ After=network-online.target remote-fs.target [Service] User=debian-deluged -UMask=002 -ExecStart=$(command -v deluged) -d +UMask=007 +ExecStart=/usr/bin/deluged -d [Install] WantedBy=multi-user.target @@ -5610,12 +5611,13 @@ _EOF_ [Unit] Description=Deluge Web UI (DietPi) Documentation=man:deluge-web -After=deluged.service +Wants=network-online.target +After=network-online.target deluged.service [Service] User=debian-deluged UMask=027 -ExecStart=$(command -v deluge-web)$flag +ExecStart=/usr/bin/deluge-web$flag [Install] WantedBy=multi-user.target From 83ec23695af19fd341e2272e1c1ae03aff83329a Mon Sep 17 00:00:00 2001 From: MichaIng Date: Tue, 30 May 2023 22:56:39 +0200 Subject: [PATCH 052/106] v8.18 - CI | DietPi-Software: Add support for multiple services per software title --- .github/workflows/dietpi-software.bash | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 96bc8544c9..3b4f9d06b2 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -331,10 +331,11 @@ if grep -q '^aSOFTWARE_INSTALL_STATE\[$i\]=2$' /boot/dietpi/.installed then _EOF_ # Check service status - [[ ${aSERVICES[i]} ]] && cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh -echo -n '\e[33m[ INFO ] Checking ${aSERVICES[i]} service status:\e[0m ' -systemctl is-active '${aSERVICES[i]}' || { journalctl -u '${aSERVICES[i]}'; exit_code=1; } + [[ ${aSERVICES[i]} ]] && for j in ${aSERVICES[i]}; do cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh +echo -n '\e[33m[ INFO ] Checking $j service status:\e[0m ' +systemctl is-active '$j' || { journalctl -u '$j'; exit_code=1; } _EOF_ + done # Check TCP ports [[ ${aTCP[i]} ]] && for j in ${aTCP[i]}; do cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh echo '\e[33m[ INFO ] Checking TCP port $j status:\e[0m' From 7639bb3d86141a5b70473a927367ab00fb367396 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Wed, 31 May 2023 00:23:48 +0200 Subject: [PATCH 053/106] v8.18 - CI | DietPi-Software: Add test command for OpenTyrian --- .github/workflows/dietpi-software.bash | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 3b4f9d06b2..78314ca1e1 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -97,6 +97,7 @@ Process_Software() 46) aSERVICES[i]='qbittorrent' aTCP[i]='1340 6881';; 49) aSERVICES[i]='gogs' aTCP[i]='3000';; 50) aSERVICES[i]='syncthing' aTCP[i]='8384';; + 51) aCOMMANDS[i]='/usr/games/opentyrian/opentyrian -h';; 52) aSERVICES[i]='cuberite' aTCP[i]='1339';; 53) aSERVICES[i]='mineos' aTCP[i]='8443';; 58) aSERVICES[i]='tailscale';; # aUDP[i]='????';; From 8769e0addebf2d2eeef8a8f172fe3fb862a47699 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Wed, 31 May 2023 21:06:37 +0200 Subject: [PATCH 054/106] v8.18 - CI | DietPi-Software: Disable Squeezelite service check since it exits if no audio device exists --- .github/workflows/dietpi-software.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 78314ca1e1..eeb737fc2d 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -86,7 +86,7 @@ Process_Software() 32) aSERVICES[i]='ympd' aTCP[i]='1337';; 33) (( $arch == 10 )) && aSERVICES[i]='airsonic' aTCP[i]='8080' aDELAY[i]=30;; # Fails in QEMU-emulated containers, probably due to missing device access 35) aSERVICES[i]='logitechmediaserver' aTCP[i]='9000';; - 36) aSERVICES[i]='Squeezelite';; # Random high UDP port + #36) aSERVICES[i]='Squeezelite';; # Random high UDP port # Service exits if no audio device has been found, which does not exist on GitHub Actions runners, respectively within the containers 37) aSERVICES[i]='shairport-sync' aTCP[i]='5000';; # AirPlay 2 would be TCP port 7000 39) aSERVICES[i]='minidlna' aTCP[i]='8200';; 41) aSERVICES[i]='emby-server' aTCP[i]='8096';; From 7456ef4b0cc25b50779f97d7b06c81104ab81cd0 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Wed, 31 May 2023 21:10:27 +0200 Subject: [PATCH 055/106] v8.18 (#6401) - CI | Squeezelite: Update/align workflow and add RISC-V support --- .../shairport-sync/container_build.bash | 2 +- .build/software/squeezelite/build.bash | 12 +- .../software/squeezelite/container_build.bash | 25 +- .github/workflows/squeezelite.yml | 271 ++++-------------- 4 files changed, 72 insertions(+), 238 deletions(-) diff --git a/.build/software/shairport-sync/container_build.bash b/.build/software/shairport-sync/container_build.bash index 330187de1c..f01582ed90 100755 --- a/.build/software/shairport-sync/container_build.bash +++ b/.build/software/shairport-sync/container_build.bash @@ -43,7 +43,7 @@ do esac shift done -[[ $DISTRO =~ ^'buster'|'bullseye'|'bookworm'$ ]] || { G_DIETPI-NOTIFY 1 "Invalid distro \"$DISTRO\" passed, aborting..."; exit 1; } +[[ $DISTRO =~ ^('buster'|'bullseye'|'bookworm')$ ]] || { G_DIETPI-NOTIFY 1 "Invalid distro \"$DISTRO\" passed, aborting..."; exit 1; } case $ARCH in 'armv6l') image="DietPi_Container-ARMv6-${DISTRO^}" arch=1;; 'armv7l') image="DietPi_Container-ARMv7-${DISTRO^}" arch=2;; diff --git a/.build/software/squeezelite/build.bash b/.build/software/squeezelite/build.bash index efb4d8e550..9e578c6cba 100755 --- a/.build/software/squeezelite/build.bash +++ b/.build/software/squeezelite/build.bash @@ -138,13 +138,21 @@ DEPS_APT_VERSIONED=${DEPS_APT_VERSIONED%,} # shellcheck disable=SC2001 grep -q 'raspbian' /etc/os-release && DEPS_APT_VERSIONED=$(sed 's/+rp[it][0-9]\+[^)]*)/)/g' <<< "$DEPS_APT_VERSIONED") || DEPS_APT_VERSIONED=$(sed 's/+b[0-9]\+)/)/g' <<< "$DEPS_APT_VERSIONED") +# - Obtain version +version="$(mawk -F\" '/MAJOR_VERSION/{print $2;exit}' squeezelite-master/squeezelite.h).$(mawk -F\" '/MINOR_VERSION/{print $2;exit}' squeezelite-master/squeezelite.h)-$(mawk -F\" '/MICRO_VERSION/{print $2;exit}' squeezelite-master/squeezelite.h)" +G_EXEC curl -sSfo package.deb "https://dietpi.com/downloads/binaries/$G_DISTRO_NAME/squeezelite_$G_HW_ARCH_NAME.deb" +old_version=$(dpkg-deb -f package.deb Version) +G_EXEC rm package.deb +suffix=${old_version#*-dietpi} +[[ $old_version == "$version-"* ]] && suffix="dietpi$((suffix+1))" || suffix="dietpi1" + # - control cat << _EOF_ > "$DIR/DEBIAN/control" Package: squeezelite -Version: $(mawk -F\" '/MAJOR_VERSION/{print $2;exit}' squeezelite-master/squeezelite.h).$(mawk -F\" '/MINOR_VERSION/{print $2;exit}' squeezelite-master/squeezelite.h)-$(mawk -F\" '/MICRO_VERSION/{print $2;exit}' squeezelite-master/squeezelite.h)-dietpi1 +Version: $version-$suffix Architecture: $(dpkg --print-architecture) Maintainer: MichaIng -Date: $(date '+%a, %d %b %Y %T %z') +Date: $(date -u '+%a, %d %b %Y %T %z') Standards-Version: 4.6.2.0 Installed-Size: $(du -sk "$DIR" | mawk '{print $1}') Depends:$DEPS_APT_VERSIONED diff --git a/.build/software/squeezelite/container_build.bash b/.build/software/squeezelite/container_build.bash index 88c9ae2ba1..44d7019178 100755 --- a/.build/software/squeezelite/container_build.bash +++ b/.build/software/squeezelite/container_build.bash @@ -43,18 +43,13 @@ do esac shift done -case $DISTRO in - 5) distro='buster';; - 6) distro='bullseye';; - 7) distro='bookworm';; - *) G_DIETPI-NOTIFY 1 "Invalid distro \"$DISTRO\" passed, aborting..."; exit 1;; -esac +[[ $DISTRO =~ ^('buster'|'bullseye'|'bookworm')$ ]] || { G_DIETPI-NOTIFY 1 "Invalid distro \"$DISTRO\" passed, aborting..."; exit 1; } case $ARCH in - 1) image="DietPi_Container-ARMv6-${distro^}" arch='armv6l';; - 2) image="DietPi_Container-ARMv7-${distro^}" arch='armv7l';; - 3) image="DietPi_Container-ARMv8-${distro^}" arch='aarch64';; - 10) image="DietPi_Container-x86_64-${distro^}" arch='x86_64';; - 11) image='DietPi_Container-RISC-V-Sid' arch='riscv64';; + 'armv6l') image="DietPi_Container-ARMv6-${DISTRO^}" arch=1;; + 'armv7l') image="DietPi_Container-ARMv7-${DISTRO^}" arch=2;; + 'aarch64') image="DietPi_Container-ARMv8-${DISTRO^}" arch=3;; + 'x86_64') image="DietPi_Container-x86_64-${DISTRO^}" arch=10;; + 'riscv64') image='DietPi_Container-RISC-V-Sid' arch=11;; *) G_DIETPI-NOTIFY 1 "Invalid architecture \"$ARCH\" passed, aborting..."; exit 1;; esac @@ -62,7 +57,7 @@ esac # Dependencies ########################################## apackages=('7zip' 'parted' 'fdisk' 'systemd-container') -(( $G_HW_ARCH == $ARCH || ( $G_HW_ARCH < 10 && $G_HW_ARCH > $ARCH ) )) || apackages+=('qemu-user-static' 'binfmt-support') +(( $G_HW_ARCH == $arch || ( $G_HW_ARCH < 10 && $G_HW_ARCH > $arch ) )) || apackages+=('qemu-user-static' 'binfmt-support') G_AG_CHECK_INSTALL_PREREQ "${apackages[@]}" ########################################## @@ -92,7 +87,7 @@ G_EXEC mount "${FP_LOOP}p1" rootfs G_CONFIG_INJECT 'AUTO_SETUP_AUTOMATED=' 'AUTO_SETUP_AUTOMATED=1' rootfs/boot/dietpi.txt # Force ARMv6 arch on Raspbian -(( $ARCH == 1 )) && echo 'sed -i -e '\''/^G_HW_ARCH=/c\G_HW_ARCH=1'\'' -e '\''/^G_HW_ARCH_NAME=/c\G_HW_ARCH_NAME=armv6l'\'' /boot/dietpi/.hw_model' > rootfs/boot/Automation_Custom_PreScript.sh +(( $arch == 1 )) && echo 'sed -i -e '\''/^G_HW_ARCH=/c\G_HW_ARCH=1'\'' -e '\''/^G_HW_ARCH_NAME=/c\G_HW_ARCH_NAME=armv6l'\'' /boot/dietpi/.hw_model' > rootfs/boot/Automation_Custom_PreScript.sh # Avoid DietPi-Survey uploads to not mess with the statistics G_EXEC rm rootfs/root/.ssh/known_hosts @@ -109,7 +104,7 @@ cat << _EOF_ > rootfs/boot/Automation_Custom_Script.sh || exit 1 #!/bin/dash echo '[ INFO ] Running Squeezelite build script...' bash -c "\$(curl -sSf 'https://raw.githubusercontent.com/$G_GITOWNER/DietPi/$G_GITBRANCH/.build/software/squeezelite/build.bash')" -mv -v '/tmp/squeezelite_$arch.deb' / +mv -v '/tmp/squeezelite_$ARCH.deb' / poweroff _EOF_ @@ -117,5 +112,5 @@ _EOF_ # Boot container ########################################## systemd-nspawn -bD rootfs -[[ -f rootfs/squeezelite_$arch.deb ]] || exit 1 +[[ -f rootfs/squeezelite_$ARCH.deb ]] || exit 1 } diff --git a/.github/workflows/squeezelite.yml b/.github/workflows/squeezelite.yml index b6e8cc8705..08ef07b58b 100644 --- a/.github/workflows/squeezelite.yml +++ b/.github/workflows/squeezelite.yml @@ -3,242 +3,73 @@ on: workflow_dispatch: inputs: arch: - description: 'Target architecture index: 1, 2, 3, 10 or all' + description: 'Target architecture' + type: choice + options: [armv6l, armv7l, aarch64, x86_64, riscv64, all] + default: all required: true - distro: - description: 'Target Debian version index: 5, 6, 7 or all' + dist: + description: 'Target Debian version' + type: choice + options: [buster, bullseye, bookworm, all] + default: all required: true concurrency: group: ${{ github.workflow }}-${{ github.event.inputs.arch }}-${{ github.event.inputs.distro }} cancel-in-progress: true permissions: {} +defaults: + run: + shell: sh + working-directory: /dev/shm jobs: - armv6_buster: - if: ( github.event.inputs.arch == 1 || github.event.inputs.arch == 'all' ) && ( github.event.inputs.distro == 5 || github.event.inputs.distro == 'all' ) - # https://github.com/actions/virtual-environments - runs-on: ubuntu-22.04 - defaults: - run: - shell: sh - working-directory: /dev/shm - steps: - - name: Start build container - run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=${GITHUB_REF#refs/heads/}; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/${GITHUB_REF#refs/heads/}/.build/software/squeezelite/container_build.bash")" 'DietPi-Build_Squeezelite' -a 1 -d 5 - - name: Upload package - run: | - [ -d ~/.ssh ] || mkdir ~/.ssh - umask 377 - echo '${{ secrets.KNOWN_HOSTS }}' > ~/.ssh/known_hosts - echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_ed25519 - curl -T rootfs/squeezelite_armv6l.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}buster/' - curl 'https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache' -H 'Authorization: Bearer ${{ secrets.CF_TOKEN }}' -H 'Content-Type: application/json' \ - --data '{"files":["https://dietpi.com/downloads/binaries/buster/testing/","https://dietpi.com/downloads/binaries/buster/testing/squeezelite_armv6l.deb"]}' - armv6_bullseye: - if: ( github.event.inputs.arch == 1 || github.event.inputs.arch == 'all' ) && ( github.event.inputs.distro == 6 || github.event.inputs.distro == 'all' ) + prep: + outputs: + arch: ${{ steps.arch.outputs.arch }} + dist: ${{ steps.dist.outputs.dist }} runs-on: ubuntu-22.04 - defaults: - run: - shell: sh - working-directory: /dev/shm steps: - - name: Start build container - run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=${GITHUB_REF#refs/heads/}; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/${GITHUB_REF#refs/heads/}/.build/software/squeezelite/container_build.bash")" 'DietPi-Build_Squeezelite' -a 1 -d 6 - - name: Upload package + - id: arch run: | - [ -d ~/.ssh ] || mkdir ~/.ssh - umask 377 - echo '${{ secrets.KNOWN_HOSTS }}' > ~/.ssh/known_hosts - echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_ed25519 - curl -T rootfs/squeezelite_armv6l.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}bullseye/' - curl 'https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache' -H 'Authorization: Bearer ${{ secrets.CF_TOKEN }}' -H 'Content-Type: application/json' \ - --data '{"files":["https://dietpi.com/downloads/binaries/bullseye/testing/","https://dietpi.com/downloads/binaries/bullseye/testing/squeezelite_armv6l.deb"]}' - armv6_bookworm: - if: ( github.event.inputs.arch == 1 || github.event.inputs.arch == 'all' ) && ( github.event.inputs.distro == 7 || github.event.inputs.distro == 'all' ) - runs-on: ubuntu-22.04 - defaults: - run: - shell: sh - working-directory: /dev/shm - steps: - - name: Start build container - run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=${GITHUB_REF#refs/heads/}; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/${GITHUB_REF#refs/heads/}/.build/software/squeezelite/container_build.bash")" 'DietPi-Build_Squeezelite' -a 1 -d 7 - - name: Upload package + if [ '${{ github.event.inputs.arch }}' = 'all' ] + then + echo 'arch=["armv6l", "armv7l", "aarch64", "x86_64", "riscv64"]' >> "$GITHUB_OUTPUT" + else + echo 'arch=["${{ github.event.inputs.arch }}"]' >> "$GITHUB_OUTPUT" + fi + - id: dist run: | - [ -d ~/.ssh ] || mkdir ~/.ssh - umask 377 - echo '${{ secrets.KNOWN_HOSTS }}' > ~/.ssh/known_hosts - echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_ed25519 - curl -T rootfs/squeezelite_armv6l.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}bookworm/' - curl 'https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache' -H 'Authorization: Bearer ${{ secrets.CF_TOKEN }}' -H 'Content-Type: application/json' \ - --data '{"files":["https://dietpi.com/downloads/binaries/bookworm/testing/","https://dietpi.com/downloads/binaries/bookworm/testing/squeezelite_armv6l.deb"]}' - - armv7_buster: - if: ( github.event.inputs.arch == 2 || github.event.inputs.arch == 'all' ) && ( github.event.inputs.distro == 5 || github.event.inputs.distro == 'all' ) - runs-on: ubuntu-22.04 - defaults: - run: - shell: sh - working-directory: /dev/shm - steps: - - name: Start build container - run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=${GITHUB_REF#refs/heads/}; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/${GITHUB_REF#refs/heads/}/.build/software/squeezelite/container_build.bash")" 'DietPi-Build_Squeezelite' -a 2 -d 5 - - name: Upload package - run: | - [ -d ~/.ssh ] || mkdir ~/.ssh - umask 377 - echo '${{ secrets.KNOWN_HOSTS }}' > ~/.ssh/known_hosts - echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_ed25519 - curl -T rootfs/squeezelite_armv7l.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}buster/' - curl 'https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache' -H 'Authorization: Bearer ${{ secrets.CF_TOKEN }}' -H 'Content-Type: application/json' \ - --data '{"files":["https://dietpi.com/downloads/binaries/buster/testing/","https://dietpi.com/downloads/binaries/buster/testing/squeezelite_armv7l.deb"]}' - armv7_bullseye: - if: ( github.event.inputs.arch == 2 || github.event.inputs.arch == 'all' ) && ( github.event.inputs.distro == 6 || github.event.inputs.distro == 'all' ) - runs-on: ubuntu-22.04 - defaults: - run: - shell: sh - working-directory: /dev/shm - steps: - - name: Start build container - run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=${GITHUB_REF#refs/heads/}; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/${GITHUB_REF#refs/heads/}/.build/software/squeezelite/container_build.bash")" 'DietPi-Build_Squeezelite' -a 2 -d 6 - - name: Upload package - run: | - [ -d ~/.ssh ] || mkdir ~/.ssh - umask 377 - echo '${{ secrets.KNOWN_HOSTS }}' > ~/.ssh/known_hosts - echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_ed25519 - curl -T rootfs/squeezelite_armv7l.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}bullseye/' - curl 'https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache' -H 'Authorization: Bearer ${{ secrets.CF_TOKEN }}' -H 'Content-Type: application/json' \ - --data '{"files":["https://dietpi.com/downloads/binaries/bullseye/testing/","https://dietpi.com/downloads/binaries/bullseye/testing/squeezelite_armv7l.deb"]}' - armv7_bookworm: - if: ( github.event.inputs.arch == 2 || github.event.inputs.arch == 'all' ) && ( github.event.inputs.distro == 7 || github.event.inputs.distro == 'all' ) - runs-on: ubuntu-22.04 - defaults: - run: - shell: sh - working-directory: /dev/shm - steps: - - name: Start build container - run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=${GITHUB_REF#refs/heads/}; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/${GITHUB_REF#refs/heads/}/.build/software/squeezelite/container_build.bash")" 'DietPi-Build_Squeezelite' -a 2 -d 7 - - name: Upload package - run: | - [ -d ~/.ssh ] || mkdir ~/.ssh - umask 377 - echo '${{ secrets.KNOWN_HOSTS }}' > ~/.ssh/known_hosts - echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_ed25519 - curl -T rootfs/squeezelite_armv7l.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}bookworm/' - curl 'https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache' -H 'Authorization: Bearer ${{ secrets.CF_TOKEN }}' -H 'Content-Type: application/json' \ - --data '{"files":["https://dietpi.com/downloads/binaries/bookworm/testing/","https://dietpi.com/downloads/binaries/bookworm/testing/squeezelite_armv7l.deb"]}' - - armv8_buster: - if: ( github.event.inputs.arch == 3 || github.event.inputs.arch == 'all' ) && ( github.event.inputs.distro == 5 || github.event.inputs.distro == 'all' ) - runs-on: ubuntu-22.04 - defaults: - run: - shell: sh - steps: - - name: Start build container - run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=${GITHUB_REF#refs/heads/}; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/${GITHUB_REF#refs/heads/}/.build/software/squeezelite/container_build.bash")" 'DietPi-Build_Squeezelite' -a 3 -d 5 - - name: Upload package - run: | - [ -d ~/.ssh ] || mkdir ~/.ssh - umask 377 - echo '${{ secrets.KNOWN_HOSTS }}' > ~/.ssh/known_hosts - echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_ed25519 - curl -T rootfs/squeezelite_aarch64.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}buster/' - curl 'https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache' -H 'Authorization: Bearer ${{ secrets.CF_TOKEN }}' -H 'Content-Type: application/json' \ - --data '{"files":["https://dietpi.com/downloads/binaries/buster/testing/","https://dietpi.com/downloads/binaries/buster/testing/squeezelite_aarch64.deb"]}' - armv8_bullseye: - if: ( github.event.inputs.arch == 3 || github.event.inputs.arch == 'all' ) && ( github.event.inputs.distro == 6 || github.event.inputs.distro == 'all' ) - runs-on: ubuntu-22.04 - defaults: - run: - shell: sh - steps: - - name: Start build container - run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=${GITHUB_REF#refs/heads/}; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/${GITHUB_REF#refs/heads/}/.build/software/squeezelite/container_build.bash")" 'DietPi-Build_Squeezelite' -a 3 -d 6 - - name: Upload package - run: | - [ -d ~/.ssh ] || mkdir ~/.ssh - umask 377 - echo '${{ secrets.KNOWN_HOSTS }}' > ~/.ssh/known_hosts - echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_ed25519 - curl -T rootfs/squeezelite_aarch64.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}bullseye/' - curl 'https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache' -H 'Authorization: Bearer ${{ secrets.CF_TOKEN }}' -H 'Content-Type: application/json' \ - --data '{"files":["https://dietpi.com/downloads/binaries/bullseye/testing/","https://dietpi.com/downloads/binaries/bullseye/testing/squeezelite_aarch64.deb"]}' - armv8_bookworm: - if: ( github.event.inputs.arch == 3 || github.event.inputs.arch == 'all' ) && ( github.event.inputs.distro == 7 || github.event.inputs.distro == 'all' ) + if [ '${{ github.event.inputs.dist }}' = 'all' ] + then + echo 'dist=["buster", "bullseye", "bookworm"]' >> "$GITHUB_OUTPUT" + else + echo 'dist=["${{ github.event.inputs.dist }}"]' >> "$GITHUB_OUTPUT" + fi + build: + needs: prep + strategy: + matrix: + arch: ${{ fromJson(needs.prep.outputs.arch) }} + dist: ${{ fromJson(needs.prep.outputs.dist) }} + exclude: + - { arch: riscv64, dist: buster } + - { arch: riscv64, dist: bullseye } + fail-fast: false + name: "Build: ${{ matrix.arch }} - ${{ matrix.dist }}" + # https://github.com/actions/virtual-environments runs-on: ubuntu-22.04 - defaults: - run: - shell: sh steps: - - name: Start build container - run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=${GITHUB_REF#refs/heads/}; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/${GITHUB_REF#refs/heads/}/.build/software/squeezelite/container_build.bash")" 'DietPi-Build_Squeezelite' -a 3 -d 7 - - name: Upload package + - name: Build + run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=$GITHUB_REF_NAME; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/$GITHUB_REF_NAME/.build/software/squeezelite/container_build.bash")" -- -a '${{ matrix.arch }}' -d '${{ matrix.dist }}' + - name: Upload run: | - [ -d ~/.ssh ] || mkdir ~/.ssh + # SSH server and client keys + mkdir ~/.ssh umask 377 echo '${{ secrets.KNOWN_HOSTS }}' > ~/.ssh/known_hosts echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_ed25519 - curl -T rootfs/squeezelite_aarch64.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}bookworm/' - curl 'https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache' -H 'Authorization: Bearer ${{ secrets.CF_TOKEN }}' -H 'Content-Type: application/json' \ - --data '{"files":["https://dietpi.com/downloads/binaries/bookworm/testing/","https://dietpi.com/downloads/binaries/bookworm/testing/squeezelite_aarch64.deb"]}' - x86_64_buster: - if: ( github.event.inputs.arch == 10 || github.event.inputs.arch == 'all' ) && ( github.event.inputs.distro == 5 || github.event.inputs.distro == 'all' ) - runs-on: ubuntu-22.04 - defaults: - run: - shell: sh - working-directory: /dev/shm - steps: - - name: Start build container - run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=${GITHUB_REF#refs/heads/}; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/${GITHUB_REF#refs/heads/}/.build/software/squeezelite/container_build.bash")" 'DietPi-Build_Squeezelite' -a 10 -d 5 - - name: Upload package - run: | - [ -d ~/.ssh ] || mkdir ~/.ssh - umask 377 - echo '${{ secrets.KNOWN_HOSTS }}' > ~/.ssh/known_hosts - echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_ed25519 - curl -T rootfs/squeezelite_x86_64.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}buster/' - curl 'https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache' -H 'Authorization: Bearer ${{ secrets.CF_TOKEN }}' -H 'Content-Type: application/json' \ - --data '{"files":["https://dietpi.com/downloads/binaries/buster/testing/","https://dietpi.com/downloads/binaries/buster/testing/squeezelite_x86_64.deb"]}' - x86_64_bullseye: - if: ( github.event.inputs.arch == 10 || github.event.inputs.arch == 'all' ) && ( github.event.inputs.distro == 6 || github.event.inputs.distro == 'all' ) - runs-on: ubuntu-22.04 - defaults: - run: - shell: sh - working-directory: /dev/shm - steps: - - name: Start build container - run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=${GITHUB_REF#refs/heads/}; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/${GITHUB_REF#refs/heads/}/.build/software/squeezelite/container_build.bash")" 'DietPi-Build_Squeezelite' -a 10 -d 6 - - name: Upload package - run: | - [ -d ~/.ssh ] || mkdir ~/.ssh - umask 377 - echo '${{ secrets.KNOWN_HOSTS }}' > ~/.ssh/known_hosts - echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_ed25519 - curl -T rootfs/squeezelite_x86_64.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}bullseye/' - curl 'https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache' -H 'Authorization: Bearer ${{ secrets.CF_TOKEN }}' -H 'Content-Type: application/json' \ - --data '{"files":["https://dietpi.com/downloads/binaries/bullseye/testing/","https://dietpi.com/downloads/binaries/bullseye/testing/squeezelite_x86_64.deb"]}' - x86_64_bookworm: - if: ( github.event.inputs.arch == 10 || github.event.inputs.arch == 'all' ) && ( github.event.inputs.distro == 7 || github.event.inputs.distro == 'all' ) - runs-on: ubuntu-22.04 - defaults: - run: - shell: sh - working-directory: /dev/shm - steps: - - name: Start build container - run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=${GITHUB_REF#refs/heads/}; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/${GITHUB_REF#refs/heads/}/.build/software/squeezelite/container_build.bash")" 'DietPi-Build_Squeezelite' -a 10 -d 7 - - name: Upload package - run: | - [ -d ~/.ssh ] || mkdir ~/.ssh - umask 377 - echo '${{ secrets.KNOWN_HOSTS }}' > ~/.ssh/known_hosts - echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_ed25519 - curl -T rootfs/squeezelite_x86_64.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}bookworm/' + # Upload + curl -T 'rootfs/squeezelite_${{ matrix.arch }}.deb' --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}${{ matrix.dist }}/' curl 'https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache' -H 'Authorization: Bearer ${{ secrets.CF_TOKEN }}' -H 'Content-Type: application/json' \ - --data '{"files":["https://dietpi.com/downloads/binaries/bookworm/testing/","https://dietpi.com/downloads/binaries/bookworm/testing/squeezelite_x86_64.deb"]}' + --data '{"files":["https://dietpi.com/downloads/binaries/${{ matrix.dist }}/testing/","https://dietpi.com/downloads/binaries/${{ matrix.dist }}/testing/squeezelite_${{ matrix.arch }}.deb"]}' From 92c2502eeaeee7fc756b9c8c8e9dde07198df101 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Wed, 31 May 2023 22:13:07 +0200 Subject: [PATCH 056/106] v8.18 - CI | DietPi-Software: Test Squeezelite command instead of service to at least assure that architecture flags and linked libraires work --- .github/workflows/dietpi-software.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index eeb737fc2d..3d1654e744 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -86,7 +86,7 @@ Process_Software() 32) aSERVICES[i]='ympd' aTCP[i]='1337';; 33) (( $arch == 10 )) && aSERVICES[i]='airsonic' aTCP[i]='8080' aDELAY[i]=30;; # Fails in QEMU-emulated containers, probably due to missing device access 35) aSERVICES[i]='logitechmediaserver' aTCP[i]='9000';; - #36) aSERVICES[i]='Squeezelite';; # Random high UDP port # Service exits if no audio device has been found, which does not exist on GitHub Actions runners, respectively within the containers + 36) aCOMMANDS[i]='squeezelite -t';; # Service listens on random high UDP port and exits if no audio device has been found, which does not exist on GitHub Actions runners, respectively within the containers 37) aSERVICES[i]='shairport-sync' aTCP[i]='5000';; # AirPlay 2 would be TCP port 7000 39) aSERVICES[i]='minidlna' aTCP[i]='8200';; 41) aSERVICES[i]='emby-server' aTCP[i]='8096';; From d75e1d7c20e85fd220ee81bc518d859031893ca6 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Wed, 31 May 2023 22:19:42 +0200 Subject: [PATCH 057/106] v8.18 - CI | DietPi-Software: Give Cuberite more time to start on emulated containers --- .github/workflows/dietpi-software.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 3d1654e744..ddf2e215ae 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -98,7 +98,7 @@ Process_Software() 49) aSERVICES[i]='gogs' aTCP[i]='3000';; 50) aSERVICES[i]='syncthing' aTCP[i]='8384';; 51) aCOMMANDS[i]='/usr/games/opentyrian/opentyrian -h';; - 52) aSERVICES[i]='cuberite' aTCP[i]='1339';; + 52) aSERVICES[i]='cuberite' aTCP[i]='1339'; (( $arch < 10 )) && aDELAY[i]=30;; 53) aSERVICES[i]='mineos' aTCP[i]='8443';; 58) aSERVICES[i]='tailscale';; # aUDP[i]='????';; 59) aSERVICES[i]='raspimjpeg';; From 5809033e52c3dd2c1c202f7f927beebb2f5a2810 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Wed, 31 May 2023 22:57:41 +0200 Subject: [PATCH 058/106] v8.18 - DietPi-Software | Tailscale: Fix handled service name. Visual issue only since the service is enabled and started during package install. Also fix this + add UDP port check to test install workflow. --- .github/workflows/dietpi-software.bash | 2 +- dietpi/dietpi-software | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index ddf2e215ae..96cc4ca22e 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -100,7 +100,7 @@ Process_Software() 51) aCOMMANDS[i]='/usr/games/opentyrian/opentyrian -h';; 52) aSERVICES[i]='cuberite' aTCP[i]='1339'; (( $arch < 10 )) && aDELAY[i]=30;; 53) aSERVICES[i]='mineos' aTCP[i]='8443';; - 58) aSERVICES[i]='tailscale';; # aUDP[i]='????';; + 58) aSERVICES[i]='tailscaled' aUDP[i]='41641';; 59) aSERVICES[i]='raspimjpeg';; #60) aUDP[i]='53 68';; Cannot be installed in CI since a WiFi interface is required #61) aSERVICES[i]='tor' aUDP[i]='9040';; Cannot be installed in CI since a WiFi interface is required diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index ea554f52a7..4016826bb3 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -7660,7 +7660,7 @@ _EOF_ G_EXEC chown www-data "$fp_install/ampache/config/ampache.cfg.php" fi - if To_Install 58 tailscale # Tailscale + if To_Install 58 tailscaled # Tailscale then # APT key G_EXEC curl -sSfL "https://pkgs.tailscale.com/stable/debian/$G_DISTRO_NAME.noarmor.gpg" -o /etc/apt/trusted.gpg.d/dietpi-tailscale.gpg @@ -13214,7 +13214,7 @@ If no WireGuard (auto)start is included, but you require it, please do the follo if To_Uninstall 58 # Tailscale then G_AGP tailscale - [[ -d '/etc/systemd/system/tailscale.service.d' ]] && G_EXEC rm -R /etc/systemd/system/tailscale.service.d + [[ -d '/etc/systemd/system/tailscaled.service.d' ]] && G_EXEC rm -R /etc/systemd/system/tailscaled.service.d [[ -d '/var/lib/tailscale' ]] && G_EXEC rm -R /var/lib/tailscale [[ -f '/etc/sysctl.d/dietpi-tailscale.conf' ]] && G_EXEC rm /etc/sysctl.d/dietpi-tailscale.conf [[ -f '/etc/apt/sources.list.d/dietpi-tailscale.list' ]] && G_EXEC rm /etc/apt/sources.list.d/dietpi-tailscale.list From 8bcf6f53eebded8c62acd741fd5fe94080f4cb57 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Wed, 31 May 2023 23:41:05 +0200 Subject: [PATCH 059/106] v8.18 - CI | DietPi-Software: Increase Cuberite service startup time. It took more than 6 minutes on a local test, let's hope the GitHub runners are faster. - CI | DietPi-Software: Try to enable tun kernel module for Tailscale and OpenVPN installs --- .github/workflows/dietpi-software.bash | 2 +- .github/workflows/dietpi-software.yml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 96cc4ca22e..0918d7c593 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -98,7 +98,7 @@ Process_Software() 49) aSERVICES[i]='gogs' aTCP[i]='3000';; 50) aSERVICES[i]='syncthing' aTCP[i]='8384';; 51) aCOMMANDS[i]='/usr/games/opentyrian/opentyrian -h';; - 52) aSERVICES[i]='cuberite' aTCP[i]='1339'; (( $arch < 10 )) && aDELAY[i]=30;; + 52) aSERVICES[i]='cuberite' aTCP[i]='1339'; (( $arch < 10 )) && aDELAY[i]=120;; 53) aSERVICES[i]='mineos' aTCP[i]='8443';; 58) aSERVICES[i]='tailscaled' aUDP[i]='41641';; 59) aSERVICES[i]='raspimjpeg';; diff --git a/.github/workflows/dietpi-software.yml b/.github/workflows/dietpi-software.yml index 853a382e5d..16debe9ebc 100644 --- a/.github/workflows/dietpi-software.yml +++ b/.github/workflows/dietpi-software.yml @@ -77,4 +77,5 @@ jobs: branch='${{ github.event.inputs.branch }}' [ $branch ] || branch=$GITHUB_REF_NAME sudo systemctl stop ssh mono-xsp4 + echo '${{ github.event.inputs.soft }}' | grep -Eq '(^| )(52|97)( |$)' && sudo modprobe tun sudo bash -c "G_GITOWNER=$owner G_GITBRANCH=$branch; $(curl -sSf "https://raw.githubusercontent.com/$owner/DietPi/$branch/.github/workflows/dietpi-software.bash")" -- -a '${{ matrix.arch }}' -d '${{ matrix.dist }}' -s '${{ github.event.inputs.soft }}' -rpi '${{ github.event.inputs.rpi }}' From 1ae766199c8d5831bf289c3f2286a96378b3b0c6 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Wed, 31 May 2023 23:42:20 +0200 Subject: [PATCH 060/106] v8.18 - CI | DietPi-Software: Fix Tailscale software ID --- .github/workflows/dietpi-software.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.yml b/.github/workflows/dietpi-software.yml index 16debe9ebc..1d4c69a900 100644 --- a/.github/workflows/dietpi-software.yml +++ b/.github/workflows/dietpi-software.yml @@ -77,5 +77,5 @@ jobs: branch='${{ github.event.inputs.branch }}' [ $branch ] || branch=$GITHUB_REF_NAME sudo systemctl stop ssh mono-xsp4 - echo '${{ github.event.inputs.soft }}' | grep -Eq '(^| )(52|97)( |$)' && sudo modprobe tun + echo '${{ github.event.inputs.soft }}' | grep -Eq '(^| )(58|97)( |$)' && sudo modprobe tun sudo bash -c "G_GITOWNER=$owner G_GITBRANCH=$branch; $(curl -sSf "https://raw.githubusercontent.com/$owner/DietPi/$branch/.github/workflows/dietpi-software.bash")" -- -a '${{ matrix.arch }}' -d '${{ matrix.dist }}' -s '${{ github.event.inputs.soft }}' -rpi '${{ github.event.inputs.rpi }}' From 751d96361d1da2e3b87d5f6f7407a687e933e315 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Thu, 1 Jun 2023 00:21:48 +0200 Subject: [PATCH 061/106] v8.18 - CI | DietPI-Software: Disable Tailscale service check since GitHub Action runners seem to not support the TUN driver, instead test the CLI only --- .github/workflows/dietpi-software.bash | 2 +- .github/workflows/dietpi-software.yml | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 0918d7c593..0f96ace0c7 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -100,7 +100,7 @@ Process_Software() 51) aCOMMANDS[i]='/usr/games/opentyrian/opentyrian -h';; 52) aSERVICES[i]='cuberite' aTCP[i]='1339'; (( $arch < 10 )) && aDELAY[i]=120;; 53) aSERVICES[i]='mineos' aTCP[i]='8443';; - 58) aSERVICES[i]='tailscaled' aUDP[i]='41641';; + 58) aCOMMANDS[i]='tailscale version' # aSERVICES[i]='tailscaled' aUDP[i]='41641';; GitHub Action runners to not support the TUN module 59) aSERVICES[i]='raspimjpeg';; #60) aUDP[i]='53 68';; Cannot be installed in CI since a WiFi interface is required #61) aSERVICES[i]='tor' aUDP[i]='9040';; Cannot be installed in CI since a WiFi interface is required diff --git a/.github/workflows/dietpi-software.yml b/.github/workflows/dietpi-software.yml index 1d4c69a900..853a382e5d 100644 --- a/.github/workflows/dietpi-software.yml +++ b/.github/workflows/dietpi-software.yml @@ -77,5 +77,4 @@ jobs: branch='${{ github.event.inputs.branch }}' [ $branch ] || branch=$GITHUB_REF_NAME sudo systemctl stop ssh mono-xsp4 - echo '${{ github.event.inputs.soft }}' | grep -Eq '(^| )(58|97)( |$)' && sudo modprobe tun sudo bash -c "G_GITOWNER=$owner G_GITBRANCH=$branch; $(curl -sSf "https://raw.githubusercontent.com/$owner/DietPi/$branch/.github/workflows/dietpi-software.bash")" -- -a '${{ matrix.arch }}' -d '${{ matrix.dist }}' -s '${{ github.event.inputs.soft }}' -rpi '${{ github.event.inputs.rpi }}' From f31655f7067297deaffa4c56086b5c862f5a75a5 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Thu, 1 Jun 2023 00:25:09 +0200 Subject: [PATCH 062/106] v8.18 - CI | DietPi-Software: Syntax --- .github/workflows/dietpi-software.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 0f96ace0c7..0d918f4a06 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -100,7 +100,7 @@ Process_Software() 51) aCOMMANDS[i]='/usr/games/opentyrian/opentyrian -h';; 52) aSERVICES[i]='cuberite' aTCP[i]='1339'; (( $arch < 10 )) && aDELAY[i]=120;; 53) aSERVICES[i]='mineos' aTCP[i]='8443';; - 58) aCOMMANDS[i]='tailscale version' # aSERVICES[i]='tailscaled' aUDP[i]='41641';; GitHub Action runners to not support the TUN module + 58) aCOMMANDS[i]='tailscale version';; # aSERVICES[i]='tailscaled' aUDP[i]='41641' GitHub Action runners to not support the TUN module 59) aSERVICES[i]='raspimjpeg';; #60) aUDP[i]='53 68';; Cannot be installed in CI since a WiFi interface is required #61) aSERVICES[i]='tor' aUDP[i]='9040';; Cannot be installed in CI since a WiFi interface is required From 6d589b819196bf4739612189bb2cd789a4ab8a6e Mon Sep 17 00:00:00 2001 From: MichaIng Date: Thu, 1 Jun 2023 00:31:39 +0200 Subject: [PATCH 063/106] v8.18 - CI | DietPi-Software: Add Box86 and Box64 command tests --- .github/workflows/dietpi-software.bash | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 0d918f4a06..d88ba7da4b 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -104,6 +104,7 @@ Process_Software() 59) aSERVICES[i]='raspimjpeg';; #60) aUDP[i]='53 68';; Cannot be installed in CI since a WiFi interface is required #61) aSERVICES[i]='tor' aUDP[i]='9040';; Cannot be installed in CI since a WiFi interface is required + 62) aCOMMANDS[i]='box86 -v';; 65) aSERVICES[i]='netdata' aTCP[i]='19999';; 66) aSERVICES[i]='rpimonitor' aTCP[i]='8888';; 71) aSERVICES[i]='webiopi' aTCP[i]='8002';; @@ -194,6 +195,7 @@ Process_Software() #192) aSERVICES[i]='snapclient';; # cannot be installed non-interactively 194) aSERVICES[i]='postgresql';; 196) aCOMMANDS[i]='java -version';; + 197) aCOMMANDS[i]='box64 -v';; 198) aSERVICES[i]='filebrowser' aTCP[i]='8084';; 199) aSERVICES[i]='spotifyd';; # aTCP[i]='4079';; ??? 200) aSERVICES[i]='dietpi-dashboard' aTCP[i]='5252';; From f7df163ecb4d33c1824299e50fb9d36168a11abf Mon Sep 17 00:00:00 2001 From: MichaIng Date: Thu, 1 Jun 2023 00:39:58 +0200 Subject: [PATCH 064/106] v8.18 - DietPi-Software | RPi Cam Web Interface: Exit service with error if any startup command fails --- .conf/dps_59/raspimjpeg.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.conf/dps_59/raspimjpeg.sh b/.conf/dps_59/raspimjpeg.sh index 3f2cea2948..fcfdf06a94 100644 --- a/.conf/dps_59/raspimjpeg.sh +++ b/.conf/dps_59/raspimjpeg.sh @@ -1,4 +1,4 @@ -#!/bin/dash +#!/bin/dash -e { #//////////////////////////////////// # DietPi Raspimjpeg control Script From 133f17d30604589fd4c9c95adf764cd51587308c Mon Sep 17 00:00:00 2001 From: MichaIng Date: Thu, 1 Jun 2023 01:05:48 +0200 Subject: [PATCH 065/106] v8.18 - DietPi-Software | RPi Cam Web Interface: Bookworm since gpac/MP4Box is currently not available: https://packages.debian.org/gpac. Also whether the raspimjpeg binary actually works on Bookworm is questionable + modern RPi camera modules (3) seems to be not supported and no commit for 1 year --- dietpi/dietpi-software | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index 4016826bb3..554ed41460 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -1056,6 +1056,8 @@ Available commands: (( $G_HW_MODEL > 9 )) && aSOFTWARE_AVAIL_G_HW_MODEL[$software_id,$G_HW_MODEL]=0 # - ARMv8: https://github.com/silvanmelchior/RPi_Cam_Web_Interface/tree/master/bin aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,3]=0 + # - Bookworm since gpac/MP4Box is currently not available: https://packages.debian.org/gpac + aSOFTWARE_AVAIL_G_DISTRO[$software_id,7]=0 #------------------ software_id=136 aSOFTWARE_NAME[$software_id]='motionEye' From 0f7d0f082475e7fa020147ac1ea28d665990c7ea Mon Sep 17 00:00:00 2001 From: MichaIng Date: Thu, 1 Jun 2023 20:24:59 +0200 Subject: [PATCH 066/106] v8.18 - CI | DietPi-Software: Add Firefox test command and Remote.It service with UDP port --- .github/workflows/dietpi-software.bash | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index d88ba7da4b..a6519d1111 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -107,6 +107,8 @@ Process_Software() 62) aCOMMANDS[i]='box86 -v';; 65) aSERVICES[i]='netdata' aTCP[i]='19999';; 66) aSERVICES[i]='rpimonitor' aTCP[i]='8888';; + 67) aCOMMANDS[i]='firefox-esr -v';; + 68) aSERVICES[i]='schannel' aUDP[i]='5980';; # remoteit@.service service listens on random high UDP port 71) aSERVICES[i]='webiopi' aTCP[i]='8002';; 73) aSERVICES[i]='fail2ban';; 74) aSERVICES[i]='influxdb' aTCP[i]='8086 8088';; From 2c72095db2511ba07966d05530c44b1d81a91d33 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Thu, 1 Jun 2023 20:34:50 +0200 Subject: [PATCH 067/106] v8.18 - CI | DietPi-Software: Add WiringPi test command --- .github/workflows/dietpi-software.bash | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index a6519d1111..6c2411c798 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -109,6 +109,7 @@ Process_Software() 66) aSERVICES[i]='rpimonitor' aTCP[i]='8888';; 67) aCOMMANDS[i]='firefox-esr -v';; 68) aSERVICES[i]='schannel' aUDP[i]='5980';; # remoteit@.service service listens on random high UDP port + 70) aCOMMANDS[i]='gpio -v';; 71) aSERVICES[i]='webiopi' aTCP[i]='8002';; 73) aSERVICES[i]='fail2ban';; 74) aSERVICES[i]='influxdb' aTCP[i]='8086 8088';; From b0bc3add7f500bc1bfa38a46aabe75ba54b83c8c Mon Sep 17 00:00:00 2001 From: MichaIng Date: Thu, 1 Jun 2023 21:29:39 +0200 Subject: [PATCH 068/106] v8.18 - CI | DietPi-Software: Fix WiringPi test command as it returns an error code when no RPi revision code can be found in /proc/cpuinfo --- .github/workflows/dietpi-software.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 6c2411c798..c17c932f54 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -109,7 +109,7 @@ Process_Software() 66) aSERVICES[i]='rpimonitor' aTCP[i]='8888';; 67) aCOMMANDS[i]='firefox-esr -v';; 68) aSERVICES[i]='schannel' aUDP[i]='5980';; # remoteit@.service service listens on random high UDP port - 70) aCOMMANDS[i]='gpio -v';; + 70) aCOMMANDS[i]='gpio -v | grep '\''gpio version'\';; 71) aSERVICES[i]='webiopi' aTCP[i]='8002';; 73) aSERVICES[i]='fail2ban';; 74) aSERVICES[i]='influxdb' aTCP[i]='8086 8088';; From a2bcfd5543fd5bf34327d6054134d4e5ae03ae91 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Thu, 1 Jun 2023 21:59:43 +0200 Subject: [PATCH 069/106] v8.18 - DietPi-Software | Disable Docker and all Docker dependants on RISC-V, since the Docker APT repo does not ship packages for this architecture yet --- dietpi/dietpi-software | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index 554ed41460..a71b00b243 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -559,6 +559,8 @@ Available commands: aSOFTWARE_DEPS[$software_id]='162' # - ARMv6 aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,1]=0 + # - RISC-V: Missing Docker package: https://download.docker.com/linux/debian/dists/ + aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0 #------------------ software_id=178 aSOFTWARE_NAME[$software_id]='Jellyfin' @@ -1113,6 +1115,8 @@ Available commands: aSOFTWARE_DESC[$software_id]='Build, ship, and run distributed applications' aSOFTWARE_CATX[$software_id]=8 aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/programming/#docker' + # - RISC-V: Missing package: https://download.docker.com/linux/debian/dists/ + aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0 #------------------ software_id=185 aSOFTWARE_NAME[$software_id]='Portainer' @@ -1122,6 +1126,8 @@ Available commands: aSOFTWARE_DEPS[$software_id]='162' # - ARMv6: https://dietpi.com/forum/t/armv6-bookworm-software-test-matrix-question/16380/11 aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,1]=0 + # - RISC-V: Missing Docker package: https://download.docker.com/linux/debian/dists/ + aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0 #------------------ software_id=134 aSOFTWARE_NAME[$software_id]='Docker Compose' @@ -1129,6 +1135,8 @@ Available commands: aSOFTWARE_CATX[$software_id]=8 aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/programming/#docker-compose' aSOFTWARE_DEPS[$software_id]='162' + # - RISC-V: Missing Docker package: https://download.docker.com/linux/debian/dists/ + aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0 #------------------ software_id=193 aSOFTWARE_NAME[$software_id]='K3s' From 3315289ce260f08aeafcb8ce59eb762f70b0b17a Mon Sep 17 00:00:00 2001 From: MichaIng Date: Thu, 1 Jun 2023 22:03:26 +0200 Subject: [PATCH 070/106] v8.18 - CI | DietPi-Software: Increase Grafana service start wait time to 30 seconds for ARM, as 10 seconds is not sufficient on emulated container --- .github/workflows/dietpi-software.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index c17c932f54..3331ef8c35 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -113,7 +113,7 @@ Process_Software() 71) aSERVICES[i]='webiopi' aTCP[i]='8002';; 73) aSERVICES[i]='fail2ban';; 74) aSERVICES[i]='influxdb' aTCP[i]='8086 8088';; - 77) aSERVICES[i]='grafana-server' aTCP[i]='3001';; + 77) aSERVICES[i]='grafana-server' aTCP[i]='3001'; (( $arch < 10 )) && aDELAY[i]=30;; 80) aSERVICES[i]='ubooquity' aTCP[i]='2038 2039';; 83) aSERVICES[i]='apache2' aTCP[i]='80';; 84) aSERVICES[i]='lighttpd' aTCP[i]='80';; From 5f52da22bae1da765314079ae1aac8adcf299e35 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Thu, 1 Jun 2023 22:13:47 +0200 Subject: [PATCH 071/106] v8.18 - DietPi-Software | MicroK8s: Disable on RISC-V as Debian does not provide snapd packages for this architecture: https://packages.debian.org/sid/snapd --- dietpi/dietpi-software | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index a71b00b243..a4199cf896 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -1149,6 +1149,8 @@ Available commands: aSOFTWARE_DESC[$software_id]='The simplest production-grade upstream K8s, light and focused' aSOFTWARE_CATX[$software_id]=8 aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/cloud/#microk8s' + # - RISC-V: Missing package: https://packages.debian.org/sid/snapd + aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0 #------------------ software_id=200 aSOFTWARE_NAME[$software_id]='DietPi-Dashboard' From a02120f46e9a10e6de62095067997e04b80fd461 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Thu, 1 Jun 2023 22:55:56 +0200 Subject: [PATCH 072/106] v8.18 - CI | DietPi-Software: Remove Roon Extension Manager and Portainer from test installs as Docker cannot start in systemd containers. Keep testing Docker install but do not test for the service afterwards. Instead test the CLI only. --- .github/workflows/dietpi-software.bash | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 3331ef8c35..6d5762a2c9 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -61,6 +61,8 @@ esac # Workaround for "Could not execute systemctl: at /usr/bin/deb-systemd-invoke line 145." during Apache2 DEB postinst in 32-bit ARM Bookworm container: https://lists.ubuntu.com/archives/foundations-bugs/2022-January/467253.html [[ $SOFTWARE =~ (^| )83( |$) && $DISTRO == 'bookworm' ]] && (( $arch < 3 )) && { echo '[ WARN ] Installing Lighttpd instead of Apache due to a bug in 32-bit ARM containers'; SOFTWARE=$(sed -E 's/(^| )83( |$)/\184\2/g' <<< "$SOFTWARE"); } +# Remove Roon Extension Manager and Portainer from test installs as Docker cannot start in systemd containers +[[ $SOFTWARE =~ (^| )(86|185)( |$) ]] && { echo '[ WARN ] Removing Roon Extension Manager and Portainer from test installs as Docker cannot start in systemd containers'; SOFTWARE=$(sed -E 's/(^| )(86|186)( |$)/\1\2/g' <<< "$SOFTWARE"); } ########################################## # Create service and port lists @@ -114,11 +116,11 @@ Process_Software() 73) aSERVICES[i]='fail2ban';; 74) aSERVICES[i]='influxdb' aTCP[i]='8086 8088';; 77) aSERVICES[i]='grafana-server' aTCP[i]='3001'; (( $arch < 10 )) && aDELAY[i]=30;; - 80) aSERVICES[i]='ubooquity' aTCP[i]='2038 2039';; + 80) aSERVICES[i]='ubooquity' aTCP[i]='2038 2039'; (( $arch == 10 )) || aDELAY[i]=30;; 83) aSERVICES[i]='apache2' aTCP[i]='80';; 84) aSERVICES[i]='lighttpd' aTCP[i]='80';; 85) aSERVICES[i]='nginx' aTCP[i]='80';; - 86) aSERVICES[i]='roon-extension-manager';; + #86) aSERVICES[i]='roon-extension-manager';; # Docker does not start in systemd containers (without dedicated network) 88) aSERVICES[i]='mariadb' aTCP[i]='3306';; 89) case $DISTRO in 'buster') aSERVICES[i]='php7.3-fpm';; 'bullseye') aSERVICES[i]='php7.4-fpm';; *) aSERVICES[i]='php8.2-fpm';; esac;; 91) aSERVICES[i]='redis-server' aTCP[i]='6379';; @@ -173,7 +175,7 @@ Process_Software() 157) aSERVICES[i]='home-assistant' aTCP[i]='8123';; 158) aSERVICES[i]='minio' aTCP[i]='9000';; # ToDo: Solve port conflict with LMS 161) aSERVICES[i]='bdd' aTCP[i]='80 443';; - 162) aSERVICES[i]='docker';; + 162) aCOMMANDS[i]='docker -v';; # aSERVICES[i]='docker' # Docker does not start in systemd containers (without dedicated network) 163) aSERVICES[i]='gmediarender';; # DLNA => UPnP high range of ports 164) aSERVICES[i]='nukkit' aUDP[i]='19132';; 165) aSERVICES[i]='gitea' aTCP[i]='3000';; @@ -191,7 +193,7 @@ Process_Software() 182) aSERVICES[i]='unbound' aUDP[i]='53'; [[ ${aSERVICES[126]} ]] && aUDP[i]+=' 5353';; # Uses port 5353 if Pi-hole or AdGuard Home is installed, but those do listen on port 53 instead 183) aSERVICES[i]='vaultwarden' aTCP[i]='8001';; #184) aSERVICES[i]='tor' aTCP[i]='443 9051';; # Cannot be installed non-interactively, ports can be chosen and depend on chosen relay type - 185) aSERVICES[i]='docker' aTCP[i]='9002';; + #185) aTCP[i]='9002';; # Docker does not start in systemd containers (without dedicated network) 186) aSERVICES[i]='ipfs' aTCP[i]='5003 8087';; 187) aSERVICES[i]='cups' aTCP[i]='631';; 191) aSERVICES[i]='snapserver' aTCP[i]='1780';; @@ -225,6 +227,7 @@ do 49|165) Process_Software 88;; #61) Process_Software 60;; # Cannot be installed in CI 125) Process_Software 194;; + #86|185) Process_Software 162;; # Docker does not start in systemd containers (without dedicated network) *) :;; esac Process_Software "$i" @@ -327,7 +330,7 @@ fi G_EXEC sed -i '/# Start DietPi-Software/a\sed -i '\''/# Custom 1st run script/a\\for i in "${aSTART_SERVICES[@]}"; do G_EXEC_NOHALT=1 G_EXEC systemctl start "$i"; done'\'' /boot/dietpi/dietpi-software' rootfs/boot/dietpi/dietpi-login delay=10 for i in "${aDELAY[@]}"; do (( $i > $delay )) && delay=$i; done -G_EXEC eval "echo -e '#!/bin/dash\nexit_code=0; /boot/dietpi/dietpi-services start || exit_code=1; sleep $delay' > rootfs/boot/Automation_Custom_Script.sh" +G_EXEC eval "echo -e '#!/bin/dash\nexit_code=0; /boot/dietpi/dietpi-services start || exit_code=1; echo Waiting $delay seconds for service starts; sleep $delay' > rootfs/boot/Automation_Custom_Script.sh" # - Loop through software IDs to test printf '%s\n' "${!aSERVICES[@]}" "${!aTCP[@]}" "${!aUDP[@]}" "${!aCOMMANDS[@]}" | sort -u | while read -r i do From 378ef32d602803a7ecdef50e35b7e6efbf12e081 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Thu, 1 Jun 2023 23:45:34 +0200 Subject: [PATCH 073/106] v8.18 (#6405) - DietPi-Software | Domoticz: Resolved an issue where the service start failed because the new version of Domoticz depends on the GnuTLS variant of libcurl instead of the OpenSSL one. Many thanks to @IgrekLg for reporting this issue: https://github.com/MichaIng/DietPi/issues/6404 --- CHANGELOG.txt | 1 + dietpi/dietpi-software | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index ef5b8bf33b..75a7a18a42 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -12,6 +12,7 @@ Bug fixes: - DietPi-DDNS | Resolved an issue where the IP sync failed because the API URL changed recently. Many thanks to @ma651851384 for implementing the update: https://github.com/MichaIng/DietPi/pull/6375 - DietPi-Software | Restic: Resolved an issue where Restic was installed without executable flag. Many thanks to @lima1 for reporting this issue: https://github.com/MichaIng/DietPi/pull/6350#issuecomment-1537656560 - DietPi-Software | Domoticz: Resolved an issue where the installation failed when trying to unpack the tarball. Many thanks to @mcnahum for reporting this issue: https://github.com/MichaIng/DietPi/issues/6369 +- DietPi-Software | Domoticz: Resolved an issue where the service start failed because the new version of Domoticz depends on the GnuTLS variant of libcurl instead of the OpenSSL one. Many thanks to @IgrekLg for reporting this issue: https://github.com/MichaIng/DietPi/issues/6404 - DietPi-Software | motionEye: Resolved an issue where the installation failed on ARMv6, ARMv7 and RISC-V Bookworm systems due to missing build dependencies. Many thanks to @magicfoxt-magicfox for reporting this issue: https://github.com/MichaIng/DietPi/issues/6333 - DietPi-Software | LXQt: Resolved an issue on Bookworm systems where the install failed since configs were missing. - DietPi-Software | TigerVNC: Resolved an issue on Bookworm systems where the VNC password was not set as expected since the tigervncpasswd command became a dedicated DEB package "tigervnc-tools". diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index a4199cf896..822d6df2ea 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -1521,7 +1521,7 @@ Available commands: aSOFTWARE_DESC[$software_id]='Open source home automation platform' aSOFTWARE_CATX[$software_id]=17 aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/home_automation/#domoticz' - # - Bookworm: No libssl3 support: https://github.com/domoticz/domoticz/issues/5233 + # - Bookworm: No libssl3 support: https://github.com/domoticz/domoticz/issues/5233, https://github.com/MichaIng/DietPi/issues/6404 aSOFTWARE_AVAIL_G_DISTRO[$software_id,7]=0 #------------------ software_id=27 @@ -11569,7 +11569,7 @@ _EOF_ if To_Install 140 domoticz # Domoticz then # APT deps - aDEPS=('libusb-0.1-4') + aDEPS=('libusb-0.1-4' 'libcurl3-gnutls') # https://github.com/MichaIng/DietPi/issues/6404 Download_Install "https://releases.domoticz.com/releases/release/domoticz_linux_${G_HW_ARCH_NAME/armv6l/armv7l}.tgz" ./domoticz # Reinstall: Clean old install dir From 4ee5e6afddadaed4846e23cab7547ac4e78ee130 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Thu, 1 Jun 2023 23:48:51 +0200 Subject: [PATCH 074/106] v8.18 - DietPi-Software | Emby: Update fallback URL --- dietpi/dietpi-software | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index 822d6df2ea..16b55c093a 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -8294,7 +8294,7 @@ location = /.well-known/caldav { return 301 /baikal/html/dav.php; }' > /etc/ngi *) local arch='amd64';; esac - local fallback_url="https://github.com/MediaBrowser/Emby.Releases/releases/download/4.7.11.0/emby-server-deb_4.7.11.0_$arch.deb" + local fallback_url="https://github.com/MediaBrowser/Emby.Releases/releases/download/4.7.13.0/emby-server-deb_4.7.13.0_$arch.deb" Download_Install "$(curl -sSfL 'https://api.github.com/repos/MediaBrowser/Emby.Releases/releases/latest' | mawk -F\" "/^ *\"browser_download_url\": .*\/emby-server-deb_[^\"\/]*_$arch\.deb\"$/{print \$4}")" G_EXEC systemctl stop emby-server From 53f378ee5d57a01d55838da84f6dcd6de609f7dc Mon Sep 17 00:00:00 2001 From: MichaIng Date: Thu, 1 Jun 2023 23:53:16 +0200 Subject: [PATCH 075/106] v8.18 - CI | DietPi-Software: Remove Roon Extension Manager and Portainer correctly from install requests --- .github/workflows/dietpi-software.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 6d5762a2c9..35883db7ec 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -62,7 +62,7 @@ esac # Workaround for "Could not execute systemctl: at /usr/bin/deb-systemd-invoke line 145." during Apache2 DEB postinst in 32-bit ARM Bookworm container: https://lists.ubuntu.com/archives/foundations-bugs/2022-January/467253.html [[ $SOFTWARE =~ (^| )83( |$) && $DISTRO == 'bookworm' ]] && (( $arch < 3 )) && { echo '[ WARN ] Installing Lighttpd instead of Apache due to a bug in 32-bit ARM containers'; SOFTWARE=$(sed -E 's/(^| )83( |$)/\184\2/g' <<< "$SOFTWARE"); } # Remove Roon Extension Manager and Portainer from test installs as Docker cannot start in systemd containers -[[ $SOFTWARE =~ (^| )(86|185)( |$) ]] && { echo '[ WARN ] Removing Roon Extension Manager and Portainer from test installs as Docker cannot start in systemd containers'; SOFTWARE=$(sed -E 's/(^| )(86|186)( |$)/\1\2/g' <<< "$SOFTWARE"); } +[[ $SOFTWARE =~ (^| )(86|185)( |$) ]] && { echo '[ WARN ] Removing Roon Extension Manager and Portainer from test installs as Docker cannot start in systemd containers'; SOFTWARE=$(sed -E 's/(^| )(86|186)( |$)/\1\3/g' <<< "$SOFTWARE"); } ########################################## # Create service and port lists From 175fd6154788ac82645e9318763f8e35b1d3aaca Mon Sep 17 00:00:00 2001 From: MichaIng Date: Fri, 2 Jun 2023 17:22:18 +0200 Subject: [PATCH 076/106] v8.18 - RC up and set release PR URL in changelog --- .update/version | 2 +- CHANGELOG.txt | 2 +- dietpi/func/dietpi-globals | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.update/version b/.update/version index bd0c332c83..3e0e3a6447 100644 --- a/.update/version +++ b/.update/version @@ -3,7 +3,7 @@ # Available DietPi version G_REMOTE_VERSION_CORE=8 G_REMOTE_VERSION_SUB=18 -G_REMOTE_VERSION_RC=0 +G_REMOTE_VERSION_RC=1 # Minimum DietPi version to allow update G_MIN_VERSION_CORE=6 G_MIN_VERSION_SUB=14 diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 75a7a18a42..d1d163b169 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -18,7 +18,7 @@ Bug fixes: - DietPi-Software | TigerVNC: Resolved an issue on Bookworm systems where the VNC password was not set as expected since the tigervncpasswd command became a dedicated DEB package "tigervnc-tools". - DietPi-Software | Deluge: Resolved an issue on Bookworm systems where the install failed when trying to alter the service user. -As always, many smaller code performance and stability improvements, visual and spelling fixes have been done, too much to list all of them here. Check out all code changes of this release on GitHub: https://github.com/MichaIng/DietPi/pull/XXXX +As always, many smaller code performance and stability improvements, visual and spelling fixes have been done, too much to list all of them here. Check out all code changes of this release on GitHub: https://github.com/MichaIng/DietPi/pull/6406 ----------------------------------------------------------------------------------------------------------- diff --git a/dietpi/func/dietpi-globals b/dietpi/func/dietpi-globals index f344fea13f..be1066b4b0 100644 --- a/dietpi/func/dietpi-globals +++ b/dietpi/func/dietpi-globals @@ -59,7 +59,7 @@ # - Assign defaults/code version as fallback [[ $G_DIETPI_VERSION_CORE ]] || G_DIETPI_VERSION_CORE=8 [[ $G_DIETPI_VERSION_SUB ]] || G_DIETPI_VERSION_SUB=18 - [[ $G_DIETPI_VERSION_RC ]] || G_DIETPI_VERSION_RC=0 + [[ $G_DIETPI_VERSION_RC ]] || G_DIETPI_VERSION_RC=1 [[ $G_GITBRANCH ]] || G_GITBRANCH='master' [[ $G_GITOWNER ]] || G_GITOWNER='MichaIng' # - Save current version and Git branch From 9a0962b7415187bbecc239e63428c27a22573c28 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sat, 3 Jun 2023 17:20:15 +0200 Subject: [PATCH 077/106] v8.18 - CI | DietPi-Software: Increase Grafana service startup time in emulated containers --- .github/workflows/dietpi-software.bash | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 35883db7ec..1a57feea1c 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -115,7 +115,7 @@ Process_Software() 71) aSERVICES[i]='webiopi' aTCP[i]='8002';; 73) aSERVICES[i]='fail2ban';; 74) aSERVICES[i]='influxdb' aTCP[i]='8086 8088';; - 77) aSERVICES[i]='grafana-server' aTCP[i]='3001'; (( $arch < 10 )) && aDELAY[i]=30;; + 77) aSERVICES[i]='grafana-server' aTCP[i]='3001'; (( $arch < 10 )) && aDELAY[i]=60;; 80) aSERVICES[i]='ubooquity' aTCP[i]='2038 2039'; (( $arch == 10 )) || aDELAY[i]=30;; 83) aSERVICES[i]='apache2' aTCP[i]='80';; 84) aSERVICES[i]='lighttpd' aTCP[i]='80';; @@ -348,19 +348,19 @@ _EOF_ # Check TCP ports [[ ${aTCP[i]} ]] && for j in ${aTCP[i]}; do cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh echo '\e[33m[ INFO ] Checking TCP port $j status:\e[0m' -ss -tlpn | grep ':${j}[[:blank:]]' || exit_code=1 +ss -tlpn | grep ':${j}[[:blank:]]' 2> /dev/null || { echo '[FAILED] Port not active'; exit_code=1; } _EOF_ done # Check UDP ports [[ ${aUDP[i]} ]] && for j in ${aUDP[i]}; do cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh echo '\e[33m[ INFO ] Checking UDP port $j status:\e[0m' -ss -ulpn | grep ':${j}[[:blank:]]' || exit_code=1 +ss -ulpn | grep ':${j}[[:blank:]]' 2> /dev/null || { echo '[FAILED] Port not active'; exit_code=1; } _EOF_ done # Check commands [[ ${aCOMMANDS[i]} ]] && cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh echo '\e[33m[ INFO ] Testing command ${aCOMMANDS[i]}:\e[0m' -${aCOMMANDS[i]} || exit_code=1 +${aCOMMANDS[i]} || { echo '[FAILED] Command returned error code'; exit_code=1; } _EOF_ G_EXEC eval 'echo fi >> rootfs/boot/Automation_Custom_Script.sh' done From 9db05ad94b08c027e02fc348c37fec7e7ec865be Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sat, 3 Jun 2023 17:36:05 +0200 Subject: [PATCH 078/106] v8.18 - DietPi-Software | ruTorrent: Update fallback version --- dietpi/dietpi-software | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index 16b55c093a..58ff7fd095 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -8625,7 +8625,7 @@ _EOF_ # Install ruTorrent: Web UI for rTorrent # - Grab current version local version=$(curl -sSfL 'https://api.github.com/repos/Novik/ruTorrent/releases/latest' | mawk -F\" '/"tag_name": /{print $4}') - [[ $version ]] || { version='v4.1.5'; G_DIETPI-NOTIFY 1 "Automatic latest ruTorrent version detection failed. Version \"$version\" will be installed as fallback, but a newer version might be available. Please report this at: https://github.com/MichaIng/DietPi/issues"; } + [[ $version ]] || { version='v4.1.6'; G_DIETPI-NOTIFY 1 "Automatic latest ruTorrent version detection failed. Version \"$version\" will be installed as fallback, but a newer version might be available. Please report this at: https://github.com/MichaIng/DietPi/issues"; } Download_Install "https://github.com/Novik/ruTorrent/archive/$version.tar.gz" # - Reinstall freshly with preserved configs and 3rd party plugins From 0baa61bcd13f58aebf55c9a5dd75e593f5f22bd8 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sat, 3 Jun 2023 18:00:55 +0200 Subject: [PATCH 079/106] v8.18 - DietPi-Software | Pi-hole: With recent release, Pi-hole supporst RISC-V and has been hence enabled for this architecture as well in DietPi. Many thanks to the Pi-hole team for making this possible to quickly! --- CHANGELOG.txt | 1 + dietpi/dietpi-software | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index d1d163b169..f32801414a 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -7,6 +7,7 @@ New software: Enhancements: - Quartz64 | Enabled (software) RAID and LVM support. Many thanks to @dano6 for implementing this: https://github.com/MichaIng/DietPi/pull/6370 - DietPi-Software | youtube-dl: Since the development of the original youtube-dl project stalled for some years, we migrated to the well known actively developed fork "yt-dlp": https://github.com/yt-dlp/yt-dlp. If you installed youtube-dl before, you can migrate via reinstall: "dietpi-software reinstall 195". For backwards compatibility, the "youtube-dl" command will stay valid as a symlink to "yt-dlp", but there are some differences you should be aware about when doing the migration on your system: https://github.com/yt-dlp/yt-dlp#differences-in-default-behavior. Many thanks to @rgabbo for suggestion and @pulpe for implementing this change: https://github.com/MichaIng/DietPi/discussions/5670, https://github.com/MichaIng/DietPi/pull/6380 +- DietPi-Software | Pi-hole: With recent release, Pi-hole supporst RISC-V and has been hence enabled for this architecture as well in DietPi. Many thanks to the Pi-hole team for making this possible to quickly! Bug fixes: - DietPi-DDNS | Resolved an issue where the IP sync failed because the API URL changed recently. Many thanks to @ma651851384 for implementing the update: https://github.com/MichaIng/DietPi/pull/6375 diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index 58ff7fd095..f32d7680a7 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -1394,8 +1394,6 @@ Available commands: aSOFTWARE_DEPS[$software_id]='17 89 webserver' aSOFTWARE_INTERACTIVE[$software_id]=1 aSOFTWARE_CONFLICTS[$software_id]='126' - # - RISC-V: Missing archive: https://github.com/AdguardTeam/AdGuardHome/releases - aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0 #------------------ software_id=126 aSOFTWARE_NAME[$software_id]='AdGuard Home' From 38e5ec626cc05e390fce035ba7aafa9718f3c240 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sat, 3 Jun 2023 18:30:21 +0200 Subject: [PATCH 080/106] v8.18 - CI | DietPi-Software: Replace OpenVPN server service test with CLI test, as the TUN module is not available in those containers --- .github/workflows/dietpi-software.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 1a57feea1c..e16a476542 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -128,7 +128,7 @@ Process_Software() 94) aSERVICES[i]='proftpd' aTCP[i]='21';; 95) aSERVICES[i]='vsftpd' aTCP[i]='21';; 96) aSERVICES[i]='smbd' aTCP[i]='139 445';; - 97) aSERVICES[i]='openvpn' aUDP[i]='1194';; + 97) aCOMMANDS[i]='openvpn --help' # aSERVICES[i]='openvpn' aUDP[i]='1194' GitHub Action runners to not support the TUN module 98) aSERVICES[i]='haproxy' aTCP[i]='80';; 99) aSERVICES[i]='node_exporter' aTCP[i]='9100';; 100) aSERVICES[i]='pijuice';; # aTCP[i]='????';; From ccc5d41289ddacf3087959a070fd2cc741368dab Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sat, 3 Jun 2023 18:45:55 +0200 Subject: [PATCH 081/106] v8.18 - CI | DietPi-Software: Assure that the RPi repository is added when enforcing RPi test --- .github/workflows/dietpi-software.bash | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index e16a476542..ba841f6207 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -275,7 +275,9 @@ then 3) model=4;; *) G_DIETPI-NOTIFY 1 "Invalid architecture $ARCH beginning with \"a\" but not being one of the known/accepted ARM architectures. This should never happen!"; exit 1;; esac - G_EXEC sed -i "/# Start DietPi-Software/iG_EXEC sed -i -e '/^G_HW_MODEL=/cG_HW_MODEL=$model' -e '/^G_HW_MODEL_NAME=/cG_HW_MODEL_NAME=\"RPi $model ($ARCH)\"' /boot/dietpi/.hw_model; > /boot/config.txt; > /boot/cmdline.txt" rootfs/boot/dietpi/dietpi-login + G_EXEC rm rootfs/etc/.dietpi_hw_model_identifier + G_EXEC touch rootfs/boot/{bcm-rpi-dummy.dtb,config,cmdline}.txt + G_EXEC sed -i "/# Start DietPi-Software/iG_EXEC sed -i -e '/^G_HW_MODEL=/cG_HW_MODEL=$model' -e '/^G_HW_MODEL_NAME=/cG_HW_MODEL_NAME=\"RPi $model ($ARCH)\"' /boot/dietpi/.hw_model" rootfs/boot/dietpi/dietpi-login G_EXEC curl -sSf 'https://archive.raspberrypi.org/debian/pool/main/r/raspberrypi-archive-keyring/raspberrypi-archive-keyring_2021.1.1+rpt1_all.deb' -o keyring.deb G_EXEC dpkg --root=rootfs -i keyring.deb G_EXEC rm keyring.deb From 52c7aba0172488423aad3b077fd243f1e6076f56 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sat, 3 Jun 2023 18:47:21 +0200 Subject: [PATCH 082/106] v8.18 - CI | DietPi-Software: Syntax --- .github/workflows/dietpi-software.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index ba841f6207..d65757bcda 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -128,7 +128,7 @@ Process_Software() 94) aSERVICES[i]='proftpd' aTCP[i]='21';; 95) aSERVICES[i]='vsftpd' aTCP[i]='21';; 96) aSERVICES[i]='smbd' aTCP[i]='139 445';; - 97) aCOMMANDS[i]='openvpn --help' # aSERVICES[i]='openvpn' aUDP[i]='1194' GitHub Action runners to not support the TUN module + 97) aCOMMANDS[i]='openvpn --help';; # aSERVICES[i]='openvpn' aUDP[i]='1194' GitHub Action runners to not support the TUN module 98) aSERVICES[i]='haproxy' aTCP[i]='80';; 99) aSERVICES[i]='node_exporter' aTCP[i]='9100';; 100) aSERVICES[i]='pijuice';; # aTCP[i]='????';; From 82ed5a827451bc7af0170d4c94c87f4a26d83b89 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sat, 3 Jun 2023 19:26:18 +0200 Subject: [PATCH 083/106] v8.18 - CI | DietPi-Software: Switch to "openvpn --version" command as "--help" returns error code --- .github/workflows/dietpi-software.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index d65757bcda..95906e97a4 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -128,7 +128,7 @@ Process_Software() 94) aSERVICES[i]='proftpd' aTCP[i]='21';; 95) aSERVICES[i]='vsftpd' aTCP[i]='21';; 96) aSERVICES[i]='smbd' aTCP[i]='139 445';; - 97) aCOMMANDS[i]='openvpn --help';; # aSERVICES[i]='openvpn' aUDP[i]='1194' GitHub Action runners to not support the TUN module + 97) aCOMMANDS[i]='openvpn --version';; # aSERVICES[i]='openvpn' aUDP[i]='1194' GitHub Action runners to not support the TUN module 98) aSERVICES[i]='haproxy' aTCP[i]='80';; 99) aSERVICES[i]='node_exporter' aTCP[i]='9100';; 100) aSERVICES[i]='pijuice';; # aTCP[i]='????';; From 68ba90a65e9da8da68f3c9aa31acca1559d9be58 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sat, 3 Jun 2023 19:39:18 +0200 Subject: [PATCH 084/106] v8.18 - CI | DietPi-Software: Add Amiberry test command --- .github/workflows/dietpi-software.bash | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 95906e97a4..591fdee709 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -136,6 +136,7 @@ Process_Software() 105) aSERVICES[i]='ssh' aTCP[i]='22';; 106) aSERVICES[i]='lidarr' aTCP[i]='8686';; 107) aSERVICES[i]='rtorrent' aTCP[i]='49164' aUDP[i]='6881';; + 108) aCOMMANDS[i]='LD_LIBRARY_PATH=/mnt/dietpi_userdata/amiberry/lib /mnt/dietpi_userdata/amiberry/amiberry --help' 109) aSERVICES[i]='nfs-kernel-server' aTCP[i]='2049';; 111) aSERVICES[i]='urbackupsrv' aTCP[i]='55414';; 115) aSERVICES[i]='webmin' aTCP[i]='10000';; From 54ed26e63015cccc1f04c54d661475bf5519bcd6 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sat, 3 Jun 2023 19:42:08 +0200 Subject: [PATCH 085/106] v8.18 - CI | DietPi-Software: Syntax --- .github/workflows/dietpi-software.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 591fdee709..ad0e736689 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -136,7 +136,7 @@ Process_Software() 105) aSERVICES[i]='ssh' aTCP[i]='22';; 106) aSERVICES[i]='lidarr' aTCP[i]='8686';; 107) aSERVICES[i]='rtorrent' aTCP[i]='49164' aUDP[i]='6881';; - 108) aCOMMANDS[i]='LD_LIBRARY_PATH=/mnt/dietpi_userdata/amiberry/lib /mnt/dietpi_userdata/amiberry/amiberry --help' + 108) aCOMMANDS[i]='LD_LIBRARY_PATH=/mnt/dietpi_userdata/amiberry/lib /mnt/dietpi_userdata/amiberry/amiberry --help';; 109) aSERVICES[i]='nfs-kernel-server' aTCP[i]='2049';; 111) aSERVICES[i]='urbackupsrv' aTCP[i]='55414';; 115) aSERVICES[i]='webmin' aTCP[i]='10000';; From dc6249586bae6391b2901ad7b36d7d892cf94c9e Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sat, 3 Jun 2023 20:51:46 +0200 Subject: [PATCH 086/106] v8.18 - CI | DietPi-Software: Fix RPi enforcement --- .github/workflows/dietpi-software.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index ad0e736689..da2eca0a28 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -277,7 +277,7 @@ then *) G_DIETPI-NOTIFY 1 "Invalid architecture $ARCH beginning with \"a\" but not being one of the known/accepted ARM architectures. This should never happen!"; exit 1;; esac G_EXEC rm rootfs/etc/.dietpi_hw_model_identifier - G_EXEC touch rootfs/boot/{bcm-rpi-dummy.dtb,config,cmdline}.txt + G_EXEC touch rootfs/boot/{bcm-rpi-dummy.dtb,config.txt,cmdline.txt} G_EXEC sed -i "/# Start DietPi-Software/iG_EXEC sed -i -e '/^G_HW_MODEL=/cG_HW_MODEL=$model' -e '/^G_HW_MODEL_NAME=/cG_HW_MODEL_NAME=\"RPi $model ($ARCH)\"' /boot/dietpi/.hw_model" rootfs/boot/dietpi/dietpi-login G_EXEC curl -sSf 'https://archive.raspberrypi.org/debian/pool/main/r/raspberrypi-archive-keyring/raspberrypi-archive-keyring_2021.1.1+rpt1_all.deb' -o keyring.deb G_EXEC dpkg --root=rootfs -i keyring.deb From ceae1da979c2207c57baa85a47a2ddd8c4513c42 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sat, 3 Jun 2023 21:06:04 +0200 Subject: [PATCH 087/106] v8.18 - CI | DietPi-Software: "amiberry --help" returns an error code even that it shows the help output as expected, so check for output instead --- .github/workflows/dietpi-software.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index da2eca0a28..260341f185 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -136,7 +136,7 @@ Process_Software() 105) aSERVICES[i]='ssh' aTCP[i]='22';; 106) aSERVICES[i]='lidarr' aTCP[i]='8686';; 107) aSERVICES[i]='rtorrent' aTCP[i]='49164' aUDP[i]='6881';; - 108) aCOMMANDS[i]='LD_LIBRARY_PATH=/mnt/dietpi_userdata/amiberry/lib /mnt/dietpi_userdata/amiberry/amiberry --help';; + 108) aCOMMANDS[i]='LD_LIBRARY_PATH=/mnt/dietpi_userdata/amiberry/lib /mnt/dietpi_userdata/amiberry/amiberry -h | grep '\''^$VER: Amiberry '\';; 109) aSERVICES[i]='nfs-kernel-server' aTCP[i]='2049';; 111) aSERVICES[i]='urbackupsrv' aTCP[i]='55414';; 115) aSERVICES[i]='webmin' aTCP[i]='10000';; From fc9cb6b92bb8adddad944e169bdc022bca9f8206 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sat, 3 Jun 2023 21:11:24 +0200 Subject: [PATCH 088/106] v8.18 - CI | DietPi-Software: Add NFS client test command --- .github/workflows/dietpi-software.bash | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 260341f185..457b40ddd2 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -138,6 +138,7 @@ Process_Software() 107) aSERVICES[i]='rtorrent' aTCP[i]='49164' aUDP[i]='6881';; 108) aCOMMANDS[i]='LD_LIBRARY_PATH=/mnt/dietpi_userdata/amiberry/lib /mnt/dietpi_userdata/amiberry/amiberry -h | grep '\''^$VER: Amiberry '\';; 109) aSERVICES[i]='nfs-kernel-server' aTCP[i]='2049';; + 110) aCOMMANDS[i]='mount.nfs -V';; 111) aSERVICES[i]='urbackupsrv' aTCP[i]='55414';; 115) aSERVICES[i]='webmin' aTCP[i]='10000';; 116) aSERVICES[i]='medusa' aTCP[i]='8081';; From 92dc2d37912d1f800fcb2e2cb531833d9a6b7e16 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sat, 3 Jun 2023 21:43:37 +0200 Subject: [PATCH 089/106] v8.18 - CI | DietPi-Software: Since the PiJuice service does not start without I2C device, not present in container, use a test command instead --- .github/workflows/dietpi-software.bash | 3 ++- dietpi/dietpi-software | 10 +++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 457b40ddd2..2b50e4029e 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -131,11 +131,12 @@ Process_Software() 97) aCOMMANDS[i]='openvpn --version';; # aSERVICES[i]='openvpn' aUDP[i]='1194' GitHub Action runners to not support the TUN module 98) aSERVICES[i]='haproxy' aTCP[i]='80';; 99) aSERVICES[i]='node_exporter' aTCP[i]='9100';; - 100) aSERVICES[i]='pijuice';; # aTCP[i]='????';; + 100) aCOMMANDS[i]='/usr/bin/pijuice_cli32 -V' # aSERVICES[i]='pijuice' aTCP[i]='????' Service does not start without I2C device, not present in container 104) aSERVICES[i]='dropbear' aTCP[i]='22';; 105) aSERVICES[i]='ssh' aTCP[i]='22';; 106) aSERVICES[i]='lidarr' aTCP[i]='8686';; 107) aSERVICES[i]='rtorrent' aTCP[i]='49164' aUDP[i]='6881';; + # shellcheck disable=SC2016 108) aCOMMANDS[i]='LD_LIBRARY_PATH=/mnt/dietpi_userdata/amiberry/lib /mnt/dietpi_userdata/amiberry/amiberry -h | grep '\''^$VER: Amiberry '\';; 109) aSERVICES[i]='nfs-kernel-server' aTCP[i]='2049';; 110) aCOMMANDS[i]='mount.nfs -V';; diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index f32d7680a7..5427258d48 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -3268,7 +3268,7 @@ _EOF_ if [[ $version == 'Stable' ]] then Download_Install "$(curl -sSfL 'https://api.github.com/repos/ravenclaw900/dietpi-dashboard/releases/latest' | mawk -F\" "/\"browser_download_url\": \".*dietpi-dashboard-$G_HW_ARCH_NAME$backend\"/{print \$4}")" /opt/dietpi-dashboard/dietpi-dashboard - url="https://raw.githubusercontent.com/ravenclaw900/DietPi-Dashboard/$(curl -sSfL 'https://api.github.com/repos/ravenclaw900/dietpi-dashboard/releases/latest' | mawk -F\" '/"tag_name": ".*"/{print $4}')/config.toml" + url="https://raw.githubusercontent.com/ravenclaw900/DietPi-Dashboard/$(curl -sSfL 'https://api.github.com/repos/ravenclaw900/dietpi-dashboard/releases/latest' | mawk -F\" '/^ *"tag_name": "[^"]*",$/{print $4}')/config.toml" elif [[ $version == 'Nightly' ]] then @@ -7114,7 +7114,7 @@ _EOF_ G_AGI "${aDEPS[@]}" aDEPS=() else - local version=$(curl -sSfL 'https://api.github.com/repos/FreshRSS/FreshRSS/releases/latest' | mawk -F\" '/"tag_name": /{print $4}') + local version=$(curl -sSfL 'https://api.github.com/repos/FreshRSS/FreshRSS/releases/latest' | mawk -F\" '/^ *"tag_name": "[^"]*",$/{print $4}') [[ $version ]] || { version='1.21.0'; G_DIETPI-NOTIFY 1 "Automatic latest FreshRSS version detection failed. Version \"$version\" will be installed as fallback, but a newer version might be available. Please report this at: https://github.com/MichaIng/DietPi/issues"; } Download_Install "https://github.com/FreshRSS/FreshRSS/archive/$version.tar.gz" G_EXEC mv "FreshRSS-$version" /opt/FreshRSS @@ -8622,7 +8622,7 @@ _EOF_ # Install ruTorrent: Web UI for rTorrent # - Grab current version - local version=$(curl -sSfL 'https://api.github.com/repos/Novik/ruTorrent/releases/latest' | mawk -F\" '/"tag_name": /{print $4}') + local version=$(curl -sSfL 'https://api.github.com/repos/Novik/ruTorrent/releases/latest' | mawk -F\" '/^ *"tag_name": "[^"]*",$/{print $4}') [[ $version ]] || { version='v4.1.6'; G_DIETPI-NOTIFY 1 "Automatic latest ruTorrent version detection failed. Version \"$version\" will be installed as fallback, but a newer version might be available. Please report this at: https://github.com/MichaIng/DietPi/issues"; } Download_Install "https://github.com/Novik/ruTorrent/archive/$version.tar.gz" @@ -11108,7 +11108,7 @@ _EOF_ aDEPS=('cmake' 'make' 'gcc' 'libc6-dev' 'python3-minimal') # Download - local version=$(curl -sSfL 'https://api.github.com/repos/ptitSeb/box86/releases/latest' | mawk -F\" '/"tag_name": /{print $4}') + local version=$(curl -sSfL 'https://api.github.com/repos/ptitSeb/box86/releases/latest' | mawk -F\" '/^ *"tag_name": "[^"]*",$/{print $4}') [[ $version ]] || { version='v0.3.0'; G_DIETPI-NOTIFY 1 "Automatic latest ${aSOFTWARE_NAME[$software_id]} version detection failed. Version \"$version\" will be installed as fallback, but a newer version might be available. Please report this at: https://github.com/MichaIng/DietPi/issues"; } Download_Install "https://github.com/ptitSeb/box86/archive/$version.tar.gz" @@ -11153,7 +11153,7 @@ _EOF_ aDEPS=('cmake' 'make' 'gcc' 'libc6-dev' 'python3-minimal') # Download - local version=$(curl -sSfL 'https://api.github.com/repos/ptitSeb/box64/releases/latest' | mawk -F\" '/"tag_name": /{print $4}') + local version=$(curl -sSfL 'https://api.github.com/repos/ptitSeb/box64/releases/latest' | mawk -F\" '/^ *"tag_name": "[^"]*",$/{print $4}') [[ $version ]] || { version='v0.2.2'; G_DIETPI-NOTIFY 1 "Automatic latest ${aSOFTWARE_NAME[$software_id]} version detection failed. Version \"$version\" will be installed as fallback, but a newer version might be available. Please report this at: https://github.com/MichaIng/DietPi/issues"; } Download_Install "https://github.com/ptitSeb/box64/archive/$version.tar.gz" From 00f9a01748773a84ac7e26e3e621655083fd0a8d Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sat, 3 Jun 2023 21:46:44 +0200 Subject: [PATCH 090/106] v8.18 - CI | DietPi-Software: Syntax --- .github/workflows/dietpi-software.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 2b50e4029e..165746e035 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -131,7 +131,7 @@ Process_Software() 97) aCOMMANDS[i]='openvpn --version';; # aSERVICES[i]='openvpn' aUDP[i]='1194' GitHub Action runners to not support the TUN module 98) aSERVICES[i]='haproxy' aTCP[i]='80';; 99) aSERVICES[i]='node_exporter' aTCP[i]='9100';; - 100) aCOMMANDS[i]='/usr/bin/pijuice_cli32 -V' # aSERVICES[i]='pijuice' aTCP[i]='????' Service does not start without I2C device, not present in container + 100) aCOMMANDS[i]='/usr/bin/pijuice_cli32 -V';; # aSERVICES[i]='pijuice' aTCP[i]='????' Service does not start without I2C device, not present in container 104) aSERVICES[i]='dropbear' aTCP[i]='22';; 105) aSERVICES[i]='ssh' aTCP[i]='22';; 106) aSERVICES[i]='lidarr' aTCP[i]='8686';; From 9d03ac36ff26a8214729d029afb753bcaaff7f7c Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sat, 3 Jun 2023 21:55:03 +0200 Subject: [PATCH 091/106] v8.18 - CI | DietPi-Software: Satisfy shellcheck --- .github/workflows/dietpi-software.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 165746e035..4729a23703 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -73,6 +73,7 @@ Process_Software() local i for i in "$@" do + # shellcheck disable=SC2016 case $i in 'webserver') [[ $SOFTWARE =~ (^| )8[345]( |$) ]] || aSERVICES[84]='lighttpd' aTCP[84]='80';; # Lighttpd as default due to above bug in 32-bit ARM Bookworm containers 0) aCOMMANDS[i]='ssh -V';; @@ -136,7 +137,6 @@ Process_Software() 105) aSERVICES[i]='ssh' aTCP[i]='22';; 106) aSERVICES[i]='lidarr' aTCP[i]='8686';; 107) aSERVICES[i]='rtorrent' aTCP[i]='49164' aUDP[i]='6881';; - # shellcheck disable=SC2016 108) aCOMMANDS[i]='LD_LIBRARY_PATH=/mnt/dietpi_userdata/amiberry/lib /mnt/dietpi_userdata/amiberry/amiberry -h | grep '\''^$VER: Amiberry '\';; 109) aSERVICES[i]='nfs-kernel-server' aTCP[i]='2049';; 110) aCOMMANDS[i]='mount.nfs -V';; From 03b6f6fc4161cf370e7bcb1db7a98ed79a6be949 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sat, 3 Jun 2023 22:09:12 +0200 Subject: [PATCH 092/106] v8.18 - DietPi-Patches | Update Quartz64 and VisionFive 2 kernel --- .update/patches | 67 +++++++++++++++++++++++++------------------------ 1 file changed, 34 insertions(+), 33 deletions(-) diff --git a/.update/patches b/.update/patches index 95bf4eb2de..85765ff7bb 100755 --- a/.update/patches +++ b/.update/patches @@ -1227,31 +1227,6 @@ Patch_8_17() G_EXEC sed -i '/^[[:blank:]]*dtoverlay=rpivid-v4l2$/d' /boot/config.txt fi - # Quartz64 - elif (( $G_HW_MODEL == 49 )) - then - if dpkg --compare-versions "$(dpkg-query -Wf '${Version}' firmware-quartz64a 2> /dev/null)" lt-nl 6.2.14-dietpi1 - then - G_DIETPI-NOTIFY 2 'Updating Quartz64 Model A kernel and bootloader ...' - G_EXEC_OUTPUT=1 G_EXEC curl -fO 'https://dietpi.com/downloads/binaries/firmware-quartz64a.deb' - G_EXEC_OUTPUT=1 G_EXEC dpkg -i --force-confdef,confold firmware-quartz64a.deb - G_EXEC rm firmware-quartz64a.deb - - elif dpkg --compare-versions "$(dpkg-query -Wf '${Version}' firmware-quartz64b 2> /dev/null)" lt-nl 6.2.14-dietpi1 - then - G_DIETPI-NOTIFY 2 'Updating Quartz64 Model B kernel and bootloader ...' - G_EXEC_OUTPUT=1 G_EXEC curl -fO 'https://dietpi.com/downloads/binaries/firmware-quartz64b.deb' - G_EXEC_OUTPUT=1 G_EXEC dpkg -i --force-confdef,confold firmware-quartz64b.deb - G_EXEC rm firmware-quartz64b.deb - - elif dpkg --compare-versions "$(dpkg-query -Wf '${Version}' firmware-soquartz 2> /dev/null)" lt-nl 6.2.14-dietpi1 - then - G_DIETPI-NOTIFY 2 'Updating SOQuartz kernel and bootloader ...' - G_EXEC_OUTPUT=1 G_EXEC curl -fO 'https://dietpi.com/downloads/binaries/firmware-soquartz.deb' - G_EXEC_OUTPUT=1 G_EXEC dpkg -i --force-confdef,confold firmware-soquartz.deb - G_EXEC rm firmware-soquartz.deb - fi - # Sparky SBC: Fix Roonbridge: https://dietpi.com/forum/t/allogui-not-working-apache-service-doesnt-start/15708/13 elif (( $G_HW_MODEL == 70 )) then @@ -1318,14 +1293,6 @@ SUBSYSTEM=="leds", KERNEL=="wan_led", ACTION=="add", ATTR{trigger}="netdev", ATT SUBSYSTEM=="leds", KERNEL=="lan1_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth1", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1", RUN+="/bin/ip l s up dev eth1", RUN+="/bin/ip l s down dev eth1" _EOF_ fi - - # VisionFive 2 - elif (( $G_HW_MODEL == 81 )) && dpkg --compare-versions "$(dpkg-query -Wf '${Version}' linux-image-visionfive2 2> /dev/null)" lt-nl 5.15.110-dietpi1 - then - G_DIETPI-NOTIFY 2 'Updating RISC-V StarFive VisionFive 2 kernel ...' - G_EXEC_OUTPUT=1 G_EXEC curl -fO 'https://dietpi.com/downloads/binaries/linux-image-visionfive2.deb' - G_EXEC_OUTPUT=1 G_EXEC dpkg -i --force-confdef,confold linux-image-visionfive2.deb - G_EXEC rm linux-image-visionfive2.deb fi } @@ -1359,6 +1326,40 @@ Patch_8_18() [[ -f /lib/systemd/system/$i.service.disable ]] && G_EXEC mv "/lib/systemd/system/$i.service"{.disable,} && G_EXEC systemctl disable "$i" done fi + + # Quartz64 + if (( $G_HW_MODEL == 49 )) + then + if dpkg --compare-versions "$(dpkg-query -Wf '${Version}' firmware-quartz64a 2> /dev/null)" lt-nl 6.3.5-dietpi1 + then + G_DIETPI-NOTIFY 2 'Updating Quartz64 Model A kernel and bootloader ...' + G_EXEC_OUTPUT=1 G_EXEC curl -fO 'https://dietpi.com/downloads/binaries/firmware-quartz64a.deb' + G_EXEC_OUTPUT=1 G_EXEC dpkg -i --force-confdef,confold firmware-quartz64a.deb + G_EXEC rm firmware-quartz64a.deb + + elif dpkg --compare-versions "$(dpkg-query -Wf '${Version}' firmware-quartz64b 2> /dev/null)" lt-nl 6.3.5-dietpi1 + then + G_DIETPI-NOTIFY 2 'Updating Quartz64 Model B kernel and bootloader ...' + G_EXEC_OUTPUT=1 G_EXEC curl -fO 'https://dietpi.com/downloads/binaries/firmware-quartz64b.deb' + G_EXEC_OUTPUT=1 G_EXEC dpkg -i --force-confdef,confold firmware-quartz64b.deb + G_EXEC rm firmware-quartz64b.deb + + elif dpkg --compare-versions "$(dpkg-query -Wf '${Version}' firmware-soquartz 2> /dev/null)" lt-nl 6.3.5-dietpi1 + then + G_DIETPI-NOTIFY 2 'Updating SOQuartz kernel and bootloader ...' + G_EXEC_OUTPUT=1 G_EXEC curl -fO 'https://dietpi.com/downloads/binaries/firmware-soquartz.deb' + G_EXEC_OUTPUT=1 G_EXEC dpkg -i --force-confdef,confold firmware-soquartz.deb + G_EXEC rm firmware-soquartz.deb + fi + + # VisionFive 2 + elif (( $G_HW_MODEL == 81 )) && dpkg --compare-versions "$(dpkg-query -Wf '${Version}' linux-image-visionfive2 2> /dev/null)" lt-nl 5.15.114-dietpi1 + then + G_DIETPI-NOTIFY 2 'Updating RISC-V StarFive VisionFive 2 kernel ...' + G_EXEC_OUTPUT=1 G_EXEC curl -fO 'https://dietpi.com/downloads/binaries/linux-image-visionfive2.deb' + G_EXEC_OUTPUT=1 G_EXEC dpkg -i --force-confdef,confold linux-image-visionfive2.deb + G_EXEC rm linux-image-visionfive2.deb + fi } # v6.35 => v7 migration From ee404d7a44328ae9b5af84eb37dc9c774429a900 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sat, 3 Jun 2023 22:14:23 +0200 Subject: [PATCH 093/106] v8.18 - DietPi-Patches | Inform about available Squeezelite update --- .update/patches | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/.update/patches b/.update/patches index 85765ff7bb..5422d385ba 100755 --- a/.update/patches +++ b/.update/patches @@ -776,11 +776,6 @@ Patch_8_10() # Inform about available software updates if [[ -f '/boot/dietpi/.installed' ]] then - # Squeezelite - grep -q '^[[:blank:]]*aSOFTWARE_INSTALL_STATE\[36\]=2' /boot/dietpi/.installed && G_WHIP_MSG '[ INFO ] Squeezelite update available -\nAn update to Squeezelite v1.9.9-1411 is available. Apply it via reinstall: -# dietpi-software reinstall 36 -\nChange log: https://github.com/ralph-irving/squeezelite/commits/bc72c0d' # Home Assistant grep -q '^[[:blank:]]*aSOFTWARE_INSTALL_STATE\[157\]=2' /boot/dietpi/.installed && G_WHIP_MSG '[ INFO ] HACS integration for Home Assistant available \nThe Home Assistant Community Store (HACS) is now installed by default with Home Assistant. Add it via reinstall: @@ -1360,6 +1355,16 @@ Patch_8_18() G_EXEC_OUTPUT=1 G_EXEC dpkg -i --force-confdef,confold linux-image-visionfive2.deb G_EXEC rm linux-image-visionfive2.deb fi + + # Inform about available software updates + if [[ -f '/boot/dietpi/.installed' ]] + then + # Squeezelite + grep -q '^[[:blank:]]*aSOFTWARE_INSTALL_STATE\[36\]=2' /boot/dietpi/.installed && G_WHIP_MSG '[ INFO ] Squeezelite update available +\nAn update to Squeezelite v1.9.9-1432 is available. Apply it via reinstall: +# dietpi-software reinstall 36 +\nChange log: https://github.com/ralph-irving/squeezelite/commits/575b593' + fi } # v6.35 => v7 migration From e6565c1140c537bb4d3049dd4d382f651797d4a8 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sat, 3 Jun 2023 22:36:55 +0200 Subject: [PATCH 094/106] v8.18 - CI | DietPi-Software: Increase Medusa service startup timeout for emulated containers --- .github/workflows/dietpi-software.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 4729a23703..6438e0ae03 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -142,7 +142,7 @@ Process_Software() 110) aCOMMANDS[i]='mount.nfs -V';; 111) aSERVICES[i]='urbackupsrv' aTCP[i]='55414';; 115) aSERVICES[i]='webmin' aTCP[i]='10000';; - 116) aSERVICES[i]='medusa' aTCP[i]='8081';; + 116) aSERVICES[i]='medusa' aTCP[i]='8081'; (( $arch == 10 )) || aDELAY[i]=30;; #117) :;; # ToDo: Implement automated install via /boot/unattended_pivpn.conf 118) aSERVICES[i]='mopidy' aTCP[i]='6680';; 121) aSERVICES[i]='roonbridge' aUDP[i]='9003';; From a4b6b618e7f0ffb419af2938c67ee76b1e09fa27 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sat, 3 Jun 2023 22:38:20 +0200 Subject: [PATCH 095/106] v8.18 (#6410) - Quartz64 | Fix Rockchip DDR binary repo, as the rkbin branch in rockchip_mirrors repo have been removed --- .github/workflows/quartz64.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/quartz64.yml b/.github/workflows/quartz64.yml index b2fc15601b..4363e6a73f 100644 --- a/.github/workflows/quartz64.yml +++ b/.github/workflows/quartz64.yml @@ -29,8 +29,8 @@ jobs: { curl -fO "https://gitlab.com/MichaIng/u-boot/-/archive/$uboot_branch/u-boot-$uboot_branch.tar.bz2"; tar xf "u-boot-$uboot_branch.tar.bz2"; rm "u-boot-$uboot_branch.tar.bz2"; } & { curl -fO 'https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/snapshot/linux-rolling-stable.tar.gz'; tar xf linux-rolling-stable.tar.gz; rm linux-rolling-stable.tar.gz; } & wait - curl -sSfo "u-boot-$uboot_branch/u-boot-spl-ddr.bin" 'https://raw.githubusercontent.com/JeffyCN/rockchip_mirrors/rkbin/bin/rk35/rk3568_ddr_1560MHz_v1.13.bin' & - curl -sSfo "u-boot-$uboot_branch/bl31.elf" 'https://raw.githubusercontent.com/JeffyCN/rockchip_mirrors/6186deb/bin/rk35/rk3568_bl31_v1.28.elf' & + curl -sSfo "u-boot-$uboot_branch/u-boot-spl-ddr.bin" 'https://raw.githubusercontent.com/JeffyCN/mirrors/ddf03c1/bin/rk35/rk3568_ddr_1560MHz_v1.13.bin' & + curl -sSfo "u-boot-$uboot_branch/bl31.elf" 'https://raw.githubusercontent.com/JeffyCN/mirrors/6186deb/bin/rk35/rk3568_bl31_v1.28.elf' & curl -sSfo linux-rolling-stable/arch/arm64/configs/quartz64_defconfig "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/$GITHUB_REF_NAME/.build/images/Quartz64/quartz64_defconfig" & rm -Rf firmware-quartz64a/DEBIAN firmware-quartz64a/boot/extlinux firmware-quartz64a/lib/firmware/brcm mkdir -p firmware-quartz64a/DEBIAN firmware-quartz64a/boot/extlinux firmware-quartz64a/lib/firmware/brcm From d82829833fd66aa8e56b38aa3c03431ea36f8475 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sat, 3 Jun 2023 22:58:41 +0200 Subject: [PATCH 096/106] v8.18 - CI | DietPi-Software: Increase service startup timeout for Lidarr in emulated container and remove PiJuice test command since it always puts you into an interactive console --- .github/workflows/dietpi-software.bash | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 6438e0ae03..6918f120ee 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -132,10 +132,10 @@ Process_Software() 97) aCOMMANDS[i]='openvpn --version';; # aSERVICES[i]='openvpn' aUDP[i]='1194' GitHub Action runners to not support the TUN module 98) aSERVICES[i]='haproxy' aTCP[i]='80';; 99) aSERVICES[i]='node_exporter' aTCP[i]='9100';; - 100) aCOMMANDS[i]='/usr/bin/pijuice_cli32 -V';; # aSERVICES[i]='pijuice' aTCP[i]='????' Service does not start without I2C device, not present in container + #100) (( $arch < 3 )) && aCOMMANDS[i]='/usr/bin/pijuice_cli32 -V' || aCOMMANDS[i]='/usr/bin/pijuice_cli64 -V' aSERVICES[i]='pijuice' aTCP[i]='????' Service does not start without I2C device, not present in container and CLI command always puts you in interactive console 104) aSERVICES[i]='dropbear' aTCP[i]='22';; 105) aSERVICES[i]='ssh' aTCP[i]='22';; - 106) aSERVICES[i]='lidarr' aTCP[i]='8686';; + 106) aSERVICES[i]='lidarr' aTCP[i]='8686'; (( $arch < 10 )) && aDELAY[i]=60;; 107) aSERVICES[i]='rtorrent' aTCP[i]='49164' aUDP[i]='6881';; 108) aCOMMANDS[i]='LD_LIBRARY_PATH=/mnt/dietpi_userdata/amiberry/lib /mnt/dietpi_userdata/amiberry/amiberry -h | grep '\''^$VER: Amiberry '\';; 109) aSERVICES[i]='nfs-kernel-server' aTCP[i]='2049';; From f896aa549bb5bf3cbdb0600b4c626a5b5a010e63 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sat, 3 Jun 2023 23:33:40 +0200 Subject: [PATCH 097/106] v8.18 - DietPi-Software | Mosquitto: Resolved an issue on Bookworm systems where the install failed. The official APT repository does not provide a Bookworm suite yet, and the Bullseye packages have Bullseye-only dependencies. On Bookworm the Debian repo packages will be installed instead now. --- CHANGELOG.txt | 1 + dietpi/dietpi-software | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index f32801414a..6ab237125c 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -18,6 +18,7 @@ Bug fixes: - DietPi-Software | LXQt: Resolved an issue on Bookworm systems where the install failed since configs were missing. - DietPi-Software | TigerVNC: Resolved an issue on Bookworm systems where the VNC password was not set as expected since the tigervncpasswd command became a dedicated DEB package "tigervnc-tools". - DietPi-Software | Deluge: Resolved an issue on Bookworm systems where the install failed when trying to alter the service user. +- DietPi-Software | Mosquitto: Resolved an issue on Bookworm systems where the install failed. The official APT repository does not provide a Bookworm suite yet, and the Bullseye packages have Bullseye-only dependencies. On Bookworm the Debian repo packages will be installed instead now. As always, many smaller code performance and stability improvements, visual and spelling fixes have been done, too much to list all of them here. Check out all code changes of this release on GitHub: https://github.com/MichaIng/DietPi/pull/6406 diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index 5427258d48..6439ec048b 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -6763,7 +6763,7 @@ _EOF_ then # Use official APT repository where available: https://repo.mosquitto.org/debian/pool/main/m/mosquitto/ # - Current builds are not ARMv6 compatible: https://github.com/MichaIng/DietPi/issues/5140 - if [[ $G_HW_ARCH == 2 || $G_HW_ARCH == 10 ]] + if (( $G_DISTRO < 7 )) && [[ $G_HW_ARCH == 2 || $G_HW_ARCH == 10 ]] then # APT key local url='https://repo.mosquitto.org/debian/mosquitto-repo.gpg.key' @@ -6771,7 +6771,7 @@ _EOF_ G_EXEC eval "curl -sSfL '$url' | gpg --dearmor -o /etc/apt/trusted.gpg.d/dietpi-mosquitto.gpg --yes" # APT list - G_EXEC eval "echo 'deb https://repo.mosquitto.org/debian/ ${G_DISTRO_NAME/bookworm/bullseye} main' > /etc/apt/sources.list.d/dietpi-mosquitto.list" + G_EXEC eval "echo 'deb https://repo.mosquitto.org/debian/ $G_DISTRO_NAME main' > /etc/apt/sources.list.d/dietpi-mosquitto.list" G_AGUP fi From 0521a4328f4a3d537919d371ab42b5a307afe8fd Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sat, 3 Jun 2023 23:41:22 +0200 Subject: [PATCH 098/106] v8.18 - DietPi-Software | NAA-Daemon: Disable on RISC-V as there are no packages provided for this architecture by the official APT repo --- dietpi/dietpi-software | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index 6439ec048b..1d02efa512 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -454,6 +454,8 @@ Available commands: aSOFTWARE_CATX[$software_id]=2 aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/media/#naa-daemon' aSOFTWARE_DEPS[$software_id]='5' + # - RISC-V: No packages: https://www.signalyst.eu/bins/naa/linux/ + aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0 #------------------ software_id=128 aSOFTWARE_NAME[$software_id]='MPD' @@ -1401,7 +1403,7 @@ Available commands: aSOFTWARE_CATX[$software_id]=13 aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/dns_servers/#adguard-home' aSOFTWARE_CONFLICTS[$software_id]='93' - # - RISC-V: Missing binary + # - RISC-V: Missing binary: https://github.com/AdguardTeam/AdGuardHome/releases aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0 #------------------ software_id=182 From f0c4f2818a523a070cd5c3c6fa088bad4a5eb490 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sat, 3 Jun 2023 23:45:40 +0200 Subject: [PATCH 099/106] v8.18 - CI | DietPi-Software: Add Docker Compose test command and show UDP port usage on failure --- .github/workflows/dietpi-software.bash | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 6918f120ee..83248952e3 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -155,6 +155,7 @@ Process_Software() 131) aSERVICES[i]='blynkserver' aTCP[i]='9443';; 132) aSERVICES[i]='aria2' aTCP[i]='6800';; # aTCP[i]+=' 6881-6999';; # Listens on random port 133) aSERVICES[i]='yacy' aTCP[i]='8090';; + 134) aSERVICES[i]='docker compose version';; 135) aSERVICES[i]='icecast2 darkice' aTCP[i]='8000';; 136) aSERVICES[i]='motioneye' aTCP[i]='8765';; 137) aSERVICES[i]='mjpg-streamer' aTCP[i]='8082';; @@ -230,7 +231,7 @@ do 49|165) Process_Software 88;; #61) Process_Software 60;; # Cannot be installed in CI 125) Process_Software 194;; - #86|185) Process_Software 162;; # Docker does not start in systemd containers (without dedicated network) + #86|134|185) Process_Software 162;; # Docker does not start in systemd containers (without dedicated network) *) :;; esac Process_Software "$i" @@ -375,11 +376,11 @@ done G_EXEC eval 'echo '\''[ $exit_code = 0 ] && > /success || { journalctl -n 25; ss -tlpn; df -h; free -h; poweroff; }; poweroff'\'' >> rootfs/boot/Automation_Custom_Script.sh' # Shutdown as well on failure -G_EXEC sed -i 's|Prompt_on_Failure$|{ journalctl -n 25; ss -tlpn; df -h; free -h; poweroff; }|' rootfs/boot/dietpi/dietpi-login +G_EXEC sed -i 's|Prompt_on_Failure$|{ journalctl -n 25; ss -tulpn; df -h; free -h; poweroff; }|' rootfs/boot/dietpi/dietpi-login ########################################## # Boot container ########################################## systemd-nspawn -bD rootfs -[[ -f 'rootfs/success' ]] || { journalctl -n 25; df -h; free -h; exit 1; } +[[ -f 'rootfs/success' ]] || { journalctl -n 25; ss -tulpn; df -h; free -h; exit 1; } } From 9fc2cfc830e7359735b6e5a73b65b85aea345df2 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sun, 4 Jun 2023 00:03:11 +0200 Subject: [PATCH 100/106] v8.18 - CI | DietPi-Software: Raise service start timeout for YaCy, add Java JRE check when it is installed and increase in-container journal log print on error to 50 lines --- .github/workflows/dietpi-software.bash | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 83248952e3..772b256e2f 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -154,7 +154,7 @@ Process_Software() 128) aSERVICES[i]='mpd' aTCP[i]='6600';; 131) aSERVICES[i]='blynkserver' aTCP[i]='9443';; 132) aSERVICES[i]='aria2' aTCP[i]='6800';; # aTCP[i]+=' 6881-6999';; # Listens on random port - 133) aSERVICES[i]='yacy' aTCP[i]='8090';; + 133) aSERVICES[i]='yacy' aTCP[i]='8090' aDELAY[i]=30;; 134) aSERVICES[i]='docker compose version';; 135) aSERVICES[i]='icecast2 darkice' aTCP[i]='8000';; 136) aSERVICES[i]='motioneye' aTCP[i]='8765';; @@ -225,7 +225,7 @@ do 27|56|63|64|107|132) Process_Software 89 webserver;; # 93 (Pi-hole) cannot be installed non-interactively 38|40|48|54|55|57|59|90|160) Process_Software 88 89 webserver;; 47|114|168) Process_Software 88 89 91 webserver;; - 8|33) Process_Software 196;; + 8|33|131) Process_Software 196;; 32|148|119) Process_Software 128;; 129) Process_Software 88 89 128 webserver;; 49|165) Process_Software 88;; @@ -376,7 +376,7 @@ done G_EXEC eval 'echo '\''[ $exit_code = 0 ] && > /success || { journalctl -n 25; ss -tlpn; df -h; free -h; poweroff; }; poweroff'\'' >> rootfs/boot/Automation_Custom_Script.sh' # Shutdown as well on failure -G_EXEC sed -i 's|Prompt_on_Failure$|{ journalctl -n 25; ss -tulpn; df -h; free -h; poweroff; }|' rootfs/boot/dietpi/dietpi-login +G_EXEC sed -i 's|Prompt_on_Failure$|{ journalctl -n 50; ss -tulpn; df -h; free -h; poweroff; }|' rootfs/boot/dietpi/dietpi-login ########################################## # Boot container From 7691e22b056d2b91e30e111e1899d6a924e67892 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sun, 4 Jun 2023 00:08:00 +0200 Subject: [PATCH 101/106] v8.18 - DietPi-Software | RealVNC: Install libraspberrypi0 explicitly, as RealVNC depends on libbcm_host.so but does not pull libraspberrypi0 as dependency --- dietpi/dietpi-software | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index 1d02efa512..931e78e5b1 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -7194,7 +7194,7 @@ _EOF_ if To_Install 120 # RealVNC Server then - G_AGI realvnc-vnc-server + G_AGI realvnc-vnc-server libraspberrypi0 # Depends on libbcm_host.so but does not pull libraspberrypi0 as dependency fi # TigerVNC/RealVNC Server - Shared setup From 69d6b3d9cd70a21b725c106f5c0e1e0334ff1fb7 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sun, 4 Jun 2023 00:13:12 +0200 Subject: [PATCH 102/106] v8.18 - RC up --- .update/version | 2 +- CHANGELOG.txt | 3 --- dietpi/func/dietpi-globals | 2 +- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/.update/version b/.update/version index 3e0e3a6447..8dd9b06f8b 100644 --- a/.update/version +++ b/.update/version @@ -3,7 +3,7 @@ # Available DietPi version G_REMOTE_VERSION_CORE=8 G_REMOTE_VERSION_SUB=18 -G_REMOTE_VERSION_RC=1 +G_REMOTE_VERSION_RC=2 # Minimum DietPi version to allow update G_MIN_VERSION_CORE=6 G_MIN_VERSION_SUB=14 diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 6ab237125c..d7c4aece99 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,9 +1,6 @@ v8.18 (2023-06-03) -New software: -- - Enhancements: - Quartz64 | Enabled (software) RAID and LVM support. Many thanks to @dano6 for implementing this: https://github.com/MichaIng/DietPi/pull/6370 - DietPi-Software | youtube-dl: Since the development of the original youtube-dl project stalled for some years, we migrated to the well known actively developed fork "yt-dlp": https://github.com/yt-dlp/yt-dlp. If you installed youtube-dl before, you can migrate via reinstall: "dietpi-software reinstall 195". For backwards compatibility, the "youtube-dl" command will stay valid as a symlink to "yt-dlp", but there are some differences you should be aware about when doing the migration on your system: https://github.com/yt-dlp/yt-dlp#differences-in-default-behavior. Many thanks to @rgabbo for suggestion and @pulpe for implementing this change: https://github.com/MichaIng/DietPi/discussions/5670, https://github.com/MichaIng/DietPi/pull/6380 diff --git a/dietpi/func/dietpi-globals b/dietpi/func/dietpi-globals index be1066b4b0..4654acaa8a 100644 --- a/dietpi/func/dietpi-globals +++ b/dietpi/func/dietpi-globals @@ -59,7 +59,7 @@ # - Assign defaults/code version as fallback [[ $G_DIETPI_VERSION_CORE ]] || G_DIETPI_VERSION_CORE=8 [[ $G_DIETPI_VERSION_SUB ]] || G_DIETPI_VERSION_SUB=18 - [[ $G_DIETPI_VERSION_RC ]] || G_DIETPI_VERSION_RC=1 + [[ $G_DIETPI_VERSION_RC ]] || G_DIETPI_VERSION_RC=2 [[ $G_GITBRANCH ]] || G_GITBRANCH='master' [[ $G_GITOWNER ]] || G_GITOWNER='MichaIng' # - Save current version and Git branch From 58be30865750452acdd4b4a880d763f53f651ac7 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sun, 4 Jun 2023 00:20:18 +0200 Subject: [PATCH 103/106] v8.18 - CI | DietPi-Software: Stop systemd-resolved service to allow DNS server install tests --- .github/workflows/dietpi-software.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.yml b/.github/workflows/dietpi-software.yml index 853a382e5d..37bf3a7a87 100644 --- a/.github/workflows/dietpi-software.yml +++ b/.github/workflows/dietpi-software.yml @@ -76,5 +76,5 @@ jobs: [ $owner ] || owner=$GITHUB_REPOSITORY_OWNER branch='${{ github.event.inputs.branch }}' [ $branch ] || branch=$GITHUB_REF_NAME - sudo systemctl stop ssh mono-xsp4 + sudo systemctl stop ssh mono-xsp4 systemd-resolved sudo bash -c "G_GITOWNER=$owner G_GITBRANCH=$branch; $(curl -sSf "https://raw.githubusercontent.com/$owner/DietPi/$branch/.github/workflows/dietpi-software.bash")" -- -a '${{ matrix.arch }}' -d '${{ matrix.dist }}' -s '${{ github.event.inputs.soft }}' -rpi '${{ github.event.inputs.rpi }}' From 10d032aacdebbbd73ca5e52d33762f35fb73de62 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sun, 4 Jun 2023 00:25:20 +0200 Subject: [PATCH 104/106] v8.18 - CHANGELOG | Typo --- CHANGELOG.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index d7c4aece99..37bdf64035 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -4,7 +4,7 @@ v8.18 Enhancements: - Quartz64 | Enabled (software) RAID and LVM support. Many thanks to @dano6 for implementing this: https://github.com/MichaIng/DietPi/pull/6370 - DietPi-Software | youtube-dl: Since the development of the original youtube-dl project stalled for some years, we migrated to the well known actively developed fork "yt-dlp": https://github.com/yt-dlp/yt-dlp. If you installed youtube-dl before, you can migrate via reinstall: "dietpi-software reinstall 195". For backwards compatibility, the "youtube-dl" command will stay valid as a symlink to "yt-dlp", but there are some differences you should be aware about when doing the migration on your system: https://github.com/yt-dlp/yt-dlp#differences-in-default-behavior. Many thanks to @rgabbo for suggestion and @pulpe for implementing this change: https://github.com/MichaIng/DietPi/discussions/5670, https://github.com/MichaIng/DietPi/pull/6380 -- DietPi-Software | Pi-hole: With recent release, Pi-hole supporst RISC-V and has been hence enabled for this architecture as well in DietPi. Many thanks to the Pi-hole team for making this possible to quickly! +- DietPi-Software | Pi-hole: With recent release, Pi-hole supports RISC-V and has been hence enabled for this architecture as well in DietPi. Many thanks to the Pi-hole team for making this possible to quickly! Bug fixes: - DietPi-DDNS | Resolved an issue where the IP sync failed because the API URL changed recently. Many thanks to @ma651851384 for implementing the update: https://github.com/MichaIng/DietPi/pull/6375 From 1f5625f26314981a02bb24bbcb09786a10cf2591 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sun, 4 Jun 2023 00:37:29 +0200 Subject: [PATCH 105/106] v8.18 - CI | DietPi-Software: Fix Docker Compose command test --- .github/workflows/dietpi-software.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 772b256e2f..fa52d8faa1 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -155,7 +155,7 @@ Process_Software() 131) aSERVICES[i]='blynkserver' aTCP[i]='9443';; 132) aSERVICES[i]='aria2' aTCP[i]='6800';; # aTCP[i]+=' 6881-6999';; # Listens on random port 133) aSERVICES[i]='yacy' aTCP[i]='8090' aDELAY[i]=30;; - 134) aSERVICES[i]='docker compose version';; + 134) aCOMMANDS[i]='docker compose version';; 135) aSERVICES[i]='icecast2 darkice' aTCP[i]='8000';; 136) aSERVICES[i]='motioneye' aTCP[i]='8765';; 137) aSERVICES[i]='mjpg-streamer' aTCP[i]='8082';; From 79b4d07b16b81dd10c588376eddba2a4e255f531 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sun, 4 Jun 2023 00:47:11 +0200 Subject: [PATCH 106/106] v8.18 - CI | DietPi-Software: Remove RealVNC test, as it fails in container, likely requries an actual RPi hardware to function --- .github/workflows/dietpi-software.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index fa52d8faa1..5ef6c4ac17 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -83,7 +83,7 @@ Process_Software() 9) aCOMMANDS[i]='node -v';; 16) aSERVICES[i]='microblog-pub' aTCP[i]='8007';; 17) aCOMMANDS[i]='git -v';; - 28|120) aSERVICES[i]='vncserver' aTCP[i]='5901';; + 28) aSERVICES[i]='vncserver' aTCP[i]='5901';; 29) aSERVICES[i]='xrdp' aTCP[i]='3389';; 30) aSERVICES[i]='nxserver' aTCP[i]='4000';; 32) aSERVICES[i]='ympd' aTCP[i]='1337';;