# Docker Ubuntu 14.04 LTS 64-bit build image for Kannel 1.4.3 + patches
#
# Patch to support SMS index 0:
#
# http://www.kannel.org/pipermail/devel/2010-April/003484.html
# http://www.kannel.org/pipermail/devel/attachments/20100426/14f07608/attachment.obj
#
# (Patch is included in 1.5.0 development release, but not in 1.4.4 
# production release).
#
# Build packages with
#
# docker build --rm -t kannel-build .
# 
# Get hold of built packages with:
# 
# mkdir packages
# docker run --rm -i -t -v $(pwd)/packages:/mnt kannel-build 
#
# which implicity does:
#
# cp /usr/local/src/*.deb /mnt
#
# Written by Ewen McNeill <ewen@naos.co.nz>, 2015-08-05
#---------------------------------------------------------------------------

FROM ubuntu:trusty
RUN  sed -i 's/archive.ubuntu.com/nz.archive.ubuntu.com/;' /etc/apt/sources.list
#COPY viaproxy  /etc/apt/apt.conf.d/

# XXX: Should set debconf front end to non interactive one
RUN     apt-get update && apt-get -y dist-upgrade
ONBUILD apt-get update && apt-get -y dist-upgrade

# Configuration
ENV KANNEL_VERSION=1.4.3

# Install build dependencies
RUN     apt-get -y build-dep kannel
RUN     apt-get -y install quilt

# Install kannel package source (XXX: keyring warning)
RUN     cd /usr/local/src && apt-get source kannel

# Update package changelog
# debchange (http://manpages.ubuntu.com/manpages/lucid/man1/debchange.1.html)
# (or dch) in "devscripts" simplifies this a lot, but depends on about 
# 100 packages!
# 
# https://wiki.debian.org/AdvancedBuildingTips
#
# So we fake it by hand.
#
# XXX: Ideally we'd set the timezone first, but UTC will do
# TZ=Pacific/Auckland date -R
#
ENV MAINT_NAME="Ewen McNeill"
ENV MAINT_EMAIL="ewen@naos.co.nz"
RUN cd /usr/local/src/kannel-${KANNEL_VERSION}                     && \
    mv debian/changelog debian/changelog.old                       && \
    (echo "kannel (${KANNEL_VERSION}-2naos1) trusty; urgency=low";    \
     echo "";                                                         \
     echo "  * Added message-start SMS AT gateway option";            \
     echo "";                                                         \
     echo " -- ${MAINT_NAME} <${MAINT_EMAIL}>  $(date -R)";           \
     echo "";                                                         \
     cat debian/changelog.old) >debian/changelog                   && \
     rm debian/changelog.old

# Install extra patch
# 
# Package is in quilt format; see eg
#
# https://wiki.debian.org/UsingQuilt
# https://www.debian.org/doc/manuals/maint-guide/update.en.html
#
ENV  QUILT_PATCHES=debian/patches
ENV  QUILT_REFRESH_ARGS="-p ab --no-timestamps --no-index"
COPY gw_message-start.patch /tmp/
RUN  cd /usr/local/src/kannel-${KANNEL_VERSION}          && \
     (quilt push -a || true)                             && \
     quilt new gw_message-start.patch                    && \
     quilt add doc/userguide/userguide.xml gwlib/cfg.def    \
               gw/smsc/smsc_at.c gw/smsc/smsc_at.h       && \
     patch -p0 </tmp/gw_message-start.patch              && \
     quilt refresh                                       && \
     quilt pop -a

# Build kannel (lots of build warnings :-( )
RUN  cd /usr/local/src/kannel-${KANNEL_VERSION} && dpkg-buildpackage

# docker run --rm -i -t -v $(pwd)/packages:/mnt kannel-build \
#     'cp /usr/local/src/*.deb /mnt'
CMD cp /usr/local/src/*.deb /mnt
