-
-
Save mrunalp/fa5f420addea0cff31d1 to your computer and use it in GitHub Desktop.
#!/bin/bash | |
set -e | |
set -x | |
RUNC_GOPATH="$(mktemp -d)" | |
CONTAINERD_GOPATH="$(mktemp -d)" | |
PWD="$(pwd)" | |
function cleanup() { | |
rm -rf "${RUNC_GOPATH}" | |
rm -rf "${CONTAINERD_GOPATH}" | |
cd "${PWD}" | |
} | |
trap cleanup EXIT | |
dockerfile_path="${GOPATH}/src/github.com/docker/docker/Dockerfile" | |
RUNC_COMMIT=$(grep RUNC_COMMIT $dockerfile_path | head -n 1 | cut -d" " -f 3) | |
echo $RUNC_COMMIT | |
CONTAINERD_COMMIT=$(grep CONTAINERD_COMMIT $dockerfile_path | head -n 1 | cut -d" " -f 3) | |
echo $CONTAINERD_COMMIT | |
echo "Building runc" | |
GOPATH=$RUNC_GOPATH | |
git clone git://github.com/opencontainers/runc.git "$GOPATH/src/github.com/opencontainers/runc" | |
pushd "$GOPATH/src/github.com/opencontainers/runc" | |
git checkout -q "$RUNC_COMMIT" | |
make BUILDTAGS="seccomp selinux" | |
cp runc /usr/local/bin/docker-runc | |
popd | |
echo "Building containerd" | |
GOPATH=$CONTAINERD_GOPATH | |
git clone git://github.com/docker/containerd.git "$GOPATH/src/github.com/docker/containerd" | |
pushd "$GOPATH/src/github.com/docker/containerd" | |
git checkout -q "$CONTAINERD_COMMIT" | |
make | |
cp bin/containerd /usr/local/bin/docker-containerd | |
cp bin/containerd-shim /usr/local/bin/docker-containerd-shim | |
cp bin/ctr /usr/local/bin/docker-containerd-ctr | |
popd |
@mrunalp I've edited this slightly to not clutter the GOPATH of the caller:
old_gopath="${GOPATH}" # at the beginning
...
# your script here
...
export GOPATH=${old_gopath} # at the end
I've also found out that with set -e
the scripts exits immediately when, for instance, containerd
is running on the system and you cannot cp
the binary cause the file is busy (I simply systemctl stop docker
before running this script so containerd
exits and the script can cp
)
@runcom, yes adding those changes makes sense. I was trying to see if others are willing to use it. We can maintain this in a repo so it makes it easier to build docker on Fedora/RHEL. Thanks!
@runcom I have updated it with improvements. It doesn't clobber the global GOPATH. It ensures cleanup of the tmp build directories and returns you to the directory from where the script was executed. Please try it out! :)
Thanks, bug yuck.