diff --git a/pkgs/by-name/ki/kikoplay/change-install-path.patch b/pkgs/by-name/ki/kikoplay/change-install-path.patch index f955ca331cff..5bc5c43a5339 100644 --- a/pkgs/by-name/ki/kikoplay/change-install-path.patch +++ b/pkgs/by-name/ki/kikoplay/change-install-path.patch @@ -1,21 +1,24 @@ diff --git a/KikoPlay.pro b/KikoPlay.pro -index 9fd9d70..a52e8f3 100644 +index e3f57f5..813e42a 100644 --- a/KikoPlay.pro +++ b/KikoPlay.pro -@@ -511,12 +511,12 @@ linux-g++* { +@@ -749,14 +749,14 @@ linux-g++* { unix { # Install settings - target.path += /usr/bin -- unix:icons.path = /usr/share/pixmaps - unix:desktop.path = /usr/share/applications + target.path += OUTPATH/bin -+ unix:icons.path = OUTPATH/share/pixmaps + unix:desktop.path = OUTPATH/share/applications - unix:icons.files = kikoplay.png kikoplay.xpm - unix:desktop.files = kikoplay.desktop + unix:desktop.files = io.github.KikoPlayProject.KikoPlay.desktop +- unix:icons.path = /usr/share/icons/hicolor/128x128/apps ++ unix:icons.path = OUTPATH/share/icons/hicolor/128x128/apps + unix:icons.files = io.github.KikoPlayProject.KikoPlay.png +- unix:metainfo.path = /usr/share/metainfo ++ unix:metainfo.path = OUTPATH/share/metainfo + unix:metainfo.files = io.github.KikoPlayProject.KikoPlay.metainfo.xml - unix:web.path = /usr/share/kikoplay/web + unix:web.path = OUTPATH/share/kikoplay/web unix:web.files = web/* - INSTALLS += target icons desktop web + INSTALLS += target desktop icons metainfo web diff --git a/pkgs/by-name/ki/kikoplay/fix-mpv-dup-initialization.patch b/pkgs/by-name/ki/kikoplay/fix-mpv-dup-initialization.patch new file mode 100644 index 000000000000..b43edc80ac89 --- /dev/null +++ b/pkgs/by-name/ki/kikoplay/fix-mpv-dup-initialization.patch @@ -0,0 +1,15 @@ +diff --git a/Play/Video/mpvplayer.cpp b/Play/Video/mpvplayer.cpp +index bf767ad..e1b1864 100644 +--- a/Play/Video/mpvplayer.cpp ++++ b/Play/Video/mpvplayer.cpp +@@ -712,8 +712,10 @@ void MPVPlayer::initializeGL() + {MPV_RENDER_PARAM_INVALID, nullptr} + }; + ++ if (mpv_gl == NULL) { + if (mpv_render_context_create(&mpv_gl, mpv, params) < 0) + throw std::runtime_error("failed to initialize mpv GL context"); ++ } + mpv_render_context_set_update_callback(mpv_gl, MPVPlayer::on_update, reinterpret_cast(this)); + + const char *version = reinterpret_cast(glFuns->glGetString(GL_VERSION)); diff --git a/pkgs/by-name/ki/kikoplay/package.nix b/pkgs/by-name/ki/kikoplay/package.nix index d56f8004a0bd..632f90a4910c 100644 --- a/pkgs/by-name/ki/kikoplay/package.nix +++ b/pkgs/by-name/ki/kikoplay/package.nix @@ -2,90 +2,105 @@ fetchFromGitHub, stdenv, lib, - callPackage, - libsForQt5, makeWrapper, - qt5, + cmake, + qt6, + pkg-config, mpv, lua5_3_compat, + onnxruntime, + ela-widget-tools, + qtwebapp, }: -let - qhttpengine = callPackage ./qhttpengine.nix { }; -in -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "kikoplay"; - version = "1.0.3"; + version = "2.0.0"; src = fetchFromGitHub { owner = "KikoPlayProject"; repo = "KikoPlay"; - rev = "${version}"; - hash = "sha256-y+sT0aHDvKFNaJIxnGxDXZXUiCzuXVF7FPc8t//RMW4="; + tag = finalAttrs.version; + hash = "sha256-Rj+U7hs6PGq3BwLUoCRxbTl3lOVd8S5F5Lwb0tG67oM="; }; nativeBuildInputs = [ - libsForQt5.qmake + cmake makeWrapper - qt5.qtwebsockets - qt5.wrapQtAppsHook + pkg-config + qt6.qmake + qt6.wrapQtAppsHook ]; buildInputs = [ + ela-widget-tools + lua5_3_compat mpv - qhttpengine - qt5.qtbase - qt5.qtwebsockets + onnxruntime + qt6.qmake + qt6.qtbase + qt6.qtdeclarative + qt6.qtpositioning + qt6.qtwayland + qt6.qtwebengine + qt6.qtwebsockets + qtwebapp ]; - strictDeps = true; - - patches = [ ./change-install-path.patch ]; + patches = [ + ./change-install-path.patch + ./fix-mpv-dup-initialization.patch + ]; postPatch = '' substituteInPlace KikoPlay.pro \ --replace-fail "OUTPATH" "$out" \ - --replace-fail "liblua53.a" "${lua5_3_compat}/lib/liblua.so.5.3" + --replace-fail "liblua53.a" "liblua.so.5.3" \ + --replace-fail "DEFINES += KSERVICE" "" - substituteInPlace kikoplay.desktop \ - --replace-fail "/usr/share/pixmaps/kikoplay.png" "$out/share/pixmaps/kikoplay.png" - - for F in Extension/App/appmanager.cpp Extension/Script/scriptmanager.cpp LANServer/router.cpp; do + for F in Extension/App/appmanager.cpp Extension/Script/scriptmanager.cpp LANServer/router.cpp Play/Subtitle/subtitlerecognizer.cpp; do substituteInPlace "$F" --replace-fail "/usr/share/kikoplay/" "$out/share/kikoplay/" done + + rm -rf lib/ ''; + dontUseCmakeConfigure = true; qmakeFlags = [ "KikoPlay.pro" ]; hardeningDisable = [ "format" ]; - # We will append QT wrapper args to our own wrapper - dontWrapQtApps = true; + qtWrapperArgs = [ + "--prefix" + "LD_LIBRARY_PATH" + ":" + "${lua5_3_compat}/lib:/run/opengl-driver/lib" + ]; postFixup = '' mkdir -p $out/share/kikoplay/extension/script cp -r ${ - (fetchFromGitHub { + fetchFromGitHub { owner = "KikoPlayProject"; repo = "KikoPlayScript"; - rev = "0efa0aa479922ea7881966e3876263ccc3de1cf7"; - hash = "sha256-saRI+/wk90Ldry85dh3PStKVQZjDECtPN58tJftkVJA="; - }) + rev = "31dc29fd2fd538eab529f1165697e94bac131737"; + hash = "sha256-3iwm4zMd1yEQ2bFWZqjIGj2IoGUtXl1LEPFlEJjLIew="; + } }/{bgm_calendar,danmu,library,resource} $out/share/kikoplay/extension/script/ mkdir -p $out/share/kikoplay/extension/app cp -r ${ - (fetchFromGitHub { + fetchFromGitHub { owner = "KikoPlayProject"; repo = "KikoPlayApp"; - rev = "1e9c0a2e0a0b34ce4f8b97c712afacd85708f848"; - hash = "sha256-ditVnsOHirCw/ve96c0evBYWG+1YQpsQXht7vgto8/o="; - }) + rev = "62082956bbb0719c4a3a544be6d26e84162370de"; + hash = "sha256-/BuEyOwZvm1LRU0UQ/xqxOqouGB06p72WYFcSSdjqiw="; + } }/app/* $out/share/kikoplay/extension/app/ - - wrapProgram $out/bin/KikoPlay \ - "''${qtWrapperArgs[@]}" \ - --set QT_QPA_PLATFORM xcb \ - --set XDG_SESSION_TYPE x11 ''; + passthru = { + inherit ela-widget-tools qtwebapp; + }; + meta = { + changelog = "https://github.com/KikoPlayProject/KikoPlay/releases/tag/${finalAttrs.version}"; mainProgram = "KikoPlay"; maintainers = with lib.maintainers; [ xddxdd ]; description = "More than a Full-Featured Danmu Player"; @@ -94,4 +109,4 @@ stdenv.mkDerivation rec { # See https://github.com/NixOS/nixpkgs/pull/354929 broken = stdenv.hostPlatform.isDarwin; }; -} +})