Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at devShellTools-shell 157 lines 4.0 kB view raw
1{ 2 stdenv, 3 lib, 4 fetchFromGitLab, 5 gitUpdater, 6 nixosTests, 7 cmake, 8 gettext, 9 libapparmor, 10 lomiri-action-api, 11 lomiri-content-hub, 12 lomiri-ui-extras, 13 lomiri-ui-toolkit, 14 mesa, 15 pkg-config, 16 qqc2-suru-style, 17 qtbase, 18 qtdeclarative, 19 qtquickcontrols2, 20 qtsystems, 21 qttools, 22 qtwebengine, 23 wrapQtAppsHook, 24 xvfb-run, 25}: 26 27let 28 listToQtVar = suffix: lib.makeSearchPathOutput "bin" suffix; 29in 30stdenv.mkDerivation (finalAttrs: { 31 pname = "morph-browser"; 32 version = "1.1.2"; 33 34 src = fetchFromGitLab { 35 owner = "ubports"; 36 repo = "development/core/morph-browser"; 37 tag = finalAttrs.version; 38 hash = "sha256-CW+8HEGxeDDfqbBtNHDKTvsZkbu0tCmD6OEDW07KG2k="; 39 }; 40 41 outputs = [ 42 "out" 43 "doc" 44 ]; 45 46 postPatch = '' 47 substituteInPlace src/{Morph,Ubuntu}/CMakeLists.txt \ 48 --replace-fail '/usr/lib/''${CMAKE_LIBRARY_ARCHITECTURE}/qt5/qml' "\''${CMAKE_INSTALL_PREFIX}/${qtbase.qtQmlPrefix}" 49 50 substituteInPlace src/app/webbrowser/morph-browser.desktop.in.in \ 51 --replace-fail 'Icon=@CMAKE_INSTALL_FULL_DATADIR@/morph-browser/morph-browser.svg' 'Icon=morph-browser' \ 52 --replace-fail 'X-Lomiri-Splash-Image=@CMAKE_INSTALL_FULL_DATADIR@/morph-browser/morph-browser-splash.svg' 'X-Lomiri-Splash-Image=lomiri-app-launch/splash/morph-browser.svg' 53 54 substituteInPlace doc/CMakeLists.txt \ 55 --replace-fail 'COMMAND ''${QDOC_EXECUTABLE} -qt5' 'COMMAND ''${QDOC_EXECUTABLE}' 56 '' 57 + lib.optionalString (!finalAttrs.finalPackage.doCheck) '' 58 substituteInPlace CMakeLists.txt \ 59 --replace-fail 'add_subdirectory(tests)' "" 60 ''; 61 62 strictDeps = true; 63 64 nativeBuildInputs = [ 65 cmake 66 gettext 67 pkg-config 68 qttools # qdoc 69 wrapQtAppsHook 70 ]; 71 72 buildInputs = [ 73 libapparmor 74 qtbase 75 qtdeclarative 76 qtwebengine 77 78 # QML 79 lomiri-action-api 80 lomiri-content-hub 81 lomiri-ui-extras 82 lomiri-ui-toolkit 83 qqc2-suru-style 84 qtquickcontrols2 85 qtsystems 86 ]; 87 88 nativeCheckInputs = [ 89 mesa.llvmpipeHook # ShapeMaterial needs an OpenGL context: https://gitlab.com/ubports/development/core/lomiri-ui-toolkit/-/issues/35 90 xvfb-run 91 ]; 92 93 cmakeFlags = [ 94 (lib.cmakeFeature "CMAKE_CTEST_ARGUMENTS" ( 95 lib.concatStringsSep ";" [ 96 # Exclude tests 97 "-E" 98 (lib.strings.escapeShellArg "(${ 99 lib.concatStringsSep "|" [ 100 # Don't care about linter failures 101 "^flake8" 102 ] 103 })") 104 ] 105 )) 106 ]; 107 108 doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform; 109 110 preCheck = '' 111 export HOME=$TMPDIR 112 export QT_PLUGIN_PATH=${listToQtVar qtbase.qtPluginPrefix [ qtbase ]} 113 export QML2_IMPORT_PATH=${ 114 listToQtVar qtbase.qtQmlPrefix ( 115 [ 116 lomiri-ui-toolkit 117 qtwebengine 118 qtdeclarative 119 qtquickcontrols2 120 qtsystems 121 ] 122 ++ lomiri-ui-toolkit.propagatedBuildInputs 123 ) 124 } 125 ''; 126 127 postInstall = '' 128 mkdir -p $out/share/{icons/hicolor/scalable/apps,lomiri-app-launch/splash} 129 130 ln -s $out/share/{morph-browser,icons/hicolor/scalable/apps}/morph-browser.svg 131 ln -s $out/share/{morph-browser/morph-browser-splash.svg,lomiri-app-launch/splash/morph-browser.svg} 132 ''; 133 134 passthru = { 135 updateScript = gitUpdater { }; 136 tests = { 137 # Test of morph-browser itself 138 standalone = nixosTests.morph-browser; 139 140 # Interactions between the Lomiri ecosystem and this browser 141 inherit (nixosTests.lomiri) desktop-basics desktop-appinteractions; 142 }; 143 }; 144 145 meta = with lib; { 146 description = "Lightweight web browser tailored for Ubuntu Touch"; 147 homepage = "https://gitlab.com/ubports/development/core/morph-browser"; 148 changelog = "https://gitlab.com/ubports/development/core/morph-browser/-/blob/${finalAttrs.version}/ChangeLog"; 149 license = with licenses; [ 150 gpl3Only 151 cc-by-sa-30 152 ]; 153 mainProgram = "morph-browser"; 154 teams = [ teams.lomiri ]; 155 platforms = platforms.linux; 156 }; 157})