mirror of https://github.com/docker/docs.git
				
				
				
			
		
			
				
	
	
		
			177 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Bash
		
	
	
	
			
		
		
	
	
			177 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Bash
		
	
	
	
| #!/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.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"
 | |
| 
 | |
| # 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 udev rules
 | |
| 	mkdir -p $DIR/etc/udev/rules.d
 | |
| 	cp contrib/udev/80-docker.rules $DIR/etc/udev/rules.d/
 | |
| 
 | |
| 	# Include our init scripts
 | |
| 	mkdir -p $DIR/etc/init
 | |
| 	cp contrib/init/upstart/docker.conf $DIR/etc/init/
 | |
| 	mkdir -p $DIR/etc/init.d
 | |
| 	cp contrib/init/sysvinit-debian/docker $DIR/etc/init.d/
 | |
| 	mkdir -p $DIR/etc/default
 | |
| 	cp contrib/init/sysvinit-debian/docker.default $DIR/etc/default/docker
 | |
| 	mkdir -p $DIR/lib/systemd/system
 | |
| 	cp contrib/init/systemd/docker.{service,socket} $DIR/lib/systemd/system/
 | |
| 
 | |
| 	# 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 binary bundle hasn't been built
 | |
| 	mkdir -p $DIR/usr/bin
 | |
| 	cp $DEST/../binary/docker-$VERSION $DIR/usr/bin/docker
 | |
| 
 | |
| 	# Generate postinst/prerm/postrm scripts
 | |
| 	cat > $DEST/postinst <<'EOF'
 | |
| #!/bin/sh
 | |
| set -e
 | |
| set -u
 | |
| 
 | |
| if [ "$1" = 'configure' ] && [ -z "$2" ]; then
 | |
| 	if ! getent group docker > /dev/null; then
 | |
| 		groupadd --system docker
 | |
| 	fi
 | |
| fi
 | |
| 
 | |
| if ! { [ -x /sbin/initctl ] && /sbin/initctl version 2>/dev/null | grep -q upstart; }; then
 | |
| 	# we only need to do this if upstart isn't in charge
 | |
| 	update-rc.d docker defaults > /dev/null || true
 | |
| fi
 | |
| if [ -n "$2" ]; then
 | |
| 	_dh_action=restart
 | |
| else
 | |
| 	_dh_action=start
 | |
| fi
 | |
| service docker $_dh_action 2>/dev/null || true
 | |
| 
 | |
| #DEBHELPER#
 | |
| EOF
 | |
| 	cat > $DEST/prerm <<'EOF'
 | |
| #!/bin/sh
 | |
| set -e
 | |
| set -u
 | |
| 
 | |
| service docker stop 2>/dev/null || true
 | |
| 
 | |
| #DEBHELPER#
 | |
| EOF
 | |
| 	cat > $DEST/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 $DEST/postinst $DEST/prerm $DEST/postrm
 | |
| 
 | |
| 	(
 | |
| 		# switch directories so we create *.deb in the right folder
 | |
| 		cd $DEST
 | |
| 
 | |
| 		# create lxc-docker-VERSION package
 | |
| 		fpm -s dir -C $DIR \
 | |
| 			--name lxc-docker-$VERSION --version $PKGVERSION \
 | |
| 			--after-install $DEST/postinst \
 | |
| 			--before-remove $DEST/prerm \
 | |
| 			--after-remove $DEST/postrm \
 | |
| 			--architecture "$PACKAGE_ARCHITECTURE" \
 | |
| 			--prefix / \
 | |
| 			--depends iptables \
 | |
| 			--deb-recommends aufs-tools \
 | |
| 			--deb-recommends ca-certificates \
 | |
| 			--deb-recommends git \
 | |
| 			--deb-recommends xz-utils \
 | |
| 			--deb-recommends 'cgroupfs-mount | cgroup-lite' \
 | |
| 			--description "$PACKAGE_DESCRIPTION" \
 | |
| 			--maintainer "$PACKAGE_MAINTAINER" \
 | |
| 			--conflicts docker \
 | |
| 			--conflicts docker.io \
 | |
| 			--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/udev/rules.d/80-docker.rules \
 | |
| 			--config-files /etc/init/docker.conf \
 | |
| 			--config-files /etc/init.d/docker \
 | |
| 			--config-files /etc/default/docker \
 | |
| 			--deb-compression gz \
 | |
| 			-t deb .
 | |
| 		# TODO replace "Suggests: cgroup-lite" with "Recommends: cgroupfs-mount | cgroup-lite" once cgroupfs-mount is available
 | |
| 
 | |
| 		# create empty lxc-docker wrapper package
 | |
| 		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
 | |
| 	)
 | |
| 
 | |
| 	# clean up after ourselves so we have a clean output directory
 | |
| 	rm $DEST/postinst $DEST/prerm $DEST/postrm
 | |
| 	rm -r $DIR
 | |
| }
 | |
| 
 | |
| bundle_ubuntu
 |