nixpkgs/pkgs/servers/asterisk/default.nix
Jonathan Ringer 9bb3fccb5b treewide: pkgs.pkgconfig -> pkgs.pkg-config, move pkgconfig to alias.nix
continuation of #109595

pkgconfig was aliased in 2018, however, it remained in
all-packages.nix due to its wide usage. This cleans
up the remaining references to pkgs.pkgsconfig and
moves the entry to aliases.nix.

python3Packages.pkgconfig remained unchanged because
it's the canonical name of the upstream package
on pypi.
2021-01-19 01:16:25 -08:00

143 lines
4.6 KiB
Nix

{ stdenv, lib, fetchurl, fetchsvn,
jansson, libedit, libxml2, libxslt, ncurses, openssl, sqlite,
util-linux, dmidecode, libuuid, newt,
lua, speex,
srtp, wget, curl, iksemel, pkg-config
}:
let
common = {version, sha256, externals}: stdenv.mkDerivation {
inherit version;
pname = "asterisk";
buildInputs = [ jansson libedit libxml2 libxslt ncurses openssl sqlite
dmidecode libuuid newt
lua speex
srtp wget curl iksemel ];
nativeBuildInputs = [ util-linux pkg-config ];
patches = [
# We want the Makefile to install the default /var skeleton
# under ${out}/var but we also want to use /var at runtime.
# This patch changes the runtime behavior to look for state
# directories in /var rather than ${out}/var.
./runtime-vardirs.patch
];
postPatch = ''
echo "PJPROJECT_CONFIG_OPTS += --prefix=$out" >> third-party/pjproject/Makefile.rules
'';
src = fetchurl {
url = "https://downloads.asterisk.org/pub/telephony/asterisk/old-releases/asterisk-${version}.tar.gz";
inherit sha256;
};
# The default libdir is $PREFIX/usr/lib, which causes problems when paths
# compiled into Asterisk expect ${out}/usr/lib rather than ${out}/lib.
# Copy in externals to avoid them being downloaded;
# they have to be copied, because the modification date is checked.
# If you are getting a permission denied error on this dir,
# you're likely missing an automatically downloaded dependency
preConfigure = ''
mkdir externals_cache
${lib.concatStringsSep "\n"
(lib.mapAttrsToList (dst: src: "cp -r --no-preserve=mode ${src} ${dst}") externals)}
${lib.optionalString (externals ? "addons/mp3") "bash contrib/scripts/get_mp3_source.sh || true"}
chmod -w externals_cache
'';
configureFlags = [
"--libdir=\${out}/lib"
"--with-lua=${lua}/lib"
"--with-pjproject-bundled"
"--with-externals-cache=$(PWD)/externals_cache"
];
preBuild = ''
make menuselect.makeopts
${lib.optionalString (externals ? "addons/mp3") ''
substituteInPlace menuselect.makeopts --replace 'format_mp3 ' ""
''}
'';
postInstall = ''
# Install sample configuration files for this version of Asterisk
make samples
${lib.optionalString (lib.versionAtLeast version "17.0.0") "make install-headers"}
'';
meta = with lib; {
description = "Software implementation of a telephone private branch exchange (PBX)";
homepage = "https://www.asterisk.org/";
license = licenses.gpl2;
maintainers = with maintainers; [ auntie DerTim1 yorickvp ];
};
};
pjproject_2_10 = fetchurl {
url = "https://raw.githubusercontent.com/asterisk/third-party/master/pjproject/2.10/pjproject-2.10.tar.bz2";
sha256 = "14qmddinm4bv51rl0wwg5133r64x5bd6inwbx27ahb2n0151m2if";
};
mp3-202 = fetchsvn {
url = "http://svn.digium.com/svn/thirdparty/mp3/trunk";
rev = "202";
sha256 = "1s9idx2miwk178sa731ig9r4fzx4gy1q8xazfqyd7q4lfd70s1cy";
};
in rec {
# Supported releases (as of 2020-10-26).
# Source: https://wiki.asterisk.org/wiki/display/AST/Asterisk+Versions
# Exact version can be found at https://www.asterisk.org/downloads/asterisk/all-asterisk-versions/
#
# Series Type Rel. Date Sec. Fixes EOL
# 13.x LTS 2014-10-24 2020-10-24 2021-10-24
# 16.x LTS 2018-10-09 2022-10-09 2023-10-09
# 17.x Standard 2019-10-28 2020-10-28 2021-10-28
# 18.x LTS 2020-10-20 2024-10-20 2025-10-20
asterisk-lts = asterisk_18;
asterisk-stable = asterisk_18;
asterisk = asterisk_18;
asterisk_13 = common {
version = "13.38.0";
sha256 = "1kxff6pbry8nydkspi0mqllidz2lw3d3g3r127x8jwgx021x0rik";
externals = {
"externals_cache/pjproject-2.10.tar.bz2" = pjproject_2_10;
"addons/mp3" = mp3-202;
};
};
asterisk_16 = common {
version = "16.15.0";
sha256 = "12nc7ywm6w1xyn720kdc1sqz5wkjjrkxr25wisl02f4v5wz8py7m";
externals = {
"externals_cache/pjproject-2.10.tar.bz2" = pjproject_2_10;
"addons/mp3" = mp3-202;
};
};
asterisk_17 = common {
version = "17.9.0";
sha256 = "1fnm1z7g45m883ivkm36r4kqb7163bzazi70mwf0fc2rc28jd1z4";
externals = {
"externals_cache/pjproject-2.10.tar.bz2" = pjproject_2_10;
"addons/mp3" = mp3-202;
};
};
asterisk_18 = common {
version = "18.1.0";
sha256 = "1pq2nrf60xnvh2h1rv82bdfbxxxd277g68xas0vbfgr4531gc4nc";
externals = {
"externals_cache/pjproject-2.10.tar.bz2" = pjproject_2_10;
"addons/mp3" = mp3-202;
};
};
}