Merge pull request #140777 from dali99/update_liquidsoap

Update liquidsoap to 2.0.5
This commit is contained in:
Lassulus 2022-06-09 10:31:24 +02:00 committed by GitHub
commit 6f2f7cc4ab
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 274 additions and 94 deletions

View file

@ -0,0 +1,20 @@
{ lib, buildDunePackage, fetchFromGitHub }:
buildDunePackage rec {
pname = "cry";
version = "0.6.5";
src = fetchFromGitHub {
owner = "savonet";
repo = "ocaml-cry";
rev = version;
sha256 = "1g4smccj27sv8pb9az5hbzxi99swg3d55mp7j25lz30xyabvksc3";
};
meta = with lib; {
homepage = "https://github.com/savonet/ocaml-cry";
description = "OCaml client for the various icecast & shoutcast source protocols";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ dandellion ];
};
}

View file

@ -0,0 +1,24 @@
{ lib, buildDunePackage, fetchFromGitHub, dune-configurator, faad2, pkg-config }:
buildDunePackage rec {
pname = "faad";
version = "0.5.1";
src = fetchFromGitHub {
owner = "savonet";
repo = "ocaml-faad";
rev = "v${version}";
sha256 = "sha256-3ayKZhgJAgsoOqn0InSrM5f3TImRHOQMtWETICo4t3o=";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [ dune-configurator ];
propagatedBuildInputs = [ faad2 ];
meta = with lib; {
homepage = "https://github.com/savonet/ocaml-faad";
description = "Bindings for the faad library which provides functions for decoding AAC audio files";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ dandellion ];
};
}

View file

@ -0,0 +1,24 @@
{ lib, buildDunePackage, fetchFromGitHub, dune-configurator, pkg-config, frei0r }:
buildDunePackage rec {
pname = "frei0r";
version = "0.1.2";
src = fetchFromGitHub {
owner = "savonet";
repo = "ocaml-frei0r";
rev = "v${version}";
sha256 = "sha256-eh/ymZO/3a1z6uvZdnXgma/7AU2NBVs2lddA+R/kuQA=";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [ dune-configurator ];
propagatedBuildInputs = [ frei0r ];
meta = with lib; {
homepage = "https://github.com/savonet/ocaml-frei0r";
description = "Bindings for the frei0r API which provides video effects";
license = licenses.lgpl21Plus;
maintainers = with maintainers; [ dandellion ];
};
}

View file

@ -0,0 +1,26 @@
{ lib, buildDunePackage, fetchFromGitHub, pkg-config, dune-configurator, lame }:
buildDunePackage rec {
pname = "lame";
version = "0.3.6";
minimalOCamlVersion = "4.03";
src = fetchFromGitHub {
owner = "savonet";
repo = "ocaml-lame";
rev = "v${version}";
sha256 = "sha256-oRxP1OM0pGdz8CB+ou7kbbrNaB1x9z9KTfciLsivFnI=";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [ dune-configurator ];
propagatedBuildInputs = [ lame ];
meta = with lib; {
homepage = "https://github.com/savonet/ocaml-lame";
description = "Bindings for the lame library which provides functions for encoding mp3 files";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ dandellion ];
};
}

View file

@ -0,0 +1,25 @@
{ lib, buildDunePackage, fetchFromGitHub, dune-configurator, ctypes, lilv }:
buildDunePackage rec {
pname = "lilv";
version = "0.1.0";
src = fetchFromGitHub {
owner = "savonet";
repo = "ocaml-lilv";
rev = "v${version}";
sha256 = "080ja8c4sxprk5qnldpfzxriag57m9603vny3b4bnwh5xm1id08c";
};
minimalOCamlVersion = "4.03.0";
buildInputs = [ dune-configurator ];
propagatedBuildInputs = [ ctypes lilv ];
meta = with lib; {
homepage = "https://github.com/savonet/ocaml-lilv";
description = "OCaml bindings for lilv";
license = licenses.lgpl21Only;
maintainers = with maintainers; [ dandellion ];
};
}

View file

@ -1,21 +1,18 @@
{ stdenv, lib, pkg-config, ocaml, findlib, fetchurl, curl, ncurses, lwt }:
if lib.versionOlder ocaml.version "4.02"
{ lib, stdenv, fetchurl, pkg-config, ocaml, findlib, curl, lwt, lwt_ppx }:
if lib.versionOlder ocaml.version "4.04"
then throw "ocurl is not available for OCaml ${ocaml.version}"
else
stdenv.mkDerivation rec {
pname = "ocurl";
version = "0.9.1";
version = "0.9.2";
src = fetchurl {
url = "http://ygrek.org.ua/p/release/ocurl/ocurl-${version}.tar.gz";
sha256 = "0n621cxb9012pj280c7821qqsdhypj8qy9qgrah79dkh6a8h2py6";
url = "https://github.com/ygrek/ocurl/releases/download/${version}/ocurl-${version}.tar.gz";
sha256 = "sha256-4DWXGMh02s1VwLWW5d7h0jtMOUubWmBPGm1hghfWd2M=";
};
nativeBuildInputs = [ pkg-config ocaml findlib ];
buildInputs = [ ncurses ];
propagatedBuildInputs = [ curl lwt ];
propagatedBuildInputs = [ curl lwt lwt_ppx ];
strictDeps = true;
@ -24,7 +21,7 @@ stdenv.mkDerivation rec {
description = "OCaml bindings to libcurl";
license = lib.licenses.mit;
homepage = "http://ygrek.org.ua/p/ocurl/";
maintainers = with lib.maintainers; [ bennofs ];
maintainers = with lib.maintainers; [ dandellion bennofs ];
platforms = ocaml.meta.platforms or [ ];
};
}

View file

@ -0,0 +1,23 @@
{ lib, buildDunePackage, fetchFromGitHub, dune-configurator, soundtouch }:
buildDunePackage rec {
pname = "soundtouch";
version = "0.1.9";
src = fetchFromGitHub {
owner = "savonet";
repo = "ocaml-soundtouch";
rev = "v${version}";
sha256 = "sha256-81Mhk4PZx4jGrVIevzMslvVbKzipzDzHWnbtOjeZCI8=";
};
buildInputs = [ dune-configurator ];
propagatedBuildInputs = [ soundtouch ];
meta = with lib; {
homepage = "https://github.com/savonet/ocaml-soundtouch";
description = "Bindings for the soundtouch library which provides functions for changing pitch and timestretching audio data";
license = licenses.lgpl21Plus;
maintainers = with maintainers; [ dandellion ];
};
}

View file

@ -0,0 +1,26 @@
{ lib, buildDunePackage, fetchFromGitHub, dune-configurator, pkg-config, taglib, zlib }:
buildDunePackage rec {
pname = "taglib";
version = "0.3.9";
src = fetchFromGitHub {
owner = "savonet";
repo = "ocaml-taglib";
rev = "v${version}";
sha256 = "sha256-n8Vv8Vepvhx7anZdWIdBfw+HSQShKWjNe6l0gqRRsSs=";
};
minimalOCamlVersion = "4.05.0"; # Documented version 4.02.0. 4.05.0 actually required.
nativeBuildInputs = [ pkg-config ];
buildInputs = [ dune-configurator ];
propagatedBuildInputs = [ taglib zlib ];
meta = with lib; {
homepage = "https://github.com/savonet/ocaml-taglib";
description = "Bindings for the taglib library which provides functions for reading tags in headers of audio files";
license = with licenses; [ lgpl21Plus "link-exception" ]; # GNU Library Public License 2 Linking Exception
maintainers = with maintainers; [ dandellion ];
};
}

View file

@ -1,108 +1,99 @@
{ lib, stdenv, makeWrapper, fetchurl, which, pkg-config
, fetchFromGitLab
, fetchFromGitHub
, libjpeg
, ocamlPackages
, libao, portaudio, alsa-lib, libpulseaudio, libjack2
, libsamplerate, libmad, taglib, lame, libogg
, libvorbis, speex, libtheora, libopus, zlib
, faad2, flac, ladspaH, ffmpeg, frei0r, dssi
, awscli2, curl, ffmpeg, youtube-dl
, runtimePackages ? [ awscli2 curl ffmpeg youtube-dl ]
}:
let
pname = "liquidsoap";
version = "1.4.2";
ocaml-ffmpeg = fetchurl {
url = "https://github.com/savonet/ocaml-ffmpeg/releases/download/v0.4.2/ocaml-ffmpeg-0.4.2.tar.gz";
sha256 = "1lx5s1avds9fsh77828ifn71r2g89rxakhs8pp995a675phm9viw";
};
packageFilters = map (p: "-e '/ocaml-${p}/d'" )
[ "gstreamer" "shine" "aacplus" "schroedinger"
"voaacenc" "soundtouch" "gavl" "lo"
];
version = "2.0.5";
in
# Liquidsoap 1.4.2 is not compatible with menhir ≥ 20220210
# Locally override menhir to an earlier version
let
menhirLib = ocamlPackages.menhirLib.overrideAttrs (o: rec {
version = "20211128";
src = fetchFromGitLab {
domain = "gitlab.inria.fr";
owner = "fpottier";
repo = "menhir";
rev = version;
sha256 = "sha256-L/zfjPZfn9L7qqqqJGk3Ge52rvujOVPiL8jxfH5R60g=";
};
});
menhirSdk = ocamlPackages.menhirSdk.override { inherit menhirLib; };
menhir = ocamlPackages.menhir.override {
inherit menhirLib menhirSdk;
};
srt = ocamlPackages.srt.overrideAttrs (old: rec {
version = "0.1.1";
src = fetchFromGitHub {
owner = "savonet";
repo = "ocaml-srt";
rev = "v${version}";
sha256 = "0xh89w4j7lljvpy2n08x6m9kw88f82snmzf23kp0gw637sjnrj6f";
};
});
in
stdenv.mkDerivation {
name = "${pname}-full-${version}";
inherit pname version;
src = fetchurl {
url = "https://github.com/savonet/${pname}/releases/download/v${version}/${pname}-${version}-full.tar.gz";
sha256 = "0wkwnzj1a0vizv7sr1blwk5gzm2qi0n02ndijnq1i50cwrgxs1a4";
url = "https://github.com/savonet/${pname}/releases/download/v${version}/${pname}-${version}.tar.bz2";
sha256 = "sha256-+BHRAnO2sKK504EhXc6LPabnOzcOAAHmtmqVNQ8OeZU=";
};
# Use ocaml-srt and ocaml-fdkaac from nixpkgs
# Use ocaml-ffmpeg at 0.4.2 for compatibility with ffmpeg 4.3
prePatch = ''
rm -rf ocaml-srt*/ ocaml-fdkaac*/ ocaml-ffmpeg*/
tar xzf ${ocaml-ffmpeg}
'';
preConfigure = /* we prefer system-wide libs */ ''
sed -i "s|gsed|sed|" Makefile
make bootstrap
# autoreconf -vi # use system libraries
sed ${toString packageFilters} PACKAGES.default > PACKAGES
'';
postFixup = ''
wrapProgram $out/bin/liquidsoap --set LIQ_LADSPA_PATH /run/current-system/sw/lib/ladspa
wrapProgram $out/bin/liquidsoap \
--set LIQ_LADSPA_PATH /run/current-system/sw/lib/ladspa \
--prefix PATH : ${lib.makeBinPath runtimePackages}
'';
configureFlags = [ "--localstatedir=/var" ];
nativeBuildInputs = [ makeWrapper pkg-config ];
buildInputs =
[ which ocamlPackages.ocaml ocamlPackages.findlib
libao portaudio alsa-lib libpulseaudio libjack2
libsamplerate libmad taglib lame libogg
libvorbis speex libtheora libopus zlib
faad2 flac ladspaH ffmpeg frei0r dssi
ocamlPackages.xmlm ocamlPackages.ocaml_pcre
ocamlPackages.camomile
ocamlPackages.fdkaac
srt ocamlPackages.sedlex menhir menhirLib
];
buildInputs = [
libjpeg
which
ocamlPackages.ocaml ocamlPackages.findlib
hardeningDisable = [ "format" "fortify" ];
# Mandatory dependencies
ocamlPackages.dtools
ocamlPackages.duppy
ocamlPackages.mm
ocamlPackages.ocaml_pcre
ocamlPackages.menhir ocamlPackages.menhirLib
ocamlPackages.sedlex
# Recommended dependencies
ocamlPackages.camomile
ocamlPackages.samplerate
# Optional dependencies
ocamlPackages.camlimages
ocamlPackages.gd4o
ocamlPackages.alsa
ocamlPackages.ao
ocamlPackages.bjack
ocamlPackages.cry
ocamlPackages.dssi
ocamlPackages.faad
ocamlPackages.fdkaac
ocamlPackages.srt
ocamlPackages.ffmpeg
ocamlPackages.flac
ocamlPackages.frei0r
ocamlPackages.gstreamer
ocamlPackages.inotify
ocamlPackages.ladspa
ocamlPackages.lame
ocamlPackages.lastfm
ocamlPackages.lo
ocamlPackages.mad
ocamlPackages.magic
ocamlPackages.ogg
ocamlPackages.opus
ocamlPackages.portaudio
ocamlPackages.pulseaudio
ocamlPackages.shine
ocamlPackages.soundtouch
ocamlPackages.speex
ocamlPackages.srt
ocamlPackages.ssl
ocamlPackages.taglib
ocamlPackages.theora
ocamlPackages.vorbis
ocamlPackages.xmlplaylist
ocamlPackages.posix-time2
ocamlPackages.tsdl
ocamlPackages.tsdl-image
ocamlPackages.tsdl-ttf
# Undocumented dependencies
ocamlPackages.ocurl
ocamlPackages.lilv
ocamlPackages.graphics
ocamlPackages.yojson
ocamlPackages.cohttp-lwt-unix
];
meta = with lib; {
description = "Swiss-army knife for multimedia streaming";
homepage = "https://www.liquidsoap.info/";
maintainers = with maintainers; [ ehmry ];
license = licenses.gpl2;
maintainers = with maintainers; [ dandellion ehmry ];
license = licenses.gpl2Plus;
platforms = ocamlPackages.ocaml.meta.platforms or [];
};
}

View file

@ -239,6 +239,8 @@ let
crunch = callPackage ../development/tools/ocaml/crunch { };
cry = callPackage ../development/ocaml-modules/cry { };
cryptokit = callPackage ../development/ocaml-modules/cryptokit { };
csexp = callPackage ../development/ocaml-modules/csexp { };
@ -397,6 +399,8 @@ let
ezxmlm = callPackage ../development/ocaml-modules/ezxmlm { };
faad = callPackage ../development/ocaml-modules/faad { };
facile = callPackage ../development/ocaml-modules/facile { };
faraday = callPackage ../development/ocaml-modules/faraday { };
@ -460,6 +464,10 @@ let
fpath = callPackage ../development/ocaml-modules/fpath { };
frei0r = callPackage ../development/ocaml-modules/frei0r {
inherit (pkgs) frei0r;
};
functoria = callPackage ../development/ocaml-modules/functoria { };
functoria-runtime = callPackage ../development/ocaml-modules/functoria/runtime.nix { };
@ -684,6 +692,10 @@ let
lambda-term = callPackage ../development/ocaml-modules/lambda-term { };
lame = callPackage ../development/ocaml-modules/lame {
inherit (pkgs) lame;
};
lastfm = callPackage ../development/ocaml-modules/lastfm { };
lens = callPackage ../development/ocaml-modules/lens { };
@ -694,6 +706,10 @@ let
letsencrypt-dns = callPackage ../development/ocaml-modules/letsencrypt/dns.nix { };
lilv = callPackage ../development/ocaml-modules/lilv {
inherit (pkgs) lilv;
};
linenoise = callPackage ../development/ocaml-modules/linenoise { };
llvm = callPackage ../development/ocaml-modules/llvm {
@ -1179,6 +1195,10 @@ let
sosa = callPackage ../development/ocaml-modules/sosa { };
soundtouch = callPackage ../development/ocaml-modules/soundtouch {
inherit (pkgs) soundtouch;
};
spacetime_lib = callPackage ../development/ocaml-modules/spacetime_lib { };
speex = callPackage ../development/ocaml-modules/speex {
@ -1377,6 +1397,10 @@ let
stringext = callPackage ../development/ocaml-modules/stringext { };
taglib = callPackage ../development/ocaml-modules/taglib {
inherit (pkgs) taglib;
};
tcslib = callPackage ../development/ocaml-modules/tcslib { };
telegraml = callPackage ../development/ocaml-modules/telegraml { };