nixpkgs/pkgs/development/libraries/liblinphone/default.nix
2020-04-11 15:32:39 +03:00

160 lines
3.4 KiB
Nix

{ bcg729
, bctoolbox
, bcunit
, belcard
, belle-sip
, belr
, bzrtp
, cairo
, cmake
, cyrus_sasl
, doxygen
, fetchFromGitLab
, fetchurl
, ffmpeg
, gdk-pixbuf
, git
, glib
, graphviz
, gtk2
, intltool
, libexosip
, libmatroska
, libnotify
, libosip
, libsoup
, libupnp
, libX11
, libxml2
, lime
, makeWrapper
, mbedtls
, mediastreamer
, mediastreamer-openh264
, openldap
, ortp
, pango
, pkgconfig
, python
, readline
, soci
, speex
, sqlite
, stdenv
, udev
, xercesc
, xsd
, zlib
}:
let
# Got the following error when building:
#
# Your version of Doxygen (1.8.17) is known to malfunction with some of our
# macro definitions, which causes errors while wrapprers generation. Please
# install an older version of Doxygen (< 1.8.17) or disable documentation
# and wrapper generation.
#
# So, let's then use 1.8.16 version of doxygen in this derivation. Hopefully
# this workaround can be removed with some newer release of liblinphone.
doxygen_1_8_16 = doxygen.overrideAttrs (
oldAttrs: rec {
name = "doxygen-1.8.16";
src = fetchurl {
urls = [
"mirror://sourceforge/doxygen/${name}.src.tar.gz" # faster, with https, etc.
"http://doxygen.nl/files/${name}.src.tar.gz"
];
sha256 = "10iwv8bcz5b5cd85gg8pgn0bmyg04n9hs36xn7ggjjnvynv1z67z";
};
buildInputs = oldAttrs.buildInputs ++ [ git ];
}
);
in
stdenv.mkDerivation rec {
pname = "liblinphone";
# Using master branch for linphone-desktop caused a chain reaction that many
# of its dependencies needed to use master branch too.
version = "unstable-2020-03-20";
src = fetchFromGitLab {
domain = "gitlab.linphone.org";
owner = "public";
group = "BC";
repo = pname;
rev = "1d762a3e0e304aa579798aed4400d2cee2c1ffa0";
sha256 = "0ja38payyqbd8z6q5l5w6hi7xarmfj5021gh0qdk0j832br4c6c3";
};
# Do not build static libraries
cmakeFlags = [ "-DENABLE_STATIC=NO" ];
# TODO: Not sure if all these inputs are actually needed. Most of them were
# defined when liblinphone and linphone-desktop weren't separated yet, so some
# of them might not be needed for liblinphone alone.
buildInputs = [
(python.withPackages (ps: [ ps.pystache ps.six ]))
bcg729
bctoolbox
belcard
belle-sip
belr
bzrtp
cairo
cyrus_sasl
ffmpeg
gdk-pixbuf
git
glib
gtk2
libX11
libexosip
libmatroska
libnotify
libosip
libsoup
libupnp
libxml2
lime
mbedtls
mediastreamer
openldap
ortp
pango
readline
soci
speex
sqlite
udev
xercesc
xsd
zlib
];
nativeBuildInputs = [
bcunit
cmake
doxygen_1_8_16
graphviz
intltool
makeWrapper
pkgconfig
];
# Some grammar files needed to be copied too from some dependencies. I suppose
# if one define a dependency in such a way that its share directory is found,
# then this copying would be unnecessary. Instead of actually copying these
# files, create a symlink.
postInstall = ''
mkdir -p $out/share/belr/grammars
ln -s ${belcard}/share/belr/grammars/* $out/share/belr/grammars/
'';
meta = with stdenv.lib; {
homepage = "https://www.linphone.org/technical-corner/liblinphone";
description = "Library for SIP calls and instant messaging";
license = licenses.gpl3;
platforms = platforms.linux;
maintainers = with maintainers; [ jluttine ];
};
}