nixpkgs/pkgs/servers/sip/freeswitch/default.nix

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

198 lines
3.9 KiB
Nix
Raw Normal View History

{
fetchFromGitHub,
stdenv,
lib,
pkg-config,
autoreconfHook,
ncurses,
gnutls,
readline,
openssl,
perl,
sqlite,
libjpeg,
speex,
pcre,
libuuid,
ldns,
libedit,
yasm,
which,
libsndfile,
libtiff,
libxcrypt,
callPackage,
SystemConfiguration,
2020-01-01 21:07:45 +00:00
modules ? null,
2020-05-11 14:02:16 +00:00
nixosTests,
}:
let
availableModules = callPackage ./modules.nix { };
# the default list from v1.8.7, except with applications/mod_signalwire also disabled
defaultModules =
mods:
with mods;
[
applications.commands
applications.conference
applications.db
applications.dptools
applications.enum
applications.esf
applications.expr
applications.fifo
applications.fsv
applications.hash
applications.httapi
applications.sms
applications.spandsp
applications.valet_parking
applications.voicemail
applications.curl
codecs.amr
codecs.b64
codecs.g723_1
codecs.g729
codecs.h26x
codecs.opus
2020-01-01 21:07:45 +00:00
databases.mariadb
databases.pgsql
dialplans.asterisk
dialplans.xml
endpoints.loopback
endpoints.rtc
endpoints.skinny
endpoints.sofia
endpoints.verto
event_handlers.cdr_csv
event_handlers.cdr_sqlite
event_handlers.event_socket
formats.local_stream
formats.native_file
formats.png
formats.sndfile
formats.tone_stream
languages.lua
loggers.console
loggers.logfile
loggers.syslog
say.en
xml_int.cdr
xml_int.rpc
xml_int.scgi
]
++ lib.optionals stdenv.hostPlatform.isLinux [ endpoints.gsmopen ];
enabledModules = (if modules != null then modules else defaultModules) availableModules;
modulesConf =
let
lst = builtins.map (mod: mod.path) enabledModules;
str = lib.strings.concatStringsSep "\n" lst;
in
builtins.toFile "modules.conf" str;
in
stdenv.mkDerivation rec {
2020-01-01 21:07:45 +00:00
pname = "freeswitch";
2024-08-04 01:11:06 +00:00
version = "1.10.12";
2020-01-01 21:07:45 +00:00
src = fetchFromGitHub {
owner = "signalwire";
repo = pname;
rev = "v${version}";
2024-08-04 01:11:06 +00:00
hash = "sha256-uOO+TpKjJkdjEp4nHzxcHtZOXqXzpkIF3dno1AX17d8=";
};
2017-09-16 10:08:08 +00:00
postPatch = ''
patchShebangs libs/libvpx/build/make/rtcd.pl
substituteInPlace libs/libvpx/build/make/configure.sh \
--replace AS=\''${AS} AS=yasm
# Disable advertisement banners
for f in src/include/cc.h libs/esl/src/include/cc.h; do
{
echo 'const char *cc = "";'
echo 'const char *cc_s = "";'
} > $f
done
2017-09-16 10:08:08 +00:00
'';
2021-05-10 18:22:46 +00:00
strictDeps = true;
nativeBuildInputs = [
pkg-config
autoreconfHook
perl
which
yasm
];
2016-08-24 23:23:03 +00:00
buildInputs =
[
openssl
ncurses
gnutls
readline
libjpeg
sqlite
pcre
speex
ldns
libedit
2019-02-11 17:17:56 +00:00
libsndfile
libtiff
2022-10-03 14:47:50 +00:00
libuuid
libxcrypt
]
++ lib.unique (lib.concatMap (mod: mod.inputs) enabledModules)
++ lib.optionals stdenv.hostPlatform.isDarwin [ SystemConfiguration ];
enableParallelBuilding = true;
env.NIX_CFLAGS_COMPILE = "-Wno-error";
2022-09-20 13:02:55 +00:00
# Using c++14 because of build error
# gsm_at.h:94:32: error: ISO C++17 does not allow dynamic exception specifications
CXXFLAGS = "-std=c++14";
2021-10-31 10:40:58 +00:00
CFLAGS = "-D_ANSI_SOURCE";
hardeningDisable = [ "format" ];
2016-02-11 01:38:14 +00:00
preConfigure = ''
2020-01-01 21:07:45 +00:00
./bootstrap.sh
cp "${modulesConf}" modules.conf
'';
postInstall = ''
# helper for compiling modules... not generally useful; also pulls in perl dependency
rm "$out"/bin/fsxs
# include configuration templates
cp -r conf $out/share/freeswitch/
'';
2020-05-11 14:02:16 +00:00
passthru.tests.freeswitch = nixosTests.freeswitch;
meta = {
description = "Cross-Platform Scalable FREE Multi-Protocol Soft Switch";
homepage = "https://freeswitch.org/";
2021-01-15 07:07:56 +00:00
license = lib.licenses.mpl11;
2023-12-22 20:10:35 +00:00
maintainers = with lib.maintainers; [ mikaelfangel ];
2021-01-15 07:07:56 +00:00
platforms = with lib.platforms; unix;
2023-02-04 11:00:56 +00:00
broken = stdenv.hostPlatform.isDarwin;
};
}