dockcross/Makefile

146 lines
4.7 KiB
Makefile
Raw Normal View History

#
# Parameters
#
# Name of the docker executable
DOCKER = docker
# Docker organization to pull the images from
ORG = dockcross
# Directory where to generate the dockcross script for each images (e.g bin/dockcross-manylinux-x64)
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
# These images are expected to have explicit rules for *both* build and testing
NON_STANDARD_IMAGES = browser-asmjs manylinux-x64 manylinux-x86
# This list all available images
Makefile: All images are tested. Remove ALL_IMAGES and DEFAULT_IMAGES vars. To confirm that the Makefiles works as expected after this patch, the list of executed commands before and after has been compared. Before: ``` make --dry-run > ../dockcross-make-baseline make test --dry-run > ../dockcross-make-test-baseline ``` After: ``` make --dry-run > ../dockcross-make-current; make test --dry-run > ../dockcross-make-test-current for target in make make-test; do diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current> /dev/null 2>&1 [[ $? == 1 ]] && \ echo "" && \ echo "-------------------------------" && \ echo "Here is output of:" && \ echo " diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current" && \ echo "" && \ diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current done ``` Output: ``` ------------------------------- Here is output of: diff --ignore-trailing-space ../dockcross-make-baseline ../dockcross-make-current 8a9 > docker build -t dockcross/linux-ppc64le linux-ppc64le 10a12,14 > cp -r test browser-asmjs/ > docker build -t dockcross/browser-asmjs browser-asmjs > rm -rf browser-asmjs/test ------------------------------- Here is output of: diff --ignore-trailing-space ../dockcross-make-test-baseline ../dockcross-make-test-current 24a25,27 > docker build -t dockcross/linux-ppc64le linux-ppc64le > docker run --rm dockcross/linux-ppc64le > bin/dockcross-linux-ppc64le && chmod +x bin/dockcross-linux-ppc64le > bin/dockcross-linux-ppc64le python test/run.py --languages C 30a34,38 > cp -r test browser-asmjs/ > docker build -t dockcross/browser-asmjs browser-asmjs > rm -rf browser-asmjs/test > docker run --rm dockcross/browser-asmjs > bin/dockcross-browser-asmjs && chmod +x bin/dockcross-browser-asmjs > bin/dockcross-browser-asmjs python test/run.py --exe-suffix ".js" ```
2016-09-26 05:28:23 +02:00
IMAGES = $(STANDARD_IMAGES) $(NON_STANDARD_IMAGES)
# Optional arguments for test runner (test/run.py) associated with "testing implicit rule"
linux-ppc64le.test_ARGS = --languages C
windows-x86.test_ARGS = --exe-suffix ".exe"
windows-x64.test_ARGS = --exe-suffix ".exe"
#
Makefile: All images are tested. Remove ALL_IMAGES and DEFAULT_IMAGES vars. To confirm that the Makefiles works as expected after this patch, the list of executed commands before and after has been compared. Before: ``` make --dry-run > ../dockcross-make-baseline make test --dry-run > ../dockcross-make-test-baseline ``` After: ``` make --dry-run > ../dockcross-make-current; make test --dry-run > ../dockcross-make-test-current for target in make make-test; do diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current> /dev/null 2>&1 [[ $? == 1 ]] && \ echo "" && \ echo "-------------------------------" && \ echo "Here is output of:" && \ echo " diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current" && \ echo "" && \ diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current done ``` Output: ``` ------------------------------- Here is output of: diff --ignore-trailing-space ../dockcross-make-baseline ../dockcross-make-current 8a9 > docker build -t dockcross/linux-ppc64le linux-ppc64le 10a12,14 > cp -r test browser-asmjs/ > docker build -t dockcross/browser-asmjs browser-asmjs > rm -rf browser-asmjs/test ------------------------------- Here is output of: diff --ignore-trailing-space ../dockcross-make-test-baseline ../dockcross-make-test-current 24a25,27 > docker build -t dockcross/linux-ppc64le linux-ppc64le > docker run --rm dockcross/linux-ppc64le > bin/dockcross-linux-ppc64le && chmod +x bin/dockcross-linux-ppc64le > bin/dockcross-linux-ppc64le python test/run.py --languages C 30a34,38 > cp -r test browser-asmjs/ > docker build -t dockcross/browser-asmjs browser-asmjs > rm -rf browser-asmjs/test > docker run --rm dockcross/browser-asmjs > bin/dockcross-browser-asmjs && chmod +x bin/dockcross-browser-asmjs > bin/dockcross-browser-asmjs python test/run.py --exe-suffix ".js" ```
2016-09-26 05:28:23 +02:00
# images: This target builds all IMAGES (because it is the first one, it is built by default)
#
Makefile: All images are tested. Remove ALL_IMAGES and DEFAULT_IMAGES vars. To confirm that the Makefiles works as expected after this patch, the list of executed commands before and after has been compared. Before: ``` make --dry-run > ../dockcross-make-baseline make test --dry-run > ../dockcross-make-test-baseline ``` After: ``` make --dry-run > ../dockcross-make-current; make test --dry-run > ../dockcross-make-test-current for target in make make-test; do diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current> /dev/null 2>&1 [[ $? == 1 ]] && \ echo "" && \ echo "-------------------------------" && \ echo "Here is output of:" && \ echo " diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current" && \ echo "" && \ diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current done ``` Output: ``` ------------------------------- Here is output of: diff --ignore-trailing-space ../dockcross-make-baseline ../dockcross-make-current 8a9 > docker build -t dockcross/linux-ppc64le linux-ppc64le 10a12,14 > cp -r test browser-asmjs/ > docker build -t dockcross/browser-asmjs browser-asmjs > rm -rf browser-asmjs/test ------------------------------- Here is output of: diff --ignore-trailing-space ../dockcross-make-test-baseline ../dockcross-make-test-current 24a25,27 > docker build -t dockcross/linux-ppc64le linux-ppc64le > docker run --rm dockcross/linux-ppc64le > bin/dockcross-linux-ppc64le && chmod +x bin/dockcross-linux-ppc64le > bin/dockcross-linux-ppc64le python test/run.py --languages C 30a34,38 > cp -r test browser-asmjs/ > docker build -t dockcross/browser-asmjs browser-asmjs > rm -rf browser-asmjs/test > docker run --rm dockcross/browser-asmjs > bin/dockcross-browser-asmjs && chmod +x bin/dockcross-browser-asmjs > bin/dockcross-browser-asmjs python test/run.py --exe-suffix ".js" ```
2016-09-26 05:28:23 +02:00
images: base $(IMAGES)
#
# test: This target ensures all IMAGES are built and run the associated tests
#
Makefile: All images are tested. Remove ALL_IMAGES and DEFAULT_IMAGES vars. To confirm that the Makefiles works as expected after this patch, the list of executed commands before and after has been compared. Before: ``` make --dry-run > ../dockcross-make-baseline make test --dry-run > ../dockcross-make-test-baseline ``` After: ``` make --dry-run > ../dockcross-make-current; make test --dry-run > ../dockcross-make-test-current for target in make make-test; do diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current> /dev/null 2>&1 [[ $? == 1 ]] && \ echo "" && \ echo "-------------------------------" && \ echo "Here is output of:" && \ echo " diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current" && \ echo "" && \ diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current done ``` Output: ``` ------------------------------- Here is output of: diff --ignore-trailing-space ../dockcross-make-baseline ../dockcross-make-current 8a9 > docker build -t dockcross/linux-ppc64le linux-ppc64le 10a12,14 > cp -r test browser-asmjs/ > docker build -t dockcross/browser-asmjs browser-asmjs > rm -rf browser-asmjs/test ------------------------------- Here is output of: diff --ignore-trailing-space ../dockcross-make-test-baseline ../dockcross-make-test-current 24a25,27 > docker build -t dockcross/linux-ppc64le linux-ppc64le > docker run --rm dockcross/linux-ppc64le > bin/dockcross-linux-ppc64le && chmod +x bin/dockcross-linux-ppc64le > bin/dockcross-linux-ppc64le python test/run.py --languages C 30a34,38 > cp -r test browser-asmjs/ > docker build -t dockcross/browser-asmjs browser-asmjs > rm -rf browser-asmjs/test > docker run --rm dockcross/browser-asmjs > bin/dockcross-browser-asmjs && chmod +x bin/dockcross-browser-asmjs > bin/dockcross-browser-asmjs python test/run.py --exe-suffix ".js" ```
2016-09-26 05:28:23 +02:00
test: base.test $(addsuffix .test,$(IMAGES))
#
# browser-asmjs
#
browser-asmjs: base
cp -r test browser-asmjs/
$(DOCKER) build -t $(ORG)/browser-asmjs \
--build-arg IMAGE=$(ORG)/browser-asmjs \
--build-arg VCS_REF=`git rev-parse --short HEAD` \
--build-arg VCS_URL=`git config --get remote.origin.url` \
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
browser-asmjs
rm -rf browser-asmjs/test
2015-05-19 23:34:05 +02:00
browser-asmjs.test: browser-asmjs
$(DOCKER) run --rm dockcross/browser-asmjs > $(BIN)/dockcross-browser-asmjs && chmod +x $(BIN)/dockcross-browser-asmjs
$(BIN)/dockcross-browser-asmjs python test/run.py --exe-suffix ".js"
#
# manylinux-x64
#
manylinux-x64/Dockerfile: manylinux-x64/Dockerfile.in common.docker common.manylinux
sed -e '/common.docker/ r common.docker' -e '/common.manylinux/ r common.manylinux' manylinux-x64/Dockerfile.in > manylinux-x64/Dockerfile
2016-09-20 17:35:18 +02:00
manylinux-x64: manylinux-x64/Dockerfile
$(DOCKER) build -t $(ORG)/manylinux-x64 \
--build-arg IMAGE=$(ORG)/manylinux-x64 \
--build-arg VCS_REF=`git rev-parse --short HEAD` \
--build-arg VCS_URL=`git config --get remote.origin.url` \
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
-f manylinux-x64/Dockerfile .
manylinux-x64.test: manylinux-x64
$(DOCKER) run --rm dockcross/manylinux-x64 > $(BIN)/dockcross-manylinux-x64 && chmod +x $(BIN)/dockcross-manylinux-x64
2016-09-20 17:35:18 +02:00
$(BIN)/dockcross-manylinux-x64 /opt/python/cp35-cp35m/bin/python test/run.py
#
# manylinux-x86
#
manylinux-x86/Dockerfile: manylinux-x86/Dockerfile.in common.docker common.manylinux
sed -e '/common.docker/ r common.docker' -e '/common.manylinux/ r common.manylinux' manylinux-x86/Dockerfile.in > manylinux-x86/Dockerfile
2016-09-25 05:14:33 +02:00
manylinux-x86: manylinux-x86/Dockerfile
$(DOCKER) build -t $(ORG)/manylinux-x86 \
--build-arg IMAGE=$(ORG)/manylinux-x86 \
--build-arg VCS_REF=`git rev-parse --short HEAD` \
--build-arg VCS_URL=`git config --get remote.origin.url` \
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
-f manylinux-x86/Dockerfile .
2016-09-25 05:14:33 +02:00
manylinux-x86.test: manylinux-x86
2016-09-25 05:14:33 +02:00
$(DOCKER) run --rm dockcross/manylinux-x86 > $(BIN)/dockcross-manylinux-x86 && chmod +x $(BIN)/dockcross-manylinux-x86
$(BIN)/dockcross-manylinux-x86 /opt/python/cp35-cp35m/bin/python test/run.py
#
# base
#
Dockerfile: Dockerfile.in common.docker
sed '/common.docker/ r common.docker' Dockerfile.in > Dockerfile
base: Dockerfile imagefiles/
$(DOCKER) build -t $(ORG)/base \
--build-arg IMAGE=$(ORG)/base \
--build-arg VCS_REF=`git rev-parse --short HEAD` \
--build-arg VCS_URL=`git config --get remote.origin.url` \
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
.
base.test: base
$(DOCKER) run --rm dockcross/base > $(BIN)/dockcross-base && chmod +x $(BIN)/dockcross-base
#
# display
#
Makefile: All images are tested. Remove ALL_IMAGES and DEFAULT_IMAGES vars. To confirm that the Makefiles works as expected after this patch, the list of executed commands before and after has been compared. Before: ``` make --dry-run > ../dockcross-make-baseline make test --dry-run > ../dockcross-make-test-baseline ``` After: ``` make --dry-run > ../dockcross-make-current; make test --dry-run > ../dockcross-make-test-current for target in make make-test; do diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current> /dev/null 2>&1 [[ $? == 1 ]] && \ echo "" && \ echo "-------------------------------" && \ echo "Here is output of:" && \ echo " diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current" && \ echo "" && \ diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current done ``` Output: ``` ------------------------------- Here is output of: diff --ignore-trailing-space ../dockcross-make-baseline ../dockcross-make-current 8a9 > docker build -t dockcross/linux-ppc64le linux-ppc64le 10a12,14 > cp -r test browser-asmjs/ > docker build -t dockcross/browser-asmjs browser-asmjs > rm -rf browser-asmjs/test ------------------------------- Here is output of: diff --ignore-trailing-space ../dockcross-make-test-baseline ../dockcross-make-test-current 24a25,27 > docker build -t dockcross/linux-ppc64le linux-ppc64le > docker run --rm dockcross/linux-ppc64le > bin/dockcross-linux-ppc64le && chmod +x bin/dockcross-linux-ppc64le > bin/dockcross-linux-ppc64le python test/run.py --languages C 30a34,38 > cp -r test browser-asmjs/ > docker build -t dockcross/browser-asmjs browser-asmjs > rm -rf browser-asmjs/test > docker run --rm dockcross/browser-asmjs > bin/dockcross-browser-asmjs && chmod +x bin/dockcross-browser-asmjs > bin/dockcross-browser-asmjs python test/run.py --exe-suffix ".js" ```
2016-09-26 05:28:23 +02:00
display_images:
for image in $(IMAGES); do echo $$image; done
Makefile: All images are tested. Remove ALL_IMAGES and DEFAULT_IMAGES vars. To confirm that the Makefiles works as expected after this patch, the list of executed commands before and after has been compared. Before: ``` make --dry-run > ../dockcross-make-baseline make test --dry-run > ../dockcross-make-test-baseline ``` After: ``` make --dry-run > ../dockcross-make-current; make test --dry-run > ../dockcross-make-test-current for target in make make-test; do diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current> /dev/null 2>&1 [[ $? == 1 ]] && \ echo "" && \ echo "-------------------------------" && \ echo "Here is output of:" && \ echo " diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current" && \ echo "" && \ diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current done ``` Output: ``` ------------------------------- Here is output of: diff --ignore-trailing-space ../dockcross-make-baseline ../dockcross-make-current 8a9 > docker build -t dockcross/linux-ppc64le linux-ppc64le 10a12,14 > cp -r test browser-asmjs/ > docker build -t dockcross/browser-asmjs browser-asmjs > rm -rf browser-asmjs/test ------------------------------- Here is output of: diff --ignore-trailing-space ../dockcross-make-test-baseline ../dockcross-make-test-current 24a25,27 > docker build -t dockcross/linux-ppc64le linux-ppc64le > docker run --rm dockcross/linux-ppc64le > bin/dockcross-linux-ppc64le && chmod +x bin/dockcross-linux-ppc64le > bin/dockcross-linux-ppc64le python test/run.py --languages C 30a34,38 > cp -r test browser-asmjs/ > docker build -t dockcross/browser-asmjs browser-asmjs > rm -rf browser-asmjs/test > docker run --rm dockcross/browser-asmjs > bin/dockcross-browser-asmjs && chmod +x bin/dockcross-browser-asmjs > bin/dockcross-browser-asmjs python test/run.py --exe-suffix ".js" ```
2016-09-26 05:28:23 +02:00
$(VERBOSE).SILENT: display_images
#
# build implicit rule
#
$(STANDARD_IMAGES): base
cp imagefiles/install-openssl.sh $@/
$(DOCKER) build -t $(ORG)/$@ \
--build-arg IMAGE=$(ORG)/$@ \
--build-arg VCS_REF=`git rev-parse --short HEAD` \
--build-arg VCS_URL=`git config --get remote.origin.url` \
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
$@
#
# testing implicit rule
#
.SECONDEXPANSION:
$(addsuffix .test,$(STANDARD_IMAGES)): $$(basename $$@)
$(DOCKER) run --rm dockcross/$(basename $@) > $(BIN)/dockcross-$(basename $@) && chmod +x $(BIN)/dockcross-$(basename $@)
$(BIN)/dockcross-$(basename $@) python test/run.py $($@_ARGS)
#
# testing prerequisites implicit rule
#
test.prerequisites:
mkdir -p $(BIN)
$(addsuffix .test,base $(IMAGES)): test.prerequisites
Makefile: All images are tested. Remove ALL_IMAGES and DEFAULT_IMAGES vars. To confirm that the Makefiles works as expected after this patch, the list of executed commands before and after has been compared. Before: ``` make --dry-run > ../dockcross-make-baseline make test --dry-run > ../dockcross-make-test-baseline ``` After: ``` make --dry-run > ../dockcross-make-current; make test --dry-run > ../dockcross-make-test-current for target in make make-test; do diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current> /dev/null 2>&1 [[ $? == 1 ]] && \ echo "" && \ echo "-------------------------------" && \ echo "Here is output of:" && \ echo " diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current" && \ echo "" && \ diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current done ``` Output: ``` ------------------------------- Here is output of: diff --ignore-trailing-space ../dockcross-make-baseline ../dockcross-make-current 8a9 > docker build -t dockcross/linux-ppc64le linux-ppc64le 10a12,14 > cp -r test browser-asmjs/ > docker build -t dockcross/browser-asmjs browser-asmjs > rm -rf browser-asmjs/test ------------------------------- Here is output of: diff --ignore-trailing-space ../dockcross-make-test-baseline ../dockcross-make-test-current 24a25,27 > docker build -t dockcross/linux-ppc64le linux-ppc64le > docker run --rm dockcross/linux-ppc64le > bin/dockcross-linux-ppc64le && chmod +x bin/dockcross-linux-ppc64le > bin/dockcross-linux-ppc64le python test/run.py --languages C 30a34,38 > cp -r test browser-asmjs/ > docker build -t dockcross/browser-asmjs browser-asmjs > rm -rf browser-asmjs/test > docker run --rm dockcross/browser-asmjs > bin/dockcross-browser-asmjs && chmod +x bin/dockcross-browser-asmjs > bin/dockcross-browser-asmjs python test/run.py --exe-suffix ".js" ```
2016-09-26 05:28:23 +02:00
.PHONY: base images $(IMAGES) test %.test