diff --git a/tools/docker/Makefile b/tools/docker/Makefile index c780253bf5..96d0e6360b 100644 --- a/tools/docker/Makefile +++ b/tools/docker/Makefile @@ -46,11 +46,13 @@ help: @echo -e "\t\t${BOLD}export${RESET}" @echo @echo - @echo -e "\t${BOLD}_amd64${RESET}: build docker images for ALL DISTROS." - @echo -e "\t${BOLD}amd64__${RESET}: build the docker image for a specific distro." + @echo -e "\t${BOLD}amd64_${RESET}: Build docker images for ALL DISTROS." + @echo -e "\t${BOLD}amd64__${RESET}: Build the docker image for a specific distro." @echo -e "\t${BOLD}save_amd64_${RESET}: Save docker images for ALL DISTROS." @echo -e "\t${BOLD}save_amd64__${RESET}: Save the docker image for a specific distro." - @echo -e "\t${BOLD}sh_amd64__${RESET}: run a container using the docker image specified (debug purpose)." + @echo -e "\t${BOLD}sh_amd64__${RESET}: Run a container using the docker image specified (debug purpose)." + @echo -e "\t${BOLD}clean_amd64_${RESET}: Clean docker images for ALL DISTROS." + @echo -e "\t${BOLD}clean_amd64__${RESET}: Clean the docker image for a specific distro." @echo @echo -e "\t${BOLD}amd64__test${RESET}: Test OR-Tools archive for ALL LANGUAGES for the specified ${BOLD}${RESET}." @echo -e "\t${BOLD}amd64__test_${RESET}: Test OR-Tools archive for the specified ${BOLD}${RESET} and ${BOLD}${RESET}." @@ -192,6 +194,8 @@ $$(sh_python_targets_$1): sh_python_amd64_%_$1: python_amd64_%_$1 | export ${IMAGE}:python_amd64_$$*_$1 clean_python_targets_$1 = $(addprefix clean_python_, $(addsuffix _$1, $(PYTHON_AMD_DISTROS))) +.PHONY: clean_python_amd64_$1 +clean_python_amd64_$1: $(clean_python_targets_$1) .PHONY: $(clean_python_targets_$1) $$(clean_python_targets_$1): clean_python_amd64_%_$1: docker image rm -f ${IMAGE}:python_amd64_$$*_$1 2>/dev/null @@ -246,6 +250,8 @@ $$(sh_python_targets_$1): sh_python_arm64v8_%_$1: python_arm64v8_%_$1 | export ${IMAGE}:python_arm64v8_$$*_$1 clean_python_targets_$1 = $(addprefix clean_python_, $(addsuffix _$1, $(PYTHON_ARM_DISTROS))) +.PHONY: clean_python_arm64v8_$1 +clean_python_arm64v8_$1: $(clean_python_targets_$1) .PHONY: $(clean_python_targets_$1) $$(clean_python_targets_$1): clean_python_arm64v8_%_$1: docker image rm -f ${IMAGE}:python_arm64v8_$$*_$1 2>/dev/null @@ -421,7 +427,13 @@ targets = $(addprefix amd64_, $(addsuffix _test, $(DISTROS))) .PHONY: amd64_test amd64_test: $(targets) .PHONY: $(targets) -$(targets): amd64_%_test: amd64_%_test_cc amd64_%_test_java amd64_%_test_dotnet +$(targets): amd64_%_test: $(addprefix amd64_%_test_, $(LANGS)) + +targets = $(addprefix clean_amd64_, $(addsuffix _test, $(DISTROS))) +.PHONY: clean_amd64_test +clean_amd64_test: $(targets) +.PHONY: $(targets) +$(targets): clean_amd64_%_test: $(addprefix clean_amd64_%_test_, $(LANGS)) ## MERGE ## .PHONY: test @@ -430,45 +442,35 @@ test: amd64_test #arm64v8_test ############# ## CLEAN ## ############# -targets = $(addprefix clean_, $(DISTROS)) +clean_targets = $(addprefix clean_, $(DISTROS)) -.PHONY: $(targets) -$(targets): clean_%: $(addprefix clean_amd64_%_, $(STAGES)) - docker image rm -f ${IMAGE}:amd64_$*_cc 2>/dev/null - docker image rm -f ${IMAGE}:amd64_$*_java 2>/dev/null - docker image rm -f ${IMAGE}:amd64_$*_dotnet 2>/dev/null - docker image rm -f ${IMAGE}:arm64v8_$*_cc 2>/dev/null - docker image rm -f ${IMAGE}:arm64v8_$*_java 2>/dev/null - docker image rm -f ${IMAGE}:arm64v8_$*_dotnet 2>/dev/null +.PHONY: $(clean_targets) +$(clean_targets): clean_%: $(addprefix clean_amd64_%_, $(STAGES)) clean_amd64_%_test -rmdir cache/$* - -rm -f export/archives/or-tools_amd64_flatzinc_$*_v*.tar.gz - -rm -f export/archives/or-tools_amd64_$*_v*.tar.gz + -rm -f export/archives/*.tar.gz -rm -f export/$*/or-tools.snk -rmdir export/$* .PHONY: clean_python -clean_python: - -docker image rm -f ${IMAGE}:python_amd64_alpine 2>/dev/null - -docker image rm -f ${IMAGE}:python_amd64_manylinux 2>/dev/null - -docker image rm -f ${IMAGE}:python_arm64v8_alpine 2>/dev/null - -docker image rm -f ${IMAGE}:python_arm64v8_manylinux 2>/dev/null +clean_python: $(addprefix clean_python_amd64_, $(PYTHON_STAGES)) $(addprefix clean_python_arm64v8_, $(PYTHON_STAGES)) + -rm -rf cache/python/* -rm -f export/python/*.whl -rm -f export/python/*.tar -rm -f export/python/*.sh -rmdir export/python .PHONY: clean -clean: $(targets) clean_cc clean_java clean_dotnet clean_python +clean: $(clean_targets) clean_python docker container prune -f docker image prune -f - -rmdir cache + -rm -rf cache .PHONY: distclean distclean: clean | export/archives -docker container rm -f $$(docker container ls -f status=exited -q) -docker image rm -f $$(docker image ls --all -q) - rmdir export/archives - rmdir export + -rm -rf export/archives + -rm -rf export ########################## ## MINIZINC CHALLENGE ## diff --git a/tools/docker/python/arm64v8/alpine.Dockerfile b/tools/docker/python/arm64v8/alpine.Dockerfile index a94675dfb4..7bd5615e63 100644 --- a/tools/docker/python/arm64v8/alpine.Dockerfile +++ b/tools/docker/python/arm64v8/alpine.Dockerfile @@ -19,6 +19,7 @@ RUN python3 -m pip install absl-py mypy-protobuf ## OR-TOOLS ## ################ FROM env AS devel +ENV SRC_GIT_URL https://github.com/google/or-tools ARG SRC_GIT_BRANCH ENV SRC_GIT_BRANCH ${SRC_GIT_BRANCH:-master} @@ -29,7 +30,7 @@ ENV SRC_GIT_SHA1 ${SRC_GIT_SHA1:-unknown} # use SRC_GIT_SHA1 to modify the command # i.e. avoid docker reusing the cache when new commit is pushed WORKDIR /root -RUN git clone -b "${SRC_GIT_BRANCH}" --single-branch https://github.com/google/or-tools \ +RUN git clone -b "${SRC_GIT_BRANCH}" --single-branch "$SRC_GIT_URL" /project \ && echo "sha1: $(cd or-tools && git rev-parse --verify HEAD)" \ && echo "expected sha1: ${SRC_GIT_SHA1}" @@ -38,11 +39,8 @@ FROM devel AS third_party WORKDIR /root/or-tools RUN make detect && make third_party -# Build project -FROM third_party AS build -RUN make detect_cc && make cc -RUN make detect_python && make package_python -# Rename wheel package ortools-version+musl-.... -RUN cp temp_python*/ortools/dist/*.whl . -RUN NAME=$(ls *.whl | sed -e "s/\(ortools-[0-9\.]\+\)/\1+musl/") \ - && mv *.whl "${NAME}" +FROM devel AS build +WORKDIR /project +COPY build-manylinux.sh . +RUN chmod a+x "build-manylinux.sh" +RUN ./build-manylinux.sh