Skip to content

Commit

Permalink
use aufs in chrooter
Browse files Browse the repository at this point in the history
  • Loading branch information
blackwarthog committed Dec 12, 2019
1 parent d6a2c88 commit a1747ce
Show file tree
Hide file tree
Showing 229 changed files with 103 additions and 90 deletions.
4 changes: 2 additions & 2 deletions build-opentoonz-testing.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
set -e

BASE_DIR=$(cd `dirname "$0"`; pwd)
DATA_DIR="$BASE_DIR/docker-builder-data"
DATA_DIR="$BASE_DIR/env-builder-data"
BUILD_DIR=$DATA_DIR/build
PUBLISH_DIR=$BASE_DIR/publish
CONFIG_FILE="$BASE_DIR/config.sh"
Expand All @@ -17,7 +17,7 @@ if [ -f $CONFIG_FILE ]; then
source $CONFIG_FILE
fi

SCRIPT="$BASE_DIR/docker/run.sh"
SCRIPT="$BASE_DIR/env/run.sh"

run_appimage() {
export PLATFORM="$1"
Expand Down
4 changes: 2 additions & 2 deletions build-opentoonz.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
set -e

BASE_DIR=$(cd `dirname "$0"`; pwd)
DATA_DIR="$BASE_DIR/docker-builder-data"
DATA_DIR="$BASE_DIR/env-builder-data"
BUILD_DIR=$DATA_DIR/build
PUBLISH_DIR=$BASE_DIR/publish
CONFIG_FILE="$BASE_DIR/config.sh"
Expand All @@ -16,7 +16,7 @@ if [ -f $CONFIG_FILE ]; then
source $CONFIG_FILE
fi

SCRIPT="$BASE_DIR/docker/run.sh"
SCRIPT="$BASE_DIR/env/run.sh"

run_appimage() {
export PLATFORM="$1"
Expand Down
4 changes: 2 additions & 2 deletions build-papagayong.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
set -e

BASE_DIR=$(cd `dirname "$0"`; pwd)
DATA_DIR="$BASE_DIR/docker-builder-data"
DATA_DIR="$BASE_DIR/env-builder-data"
BUILD_DIR=$DATA_DIR/build
PUBLISH_DIR=$BASE_DIR/publish
CONFIG_FILE="$BASE_DIR/config.sh"
Expand All @@ -16,7 +16,7 @@ if [ -f $CONFIG_FILE ]; then
source $CONFIG_FILE
fi

SCRIPT="$BASE_DIR/docker/run.sh"
SCRIPT="$BASE_DIR/env/run.sh"

run_appimage() {
export PLATFORM="$1"
Expand Down
4 changes: 2 additions & 2 deletions build-synfigstudio-debug.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
set -e

BASE_DIR=$(cd `dirname "$0"`; pwd)
DATA_DIR="$BASE_DIR/docker-builder-data"
DATA_DIR="$BASE_DIR/env-builder-data"
BUILD_DIR=$DATA_DIR/build
PUBLISH_DIR=$BASE_DIR/publish
CONFIG_FILE="$BASE_DIR/config.sh"
Expand All @@ -17,7 +17,7 @@ if [ -f $CONFIG_FILE ]; then
source $CONFIG_FILE
fi

SCRIPT="$BASE_DIR/docker/run.sh"
SCRIPT="$BASE_DIR/env/run.sh"

run_appimage() {
export PLATFORM="$1"
Expand Down
4 changes: 2 additions & 2 deletions build-synfigstudio.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
set -e

BASE_DIR=$(cd `dirname "$0"`; pwd)
DATA_DIR="$BASE_DIR/docker-builder-data"
DATA_DIR="$BASE_DIR/env-builder-data"
BUILD_DIR=$DATA_DIR/build
PUBLISH_DIR=$BASE_DIR/publish
CONFIG_FILE="$BASE_DIR/config.sh"
Expand All @@ -17,7 +17,7 @@ if [ -f $CONFIG_FILE ]; then
source $CONFIG_FILE
fi

SCRIPT="$BASE_DIR/docker/run.sh"
SCRIPT="$BASE_DIR/env/run.sh"

run_appimage() {
export PLATFORM="$1"
Expand Down
7 changes: 5 additions & 2 deletions chrooter/build-initial-system.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ arch=i386
suite=wheezy
chroot_dir="/var/chroot/$suite"
apt_mirror="ftp://ftp.debian.org/debian/"
docker_image="my/debian-$arch:$suite"

export DEBIAN_FRONTEND=noninteractive
debootstrap --arch $arch $suite $chroot_dir $apt_mirror
Expand All @@ -23,5 +22,9 @@ chroot $chroot_dir apt-get autoclean
chroot $chroot_dir apt-get clean
chroot $chroot_dir apt-get autoremove

tar cfz debian-$suite-$arch.tar.gz -C $chroot_dir .
olddir=`pwd`
pushd $chroot_dir
zip "$olddir/debian-$suite-$arch.zip" -qyr0 . || true # zip cannot process some files from /dev
popd

rm -rf $chroot_dir
2 changes: 1 addition & 1 deletion chrooter/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,4 @@ fi
export PACKET_BUILD_DIR
mkdir -p $PACKET_BUILD_DIR

docker build -t my/builder $DOCKER_BUILD_OPTIONS "$SCRIPT_DIR"
chrooter build -t my/builder $CHROOTER_BUILD_OPTIONS "$SCRIPT_DIR"
72 changes: 40 additions & 32 deletions chrooter/chrooter.sh
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,11 @@ fi

image_mount_add() {
echo "Mount: $1 -> $2"
sudo mkdir -p "$IMAGE_MOUNT_DIR$2"
sudo mount --bind "$1" "$IMAGE_MOUNT_DIR$2"
echo "umount \"$IMAGE_MOUNT_DIR$2\" \\" >> "/$PREFIX/$INSTANCE_NAME.umount.sh"
echo "|| (echo \"next try after 10 seconds\" && sleep 10 && umount -f \"$IMAGE_MOUNT_DIR$2\") \\" >> "/$PREFIX/$INSTANCE_NAME.umount.sh"
echo "|| (echo \"final try after 10 seconds\" && sleep 10 && umount -f \"$IMAGE_MOUNT_DIR$2\")" >> "/$PREFIX/$INSTANCE_NAME.umount.sh"
sudo mkdir -p "$IMAGE_MOUNT_DIR/root$2"
sudo mount --bind "$1" "$IMAGE_MOUNT_DIR/root$2"
echo "umount \"$IMAGE_MOUNT_DIR/root$2\" \\" >> "/$PREFIX/$INSTANCE_NAME.umount.sh"
echo "|| (echo \"next try after 10 seconds\" && sleep 10 && umount -f \"$IMAGE_MOUNT_DIR/root$2\") \\" >> "/$PREFIX/$INSTANCE_NAME.umount.sh"
echo "|| (echo \"final try after 10 seconds\" && sleep 10 && umount -f \"$IMAGE_MOUNT_DIR/root$2\")" >> "/$PREFIX/$INSTANCE_NAME.umount.sh"
}

image_mount() {
Expand All @@ -38,20 +38,23 @@ image_mount() {
fi

local IMAGE_NAME="$(echo $1 | tr "/:" "_")"
local IMAGE_FILE="$BASE_DIR/image/$IMAGE_NAME.tgz"
local IMAGE_FILE="$BASE_DIR/image/$IMAGE_NAME.zip"

echo "Unpack image: $1"
echo "Prepare image: $1"
IMAGE_MOUNT_DIR="/$PREFIX/$INSTANCE_NAME"
mkdir -p "$IMAGE_MOUNT_DIR"
cd "$IMAGE_MOUNT_DIR"
sudo tar -xzf $IMAGE_FILE
cd "$OLDDIR"
mkdir -p "$IMAGE_MOUNT_DIR/zip"
mkdir -p "$IMAGE_MOUNT_DIR/work"
mkdir -p "$IMAGE_MOUNT_DIR/root"

echo "Add -.chroot.sh file"
sudo mv "/$PREFIX/$INSTANCE_NAME.chroot.sh" "$IMAGE_MOUNT_DIR"
sudo chmod a+x "$IMAGE_MOUNT_DIR/$INSTANCE_NAME.chroot.sh"

set -- "${@:2}"
sudo mv "/$PREFIX/$INSTANCE_NAME.chroot.sh" "$IMAGE_MOUNT_DIR/work/"
sudo chmod a+x "$IMAGE_MOUNT_DIR/work/$INSTANCE_NAME.chroot.sh"

echo "Mount root"
sudo fuse-zip -o ro "$IMAGE_FILE" "$IMAGE_MOUNT_DIR/zip"
sudo mount -wt aufs -o br=$IMAGE_MOUNT_DIR/work:$IMAGE_MOUNT_DIR/zip -o udba=none /dev/null $IMAGE_MOUNT_DIR/root/

set -- "${@:2}"
echo "Mount subs: $@"
echo "#!/bin/sh" > "/$PREFIX/$INSTANCE_NAME.umount.sh"
echo "" >> "/$PREFIX/$INSTANCE_NAME.umount.sh"
Expand All @@ -69,7 +72,8 @@ image_mount() {
done

echo "Add /etc/resolv.conf"
sudo mkdir -p $IMAGE_MOUNT_DIR/etc && cp /etc/resolv.conf $IMAGE_MOUNT_DIR/etc
sudo cp /etc/resolv.conf $IMAGE_MOUNT_DIR/root/
sudo mkdir -p $IMAGE_MOUNT_DIR/root/etc && sudo cp /etc/resolv.conf $IMAGE_MOUNT_DIR/root/etc/
}

image_unmount() {
Expand All @@ -85,22 +89,26 @@ image_unmount() {
sudo rm -f "/$PREFIX/$INSTANCE_NAME.umount.sh"

echo "Remove -.chroot.sh file"
sudo rm -f "$IMAGE_MOUNT_DIR/$INSTANCE_NAME.chroot.sh"
sudo rm -f "$IMAGE_MOUNT_DIR/root/$INSTANCE_NAME.chroot.sh"

if [ ! -z $1 ]; then
echo "Save image: $1"

local IMAGE_NAME="$(echo $1 | tr "/:" "_")"
local IMAGE_FILE="$BASE_DIR/image/$IMAGE_NAME.tgz"
local IMAGE_FILE="$BASE_DIR/image/$IMAGE_NAME.zip"
local IMAGE_DIR=`dirname "$IMAGE_FILE"`
mkdir -p "$IMAGE_DIR"

cd "$IMAGE_MOUNT_DIR"
sudo tar -czf $IMAGE_FILE .
cd "$IMAGE_MOUNT_DIR/root"
sudo rm "$IMAGE_FILE"
sudo zip "$IMAGE_FILE" -qyr0 .
cd "$OLDDIR"
fi

echo "Remove unpacked image"

sudo umount "$IMAGE_MOUNT_DIR/root" || (sleep 10 && umount -f "$IMAGE_MOUNT_DIR/root")
sudo fusermount -u "$IMAGE_MOUNT_DIR/zip"

echo "Remove mount dirs"
sudo rm -rf --one-file-system "$IMAGE_MOUNT_DIR"
IMAGE_MOUNT_DIR=
}
Expand All @@ -113,7 +121,7 @@ image_command() {
return 1
fi

if ! env -i /usr/bin/sudo -i chroot "$IMAGE_MOUNT_DIR" "/$INSTANCE_NAME.chroot.sh" $@; then
if ! env -i /usr/bin/sudo -i chroot "$IMAGE_MOUNT_DIR/root" "/$INSTANCE_NAME.chroot.sh" $@; then
COMMAND_ERROR=1
echo "Command returned with error"
fi
Expand All @@ -122,8 +130,8 @@ image_command() {
image_copy() {
echo "Copy into image: $1 $2"

if ! cp "$1" "$IMAGE_MOUNT_DIR/$2"; then
echo "Cannot copy \"$1\" -> \"$IMAGE_MOUNT_DIR/$2\""
if ! cp "$1" "$IMAGE_MOUNT_DIR/root/$2"; then
echo "Cannot copy \"$1\" -> \"$IMAGE_MOUNT_DIR/root/$2\""
return 1
fi
}
Expand Down Expand Up @@ -155,7 +163,7 @@ import() {


local IMAGE_NAME="$(echo $2 | tr "/:" "_")"
local IMAGE_FILE="$BASE_DIR/image/$IMAGE_NAME.tgz"
local IMAGE_FILE="$BASE_DIR/image/$IMAGE_NAME.zip"
local IMAGE_DIR=`dirname "$IMAGE_FILE"`
mkdir -p "$IMAGE_DIR"
cat "/dev/stdin" > $IMAGE_FILE
Expand Down Expand Up @@ -212,13 +220,13 @@ build() {
return 1
fi

local DOCKERFILE="$WORK_DIR/Dockerfile"
if [ ! -f "$DOCKERFILE" ]; then
echo "Dockerfile not found at: $DOCKERFILE"
local BUILDFILE="$WORK_DIR/Buildfile"
if [ ! -f "$BUILDFILE" ]; then
echo "Buildfile not found at: $BUILDFILE"
return 1
fi

echo "Read $DOCKERFILE"
echo "Read $BUILDFILE"
FULLROW=
while read ROW; do
FULLROW="$FULLROW$ROW"
Expand All @@ -242,7 +250,7 @@ build() {
IMAGE_NAME=""
break
fi
done < "$DOCKERFILE"
done < "$BUILDFILE"

image_unmount "$IMAGE_NAME"
}
Expand Down
6 changes: 3 additions & 3 deletions config.sh.blank
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# PACKET_BUILD_DIR=/data/builder
# PROXY=http://1.2.3.4:1234
# DOCKER_BUILD_OPTIONS="--build-arg=http_proxy=$PROXY --build-arg=https_proxy=$PROXY"
# DOCKER_RUN_OPTIONS="-e http_proxy=$PROXY -e https_proxy=$PROXY"
# CHROOTER_BUILD_OPTIONS="--build-arg=http_proxy=$PROXY --build-arg=https_proxy=$PROXY"
# CHROOTER_RUN_OPTIONS="-e http_proxy=$PROXY -e https_proxy=$PROXY"

# docker() {
# chrooter() {
# export CHROOTER_PREFIX="/mnt"
# $BASE_DIR/chrooter/chrooter.sh $@
# }
Expand Down
1 change: 0 additions & 1 deletion docker/debian-7-32bit/.gitignore

This file was deleted.

1 change: 0 additions & 1 deletion docker/debian-7-64bit/.gitignore

This file was deleted.

File renamed without changes.
1 change: 1 addition & 0 deletions env/debian-7-32bit/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/debian-wheezy-i386.zip
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ set -e

arch=i386
suite=wheezy
docker_image="morevnaproject/debian-$arch:$suite"
chrooter_image="morevnaproject/debian-$arch:$suite"

SCRIPT_DIR=$(cd `dirname "$0"`; pwd)
BASE_DIR=`dirname "$SCRIPT_DIR"`
Expand All @@ -14,15 +14,15 @@ if [ -f $CONFIG_FILE ]; then
source $CONFIG_FILE
fi

IMAGE_FILE="$SCRIPT_DIR/debian-$suite-$arch.tar.gz"
IMAGE_FILE="$SCRIPT_DIR/debian-$suite-$arch.zip"
if [ ! -f "$IMAGE_FILE" ]; then
"$SCRIPT_DIR/build-tgz.sh"
"$SCRIPT_DIR/build-zip.sh"
fi


if [ -f "$IMAGE_FILE" ]; then
docker import - $docker_image < "$IMAGE_FILE"
chrooter import - $chrooter_image < "$IMAGE_FILE"
else
echo "File $IMAGE_FILE not found"
echo "You may try to create it by command $SCRIPT_DIR/build-tgz.sh"
echo "You may try to create it by command $SCRIPT_DIR/build-zip.sh"
fi
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ set -e
arch=i386
suite=wheezy
chroot_dir="/var/chroot/$suite"
apt_mirror="ftp://ftp.debian.org/debian/"
apt_mirror="http://ftp.de.debian.org/debian/"

SCRIPT_DIR=$(cd `dirname "$0"`; pwd)
BASE_DIR=`dirname "$SCRIPT_DIR"`
Expand All @@ -30,5 +30,8 @@ chroot $chroot_dir apt-get autoclean
chroot $chroot_dir apt-get clean
chroot $chroot_dir apt-get autoremove

tar cfz "$SCRIPT_DIR/debian-$suite-$arch.tar.gz" -C $chroot_dir .
pushd $chroot_dir
zip "$SCRIPT_DIR/debian-$suite-$arch.zip" -qyr0 . || true # zip cannot process some files from /dev
popd

rm -rf $chroot_dir
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,4 @@ if [ -f $CONFIG_FILE ]; then
fi
mkdir -p $PACKET_BUILD_DIR

if [[ "$(docker images -q morevnaproject/debian-i386:wheezy 2> /dev/null)" == "" ]]; then
bash ${SCRIPT_DIR}/build-base.sh
fi

docker build -t morevnaproject/build-debian-7-32 $DOCKER_BUILD_OPTIONS "$SCRIPT_DIR"
chrooter build -t morevnaproject/build-debian-7-32 $CHROOTER_BUILD_OPTIONS "$SCRIPT_DIR"
File renamed without changes.
File renamed without changes.
10 changes: 5 additions & 5 deletions docker/debian-7-32bit/run.sh → env/debian-7-32bit/run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
SCRIPT_DIR=$(cd `dirname "$0"`; pwd)
BASE_DIR=`dirname "$SCRIPT_DIR"`
BASE_DIR=`dirname "$BASE_DIR"`
DATA_DIR="$BASE_DIR/docker-builder-data"
DATA_DIR="$BASE_DIR/env-builder-data"
BUILD_DIR=$DATA_DIR/build
CONFIG_FILE="$BASE_DIR/config.sh"
PACKET_BUILD_DIR="$BUILD_DIR/packet"
Expand All @@ -26,12 +26,12 @@ if [ -z "$TASK" ]; then
fi
export INSTANCE=$TASK-$PLATFORM$ARCH

docker stop "$INSTANCE" || true
docker rm "$INSTANCE" || true
docker run -it \
chrooter stop "$INSTANCE" || true
chrooter rm "$INSTANCE" || true
chrooter run -it \
--name "$INSTANCE" \
--privileged=true \
$DOCKER_RUN_OPTIONS \
$CHROOTER_RUN_OPTIONS \
-v "$PACKET_BUILD_DIR:/build/packet" \
-v "$SCRIPT_BUILD_DIR:/build/script" \
-e NATIVE_PLATFORM="$NATIVE_PLATFORM" \
Expand Down
1 change: 1 addition & 0 deletions env/debian-7-64bit/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/debian-wheezy-amd64.zip
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ set -e

arch=amd64
suite=wheezy
docker_image="debian:7"
chrooter_image="debian:7"

SCRIPT_DIR=$(cd `dirname "$0"`; pwd)
BASE_DIR=`dirname "$SCRIPT_DIR"`
Expand All @@ -14,15 +14,15 @@ if [ -f $CONFIG_FILE ]; then
source $CONFIG_FILE
fi

IMAGE_FILE="$SCRIPT_DIR/debian-$suite-$arch.tar.gz"
IMAGE_FILE="$SCRIPT_DIR/debian-$suite-$arch.zip"
if [ ! -f "$IMAGE_FILE" ]; then
"$SCRIPT_DIR/build-tgz.sh"
"$SCRIPT_DIR/build-zip.sh"
fi


if [ -f "$IMAGE_FILE" ]; then
docker import - $docker_image < "$IMAGE_FILE"
chrooter import - $chrooter_image < "$IMAGE_FILE"
else
echo "File $IMAGE_FILE not found"
echo "You may try to create it by command $SCRIPT_DIR/build-tgz.sh"
echo "You may try to create it by command $SCRIPT_DIR/build-zip.sh"
fi
Loading

0 comments on commit a1747ce

Please sign in to comment.