1 #!/usr/bin/env nix-shell
2 #!nix-shell -i python3 -p python3
6 # we don't use precompiled QML
8 'Qt6QmlCompilerPlusPrivate',
9 # usually used for version numbers
11 # useless by itself, will warn if something else is not found
13 # license verification
21 OK_MISSING_BY_PACKAGE
= {
23 "Qt6Feedback", # we don't have it
26 "Python3", # only used for license checks
29 "rpm-ostree-1", # we don't have rpm-ostree (duh)
30 "Snapd", # we don't have snaps and probably never will
31 "packagekitqt6", # intentionally disabled
34 "UPNPQT", # upstream says it's broken
36 "extra-cmake-modules": {
37 "Sphinx", # only used for docs, bloats closure size
38 "QCollectionGenerator"
44 "KDSoapWSDiscoveryClient", # actually vendored on KF5 version
47 "OsmTools", # used for map data updates, we use prebuilt
54 "UTEMPTER", # we don't have it and it probably wouldn't work anyway
62 "Qt6XkbCommonSupport", # not real
65 "Qt6Svg", # all used for backend console stuff we don't ship
74 "display-info", # newer versions identify as libdisplay-info
75 "Libcap", # used to call setcap at build time and nothing else
78 "Libcap", # used to call setcap at build time and nothing else
81 "Qt5", # intentionally disabled
85 "scim", # upstream is dead, not packaged in Nixpkgs
88 "gobject-introspection-1.0", # we don't actually want to build the GTK variant
93 "DDCUtil", # cursed, intentionally disabled
94 "Libcap", # used to call setcap at build time and nothing else
97 "PackageKitQt6", # used for auto-installing drivers which does not work for obvious reasons
100 "Qt6Qml", # tests only
104 "POVRay", # too expensive to rerender all the assets
106 "syntax-highlighting": {
107 "XercesC", # only used for extra validation at build time
112 here
= pathlib
.Path(__file__
).parent
.parent
.parent
.parent
113 logs
= (here
/ "logs").glob("*.log")
115 for log
in sorted(logs
):
120 with log
.open(errors
="replace") as fd
:
123 if line
.startswith("-- No package '"):
124 package
= line
.removeprefix("-- No package '").removesuffix("' found")
125 missing
.append(package
)
126 if line
== "-- The following OPTIONAL packages have not been found:" or line
== "-- The following RECOMMENDED packages have not been found:":
128 elif line
.startswith("--") and is_in_block
:
130 elif line
.startswith("*") and is_in_block
:
131 package
= line
.removeprefix("* ")
132 missing
.append(package
)
136 for package
in missing
137 if not any(package
.startswith(i
) for i
in OK_MISSING | OK_MISSING_BY_PACKAGE
.get(pname
, set()))
146 if __name__
== '__main__':