123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- #!/bin/bash
- DEST=$1
- PKGVERSION="$VERSION"
- if [ -n "$(git status --porcelain)" ]; then
- 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"
- PACKAGE_DESCRIPTION="Linux container runtime
- 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."
- PACKAGE_LICENSE="Apache-2.0"
- # Build docker as an ubuntu package using FPM and REPREPRO (sue me).
- # bundle_binary must be called first.
- bundle_ubuntu() {
- DIR=$DEST/build
- # 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
- 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
- # 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
- # Generate postinst/prerm/postrm scripts
- cat > /tmp/postinst <<'EOF'
- #!/bin/sh
- 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#
- EOF
- cat > /tmp/prerm <<'EOF'
- #!/bin/sh
- set -e
- set -u
- service docker stop 2>/dev/null || true
- #DEBHELPER#
- EOF
- 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
- chmod +x /tmp/postinst /tmp/prerm
- (
- cd $DEST
- fpm -s dir -C $DIR \
- --name lxc-docker-$VERSION --version $PKGVERSION \
- --after-install /tmp/postinst \
- --before-remove /tmp/prerm \
- --after-remove /tmp/postrm \
- --architecture "$PACKAGE_ARCHITECTURE" \
- --prefix / \
- --depends lxc \
- --depends aufs-tools \
- --depends iptables \
- --deb-recommends ca-certificates \
- --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" \
- --license "$PACKAGE_LICENSE" \
- --config-files /etc/init/docker.conf \
- --config-files /etc/init.d/docker \
- --config-files /etc/default/docker \
- --deb-compression gz \
- -t deb .
- fpm -s empty \
- --name lxc-docker --version $PKGVERSION \
- --architecture "$PACKAGE_ARCHITECTURE" \
- --depends lxc-docker-$VERSION \
- --description "$PACKAGE_DESCRIPTION" \
- --maintainer "$PACKAGE_MAINTAINER" \
- --url "$PACKAGE_URL" \
- --license "$PACKAGE_LICENSE" \
- --deb-compression gz \
- -t deb
- )
- }
- bundle_ubuntu
|