1
0
mirror of https://github.com/rancher/os.git synced 2025-09-01 14:48:55 +00:00

Refactor build scripts

This commit is contained in:
Darren Shepherd
2016-05-06 10:12:09 -07:00
parent acc2ee297a
commit ec410addb9
103 changed files with 1310 additions and 632 deletions

5
scripts/build Executable file
View File

@@ -0,0 +1,5 @@
#!/bin/bash
set -e
$(dirname $0)/build-target
$(dirname $0)/build-host

View File

@@ -1,2 +0,0 @@
BUILD=$(pwd)/build
DIST=$(pwd)/dist

12
scripts/build-host Executable file
View File

@@ -0,0 +1,12 @@
#!/bin/bash
cd $(dirname $0)/..
export OUTPUT=bin/host_ros
if [[ -e bin/ros && "$HOST_ARCH" = "$ARCH" ]]; then
echo Creating $OUTPUT
cp bin/ros $OUTPUT
else
GOARCH=${HOST_ARCH} TOOLCHAIN= ./scripts/build-target
fi

38
scripts/build-images Executable file
View File

@@ -0,0 +1,38 @@
#!/bin/bash
set -e
export ARCH=${ARCH:-"amd64"}
BASE=images
source $(dirname $0)/version
cd $(dirname $0)/..
DO_PUSH="$1"
if [ "${DO_PUSH}" == "--push" ]; then
for i in $BASE/[0-9]*; do
name="os-$(echo ${i} | cut -f2 -d-)"
tag="${OS_REPO}/${name}:${VERSION}${SUFFIX}"
echo Pushing ${tag}
docker push ${tag} || :
done
else
for i in $BASE/[0-9]*; do
name="os-$(echo ${i} | cut -f2 -d-)"
tag="${OS_REPO}/${name}:${VERSION}${SUFFIX}"
echo Building ${tag}
if [ -x ${i}/prebuild.sh ]; then
if ${i}/prebuild.sh; then
dapper -d --build -f ${i}/Dockerfile -- -t rancher/${name} ${i}
docker tag rancher/${name} ${tag}
elif [ "$?" != "42" ]; then
exit 1
else
echo "WARN: Skipping ${tag}"
fi
else
dapper -d --build -f ${i}/Dockerfile -- -t rancher/${name} ${i}
docker tag rancher/${name} ${tag}
fi
done
fi

17
scripts/build-target Executable file
View File

@@ -0,0 +1,17 @@
#!/bin/bash
set -e
ros="$1"
source $(dirname $0)/version
cd $(dirname $0)/..
if [ "${!TOOLCHAIN}" != "" ]; then
export CC=/usr/bin/${!TOOLCHAIN}-gcc
export CGO_ENABLED=1
fi
OUTPUT=${OUTPUT:-bin/ros}
echo Building $OUTPUT
go build -tags netgo -installsuffix netgo -ldflags "-X github.com/rancher/os/config.VERSION=${VERSION} -linkmode external -extldflags -static" -o ${OUTPUT}

View File

@@ -1,38 +0,0 @@
#!/bin/bash
set -x -e
cd $(dirname $0)/..
: RANCHER_ISO=${RANCHER_ISO:="./dist/artifacts/rancheros.iso"}
if [[ -z $RANCHER_ISO ]]; then
echo "Need an ISO..." 1>&2
exit 1
fi
if [ ! -e ${RANCHER_ISO} ]; then
echo "Could not find ISO ${RANCHER_ISO}..." 1>&2
echo "have you run build.sh yet?" 1>&2
exit 1
fi
GITSHA=$(git rev-parse --short HEAD)
VM="RancherOS-${GITSHA}"
sudo chown -R `whoami` ./dist
VBoxManage createhd --format vmdk --filename ./dist/artifacts/$VM.vmdk --size 40000
VBoxManage createvm --name $VM --ostype "Linux_64" --register
VBoxManage storagectl $VM --name "SATA" --add sata --portcount 2
VBoxManage storageattach $VM --storagectl "SATA" --port 0 --type hdd --medium ./dist/artifacts/$VM.vmdk
VBoxManage storageattach $VM --storagectl "SATA" --port 1 --type dvddrive --medium ${RANCHER_ISO}
VBoxManage modifyvm $VM --memory 1024 --acpi on --boot1 disk --boot2 dvd
VBoxManage modifyvm $VM --rtcuseutc on
VBoxManage modifyvm $VM --usb off
VBoxManage modifyvm $VM --audio none
VBoxManage modifyvm $VM --nic1 nat
VBoxManage modifyvm $VM --nictype1 virtio
#VBoxManage startvm $VM

View File

@@ -1,7 +1,10 @@
#!/bin/sh
set -ex
#!/bin/bash
set -e
cd $(dirname $0)/..
. ./scripts/dapper-common
cd $(dirname $0)
dapper -d -O make HOST_ARCH=${HOST_ARCH} ARCH=${ARCH} DEV_BUILD=1 test
./build
./test
#./validate
./prepare
./package

4
scripts/clean Executable file
View File

@@ -0,0 +1,4 @@
#!/bin/bash
cd $(dirname $0)/..
rm -rf build dist bin images/*/build

View File

@@ -1,20 +0,0 @@
#!/bin/sh
set -ex
HOST_ARCH=${HOST_ARCH:-$(docker version | grep 'OS/Arch:' | tail -n+2 | awk '{print $2}' | cut -f2 -d'/')}
HOST_ARCH=${HOST_ARCH:?"Failed to guess HOST_ARCH"}
ARCH=${ARCH:-"$HOST_ARCH"}
export HOST_ARCH ARCH
cd $(dirname $0)/..
[ -f "./.docker-env.${HOST_ARCH}" ] && . ./.docker-env.${HOST_ARCH} || echo "WARNING: missing .docker-env.${HOST_ARCH} (to use an ${HOST_ARCH} docker host)"
. ./build.conf.${HOST_ARCH}
export HOST_DOCKER_BINARY_URL=${DOCKER_BINARY_URL}
docker inspect $DAPPER_BASE >/dev/null 2>&1 || docker pull $DAPPER_BASE
docker tag $DAPPER_BASE rancher/os-dapper-base
set -a
. ./build.conf.${ARCH}
set +a

11
scripts/entry Executable file
View File

@@ -0,0 +1,11 @@
#!/bin/bash
set -e
trap "chown -R $DAPPER_UID:$DAPPER_GID ." exit
mkdir -p bin dist build
if [ -e ./scripts/$1 ]; then
./scripts/"$@"
else
"$@"
fi

View File

@@ -1,14 +0,0 @@
#!/bin/bash
set -ex
cd $(dirname $0)/..
set -a
. build.conf
. build.conf.${ARCH}
SUFFIX=""
[ "${ARCH}" == "amd64" ] || SUFFIX="_${ARCH}"
set +a
build/host_ros c generate < os-config.tpl.yml > $1

52
scripts/layout Executable file
View File

@@ -0,0 +1,52 @@
#!/bin/bash
set -e
source $(dirname $0)/version
cd $(dirname $0)/..
BUILD=build
INITRD_DIR=${BUILD}/initrd
echo Create initrd layout in $INITRD_DIR
rm -rf ${INITRD_DIR}
mkdir -p ${INITRD_DIR}/usr/{etc,bin,share/ros}
cp -rf assets/selinux ${INITRD_DIR}/usr/etc
cp build/images.tar ${INITRD_DIR}/usr/share/ros/
cp build/os-config.yml ${INITRD_DIR}/usr/share/ros/
cp bin/ros ${INITRD_DIR}/usr/bin/
cp ${DOWNLOADS}/docker ${INITRD_DIR}/usr/bin/docker
ln -s usr/bin/ros ${INITRD_DIR}/init
ln -s bin ${INITRD_DIR}/usr/sbin
ln -s usr/sbin ${INITRD_DIR}/sbin
if [ -e ${DOWNLOADS}/kernel.tar.gz ]; then
tar xf ${DOWNLOADS}/kernel.tar.gz -C ${INITRD_DIR}/usr/ lib/
fi
if [ -e ${DOWNLOADS}/policy.29 ]; then
mkdir -p ${INITRD_DIR}/usr/etc/selinux/ros/policy/
cp ${DOWNLOADS}/policy.29 ${INITRD_DIR}/usr/etc/selinux/ros/policy/
fi
DFS_ARCH=$(docker create ${DFS_IMAGE}${SUFFIX})
trap "docker rm -fv ${DFS_ARCH} >/dev/null" EXIT
docker export ${DFS_ARCH} | tar xf - -C ${INITRD_DIR} --exclude=usr/bin/dockerlaunch \
--exclude=usr/bin/docker \
--exclude=usr/share/git-core \
--exclude=usr/bin/git \
--exclude=usr/bin/ssh \
--exclude=usr/libexec/git-core \
usr
tar xf ${DOWNLOADS}/kernel.tar.gz -C ${BUILD} boot/
if [ -e ${BUILD}/boot/vmlinuz-* ]; then
mkdir -p dist/artifacts
cp ${BUILD}/boot/vmlinuz-* dist/artifacts/vmlinuz
fi
cat /proc/sys/kernel/random/uuid > ${INITRD_DIR}/.id

View File

@@ -1,7 +0,0 @@
#!/bin/bash
set -e
cd $(dirname $0)/..
. ./scripts/dapper-common
dapper make HOST_ARCH=${HOST_ARCH} ARCH=${ARCH} "$@"

View File

@@ -1,12 +0,0 @@
#!/bin/bash
set -ex
cd $(dirname $0)/..
. scripts/build-common
images="$(build/host_ros c images -i build/os-config.yml)"
for i in ${images}; do
[ "${FORCE_PULL}" != "1" ] && docker inspect $i >/dev/null 2>&1 || docker pull $i;
done
docker save ${images} > ${BUILD}/images.tar

View File

@@ -1,73 +0,0 @@
#!/bin/bash
set -ex
TARGET=$(pwd)/${1}
SUFFIX=${SUFFIX:-""}
DFS_IMAGE=${DFS_IMAGE:?"DFS_IMAGE not set"}
IS_ROOTFS=${IS_ROOTFS:-0}
cd $(dirname $0)/..
. scripts/build-common
INITRD_DIR=${BUILD}/initrd
rm -rf ${INITRD_DIR}/{usr,init}
mkdir -p ${INITRD_DIR}/usr/{bin,share/ros}
mkdir -p ${INITRD_DIR}/var/lib/system-docker
mkdir -p ${INITRD_DIR}/usr/etc/selinux/ros/{policy,contexts}
if [ "$IS_ROOTFS" == "0" ]; then
cp -rf ${BUILD}/kernel/lib ${INITRD_DIR}/usr/
fi
cp assets/docker ${INITRD_DIR}/usr/bin/docker
if [ "$IS_ROOTFS" == "0" ]; then
cp ${BUILD}/images.tar ${INITRD_DIR}/usr/share/ros/
fi
cp build/os-config.yml ${INITRD_DIR}/usr/share/ros/
cp bin/ros ${INITRD_DIR}/usr/bin/
ln -s usr/bin/ros ${INITRD_DIR}/init
ln -s bin ${INITRD_DIR}/usr/sbin
ln -s usr/sbin ${INITRD_DIR}/sbin
cp assets/selinux/config ${INITRD_DIR}/usr/etc/selinux/
cp assets/selinux/policy.29 ${INITRD_DIR}/usr/etc/selinux/ros/policy/
cp assets/selinux/seusers ${INITRD_DIR}/usr/etc/selinux/ros/
cp assets/selinux/lxc_contexts ${INITRD_DIR}/usr/etc/selinux/ros/contexts/
cp assets/selinux/failsafe_context ${INITRD_DIR}/usr/etc/selinux/ros/contexts/
if [ "$ARCH" == "amd64" ]; then
KERNEL_RELEASE=$(tar xvf assets/modules.tar.gz -C ${INITRD_DIR} | cut -f4 -d/ | cut -f1 -d ' ')
depmod -a -b ${INITRD_DIR}/usr $KERNEL_RELEASE
fi
DFS_ARCH=$(docker create ${DFS_IMAGE}${SUFFIX})
trap "docker rm -fv ${DFS_ARCH}" EXIT
docker export ${DFS_ARCH} | tar xvf - -C ${INITRD_DIR} --exclude=usr/bin/dockerlaunch \
--exclude=usr/bin/docker \
--exclude=usr/share/git-core \
--exclude=usr/bin/git \
--exclude=usr/bin/ssh \
--exclude=usr/libexec/git-core \
usr
if [ "$IS_ROOTFS" == "1" ]; then
DFS=$(docker run -d --privileged -v /lib/modules/$(uname -r):/lib/modules/$(uname -r) ${DFS_IMAGE}${SUFFIX})
trap "docker rm -fv ${DFS_ARCH} ${DFS}" EXIT
docker exec -i ${DFS} docker load < ${BUILD}/images.tar
docker stop ${DFS}
docker run --rm --volumes-from=${DFS} rancher/os-dapper-base tar -c -C /var/lib/docker ./image | tar -x -C ${INITRD_DIR}/var/lib/system-docker
docker run --rm --volumes-from=${DFS} rancher/os-dapper-base tar -c -C /var/lib/docker ./overlay | tar -x -C ${INITRD_DIR}/var/lib/system-docker
cd ${INITRD_DIR}
tar -czf ${TARGET} .
else
COMPRESS=lzma
[ "$DEV_BUILD" == "1" ] && COMPRESS="gzip -1"
cd ${INITRD_DIR}
find | cpio -H newc -o | ${COMPRESS} > ${TARGET}
fi

View File

@@ -1,12 +0,0 @@
#!/bin/bash
set -ex
cd $(dirname $0)/..
. scripts/build-common
cd ${DIST}/artifacts
rm -f iso-checksums.txt || :
for algo in 'sha256' 'md5'; do
echo "$algo: `${algo}sum rancheros.iso`" >> iso-checksums.txt;
done

View File

@@ -1,44 +0,0 @@
#!/bin/bash
set -e -x
# This script will convert an Ubuntu deb file to the kernel tar structure the RancherOS build expects
# For example
#
# ./scripts/mk-kernel-tar-from-deb.sh linux-image-3.19.0-28-generic_3.19.0-28.30_amd64.deb linux-image-extra-3.19.0-28-generic_3.19.0-28.30_amd64.deb linux-firmware_1.143.3_all.deb
#
mkdir -p $(dirname $0)/../build
BUILD=$(mktemp -d $(dirname $0)/../build/deb-XXXXX)
mkdir -p $BUILD
extract()
{
if [ ! -e $1 ]; then
echo $1 does not exist
exit 1
fi
local deb=$(readlink -f $1)
cd $BUILD
rm -f data.tar.* 2>/dev/null || true
ar x $deb
tar xvf data.tar.*
cd -
}
for i in "$@"; do
extract $i
done
cd $BUILD
KVER=$(ls ./lib/modules)
depmod -b . $KVER
echo Creating ${OLDPWD}/kernel.tar.gz
tar cvzf ${OLDPWD}/kernel.tar.gz ./lib boot/vmlinuz*
echo Created ${OLDPWD}/kernel.tar.gz
cd -
rm -rf ${BUILD}

View File

@@ -1,19 +0,0 @@
#!/bin/bash
set -ex
ros="$1"
ARCH=${ARCH:?"ARCH not set"}
VERSION=${VERSION:?"VERSION not set"}
cd $(dirname $0)/..
strip_bin=$(which strip)
[ "${ARCH}" == "arm" ] && export GOARM=6
if [ "${TOOLCHAIN}" != "" ]; then
export CC=/usr/bin/${TOOLCHAIN}-gcc
export CGO_ENABLED=1
strip_bin=/usr/bin/${TOOLCHAIN}-strip
fi
GOARCH=${ARCH} go build -tags netgo -installsuffix netgo -ldflags "-X github.com/rancher/os/config.VERSION=${VERSION} -linkmode external -extldflags -static" -o ${ros}
${strip_bin} --strip-all ${ros}

8
scripts/package Executable file
View File

@@ -0,0 +1,8 @@
#!/bin/bash
set -e
cd $(dirname $0)
./package-rootfs
./package-initrd
./package-iso

41
scripts/package-initrd Executable file
View File

@@ -0,0 +1,41 @@
#!/bin/bash
set -e
rootfs() {
DFS=$(docker run -d --privileged -v /lib/modules/$(uname -r):/lib/modules/$(uname -r) ${DFS_IMAGE}${SUFFIX})
trap "docker rm -fv ${DFS_ARCH} ${DFS}" EXIT
docker exec -i ${DFS} docker load < ${INITRD_DIR}/usr/share/ros/images.tar
docker stop ${DFS}
docker run --rm --volumes-from=${DFS} rancher/os-dapper-base tar -c -C /var/lib/docker ./image | tar -x -C ${PREPOP_DIR}
docker run --rm --volumes-from=${DFS} rancher/os-dapper-base tar -c -C /var/lib/docker ./overlay | tar -x -C ${PREPOP_DIR}
tar -cf ${ARTIFACTS}/rootfs.tar --exclude lib/modules --exclude lib/firmware -C ${INITRD_DIR} .
tar -rf ${ARTIFACTS}/rootfs.tar --exclude lib/modules --exclude lib/firmware -C ${INITRD_DIR} .
rm -f ${ARTIFACTS}/rootfs.tar.gz
gzip ${ARTIFACTS}/rootfs.tar
}
initrd() {
COMPRESS=lzma
[ "$DEV_BUILD" == "1" ] && COMPRESS="gzip -1"
pushd ${INITRD_DIR} >/dev/null
find | cpio -H newc -o | ${COMPRESS} > ${INITRD}
popd >/dev/null
}
cd $(dirname $0)/..
BUILD=$(pwd)/build
IMAGE_CACHE=${BUILD}/image-cache
PREPOP_DIR=${IMAGE_CACHE}/var/lib/system-docker
INITRD_DIR=${BUILD}/initrd
ARTIFACTS=$(pwd)/dist/artifacts
INITRD=${ARTIFACTS}/initrd
mkdir -p ${ARTIFACTS} ${PREPOP_DIR}
rootfs
initrd

View File

@@ -1,23 +1,24 @@
#!/bin/bash
set -ex
set -e
source $(dirname $0)/version
cd $(dirname $0)/..
. scripts/build-common
ARTIFACTS=$(pwd)/dist/artifacts
CD=${BUILD}/cd
mkdir -p ${CD}/boot/isolinux
mkdir -p ${CD}/boot/isolinux
cp ${DIST}/artifacts/initrd ${CD}/boot
cp ${DIST}/artifacts/vmlinuz ${CD}/boot
cp ${ARTIFACTS}/initrd ${CD}/boot
cp ${ARTIFACTS}/vmlinuz ${CD}/boot
cp scripts/isolinux.cfg ${CD}/boot/isolinux
cp /usr/lib/ISOLINUX/isolinux.bin ${CD}/boot/isolinux
cp /usr/lib/syslinux/modules/bios/ldlinux.c32 ${CD}/boot/isolinux
cd ${CD} && xorriso \
-publisher "Rancher Labs, Inc." \
-as mkisofs \
-l -J -R -V "RancherOS" \
-l -J -R -V "${DISTRIB_ID}" \
-no-emul-boot -boot-load-size 4 -boot-info-table \
-b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat \
-isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin \
-o ${DIST}/artifacts/rancheros.iso ${CD}
-o ${ARTIFACTS}/$(echo ${DISTRIB_ID} | tr '[:upper:]' '[:lower:]').iso ${CD}

41
scripts/package-rootfs Executable file
View File

@@ -0,0 +1,41 @@
#!/bin/bash
set -e
rootfs() {
DFS=$(docker run -d --privileged -v /lib/modules/$(uname -r):/lib/modules/$(uname -r) ${DFS_IMAGE}${SUFFIX})
trap "docker rm -fv ${DFS_ARCH} ${DFS}" EXIT
docker exec -i ${DFS} docker load < ${INITRD_DIR}/usr/share/ros/images.tar
docker stop ${DFS}
docker run --rm --volumes-from=${DFS} rancher/os-dapper-base tar -c -C /var/lib/docker ./image | tar -x -C ${PREPOP_DIR}
docker run --rm --volumes-from=${DFS} rancher/os-dapper-base tar -c -C /var/lib/docker ./overlay | tar -x -C ${PREPOP_DIR}
tar -cf ${ARTIFACTS}/rootfs.tar --exclude lib/modules --exclude lib/firmware -C ${INITRD_DIR} .
tar -rf ${ARTIFACTS}/rootfs.tar --exclude lib/modules --exclude lib/firmware -C ${INITRD_DIR} .
rm -f ${ARTIFACTS}/rootfs.tar.gz
gzip ${ARTIFACTS}/rootfs.tar
}
initrd() {
COMPRESS=lzma
[ "$DEV_BUILD" == "1" ] && COMPRESS="gzip -1"
pushd ${INITRD_DIR} >/dev/null
find | cpio -H newc -o | ${COMPRESS} > ${INITRD}
popd >/dev/null
}
cd $(dirname $0)/..
BUILD=$(pwd)/build
IMAGE_CACHE=${BUILD}/image-cache
PREPOP_DIR=${IMAGE_CACHE}/var/lib/system-docker
INITRD_DIR=${BUILD}/initrd
ARTIFACTS=$(pwd)/dist/artifacts
INITRD=${ARTIFACTS}/initrd
mkdir -p ${ARTIFACTS} ${PREPOP_DIR}
rootfs
initrd

15
scripts/prepare Executable file
View File

@@ -0,0 +1,15 @@
#!/bin/bash
set -e
source $(dirname $0)/version
cd $(dirname $0)
if [ ! -e ./bin/host_ros ]; then
./build
fi
./template
./build-images
./tar-images
./layout

3
scripts/release Executable file
View File

@@ -0,0 +1,3 @@
#!/bin/bash
exec $(dirname $0)/ci

View File

@@ -3,8 +3,6 @@ set -e
cd $(dirname $0)/..
source scripts/build-common
HOST_ARCH=${HOST_ARCH:-amd64}
ARCH=${ARCH:-amd64}
@@ -34,11 +32,13 @@ cd_arm() {
}
declare -A cd=( ["amd64"]="cd_amd64" ["arm"]="cd_arm" ["arm64"]="cd_arm" )
BUILD=build
BASE=$(pwd)
UNAME=$(uname)
KERNEL=${BASE}/dist/artifacts/vmlinuz
INITRD=${BASE}/dist/artifacts/initrd
INITRD_SRC=${BASE}/build/initrd
INITRD=${BASE}/build/initrd.tmp
QEMU=1
FORMAT=1
@@ -103,42 +103,17 @@ if [ "$QEMU" == "1" ] && ! which qemu-system-${QEMUARCH}; then
QEMU=0
fi
if [[ ! -e ${KERNEL} || ! -e ${INITRD} ]]; then
echo "Failed to find ${KERNEL} or ${INITRD}" 1>&2
if [[ ! -e ${KERNEL} || ! -e ${INITRD_SRC} ]]; then
echo "Failed to find ${KERNEL} or ${INITRD_SRC}" 1>&2
exit 1
fi
# Linux and Darwin SHA1 sum binary are different, pick which to use
if [ "$UNAME" == "Darwin" ]; then sha1sum=$(which shasum)
elif [ "$UNAME" == "Linux" ]; then sha1sum=$(which sha1sum);
fi
if [ "$REBUILD" == "1" ]; then
INITRD_TMP=${BUILD}/$(${sha1sum} ${INITRD} | awk '{print $1}')
INITRD_CURRENT=${BUILD}/initrd-current
INITRD_TEST=${BUILD}/initrd.test
if [ ! -d ${INITRD_TMP} ]; then
mkdir -p ${INITRD_TMP}
pushd ${INITRD_TMP}
xz -dfc ${INITRD} | gunzip -f | cpio -idm
popd
fi
if [ -e ${INITRD_CURRENT} ]; then
rm -f ${INITRD_CURRENT}
fi
ln -s ${INITRD_TMP} ${INITRD_CURRENT}
mkdir -p ${INITRD_TMP}/usr/{bin,share/ros}
cp bin/ros ${INITRD_TMP}/usr/bin/
cp -f build/os-config.yml ${INITRD_TMP}/usr/share/ros/
pushd ${INITRD_TMP}
find . | cpio -H newc -o | gzip > ${INITRD_TEST}
popd
INITRD=${INITRD_TEST}
cp bin/ros ${INITRD_SRC}/usr/bin/ros
cp build/os-config.yml ${INITRD_SRC}/usr/share/ros
pushd ${INITRD_SRC} >/dev/null
find . | cpio -H newc -o | gzip -1 > ${INITRD}
popd >/dev/null
fi
KERNEL_ARGS="quiet rancher.password=rancher console=${TTYCONS} ${QEMU_APPEND}"
@@ -162,17 +137,9 @@ if [ "$QEMU" == "1" ]; then
qemu-img create -f qcow2 -o size=10G ${HD}
fi
CCIMG=${BUILD}/cc.img
CCDEV=$(losetup -f)
CCROOT=${BUILD}/cloud-config
dd if=/dev/zero of=${CCIMG} bs=1024 count=512
losetup ${CCDEV} ${CCIMG}
mkfs.vfat -n "config-2" ${CCDEV}
rm -rf ${CCROOT}
mkdir -p ${CCROOT}
mount ${CCDEV} ${CCROOT}
USER_DATA=${CCROOT}/openstack/latest/user_data
mkdir -p $(dirname ${USER_DATA})
@@ -185,10 +152,6 @@ if [ "$QEMU" == "1" ]; then
echo "- $(<${BASE}/assets/rancher.key.pub)" >> ${USER_DATA}
fi
umount ${CCROOT}
losetup -d ${CCDEV}
CPU=${cpu["$ARCH"]}
if [ "$KVM" == "1" ] && [ "$ARCH" == "$HOST_ARCH" ]; then
KVM_ENABLE="-enable-kvm"
@@ -204,12 +167,15 @@ if [ "$QEMU" == "1" ]; then
-initrd ${INITRD} \
-m 2048 \
${network["$ARCH"]} \
$(eval "${cd["$ARCH"]} ${CCIMG}") \
$(eval "${hd["$ARCH"]} ${HD}") \
-smp 1 \
-append "${KERNEL_ARGS}" \
-nographic \
-display none \
-fsdev local,security_model=passthrough,readonly,id=fsdev0,path=${CCROOT} \
-device virtio-9p-pci,id=fs0,fsdev=fsdev0,mount_tag=config-2 \
-fsdev local,security_model=none,id=fsdev1,path=${HOME} \
-device virtio-9p-pci,id=fs1,fsdev=fsdev1,mount_tag=home \
${QEMU_ARGS} \
"${@}"

View File

@@ -1,7 +0,0 @@
#!/bin/bash
set -e
cd $(dirname $0)/..
. ./scripts/dapper-common
exec dapper -d -s

15
scripts/tar-images Executable file
View File

@@ -0,0 +1,15 @@
#!/bin/bash
set -e
cd $(dirname $0)/..
mkdir -p build
IMAGES=$(bin/host_ros c images -i build/os-config.yml)
for i in $IMAGES; do
if [ "${FORCE_PULL}" = "1" ] || ! docker inspect $i >/dev/null 2>&1; then
docker pull $i
fi
done
docker save ${IMAGES} > build/images.tar

9
scripts/template Executable file
View File

@@ -0,0 +1,9 @@
#!/bin/bash
set -e
source $(dirname $0)/version
cd $(dirname $0)/..
mkdir -p build
./bin/host_ros c generate < os-config.tpl.yml > build/os-config.yml

View File

@@ -1,17 +1,10 @@
#!/bin/bash
set -e
if [[ ! -x "$(which go)" && -x /usr/local/go/bin/go ]]; then
PATH=/usr/local/go/bin:${PATH}
fi
cd $(dirname $0)/..
result=$(find . -name "*.go" | grep -v ./Godeps | xargs gofmt -l)
for i in $result; do
echo $i
done
echo Running tests
[ -n "$result" ] && exit 1
PACKAGES=". $(find -name '*.go' | xargs -I{} dirname {} | cut -f2 -d/ | sort -u | grep -Ev '(^\.$|.git|.trash-cache|vendor|bin)' | sed -e 's!^!./!' -e 's!$!/...!')"
echo OK
go test -race -cover -tags=test ${PACKAGES}

View File

@@ -1,8 +0,0 @@
#!/bin/bash
set -e
cd $(dirname $0)/..
PACKAGES="$(find -name '*.go' | xargs -I{} dirname {} | cut -f2 -d/ | sort -u | grep -Ev '(^\.$|.git|.trash-cache|vendor)' | sed -e 's!^!./!' -e 's!$!/...!')"
go test -race -cover -tags=test $PACKAGES

20
scripts/validate Executable file
View File

@@ -0,0 +1,20 @@
#!/bin/bash
set -e
cd $(dirname $0)/..
echo Running validation
PACKAGES=". $(find -name '*.go' | xargs -I{} dirname {} | cut -f2 -d/ | sort -u | grep -Ev '(^\.$|.git|.trash-cache|vendor|bin)' | sed -e 's!^!./!' -e 's!$!/...!')"
echo Running: go vet
go vet ${PACKAGES}
echo Running: golint
for i in ${PACKAGES}; do
if [ -n "$(golint $i | grep -v 'should have comment.*or be unexported' | tee /dev/stderr)" ]; then
failed=true
fi
done
test -z "$failed"
echo Running: go fmt
test -z "$(go fmt ${PACKAGES} | tee /dev/stderr)"

View File

@@ -1,55 +0,0 @@
#!/bin/bash
set -e
cd $(dirname $0)/..
package=$(go list)
prefix="${package}/vendor"
require="github.com/stretchr/testify/require" # the only test import
imports=( )
importsLen=${#imports[@]}
collectImports() {
imports=( $(GOOS=linux go list -f '{{join .Deps "\n"}}' | egrep "^${prefix}/" | sed s%"^${package}.*/vendor/"%./vendor/%) )
imports=(
"${imports[@]}" "./vendor/${require}"
$(GOOS=linux go list -f '{{join .Deps "\n"}}' "${prefix}/${require}" | egrep "^${prefix}/" | sed s%"^${package}.*/vendor/"%./vendor/%)
)
echo importsLen: $importsLen
echo collected imports: ${#imports[@]}
}
nonImports() {
while read path; do
skip=0
for i in "${imports[@]}"; do
[[ "${i}" == "${path}" || ${i} = ${path}/* ]] && skip=1 && break
done
[ "$skip" == "0" ] && echo ${path}
done
}
collectImports
while [ ${#imports[@]} != ${importsLen} ]; do
importsLen=${#imports[@]}
echo '=====> Collected imports'
for i in "${imports[@]}"; do
echo ${i}
done
echo '=====> Removing unused packages'
find ./vendor -type d | nonImports | xargs -I{} rm -rf {}
echo '=====> Removing empty dirs'
emptyDirs=( $(find ./vendor -type d -empty) )
while [ ${#emptyDirs[@]} -gt 0 ]; do
rmdir ${emptyDirs[@]}
emptyDirs=( $(find ./vendor -type d -empty) )
done
collectImports
done
echo '=====> Done!'

24
scripts/version Executable file
View File

@@ -0,0 +1,24 @@
#!/bin/bash
if [ -n "$(git status --porcelain --untracked-files=no)" ]; then
DIRTY="-dirty"
fi
COMMIT=$(git rev-parse --short HEAD)
GIT_TAG=$(git tag -l --contains HEAD | head -n 1)
if [ -z "$VERSION" ]; then
if [[ -z "$DIRTY" && -n "$GIT_TAG" ]]; then
VERSION=$GIT_TAG
else
VERSION="${COMMIT}${DIRTY}"
fi
fi
export VERSION COMMIT
# Suffix
export SUFFIX=""
if [ -n "${ARCH}" ] && [ "${ARCH}" != "amd64" ]; then
SUFFIX="_${ARCH}"
fi