chromium,chromedriver: 129.0.6668.91 -> 129.0.6668.100
[NixPkgs.git] / maintainers / scripts / kde / collect-missing-deps.py
blobaec2c29588f0b43673608a66c4335b67c6d94c63
1 #!/usr/bin/env nix-shell
2 #!nix-shell -i python3 -p python3
3 import pathlib
5 OK_MISSING = {
6 # we don't use precompiled QML
7 'Qt6QuickCompiler',
8 'Qt6QmlCompilerPlusPrivate',
9 # usually used for version numbers
10 'Git',
11 # useless by itself, will warn if something else is not found
12 'PkgConfig',
13 # license verification
14 'ReuseTool',
15 # dev only
16 'ClangFormat',
17 # doesn't exist
18 'Qt6X11Extras',
21 OK_MISSING_BY_PACKAGE = {
22 "angelfish": {
23 "Qt6Feedback", # we don't have it
25 "attica": {
26 "Python3", # only used for license checks
28 "discover": {
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
33 "elisa": {
34 "UPNPQT", # upstream says it's broken
36 "extra-cmake-modules": {
37 "Sphinx", # only used for docs, bloats closure size
38 "QCollectionGenerator"
40 "gwenview": {
41 "Tiff", # duplicate?
43 "kio-extras-kf5": {
44 "KDSoapWSDiscoveryClient", # actually vendored on KF5 version
46 "kitinerary": {
47 "OsmTools", # used for map data updates, we use prebuilt
49 "kosmindoormap": {
50 "OsmTools", # same
51 "Protobuf",
53 "kpty": {
54 "UTEMPTER", # we don't have it and it probably wouldn't work anyway
56 "kpublictransport": {
57 "OsmTools", # same
58 "PolyClipping",
59 "Protobuf",
61 "krfb": {
62 "Qt6XkbCommonSupport", # not real
64 "kuserfeedback": {
65 "Qt6Svg", # all used for backend console stuff we don't ship
66 "QmlLint",
67 "Qt6Charts",
68 "FLEX",
69 "BISON",
70 "Php",
71 "PhpUnit",
73 "kwin": {
74 "display-info", # newer versions identify as libdisplay-info
76 "libksysguard": {
77 "Libcap", # used to call setcap at build time and nothing else
79 "mlt": {
80 "Qt5", # intentionally disabled
81 "SWIG",
83 "plasma-desktop": {
84 "scim", # upstream is dead, not packaged in Nixpkgs
86 "poppler-qt6": {
87 "gobject-introspection-1.0", # we don't actually want to build the GTK variant
88 "gdk-pixbuf-2.0",
89 "gtk+-3.0",
91 "powerdevil": {
92 "DDCUtil", # cursed, intentionally disabled
94 "print-manager": {
95 "PackageKitQt6", # used for auto-installing drivers which does not work for obvious reasons
97 "pulseaudio-qt": {
98 "Qt6Qml", # tests only
99 "Qt6Quick",
101 "skladnik": {
102 "POVRay", # too expensive to rerender all the assets
104 "syntax-highlighting": {
105 "XercesC", # only used for extra validation at build time
109 def main():
110 here = pathlib.Path(__file__).parent.parent.parent.parent
111 logs = (here / "logs").glob("*.log")
113 for log in sorted(logs):
114 pname = log.stem
116 missing = []
117 is_in_block = False
118 with log.open(errors="replace") as fd:
119 for line in fd:
120 line = line.strip()
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:":
125 is_in_block = True
126 elif line.startswith("--") and is_in_block:
127 is_in_block = False
128 elif line.startswith("*") and is_in_block:
129 package = line.removeprefix("* ")
130 missing.append(package)
132 missing = {
133 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()))
138 if missing:
139 print(pname + ":")
140 for line in missing:
141 print(" -", line)
142 print()
144 if __name__ == '__main__':
145 main()