This change makes it so that event_handlers/mod_amqp is avoided when building
debian packages for Ubuntu 14.04 (Trusty). If this module is packaged there is
a dependency issue related to the rabbitmq libraries.
Avoiding the module was the simplest solution to achieve debian packaging on the
Ubuntu 14.04 OS.
debian/bootstrap.sh:
* only build one of freeswitch-sysvinit or freeswitch-systemd
* squeeze is removed from supported releases
* added stretch to supported releases
* avoid_mods_wheezy extended to modules which fail to build on wheezy
* use systemd by default for future distros
* new command-line option -v to enforce sysvinit
* added dependency on dh-systemd for systemd-powered distros
* freeswitch-init is now a virtual package
* freeswitch-sysvinit and freeswitch-systemd are set to conflict with each other
debian/freeswitch.postinst:
* no need to call systemctl explicitly. dh-systemd does it in a standard way
debian/rules:
* integrated dh-systemd in override_dh_installinit
debian/freeswitch-systemd.freeswitch.default renamed to
freeswitch-sysvinit.freeswitch.default:
* /etc/default/freeswitch is not installed by freeswitch-systemd, but still
respected if there is a need to modify the startup options
debian/freeswitch-systemd.freeswitch.service:
* proper expansion of DAEMON_OPTS
freeswitch-systemd.freeswitch.service:
* starting the daemon as root and switchig to freeswitch user
* respecting the options in /etc/default/freeswitch
* RuntimeDirectory parameter is replaced with a tmpfiles.d entry
because /run/freeswitch has to be owned by freeswitch user
* instructions how to start it as non-root
debian/freeswitch-systemd.freeswitch.tmpfile:
* this defines the PID directory with correct permissions
debian/bootstrap.sh, debian/rules:
* proper handling of freeswitch.service
* deleted debian/freeswitch-systemd.install because it caused an error
in dh_install because it's run before dh_installinit
* renamed: freeswitch-sysvinit.freeswitch.default -> freeswitch-systemd.freeswitch.default
because sysvinit support will eventually die out
debian/freeswitch.postinst:
* run "systemctl enable freeswitch" if systemctl is available
CAVEAT: only one option is supported in /etc/default/freeswitch because the
variable ${DAEMON_OPTS} is expanded as a single token. This will be fixed
as soon as freeswitch-sysvinit is removed from freeswitch-all.
In the systemd unit for FS/debian, if the WorkingDirectory is not set
then it defaults to '/'. This is fine for FS, and is a common and
expected chdir choice for daemons.
We had previously set this to /run/freeswitch. Due to Debian having
systemd-coredump(8) disabled, this was causing core files to be
written to /run/freeswitch, which is a bad place for them as it's
mounted on tmpfs. So in commit cd68e0f we changed this to the log
directory /var/log/freeswitch. That choice is a bit usual as well on
Debian.
It's better to leave FS as running on '/'. This will prevent core
files from being written unless the user adjusts `sysctl
kernel.core_pattern`, which is a reasonable thing to expect if the
user wants these files. Core files can be huge, and even having them
go to /var/log unexpectedly can be a problem.
When Debian adds the systemd-coredumps support this will all work
nicely and automatically.
ref: http://www.freedesktop.org/software/systemd/man/coredump.conf.html
ref: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=744964
References-commit: cd68e0fe1b
FS-7909
Doing a chown of something in /etc/ as part of a systemd service file
is totally broken. It's far too large a sledgehammer to point at /etc
here. Someone may legitimately not be using /etc/freeswitch/tls in
his configuration, in which case this chown would fail and cause FS to
fail to start. Or someone may legitimately need /etc/freeswitch/tls
to have different ownership, in which case we would clobber it here.
The right thing to do is to create this directory in the
postinst (which we already are, assuming there is not an existing
configuration) and then perform the chown of it at the same time.
FS-7697
This changes how we create the temporary directory /run/freeswitch
when starting FS with systemd. The /run directory starts empty after
a system reboot, so we need to ensure this directory is present.
Originally for the FS systemd unit we created /run/freeswitch using
ExecStartPre and mkdir. With commit adb5f0d this was changed to use
the tmpfiles.d(5) mechanism (but the ExecStartPre/mkdir code was not
removed).
As part of systemd.exec(5), systemd provides a mechanism to
automatically manage these directories under /run and to bind their
lifetime to the lifetime of the process. This is actually what we
want here as compared to the more general tmpfiles.d(5) mechanism.
This commit moves to using the RuntimeDirectory= mechanism and removes
the obsolete ExecStartPre/mkdir code.
References-commit: adb5f0d278
Commit e5d247d (packaging python-esl) added trailing whitespace to the
package definition. Our trivial parser in the bootstrap script is
sensitive to this, so the change rather broke debian/bootstrap.sh.
This fixes commit e5d247df29.
In Jessie, pbuilder disables the network by default, and we need it
to build our packages. Also currently only Jessie debs are built successfully,
and building for wheezy fails because of missing video libraries.
Fixed the handling of -T and -t, and added debian/apt_sources.list
that needs to build 1.7 master. The following commands need to be
used to build Jessie packages:
apt-get update && apt-get install -y git curl
mkdir -p /usr/src/freeswitch
cd /usr/src/freeswitch/
git clone https://stash.freeswitch.org/scm/fs/freeswitch.git /usr/src/freeswitch/src
curl http://files.freeswitch.org/repo/deb/debian/freeswitch_archive_g0.pub | apt-key add -
cd /usr/src/freeswitch/src
./debian/util.sh build-all -i -z1 -aamd64 -cjessie -T /usr/src/freeswitch/src/debian/apt_sources.list
When the debian/control-modules file is properly ordered and
formatted, running (cd debian && ./bootstrap.sh) will result in no
changes to the debian/control-modules file and the
debian/control-modules.gen file being automatically deleted. If there
is a debian/control-modules.gen file there, it should be used as a
start for a new debian/control-modules file after cleaning up the the
descriptions and adding long descriptions for each item.
FS-7338: remove libsilk from tree, use system lib instead
FS-7338: change to always use system liblua
FS-7338: remove libbroadvoice from tree, use system lib instead
FS-7338: remove libilbc from tree, use system lib instead
FS-7338: remove libs using system libs from bootstrap
FS-7338: remove libg722_1 from tree, use system lib instead
FS-7338: remove mod_celt, it has be superseded by mod_opus
FS-7338: remove libcodec2 from tree, use system lib instead
FS-7338: remove libopus from tree, use system lib instead
FS-7338: remove libsoundtouch build from tree, use system lib instead
FS-7338: remove flite build from tree, use system lib instead
FS-7338: remove openldap build from tree, use system lib instead
FS-7338: remove libmongoc build from tree, use system lib instead
FS-7338: remove mod_mongo deps that are no longer actually required
FS-7338: remove some dup demo modules and don't include demo code in packages
add the ability to pass -T[path to custom sources path] and -K[custom keyfile path]
options to build the FS packages with a custom sources and keyring path.
FS-7373
With this commit we allow getting `make -jN` behavior by setting
`parallel=N` in `DEB_BUILD_OPTIONS`. Setting `parallel=` will result
in `make -j` being run (i.e. no limit on the number of jobs). The
default is to run one job at a time; this is still the safest bet when
building all modules.
Thanks to Peter Wu for suggesting a different way to do this.
ref: https://www.debian.org/doc/debian-policy/ch-source.html#s-debianrules-options
When '-g' is passed, freeswitch drops all other groups except for the
given group. This impacts people who depend on FS having access to
resources that would be allowed by membership to those other groups.
It was possible to override this by setting DAEMON_ARGS in
/etc/default/freeswitch, but we'll go ahead and make this the default.
Since freeswitch uses the primary group of a user when `-g` is
omitted, we'll just omit it, and do similarly when setting the
ownership of our directory in /var/run.
Edited-by: Travis Cross <tc@traviscross.com>
The libtool binary used to be contained in the libtool package. As of
current sid/jessie the libtool package contains everything about
libtool but the libtool binary, and we need to install libtool-bin to
get the libtool binary itself. Which is to say that Debian decided to
make the libtool package architecture-independent.
Without this commit the FS debian packaging will not build/bootstrap
on sid/jessie.
This is a convenience option that can be passed to either
debian/bootstrap.sh or to debian/util.sh to include a module in the
build that would normally be excluded. This option, -p, can be passed
multiple times.
If -t is passed to debian/util.sh, then we will import the
/etc/apt/sources.list mirrors and all apt keys into the
pbuilder/cowbuilder build environment.
This is useful e.g. when the FS build depends on a library not
available in Debian yet.
Normally we override the config of each pbuilder/cowbuilder image when
we update the image before using it for the build. Passing this
option allows for using an existing cowbuilder image (assuming it's in
the correct location) with some existing desirable configuration.
The debian/control-modules file is a comprehensive list of modules,
not a list of modules which are built. Our build tools verify the
file is comprehensive, so modules can't be removed from here unless
we're taking them out of tree.
Partially revert "don't package mod_cluechoo and don't build/load by default"
This partially reverts commit e02e41a5c1.
It's reasonable for someone to change one or more of these directory
permissions after installation. We shouldn't touch more than we need
on upgrade. Each directory needs to be owned by the freeswitch user,
but past that we can leave discretion to the system administrator.
mod_prefix is an in-memory data store optimized for fast lookups
according to the longest prefix match (LPM) rule.
Tables of key-value string pairs in JSON format can be loaded at
startup via configuration and at runtime via the API.
The implementation uses a bitwise trie (aka binary prefix tree), so
arbitrary string keys are supported.
This removes our in-tree version of portaudio-19 and migrates
mod_portaudio and mod_portaudio_stream to use the system version of
the library. Our detection of the system library relies on
pkg-config.
Sometimes while the debian repositories are updating there are
sporadic signature failures. It's annoying to have these break the
build, and the only thing to do is to retry, so we'll retry here
automatically. We were already retrying on the update operation that
can fail in a similar manner.
Right now mod_java fails to build on sid and jessie. We have a
possible solution, but we'll just disable the build of the module
while we test and verify.
This library is used only by mod_enum and is available on most
platforms. The version in our tree has many code quality problems
that are generating noise when doing static analysis. Suffice it to
say we want rid of it as our responsibility.
FS-353
Pre-jessie versions of Debian's mk-build-deps tool rely on libraries
that do not correctly parse debian/control, so we have to clip it down
to a smaller subset of the format to build on e.g. wheezy.
./debian/util.sh build-all will do a number of builds in sequence or
parallel. We now track if any of those builds fail to return a
.changes file and exit non-zero.
mod_cluechoo needs to be linked against ncurses or we receive an error
about undefined symbols when loading the module. How did this ever
work?
Thanks-to: Dušan Dragić <dragic.dusan@gmail.com>
FS-5965
This lets us set the suite name in the changelog file to
e.g. sid-experimental. This way we can share a single debian repo URL
for all versions, but make sure that incoming files are directed to
the correct distro.
mod_vlc needs the plugins from vlc-nox to do anything useful.
Currently mod_vlc segfaults without the plugins. Even after that is
fixed, however, without any plugins mod_vlc can't do its job, so we'll
set a hard dependency here. I could probably be talked into making
this a Recommends rather than Depends.
FS-6124
Previously we were creating freeswitch-music, freeswitch-sounds,
freeswitch-sounds-en, and freeswitch-sounds-en-us metapackages and
also providing those names as virtual packages from the
freeswitch-{sounds,music} source packages. This is unnecessarily
confusing and meant that freeswitch-all wasn't depending on any sounds
in actuality as it was also providing freeswitch-sounds.
The freeswitch-all package provides libfreeswitch1, so any
shlibs-generated dependency should be for libfreeswitch1 rather than
freeswitch-all.
Because dh_shlibdeps / dpkg-shlibdeps searches for shlibs files in
debian/*/DEBIAN/ it was sometimes using freeswitch-all rather than
libfreeswitch1 to satisfy dependencies for freeswitch.so.1.
FS-6029 --resolve
That is to say, declare all appropriate Provides/Conflicts/Replaces
for freeswitch-all and freeswitch-all-dbg by enumerating the binary
packages that we're going to produce during the build.
Conflicts is more appropriate than Breaks here as both packages will
continue to provide the same files on an ongoing basis and we would
like to force the removal of the other package.