Commit 62d9589a authored by thesn10's avatar thesn10
Browse files

gpac: libjpegturbo, x11, updateScript & refactor

parent 10bd4533
Loading
Loading
Loading
Loading
+64 −34
Original line number Diff line number Diff line
@@ -2,12 +2,14 @@
  lib,
  stdenv,
  fetchFromGitHub,
  gitUpdater,
  unstableGitUpdater,
  cctools,
  pkg-config,
  zlib,
  ffmpeg,
  ffmpeg-headless,
  freetype,
  libjpeg,
  libjpeg_turbo,
  libpng,
  libmad,
  faad2,
@@ -18,7 +20,6 @@
  nghttp2,
  openjpeg,
  libcaca,
  libXv,
  mesa,
  mesa_glu,
  xvidcore,
@@ -28,41 +29,66 @@
  pulseaudio,
  SDL2,
  curl,
  xorg,

  withFullDeps ? false,
  withFfmpeg ? withFullDeps,
  releaseChannel ? "stable",
}:

stdenv.mkDerivation rec {
  pname = "gpac";
  version = if releaseChannel == "nightly" then "2.4-unstable-2025-10-26" else "2.4.0";

  src =
    if releaseChannel == "nightly" then
      fetchFromGitHub {
let
  stable = rec {
    version = "2.4.0"; # See below TODO.
    src = fetchFromGitHub {
      owner = "gpac";
      repo = "gpac";
        rev = "e1a54e81b3befba2b0bffd1d4c1cf50da516c5f3";
        hash = "sha256-jSMBPuWPmTDCebImdmAcCZl0hEQpJK4QMNGcEXgs3A4=";
      rev = "v${version}";
      hash = "sha256-RADDqc5RxNV2EfRTzJP/yz66p0riyn81zvwU3r9xncM=";
    };
    updateScript = gitUpdater {
      odd-unstable = true;
      rev-prefix = "v";
      ignoredVersions = "^(abi|test)";
    };
  }
    else
      fetchFromGitHub {
  // {
    # ffmpeg 7.0.2 works, but 7.1.1 (which is packaged in nixpkgs) doesn't
    # because v2.4.0 of this package relies on internal private ffmpeg fields.
    # TODO: remove this, and switch to simply using ffmpeg-headless,
    #       when updating stable to 2.6
    ffmpeg-headless = ffmpeg-headless.override {
      version = "7.0.2";
      hash = "sha256-6bcTxMt0rH/Nso3X7zhrFNkkmWYtxsbUqVQKh25R1Fs=";
    };
  };
  unstable = {
    version = "2.4-unstable-2025-10-26";
    src = fetchFromGitHub {
      owner = "gpac";
      repo = "gpac";
        rev = "v${version}";
        hash = "sha256-RADDqc5RxNV2EfRTzJP/yz66p0riyn81zvwU3r9xncM=";
      rev = "e1a54e81b3befba2b0bffd1d4c1cf50da516c5f3";
      hash = "sha256-jSMBPuWPmTDCebImdmAcCZl0hEQpJK4QMNGcEXgs3A4=";
    };
    updateScript = unstableGitUpdater {
      tagFormat = "v*";
      tagPrefix = "v";
    };
    inherit ffmpeg-headless;
  };
  channelToUse = if releaseChannel == "unstable" then unstable else stable;
in
stdenv.mkDerivation (finalAttrs: {
  pname = "gpac";
  inherit (channelToUse) version src;

  nativeBuildInputs =
    [
  nativeBuildInputs = [
    pkg-config
  ]
  ++ lib.optionals stdenv.hostPlatform.isDarwin [
    cctools
  ]
  ++ lib.optionals withFfmpeg [
      ffmpeg
    channelToUse.ffmpeg-headless
  ];

  # ref: https://wiki.gpac.io/Build/build/GPAC-Build-Guide-for-Linux/#gpac-easy-build-recommended-for-most-users
@@ -71,7 +97,7 @@ stdenv.mkDerivation rec {
  ]
  ++ lib.optionals withFullDeps [
    freetype
    libjpeg
    libjpeg_turbo
    libpng
    libmad
    faad2
@@ -82,7 +108,9 @@ stdenv.mkDerivation rec {
    nghttp2
    openjpeg
    libcaca
    libXv
    xorg.libX11
    xorg.libXv
    xorg.xorgproto
    mesa
    mesa_glu
    xvidcore
@@ -96,6 +124,8 @@ stdenv.mkDerivation rec {

  enableParallelBuilding = true;

  passthru.updateScript = channelToUse.updateScript;

  meta = {
    description = "Open Source multimedia framework for research and academic purposes";
    longDescription = ''
@@ -118,4 +148,4 @@ stdenv.mkDerivation rec {
    ];
    platforms = lib.platforms.unix;
  };
}
})
+2 −11
Original line number Diff line number Diff line
@@ -14540,16 +14540,7 @@ with pkgs;
    php = php83; # https://github.com/tchapi/davis/issues/195
  };

  gpac = callPackage ../by-name/gp/gpac/package.nix {
    ffmpeg = ffmpeg.override {
      version = "7.0.2";
      hash = "sha256-6bcTxMt0rH/Nso3X7zhrFNkkmWYtxsbUqVQKh25R1Fs=";
      ffmpegVariant = "headless";
    };
  };

  gpac_nightly = callPackage ../by-name/gp/gpac/package.nix {
    ffmpeg = ffmpeg-headless;
    releaseChannel = "nightly";
  gpac-unstable = callPackage ../by-name/gp/gpac/package.nix {
    releaseChannel = "unstable";
  };
}