Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Maintainer: Brent Saner <bts (at) phreewifi (dot) org>
- # Contributor: TJ Vanderpoel <tj@rubyists.com>
- ## MAINTAINER NOTE BEGIN
- # Most (like, ~80%) of this is taken verbatim from the freeswitch AUR package currently (as of 02.28.2014) maintained by bougyman.
- # https://aur.archlinux.org/packages/freeswitch/
- # However, it's horribly out of date and doesn't seem to be actively maintained anymore.
- ## MAINTAINER NOTE END
- # This builds the FreeSWITCH open source telephone engine
- # from the freeswitch git. It enables the following modules
- # not enabled in the standard freeswitch build:
- # * mod_callcenter
- # * mod_xml_curl
- # And disables the following standard modules:
- # * mod_dialplan_asterisk
- # * mod_say_ru
- # * mod_spidermonkey
- # * mod_lua
- # You can modify this and other options in the BUILD CONFIGURATION section below
- # BUILD CONFIGURATION BEGINS #
- # SET THIS TO GET HIGHER QUALITY SOUNDFILES
- # Value can be "hd-", "uhd-", or "cd-" to get 16k, 32k, or 48k sounds.
- # By default we only download the 8k sounds. If you only use g711 or
- # 8k codecs, leave this as-is
- _sounds="cd-"
- # ADDED MODULES
- # If you don't need/want these modules remove them from _enabled_modules
- # You can add any modules here you wish to add, make sure they're not
- # in _disabled_modules, though
- #
- # xml_int/mod_xml_curl - Remote http dialplan lookups/control
- # xml_int/mod_xml_cdr - Remote http dialplan lookups/control
- # applications/mod_callcenter - Inbound call queueing system
- _enabled_modules=(xml_int/mod_xml_curl
- xml_int/mod_xml_cdr
- formats/mod_shout
- applications/mod_callcenter
- languages/mod_lua)
- # DISABLED MODULES
- # Remove from _disabled_modules if you want to build these
- #
- # languages/mod_spidermonkey - server-side javascript
- # languages/mod_lua - server-side lua
- # say/mod_say_ru - Russian phrases
- # dialplans/mod_dialplan_asterisk - Legacy dialplan
- _disabled_modules=(languages/mod_spidermonkey
- say/mod_say_ru
- dialplans/mod_dialplan_asterisk)
- # CONCURRENT BOOTSTRAP
- # Uncomment this to enable backgrounded concurrent bootstrap operations.
- # You will suffer a lot of autotools scroll from this, Fair Warning.
- #_concurrent="-j"
- # BUILD CONFIGURATION ENDS #
- # #
- # CHANGE ANYTHING BELOW HERE AT YOUR OWN RISK! #
- # #
- pkgname=freeswitch-git
- pkgver=1.5.7.r2590.g46cf8a4
- pkgrel=3
- pkgdesc="An opensource and free (libre, price) telephony system, similar to Asterisk."
- arch=('i686' 'x86_64')
- url="http://freeswitch.org/"
- license=('MPL')
- depends=('curl' 'xz' 'python' 'libtheora' 'unixodbc' 'libvorbis' 'speex' 'libjpeg-turbo' 'postgresql-libs')
- # per https://wiki.freeswitch.org/wiki/FreeSwitch_Dependencies, dependencies are downloaded and built *from upstream*, so thankfully the deps are pretty minimal.
- makedepends=('git' 'libjpeg' 'libedit' 'ldns' 'curl' 'python2' 'unixodbc' 'sed' 'make')
- # per https://aur.archlinux.org/packages/freeswitch-fixed/ 2014-08-13 14:02 comment, enable this when freetdm is packaged.
- # freetdm will require libsangoma, wanpipe, libsng_isdn, libpri. see http://wiki.freeswitch.org/wiki/FreeTDM#Dependencies ; links below
- # http://wiki.sangoma.com/wanpipe-linux-drivers
- # http://downloads.asterisk.org/pub/telephony/libpri/releases
- optdepends=('libilbc-git: Support for the iLBC codec')
- provides=('freeswitch')
- conflicts=('freeswitch' 'freeswitch-fixed')
- install=freeswitch.install
- backup=('etc/freeswitch/private/passwords.xml' 'etc/freeswitch/vars.xml')
- source=('git+https://stash.freeswitch.org/scm/fs/freeswitch.git' 'freeswitch.conf.d' 'README.freeswitch' 'run.freeswitch' 'run_log.freeswitch' 'conf_log.freeswitch' 'freeswitch.service')
- changelog='ChangeLog'
- _pkgname="freeswitch"
- ## HAH. autoincrement.
- pkgver() {
- cd "${srcdir}/${_pkgname}"
- git describe --long | sed -r 's/^v//;s/([^-]*-g)/r\1/;s/-/./g'
- }
- _pathorig=${PATH}
- enable_module() {
- _fs_mod=${1}
- sed -i -e "s|^#${_fs_mod}|${_fs_mod}|" modules.conf
- }
- disable_module() {
- _fs_mod=${1}
- sed -i -e "s|^${_fs_mod}|#${_fs_mod}|" modules.conf
- }
- build() {
- mkdir -p /var/tmp/bin
- ln -sf /usr/bin/python2 /var/tmp/bin/python
- PATH="/var/tmp/bin:${PATH}"
- cd ${srcdir}/${_pkgname}
- # BUILD BEGINS
- msg "Bootstrapping..."
- ./bootstrap.sh ${_concurrent} > /dev/null
- msg "Bootstrap Complete"
- # MODULE ENABLE/DISABLE
- for _mod in ${_enabled_modules[@]};do
- msg "Enabling ${_mod}"
- enable_module ${_mod}
- done
- for _mod in ${_disabled_modules[@]};do
- msg "Disabling ${_mod}"
- disable_module ${_mod}
- done
- msg "Module Configuration Complete, Stop Now with Ctrl-C if the above is not correct"
- sleep 5
- # SED FIXES
- sed -i -e '/if\ test\ "\$ac_cv_gcc_supports_w_no_unused_result"\ =\ yes;\ then/,+2d' configure.ac
- #sed -i -e '/\ _BSD_SOURCE$/d' src/include/switch.h
- # CONFIGURE
- ./configure --prefix=/var/lib/freeswitch --with-python=/usr/bin/python2 \
- --bindir=/usr/bin --sbindir=/usr/sbin --localstatedir=/var \
- --sysconfdir=/etc --datarootdir=/usr/share \
- --libexecdir=/usr/lib/freeswitch --libdir=/usr/lib/freeswitch \
- --includedir=/usr/include/freeswitch --enable-core-odbc-support \
- --with-recordingsdir=/var/spool/freeswitch/recordings \
- --with-dbdir=/var/spool/freeswitch/db \
- --with-pkgconfigdir=/usr/lib/pkgconfig \
- --with-logfiledir=/var/log/freeswitch \
- --with-modinstdir=/usr/lib/freeswitch/mod \
- --with-rundir=/run/freeswitch
- # COMPILE
- make
- PATH=${_pathorig}
- rm -f /var/tmp/bin/python
- rmdir /var/tmp/bin
- }
- enable_mod_xml() {
- _fs_mod=$(basename $1)
- if [ "x$(grep ${_fs_mod} ${pkgdir}/etc/freeswitch/autoload_configs/modules.conf.xml)" == "x" ];then
- msg "Adding missing module ${_fs_mod} to modules.conf.xml"
- sed -i -e "s|^\(\s*</modules>\)|\t\t<\!-- added by archlinux package -->\n\t\t<load module=\"${_fs_mod}\"/>\n\1|" \
- "${pkgdir}/etc/freeswitch/autoload_configs/modules.conf.xml"
- else
- msg "Enabling module ${_fs_mod} in modules.conf.xml"
- sed -i -e "s|^\(\s*\)<\!--\s*\(<load module=\"${_fs_mod}\"/>\)\s*-->|\1\2|" \
- "${pkgdir}/etc/freeswitch/autoload_configs/modules.conf.xml"
- fi
- }
- disable_mod_xml() {
- _fs_mod=$(basename $1)
- msg "Disabling module ${_fs_mod} in modules.conf.xml"
- sed -i -e "s|^\(\s*\)\(<load module=\"${_fs_mod}\"/>\)|\1<\!-- \2 -->|" \
- "${pkgdir}/etc/freeswitch/autoload_configs/modules.conf.xml"
- }
- package() {
- mkdir -p /var/tmp/bin
- ln -s /usr/bin/python2 /var/tmp/bin/python
- PATH="/var/tmp/bin:${PATH}"
- cd "${srcdir}/${_pkgname}"
- make DESTDIR="${pkgdir}/" install
- make DESTDIR="${pkgdir}/" ${_sounds}moh-install
- make DESTDIR="${pkgdir}/" ${_sounds}sounds-install
- PATH=${_pathorig}
- rm -rf /var/tmp/bin/python
- rmdir /var/tmp/bin
- cd ${pkgdir} # MUY IMPORTANT, $PWD is $pkgdir from here on out
- # Mangle freeswitch's installed dirs into a more compliant structure,
- # leaving symlinks in their place so freeswitch doesn't notice.
- ln -s /var/log/freeswitch var/lib/freeswitch/log
- ln -s /var/spool/freeswitch/db var/lib/freeswitch/db
- ln -s /var/spool/freeswitch/recordings var/lib/freeswitch/recordings
- install -D -m 0755 -d var/spool/freeswitch/storage && \
- ln -s /var/spool/freeswitch/storage var/lib/freeswitch/storage
- rm usr/lib/freeswitch/mod/*.la 2>/dev/null|| true
- rm usr/lib/freeswitch/*.la 2>/dev/null || true
- ln -s /usr/lib/freeswitch/mod var/lib/freeswitch/mod
- install -D -m 0644 ${srcdir}/freeswitch.service usr/lib/systemd/system/freeswitch.service
- install -D -m 0644 "${srcdir}/freeswitch.conf.d" etc/conf.d/freeswitch
- install -D -m 0644 "${srcdir}/README.freeswitch" usr/share/doc/freeswitch/README
- cp -a "${srcdir}/${_pkgname}/docs" usr/share/doc/freeswitch
- install -D -m 0755 -d usr/share/doc/freeswitch/support-d
- cp -a "${srcdir}/${_pkgname}/support-d" usr/share/doc/freeswitch/
- install -D -m 0755 -d usr/share/doc/freeswitch/scripts
- cp -a "${srcdir}/${_pkgname}/scripts" usr/share/doc/freeswitch/
- # Copy upstream confs
- install -D -m 0755 -d usr/share/doc/freeswitch/examples/conf.default
- install -D -m 0755 -d usr/share/doc/freeswitch/examples/conf.archlinux
- mkdir etc/freeswitch/private
- echo '<X-PRE-PROCESS cmd="include" data="private/passwords.xml"/>' >> etc/freeswitch/vars.xml
- echo "<X-PRE-PROCESS cmd=\"set\" data=\"default_password=$(tr -dc 0-9 < /dev/urandom | head -c10)\"/>" > etc/freeswitch/private/passwords.xml
- chmod 700 etc/freeswitch/private
- chmod 600 etc/freeswitch/private/passwords.xml
- ln -s /etc/freeswitch var/lib/freeswitch/conf
- cp -a etc/freeswitch/* usr/share/doc/freeswitch/examples/conf.default/
- for _mod in ${_enabled_modules[@]};do
- enable_mod_xml $_mod
- done
- for _mod in ${_disabled_modules[@]};do
- disable_mod_xml $_mod
- done
- mv etc/freeswitch/* usr/share/doc/freeswitch/examples/conf.archlinux/
- rmdir etc/freeswitch
- install -D -m0755 -d usr/share/freeswitch/conf
- install -D -m 0755 "${srcdir}/run.freeswitch" usr/share/freeswitch/run
- install -D -m 0755 "${srcdir}/run_log.freeswitch" usr/share/freeswitch/log/run
- install -D -m 0644 "${srcdir}/conf_log.freeswitch" usr/share/freeswitch/log/conf
- }
- md5sums=('SKIP'
- 'f674b302edeb1895bbefcaf7bb8510ca'
- 'bfa0c6c70c8173bc78fd228bd42a98ef'
- '4126dcbe4e1e4f689230a0fe40edcb68'
- 'e9f0bdde366bca6fd29a9202818f3591'
- 'e6411d793501c29ec4afd6d54018de1b'
- '31cd89e02ec3cc52769489a30ccf6c9b')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement