about summary refs log tree commit diff
path: root/pkgs/servers/mir/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/servers/mir/default.nix')
-rw-r--r--pkgs/servers/mir/default.nix229
1 files changed, 29 insertions, 200 deletions
diff --git a/pkgs/servers/mir/default.nix b/pkgs/servers/mir/default.nix
index e4555bf517f69..b61419eacf47f 100644
--- a/pkgs/servers/mir/default.nix
+++ b/pkgs/servers/mir/default.nix
@@ -1,204 +1,33 @@
-{ stdenv
-, lib
-, fetchFromGitHub
-, fetchpatch
-, gitUpdater
-, testers
-, cmake
-, pkg-config
-, python3
-, boost
-, egl-wayland
-, freetype
-, glib
-, glm
-, glog
-, libdrm
-, libepoxy
-, libevdev
-, libglvnd
-, libinput
-, libuuid
-, libxcb
-, libxkbcommon
-, libxmlxx
-, yaml-cpp
-, lttng-ust
-, mesa
-, nettle
-, udev
-, wayland
-, xorg
-, xwayland
-, dbus
-, gtest
-, umockdev
-, wlcs
-, validatePkgConfig
-}:
-
-stdenv.mkDerivation (finalAttrs: {
-  pname = "mir";
-  version = "2.15.0";
-
-  src = fetchFromGitHub {
-    owner = "MirServer";
-    repo = "mir";
-    rev = "v${finalAttrs.version}";
-    hash = "sha256-c1+gxzLEtNCjR/mx76O5QElQ8+AO4WsfcG7Wy1+nC6E=";
-  };
-
-  patches = [
-    # Fix gbm-kms tests
-    # Remove when version > 2.15.0
-    (fetchpatch {
-      name = "0001-mir-Fix-the-signature-of-drmModeCrtcSetGamma.patch";
-      url = "https://github.com/MirServer/mir/commit/98250e9c32c5b9b940da2fb0a32d8139bbc68157.patch";
-      hash = "sha256-tTtOHGNue5rsppOIQSfkOH5sVfFSn/KPGHmubNlRtLI=";
-    })
-  ];
-
-  postPatch = ''
-    # Fix scripts that get run in tests
-    patchShebangs tools/detect_fd_leaks.bash tests/acceptance-tests/wayland-generator/test_wayland_generator.sh.in
-
-    # Fix LD_PRELOADing in tests
-    for needsPreloadFixing in \
-      cmake/MirCommon.cmake \
-      tests/umock-acceptance-tests/CMakeLists.txt \
-      tests/unit-tests/platforms/gbm-kms/kms/CMakeLists.txt \
-      tests/unit-tests/CMakeLists.txt
-    do
-      substituteInPlace $needsPreloadFixing \
-        --replace 'LD_PRELOAD=liblttng-ust-fork.so' 'LD_PRELOAD=${lib.getLib lttng-ust}/lib/liblttng-ust-fork.so' \
-        --replace 'LD_PRELOAD=libumockdev-preload.so.0' 'LD_PRELOAD=${lib.getLib umockdev}/lib/libumockdev-preload.so.0'
-    done
-
-    # Fix Xwayland default
-    substituteInPlace src/miral/x11_support.cpp \
-      --replace '/usr/bin/Xwayland' '${lib.getExe xwayland}'
-
-    # Fix paths for generating drm-formats
-    substituteInPlace src/platform/graphics/CMakeLists.txt \
-      --replace "/usr/include/drm/drm_fourcc.h" "${lib.getDev libdrm}/include/libdrm/drm_fourcc.h" \
-      --replace "/usr/include/libdrm/drm_fourcc.h" "${lib.getDev libdrm}/include/libdrm/drm_fourcc.h"
-  '';
-
-  strictDeps = true;
-
-  nativeBuildInputs = [
-    cmake
-    glib # gdbus-codegen
-    lttng-ust # lttng-gen-tp
-    pkg-config
-    (python3.withPackages (ps: with ps; [
-      pillow
-    ] ++ lib.optionals finalAttrs.finalPackage.doCheck [
-      pygobject3
-      python-dbusmock
-    ]))
-    validatePkgConfig
-  ];
-
-  buildInputs = [
-    boost
-    egl-wayland
-    freetype
-    glib
-    glm
-    glog
-    libdrm
-    libepoxy
-    libevdev
-    libglvnd
-    libinput
-    libuuid
-    libxcb
-    libxkbcommon
-    libxmlxx
-    yaml-cpp
-    lttng-ust
-    mesa
-    nettle
-    udev
-    wayland
-    xorg.libX11
-    xorg.libXcursor
-    xorg.xorgproto
-    xwayland
-  ];
-
-  nativeCheckInputs = [
-    dbus
-  ];
-
-  checkInputs = [
-    gtest
-    umockdev
-    wlcs
-  ];
-
-  cmakeFlags = [
-    "-DBUILD_DOXYGEN=OFF"
-    "-DMIR_PLATFORM='gbm-kms;x11;eglstream-kms;wayland'"
-    "-DMIR_ENABLE_TESTS=${if finalAttrs.finalPackage.doCheck then "ON" else "OFF"}"
-    # BadBufferTest.test_truncated_shm_file *doesn't* throw an error as the test expected, mark as such
-    # https://github.com/MirServer/mir/pull/1947#issuecomment-811810872
-    "-DMIR_SIGBUS_HANDLER_ENVIRONMENT_BROKEN=ON"
-    "-DMIR_EXCLUDE_TESTS=${lib.strings.concatStringsSep ";" [
-    ]}"
-    # These get built but don't get executed by default, yet they get installed when tests are enabled
-    "-DMIR_BUILD_PERFORMANCE_TESTS=OFF"
-    "-DMIR_BUILD_PLATFORM_TEST_HARNESS=OFF"
-    # https://github.com/MirServer/mir/issues/2987
-    # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106799
-    "-DMIR_USE_PRECOMPILED_HEADERS=OFF"
-  ];
-
-  doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
-
-  preCheck = ''
-    # Needs to be exactly /tmp so some failing tests don't get run, don't know why they fail yet
-    # https://github.com/MirServer/mir/issues/2801
-    export XDG_RUNTIME_DIR=/tmp
-  '';
-
-  outputs = [ "out" "dev" ];
-
-  passthru = {
-    tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
-    updateScript = gitUpdater {
-      rev-prefix = "v";
-    };
-    # More of an example than a fully functioning shell, some notes for the adventurous:
-    # - ~/.config/miral-shell.config is one possible user config location,
-    #   accepted options=value are according to `mir-shell --help`
-    # - default icon theme setting is DMZ-White, needs vanilla-dmz installed & on XCURSOR_PATH
-    #   or setting to be changed to an available theme
-    # - terminal emulator setting may need to be changed if miral-terminal script
-    #   does not know about preferred terminal
-    providedSessions = [ "mir-shell" ];
+{ callPackage, fetchpatch }:
+
+let
+  common = callPackage ./common.nix { };
+in
+{
+  mir = common {
+    version = "2.17.0";
+    hash = "sha256-iDJ7NIFoSSXjMrHK2I6Linf7z0hvShj8fr6BGxgK5gE=";
   };
 
-  meta = with lib; {
-    description = "A display server and Wayland compositor developed by Canonical";
-    homepage = "https://mir-server.io";
-    changelog = "https://github.com/MirServer/mir/releases/tag/v${finalAttrs.version}";
-    license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ onny OPNA2608 ];
-    platforms = platforms.linux;
-    pkgConfigModules = [
-      "miral"
-      "mircommon"
-      "mircookie"
-      "mircore"
-      "miroil"
-      "mirplatform"
-      "mir-renderer-gl-dev"
-      "mirrenderer"
-      "mirserver"
-      "mirtest"
-      "mirwayland"
+  mir_2_15 = common {
+    version = "2.15.0";
+    pinned = true;
+    hash = "sha256-c1+gxzLEtNCjR/mx76O5QElQ8+AO4WsfcG7Wy1+nC6E=";
+    patches = [
+      # Fix gbm-kms tests
+      # Remove when version > 2.15.0
+      (fetchpatch {
+        name = "0001-mir-Fix-the-signature-of-drmModeCrtcSetGamma.patch";
+        url = "https://github.com/canonical/mir/commit/98250e9c32c5b9b940da2fb0a32d8139bbc68157.patch";
+        hash = "sha256-tTtOHGNue5rsppOIQSfkOH5sVfFSn/KPGHmubNlRtLI=";
+      })
+      # Fix external_client tests
+      # Remove when version > 2.15.0
+      (fetchpatch {
+        name = "0002-mir-Fix-cannot_start_X_Server_and_outdated_tests.patch";
+        url = "https://github.com/canonical/mir/commit/0704026bd06372ea8286a46d8c939286dd8a8c68.patch";
+        hash = "sha256-k+51piPQandbHdm+ioqpBrb+C7Aqi2kugchAehZ1aiU=";
+      })
     ];
   };
-})
+}