2013-12-02 17:48:26 -05:00
#!/bin/bash
2013-09-09 21:45:40 -04:00
DEST=$1
PKGVERSION="$VERSION"
2013-10-18 01:36:28 -04:00
if [ -n "$(git status --porcelain)" ]; then
2013-09-09 21:45:40 -04:00
PKGVERSION="$PKGVERSION-$(date +%Y%m%d%H%M%S)-$GITCOMMIT"
fi
PACKAGE_ARCHITECTURE="$(dpkg-architecture -qDEB_HOST_ARCH)"
PACKAGE_URL="http://www.docker.io/"
PACKAGE_MAINTAINER="docker@dotcloud.com"
2013-11-08 17:41:45 -05:00
PACKAGE_DESCRIPTION="Linux container runtime
2013-09-09 21:45:40 -04:00
Docker complements LXC with a high-level API which operates at the process
level. It runs unix processes with strong guarantees of isolation and
repeatability across servers.
Docker is a great building block for automating distributed systems:
large-scale web deployments, database clusters, continuous deployment systems,
private PaaS, service-oriented architectures, etc."
2013-12-28 08:35:00 -05:00
PACKAGE_LICENSE="Apache-2.0"
2013-09-09 21:45:40 -04:00
# Build docker as an ubuntu package using FPM and REPREPRO (sue me).
# bundle_binary must be called first.
bundle_ubuntu() {
DIR=$DEST/build
2014-01-19 16:07:18 -05:00
# Include our udev rules
mkdir -p $DIR/etc/udev/rules.d
cp contrib/udev/80-docker.rules $DIR/etc/udev/rules.d/
2013-10-15 11:38:02 -04:00
# Include our init scripts
mkdir -p $DIR/etc
cp -R contrib/init/upstart $DIR/etc/init
cp -R contrib/init/sysvinit $DIR/etc/init.d
mkdir -p $DIR/lib/systemd
cp -R contrib/init/systemd $DIR/lib/systemd/system
2013-09-09 21:45:40 -04:00
2014-01-02 00:34:22 -05:00
mkdir -p $DIR/etc/default
cat > $DIR/etc/default/docker <<'EOF'
# Docker Upstart and SysVinit configuration file
# Customize location of Docker binary (especially for development testing).
#DOCKER="/usr/local/bin/docker"
# Use DOCKER_OPTS to modify the daemon startup options.
#DOCKER_OPTS="-dns 8.8.8.8"
# If you need Docker to use an HTTP proxy, it can also be specified here.
#export http_proxy=http://127.0.0.1:3128/
EOF
2013-09-09 21:45:40 -04:00
# Copy the binary
# This will fail if the binary bundle hasn't been built
mkdir -p $DIR/usr/bin
# Copy the binary
# This will fail if the binary bundle hasn't been built
cp $DEST/../binary/docker-$VERSION $DIR/usr/bin/docker
2013-11-08 17:41:45 -05:00
# Generate postinst/prerm/postrm scripts
cat > /tmp/postinst <<'EOF'
2013-09-09 21:45:40 -04:00
#!/bin/sh
2013-11-08 17:41:45 -05:00
set -e
set -u
getent group docker > /dev/null || groupadd --system docker || true
update-rc.d docker defaults > /dev/null || true
if [ -n "$2" ]; then
_dh_action=restart
else
_dh_action=start
fi
service docker $_dh_action 2>/dev/null || true
#DEBHELPER#
2013-09-09 21:45:40 -04:00
EOF
2013-11-08 17:41:45 -05:00
cat > /tmp/prerm <<'EOF'
2013-09-09 21:45:40 -04:00
#!/bin/sh
2013-11-08 17:41:45 -05:00
set -e
set -u
service docker stop 2>/dev/null || true
#DEBHELPER#
2013-09-09 21:45:40 -04:00
EOF
2013-11-08 17:41:45 -05:00
cat > /tmp/postrm <<'EOF'
#!/bin/sh
set -e
set -u
if [ "$1" = "purge" ] ; then
update-rc.d docker remove > /dev/null || true
fi
# In case this system is running systemd, we make systemd reload the unit files
# to pick up changes.
if [ -d /run/systemd/system ] ; then
systemctl --system daemon-reload > /dev/null || true
fi
#DEBHELPER#
EOF
# TODO swaths of these were borrowed from debhelper's auto-inserted stuff, because we're still using fpm - we need to use debhelper instead, and somehow reconcile Ubuntu that way
2013-10-15 11:38:02 -04:00
chmod +x /tmp/postinst /tmp/prerm
2013-09-09 21:45:40 -04:00
(
cd $DEST
fpm -s dir -C $DIR \
--name lxc-docker-$VERSION --version $PKGVERSION \
2013-10-15 11:38:02 -04:00
--after-install /tmp/postinst \
2013-09-09 21:45:40 -04:00
--before-remove /tmp/prerm \
2013-11-08 17:41:45 -05:00
--after-remove /tmp/postrm \
2013-09-09 21:45:40 -04:00
--architecture "$PACKAGE_ARCHITECTURE" \
--prefix / \
2013-10-15 11:38:02 -04:00
--depends lxc \
--depends aufs-tools \
--depends iptables \
2014-01-10 15:03:59 -05:00
--deb-recommends ca-certificates \
2014-01-13 18:25:23 -05:00
--deb-recommends xz-utils \
2013-09-09 21:45:40 -04:00
--description "$PACKAGE_DESCRIPTION" \
--maintainer "$PACKAGE_MAINTAINER" \
--conflicts lxc-docker-virtual-package \
--provides lxc-docker \
--provides lxc-docker-virtual-package \
--replaces lxc-docker \
--replaces lxc-docker-virtual-package \
--url "$PACKAGE_URL" \
2013-12-28 08:35:00 -05:00
--license "$PACKAGE_LICENSE" \
2014-01-19 16:07:18 -05:00
--config-files /etc/udev/rules.d/80-docker.rules \
2013-09-26 16:56:59 -04:00
--config-files /etc/init/docker.conf \
2013-10-15 11:38:02 -04:00
--config-files /etc/init.d/docker \
2013-11-08 17:41:45 -05:00
--config-files /etc/default/docker \
2014-01-09 22:12:56 -05:00
--deb-compression gz \
2013-09-09 21:45:40 -04:00
-t deb .
2014-01-10 15:08:28 -05:00
fpm -s empty \
2013-09-09 21:45:40 -04:00
--name lxc-docker --version $PKGVERSION \
--architecture "$PACKAGE_ARCHITECTURE" \
--depends lxc-docker-$VERSION \
--description "$PACKAGE_DESCRIPTION" \
--maintainer "$PACKAGE_MAINTAINER" \
--url "$PACKAGE_URL" \
2013-12-28 08:35:00 -05:00
--license "$PACKAGE_LICENSE" \
2014-01-09 22:12:56 -05:00
--deb-compression gz \
2014-01-10 15:08:28 -05:00
-t deb
2013-09-09 21:45:40 -04:00
)
}
bundle_ubuntu