Skip to content

Commit 29259bb

Browse files
committed
Merge remote-tracking branch 'metacraft-labs/dev' into feat/trace-incremental-testing
2 parents 7f0056e + 26e0bd8 commit 29259bb

10 files changed

Lines changed: 223 additions & 7 deletions

File tree

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
## DSL-port M9.R.15q.5.7 — stdlib provisioning stub for ``attica``.
2+
##
3+
## Attica is the KDE Open Collaboration Services (OCS) client library
4+
## ``libKF6Attica.so``. knewstuff 6.10.0's CMakeLists.txt:43 declares
5+
## ``find_package(KF6Attica ${KF_DEP_VERSION} CONFIG REQUIRED)`` as a
6+
## mandatory build dependency (the "Get Hot New Stuff" download
7+
## back-end uses it to talk to OCS servers).
8+
##
9+
## We don't carry a from-source attica recipe yet -- the v1 stretch
10+
## ships kwin and a minimal Plasma 6.x stack; attica's only consumer
11+
## in that tree is knewstuff, and knewstuff is only consumed by
12+
## kwin's "Get New Window Decorations" feature (which has no
13+
## runtime path in a v1 boot). The nix-shipped
14+
## ``nixpkgs#kdePackages.attica`` derivation publishes the cmake
15+
## config + libKF6Attica.so + headers in its ``out`` output.
16+
##
17+
## The ``^*`` suffix asks nix to realize ALL outputs so the resolver's
18+
## multi-output walk (M9.R.14f.10 in resolveNixTool) finds the cmake
19+
## configs and headers consumers need.
20+
##
21+
## TODO(M9.R.10b+): widen the channel set (scoop on Windows, tarball
22+
## as a universal fall-through). Until then the stub keeps the audit
23+
## test green by registering the name + a single nix channel.
24+
25+
import repro_project_dsl
26+
27+
package `attica`:
28+
provisioning:
29+
nixPackage "nixpkgs#kdePackages.attica^*",
30+
executablePath = "lib/libKF6Attica.so",
31+
nixpkgsRev = "addf7cf5f383a3101ecfba091b98d0a1263dc9b8",
32+
nixpkgsNarHash = "sha256-hM20uyap1a0M9d344I692r+ik4gTMyj60cQWO+hAYP8="

libs/repro_dsl_stdlib/src/repro_dsl_stdlib/packages/system_tools.nim

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,8 @@ import ./libcanberra
166166
import ./libepoxy
167167
import ./libdisplayinfo
168168
import ./hwdata
169+
# M9.R.15q.5.7 — attica is the OCS client knewstuff needs.
170+
import ./attica
169171

170172
export bc
171173
export bison
@@ -242,3 +244,4 @@ export libcanberra
242244
export libepoxy
243245
export libdisplayinfo
244246
export hwdata
247+
export attica

libs/repro_tool_profiles/src/repro_tool_profiles.nim

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -828,8 +828,12 @@ proc executableInStorePath(storePath, declaredExecutablePath: string;
828828
# requirement; the consumer threads the parent prefix into
829829
# PKG_CONFIG_PATH at build time rather than spawning the file
830830
# directly.
831+
# M9.R.15q.5.9 — hwdata ships ``share/hwdata/pnp.ids`` (the PnP
832+
# vendor-ID database). Recognise ``.ids`` as a data declaration so
833+
# the executable+permission check is skipped (the file is r--r--r--
834+
# in the nix store).
831835
let dataExts = [".pc", ".so", ".a", ".h", ".hpp", ".cmake", ".json",
832-
".xml", ".txt"]
836+
".xml", ".txt", ".ids"]
833837
let lower = declaredExecutablePath.toLowerAscii
834838
var isDataDecl = false
835839
for ext in dataExts:

recipes/packages/source/kdeclarative/repro.nim

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,14 @@ package kdeclarativeSource:
6060
config:
6161
discard
6262

63-
library libKF6Declarative:
63+
library libKF6CalendarEvents:
64+
## M9.R.15q.5.6.c — kdeclarative 6.10.0 actually installs the
65+
## ``libKF6CalendarEvents.so`` shared library plus a private
66+
## ``libkquickcontrolsprivate.so``. There's no
67+
## ``libKF6Declarative.so`` -- the "KF6Declarative" name is the
68+
## historical package name from the merged ECM era. We claim
69+
## libKF6CalendarEvents (the public one) as the recipe's artifact;
70+
## the private library is consumed via the QML plugins.
6471
discard
6572

6673
build:
@@ -73,7 +80,7 @@ package kdeclarativeSource:
7380
"CMAKE_BUILD_TYPE=Release",
7481
]
7582
let pkg = cmake_package(srcDir = "./src", cacheVars = opts)
76-
discard pkg.library("libKF6Declarative")
83+
discard pkg.library("libKF6CalendarEvents")
7784
finally:
7885
clearCurrentOwningPackageOverride()
7986

recipes/packages/source/knewstuff/repro.nim

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,16 +29,29 @@ package knewstuffSource:
2929
"gcc >=11"
3030

3131
buildDeps:
32-
"extra-cmake-modules >=6.0"
32+
"extra-cmake-modules >=6.0"
3333
"qt6-base >=6.6"
3434
"qt6-tools >=6.6"
35+
## M9.R.15q.5.7 — knewstuff's CMakeLists declares
36+
## ``find_package(Qt6 ... Qml REQUIRED)`` for the QML-bound
37+
## ``KNSCore::QtQuickDialogWrapper`` shim that wraps the C++
38+
## back-end into a QML-accessible model. Qt6Qml is in the
39+
## qt6-declarative recipe.
40+
"qt6-declarative >=6.6"
3541
"kcoreaddons >=6.0"
3642
"kconfig >=6.0"
3743
"ki18n >=6.0"
3844
"kwidgetsaddons >=6.0"
3945
"kxmlgui >=6.0"
4046
"karchive >=6.0"
4147
"kpackage >=6.0"
48+
## M9.R.15q.5.7 — knewstuff's CMakeLists.txt:43 declares
49+
## ``find_package(KF6Attica ... CONFIG REQUIRED)`` for the OCS
50+
## (Open Collaboration Services) client back-end. attica is a
51+
## nix-stub (no from-source sibling yet; only consumer is
52+
## knewstuff which is itself only exercised by kwin's "Get New
53+
## Window Decorations" feature, no v1 runtime path).
54+
"attica >=6.0"
4255

4356
config:
4457
discard

recipes/packages/source/kwin/repro.nim

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,15 @@ package kwinSource:
242242
## qt6-svg supplies the Qt6Svg dependency kwin's QML scene loader
243243
## consumes for vector icons.
244244
"qt6-svg >=6.6"
245+
## M9.R.15q.5.10 — kwin 6.2.5's CMakeLists.txt:60 declares
246+
## ``find_package(Qt6 ... COMPONENTS ... Core5Compat ...)``.
247+
## qt6-5compat ships ``libQt6Core5Compat.so``.
248+
"qt6-5compat >=6.8"
249+
## M9.R.15q.5.10 — kwin 6.2.5's CMakeLists.txt:60 declares
250+
## ``find_package(Qt6 ... COMPONENTS ... Sensors ...)`` for
251+
## auto-rotation on convertible / tablet form factors.
252+
## qt6-sensors ships ``libQt6Sensors.so``.
253+
"qt6-sensors >=6.8"
245254
## libdrm is the kernel DRM client library kwin's DRM backend uses
246255
## to drive direct-rendering on tty consoles. The sibling
247256
## ``libdrmSource`` recipe vendors a compatible version.
@@ -304,9 +313,13 @@ package kwinSource:
304313
"kauth >=6.0"
305314
"kcolorscheme >=6.0"
306315
"kidletime >=6.0"
307-
"kdeclarative >=6.0"
308-
"kcmutils >=6.0"
309-
"knewstuff >=6.0"
316+
## M9.R.15q.5.8 — kdeclarative + kcmutils + knewstuff are
317+
## conditionally required ONLY when KWIN_BUILD_KCMS=ON (see kwin
318+
## upstream CMakeLists.txt:104). With KWIN_BUILD_KCMS=OFF (which
319+
## the cacheVars below set) these are NOT looked up and so the
320+
## from-source auto-recurse should not need to build them. We keep
321+
## kpackage + kirigami because the QML side of kwin's effects
322+
## still uses them.
310323
"kpackage >=6.0"
311324
"kirigami >=6.0"
312325
## hwdata (RUNTIME) for monitor vendor-ID mapping.
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
## Source-from-tarball qt6-5compat recipe — M9.R.15q.5.10 KF6/Plasma blocker.
2+
## qt6-5compat supplies QtCore5Compat (libQt6Core5Compat.so) which kwin
3+
## 6.2.5 declares as a mandatory Qt6 component in its top-level
4+
## ``find_package(Qt6 ... COMPONENTS ... Core5Compat ...)``. Without it
5+
## the kwin compositor build cannot configure.
6+
##
7+
## sha256 = 05c8c088b4cd8331fa8a9c8b7ff7c42a088cb112e673eae5708048d0131264fc
8+
## (computed locally over the vendored
9+
## ``qt5compat-everywhere-src-6.8.1.tar.xz``, 14,632,944 bytes;
10+
## downloaded once from the upstream URL recorded in ``versions:``
11+
## below).
12+
##
13+
## Version 6.8.1 matches sibling qt6-base / qt6-tools / qt6-declarative.
14+
15+
import repro_project_dsl
16+
import repro_dsl_stdlib/constructors
17+
import repro_dsl_stdlib/types/package_result
18+
19+
package qt6Core5CompatSource:
20+
## From-source qt6-5compat — M9.R.15q.5.10 KF6/Plasma blocker.
21+
## Sibling to qt6-base (qt6BaseSource); shares the same 6.8.1 pin.
22+
23+
versions:
24+
"6.8.1":
25+
sourceRevision = "v6.8.1"
26+
sourceUrl = "https://download.qt.io/official_releases/qt/6.8/6.8.1/submodules/qt5compat-everywhere-src-6.8.1.tar.xz"
27+
sourceRepository = "https://code.qt.io/qt/qt5compat.git"
28+
29+
fetch:
30+
## M9.R.15q.5.10 — vendored tarball + file:./ relative URL form
31+
## (introduced M9.R.15q.5.4) so the recipe stays portable across
32+
## hosts and offline-reproducible.
33+
url: "file:./vendor/qt5compat-everywhere-src-6.8.1.tar.xz"
34+
sha256: "05c8c088b4cd8331fa8a9c8b7ff7c42a088cb112e673eae5708048d0131264fc"
35+
extractStrip: 1
36+
37+
nativeBuildDeps:
38+
"cmake >=3.21"
39+
"ninja >=1.10"
40+
"gcc >=11"
41+
"perl >=5.32"
42+
"pkg-config"
43+
"python3 >=3.8"
44+
"qt6-tools >=6.8"
45+
46+
buildDeps:
47+
"qt6-base >=6.8"
48+
49+
config:
50+
discard
51+
52+
library libQt6Core5Compat:
53+
## ``libQt6Core5Compat.so`` — Qt5-compat layer kwin 6.2.5 consumes
54+
## for legacy QTextCodec + QStringList compat shims. v1 records
55+
## the artifact only.
56+
discard
57+
58+
build:
59+
setCurrentOwningPackageOverride("qt6Core5CompatSource")
60+
try:
61+
# Same SBOM disable as siblings (qt6-base / qt6-tools /
62+
# qt6-declarative / qt6-svg). SBOM gen hard-codes the canonical
63+
# Qt-6.8.1 prefix which doesn't match our buildDir/out/usr
64+
# install layout.
65+
let opts = @[
66+
"BUILD_TESTING=OFF",
67+
"CMAKE_BUILD_TYPE=Release",
68+
"QT_BUILD_TESTS=OFF",
69+
"QT_BUILD_EXAMPLES=OFF",
70+
"QT_GENERATE_SBOM=OFF",
71+
]
72+
let pkg = cmake_package(srcDir = "./src", cacheVars = opts)
73+
discard pkg.library("libQt6Core5Compat")
74+
finally:
75+
clearCurrentOwningPackageOverride()
76+
77+
runtimeDeps:
78+
discard
Binary file not shown.
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
## Source-from-tarball qt6-sensors recipe — M9.R.15q.5.10 KF6/Plasma blocker.
2+
## qt6-sensors supplies QtSensors (libQt6Sensors.so) which kwin 6.2.5
3+
## declares as a mandatory Qt6 component in its top-level
4+
## ``find_package(Qt6 ... COMPONENTS ... Sensors ...)`` — kwin uses
5+
## the sensors API for auto-rotation on convertible / tablet form
6+
## factors.
7+
##
8+
## sha256 = 41f49b614850d40c647b80e70ef6be759e8fc90ac6cce3ab6f82a357201d9750
9+
## (computed locally over the vendored
10+
## ``qtsensors-everywhere-src-6.8.1.tar.xz``, 1,498,024 bytes;
11+
## downloaded once from the upstream URL recorded in ``versions:``
12+
## below).
13+
14+
import repro_project_dsl
15+
import repro_dsl_stdlib/constructors
16+
import repro_dsl_stdlib/types/package_result
17+
18+
package qt6SensorsSource:
19+
versions:
20+
"6.8.1":
21+
sourceRevision = "v6.8.1"
22+
sourceUrl = "https://download.qt.io/official_releases/qt/6.8/6.8.1/submodules/qtsensors-everywhere-src-6.8.1.tar.xz"
23+
sourceRepository = "https://code.qt.io/qt/qtsensors.git"
24+
25+
fetch:
26+
url: "file:./vendor/qtsensors-everywhere-src-6.8.1.tar.xz"
27+
sha256: "41f49b614850d40c647b80e70ef6be759e8fc90ac6cce3ab6f82a357201d9750"
28+
extractStrip: 1
29+
30+
nativeBuildDeps:
31+
"cmake >=3.21"
32+
"ninja >=1.10"
33+
"gcc >=11"
34+
"perl >=5.32"
35+
"pkg-config"
36+
"python3 >=3.8"
37+
"qt6-tools >=6.8"
38+
39+
buildDeps:
40+
"qt6-base >=6.8"
41+
## qtsensors's QML bindings need Qt6Qml.
42+
"qt6-declarative >=6.8"
43+
44+
config:
45+
discard
46+
47+
library libQt6Sensors:
48+
discard
49+
50+
build:
51+
setCurrentOwningPackageOverride("qt6SensorsSource")
52+
try:
53+
let opts = @[
54+
"BUILD_TESTING=OFF",
55+
"CMAKE_BUILD_TYPE=Release",
56+
"QT_BUILD_TESTS=OFF",
57+
"QT_BUILD_EXAMPLES=OFF",
58+
"QT_GENERATE_SBOM=OFF",
59+
]
60+
let pkg = cmake_package(srcDir = "./src", cacheVars = opts)
61+
discard pkg.library("libQt6Sensors")
62+
finally:
63+
clearCurrentOwningPackageOverride()
64+
65+
runtimeDeps:
66+
discard
Binary file not shown.

0 commit comments

Comments
 (0)