diff options
Diffstat (limited to 'maintainers/scripts/kde/collect-missing-deps.py')
-rwxr-xr-x | maintainers/scripts/kde/collect-missing-deps.py | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/maintainers/scripts/kde/collect-missing-deps.py b/maintainers/scripts/kde/collect-missing-deps.py new file mode 100755 index 000000000000..f3943338b57f --- /dev/null +++ b/maintainers/scripts/kde/collect-missing-deps.py @@ -0,0 +1,127 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i python3 -p python3 +import pathlib + +OK_MISSING = { + # we don't use precompiled QML + 'Qt6QuickCompiler', + 'Qt6QmlCompilerPlusPrivate', + # usually used for version numbers + 'Git', + # useless by itself, will warn if something else is not found + 'PkgConfig', + # license verification + 'ReuseTool', + # dev only + 'ClangFormat', + # doesn't exist + 'Qt6X11Extras', +} + +OK_MISSING_BY_PACKAGE = { + "angelfish": { + "Qt6Feedback", # we don't have it + }, + "attica": { + "Python3", # only used for license checks + }, + "discover": { + "rpm-ostree-1", # we don't have rpm-ostree (duh) + "Snapd", # we don't have snaps and probably never will + }, + "elisa": { + "UPNPQT", # upstream says it's broken + }, + "extra-cmake-modules": { + "Sphinx", # only used for docs, bloats closure size + "QCollectionGenerator" + }, + "kio-extras-kf5": { + "KDSoapWSDiscoveryClient", # actually vendored on KF5 version + }, + "kitinerary": { + "OsmTools", # used for map data updates, we use prebuilt + }, + "kosmindoormap": { + "OsmTools", # same + "Protobuf", + }, + "kpty": { + "UTEMPTER", # we don't have it and it probably wouldn't work anyway + }, + "kpublictransport": { + "OsmTools", # same + "PolyClipping", + "Protobuf", + }, + "krfb": { + "Qt6XkbCommonSupport", # not real + }, + "kuserfeedback": { + "Qt6Svg", # all used for backend console stuff we don't ship + "QmlLint", + "Qt6Charts", + "FLEX", + "BISON", + "Php", + "PhpUnit", + }, + "kwin": { + "display-info", # newer versions identify as libdisplay-info + }, + "mlt": { + "Qt5", # intentionally disabled + "SWIG", + }, + "plasma-desktop": { + "scim", # upstream is dead, not packaged in Nixpkgs + }, + "powerdevil": { + "DDCUtil", # cursed, intentionally disabled + }, + "pulseaudio-qt": { + "Qt6Qml", # tests only + "Qt6Quick", + }, + "syntax-highlighting": { + "XercesC", # only used for extra validation at build time + } +} + +def main(): + here = pathlib.Path(__file__).parent.parent.parent.parent + logs = (here / "logs").glob("*.log") + + for log in sorted(logs): + pname = log.stem + + missing = [] + is_in_block = False + with log.open(errors="replace") as fd: + for line in fd: + line = line.strip() + if line.startswith("-- No package '"): + package = line.removeprefix("-- No package '").removesuffix("' found") + missing.append(package) + if line == "-- The following OPTIONAL packages have not been found:" or line == "-- The following RECOMMENDED packages have not been found:": + is_in_block = True + elif line.startswith("--") and is_in_block: + is_in_block = False + elif line.startswith("*") and is_in_block: + package = line.removeprefix("* ") + missing.append(package) + + missing = { + package + for package in missing + if not any(package.startswith(i) for i in OK_MISSING | OK_MISSING_BY_PACKAGE.get(pname, set())) + } + + if missing: + print(pname + ":") + for line in missing: + print(" -", line) + print() + +if __name__ == '__main__': + main() |