mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-04-14 06:07:37 +00:00
lomiri.lomiri-mediaplayer-app: init at 1.1.0 (#359708)
This commit is contained in:
commit
a4f09cbbf5
@ -90,6 +90,7 @@ in
|
||||
lomiri-filemanager-app
|
||||
lomiri-gallery-app
|
||||
lomiri-history-service
|
||||
lomiri-mediaplayer-app
|
||||
lomiri-polkit-agent
|
||||
lomiri-schemas # exposes some required dbus interfaces
|
||||
lomiri-session # wrappers to properly launch the session
|
||||
|
@ -563,6 +563,7 @@ in {
|
||||
lomiri-clock-app = runTest ./lomiri-clock-app.nix;
|
||||
lomiri-docviewer-app = runTest ./lomiri-docviewer-app.nix;
|
||||
lomiri-filemanager-app = runTest ./lomiri-filemanager-app.nix;
|
||||
lomiri-mediaplayer-app = runTest ./lomiri-mediaplayer-app.nix;
|
||||
lomiri-gallery-app = runTest ./lomiri-gallery-app.nix;
|
||||
lomiri-system-settings = handleTest ./lomiri-system-settings.nix {};
|
||||
lorri = handleTest ./lorri/default.nix {};
|
||||
|
77
nixos/tests/lomiri-mediaplayer-app.nix
Normal file
77
nixos/tests/lomiri-mediaplayer-app.nix
Normal file
@ -0,0 +1,77 @@
|
||||
{ lib, ... }:
|
||||
let
|
||||
ocrContent = "Video Test";
|
||||
videoFile = "test.webm";
|
||||
in
|
||||
{
|
||||
name = "lomiri-mediaplayer-app-standalone";
|
||||
meta.maintainers = lib.teams.lomiri.members;
|
||||
|
||||
nodes.machine =
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
imports = [ ./common/x11.nix ];
|
||||
|
||||
services.xserver.enable = true;
|
||||
|
||||
environment = {
|
||||
# Setup video
|
||||
etc."${videoFile}".source =
|
||||
pkgs.runCommand videoFile
|
||||
{
|
||||
nativeBuildInputs = with pkgs; [
|
||||
ffmpeg # produce video for OCR
|
||||
(imagemagick.override { ghostscriptSupport = true; }) # produce OCR-able image
|
||||
];
|
||||
}
|
||||
''
|
||||
magick -size 400x400 canvas:white -pointsize 40 -fill black -annotate +100+100 '${ocrContent}' output.png
|
||||
ffmpeg -re -loop 1 -i output.png -c:v libvpx -b:v 100K -t 120 $out -loglevel fatal
|
||||
'';
|
||||
systemPackages = with pkgs.lomiri; [
|
||||
suru-icon-theme
|
||||
lomiri-mediaplayer-app
|
||||
];
|
||||
variables = {
|
||||
UITK_ICON_THEME = "suru";
|
||||
};
|
||||
};
|
||||
|
||||
i18n.supportedLocales = [ "all" ];
|
||||
|
||||
fonts = {
|
||||
packages = with pkgs; [
|
||||
# Intended font & helps with OCR
|
||||
ubuntu-classic
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
enableOCR = true;
|
||||
|
||||
testScript = ''
|
||||
machine.wait_for_x()
|
||||
|
||||
with subtest("lomiri mediaplayer launches"):
|
||||
machine.succeed("lomiri-mediaplayer-app >&2 &")
|
||||
machine.wait_for_text("Choose from")
|
||||
machine.screenshot("lomiri-mediaplayer_open")
|
||||
|
||||
machine.succeed("pkill -f lomiri-mediaplayer-app")
|
||||
|
||||
with subtest("lomiri mediaplayer plays video"):
|
||||
machine.succeed("lomiri-mediaplayer-app /etc/${videoFile} >&2 &")
|
||||
machine.wait_for_text("${ocrContent}")
|
||||
machine.screenshot("lomiri-mediaplayer_playback")
|
||||
|
||||
machine.succeed("pkill -f lomiri-mediaplayer-app")
|
||||
|
||||
with subtest("lomiri mediaplayer localisation works"):
|
||||
# OCR struggles with finding identifying the translated window title, and lomiri-content-hub QML isn't translated
|
||||
# Cause an error, and look for the error popup
|
||||
machine.succeed("touch invalid.mp4")
|
||||
machine.succeed("env LANG=de_DE.UTF-8 lomiri-mediaplayer-app invalid.mp4 >&2 &")
|
||||
machine.wait_for_text("Fehler")
|
||||
machine.screenshot("lomiri-mediaplayer_localised")
|
||||
'';
|
||||
}
|
@ -0,0 +1,166 @@
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
fetchFromGitLab,
|
||||
fetchpatch,
|
||||
gitUpdater,
|
||||
nixosTests,
|
||||
cmake,
|
||||
gettext,
|
||||
gst_all_1,
|
||||
lomiri-action-api,
|
||||
lomiri-content-hub,
|
||||
lomiri-ui-toolkit,
|
||||
pkg-config,
|
||||
qtbase,
|
||||
qtdeclarative,
|
||||
qtmultimedia,
|
||||
qtxmlpatterns,
|
||||
wrapGAppsHook3,
|
||||
wrapQtAppsHook,
|
||||
xvfb-run,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "lomiri-mediaplayer-app";
|
||||
version = "1.1.0";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "ubports";
|
||||
repo = "development/core/lomiri-mediaplayer-app";
|
||||
rev = "refs/tags/${finalAttrs.version}";
|
||||
hash = "sha256-Pq1TA7eoHDRRzr6zT2cmIye91uz/0YsmQ8Qp79244wg=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# Remove when https://gitlab.com/ubports/development/core/lomiri-mediaplayer-app/-/merge_requests/35 merged & in release
|
||||
(fetchpatch {
|
||||
name = "0001-lomiri-mediaplayer-app-Fix-GNUInstallDirs-usage.patch";
|
||||
url = "https://gitlab.com/ubports/development/core/lomiri-mediaplayer-app/-/commit/baaa0ea7cba2a9f8bc7f223246857eba1cd5d8e4.patch";
|
||||
hash = "sha256-RChPRi4zrAWJEl4Urznh5FRYuTnxCFzG+gZurrF7Ym0=";
|
||||
})
|
||||
|
||||
# Remove when https://gitlab.com/ubports/development/core/lomiri-mediaplayer-app/-/merge_requests/36 merged & in release
|
||||
(fetchpatch {
|
||||
name = "0002-lomiri-mediaplayer-app-Drop-NO_DEFAULT_PATH-for-qmltestrunner.patch";
|
||||
url = "https://gitlab.com/ubports/development/core/lomiri-mediaplayer-app/-/commit/3bf4ebae7eb59176af984d07ad72b67ee0bd1b8f.patch";
|
||||
hash = "sha256-dJCW0dKe7Tq1Mg9CSdVQHamObVrPS7COXsdv41SWnHg=";
|
||||
})
|
||||
|
||||
# Remove when https://gitlab.com/ubports/development/core/lomiri-mediaplayer-app/-/merge_requests/37 merged & in release
|
||||
(fetchpatch {
|
||||
name = "0003-lomiri-mediaplayer-app-BUILD_TESTING.patch";
|
||||
url = "https://gitlab.com/ubports/development/core/lomiri-mediaplayer-app/-/commit/df1aadb82d73177133bc096307ec1ef1e2b0c2ed.patch";
|
||||
hash = "sha256-dvkGjG0ptCmLDIAWzDjOzu+Q/5bgVdb/+RmE6v8fV0Q=";
|
||||
})
|
||||
|
||||
# Remove when https://gitlab.com/ubports/development/core/lomiri-mediaplayer-app/-/merge_requests/38 merged & in release
|
||||
(fetchpatch {
|
||||
name = "0004-lomiri-mediaplayer-app-bindtextdomain.patch";
|
||||
url = "https://gitlab.com/ubports/development/core/lomiri-mediaplayer-app/-/commit/bd927e823205214f9ea01dfb1f93171a8952ecf9.patch";
|
||||
hash = "sha256-/lg0elv9weNnRGq1oD94/sE511EZ0TmXZsURcauQobI=";
|
||||
})
|
||||
(fetchpatch {
|
||||
name = "0005-lomiri-mediaplayer-app-Fix-title-localisation.patch";
|
||||
url = "https://gitlab.com/ubports/development/core/lomiri-mediaplayer-app/-/commit/c4cba819dd55e7e85c4ea496626bed9aa78470a5.patch";
|
||||
hash = "sha256-EiUxaCa5ANnRSciB8IodQOGnmG4rE/g/M+K4XcyqTI8=";
|
||||
})
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
# We don't want absolute paths in desktop files
|
||||
substituteInPlace data/lomiri-mediaplayer-app.desktop.in.in \
|
||||
--replace-fail 'Icon=@MEDIAPLAYER_DIR@/@LOMIRI_MEDIAPLAYER_APP_ICON@' 'Icon=lomiri-mediaplayer-app' \
|
||||
--replace-fail 'X-Lomiri-SymbolicIcon=@MEDIAPLAYER_DIR@/@LOMIRI_MEDIAPLAYER_APP_SYMBOLIC_ICON@' 'X-Lomiri-SymbolicIcon=lomiri-app-launch/symbolic/lomiri-mediaplayer-app.svg' \
|
||||
--replace-fail 'X-Lomiri-Splash-Image=@MEDIAPLAYER_DIR@/@LOMIRI_MEDIAPLAYER_APP_SPLASH@' 'X-Lomiri-Splash-Image=lomiri-app-launch/splash/lomiri-mediaplayer-app.svg'
|
||||
'';
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
gettext
|
||||
pkg-config
|
||||
wrapGAppsHook3
|
||||
wrapQtAppsHook
|
||||
];
|
||||
|
||||
buildInputs =
|
||||
[
|
||||
qtbase
|
||||
qtmultimedia
|
||||
|
||||
# QML
|
||||
lomiri-action-api
|
||||
lomiri-content-hub
|
||||
lomiri-ui-toolkit
|
||||
qtxmlpatterns
|
||||
]
|
||||
# QtMultimedia playback support
|
||||
++ (with gst_all_1; [
|
||||
gstreamer
|
||||
gst-plugins-base
|
||||
gst-plugins-good
|
||||
gst-plugins-bad
|
||||
]);
|
||||
|
||||
nativeCheckInputs = [
|
||||
qtdeclarative # qmltestrunner
|
||||
xvfb-run
|
||||
];
|
||||
|
||||
checkInputs = [ lomiri-ui-toolkit ];
|
||||
|
||||
dontWrapGApps = true;
|
||||
|
||||
cmakeFlags = [ (lib.cmakeBool "ENABLE_AUTOPILOT" false) ];
|
||||
|
||||
# Only test segfaults in Nix sandbox, see LSS for details
|
||||
doCheck = false;
|
||||
|
||||
preCheck =
|
||||
let
|
||||
listToQtVar =
|
||||
list: suffix: lib.strings.concatMapStringsSep ":" (drv: "${lib.getBin drv}/${suffix}") list;
|
||||
in
|
||||
''
|
||||
export QT_PLUGIN_PATH=${listToQtVar [ qtbase ] qtbase.qtPluginPrefix}
|
||||
export QML2_IMPORT_PATH=${
|
||||
listToQtVar [
|
||||
lomiri-ui-toolkit
|
||||
qtmultimedia
|
||||
qtxmlpatterns
|
||||
] qtbase.qtQmlPrefix
|
||||
}
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
mkdir -p $out/share/{icons/hicolor/256x256/apps,lomiri-app-launch/{symbolic,splash}}
|
||||
|
||||
ln -s $out/share/{lomiri-mediaplayer-app,icons/hicolor/256x256/apps}/lomiri-mediaplayer-app.png
|
||||
ln -s $out/share/{lomiri-mediaplayer-app/lomiri-mediaplayer-app-splash.svg,lomiri-app-launch/splash/lomiri-mediaplayer-app.svg}
|
||||
ln -s $out/share/{lomiri-mediaplayer-app/lomiri-mediaplayer-app-symbolic.svg,lomiri-app-launch/symbolic/lomiri-mediaplayer-app.svg}
|
||||
'';
|
||||
|
||||
preFixup = ''
|
||||
qtWrapperArgs+=("''${gappsWrapperArgs[@]}")
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
tests.vm = nixosTests.lomiri-mediaplayer-app;
|
||||
updateScript = gitUpdater { };
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "Media Player application for Ubuntu Touch devices";
|
||||
homepage = "https://gitlab.com/ubports/development/apps/lomiri-mediaplayer-app";
|
||||
changelog = "https://gitlab.com/ubports/development/apps/lomiri-mediaplayer-app/-/blob/${finalAttrs.version}/ChangeLog";
|
||||
license = with lib.licenses; [
|
||||
gpl3Only
|
||||
cc-by-sa-30
|
||||
];
|
||||
mainProgram = "lomiri-mediaplayer-app";
|
||||
maintainers = lib.teams.lomiri.members;
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
})
|
@ -20,6 +20,7 @@ let
|
||||
lomiri-docviewer-app = callPackage ./applications/lomiri-docviewer-app { };
|
||||
lomiri-filemanager-app = callPackage ./applications/lomiri-filemanager-app { };
|
||||
lomiri-gallery-app = callPackage ./applications/lomiri-gallery-app { };
|
||||
lomiri-mediaplayer-app = callPackage ./applications/lomiri-mediaplayer-app { };
|
||||
lomiri-system-settings-unwrapped = callPackage ./applications/lomiri-system-settings { };
|
||||
lomiri-system-settings = callPackage ./applications/lomiri-system-settings/wrapper.nix { };
|
||||
lomiri-terminal-app = callPackage ./applications/lomiri-terminal-app { };
|
||||
|
Loading…
Reference in New Issue
Block a user