depot/third_party/nixpkgs/pkgs/desktops/lomiri/development/qtmir/default.nix
Default email bcb2f287e1 Project import generated by Copybara.
GitOrigin-RevId: d603719ec6e294f034936c0d0dc06f689d91b6c3
2024-06-20 20:27:18 +05:30

159 lines
4.3 KiB
Nix

{
stdenv,
lib,
fetchFromGitLab,
fetchpatch,
testers,
cmake,
cmake-extras,
pkg-config,
wrapQtAppsHook,
gsettings-qt,
gtest,
libqtdbustest,
libqtdbusmock,
libuuid,
lomiri-api,
lomiri-app-launch,
lomiri-url-dispatcher,
lttng-ust,
mir_2_15,
process-cpp,
qtbase,
qtdeclarative,
qtsensors,
valgrind,
protobuf,
glm,
boost,
properties-cpp,
glib,
validatePkgConfig,
wayland,
xwayland,
}:
stdenv.mkDerivation (finalAttrs: {
# Not regular qtmir, experimental support for Mir 2.x
# Currently following https://gitlab.com/ubports/development/core/qtmir/-/tree/personal/sunweaver/debian-upstream
pname = "qtmir-debian-upstream";
version = "0.8.0-unstable-2024-03-06";
src = fetchFromGitLab {
owner = "ubports";
repo = "development/core/qtmir";
rev = "de639c3a482ac6c59b9be02abb839a8c96158041";
hash = "sha256-AKSzkGl6bAoR4I2lolNRUp67VS/PiZnrPpCYtTlKWKc=";
};
outputs = [
"out"
"dev"
];
patches = [
# Mir 2.15 compatibility patch
# Remove when https://gitlab.com/ubports/development/core/qtmir/-/merge_requests/70 merged into branch
(fetchpatch {
name = "0001-qtmir-Update-for-Mir-2.15-removals.patch";
url = "https://gitlab.com/ubports/development/core/qtmir/-/commit/ead5cacd4d69094ab956627f4dd94ecaff1fd69e.patch";
hash = "sha256-hUUUnYwhNH3gm76J21M8gA5okaRd/Go03ZFJ4qn0JUo=";
})
# Remove when https://gitlab.com/ubports/development/core/qtmir/-/merge_requests/72 merged in branch
(fetchpatch {
name = "0002-qtmir-Add-more-better-GNUInstallDirs-variables-usage.patch";
url = "https://gitlab.com/ubports/development/core/qtmir/-/commit/87e2cd31052ce15e9625c1327807a320ee5d12af.patch";
hash = "sha256-MTE9tHw+xJhraEO1up7dLg0UIcmfHXgWOeuyYrVu2wc=";
})
# Remove when https://gitlab.com/ubports/development/core/qtmir/-/merge_requests/73 merged in branch
(fetchpatch {
name = "0003-qtmir-CMakeLists-Only-require-test-dependencies-when-building-tests.patch";
url = "https://gitlab.com/ubports/development/core/qtmir/-/commit/b7144e67bcbb4cfbd2283d5d05146fb22b7d8cd4.patch";
hash = "sha256-Afbj40MopztchDnk6fphTYk86YrQkiK8L1e/oXiL1Mw=";
})
# Remove when https://gitlab.com/ubports/development/core/qtmir/-/merge_requests/74 merged in branch
(fetchpatch {
name = "0004-qtmir-CMakeLists-Drop-call-of-Qt-internal-macro.patch";
url = "https://gitlab.com/ubports/development/core/qtmir/-/commit/8f9c599a4dbc4cf35e289157fd0c82df55b9f8d9.patch";
hash = "sha256-SMAErXnlMtVleWRPgO4xuUI7gAAy6W18LxtgXgetRA4=";
})
];
postPatch = ''
substituteInPlace CMakeLists.txt \
--replace-fail "\''${CMAKE_INSTALL_FULL_LIBDIR}/qt5/qml" "\''${CMAKE_INSTALL_PREFIX}/${qtbase.qtQmlPrefix}" \
--replace-fail "\''${CMAKE_INSTALL_FULL_LIBDIR}/qt5/plugins/platforms" "\''${CMAKE_INSTALL_PREFIX}/${qtbase.qtPluginPrefix}/platforms" \
substituteInPlace data/xwayland.qtmir.desktop \
--replace-fail '/usr/bin/Xwayland' 'Xwayland'
'';
strictDeps = true;
nativeBuildInputs = [
cmake
glib # glib-compile-schemas
pkg-config
validatePkgConfig
wrapQtAppsHook
];
buildInputs = [
cmake-extras
boost
gsettings-qt
libuuid
lomiri-api
lomiri-app-launch
lomiri-url-dispatcher
lttng-ust
mir_2_15
process-cpp
protobuf
qtbase
qtdeclarative
qtsensors
valgrind
glm # included by mir header
wayland # mirwayland asks for this
properties-cpp # included by l-a-l header
];
propagatedBuildInputs = [
# Needs Xwayland on PATH for desktop file, else launching X11 applications crashes qtmir
xwayland
];
checkInputs = [
gtest
libqtdbustest
libqtdbusmock
];
cmakeFlags = [
(lib.cmakeBool "NO_TESTS" (!finalAttrs.finalPackage.doCheck))
(lib.cmakeBool "WITH_MIR2" true)
];
postInstall = ''
glib-compile-schemas $out/share/glib-2.0/schemas
'';
# Tests currently unavailable when building with Mir2
doCheck = false;
passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
meta = with lib; {
description = "QPA plugin to make Qt a Mir server";
homepage = "https://gitlab.com/ubports/development/core/qtmir";
license = licenses.lgpl3Only;
maintainers = teams.lomiri.members;
platforms = platforms.linux;
pkgConfigModules = [ "qtmirserver" ];
};
})