Simplification and cleanup of build process 30/30/1
authorStefan K. Berg <stefan.k.berg@ericsson.com>
Thu, 12 Feb 2015 11:12:34 +0000 (12:12 +0100)
committerStefan K. Berg <stefan.k.berg@ericsson.com>
Thu, 12 Feb 2015 11:16:55 +0000 (12:16 +0100)
Docker build image:
- Uplift of the base Ubuntu version to 14.04.
- Instead of building the Ubuntu image with debootstrap, we use the official
  Docker repository version of Ubuntu.
- Cleanup of the way how runcontext operates
- Fix: Make sure that the build system can be run as root

Top Makefile:
- Building the Fuel ISO on Docker local /tmp directory not to pollute local
  directory with files owned by root.
- Removed unused targets.

Change-Id: I684348b2a15546eadf98d810239a84ff9798b1e8
Signed-off-by: Stefan K. Berg <stefan.k.berg@ericsson.com>
fuel-build/DOC/BUILD/README.build
fuel-build/Makefile
fuel-build/docker/Makefile
fuel-build/docker/README
fuel-build/docker/mkimage/debootstrap [deleted file]
fuel-build/docker/mkimage/mkimage.sh [deleted file]
fuel-build/docker/runcontext
fuel-build/docker/ubuntu-builder/Dockerfile
fuel-build/docker/ubuntu-builder/enable_dockerx2
fuel-build/docker/ubuntu-builder/setcontext [moved from fuel-build/docker/ubuntu-builder/install.sh with 59% similarity, mode: 0644]

index 6cd87e7..a5e1112 100644 (file)
@@ -21,7 +21,6 @@ How to setup and use the OPNFV/BGS/FUEL build system - work in progress
 1.2 Host SW dependencies
 ------------------------
 On the host, the following packages must be installed:
 1.2 Host SW dependencies
 ------------------------
 On the host, the following packages must be installed:
-- debootstrap (simply available through apt-get install debootstrap)
 - docker - see https://docs.docker.com/installation/ubuntulinux/ for installation notes for 12.04 and 14.04
 - git (simply available through apt-get install git)
 
 - docker - see https://docs.docker.com/installation/ubuntulinux/ for installation notes for 12.04 and 14.04
 - git (simply available through apt-get install git)
 
index ea403c8..98b108c 100644 (file)
 # BEGIN of variables to customize
 #
 SHELL = /bin/bash
 # BEGIN of variables to customize
 #
 SHELL = /bin/bash
-
-
 ISOSRC = file:$(shell pwd)/fuel-5.1.1.iso
 ISOCACHE = $(shell pwd)/$(shell basename $(ISOSRC))
 PRODUCT_NAME = "OPNFV_BGS"
 VERSION = "P0000"
 NEWISO = $(shell pwd)/release/opnfv-${VERSION}.iso
 ISOSRC = file:$(shell pwd)/fuel-5.1.1.iso
 ISOCACHE = $(shell pwd)/$(shell basename $(ISOSRC))
 PRODUCT_NAME = "OPNFV_BGS"
 VERSION = "P0000"
 NEWISO = $(shell pwd)/release/opnfv-${VERSION}.iso
-DOCKERIMG = opnfv.org/ubuntu-builder:12.04
+DOCKERIMG = opnfv.org/ubuntu-builder:14.04
 # Note! Invoke with "make VERSION=RXXXX iso" to make release build!
 # Invoke with ICOCACHE=/full/path/to/iso if cached ISO is in non-standard location.
 #
 # END of variables to customize
 #############################################################################
 # Note! Invoke with "make VERSION=RXXXX iso" to make release build!
 # Invoke with ICOCACHE=/full/path/to/iso if cached ISO is in non-standard location.
 #
 # END of variables to customize
 #############################################################################
-ORIGDIR = $(shell pwd)/origiso
+TOPDIR := $(shell pwd)
+ORIGDIR := $(TOPDIR)/origiso
 
 SUBDIRS := f_isoroot
 SUBDIRS += f_opnfv_puppet
 
 SUBDIRS := f_isoroot
 SUBDIRS += f_opnfv_puppet
@@ -43,38 +42,27 @@ SUBCLEAN = $(addsuffix .clean,$(SUBDIRS))
 .PHONY: all
 all:   
        @docker version >/dev/null 2>&1 || (echo 'No Docker installation available'; exit 1)
 .PHONY: all
 all:   
        @docker version >/dev/null 2>&1 || (echo 'No Docker installation available'; exit 1)
-       make -C docker
+       @make -C docker
        @docker/runcontext $(DOCKERIMG) $(MAKE) $(MAKEFLAGS) iso
 
 $(ISOCACHE):
        @docker/runcontext $(DOCKERIMG) $(MAKE) $(MAKEFLAGS) iso
 
 $(ISOCACHE):
-       # Clone Fuel
-       sudo rm -rf fuel-main
-       git clone https://github.com/stackforge/fuel-main
-       cd fuel-main && git checkout 5.1.1
+       # Clone Fuel to non-persistent location and build
+       cd /tmp && git clone https://github.com/stackforge/fuel-main
+       cd /tmp/fuel-main && git checkout 5.1.1
        # Setup cgroups for docker-in-docker
        sudo /root/enable_dockerx2
        # Setup cgroups for docker-in-docker
        sudo /root/enable_dockerx2
-       # Need to patch to fix race condition in build
-       cd fuel-main && patch -p1 < ../fuel-main.patches
+       # Patch to fix race condition when doing "Docker-in-Docker" build
+       cd /tmp/fuel-main && patch -p1 < $(TOPDIR)/fuel-main.patches
+       # Remove Docker optimizations, otherwise multistrap will fail during
+       # Fuel build.
+       sudo rm -f /etc/apt/apt.conf.d/docker*
        #
        #
-       cd fuel-main && ./prepare-build-env.sh
-       # Need to patch not supported start-stop-daemon argument
-       sudo sed -i 's/--no-close//' /etc/init.d/docker
-       sudo /etc/init.d/docker start
-       cd fuel-main && make iso
-       mv fuel-main/build/artifacts/fuel*.iso .
-       # Remove Fuel
-       sudo rm -rf fuel-main
-
-# Used the "docker" target to build within the context of the Docker
-# container created by the Makefile in the docker subdirectory.
-.PHONY: docker
-docker: /.dockerinit
+       cd /tmp/fuel-main && ./prepare-build-env.sh
+       cd /tmp/fuel-main && make iso
+       mv /tmp/fuel-main/build/artifacts/fuel*.iso .
 
 
-/.dockerinit:
-       docker/runcontext $(DOCKERIMG) $(MAKE) $(MAKEFLAGS)
-
-.PHONY: get-iso mount-origiso umount-origiso
-mount-origiso:
+.PHONY: mount-origiso umount-origiso
+mount-origiso: $(ISOCACHE)
        @echo "Mounting original ISO in $(ORIGDIR)"
        @mkdir -p $(ORIGDIR)
        @fuseiso $(ISOCACHE) $(ORIGDIR)
        @echo "Mounting original ISO in $(ORIGDIR)"
        @mkdir -p $(ORIGDIR)
        @fuseiso $(ISOCACHE) $(ORIGDIR)
@@ -84,13 +72,6 @@ umount-origiso:
        @fusermount -u $(ORIGDIR)
        @rmdir $(ORIGDIR)
 
        @fusermount -u $(ORIGDIR)
        @rmdir $(ORIGDIR)
 
-get-iso:
-       wget $(ISOSRC) -O $(ISOCACHE)
-
-
-       @echo "ISO data of source ISO:" >> release/.isodata
-       @isoinfo -d -i $(ISOCACHE) >> release/.isodata
-
 .PHONY: $(SUBDIRS)
 $(SUBDIRS):
        @mkdir -p release/packages/ubuntu/pool/main release/puppet/modules release/isoroot
 .PHONY: $(SUBDIRS)
 $(SUBDIRS):
        @mkdir -p release/packages/ubuntu/pool/main release/puppet/modules release/isoroot
@@ -110,14 +91,6 @@ clean: $(SUBCLEAN)
 $(SUBCLEAN): %.clean:
        $(MAKE) -C $* -f Makefile clean
 
 $(SUBCLEAN): %.clean:
        $(MAKE) -C $* -f Makefile clean
 
-.PHONY: install
-install:$(SUBDIRS) patch-packages
-       install/install.sh live
-
-.PHONY: uninstall
-uninstall:
-       install/uninstall.sh
-
 # Todo: Make things smarter - we shouldn't need to clean everything
 # betwen make invocations.
 .PHONY: iso
 # Todo: Make things smarter - we shouldn't need to clean everything
 # betwen make invocations.
 .PHONY: iso
index 4f00de8..360bb54 100644 (file)
@@ -8,25 +8,16 @@
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
 
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
 
-CONTEXT1 := opnfv.org/ubuntu:12.04
-CONTEXT2 := opnfv.org/ubuntu-builder:12.04
+FILES = $(wildcard ubuntu-builder/*) runcontext
 
 
-.PHONY: docker all
+.PHONY: all
+all:   .docker
 
 
-all:   create-docker-ubuntu populate-docker-ubuntu
-       ./runcontext ${CONTEXT2} make test
+.docker: $(FILES)
+       /usr/bin/docker build --rm=true -t opnfv.org/ubuntu-builder:14.04 ubuntu-builder
+       /usr/bin/docker tag -f opnfv.org/ubuntu-builder:14.04 opnfv.org/ubuntu-builder
+       touch .docker
 
 
-.PHONY:        create-docker-ubuntu
-create-docker-ubuntu:
-       /usr/bin/docker run --rm -i -t ${CONTEXT1} date || \
-       sudo mkimage/mkimage.sh -t opnfv.org/ubuntu:12.04 debootstrap --include=ubuntu-minimal --components=main,universe precise
-
-.PHONY: populate-docker-ubuntu
-populate-docker-ubuntu:
-       /usr/bin/docker build --rm=true -t opnfv.org/ubuntu-builder:12.04 ubuntu-builder
-       /usr/bin/docker tag -f opnfv.org/ubuntu-builder:12.04 opnfv.org/ubuntu-builder
-
-.PHONY:        test
-test:
-       @hostname
-       @date
+.PHONY:        clean
+clean:
+       rm .docker
index 5d22bc9..e5ccdfa 100644 (file)
@@ -13,13 +13,12 @@ used for building in Ubuntu 12.04 context.
 
 There are two requirements before running make on this level:
 
 
 There are two requirements before running make on this level:
 
-1. You need to have Docker installed on your system, and make sure
-to have a valid DNS config in your /etc/default/docker.
-e.g:
-DOCKER_OPTS=" --dns=8.8.8.8 --dns=8.8.8.4"
+1. You need to have Docker installed on your system
 
 
+2. If in a corporate network, make sure to have a valid DNS config in
+   your /etc/default/docker, e.g:
 
 
-2. You must have installed the package "debootstrap".
+   DOCKER_OPTS=" --dns=8.8.8.8 --dns=8.8.8.4"
 
 The top level makefile will refer to the "runcontext" file in order to
 run the build process as the current user with the current working
 
 The top level makefile will refer to the "runcontext" file in order to
 run the build process as the current user with the current working
diff --git a/fuel-build/docker/mkimage/debootstrap b/fuel-build/docker/mkimage/debootstrap
deleted file mode 100755 (executable)
index 0862120..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-#!/usr/bin/env bash
-#
-set -e
-
-rootfsDir="$1"
-shift
-
-# we have to do a little fancy footwork to make sure "rootfsDir" becomes the second non-option argument to debootstrap
-
-before=()
-while [ $# -gt 0 ] && [[ "$1" == -* ]]; do
-       before+=( "$1" )
-       shift
-done
-
-suite="$1"
-shift
-
-(
-       set -x
-       debootstrap "${before[@]}" "$suite" "$rootfsDir" "$@"
-)
-
-# now for some Docker-specific tweaks
-
-# prevent init scripts from running during install/update
-echo >&2 "+ cat > '$rootfsDir/usr/sbin/policy-rc.d'"
-cat > "$rootfsDir/usr/sbin/policy-rc.d" <<'EOF'
-#!/bin/sh
-exit 101
-EOF
-chmod +x "$rootfsDir/usr/sbin/policy-rc.d"
-
-# prevent upstart scripts from running during install/update
-(
-       set -x
-       chroot "$rootfsDir" dpkg-divert --local --rename --add /sbin/initctl
-       ln -sf /bin/true "$rootfsDir/sbin/initctl"
-)
-
-# shrink the image, since apt makes us fat (wheezy: ~157.5MB vs ~120MB)
-( set -x; chroot "$rootfsDir" apt-get clean )
-
-# Ubuntu 10.04 sucks... :)
-if strings "$rootfsDir/usr/bin/dpkg" | grep -q unsafe-io; then
-       # force dpkg not to call sync() after package extraction (speeding up installs)
-       echo >&2 "+ echo force-unsafe-io > '$rootfsDir/etc/dpkg/dpkg.cfg.d/docker-apt-speedup'"
-       echo 'force-unsafe-io' > "$rootfsDir/etc/dpkg/dpkg.cfg.d/docker-apt-speedup"
-fi
-
-if [ -d "$rootfsDir/etc/apt/apt.conf.d" ]; then
-       # _keep_ us lean by effectively running "apt-get clean" after every install
-       aptGetClean='"rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true";'
-       echo >&2 "+ cat > '$rootfsDir/etc/apt/apt.conf.d/docker-clean'"
-       cat > "$rootfsDir/etc/apt/apt.conf.d/docker-clean" <<-EOF
-               DPkg::Post-Invoke { ${aptGetClean} };
-               APT::Update::Post-Invoke { ${aptGetClean} };
-
-               Dir::Cache::pkgcache "";
-               Dir::Cache::srcpkgcache "";
-       EOF
-
-       # remove apt-cache translations for fast "apt-get update"
-       echo >&2 "+ cat > '$rootfsDir/etc/apt/apt.conf.d/docker-no-languages'"
-       echo 'Acquire::Languages "none";' > "$rootfsDir/etc/apt/apt.conf.d/docker-no-languages"
-fi
-
-if [ -z "$DONT_TOUCH_SOURCES_LIST" ]; then
-       # tweak sources.list, where appropriate
-       lsbDist=
-       if [ -z "$lsbDist" -a -r "$rootfsDir/etc/os-release" ]; then
-               lsbDist="$(. "$rootfsDir/etc/os-release" && echo "$ID")"
-       fi
-       if [ -z "$lsbDist" -a -r "$rootfsDir/etc/lsb-release" ]; then
-               lsbDist="$(. "$rootfsDir/etc/lsb-release" && echo "$DISTRIB_ID")"
-       fi
-       if [ -z "$lsbDist" -a -r "$rootfsDir/etc/debian_version" ]; then
-               lsbDist='Debian'
-       fi
-       case "$lsbDist" in
-               debian|Debian)
-                       # updates and security!
-                       if [ "$suite" != 'sid' -a "$suite" != 'unstable' ]; then
-                               (
-                                       set -x
-                                       sed -i "p; s/ $suite main$/ ${suite}-updates main/" "$rootfsDir/etc/apt/sources.list"
-                                       echo "deb http://security.debian.org $suite/updates main" >> "$rootfsDir/etc/apt/sources.list"
-                               )
-                       fi
-                       ;;
-               ubuntu|Ubuntu)
-                       # add the universe, updates, and security repositories
-                       (
-                               set -x
-                               sed -i "
-                                       s/ $suite main$/ $suite main universe/; p;
-                                       s/ $suite main/ ${suite}-updates main/; p;
-                                       s/ $suite-updates main/ ${suite}-security main/
-                               " "$rootfsDir/etc/apt/sources.list"
-                       )
-                       ;;
-               tanglu|Tanglu)
-                       # add the updates repository
-                       if [ "$suite" != 'devel' ]; then
-                               (
-                                       set -x
-                                       sed -i "p; s/ $suite main$/ ${suite}-updates main/" "$rootfsDir/etc/apt/sources.list"
-                               )
-                       fi
-                       ;;
-               steamos|SteamOS)
-                       # add contrib and non-free
-                       (
-                               set -x
-                               sed -i "s/ $suite main$/ $suite main contrib non-free/" "$rootfsDir/etc/apt/sources.list"
-                       )
-                       ;;
-       esac
-fi
-
-# make sure we're fully up-to-date, too
-(
-       set -x
-       chroot "$rootfsDir" apt-get update
-       chroot "$rootfsDir" apt-get dist-upgrade -y
-)
diff --git a/fuel-build/docker/mkimage/mkimage.sh b/fuel-build/docker/mkimage/mkimage.sh
deleted file mode 100755 (executable)
index 3424258..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-#!/usr/bin/env bash
-##############################################################################
-# Copyright (c) 2015 Ericsson AB and others.
-# stefan.k.berg@ericsson.com
-# jonas.bjurel@ericsson.com
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-##############################################################################
-
-set -e
-
-mkimg="$(basename "$0")"
-
-usage() {
-        echo >&2 "usage: $mkimg [-d dir] [-t tag] script [script-args]"
-        echo >&2 "   ie: $mkimg -t someuser/debian debootstrap --variant=minbase jessie"
-        echo >&2 "       $mkimg -t someuser/ubuntu debootstrap --include=ubuntu-minimal trusty"
-        echo >&2 "       $mkimg -t someuser/busybox busybox-static"
-        echo >&2 "       $mkimg -t someuser/centos:5 rinse --distribution centos-5"
-        exit 1
-}
-
-scriptDir="$(dirname "$(readlink -f "$BASH_SOURCE")")"
-
-optTemp=$(getopt --options '+d:t:h' --longoptions 'dir:,tag:,help' --name "$mkimg" -- "$@")
-eval set -- "$optTemp"
-unset optTemp
-
-dir=
-tag=
-while true; do
-        case "$1" in
-                -d|--dir) dir="$2" ; shift 2 ;;
-                -t|--tag) tag="$2" ; shift 2 ;;
-                -h|--help) usage ;;
-                --) shift ; break ;;
-        esac
-done
-
-script="$1"
-[ "$script" ] || usage
-shift
-
-if [ ! -x "$scriptDir/$script" ]; then
-        echo >&2 "error: $script does not exist or is not executable"
-        echo >&2 "  see $scriptDir for possible scripts"
-        exit 1
-fi
-
-# don't mistake common scripts like .febootstrap-minimize as image-creators
-if [[ "$script" == .* ]]; then
-        echo >&2 "error: $script is a script helper, not a script"
-        echo >&2 "  see $scriptDir for possible scripts"
-        exit 1
-fi
-
-delDir=
-if [ -z "$dir" ]; then
-        dir="$(mktemp -d ${TMPDIR:-/tmp}/docker-mkimage.XXXXXXXXXX)"
-        delDir=1
-fi
-
-rootfsDir="$dir/rootfs"
-( set -x; mkdir -p "$rootfsDir" )
-
-# pass all remaining arguments to $script
-"$scriptDir/$script" "$rootfsDir" "$@"
-
-# Docker mounts tmpfs at /dev and procfs at /proc so we can remove them
-rm -rf "$rootfsDir/dev" "$rootfsDir/proc"
-mkdir -p "$rootfsDir/dev" "$rootfsDir/proc"
-
-# make sure /etc/resolv.conf has something useful in it
-mkdir -p "$rootfsDir/etc"
-cat > "$rootfsDir/etc/resolv.conf" <<'EOF'
-nameserver 8.8.8.8
-nameserver 8.8.4.4
-EOF
-
-tarFile="$dir/rootfs.tar.xz"
-touch "$tarFile"
-
-(
-        set -x
-        tar --numeric-owner -caf "$tarFile" -C "$rootfsDir" --transform='s,^./,,' .
-)
-
-echo >&2 "+ cat > '$dir/Dockerfile'"
-cat > "$dir/Dockerfile" <<'EOF'
-FROM scratch
-ADD rootfs.tar.xz /
-EOF
-
-# if our generated image has a decent shell, let's set a default command
-for shell in /bin/bash /usr/bin/fish /usr/bin/zsh /bin/sh; do
-        if [ -x "$rootfsDir/$shell" ]; then
-                ( set -x; echo 'CMD ["'"$shell"'"]' >> "$dir/Dockerfile" )
-                break
-        fi
-done
-
-umount $rootfsDir/run/shm
-( set -x; rm -rf "$rootfsDir" )
-
-if [ "$tag" ]; then
-        ( set -x; docker build -t "$tag" "$dir" )
-elif [ "$delDir" ]; then
-        # if we didn't specify a tag and we're going to delete our dir, let's just build an untagged image so that we did _something_
-        ( set -x; docker build "$dir" )
-fi
-
-if [ "$delDir" ]; then
-        ( set -x; rm -rf "$dir" )
-fi
index 45a7645..d4e8b9c 100755 (executable)
@@ -15,16 +15,11 @@ GID=`id -g`
 USER=`whoami`
 res=`docker build -q --rm -  <<EOF
 FROM $context
 USER=`whoami`
 res=`docker build -q --rm -  <<EOF
 FROM $context
-RUN echo "invalidate cache" && echo "done"
-RUN /usr/sbin/groupadd --gid $GID $USER
-RUN /usr/sbin/adduser --system --uid=$UID --gid=$GID --home $HOME --shell /bin/bash $USER
-RUN /usr/sbin/usermod -a -G fuse $USER
-RUN echo "export HOME=$HOME" >> /etc/bash.bashrc
-RUN echo "$@" >> /etc/bash.bashrc
-RUN echo 'exit \\$?' >> /etc/bash.bashrc
+RUN date || date
+RUN /root/setcontext $USER $UID $GID $HOME
 EOF`
 CID=`echo $res | sed 's/.* //'`
 EOF`
 CID=`echo $res | sed 's/.* //'`
-docker run --privileged=true --rm -i -t -u $USER -w $PWD -v ${HOME}/.ssh:${HOME}/.ssh -v $PWD:$PWD $CID bash
+docker run --privileged=true --rm -i -t -e HOME=$HOME -u $USER -w $PWD -v ${HOME}/.ssh:${HOME}/.ssh -v $PWD:$PWD $CID "$@"
 rc=$?
 docker rmi $CID > /dev/null
 exit $rc
 rc=$?
 docker rmi $CID > /dev/null
 exit $rc
index e91afbd..3ec934d 100644 (file)
@@ -1,3 +1,4 @@
+#!/bin/bash
 ##############################################################################
 # Copyright (c) 2015 Ericsson AB and others.
 # stefan.k.berg@ericsson.com
 ##############################################################################
 # Copyright (c) 2015 Ericsson AB and others.
 # stefan.k.berg@ericsson.com
@@ -8,11 +9,17 @@
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
 
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
 
-FROM opnfv.org/ubuntu:12.04
-ADD install.sh /root/install.sh
-RUN /root/install.sh
+FROM ubuntu:14.04
+RUN apt-get update
+RUN apt-get install -y make python-setuptools python-all dpkg-dev debhelper \
+    fuseiso git genisoimage bind9-host wget curl lintian tmux lxc iptables \
+    ca-certificates sudo apt-utils lsb-release
 
 
+RUN echo "ALL ALL=NOPASSWD: ALL" > /etc/sudoers.d/open-sudo
+RUN chmod 0440 /etc/sudoers.d/open-sudo
+
+ADD ./setcontext /root/setcontext
+RUN chmod +x /root/setcontext
 ADD ./enable_dockerx2 /root/enable_dockerx2
 RUN chmod +x /root/enable_dockerx2
 VOLUME /var/lib/docker
 ADD ./enable_dockerx2 /root/enable_dockerx2
 RUN chmod +x /root/enable_dockerx2
 VOLUME /var/lib/docker
-CMD ["/root/enable_dockerx2"]
index b6bccdf..e79c8b7 100644 (file)
@@ -1,6 +1,15 @@
 #!/bin/sh
 #!/bin/sh
+##############################################################################
+# Copyright (c) 2015 Ericsson AB and others.
+# stefan.k.berg@ericsson.com
+# jonas.bjurel@ericsson.com
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+#
 # Needed to expose underlying cgroups to container
 # Needed to expose underlying cgroups to container
-
 mount -n -t tmpfs -o uid=0,gid=0,mode=0755 cgroup /sys/fs/cgroup
 mount -t securityfs none /sys/kernel/security
 
 mount -n -t tmpfs -o uid=0,gid=0,mode=0755 cgroup /sys/fs/cgroup
 mount -t securityfs none /sys/kernel/security
 
old mode 100755 (executable)
new mode 100644 (file)
similarity index 59%
rename from fuel-build/docker/ubuntu-builder/install.sh
rename to fuel-build/docker/ubuntu-builder/setcontext
index 667ab27..bc28994
@@ -8,15 +8,13 @@
 # which accompanies this distribution, and is available at
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
 # which accompanies this distribution, and is available at
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
+#
+SETUSER=$1
+SETUID=$2
+SETGID=$3
+SETHOME=$4
 
 
-BASE_PACKAGES="make python-setuptools python-all dpkg-dev debhelper
-fuseiso git genisoimage bind9-host wget curl lintian tmux lxc iptables
-ca-certificates"
-
-apt-get update || exit 1
-apt-get upgrade -y || exit 1
-
-apt-get install -y $BASE_PACKAGES || exit 1
-
-echo "ALL ALL=NOPASSWD: ALL" > /etc/sudoers.d/open-sudo
-chmod 0440 /etc/sudoers.d/open-sudo
+getent group $SETUSER || /usr/sbin/groupadd --gid $SETGID $SETUSER
+getent passwd $SETUSER || /usr/sbin/adduser --system --uid=$SETUID --gid=$SETGID --home $SETHOME --shell /bin/bash $SETUSER
+/usr/sbin/usermod -a -G fuse $SETUSER
+exit 0