|
@@ -1,193 +0,0 @@
|
|
|
-#!/bin/bash
|
|
|
-
|
|
|
-DEST=$1
|
|
|
-PACKAGE_NAME=${PACKAGE_NAME:-docker-engine}
|
|
|
-
|
|
|
-# XXX - The package version in CentOS gets messed up and inserts a '~'
|
|
|
-# (including the single quote) if we use the same package
|
|
|
-# version scheme as the deb packages. This doesn't work with
|
|
|
-# rpmbuild.
|
|
|
-PKGVERSION="${VERSION}"
|
|
|
-# if we have a "-dev" suffix or have change in Git, let's make this package version more complex so it works better
|
|
|
-if [[ "$VERSION" == *-dev ]] || [ -n "$(git status --porcelain)" ]; then
|
|
|
- GIT_UNIX="$(git log -1 --pretty='%at')"
|
|
|
- GIT_DATE="$(date --date "@$GIT_UNIX" +'%Y%m%d.%H%M%S')"
|
|
|
- GIT_COMMIT="$(git log -1 --pretty='%h')"
|
|
|
- GIT_VERSION="git${GIT_DATE}.0.${GIT_COMMIT}"
|
|
|
- # GIT_VERSION is now something like 'git20150128.112847.0.17e840a'
|
|
|
- PKGVERSION="$PKGVERSION~$GIT_VERSION"
|
|
|
-fi
|
|
|
-
|
|
|
-# $ dpkg --compare-versions 1.5.0 gt 1.5.0~rc1 && echo true || echo false
|
|
|
-# true
|
|
|
-# $ dpkg --compare-versions 1.5.0~rc1 gt 1.5.0~git20150128.112847.17e840a && echo true || echo false
|
|
|
-# true
|
|
|
-# $ dpkg --compare-versions 1.5.0~git20150128.112847.17e840a gt 1.5.0~dev~git20150128.112847.17e840a && echo true || echo false
|
|
|
-# true
|
|
|
-
|
|
|
-# ie, 1.5.0 > 1.5.0~rc1 > 1.5.0~git20150128.112847.17e840a > 1.5.0~dev~git20150128.112847.17e840a
|
|
|
-
|
|
|
-PACKAGE_ARCHITECTURE=`uname -i`
|
|
|
-
|
|
|
-PACKAGE_URL="http://www.docker.com/"
|
|
|
-PACKAGE_MAINTAINER="support@docker.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"
|
|
|
-
|
|
|
-# bundle the RPM using FPM -- we may want to change this to rpmbuild at some point
|
|
|
-bundle_rpm() {
|
|
|
- DIR=$DEST/build
|
|
|
-
|
|
|
- # Include our udev rules
|
|
|
- mkdir -p $DIR/etc/udev/rules.d
|
|
|
- cp contrib/udev/80-docker.rules $DIR/etc/udev/rules.d/
|
|
|
-
|
|
|
- mkdir -p $DIR/usr/lib/systemd/system
|
|
|
- cp contrib/init/systemd/docker.{service,socket} $DIR/usr/lib/systemd/system
|
|
|
-
|
|
|
- cat > $DIR/usr/lib/systemd/system/docker.service <<'EOF'
|
|
|
-[Unit]
|
|
|
-Description=Docker Application Container Engine
|
|
|
-Documentation=http://docs.docker.com
|
|
|
-After=network.target docker.socket
|
|
|
-Requires=docker.socket
|
|
|
-
|
|
|
-[Service]
|
|
|
-Type=notify
|
|
|
-EnvironmentFile=-/etc/sysconfig/docker
|
|
|
-EnvironmentFile=-/etc/sysconfig/docker-storage
|
|
|
-ExecStart=/usr/bin/docker -d $OPTIONS $DOCKER_STORAGE_OPTIONS
|
|
|
-LimitNOFILE=1048576
|
|
|
-LimitNPROC=1048576
|
|
|
-MountFlags=private
|
|
|
-
|
|
|
-[Install]
|
|
|
-WantedBy=multi-user.target
|
|
|
-EOF
|
|
|
-
|
|
|
- mkdir -p $DIR/etc/sysconfig
|
|
|
- cat > $DIR/etc/sysconfig/docker <<'EOF'
|
|
|
-# /etc/sysconfig/docker
|
|
|
-
|
|
|
-# Modify these options if you want to change the way the docker daemon runs
|
|
|
-OPTIONS=--selinux-enabled -H fd://
|
|
|
-
|
|
|
-# Location used for temporary files, such as those created by
|
|
|
-# docker load and build operations. Default is /var/lib/docker/tmp
|
|
|
-# Can be overriden by setting the following environment variable.
|
|
|
-# DOCKER_TMPDIR=/var/tmp
|
|
|
-EOF
|
|
|
-
|
|
|
-cat > $DIR/etc/sysconfig/docker-storage <<'EOF'
|
|
|
-# By default, Docker uses a loopback-mounted sparse file in
|
|
|
-# /var/lib/docker. The loopback makes it slower, and there are some
|
|
|
-# restrictive defaults, such as 100GB max storage.
|
|
|
-
|
|
|
-# If your installation did not set a custom storage for Docker, you
|
|
|
-# may do it below.
|
|
|
-
|
|
|
-# Example: Use a custom pair of raw logical volumes (one for metadata,
|
|
|
-# one for data).
|
|
|
-# DOCKER_STORAGE_OPTIONS = --storage-opt dm.metadatadev=/dev/mylogvol/my-docker-metadata --storage-opt dm.datadev=/dev/mylogvol/my-docker-data
|
|
|
-
|
|
|
-DOCKER_STORAGE_OPTIONS=
|
|
|
-EOF
|
|
|
-
|
|
|
- # Include contributed completions
|
|
|
- mkdir -p $DIR/etc/bash_completion.d
|
|
|
- cp contrib/completion/bash/docker $DIR/etc/bash_completion.d/
|
|
|
- mkdir -p $DIR/usr/share/zsh/vendor-completions
|
|
|
- cp contrib/completion/zsh/_docker $DIR/usr/share/zsh/vendor-completions/
|
|
|
- mkdir -p $DIR/etc/fish/completions
|
|
|
- cp contrib/completion/fish/docker.fish $DIR/etc/fish/completions/
|
|
|
-
|
|
|
- # Include contributed man pages
|
|
|
- docs/man/md2man-all.sh -q
|
|
|
- manRoot="$DIR/usr/share/man"
|
|
|
- mkdir -p "$manRoot"
|
|
|
- for manDir in docs/man/man?; do
|
|
|
- manBase="$(basename "$manDir")" # "man1"
|
|
|
- for manFile in "$manDir"/*; do
|
|
|
- manName="$(basename "$manFile")" # "docker-build.1"
|
|
|
- mkdir -p "$manRoot/$manBase"
|
|
|
- gzip -c "$manFile" > "$manRoot/$manBase/$manName.gz"
|
|
|
- done
|
|
|
- done
|
|
|
-
|
|
|
- # Copy the binary
|
|
|
- # This will fail if the dynbinary bundle hasn't been built
|
|
|
- mkdir -p $DIR/usr/bin
|
|
|
- cp $DEST/../dynbinary/docker-$VERSION $DIR/usr/bin/docker
|
|
|
- cp $DEST/../dynbinary/dockerinit-$VERSION $DIR/usr/bin/dockerinit
|
|
|
-
|
|
|
- # Generate postinst/prerm/postrm scripts
|
|
|
- cat > $DEST/postinst <<'EOF'
|
|
|
-EOF
|
|
|
-
|
|
|
- cat > $DEST/preinst <<'EOF'
|
|
|
-if ! getent group docker > /dev/null; then
|
|
|
- groupadd --system docker
|
|
|
-fi
|
|
|
-EOF
|
|
|
-
|
|
|
- cat > $DEST/prerm <<'EOF'
|
|
|
-EOF
|
|
|
-
|
|
|
- cat > $DEST/postrm <<'EOF'
|
|
|
-## 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
|
|
|
-EOF
|
|
|
-
|
|
|
- chmod +x $DEST/postinst $DEST/prerm $DEST/postrm $DEST/preinst
|
|
|
-
|
|
|
- (
|
|
|
- # switch directories so we create *.deb in the right folder
|
|
|
- cd $DEST
|
|
|
-
|
|
|
- # create PACKAGE_NAME-VERSION package
|
|
|
- fpm -s dir -C $DIR \
|
|
|
- --name $PACKAGE_NAME-$VERSION --version "$PKGVERSION" \
|
|
|
- --epoch 7 \
|
|
|
- --before-install $DEST/preinst \
|
|
|
- --after-install $DEST/postinst \
|
|
|
- --before-remove $DEST/prerm \
|
|
|
- --after-remove $DEST/postrm \
|
|
|
- --architecture "$PACKAGE_ARCHITECTURE" \
|
|
|
- --prefix / \
|
|
|
- --depends iptables \
|
|
|
- --depends xz \
|
|
|
- --depends "systemd >= 208-20" \
|
|
|
- --depends "device-mapper-libs >= 7:1.02.90-1" \
|
|
|
- --depends "device-mapper-event-libs >= 7:1.02.90-1" \
|
|
|
- --depends libselinux \
|
|
|
- --depends libsepol \
|
|
|
- --depends sqlite \
|
|
|
- --description "$PACKAGE_DESCRIPTION" \
|
|
|
- --maintainer "$PACKAGE_MAINTAINER" \
|
|
|
- --conflicts docker \
|
|
|
- --conflicts docker-io \
|
|
|
- --conflicts lxc-docker-virtual-package \
|
|
|
- --conflicts lxc-docker \
|
|
|
- --url "$PACKAGE_URL" \
|
|
|
- --license "$PACKAGE_LICENSE" \
|
|
|
- --config-files etc/sysconfig \
|
|
|
- --config-files etc/udev/rules.d/80-docker.rules \
|
|
|
- --rpm-compression gzip \
|
|
|
- -t rpm .
|
|
|
- )
|
|
|
-
|
|
|
- # clean up after ourselves so we have a clean output directory
|
|
|
- rm $DEST/postinst $DEST/prerm $DEST/postrm $DEST/preinst
|
|
|
- rm -r $DIR
|
|
|
-}
|
|
|
-
|
|
|
-bundle_rpm
|