mirror of
				https://github.com/bensuperpc/dockcross.git
				synced 2025-10-26 22:16:20 +01:00 
			
		
		
		
	windows-(x86|x64): Optimize images introducing "common.windows"
* Avoid duplication introducing common script * Optimize image size reducing the number of RUN instructions
This commit is contained in:
		
							
								
								
									
										5
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								Makefile
									
									
									
									
									
								
							| @@ -16,13 +16,13 @@ BIN = ./bin | |||||||
| STANDARD_IMAGES = linux-s390x android-arm android-arm64 linux-x86 linux-x64 linux-arm64 linux-armv5 linux-armv6 linux-armv7 linux-mips linux-mipsel linux-ppc64le windows-x86 windows-x64 | STANDARD_IMAGES = linux-s390x android-arm android-arm64 linux-x86 linux-x64 linux-arm64 linux-armv5 linux-armv6 linux-armv7 linux-mips linux-mipsel linux-ppc64le windows-x86 windows-x64 | ||||||
|  |  | ||||||
| # Generated Dockerfiles. | # Generated Dockerfiles. | ||||||
| GEN_IMAGES = linux-s390x linux-mips manylinux-x86 manylinux-x64 browser-asmjs linux-arm64 | GEN_IMAGES = linux-s390x linux-mips manylinux-x86 manylinux-x64 browser-asmjs linux-arm64 windows-x86 windows-x64 | ||||||
| GEN_IMAGE_DOCKERFILES = $(addsuffix /Dockerfile,$(GEN_IMAGES)) | GEN_IMAGE_DOCKERFILES = $(addsuffix /Dockerfile,$(GEN_IMAGES)) | ||||||
|  |  | ||||||
| # These images are expected to have explicit rules for *both* build and testing | # These images are expected to have explicit rules for *both* build and testing | ||||||
| NON_STANDARD_IMAGES = browser-asmjs manylinux-x64 manylinux-x86 | NON_STANDARD_IMAGES = browser-asmjs manylinux-x64 manylinux-x86 | ||||||
|  |  | ||||||
| DOCKER_COMPOSITE_SOURCES = common.docker common.debian common.manylinux common.crosstool | DOCKER_COMPOSITE_SOURCES = common.docker common.debian common.manylinux common.crosstool common.windows | ||||||
|  |  | ||||||
| # This list all available images | # This list all available images | ||||||
| IMAGES = $(STANDARD_IMAGES) $(NON_STANDARD_IMAGES) | IMAGES = $(STANDARD_IMAGES) $(NON_STANDARD_IMAGES) | ||||||
| @@ -59,6 +59,7 @@ $(GEN_IMAGE_DOCKERFILES) Dockerfile: %Dockerfile: %Dockerfile.in $(DOCKER_COMPOS | |||||||
| 		-e '/common.debian/ r common.debian' \ | 		-e '/common.debian/ r common.debian' \ | ||||||
| 		-e '/common.manylinux/ r common.manylinux' \ | 		-e '/common.manylinux/ r common.manylinux' \ | ||||||
| 		-e '/common.crosstool/ r common.crosstool' \ | 		-e '/common.crosstool/ r common.crosstool' \ | ||||||
|  | 		-e '/common.windows/ r common.windows' \ | ||||||
| 		$< > $@ | 		$< > $@ | ||||||
|  |  | ||||||
| # | # | ||||||
|   | |||||||
							
								
								
									
										115
									
								
								common.windows
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										115
									
								
								common.windows
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,115 @@ | |||||||
|  |  | ||||||
|  | # | ||||||
|  | # Before including this script, make sure to set: | ||||||
|  | # | ||||||
|  | # WINEARCH environment variable to either "win64" or "win32" | ||||||
|  | # MXE_TARGET_ARCH argument to either "x86_64" or "i686". See http://mxe.cc/ | ||||||
|  | # | ||||||
|  | # For example: | ||||||
|  | # | ||||||
|  | #  ENV WINEARCH win64 | ||||||
|  | #  ARG MXE_TARGET_ARCH=x86_64 | ||||||
|  | # | ||||||
|  |  | ||||||
|  | # mxe master 2017-10-25 | ||||||
|  | ARG MXE_GIT_TAG=994ad47302e8811614b7eb49fc05234942b95b89 | ||||||
|  |  | ||||||
|  | ENV CMAKE_TOOLCHAIN_FILE /usr/src/mxe/usr/${MXE_TARGET_ARCH}-w64-mingw32.static/share/cmake/mxe-conf.cmake | ||||||
|  |  | ||||||
|  | ARG DEBIAN_FRONTEND=noninteractive | ||||||
|  |  | ||||||
|  | # | ||||||
|  | # WINE is used as an emulator for try_run and tests with CMake. | ||||||
|  | # | ||||||
|  | # Other dependencies are from the listed MXE requirements: | ||||||
|  | #   http://mxe.cc/#requirements | ||||||
|  | # 'cmake' is omitted because it is installed from source in the base image | ||||||
|  | # | ||||||
|  | RUN \ | ||||||
|  |   apt-get update && \ | ||||||
|  |   apt-get -y install \ | ||||||
|  |     autoconf \ | ||||||
|  |     automake \ | ||||||
|  |     autopoint \ | ||||||
|  |     bash \ | ||||||
|  |     bison \ | ||||||
|  |     bzip2 \ | ||||||
|  |     flex \ | ||||||
|  |     gettext \ | ||||||
|  |     git \ | ||||||
|  |     g++ \ | ||||||
|  |     g++-multilib \ | ||||||
|  |     gperf \ | ||||||
|  |     intltool \ | ||||||
|  |     libffi-dev \ | ||||||
|  |     libgdk-pixbuf2.0-dev \ | ||||||
|  |     libtool-bin \ | ||||||
|  |     libltdl-dev \ | ||||||
|  |     libssl-dev \ | ||||||
|  |     libxml-parser-perl \ | ||||||
|  |     libc6-dev-i386 \ | ||||||
|  |     make \ | ||||||
|  |     openssl \ | ||||||
|  |     p7zip-full \ | ||||||
|  |     patch \ | ||||||
|  |     perl \ | ||||||
|  |     pkg-config \ | ||||||
|  |     python \ | ||||||
|  |     ruby \ | ||||||
|  |     scons \ | ||||||
|  |     sed \ | ||||||
|  |     unzip \ | ||||||
|  |     wget \ | ||||||
|  |     wine \ | ||||||
|  |     xz-utils \ | ||||||
|  |   && \ | ||||||
|  |   # | ||||||
|  |   # Install Wine | ||||||
|  |   # | ||||||
|  |   dpkg --add-architecture i386 && \ | ||||||
|  |   apt-get update && \ | ||||||
|  |   apt-get install -y wine32 && \ | ||||||
|  |   wine hostname && \ | ||||||
|  |   # | ||||||
|  |   # Download MXE sources | ||||||
|  |   # | ||||||
|  |   cd /usr/src && \ | ||||||
|  |   git clone https://github.com/mxe/mxe.git && \ | ||||||
|  |   cd mxe && \ | ||||||
|  |   git checkout ${MXE_GIT_TAG} && \ | ||||||
|  |   # | ||||||
|  |   # Configure "settings.mk" required to build MXE | ||||||
|  |   # | ||||||
|  |   cd /usr/src/mxe && \ | ||||||
|  |   echo "MXE_TARGETS := ${MXE_TARGET_ARCH}-w64-mingw32.static" > settings.mk && \ | ||||||
|  |   echo "LOCAL_PKG_LIST := gcc"                                >> settings.mk && \ | ||||||
|  |   echo ".DEFAULT local-pkg-list:"                             >> settings.mk && \ | ||||||
|  |   echo "local-pkg-list: \$(LOCAL_PKG_LIST)"                   >> settings.mk && \ | ||||||
|  |   # | ||||||
|  |   # Build MXE | ||||||
|  |   # | ||||||
|  |   cd /usr/src/mxe && \ | ||||||
|  |   make -j$(nproc) && \ | ||||||
|  |   # | ||||||
|  |   # Update MXE toolchain file | ||||||
|  |   # | ||||||
|  |   echo 'set(CMAKE_CROSSCOMPILING_EMULATOR "/usr/bin/wine")' >> ${CMAKE_TOOLCHAIN_FILE} && \ | ||||||
|  |   # | ||||||
|  |   # Replace cmake and cpack binaries | ||||||
|  |   # | ||||||
|  |   cd /usr/bin && \ | ||||||
|  |   rm cmake cpack && \ | ||||||
|  |   ln -s /usr/src/mxe/usr/bin/${MXE_TARGET_ARCH}-w64-mingw32.static-cmake cmake && \ | ||||||
|  |   ln -s /usr/src/mxe/usr/bin/${MXE_TARGET_ARCH}-w64-mingw32.static-cpack cpack | ||||||
|  |  | ||||||
|  | ENV PATH ${PATH}:/usr/src/mxe/usr/bin | ||||||
|  | ENV CROSS_TRIPLE ${MXE_TARGET_ARCH}-w64-mingw32.static | ||||||
|  | ENV AS=/usr/src/mxe/usr/bin/${CROSS_TRIPLE}-as \ | ||||||
|  |     AR=/usr/src/mxe/usr/bin/${CROSS_TRIPLE}-ar \ | ||||||
|  |     CC=/usr/src/mxe/usr/bin/${CROSS_TRIPLE}-gcc \ | ||||||
|  |     CPP=/usr/src/mxe/usr/bin/${CROSS_TRIPLE}-cpp \ | ||||||
|  |     CXX=/usr/src/mxe/usr/bin/${CROSS_TRIPLE}-g++ \ | ||||||
|  |     LD=/usr/src/mxe/usr/bin/${CROSS_TRIPLE}-ld \ | ||||||
|  |     FC=/usr/src/mxe/usr/bin/${CROSS_TRIPLE}-gfortran | ||||||
|  |  | ||||||
|  | WORKDIR /work | ||||||
| @@ -1,88 +0,0 @@ | |||||||
| FROM dockcross/base:latest |  | ||||||
| MAINTAINER Matt McCormick "matt.mccormick@kitware.com" |  | ||||||
|  |  | ||||||
| # WINE is used as an emulator for try_run and tests with CMake. |  | ||||||
| # Other dependencies are from the listed MXE requirements: |  | ||||||
| #   http://mxe.cc/#requirements |  | ||||||
| # 'cmake' is omitted because it is installed from source in the base image |  | ||||||
| RUN apt-get update && apt-get -y install \ |  | ||||||
|   autoconf \ |  | ||||||
|   automake \ |  | ||||||
|   autopoint \ |  | ||||||
|   bash \ |  | ||||||
|   bison \ |  | ||||||
|   bzip2 \ |  | ||||||
|   flex \ |  | ||||||
|   gettext \ |  | ||||||
|   git \ |  | ||||||
|   g++ \ |  | ||||||
|   g++-multilib \ |  | ||||||
|   gperf \ |  | ||||||
|   intltool \ |  | ||||||
|   libffi-dev \ |  | ||||||
|   libgdk-pixbuf2.0-dev \ |  | ||||||
|   libtool-bin \ |  | ||||||
|   libltdl-dev \ |  | ||||||
|   libssl-dev \ |  | ||||||
|   libxml-parser-perl \ |  | ||||||
|   libc6-dev-i386 \ |  | ||||||
|   make \ |  | ||||||
|   openssl \ |  | ||||||
|   p7zip-full \ |  | ||||||
|   patch \ |  | ||||||
|   perl \ |  | ||||||
|   pkg-config \ |  | ||||||
|   python \ |  | ||||||
|   ruby \ |  | ||||||
|   scons \ |  | ||||||
|   sed \ |  | ||||||
|   unzip \ |  | ||||||
|   wget \ |  | ||||||
|   wine \ |  | ||||||
|   xz-utils |  | ||||||
| # Set up wine |  | ||||||
| RUN dpkg --add-architecture i386 && \ |  | ||||||
|   apt-get update && \ |  | ||||||
|   apt-get install -y wine32 |  | ||||||
| ENV WINEARCH win64 |  | ||||||
| RUN wine hostname |  | ||||||
|  |  | ||||||
| WORKDIR /usr/src |  | ||||||
| # mxe master 2017-10-25 |  | ||||||
| RUN git clone https://github.com/mxe/mxe.git && \ |  | ||||||
|   cd mxe && \ |  | ||||||
|   git checkout 994ad47302e8811614b7eb49fc05234942b95b89 |  | ||||||
| WORKDIR /usr/src/mxe |  | ||||||
| COPY settings.mk /usr/src/mxe/ |  | ||||||
| RUN make -j$(nproc) |  | ||||||
|  |  | ||||||
| ENV PATH ${PATH}:/usr/src/mxe/usr/bin |  | ||||||
| ENV CROSS_TRIPLE x86_64-w64-mingw32.static |  | ||||||
| ENV AS=/usr/src/mxe/usr/bin/${CROSS_TRIPLE}-as \ |  | ||||||
|     AR=/usr/src/mxe/usr/bin/${CROSS_TRIPLE}-ar \ |  | ||||||
|     CC=/usr/src/mxe/usr/bin/${CROSS_TRIPLE}-gcc \ |  | ||||||
|     CPP=/usr/src/mxe/usr/bin/${CROSS_TRIPLE}-cpp \ |  | ||||||
|     CXX=/usr/src/mxe/usr/bin/${CROSS_TRIPLE}-g++ \ |  | ||||||
|     LD=/usr/src/mxe/usr/bin/${CROSS_TRIPLE}-ld \ |  | ||||||
|     FC=/usr/src/mxe/usr/bin/${CROSS_TRIPLE}-gfortran |  | ||||||
|  |  | ||||||
| ENV DEFAULT_DOCKCROSS_IMAGE dockcross/windows-x64 |  | ||||||
| WORKDIR /work |  | ||||||
|  |  | ||||||
| ENV CMAKE_TOOLCHAIN_FILE /usr/src/mxe/usr/x86_64-w64-mingw32.static/share/cmake/mxe-conf.cmake |  | ||||||
| RUN echo 'set(CMAKE_CROSSCOMPILING_EMULATOR "/usr/bin/wine")' >> ${CMAKE_TOOLCHAIN_FILE} |  | ||||||
| RUN cd /usr/local/bin \ |  | ||||||
|   && rm cmake \ |  | ||||||
|   && ln -s /usr/src/mxe/usr/bin/x86_64-w64-mingw32.static-cmake cmake \ |  | ||||||
|   && ln -s /usr/src/mxe/usr/bin/x86_64-w64-mingw32.static-cpack cpack |  | ||||||
|  |  | ||||||
| # Build-time metadata as defined at http://label-schema.org |  | ||||||
| ARG BUILD_DATE |  | ||||||
| ARG IMAGE |  | ||||||
| ARG VCS_REF |  | ||||||
| ARG VCS_URL |  | ||||||
| LABEL org.label-schema.build-date=$BUILD_DATE \ |  | ||||||
|       org.label-schema.name=$IMAGE \ |  | ||||||
|       org.label-schema.vcs-ref=$VCS_REF \ |  | ||||||
|       org.label-schema.vcs-url=$VCS_URL \ |  | ||||||
|       org.label-schema.schema-version="1.0" |  | ||||||
							
								
								
									
										20
									
								
								windows-x64/Dockerfile.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								windows-x64/Dockerfile.in
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | |||||||
|  | FROM dockcross/base:latest | ||||||
|  | MAINTAINER Matt McCormick "matt.mccormick@kitware.com" | ||||||
|  |  | ||||||
|  | ENV WINEARCH win64 | ||||||
|  | ARG MXE_TARGET_ARCH=x86_64 | ||||||
|  |  | ||||||
|  | #include "common.windows" | ||||||
|  |  | ||||||
|  | ENV DEFAULT_DOCKCROSS_IMAGE dockcross/windows-x64 | ||||||
|  |  | ||||||
|  | # Build-time metadata as defined at http://label-schema.org | ||||||
|  | ARG BUILD_DATE | ||||||
|  | ARG IMAGE | ||||||
|  | ARG VCS_REF | ||||||
|  | ARG VCS_URL | ||||||
|  | LABEL org.label-schema.build-date=$BUILD_DATE \ | ||||||
|  |       org.label-schema.name=$IMAGE \ | ||||||
|  |       org.label-schema.vcs-ref=$VCS_REF \ | ||||||
|  |       org.label-schema.vcs-url=$VCS_URL \ | ||||||
|  |       org.label-schema.schema-version="1.0" | ||||||
| @@ -1,4 +0,0 @@ | |||||||
| MXE_TARGETS := x86_64-w64-mingw32.static |  | ||||||
| LOCAL_PKG_LIST := gcc |  | ||||||
| .DEFAULT local-pkg-list: |  | ||||||
| local-pkg-list: $(LOCAL_PKG_LIST) |  | ||||||
| @@ -1,88 +0,0 @@ | |||||||
| FROM dockcross/base:latest |  | ||||||
| MAINTAINER Matt McCormick "matt.mccormick@kitware.com" |  | ||||||
|  |  | ||||||
| # WINE is used as an emulator for try_run and tests with CMake. |  | ||||||
| # Other dependencies are from the listed MXE requirements: |  | ||||||
| #   http://mxe.cc/#requirements |  | ||||||
| # 'cmake' is omitted because it is installed from source in the base image |  | ||||||
| RUN apt-get update && apt-get -y --force-yes install \ |  | ||||||
|   autoconf \ |  | ||||||
|   automake \ |  | ||||||
|   autopoint \ |  | ||||||
|   bash \ |  | ||||||
|   bison \ |  | ||||||
|   bzip2 \ |  | ||||||
|   flex \ |  | ||||||
|   gettext \ |  | ||||||
|   git \ |  | ||||||
|   g++ \ |  | ||||||
|   g++-multilib \ |  | ||||||
|   gperf \ |  | ||||||
|   intltool \ |  | ||||||
|   libffi-dev \ |  | ||||||
|   libgdk-pixbuf2.0-dev \ |  | ||||||
|   libtool-bin \ |  | ||||||
|   libltdl-dev \ |  | ||||||
|   libssl-dev \ |  | ||||||
|   libxml-parser-perl \ |  | ||||||
|   libc6-dev-i386 \ |  | ||||||
|   make \ |  | ||||||
|   openssl \ |  | ||||||
|   p7zip-full \ |  | ||||||
|   patch \ |  | ||||||
|   perl \ |  | ||||||
|   pkg-config \ |  | ||||||
|   python \ |  | ||||||
|   ruby \ |  | ||||||
|   scons \ |  | ||||||
|   sed \ |  | ||||||
|   unzip \ |  | ||||||
|   wget \ |  | ||||||
|   wine \ |  | ||||||
|   xz-utils |  | ||||||
| # Set up wine |  | ||||||
| RUN dpkg --add-architecture i386 && \ |  | ||||||
|   apt-get update && \ |  | ||||||
|   apt-get install -y wine32 |  | ||||||
| ENV WINEARCH win32 |  | ||||||
| RUN wine hostname |  | ||||||
|  |  | ||||||
| WORKDIR /usr/src |  | ||||||
| # mxe master 2017-10-25 |  | ||||||
| RUN git clone https://github.com/mxe/mxe.git && \ |  | ||||||
|   cd mxe && \ |  | ||||||
|   git checkout 994ad47302e8811614b7eb49fc05234942b95b89 |  | ||||||
| WORKDIR /usr/src/mxe |  | ||||||
| COPY settings.mk /usr/src/mxe/ |  | ||||||
| RUN make -j$(nproc) |  | ||||||
|  |  | ||||||
| ENV PATH ${PATH}:/usr/src/mxe/usr/bin |  | ||||||
| ENV CROSS_TRIPLE i686-w64-mingw32.static |  | ||||||
| ENV AS=/usr/src/mxe/usr/bin/${CROSS_TRIPLE}-as \ |  | ||||||
|     AR=/usr/src/mxe/usr/bin/${CROSS_TRIPLE}-ar \ |  | ||||||
|     CC=/usr/src/mxe/usr/bin/${CROSS_TRIPLE}-gcc \ |  | ||||||
|     CPP=/usr/src/mxe/usr/bin/${CROSS_TRIPLE}-cpp \ |  | ||||||
|     CXX=/usr/src/mxe/usr/bin/${CROSS_TRIPLE}-g++ \ |  | ||||||
|     LD=/usr/src/mxe/usr/bin/${CROSS_TRIPLE}-ld \ |  | ||||||
|     FC=/usr/src/mxe/usr/bin/${CROSS_TRIPLE}-gfortran |  | ||||||
|  |  | ||||||
| ENV DEFAULT_DOCKCROSS_IMAGE dockcross/windows-x86 |  | ||||||
| WORKDIR /work |  | ||||||
|  |  | ||||||
| ENV CMAKE_TOOLCHAIN_FILE /usr/src/mxe/usr/i686-w64-mingw32.static/share/cmake/mxe-conf.cmake |  | ||||||
| RUN echo 'set(CMAKE_CROSSCOMPILING_EMULATOR "/usr/bin/wine")' >> ${CMAKE_TOOLCHAIN_FILE} |  | ||||||
| RUN cd /usr/local/bin \ |  | ||||||
|   && rm cmake \ |  | ||||||
|   && ln -s /usr/src/mxe/usr/bin/i686-w64-mingw32.static-cmake cmake \ |  | ||||||
|   && ln -s /usr/src/mxe/usr/bin/i686-w64-mingw32.static-cpack cpack |  | ||||||
|  |  | ||||||
| # Build-time metadata as defined at http://label-schema.org |  | ||||||
| ARG BUILD_DATE |  | ||||||
| ARG IMAGE |  | ||||||
| ARG VCS_REF |  | ||||||
| ARG VCS_URL |  | ||||||
| LABEL org.label-schema.build-date=$BUILD_DATE \ |  | ||||||
|       org.label-schema.name=$IMAGE \ |  | ||||||
|       org.label-schema.vcs-ref=$VCS_REF \ |  | ||||||
|       org.label-schema.vcs-url=$VCS_URL \ |  | ||||||
|       org.label-schema.schema-version="1.0" |  | ||||||
							
								
								
									
										21
									
								
								windows-x86/Dockerfile.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								windows-x86/Dockerfile.in
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | |||||||
|  | FROM dockcross/base:latest | ||||||
|  | MAINTAINER Matt McCormick "matt.mccormick@kitware.com" | ||||||
|  |  | ||||||
|  | ENV WINEARCH win32 | ||||||
|  | ARG MXE_TARGET_ARCH=i686 | ||||||
|  |  | ||||||
|  | #include "common.windows" | ||||||
|  |  | ||||||
|  | ENV DEFAULT_DOCKCROSS_IMAGE dockcross/windows-x86 | ||||||
|  | WORKDIR /work | ||||||
|  |  | ||||||
|  | # Build-time metadata as defined at http://label-schema.org | ||||||
|  | ARG BUILD_DATE | ||||||
|  | ARG IMAGE | ||||||
|  | ARG VCS_REF | ||||||
|  | ARG VCS_URL | ||||||
|  | LABEL org.label-schema.build-date=$BUILD_DATE \ | ||||||
|  |       org.label-schema.name=$IMAGE \ | ||||||
|  |       org.label-schema.vcs-ref=$VCS_REF \ | ||||||
|  |       org.label-schema.vcs-url=$VCS_URL \ | ||||||
|  |       org.label-schema.schema-version="1.0" | ||||||
| @@ -1,4 +0,0 @@ | |||||||
| MXE_TARGETS := i686-w64-mingw32.static |  | ||||||
| LOCAL_PKG_LIST := gcc |  | ||||||
| .DEFAULT local-pkg-list: |  | ||||||
| local-pkg-list: $(LOCAL_PKG_LIST) |  | ||||||
		Reference in New Issue
	
	Block a user
	 Jean-Christophe Fillion-Robin
					Jean-Christophe Fillion-Robin