mediathekview: 14.2.0 -> 14.4.2

pin java version to openjdk25 as jre in nixpkgs is jre21
use finalAttrs instead of rec
rewirte the java wrapper to include all java flags recommended
by mediathekview source code as well as all mandatory flags to
get the program working

add sanity install check to ensure both java version and dependencies
can at least be loaded by the program
add makefu as maintainer

open upstream issue: vlc and ffmpeg paths are not automatically detected
(mediathekview/MediathekView#824)

supersedes #414385
This commit is contained in:
makefu 2025-12-25 00:11:32 +01:00
parent 9affda6bcd
commit 5952ea02df
No known key found for this signature in database
GPG key ID: 36F7711F3FC0F225

View file

@ -1,20 +1,21 @@
{
lib,
pkgs,
stdenv,
fetchurl,
makeWrapper,
libglvnd,
libnotify,
jre,
openjdk25, # 2025-12-25: pkgs.jre points to java 21 and there is no equivalent for jre25
zip,
}:
stdenv.mkDerivation rec {
version = "14.2.0";
stdenv.mkDerivation (finalAttrs: {
version = "14.4.2";
pname = "mediathekview";
src = fetchurl {
url = "https://download.mediathekview.de/stabil/MediathekView-${version}-linux.tar.gz";
sha256 = "sha256-EWpa6YE9Fk7K14vvsbjadKuGGZGqNhlouDtwj6KpbdE=";
url = "https://download.mediathekview.de/stabil/MediathekView-${finalAttrs.version}-linux.tar.gz";
sha256 = "sha256-sDZSXYzak2RKQiW1OGpgSvFlkZrttsoOxVqRaodol24=";
};
nativeBuildInputs = [
@ -35,29 +36,37 @@ stdenv.mkDerivation rec {
mkdir -p $out/{bin,lib}
install -m644 MediathekView.jar $out/lib
cp -r dependency $out/lib
makeWrapper ${jre}/bin/java $out/bin/mediathek \
--add-flags "-jar $out/lib/MediathekView.jar" \
makeWrapper ${openjdk25}/bin/java $out/bin/mediathek \
--add-flags "--add-exports=java.desktop/sun.swing=ALL-UNNAMED -XX:MaxRAMPercentage=10.0 -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=compact -XX:+UseStringDeduplication --add-opens=java.desktop/sun.awt.X11=ALL-UNNAMED --enable-native-access=ALL-UNNAMED -cp \"$out/lib/dependency/*:$out/lib/MediathekView.jar\" mediathek.Main" \
--suffix LD_LIBRARY_PATH : "${libraryPath}"
makeWrapper ${jre}/bin/java $out/bin/MediathekView \
--add-flags "-jar $out/lib/MediathekView.jar" \
--suffix LD_LIBRARY_PATH : "${libraryPath}"
ln -s $out/bin/mediathek $out/bin/MediathekView
makeWrapper ${jre}/bin/java $out/bin/MediathekView_ipv4 \
--add-flags "-Djava.net.preferIPv4Stack=true -jar $out/lib/MediathekView.jar" \
makeWrapper ${openjdk25}/bin/java $out/bin/MediathekView_ipv4 \
--add-flags "-Djava.net.preferIPv4Stack=true --add-exports=java.desktop/sun.swing=ALL-UNNAMED -XX:MaxRAMPercentage=10.0 -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=compact -XX:+UseStringDeduplication --add-opens=java.desktop/sun.awt.X11=ALL-UNNAMED --enable-native-access=ALL-UNNAMED -cp \"$out/lib/dependency/*:$out/lib/MediathekView.jar\" mediathek.Main" \
--suffix LD_LIBRARY_PATH : "${libraryPath}"
runHook postInstall
'';
doInstallCheck = true;
# sanity to ensure that mediathek can actually start
# unfortunately the executable does not print its own version
installCheckPhase = ''
runHook postCheck
($out/bin/${finalAttrs.meta.mainProgram} --help 2>&1 ||: ) | grep -q 'Diese Version von MediathekView unterst?tzt keine Kommandozeilenausf?hrung.'
runHook preCheck
'';
meta = {
description = "Offers access to the Mediathek of different tv stations (ARD, ZDF, Arte, etc.)";
homepage = "https://mediathekview.de/";
sourceProvenance = with lib.sourceTypes; [ binaryBytecode ];
license = lib.licenses.gpl3Plus;
mainProgram = "mediathek";
maintainers = [ ];
maintainers = with lib.maintainers; [ makefu ];
platforms = lib.platforms.all;
};
}
})