mirror of
https://github.com/armbian/build.git
synced 2026-09-08 23:59:54 +08:00
* extensions: add @description headers and a list generator Add a one-line `# @description` header near the top of every extension in extensions/ (85 files), each ~35-45 words / 3 sentences, source-verified against the extension's actual behaviour. Two extensions with a dedicated docs page also carry a `# @doc-page` link. Add lib/tools/gen-extensions-list.py, which scans extensions/**/*.sh for these headers and prints the Markdown extensions reference consumed by the documentation repo. The list is no longer hand-maintained: edit an extension's `# @description` and the generator brings the change over. Signed-off-by: Igor Pecovnik <igor@armbian.com> * extensions: correct descriptions flagged in review, validate @doc-page Seven @description headers claimed more than the code does: cleanup-space-final-image zerofree globs ${LOOP}p?, so p10+ is not covered image-output-abl one recovery image from ABL_DTB_LIST[0], not per-DTB marvell-tools binaries-marvell and cryptopp track branches, not pins nvidia also skipped without a working headers package odin2-preset-firstrun ships hardcoded 1234 root/user passwords preset-firstrun static networking is on by default, not optional uefi-edk2-rk3588 acpi=off is a default, not forced Reword each to match, and call out the two credential hazards explicitly rather than leaving them implied. In the generator, restrict @doc-page to site-relative paths. The value goes into a Markdown link target on the published docs site and Python-Markdown does not sanitize URL schemes, so a "javascript:" target would survive into the page; unusable values are now dropped with a warning on stderr. Signed-off-by: Igor Pecovnik <igor@armbian.com> * gen-extensions-list: close two holes in @doc-page validation DOC_PAGE_RE accepted "//external.example/x". "/" is in the character class, so after the required leading slash a second one matched happily -- the protocol- relative case the comment claimed to reject sailed straight through. Add a negative lookahead. The annotation parser also matched a single \S+ token, so "@doc-page /guide extra" and a bare "@doc-page" failed to match at all and were dropped in silence, with no warning. Capture the whole value instead and let validation reject it, so malformed annotations are reported rather than ignored. Output over the current extensions/ tree is byte-identical. Signed-off-by: Igor Pecovnik <igor@armbian.com> --------- Signed-off-by: Igor Pecovnik <igor@armbian.com>
37 lines
2.3 KiB
Bash
37 lines
2.3 KiB
Bash
# @description Installs the `photonicat-pm` DKMS power-management driver for the Ariaboard Photonicat router. Fetches the latest `HackingGate/photonicat-pm` release deb and builds the kernel module in the chroot, forcing `INSTALL_HEADERS=yes`. Requires a kernel with a working headers package and is skipped on kernels ≥ 6.20.
|
|
|
|
function extension_finish_config__install_kernel_headers_for_photonicat_pm_dkms() {
|
|
|
|
if [[ "${KERNEL_HAS_WORKING_HEADERS}" != "yes" ]]; then
|
|
display_alert "Kernel version has no working headers package" "skipping photonicat-pm dkms for kernel v${KERNEL_MAJOR_MINOR}" "warn"
|
|
return 0
|
|
fi
|
|
declare -g INSTALL_HEADERS="yes"
|
|
display_alert "Forcing INSTALL_HEADERS=yes; for use with photonicat-pm dkms" "${EXTENSION}" "debug"
|
|
}
|
|
|
|
function post_install_kernel_debs__install_photonicat_pm_dkms_package() {
|
|
|
|
if linux-version compare "${KERNEL_MAJOR_MINOR}" ge 6.20; then
|
|
display_alert "Kernel version is too recent" "skipping photonicat-pm dkms for kernel v${KERNEL_MAJOR_MINOR}" "warn"
|
|
return 0
|
|
fi
|
|
[[ "${INSTALL_HEADERS}" != "yes" ]] || [[ "${KERNEL_HAS_WORKING_HEADERS}" != "yes" ]] && return 0
|
|
api_url="https://api.github.com/repos/HackingGate/photonicat-pm/releases/latest"
|
|
latest_version=$(curl -s "${api_url}" | jq -r '.tag_name')
|
|
# Get the Debian version from changelog
|
|
changelog_url="https://raw.githubusercontent.com/HackingGate/photonicat-pm/refs/tags/${latest_version}/debian/changelog"
|
|
debian_version=$(curl -s "${changelog_url}" | head -1 | grep -oP 'photonicat-pm \(\K[^)]+')
|
|
photonicat_pm_url="https://github.com/HackingGate/photonicat-pm/releases/download/${latest_version}/photonicat-pm-dkms_${debian_version}_all.deb"
|
|
if [[ "${GITHUB_MIRROR}" == "ghproxy" ]]; then
|
|
ghproxy_header="https://ghfast.top/"
|
|
photonicat_pm_url=${ghproxy_header}${photonicat_pm_url}
|
|
fi
|
|
photonicat_pm_dkms_file_name=photonicat-pm-dkms_${debian_version}_all.deb
|
|
use_clean_environment="yes" chroot_sdcard "curl -fsSL -o /tmp/${photonicat_pm_dkms_file_name} '${photonicat_pm_url}'"
|
|
display_alert "Install photonicat-pm packages, will build kernel module in chroot" "${EXTENSION}" "info"
|
|
declare -ag if_error_find_files_sdcard=("/var/lib/dkms/photonicat-pm*/*/build/*.log")
|
|
use_clean_environment="yes" chroot_sdcard_apt_get_install "/tmp/${photonicat_pm_dkms_file_name}"
|
|
use_clean_environment="yes" chroot_sdcard "rm -f /tmp/photonicat-pm*.deb"
|
|
}
|