lol

Merge pull request #236282 from OPNA2608/init/dbus-testers

authored by

Sandro and committed by
GitHub
b0e1167d 063ead5a

+649
+9
maintainers/team-list.nix
··· 477 477 enableFeatureFreezePing = true; 478 478 }; 479 479 480 + lomiri = { 481 + members = [ 482 + OPNA2608 483 + ]; 484 + scope = "Maintain Lomiri desktop environment and related packages."; 485 + shortName = "Lomiri"; 486 + enableFeatureFreezePing = true; 487 + }; 488 + 480 489 lumiguide = { 481 490 # Verify additions by approval of an already existing member of the team. 482 491 members = [
+16
pkgs/desktops/lomiri/default.nix
··· 1 + { lib 2 + , pkgs 3 + , libsForQt5 4 + }: 5 + 6 + let 7 + packages = self: let 8 + inherit (self) callPackage; 9 + in { 10 + #### Development tools / libraries 11 + cmake-extras = callPackage ./development/cmake-extras { }; 12 + gmenuharness = callPackage ./development/gmenuharness { }; 13 + lomiri-api = callPackage ./development/lomiri-api { }; 14 + }; 15 + in 16 + lib.makeScope libsForQt5.newScope packages
+49
pkgs/desktops/lomiri/development/cmake-extras/default.nix
··· 1 + { stdenvNoCC 2 + , lib 3 + , fetchFromGitLab 4 + , cmake 5 + , qtbase 6 + }: 7 + 8 + stdenvNoCC.mkDerivation { 9 + pname = "cmake-extras"; 10 + version = "unstable-2022-11-21"; 11 + 12 + src = fetchFromGitLab { 13 + owner = "ubports"; 14 + repo = "development/core/cmake-extras"; 15 + rev = "99aab4514ee182cb7a94821b4b51e4d8cb9a82ef"; 16 + hash = "sha256-axj5QxgDrHy0HiZkfrbm22hVvSCKkWFoQC8MdQMm9tg="; 17 + }; 18 + 19 + postPatch = '' 20 + # We have nothing to build here, no need to depend on a C compiler 21 + substituteInPlace CMakeLists.txt \ 22 + --replace 'project(cmake-extras)' 'project(cmake-extras NONE)' 23 + 24 + # This is in a function that reverse dependencies use to determine where to install their files to 25 + substituteInPlace src/QmlPlugins/QmlPluginsConfig.cmake \ 26 + --replace "\''${CMAKE_INSTALL_LIBDIR}/qt5/qml" "\''${CMAKE_INSTALL_PREFIX}/${qtbase.qtQmlPrefix}" 27 + ''; 28 + 29 + strictDeps = true; 30 + 31 + # Produces no binaries 32 + dontWrapQtApps = true; 33 + 34 + nativeBuildInputs = [ 35 + cmake 36 + ]; 37 + 38 + buildInputs = [ 39 + qtbase 40 + ]; 41 + 42 + meta = with lib; { 43 + description = "A collection of add-ons for the CMake build tool"; 44 + homepage = "https://gitlab.com/ubports/development/core/cmake-extras/"; 45 + license = licenses.gpl3Only; 46 + maintainers = teams.lomiri.members; 47 + platforms = platforms.all; 48 + }; 49 + }
+96
pkgs/desktops/lomiri/development/gmenuharness/default.nix
··· 1 + { stdenv 2 + , lib 3 + , fetchFromGitLab 4 + , fetchpatch 5 + , gitUpdater 6 + , testers 7 + , cmake 8 + , cmake-extras 9 + , dbus 10 + , dbus-test-runner 11 + , glib 12 + , gtest 13 + , libqtdbustest 14 + , lomiri-api 15 + , pkg-config 16 + , qtbase 17 + }: 18 + 19 + stdenv.mkDerivation (finalAttrs: { 20 + pname = "gmenuharness"; 21 + version = "0.1.4"; 22 + 23 + src = fetchFromGitLab { 24 + owner = "ubports"; 25 + repo = "development/core/gmenuharness"; 26 + rev = finalAttrs.version; 27 + hash = "sha256-MswB8cQvz3JvcJL2zj7szUOBzKRjxzJO7/x+87m7E7c="; 28 + }; 29 + 30 + patches = [ 31 + # Remove when version > 0.1.4 32 + (fetchpatch { 33 + name = "0001-gmenuharness-Rename-type-attribute-from-x-canonical-type-to-x-lomiri-type.patch"; 34 + url = "https://gitlab.com/ubports/development/core/gmenuharness/-/commit/70e9ed85792a6ac1950faaf26391ce91e69486ab.patch"; 35 + hash = "sha256-jeue0qrl2JZCt/Yfj4jT210wsF/E+MlbtNT/yFTcw5I="; 36 + }) 37 + ]; 38 + 39 + strictDeps = true; 40 + 41 + nativeBuildInputs = [ 42 + cmake 43 + pkg-config 44 + ]; 45 + 46 + buildInputs = [ 47 + cmake-extras 48 + glib 49 + lomiri-api 50 + qtbase 51 + ]; 52 + 53 + nativeCheckInputs = [ 54 + dbus 55 + dbus-test-runner 56 + ]; 57 + 58 + checkInputs = [ 59 + gtest 60 + libqtdbustest 61 + ]; 62 + 63 + cmakeFlags = [ 64 + "-Denable_tests=${lib.boolToString finalAttrs.doCheck}" 65 + ]; 66 + 67 + dontWrapQtApps = true; 68 + 69 + doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform; 70 + 71 + enableParallelChecking = false; 72 + 73 + checkPhase = '' 74 + runHook preCheck 75 + 76 + dbus-test-runner -t make -p test -p "''${enableParallelChecking:+-j $NIX_BUILD_CORES}" 77 + 78 + runHook postCheck 79 + ''; 80 + 81 + passthru = { 82 + tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; 83 + updateScript = gitUpdater { }; 84 + }; 85 + 86 + meta = with lib; { 87 + description = "Library to test GMenuModel structures"; 88 + homepage = "https://gitlab.com/ubports/development/core/gmenuharness"; 89 + license = licenses.gpl3Only; 90 + maintainers = teams.lomiri.members; 91 + platforms = platforms.unix; 92 + pkgConfigModules = [ 93 + "libgmenuharness" 94 + ]; 95 + }; 96 + })
+106
pkgs/desktops/lomiri/development/lomiri-api/default.nix
··· 1 + { stdenv 2 + , lib 3 + , fetchFromGitLab 4 + , gitUpdater 5 + , makeFontsConf 6 + , testers 7 + , cmake 8 + , cmake-extras 9 + , dbus 10 + , doxygen 11 + , glib 12 + , graphviz 13 + , gtest 14 + , libqtdbustest 15 + , pkg-config 16 + , python3 17 + , qtbase 18 + , qtdeclarative 19 + }: 20 + 21 + stdenv.mkDerivation (finalAttrs: { 22 + pname = "lomiri-api"; 23 + version = "0.2.1"; 24 + 25 + src = fetchFromGitLab { 26 + owner = "ubports"; 27 + repo = "development/core/lomiri-api"; 28 + rev = finalAttrs.version; 29 + hash = "sha256-UTl0vObSlEvHuLmDt7vS3yEqZWGklJ9tVwlUAtRSTlU="; 30 + }; 31 + 32 + outputs = [ "out" "dev" "doc" ]; 33 + 34 + postPatch = '' 35 + patchShebangs $(find test -name '*.py') 36 + 37 + substituteInPlace data/*.pc.in \ 38 + --replace "\''${prefix}/@CMAKE_INSTALL_LIBDIR@" "\''${prefix}/lib" 39 + 40 + # Variable is queried via pkg-config by reverse dependencies 41 + # TODO This is likely not supposed to be the regular Qt QML import prefix 42 + # but otherwise i.e. lomiri-notifications cannot be found in lomiri 43 + substituteInPlace CMakeLists.txt \ 44 + --replace 'SHELL_PLUGINDIR ''${CMAKE_INSTALL_LIBDIR}/lomiri/qml' 'SHELL_PLUGINDIR ${qtbase.qtQmlPrefix}' 45 + ''; 46 + 47 + strictDeps = true; 48 + 49 + nativeBuildInputs = [ 50 + cmake 51 + doxygen 52 + graphviz 53 + pkg-config 54 + ]; 55 + 56 + buildInputs = [ 57 + cmake-extras 58 + glib 59 + gtest 60 + libqtdbustest 61 + qtbase 62 + qtdeclarative 63 + ]; 64 + 65 + nativeCheckInputs = [ 66 + dbus 67 + python3 68 + ]; 69 + 70 + dontWrapQtApps = true; 71 + 72 + FONTCONFIG_FILE = makeFontsConf { fontDirectories = [ ]; }; 73 + 74 + preBuild = '' 75 + # Makes fontconfig produce less noise in logs 76 + export HOME=$TMPDIR 77 + ''; 78 + 79 + doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform; 80 + 81 + preCheck = '' 82 + # needs minimal plugin and QtTest QML 83 + export QT_PLUGIN_PATH=${lib.getBin qtbase}/${qtbase.qtPluginPrefix} 84 + export QML2_IMPORT_PATH=${lib.getBin qtdeclarative}/${qtbase.qtQmlPrefix} 85 + ''; 86 + 87 + passthru = { 88 + tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; 89 + updateScript = gitUpdater { }; 90 + }; 91 + 92 + meta = with lib; { 93 + description = "Lomiri API Library for integrating with the Lomiri shell"; 94 + homepage = "https://gitlab.com/ubports/development/core/lomiri-api"; 95 + license = with licenses; [ lgpl3Only gpl3Only ]; 96 + maintainers = teams.lomiri.members; 97 + platforms = platforms.linux; 98 + pkgConfigModules = [ 99 + "liblomiri-api" 100 + "lomiri-shell-api" 101 + "lomiri-shell-application" 102 + "lomiri-shell-launcher" 103 + "lomiri-shell-notifications" 104 + ]; 105 + }; 106 + })
+93
pkgs/development/libraries/libqtdbusmock/default.nix
··· 1 + { stdenv 2 + , lib 3 + , fetchbzr 4 + , testers 5 + , cmake 6 + , cmake-extras 7 + , dbus 8 + , dbus-test-runner 9 + , gtest 10 + , libqtdbustest 11 + , networkmanager 12 + , pkg-config 13 + , procps 14 + , python3 15 + , qtbase 16 + }: 17 + 18 + stdenv.mkDerivation (finalAttrs: { 19 + pname = "libqtdbusmock"; 20 + version = "unstable-2017-03-16"; 21 + 22 + src = fetchbzr { 23 + url = "lp:libqtdbusmock"; 24 + rev = "49"; 25 + sha256 = "sha256-q3jL8yGLgcNxXHPh9M9cTVtUvonrBUPNxuPJIvu7Q/s="; 26 + }; 27 + 28 + postPatch = '' 29 + # Look for the new(?) name 30 + substituteInPlace CMakeLists.txt \ 31 + --replace 'NetworkManager' 'libnm' 32 + 33 + # Workaround for "error: expected unqualified-id before 'public'" on "**signals" 34 + sed -i -e '/add_definitions/a -DQT_NO_KEYWORDS' CMakeLists.txt 35 + '' + lib.optionalString (!finalAttrs.doCheck) '' 36 + # Don't build tests when we're not running them 37 + sed -i -e '/add_subdirectory(tests)/d' CMakeLists.txt 38 + ''; 39 + 40 + strictDeps = true; 41 + 42 + nativeBuildInputs = [ 43 + cmake 44 + pkg-config 45 + ]; 46 + 47 + buildInputs = [ 48 + cmake-extras 49 + libqtdbustest 50 + networkmanager 51 + qtbase 52 + ]; 53 + 54 + nativeCheckInputs = [ 55 + dbus 56 + dbus-test-runner 57 + procps 58 + (python3.withPackages (ps: with ps; [ 59 + python-dbusmock 60 + ])) 61 + ]; 62 + 63 + checkInputs = [ 64 + gtest 65 + ]; 66 + 67 + dontWrapQtApps = true; 68 + 69 + doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform; 70 + 71 + enableParallelChecking = false; 72 + 73 + checkPhase = '' 74 + runHook preCheck 75 + 76 + dbus-test-runner -t make -p test -p "''${enableParallelChecking:+-j $NIX_BUILD_CORES}" 77 + 78 + runHook postCheck 79 + ''; 80 + 81 + passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; 82 + 83 + meta = with lib; { 84 + description = "Library for mocking DBus interactions using Qt"; 85 + homepage = "https://launchpad.net/libqtdbusmock"; 86 + license = licenses.lgpl3Only; 87 + platforms = platforms.unix; 88 + maintainers = teams.lomiri.members; 89 + pkgConfigModules = [ 90 + "libqtdbusmock-1" 91 + ]; 92 + }; 93 + })
+102
pkgs/development/libraries/libqtdbustest/default.nix
··· 1 + { stdenv 2 + , lib 3 + , fetchbzr 4 + , fetchpatch 5 + , testers 6 + , cmake 7 + , cmake-extras 8 + , dbus 9 + , dbus-test-runner 10 + , gtest 11 + , pkg-config 12 + , procps 13 + , python3 14 + , qtbase 15 + }: 16 + 17 + stdenv.mkDerivation (finalAttrs: { 18 + pname = "libqtdbustest"; 19 + version = "unstable-2017-01-06"; 20 + 21 + src = fetchbzr { 22 + url = "lp:libqtdbustest"; 23 + rev = "42"; 24 + sha256 = "sha256-5MQdGGtEVE/pM9u0B0xFXyITiRln9p+8/MLtrrCZqi8="; 25 + }; 26 + 27 + patches = [ 28 + # Tests are overly pedantic when looking for launched process names in `ps`, break on python wrapper vs real python 29 + # Just check if basename + arguments match, like libqtdbusmock does 30 + ./less-pedantic-process-finding.patch 31 + 32 + # Disable QProcess start timeout 33 + (fetchpatch { 34 + url = "https://salsa.debian.org/debian-ayatana-team/libqtdbustest/-/raw/0788df10bc6f2aa47c2b73fc1df944686a9ace1e/debian/patches/1003_no-QProcess-waitForstarted-timeout.patch"; 35 + hash = "sha256-ThDbn6URvkj5ARDMj+xO0fb1Qh2YQRzVy24O03KglHI="; 36 + }) 37 + 38 + # More robust dbus address reading 39 + (fetchpatch { 40 + url = "https://salsa.debian.org/debian-ayatana-team/libqtdbustest/-/raw/7e55c79cd032c702b30d834c1fb0b65661fc6eeb/debian/patches/1004_make-reading-address-from-dbus-daemon-more-robust.patch"; 41 + hash = "sha256-hq8pdducp/udxoGWGt1dgL/7VHcbJO/oT1dOY1zew8M="; 42 + }) 43 + ]; 44 + 45 + strictDeps = true; 46 + 47 + postPatch = lib.optionalString (!finalAttrs.doCheck) '' 48 + # Don't build tests when we're not running them 49 + sed -i -e '/add_subdirectory(tests)/d' CMakeLists.txt 50 + ''; 51 + 52 + nativeBuildInputs = [ 53 + cmake 54 + pkg-config 55 + ]; 56 + 57 + buildInputs = [ 58 + cmake-extras 59 + qtbase 60 + ]; 61 + 62 + nativeCheckInputs = [ 63 + dbus 64 + dbus-test-runner 65 + procps 66 + (python3.withPackages (ps: with ps; [ 67 + python-dbusmock 68 + ])) 69 + ]; 70 + 71 + checkInputs = [ 72 + gtest 73 + ]; 74 + 75 + dontWrapQtApps = true; 76 + 77 + doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform; 78 + 79 + enableParallelChecking = false; 80 + 81 + checkPhase = '' 82 + runHook preCheck 83 + 84 + dbus-test-runner -t make -p test -p "''${enableParallelChecking:+-j $NIX_BUILD_CORES}" 85 + 86 + runHook postCheck 87 + ''; 88 + 89 + passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; 90 + 91 + meta = with lib; { 92 + description = "Library for testing DBus interactions using Qt"; 93 + homepage = "https://launchpad.net/libqtdbustest"; 94 + license = licenses.lgpl3Only; 95 + platforms = platforms.unix; 96 + maintainers = teams.lomiri.members; 97 + mainProgram = "qdbus-simple-test-runner"; 98 + pkgConfigModules = [ 99 + "libqtdbustest-1" 100 + ]; 101 + }; 102 + })
+86
pkgs/development/libraries/libqtdbustest/less-pedantic-process-finding.patch
··· 1 + diff '--color=auto' -ur '--color=never' a/tests/libqtdbustest/TestDBusTestRunner.cpp b/tests/libqtdbustest/TestDBusTestRunner.cpp 2 + --- a/tests/libqtdbustest/TestDBusTestRunner.cpp 2023-01-20 21:36:16.948292559 +0100 3 + +++ b/tests/libqtdbustest/TestDBusTestRunner.cpp 2023-01-20 21:55:40.554530221 +0100 4 + @@ -44,7 +44,7 @@ 5 + TEST_F(TestDBusTestRunner, StartsSessionService) { 6 + QSharedPointer<QProcessDBusService> process( 7 + new QProcessDBusService("test.session.name", 8 + - QDBusConnection::SessionBus, "/usr/bin/python3", 9 + + QDBusConnection::SessionBus, "python3", 10 + QStringList() << "-m" << "dbusmock" << "test.session.name" 11 + << "/test/object" << "test.Interface")); 12 + 13 + @@ -58,15 +58,14 @@ 14 + pgrep.waitForFinished(); 15 + pgrep.waitForReadyRead(); 16 + 17 + - EXPECT_EQ( 18 + - "/usr/bin/python3 -m dbusmock test.session.name /test/object test.Interface", 19 + - QString::fromUtf8(pgrep.readAll().trimmed()).toStdString()); 20 + + EXPECT_TRUE( 21 + + pgrep.readAll().contains("python3 -m dbusmock test.session.name /test/object test.Interface")); 22 + } 23 + 24 + TEST_F(TestDBusTestRunner, StartsSystemService) { 25 + QSharedPointer<QProcessDBusService> process( 26 + new QProcessDBusService("test.system.name", 27 + - QDBusConnection::SystemBus, "/usr/bin/python3", 28 + + QDBusConnection::SystemBus, "python3", 29 + QStringList() << "-m" << "dbusmock" << "-s" 30 + << "test.system.name" << "/test/object" 31 + << "test.Interface")); 32 + @@ -81,9 +80,8 @@ 33 + pgrep.waitForFinished(); 34 + pgrep.waitForReadyRead(); 35 + 36 + - EXPECT_EQ( 37 + - "/usr/bin/python3 -m dbusmock -s test.system.name /test/object test.Interface", 38 + - QString::fromUtf8(pgrep.readAll().trimmed()).toStdString()); 39 + + EXPECT_TRUE( 40 + + pgrep.readAll().contains("python3 -m dbusmock -s test.system.name /test/object test.Interface")); 41 + } 42 + 43 + TEST_F(TestDBusTestRunner, SetsEnvironmentVariables) { 44 + diff '--color=auto' -ur '--color=never' a/tests/libqtdbustest/TestQProcessDBusService.cpp b/tests/libqtdbustest/TestQProcessDBusService.cpp 45 + --- a/tests/libqtdbustest/TestQProcessDBusService.cpp 2023-01-20 21:36:16.948292559 +0100 46 + +++ b/tests/libqtdbustest/TestQProcessDBusService.cpp 2023-01-20 21:54:34.633384937 +0100 47 + @@ -45,7 +45,7 @@ 48 + 49 + TEST_F(TestQProcessDBusService, WaitsForServiceAppeared) { 50 + QProcessDBusService process("test.name", QDBusConnection::SessionBus, 51 + - "/usr/bin/python3", 52 + + "python3", 53 + QStringList() << "-m" << "dbusmock" << "test.name" << "/test/object" 54 + << "test.Interface"); 55 + 56 + @@ -58,14 +58,13 @@ 57 + pgrep.waitForFinished(); 58 + pgrep.waitForReadyRead(); 59 + 60 + - EXPECT_EQ( 61 + - "/usr/bin/python3 -m dbusmock test.name /test/object test.Interface", 62 + - QString::fromUtf8(pgrep.readAll().trimmed()).toStdString()); 63 + + EXPECT_TRUE( 64 + + pgrep.readAll().contains("python3 -m dbusmock test.name /test/object test.Interface")); 65 + } 66 + 67 + TEST_F(TestQProcessDBusService, ThrowsErrorForFailToStart) { 68 + QProcessDBusService process("test.name", QDBusConnection::SessionBus, 69 + - "/usr/bin/python3", 70 + + "python3", 71 + QStringList() << "-m" << "dbusmock" << "not.test.name" 72 + << "/test/object" << "test.Interface"); 73 + 74 + diff '--color=auto' -ur '--color=never' a/tests/libqtdbustest/TestSuicidalProcess.cpp b/tests/libqtdbustest/TestSuicidalProcess.cpp 75 + --- a/tests/libqtdbustest/TestSuicidalProcess.cpp 2023-01-20 21:36:16.948292559 +0100 76 + +++ b/tests/libqtdbustest/TestSuicidalProcess.cpp 2023-01-20 21:55:07.219951081 +0100 77 + @@ -51,8 +51,7 @@ 78 + pgrep.waitForFinished(); 79 + pgrep.waitForReadyRead(); 80 + 81 + - EXPECT_EQ("sleep 5", 82 + - QString::fromUtf8(pgrep.readAll().trimmed()).toStdString()); 83 + + EXPECT_TRUE(pgrep.readAll().contains("sleep 5")); 84 + } 85 + 86 + } // namespace
+80
pkgs/development/tools/dbus-test-runner/default.nix
··· 1 + { stdenv 2 + , lib 3 + , fetchbzr 4 + , testers 5 + , autoreconfHook 6 + , bash 7 + , coreutils 8 + , dbus 9 + , dbus-glib 10 + , glib 11 + , intltool 12 + , pkg-config 13 + , python3 14 + , xvfb-run 15 + }: 16 + 17 + stdenv.mkDerivation (finalAttrs: { 18 + pname = "dbus-test-runner"; 19 + version = "unstable-2019-10-02"; 20 + 21 + src = fetchbzr { 22 + url = "lp:dbus-test-runner"; 23 + rev = "109"; 24 + sha256 = "sha256-4yH19X98SVqpviCBIWzIX6FYHWxCbREpuKCNjQuTFDk="; 25 + }; 26 + 27 + postPatch = '' 28 + patchShebangs tests/test-wait-outputer 29 + 30 + # Tests `cat` together build shell scripts 31 + # true is a PATHable call, bash a shebang 32 + substituteInPlace tests/Makefile.am \ 33 + --replace '/bin/true' 'true' \ 34 + --replace '/bin/bash' '${lib.getExe bash}' 35 + ''; 36 + 37 + strictDeps = true; 38 + 39 + nativeBuildInputs = [ 40 + autoreconfHook 41 + glib # for autoconf macro, gtester, gdbus 42 + intltool 43 + pkg-config 44 + ]; 45 + 46 + buildInputs = [ 47 + dbus-glib 48 + glib 49 + ]; 50 + 51 + nativeCheckInputs = [ 52 + bash 53 + dbus 54 + (python3.withPackages (ps: with ps; [ 55 + python-dbusmock 56 + ])) 57 + xvfb-run 58 + ]; 59 + 60 + enableParallelBuilding = true; 61 + 62 + doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform; 63 + 64 + checkFlags = [ 65 + "XVFB_RUN=${lib.getExe xvfb-run}" 66 + ]; 67 + 68 + passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; 69 + 70 + meta = with lib; { 71 + description = "A small little utility to run a couple of executables under a new DBus session for testing"; 72 + homepage = "https://launchpad.net/dbus-test-runner"; 73 + license = licenses.gpl3Only; 74 + platforms = platforms.unix; 75 + maintainers = teams.lomiri.members; 76 + pkgConfigModules = [ 77 + "dbustest-1" 78 + ]; 79 + }; 80 + })
+12
pkgs/top-level/all-packages.nix
··· 17970 17970 17971 17971 ansible-doctor = callPackage ../tools/admin/ansible/doctor.nix { }; 17972 17972 17973 + dbus-test-runner = callPackage ../development/tools/dbus-test-runner { }; 17974 + 17973 17975 phpunit = callPackage ../development/tools/misc/phpunit { }; 17974 17976 17975 17977 teller = callPackage ../development/tools/teller { }; ··· 22506 22508 liboping = callPackage ../development/libraries/liboping { }; 22507 22509 22508 22510 libplist = callPackage ../development/libraries/libplist { }; 22511 + 22512 + libqtdbusmock = libsForQt5.callPackage ../development/libraries/libqtdbusmock { 22513 + inherit (lomiri) cmake-extras; 22514 + }; 22515 + 22516 + libqtdbustest = libsForQt5.callPackage ../development/libraries/libqtdbustest { 22517 + inherit (lomiri) cmake-extras; 22518 + }; 22509 22519 22510 22520 libre = callPackage ../development/libraries/libre { }; 22511 22521 ··· 37953 37963 gnome-2048 = callPackage ../desktops/gnome/games/gnome-2048 { }; 37954 37964 37955 37965 gnustep = recurseIntoAttrs (callPackage ../desktops/gnustep { }); 37966 + 37967 + lomiri = recurseIntoAttrs (callPackage ../desktops/lomiri { }); 37956 37968 37957 37969 lumina = recurseIntoAttrs (callPackage ../desktops/lumina { }); 37958 37970