From 7371ea36e7ebc0ff65fa75269ce9cb087e34f3de Mon Sep 17 00:00:00 2001 From: OPNA2608 Date: Tue, 23 Jan 2024 18:21:11 +0100 Subject: lomiri.morph-browser: init at 1.0.3 --- .../lomiri/applications/morph-browser/default.nix | 134 +++++++++++++++++++++ pkgs/desktops/lomiri/default.nix | 1 + 2 files changed, 135 insertions(+) create mode 100644 pkgs/desktops/lomiri/applications/morph-browser/default.nix (limited to 'pkgs/desktops/lomiri') diff --git a/pkgs/desktops/lomiri/applications/morph-browser/default.nix b/pkgs/desktops/lomiri/applications/morph-browser/default.nix new file mode 100644 index 000000000000..643609694804 --- /dev/null +++ b/pkgs/desktops/lomiri/applications/morph-browser/default.nix @@ -0,0 +1,134 @@ +{ stdenv +, lib +, fetchFromGitLab +, fetchpatch +, gitUpdater +, cmake +, content-hub +, gettext +, libapparmor +, lomiri-action-api +, lomiri-ui-extras +, lomiri-ui-toolkit +, pkg-config +, python3 +, qtbase +, qtdeclarative +, qtquickcontrols2 +, qtsystems +, qtwebengine +, wrapQtAppsHook +, xvfb-run +}: + +let + listToQtVar = suffix: lib.makeSearchPathOutput "bin" suffix; +in +stdenv.mkDerivation (finalAttrs: { + pname = "morph-browser"; + version = "1.0.3"; + + src = fetchFromGitLab { + owner = "ubports"; + repo = "development/core/morph-browser"; + rev = finalAttrs.version; + hash = "sha256-gzrNIIRTnIiL5T1HYy2x9mGawZwW6vhCt3b5k3NhpKI="; + }; + + patches = [ + # Remove when https://gitlab.com/ubports/development/core/morph-browser/-/merge_requests/575 merged & in release + (fetchpatch { + name = "0001-morph-browser-tst_SessionUtilsTests-Set-permissions-on-temporary-xdg-runtime-directory.patch"; + url = "https://gitlab.com/ubports/development/core/morph-browser/-/commit/e90206105b8b287fbd6e45ac37ca1cd259981928.patch"; + hash = "sha256-5htFn+OGVVBn3mJQaZcF5yt0mT+2QRlKyKFesEhklfA="; + }) + + # Remove when https://gitlab.com/ubports/development/core/morph-browser/-/merge_requests/576 merged & in release + (fetchpatch { + name = "0002-morph-browser-Call-i18n-bindtextdomain-with-buildtime-determined-locale-path.patch"; + url = "https://gitlab.com/ubports/development/core/morph-browser/-/commit/0527a1e01fb27c62f5e0011274f73bad400e9691.patch"; + hash = "sha256-zx/pP72uNqAi8TZR4bKeONuqcJyK/vGtPglTA+5R5no="; + }) + ]; + + postPatch = '' + substituteInPlace src/{Morph,Ubuntu}/CMakeLists.txt \ + --replace '/usr/lib/''${CMAKE_LIBRARY_ARCHITECTURE}/qt5/qml' "\''${CMAKE_INSTALL_PREFIX}/${qtbase.qtQmlPrefix}" + + # Don't use absolute paths in desktop file + substituteInPlace src/app/webbrowser/morph-browser.desktop.in.in \ + --replace 'Icon=@CMAKE_INSTALL_FULL_DATADIR@/morph-browser/morph-browser.svg' 'Icon=morph-browser' \ + --replace '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' + '' + lib.optionalString (!finalAttrs.doCheck) '' + substituteInPlace CMakeLists.txt \ + --replace 'add_subdirectory(tests)' "" + ''; + + strictDeps = true; + + nativeBuildInputs = [ + cmake + gettext + pkg-config + wrapQtAppsHook + ]; + + buildInputs = [ + libapparmor + qtbase + qtdeclarative + qtwebengine + + # QML + content-hub + lomiri-action-api + lomiri-ui-extras + lomiri-ui-toolkit + qtquickcontrols2 + qtsystems + ]; + + nativeCheckInputs = [ + (python3.withPackages (ps: with ps; [ + flake8 + ])) + xvfb-run + ]; + + cmakeFlags = [ + (lib.cmakeFeature "CMAKE_CTEST_ARGUMENTS" (lib.concatStringsSep ";" [ + # Exclude tests + "-E" (lib.strings.escapeShellArg "(${lib.concatStringsSep "|" [ + # Runs into ShapeMaterial codepath in lomiri-ui-toolkit which needs OpenGL, see LUITK for details + "^tst_QmlTests" + ]})") + ])) + ]; + + doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform; + + preCheck = '' + export HOME=$TMPDIR + export QT_PLUGIN_PATH=${listToQtVar qtbase.qtPluginPrefix [ qtbase ]} + export QML2_IMPORT_PATH=${listToQtVar qtbase.qtQmlPrefix ([ lomiri-ui-toolkit qtwebengine qtdeclarative qtquickcontrols2 qtsystems ] ++ lomiri-ui-toolkit.propagatedBuildInputs)} + ''; + + postInstall = '' + mkdir -p $out/share/{icons/hicolor/scalable/apps,lomiri-app-launch/splash} + + ln -s $out/share/{morph-browser,icons/hicolor/scalable/apps}/morph-browser.svg + ln -s $out/share/{morph-browser/morph-browser-splash.svg,lomiri-app-launch/splash/morph-browser.svg} + ''; + + passthru.updateScript = gitUpdater { }; + + meta = with lib; { + description = "Lightweight web browser tailored for Ubuntu Touch"; + homepage = "https://gitlab.com/ubports/development/core/morph-browser"; + changelog = "https://gitlab.com/ubports/development/core/morph-browser/-/blob/${finalAttrs.version}/ChangeLog"; + license = with licenses; [ gpl3Only cc-by-sa-30 ]; + mainProgram = "morph-browser"; + maintainers = teams.lomiri.members; + platforms = platforms.linux; + }; +}) diff --git a/pkgs/desktops/lomiri/default.nix b/pkgs/desktops/lomiri/default.nix index f62bd5746023..1936e436f35f 100644 --- a/pkgs/desktops/lomiri/default.nix +++ b/pkgs/desktops/lomiri/default.nix @@ -9,6 +9,7 @@ let in { #### Core Apps lomiri-terminal-app = callPackage ./applications/lomiri-terminal-app { }; + morph-browser = callPackage ./applications/morph-browser { }; #### Data lomiri-schemas = callPackage ./data/lomiri-schemas { }; -- cgit 1.4.1 From dc0b27ef05fb97653fb9b048fc115ba346277dd1 Mon Sep 17 00:00:00 2001 From: OPNA2608 Date: Sun, 28 Jan 2024 19:57:40 +0100 Subject: lomiri.morph-browser: 1.0.3 -> 1.1.0 --- pkgs/desktops/lomiri/applications/morph-browser/default.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'pkgs/desktops/lomiri') diff --git a/pkgs/desktops/lomiri/applications/morph-browser/default.nix b/pkgs/desktops/lomiri/applications/morph-browser/default.nix index 643609694804..6c4b1cb1ec21 100644 --- a/pkgs/desktops/lomiri/applications/morph-browser/default.nix +++ b/pkgs/desktops/lomiri/applications/morph-browser/default.nix @@ -12,6 +12,7 @@ , lomiri-ui-toolkit , pkg-config , python3 +, qqc2-suru-style , qtbase , qtdeclarative , qtquickcontrols2 @@ -26,13 +27,13 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "morph-browser"; - version = "1.0.3"; + version = "1.1.0"; src = fetchFromGitLab { owner = "ubports"; repo = "development/core/morph-browser"; rev = finalAttrs.version; - hash = "sha256-gzrNIIRTnIiL5T1HYy2x9mGawZwW6vhCt3b5k3NhpKI="; + hash = "sha256-C5iXv8VS8Mm1ryxK7Vi5tVmiM01OSIFiTyH0vP9B/xA="; }; patches = [ @@ -84,6 +85,7 @@ stdenv.mkDerivation (finalAttrs: { lomiri-action-api lomiri-ui-extras lomiri-ui-toolkit + qqc2-suru-style qtquickcontrols2 qtsystems ]; -- cgit 1.4.1 From 48e5ed9ad1c751b6e2cde50af4662732b763a20c Mon Sep 17 00:00:00 2001 From: OPNA2608 Date: Mon, 5 Feb 2024 21:10:08 +0100 Subject: lomiri.morph-browser: Skip lint tests --- pkgs/desktops/lomiri/applications/morph-browser/default.nix | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'pkgs/desktops/lomiri') diff --git a/pkgs/desktops/lomiri/applications/morph-browser/default.nix b/pkgs/desktops/lomiri/applications/morph-browser/default.nix index 6c4b1cb1ec21..5fd7f4273565 100644 --- a/pkgs/desktops/lomiri/applications/morph-browser/default.nix +++ b/pkgs/desktops/lomiri/applications/morph-browser/default.nix @@ -11,7 +11,6 @@ , lomiri-ui-extras , lomiri-ui-toolkit , pkg-config -, python3 , qqc2-suru-style , qtbase , qtdeclarative @@ -91,9 +90,6 @@ stdenv.mkDerivation (finalAttrs: { ]; nativeCheckInputs = [ - (python3.withPackages (ps: with ps; [ - flake8 - ])) xvfb-run ]; @@ -101,6 +97,9 @@ stdenv.mkDerivation (finalAttrs: { (lib.cmakeFeature "CMAKE_CTEST_ARGUMENTS" (lib.concatStringsSep ";" [ # Exclude tests "-E" (lib.strings.escapeShellArg "(${lib.concatStringsSep "|" [ + # Don't care about linter failures + "^flake8" + # Runs into ShapeMaterial codepath in lomiri-ui-toolkit which needs OpenGL, see LUITK for details "^tst_QmlTests" ]})") -- cgit 1.4.1 From a8069ff58a856cf5e12e115420a2d9089b412e7b Mon Sep 17 00:00:00 2001 From: OPNA2608 Date: Thu, 22 Feb 2024 10:36:50 +0100 Subject: tests/morph-browser: Add standalone (non-Lomiri) test --- nixos/tests/all-tests.nix | 1 + nixos/tests/morph-browser.nix | 53 ++++++++++++++++++++++ .../lomiri/applications/morph-browser/default.nix | 6 ++- 3 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 nixos/tests/morph-browser.nix (limited to 'pkgs/desktops/lomiri') diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 8193c3dfe840..aa4b832e2c72 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -539,6 +539,7 @@ in { mongodb = handleTest ./mongodb.nix {}; moodle = handleTest ./moodle.nix {}; moonraker = handleTest ./moonraker.nix {}; + morph-browser = handleTest ./morph-browser.nix { }; morty = handleTest ./morty.nix {}; mosquitto = handleTest ./mosquitto.nix {}; moosefs = handleTest ./moosefs.nix {}; diff --git a/nixos/tests/morph-browser.nix b/nixos/tests/morph-browser.nix new file mode 100644 index 000000000000..859e6bb47646 --- /dev/null +++ b/nixos/tests/morph-browser.nix @@ -0,0 +1,53 @@ +import ./make-test-python.nix ({ pkgs, lib, ... }: { + name = "morph-browser-standalone"; + meta.maintainers = lib.teams.lomiri.members; + + nodes.machine = { config, pkgs, ... }: { + imports = [ + ./common/x11.nix + ]; + + services.xserver.enable = true; + + environment = { + systemPackages = with pkgs.lomiri; [ + suru-icon-theme + morph-browser + ]; + variables = { + UITK_ICON_THEME = "suru"; + }; + }; + + i18n.supportedLocales = [ "all" ]; + + fonts.packages = with pkgs; [ + # Intended font & helps with OCR + ubuntu_font_family + ]; + }; + + enableOCR = true; + + testScript = + '' + machine.wait_for_x() + + with subtest("morph browser launches"): + machine.execute("morph-browser >&2 &") + machine.wait_for_text(r"Web Browser|New|sites|Bookmarks") + machine.screenshot("morph_open") + + with subtest("morph browser displays HTML"): + machine.send_chars("file://${pkgs.valgrind.doc}/share/doc/valgrind/html/index.html\n") + machine.wait_for_text("Valgrind Documentation") + machine.screenshot("morph_htmlcontent") + + machine.succeed("pkill -f morph-browser") + + with subtest("morph browser localisation works"): + machine.execute("env LANG=de_DE.UTF-8 morph-browser >&2 &") + machine.wait_for_text(r"Web-Browser|Neuer|Seiten|Lesezeichen") + machine.screenshot("morph_localised") + ''; +}) diff --git a/pkgs/desktops/lomiri/applications/morph-browser/default.nix b/pkgs/desktops/lomiri/applications/morph-browser/default.nix index 5fd7f4273565..910008136d7e 100644 --- a/pkgs/desktops/lomiri/applications/morph-browser/default.nix +++ b/pkgs/desktops/lomiri/applications/morph-browser/default.nix @@ -3,6 +3,7 @@ , fetchFromGitLab , fetchpatch , gitUpdater +, nixosTests , cmake , content-hub , gettext @@ -121,7 +122,10 @@ stdenv.mkDerivation (finalAttrs: { ln -s $out/share/{morph-browser/morph-browser-splash.svg,lomiri-app-launch/splash/morph-browser.svg} ''; - passthru.updateScript = gitUpdater { }; + passthru = { + updateScript = gitUpdater { }; + tests.standalone = nixosTests.morph-browser; + }; meta = with lib; { description = "Lightweight web browser tailored for Ubuntu Touch"; -- cgit 1.4.1