From 57c47d0cdcbcec124f26833d6b17e473bad58485 Mon Sep 17 00:00:00 2001 From: Vincent Batts Date: Fri, 13 Dec 2013 14:23:08 -0500 Subject: [PATCH] dev: initial environment fedora, centos and ubuntu * fewer layers * systemd-dev * basic pieces for building docker everytime * centos updates * better automated build --- Makefile | 24 +++++++++++++++++++ centos-dev/Dockerfile.in | 32 +++++++++++++++++++++++++ centos-dev/Makefile | 26 +++++++++++++++++++++ centos-dev/from | 1 + fedora-dev/Dockerfile.in | 41 ++++++++++++++++++++++++++++++++ fedora-dev/Dockerfile.rawhide | 31 ++++++++++++++++++++++++ fedora-dev/Makefile | 28 ++++++++++++++++++++++ gccgo/Dockerfile | 44 +++++++++++++++++++++++++++++++++++ gccgo/Makefile | 14 +++++++++++ ubuntu-dev/Dockerfile.in | 20 ++++++++++++++++ ubuntu-dev/Makefile | 26 +++++++++++++++++++++ ubuntu-dev/from | 1 + 12 files changed, 288 insertions(+) create mode 100644 Makefile create mode 100644 centos-dev/Dockerfile.in create mode 100644 centos-dev/Makefile create mode 100644 centos-dev/from create mode 100644 fedora-dev/Dockerfile.in create mode 100644 fedora-dev/Dockerfile.rawhide create mode 100644 fedora-dev/Makefile create mode 100644 gccgo/Dockerfile create mode 100644 gccgo/Makefile create mode 100644 ubuntu-dev/Dockerfile.in create mode 100644 ubuntu-dev/Makefile create mode 100644 ubuntu-dev/from diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..4a3fe99 --- /dev/null +++ b/Makefile @@ -0,0 +1,24 @@ + +all := \ + fedora \ + ubuntu + +#centos + +default: $(all) + + +fedora: + cd $@-dev && $(MAKE) + +ubuntu: + cd $@-dev && $(MAKE) + +centos: + cd $@-dev && $(MAKE) + +.PHONY: fedora ubuntu centos + +clean: + for d in fedora ubuntu centos; do (cd $$d-dev && $(MAKE) clean); done + diff --git a/centos-dev/Dockerfile.in b/centos-dev/Dockerfile.in new file mode 100644 index 0000000..489f3ae --- /dev/null +++ b/centos-dev/Dockerfile.in @@ -0,0 +1,32 @@ +FROM FROM_IMAGE +ENV container docker +RUN groupadd -g 990 docker && \ + yum -y swap -- remove fakesystemd -- install systemd systemd-libs && \ + yum erase -y vim-minimal &&\ + yum groupinstall -y "development tools" && \ + yum install -y --setopt=override_install_langs=en --setopt=tsflags=nodocs \ + yum-utils \ + git mercurial bzr quilt \ + tig \ + golang \ + vim-enhanced \ + sudo \ + screen \ + libtool \ + gtk-doc \ + intltool \ + gperf \ + wget \ + libgcrypt-devel libcap-devel glib2-devel \ + glibc-static device-mapper-devel btrfs-progs-devel sqlite-devel \ + keychain \ + tito && \ + yum update -y && \ + yum clean all && \ + useradd -m -u 1000 -G wheel DEV_USER && \ + sed -ri 's/^(%wheel.*)(ALL)$/\1NOPASSWD: \2/' /etc/sudoers && \ + yum update -y +USER DEV_USER +ENV HOME /home/DEV_USER +WORKDIR /home/DEV_USER +CMD bash -l diff --git a/centos-dev/Makefile b/centos-dev/Makefile new file mode 100644 index 0000000..c73884e --- /dev/null +++ b/centos-dev/Makefile @@ -0,0 +1,26 @@ + +DOCKER ?= $(shell which docker) +FROM_IMAGE ?= centos +FROM_TAG ?= latest +FROM := $(FROM_IMAGE):$(FROM_TAG) +REGISTRY ?= docker.usersys +NAME ?= $(REGISTRY)/$(USER)/$(FROM_IMAGE)-dev:$(FROM_TAG) + +default: build + +Dockerfile: Dockerfile.in + m4 --define=DEV_USER=$(USER) --define=FROM_IMAGE=$(FROM) $< > $@ + +build: .build + +.build: Dockerfile .pull + $(DOCKER) build -t $(NAME) . && touch $@ + +pull: .pull + +.pull: + $(DOCKER) pull $(FROM) && touch $@ + +clean: + rm -rf .build .pull Dockerfile *~ + diff --git a/centos-dev/from b/centos-dev/from new file mode 100644 index 0000000..b813af9 --- /dev/null +++ b/centos-dev/from @@ -0,0 +1 @@ +centos diff --git a/fedora-dev/Dockerfile.in b/fedora-dev/Dockerfile.in new file mode 100644 index 0000000..abf7d29 --- /dev/null +++ b/fedora-dev/Dockerfile.in @@ -0,0 +1,41 @@ +FROM FROM_IMAGE + +RUN yum erase -y vim-minimal && \ + groupadd -g 990 docker && \ + yum groupinstall -y "development tools" && \ + yum install -y --setopt=override_install_langs=en --setopt=tsflags=nodocs \ + yum-utils \ + git \ + golang \ + mercurial \ + bzr \ + vim-enhanced \ + quilt \ + fedora-packager \ + sudo \ + screen \ + libtool \ + gtk-doc \ + intltool \ + libgcrypt-devel \ + gperf \ + libcap-devel \ + wget \ + tig \ + glibc-static \ + device-mapper-devel \ + btrfs-progs-devel \ + sqlite-devel \ + glib2-devel \ + libmount-devel \ + dbus-devel \ + keychain \ + tito && \ + yum update -y && \ + yum clean all && \ + useradd -m -u 1000 -G wheel,mock DEV_USER && \ + sed -ri 's/^(%wheel.*)(ALL)$/\1NOPASSWD: \2/' /etc/sudoers +USER DEV_USER +ENV HOME /home/DEV_USER +WORKDIR /home/DEV_USER +CMD bash -l diff --git a/fedora-dev/Dockerfile.rawhide b/fedora-dev/Dockerfile.rawhide new file mode 100644 index 0000000..18854a3 --- /dev/null +++ b/fedora-dev/Dockerfile.rawhide @@ -0,0 +1,31 @@ +FROM fedora:rawhide + +RUN yum erase -y vim-minimal &&\ + yum groupinstall -y "development tools" && \ + yum install -y --setopt=override_install_langs=en --setopt=tsflags=nodocs \ + yum-utils \ + git \ + golang \ + mercurial \ + bzr \ + vim-enhanced \ + fedora-packager \ + sudo \ + screen \ + libtool \ + gtk-doc \ + intltool \ + libgcrypt-devel \ + gperf \ + libcap-devel \ + glib2-devel \ + keychain \ + tito && \ + yum update -y && \ + yum clean all && \ + useradd -m -u 1000 -G wheel,mock vbatts && \ + sed -ri 's/^(%wheel.*)(ALL)$/\1NOPASSWD: \2/' /etc/sudoers +USER vbatts +ENV HOME /home/vbatts +WORKDIR /home/vbatts +CMD bash -l diff --git a/fedora-dev/Makefile b/fedora-dev/Makefile new file mode 100644 index 0000000..e039412 --- /dev/null +++ b/fedora-dev/Makefile @@ -0,0 +1,28 @@ + +DOCKER ?= $(shell which docker) +FROM_IMAGE ?= fedora +#FROM_TAG ?= 21 +FROM_TAG ?= latest +FROM := $(FROM_IMAGE):$(FROM_TAG) +REGISTRY ?= docker.usersys +NAME ?= $(REGISTRY)/$(USER)/$(FROM_IMAGE)-dev:$(FROM_TAG) + +default: build + +Dockerfile: Dockerfile.in + m4 --define=DEV_USER=$(USER) --define=FROM_IMAGE=$(FROM) $< > $@ + +build: .build + +.build: Dockerfile .pull + $(DOCKER) build -t $(NAME) . && touch $@ + +pull: .pull + +.pull: + $(DOCKER) pull $(FROM) && touch $@ + +clean: + rm -rf .build .pull Dockerfile *~ + + diff --git a/gccgo/Dockerfile b/gccgo/Dockerfile new file mode 100644 index 0000000..a4d0a5b --- /dev/null +++ b/gccgo/Dockerfile @@ -0,0 +1,44 @@ +FROM centos + +RUN yum groupinstall -y "development tools" && yum install -y wget tar && yum clean all + +ENV CFLAGS -O2 -fPIC +ENV CXXFLAGS -O2 -fPIC + +ENV GMPVERSION 6.0.0 +RUN wget https://ftp.gnu.org/gnu/gmp/gmp-${GMPVERSION}a.tar.bz2 +RUN tar xf gmp-${GMPVERSION}a.tar.bz2 +RUN cd gmp-${GMPVERSION} && ./configure --prefix=/usr --libdir=/usr/lib64 +RUN cd gmp-${GMPVERSION} && make +RUN cd gmp-${GMPVERSION} && make install + +ENV MPFRVERSION 3.1.2 +RUN wget http://www.mpfr.org/mpfr-current/mpfr-${MPFRVERSION}.tar.bz2 +RUN tar xf mpfr-${MPFRVERSION}.tar.bz2 +RUN cd mpfr-${MPFRVERSION} && ./configure --prefix=/usr --libdir=/usr/lib64 +RUN cd mpfr-${MPFRVERSION} && make +RUN cd mpfr-${MPFRVERSION} && make install + +ENV MPCVERSION 1.0.2 +RUN wget ftp://ftp.gnu.org/gnu/mpc/mpc-${MPCVERSION}.tar.gz +RUN tar xf mpc-${MPCVERSION}.tar.gz +RUN cd mpc-${MPCVERSION} && ./configure --prefix=/usr --libdir=/usr/lib64 +RUN cd mpc-${MPCVERSION} && make +RUN cd mpc-${MPCVERSION} && make install + +ENV GCCVERSION 4.9.2 +RUN wget http://mirrors.concertpass.com/gcc/releases/gcc-${GCCVERSION}/gcc-${GCCVERSION}.tar.bz2 +RUN tar xf gcc-${GCCVERSION}.tar.bz2 +RUN cd gcc-${GCCVERSION} && ./configure --prefix=/usr --libdir=/usr/lib64 --disable-bootstrap --program-suffix=49 --disable-multilib --enable-languages=c,c++,go +RUN cd gcc-${GCCVERSION} && make -j4 +RUN cd gcc-${GCCVERSION} && make install +RUN ln -sf /usr/bin/gccgo49 /usr/bin/gccgo + +ENV GOVERSION 1.2.2 +RUN wget https://storage.googleapis.com/golang/go${GOVERSION}.linux-amd64.tar.gz +RUN tar xf go${GOVERSION}.linux-amd64.tar.gz +ENV GOROOT /go +ENV PATH ${GOROOT}bin:${PATH} + +CMD bash -l + diff --git a/gccgo/Makefile b/gccgo/Makefile new file mode 100644 index 0000000..840a2cf --- /dev/null +++ b/gccgo/Makefile @@ -0,0 +1,14 @@ + +NAME := docker.usersys/$(USER)/gccgo +DOCKER := $(shell which docker) + +all: build + +build: .build + +.build: Dockerfile + $(DOCKER) build -t $(NAME) . && touch $@ + +clean: + rm -f .build $(wildcard *~) + diff --git a/ubuntu-dev/Dockerfile.in b/ubuntu-dev/Dockerfile.in new file mode 100644 index 0000000..bd65419 --- /dev/null +++ b/ubuntu-dev/Dockerfile.in @@ -0,0 +1,20 @@ +FROM FROM_IMAGE + +RUN useradd -m -u 1000 -G sudo DEV_USER && \ + sed -ri 's/^(%sudo.*)(ALL)$/\1NOPASSWD: \2/' /etc/sudoers && \ + apt-get update && \ + apt-get install -y \ + git \ + golang \ + mercurial \ + bzr \ + vim \ + sudo \ + screen \ + python-tox \ + keychain && \ + apt-get dist-upgrade -y +USER DEV_USER +ENV HOME /home/DEV_USER +WORKDIR /home/DEV_USER +CMD bash -l diff --git a/ubuntu-dev/Makefile b/ubuntu-dev/Makefile new file mode 100644 index 0000000..1035721 --- /dev/null +++ b/ubuntu-dev/Makefile @@ -0,0 +1,26 @@ + +DOCKER ?= $(shell which docker) +FROM_IMAGE ?= ubuntu +FROM_TAG ?= latest +FROM := $(FROM_IMAGE):$(FROM_TAG) +REGISTRY ?= docker.usersys +NAME ?= $(REGISTRY)/$(USER)/$(FROM_IMAGE)-dev:$(FROM_TAG) + +default: build + +Dockerfile: Dockerfile.in + m4 --define=DEV_USER=$(USER) --define=FROM_IMAGE=$(FROM) $< > $@ + +build: .build + +.build: Dockerfile .pull + $(DOCKER) build -t $(NAME) . && touch $@ + +pull: .pull + +.pull: + $(DOCKER) pull $(FROM) && touch $@ + +clean: + rm -rf .build .pull Dockerfile *~ + diff --git a/ubuntu-dev/from b/ubuntu-dev/from new file mode 100644 index 0000000..4056d1d --- /dev/null +++ b/ubuntu-dev/from @@ -0,0 +1 @@ +ubuntu:14.04