Created
May 19, 2018 16:58
-
-
Save jason-shen/0195fb8e5f543cacf3adabb8561d56ca to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
set -eu | |
JANUS_REV=master | |
CONTAINER=false # if true, delete more for smaller image | |
JANUS_REPO=meetecho/janus-gateway | |
PREFIX=/opt/janus-gateway | |
SRCDIR=$HOME/src | |
SU_CMD=sudo | |
if $CONTAINER; then | |
SU_CMD="" | |
fi | |
OPENSSL_REV="1.0.2h" | |
LIBSRTP_REV="1.5.4" | |
LIBNICE_REV="0.1.13" | |
SOFIASIP_REV="1.12.11" | |
LIBWEBSOCKETS_REV="1.5-chrome47-firefox41" | |
# left enabled: rest, websockets, echotest, videoroom, streaming | |
JANUS_FEATURE_OPTS="\ | |
--disable-rabbitmq --disable-data-channels \ | |
--disable-plugin-voicemail --disable-plugin-sip \ | |
--disable-plugin-videocall --disable-plugin-audiobridge \ | |
--disable-plugin-recordplay --disable-turn-rest-api | |
" | |
APT="$SU_CMD apt-get --quiet --assume-yes" | |
export DEBIAN_FRONTEND=noninteractive | |
if $CONTAINER; then | |
$APT update | |
fi | |
$APT install --no-install-recommends \ | |
build-essential \ | |
python \ | |
autoconf \ | |
automake \ | |
libtool \ | |
pkg-config \ | |
gengetopt \ | |
cmake \ | |
ca-certificates \ | |
wget \ | |
git \ | |
zlib1g-dev \ | |
libmicrohttpd-dev \ | |
libmicrohttpd-dbg \ | |
libjansson-dev \ | |
libglib2.0-dev \ | |
libglib2.0-0-dbg \ | |
mkdir -p $SRCDIR | |
cd $SRCDIR | |
$SU_CMD mkdir -p $PREFIX | |
export PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig" | |
export CFLAGS="-I$PREFIX/include" | |
export LDFLAGS="-L$PREFIX/lib" | |
OPENSSL_TARBALL="openssl-${OPENSSL_REV}.tar.gz" | |
wget --no-verbose https://www.openssl.org/source/$OPENSSL_TARBALL | |
tar -xf $OPENSSL_TARBALL | |
cd openssl-$OPENSSL_REV | |
# -DPURIFY to disable use of un-initialized memory (it's safe :) | |
./config --prefix=$PREFIX --openssldir=$PREFIX/openssl -DPURIFY shared | |
make | |
$SU_CMD make install_sw | |
cd $SRCDIR | |
rm -r $OPENSSL_TARBALL openssl-$OPENSSL_REV | |
LIBSRTP_TARBALL="libsrtp-${LIBSRTP_REV}.tar.gz" | |
wget --no-verbose -O $LIBSRTP_TARBALL \ | |
https://github.com/cisco/libsrtp/archive/v${LIBSRTP_REV}.tar.gz | |
tar -xf $LIBSRTP_TARBALL | |
cd libsrtp-$LIBSRTP_REV | |
./configure --prefix=$PREFIX --enable-openssl | |
make shared_library | |
$SU_CMD make install | |
cd $SRCDIR | |
rm -r $LIBSRTP_TARBALL libsrtp-$LIBSRTP_REV | |
LIBNICE_TARBALL="libnice-${LIBNICE_REV}.tar.gz" | |
wget --no-verbose http://nice.freedesktop.org/releases/${LIBNICE_TARBALL} | |
tar -xf $LIBNICE_TARBALL | |
cd libnice-$LIBNICE_REV | |
./configure --prefix=$PREFIX --disable-gupnp | |
make | |
# "make install" works fine but installs extra stuff | |
$SU_CMD make -C nice install-exec | |
$SU_CMD make -C nice install-data | |
$SU_CMD make -C stun install-data | |
$SU_CMD make -C agent install-data | |
cd $SRCDIR | |
if $CONTAINER; then | |
rm -r $LIBNICE_TARBALL libnice-$LIBNICE_REV | |
fi | |
SOFIASIP_TARBALL="sofia-sip-${SOFIASIP_REV}.tar.gz" | |
wget --no-verbose -O $SOFIASIP_TARBALL \ | |
http://sourceforge.net/projects/sofia-sip/files/sofia-sip/${SOFIASIP_REV}/${SOFIASIP_TARBALL}/download | |
tar -xf $SOFIASIP_TARBALL | |
cd sofia-sip-$SOFIASIP_REV | |
# http://sourceforge.net/p/sofia-sip/bugs/121/ https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=729301 | |
./configure --prefix=$PREFIX CFLAGS="$CFLAGS -fno-aggressive-loop-optimizations" | |
make | |
# "make install" works fine but installs extra stuff | |
$SU_CMD make -C libsofia-sip-ua install-exec | |
$SU_CMD make -C libsofia-sip-ua-glib install-exec | |
$SU_CMD make -C packages install-data | |
$SU_CMD make -C libsofia-sip-ua install-data | |
$SU_CMD make -C libsofia-sip-ua-glib install-data | |
cd $SRCDIR | |
if $CONTAINER; then | |
rm -rf $SOFIASIP_TARBALL sofia-sip-$SOFIASIP_REV | |
fi | |
LIBWEBSOCKETS_TARBALL="libwebsockets-${LIBWEBSOCKETS_REV}.tar.gz" | |
wget --no-verbose -O $LIBWEBSOCKETS_TARBALL \ | |
https://github.com/warmcat/libwebsockets/archive/v${LIBWEBSOCKETS_REV}.tar.gz | |
tar -xf $LIBWEBSOCKETS_TARBALL | |
cd libwebsockets-$LIBWEBSOCKETS_REV | |
cmake -DCMAKE_INSTALL_PREFIX:PATH=$PREFIX -DLWS_WITHOUT_TESTAPPS:BOOL=ON | |
make | |
$SU_CMD make install | |
cd $SRCDIR | |
if $CONTAINER; then | |
rm -rf $LIBWEBSOCKETS_TARBALL libwebsockets-$LIBWEBSOCKETS_REV | |
fi | |
git clone https://github.com/${JANUS_REPO}.git | |
cd janus-gateway | |
git checkout $JANUS_REV | |
./autogen.sh | |
./configure --prefix=$PREFIX --disable-docs $JANUS_FEATURE_OPTS \ | |
LDFLAGS="-L$PREFIX/lib -Wl,-rpath=$PREFIX/lib" \ | |
CFLAGS="-I$PREFIX/include -O2 -g" | |
make | |
$SU_CMD make install | |
$SU_CMD mkdir -p $PREFIX/www/janus | |
$SU_CMD cp -R html/* $PREFIX/www/janus/ | |
if $CONTAINER; then | |
rm -rf janus-gateway | |
$SU_CMD rm -r $PREFIX/share/doc | |
$APT purge \ | |
build-essential \ | |
autoconf \ | |
libtool \ | |
pkg-config \ | |
gengetopt \ | |
git \ | |
wget \ | |
cpp \ | |
g++ \ | |
gcc \ | |
binutils \ | |
fakeroot \ | |
cmake \ | |
$APT autoremove | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment