gecko/testing/docker/build.sh
Dustin J. Mitchell f2fdc716ca Bug 1189892, 1208029: add linux32 support; r=ted.mielczarek
Add new tasks for the "Linux" platform.  These run on the same docker image as
the Linux64 builds, but that image has been modified to contain a bunch of
*.i686 packages required to cross-compile for i686.  Due to yum's propensity
for resolving dependencies without regard to architecture, with this patch the
system-setup.sh script lists both architectures of each file explicitly.

This also leaves `gcc` installed for user convenience in installing Python
extensions, NPM modules, etc.

This also includes 'subversion' for clang builds (bug 1208029)
2015-09-21 17:39:44 -04:00

91 lines
2.0 KiB
Bash
Executable File

#! /bin/bash -e
# This file is a wrapper around docker build with specific concerns around image
# versions and registry deployment... It also attempts to detect any potential
# missing dependencies and warns you about them.
usage() {
echo "Build a docker image in the given folder (and tag it)"
echo
echo "$0 <folder>"
echo
echo " For more see: $PWD/README.md"
echo
}
usage_err() {
echo $1
echo
usage
exit 1
}
find_registry() {
local reg="$1/REGISTRY"
if [ -f $reg ];
then
echo $folder
return
fi
}
build() {
local folder=$1
local folder_reg="$1/REGISTRY"
local folder_ver="$1/VERSION"
if [ "$folder" == "" ];
then
usage
return
fi
test -d "$folder" || usage_err "Unknown folder: $folder"
test -f "$folder_ver" || usage_err "$folder must contain VERSION file"
# Fallback to default registry if one is not in the folder...
if [ ! -f "$folder_reg" ]; then
folder_reg=$PWD/REGISTRY
fi
local registry=$(cat $folder_reg)
local version=$(cat $folder_ver)
test -n "$registry" || usage_err "$folder_reg is empty aborting..."
test -n "$version" || usage_err "$folder_ver is empty aborting..."
local tag="$registry/$folder:$version"
if [ -f $folder/build.sh ]; then
shift
$folder/build.sh -t $tag $* || exit 1
else
# use --no-cache so that we always get the latest updates from yum
# and use the latest version of system-setup.sh
docker build --no-cache -t $tag $folder || exit 1
fi
echo "Success built $folder and tagged with $tag"
echo "If deploying now you can run 'docker push $tag'"
}
if ! which docker > /dev/null; then
echo "Docker must be installed read installation instructions at docker.com"
echo
usage
exit 1
fi
# TODO: In the future we should check minimum docker version it does matter.
if ! docker version > /dev/null;
then
echo "Docker server is unresponsive run 'docker ps' and check that docker is"
echo "running"
echo
usage
exit 1
fi
build $*