summary refs log tree commit diff
path: root/pkgs/servers/asterisk
diff options
context:
space:
mode:
authorJonathan Glines <auntieNeo@gmail.com>2015-04-16 11:42:17 -0600
committerJonathan Glines <auntieNeo@gmail.com>2015-04-16 17:40:28 -0600
commitc1b52871932dc4b2e4717429f33a6cff5eb7e47f (patch)
treed46487831216974c4ae714d7e780ac1f9aa43534 /pkgs/servers/asterisk
parent32bd96342796b44d62c9282cba10f0f51a179d36 (diff)
downloadnixpkgs-c1b52871932dc4b2e4717429f33a6cff5eb7e47f.tar
nixpkgs-c1b52871932dc4b2e4717429f33a6cff5eb7e47f.tar.gz
nixpkgs-c1b52871932dc4b2e4717429f33a6cff5eb7e47f.tar.bz2
nixpkgs-c1b52871932dc4b2e4717429f33a6cff5eb7e47f.tar.lz
nixpkgs-c1b52871932dc4b2e4717429f33a6cff5eb7e47f.tar.xz
nixpkgs-c1b52871932dc4b2e4717429f33a6cff5eb7e47f.tar.zst
nixpkgs-c1b52871932dc4b2e4717429f33a6cff5eb7e47f.zip
Added Asterisk telephony server
Diffstat (limited to 'pkgs/servers/asterisk')
-rw-r--r--pkgs/servers/asterisk/default.nix61
-rw-r--r--pkgs/servers/asterisk/disable-download.patch12
-rw-r--r--pkgs/servers/asterisk/runtime-vardirs.patch50
3 files changed, 123 insertions, 0 deletions
diff --git a/pkgs/servers/asterisk/default.nix b/pkgs/servers/asterisk/default.nix
new file mode 100644
index 00000000000..c37292d385f
--- /dev/null
+++ b/pkgs/servers/asterisk/default.nix
@@ -0,0 +1,61 @@
+{ stdenv, fetchurl, fetchgit, jansson, libxml2, libxslt, ncurses, openssl, sqlite, utillinux }:
+
+stdenv.mkDerivation rec {
+  name = "asterisk-${version}";
+  version = "13.3.2";
+
+  src = fetchurl {
+    url = "http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-${version}.tar.gz";
+    sha256 = "19dafvy6ch4v8949bjim64fff456k78156m30dy2yvhm94m5k1zz";
+  };
+
+  # Note that these sounds are included with the release tarball. They are
+  # provided here verbatim for the convenience of anyone wanting to build
+  # Asterisk from other sources.
+  coreSounds = fetchurl {
+    url = http://downloads.asterisk.org/pub/telephony/sounds/releases/asterisk-core-sounds-en-gsm-1.4.26.tar.gz;
+    sha256 = "2300e3ed1d2ded6808a30a6ba71191e7784710613a5431afebbd0162eb4d5d73";
+  };
+  mohSounds = fetchurl {
+    url = http://downloads.asterisk.org/pub/telephony/sounds/releases/asterisk-moh-opsound-wav-2.03.tar.gz;
+    sha256 = "449fb810d16502c3052fedf02f7e77b36206ac5a145f3dacf4177843a2fcb538";
+  };
+  # TODO: Sounds for other languages could be added here
+
+  buildInputs = [ jansson libxml2 libxslt ncurses openssl sqlite utillinux ];
+
+  patches = [
+    # Disable downloading of sound files (we will fetch them
+    # ourselves if needed).
+    ./disable-download.patch
+
+    # 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
+  ];
+
+  # Use the following preConfigure section when building Asterisk from sources
+  # other than the release tarball.
+#   preConfigure = ''
+#     ln -s ${coreSounds} sounds/asterisk-core-sounds-en-gsm-1.4.26.tar.gz
+#     ln -s ${mohSounds} sounds/asterisk-moh-opsound-wav-2.03.tar.gz
+#   '';
+
+  # The default libdir is $PREFIX/usr/lib, which causes problems when paths
+  # compiled into Asterisk expect ${out}/usr/lib rather than ${out}/lib.
+  configureFlags = "--libdir=\${out}/lib";
+
+  postInstall = ''
+    # Install sample configuration files for this version of Asterisk
+    make samples
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Software implementation of a telephone private branch exchange (PBX)";
+    homepage = http://www.asterisk.org/;
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ auntie ];
+  };
+}
diff --git a/pkgs/servers/asterisk/disable-download.patch b/pkgs/servers/asterisk/disable-download.patch
new file mode 100644
index 00000000000..8b15ecdfaaa
--- /dev/null
+++ b/pkgs/servers/asterisk/disable-download.patch
@@ -0,0 +1,12 @@
+diff -ruN asterisk-13.2.0/sounds/Makefile asterisk-13.2.0-patched/sounds/Makefile
+--- asterisk-13.2.0/sounds/Makefile	2014-09-09 14:01:11.000000000 -0600
++++ asterisk-13.2.0-patched/sounds/Makefile	2015-03-31 16:12:00.549133670 -0600
+@@ -89,7 +89,7 @@
+ 	  ) && touch "$(1)$(if $(3),/$(3),)/$$@"; \
+ 	fi
+ 
+-asterisk-$(2)$(if $(3),-$(3),)-%.tar.gz: have_download
++asterisk-$(2)$(if $(3),-$(3),)-%.tar.gz:
+ ifneq ($(SOUNDS_CACHE_DIR),)
+ 	$(CMD_PREFIX) \
+ 	if test ! -f "$(1)$(if $(3),/$(3),)/.$$(subst .tar.gz,,$$@)"; then \
diff --git a/pkgs/servers/asterisk/runtime-vardirs.patch b/pkgs/servers/asterisk/runtime-vardirs.patch
new file mode 100644
index 00000000000..dfc00186d13
--- /dev/null
+++ b/pkgs/servers/asterisk/runtime-vardirs.patch
@@ -0,0 +1,50 @@
+diff -rupN asterisk-13.3.2/build_tools/make_defaults_h asterisk-13.3.2-patched/build_tools/make_defaults_h
+--- asterisk-13.3.2/build_tools/make_defaults_h	2012-01-30 14:21:16.000000000 -0700
++++ asterisk-13.3.2-patched/build_tools/make_defaults_h	2015-04-15 19:07:46.760351155 -0600
+@@ -1,4 +1,13 @@
+ #!/bin/sh
++
++ASTLOGDIR=/var/log/asterisk
++ASTVARRUNDIR=/var/run/asterisk
++ASTVARLIBDIR=/var/lib/asterisk
++ASTDBDIR=${ASTVARLIBDIR}
++ASTDATADIR=${ASTVARLIBDIR}
++AGI_DIR=${ASTDATADIR}/agi-bin
++ASTSPOOLDIR=/var/spool/asterisk
++
+ cat << END
+ /*
+  * defaults.h 
+@@ -9,21 +18,21 @@ cat << END
+ 
+ #define DEFAULT_CONFIG_DIR "${INSTALL_PATH}${ASTETCDIR}"
+ #define DEFAULT_MODULE_DIR "${INSTALL_PATH}${ASTMODDIR}"
+-#define DEFAULT_AGI_DIR    "${INSTALL_PATH}${AGI_DIR}"
+-#define DEFAULT_LOG_DIR    "${INSTALL_PATH}${ASTLOGDIR}"
++#define DEFAULT_AGI_DIR    "${AGI_DIR}"
++#define DEFAULT_LOG_DIR    "${ASTLOGDIR}"
+ 
+-#define DEFAULT_RUN_DIR    "${INSTALL_PATH}${ASTVARRUNDIR}"
+-#define DEFAULT_SOCKET     "${INSTALL_PATH}${ASTVARRUNDIR}/asterisk.ctl"
+-#define DEFAULT_PID        "${INSTALL_PATH}${ASTVARRUNDIR}/asterisk.pid"
++#define DEFAULT_RUN_DIR    "${ASTVARRUNDIR}"
++#define DEFAULT_SOCKET     "${ASTVARRUNDIR}/asterisk.ctl"
++#define DEFAULT_PID        "${ASTVARRUNDIR}/asterisk.pid"
+ 
+-#define DEFAULT_VAR_DIR    "${INSTALL_PATH}${ASTVARLIBDIR}"
+-#define DEFAULT_DB         "${INSTALL_PATH}${ASTDBDIR}/astdb"
++#define DEFAULT_VAR_DIR    "${ASTVARLIBDIR}"
++#define DEFAULT_DB         "${ASTDBDIR}/astdb"
+ 
+-#define DEFAULT_DATA_DIR   "${INSTALL_PATH}${ASTDATADIR}"
+-#define DEFAULT_KEY_DIR    "${INSTALL_PATH}${ASTDATADIR}/keys"
++#define DEFAULT_DATA_DIR   "${ASTDATADIR}"
++#define DEFAULT_KEY_DIR    "${ASTDATADIR}/keys"
+ 
+-#define DEFAULT_SPOOL_DIR  "${INSTALL_PATH}${ASTSPOOLDIR}"
+-#define DEFAULT_TMP_DIR    "${INSTALL_PATH}${ASTSPOOLDIR}/tmp"
++#define DEFAULT_SPOOL_DIR  "${ASTSPOOLDIR}"
++#define DEFAULT_TMP_DIR    "${ASTSPOOLDIR}/tmp"
+ 
+ #define DEFAULT_SBIN_DIR   "${INSTALL_PATH}${ASTSBINDIR}"
+ END