mirror of
https://github.com/bensuperpc/dockcross.git
synced 2024-12-23 00:54:26 +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:
parent
47d2738159
commit
aa202df283
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)
|
|
Loading…
Reference in New Issue
Block a user