From d9d65ffcc9506b1ed4aa2f23a11ee4a3751168ed Mon Sep 17 00:00:00 2001 From: Matt McCormick Date: Wed, 16 Nov 2016 19:02:55 -0800 Subject: [PATCH 1/2] dockcross: Add support for Windows Tested on Git Bash and Bash on Ubuntu for Windows. There are some issue with building the Docker image itself, but using the images works great. --- Makefile | 4 ++-- imagefiles/dockcross | 23 ++++++++++++++++++++--- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 9827b5d..e3d7d89 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ DOCKER = docker ORG = dockcross # Directory where to generate the dockcross script for each images (e.g bin/dockcross-manylinux-x64) -BIN = bin +BIN = ./bin # These images are built using the "build implicit rule" STANDARD_IMAGES = android-arm linux-x86 linux-x64 linux-arm64 linux-armv5 linux-armv6 linux-armv7 linux-ppc64le windows-x86 windows-x64 @@ -95,7 +95,7 @@ manylinux-x86.test: manylinux-x86 Dockerfile: Dockerfile.in common.docker sed '/common.docker/ r common.docker' Dockerfile.in > Dockerfile -base: Dockerfile +base: Dockerfile imagefiles/ $(DOCKER) build -t $(ORG)/base \ --build-arg IMAGE=$(ORG)/base \ --build-arg VCS_REF=`git rev-parse --short HEAD` \ diff --git a/imagefiles/dockcross b/imagefiles/dockcross index c279863..827a670 100755 --- a/imagefiles/dockcross +++ b/imagefiles/dockcross @@ -171,18 +171,35 @@ fi # Set the docker run extra args (if any) FINAL_ARGS=${ARG_ARGS-${DOCKCROSS_ARGS}} -# If we are not running via boot2docker -if [ -z $DOCKER_HOST ]; then +# Bash on Ubuntu on Windows +UBUNTU_ON_WINDOWS=$(grep -l Microsoft /proc/version) +# MSYS, Git Bash, etc. +MSYS=$(grep -l MINGW /proc/version) + +if [ -z "$UBUNTU_ON_WINDOWS" -a -z "$MSYS" ]; then USER_IDS="-e BUILDER_UID=$( id -u ) -e BUILDER_GID=$( id -g ) -e BUILDER_USER=$( id -un ) -e BUILDER_GROUP=$( id -gn )" fi +# Change the PWD when working in Docker on Windows +if [ -n "$UBUNTU_ON_WINDOWS" ]; then + HOST_PWD=$PWD + HOST_PWD=${HOST_PWD/\/mnt\//} + HOST_PWD=${HOST_PWD/\//:\/} +elif [ -n "$MSYS" ]; then + HOST_PWD=$PWD + HOST_PWD=${HOST_PWD/\//} + HOST_PWD=${HOST_PWD/\//:\/} +else + HOST_PWD=$PWD +fi + #------------------------------------------------------------------------------ # Now, finally, run the command in a container # tty -s && TTY_ARGS=-ti || TTY_ARGS= CONTAINER_NAME=dockcross_$RANDOM docker run $TTY_ARGS --name $CONTAINER_NAME \ - -v $PWD:/work \ + -v $HOST_PWD:/work \ $USER_IDS \ $FINAL_ARGS \ $FINAL_IMAGE "$@" From 6b71b08cbd210174c011c29bab9c77dd741cfd54 Mon Sep 17 00:00:00 2001 From: Matt McCormick Date: Wed, 16 Nov 2016 19:08:04 -0800 Subject: [PATCH 2/2] doc: We support Docker for Mac and Docker for Windows No longer support boot2docker on these platforms --- README.rst | 2 +- imagefiles/entrypoint.sh | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/README.rst b/README.rst index fdf9978..108c5b0 100644 --- a/README.rst +++ b/README.rst @@ -16,7 +16,7 @@ Features * Make variables (`CC`, `LD` etc) are set to point to the appropriate tools in the container. * Recent `CMake `_ and ninja are precompiled. Toolchain files configured for CMake. * Current directory is mounted as the container's workdir, ``/work``. -* Works with the `Docker Toolbox `_ on Mac OSX. +* Works with the `Docker for Mac `_ and `Docker for Windows