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
77 "Libcap", # used to call setcap at build time and nothing else
80 "Qt5", # intentionally disabled
84 "scim", # upstream is dead, not packaged in Nixpkgs
87 "gobject-introspection-1.0", # we don't actually want to build the GTK variant
92 "DDCUtil", # cursed, intentionally disabled
95 "PackageKitQt6", # used for auto-installing drivers which does not work for obvious reasons
98 "Qt6Qml", # tests only
102 "POVRay", # too expensive to rerender all the assets
104 "syntax-highlighting": {
105 "XercesC", # only used for extra validation at build time
110 here
= pathlib
.Path(__file__
).parent
.parent
.parent
.parent
111 logs
= (here
/ "logs").glob("*.log")
113 for log
in sorted(logs
):
118 with log
.open(errors
="replace") as fd
:
121 if line
.startswith("-- No package '"):
122 package
= line
.removeprefix("-- No package '").removesuffix("' found")
123 missing
.append(package
)
124 if line
== "-- The following OPTIONAL packages have not been found:" or line
== "-- The following RECOMMENDED packages have not been found:":
126 elif line
.startswith("--") and is_in_block
:
128 elif line
.startswith("*") and is_in_block
:
129 package
= line
.removeprefix("* ")
130 missing
.append(package
)
134 for package
in missing
135 if not any(package
.startswith(i
) for i
in OK_MISSING | OK_MISSING_BY_PACKAGE
.get(pname
, set()))
144 if __name__
== '__main__':