Can't create mingw Docker container?

Hey, I’m trying to test the mingw build using the Docker container definition and instructions from:

Unfortunately, when I try to make image I get a build failure with libuuid:

[...]
#11 [ 9/19] RUN install_uuid() {       tar zxf uuid-1.6.2.tar.gz;       ( cd uuid-1.6.2;         sed -i -e "s/-m 755 uuid /-m 755 uuid.exe /" Makefile.in;         ./configure --host=$CROSS --prefix=$MINGW_ROOT;         make;         make install;       );     };     cd /mingw/src &&     CROSS=x86_64-w64-mingw32 MINGW_ROOT=/usr/x86_64-w64-mingw32/sys-root/mingw install_uuid &&     rm -rf uuid-1.6.2 &&     CROSS=i686-w64-mingw32 MINGW_ROOT=/usr/i686-w64-mingw32/sys-root/mingw install_uuid &&     rm -rf uuid-1.6.2
#11 sha256:4783d3a66bb2ae6a14a234bfeebb5ee17cc59b2f9c63a6a7f56917a7910efa17
#11 0.420 configure: WARNING: If you wanted to set the --build type, don''t use --host.
#11 0.420     If a cross compiler is detected then cross compile mode will be used.
#11 0.646 shtool:echo:Warning: unable to determine terminal sequence for bold mode
#11 0.658 Configuring OSSP uuid (Universally Unique Identifier), version 1.6.2 (04-Jul-2008)
#11 0.658 checking whether make sets $(MAKE)... yes
#11 0.666 checking for x86_64-w64-mingw32-gcc... x86_64-w64-mingw32-gcc
#11 0.679 checking for C compiler default output file name... a.exe
#11 0.716 checking whether the C compiler works... yes
#11 0.720 checking whether we are cross compiling... yes
#11 0.720 checking for suffix of executables... .exe
#11 0.754 checking for suffix of object files... o
#11 0.776 checking whether we are using the GNU C compiler... yes
#11 0.798 checking whether x86_64-w64-mingw32-gcc accepts -g... yes
#11 0.821 checking for x86_64-w64-mingw32-gcc option to accept ISO C89... none needed
#11 0.860 checking whether compiler option(s) -pipe work... yes
#11 0.883 checking for compilation debug mode... disabled
#11 0.883 checking how to run the C preprocessor... x86_64-w64-mingw32-gcc -E
#11 0.935 checking for grep that handles long lines and -e... /usr/bin/grep
#11 0.937 checking for egrep... /usr/bin/grep -E
#11 0.939 checking for ANSI C header files... yes
#11 0.991 checking for sys/types.h... yes
#11 1.023 checking for sys/stat.h... yes
#11 1.056 checking for stdlib.h... yes
#11 1.088 checking for string.h... yes
#11 1.122 checking for memory.h... yes
#11 1.155 checking for strings.h... yes
#11 1.188 checking for inttypes.h... yes
#11 1.222 checking for stdint.h... yes
#11 1.255 checking for unistd.h... yes
#11 1.289 checking whether to build against external Dmalloc library... no
#11 1.302 checking build system type... x86_64-unknown-linux-gnu
#11 1.324 checking host system type... x86_64-w64-mingw32
#11 1.336 checking for a sed that does not truncate output... /usr/bin/sed
#11 1.340 checking for fgrep... /usr/bin/grep -F
#11 1.342 checking for ld used by x86_64-w64-mingw32-gcc... /usr/x86_64-w64-mingw32/bin/ld
#11 1.359 checking if the linker (/usr/x86_64-w64-mingw32/bin/ld) is GNU ld... yes
#11 1.360 checking for BSD- or MS-compatible name lister (nm)... /usr/bin/x86_64-w64-mingw32-nm -B
#11 1.363 checking the name lister (/usr/bin/x86_64-w64-mingw32-nm -B) interface... BSD nm
#11 1.377 checking whether ln -s works... yes
#11 1.378 checking the maximum length of command line arguments... 1572864
#11 1.382 checking whether the shell understands some XSI constructs... yes
#11 1.382 checking whether the shell understands "+="... yes
#11 1.386 checking for /usr/x86_64-w64-mingw32/bin/ld option to reload object files... -r
#11 1.386 checking how to recognize dependent libraries... file_magic ^x86 archive import|^x86 DLL
#11 1.388 checking for x86_64-w64-mingw32-ar... x86_64-w64-mingw32-ar
#11 1.389 checking for x86_64-w64-mingw32-strip... x86_64-w64-mingw32-strip
#11 1.390 checking for x86_64-w64-mingw32-ranlib... x86_64-w64-mingw32-ranlib
#11 1.390 checking command to parse /usr/bin/x86_64-w64-mingw32-nm -B output from x86_64-w64-mingw32-gcc object... ok
#11 1.453 checking for dlfcn.h... no
#11 1.487 checking for objdir... .libs
#11 1.544 checking if x86_64-w64-mingw32-gcc supports -fno-rtti -fno-exceptions... no
#11 1.559 checking for x86_64-w64-mingw32-gcc option to produce PIC... -DDLL_EXPORT -DPIC
#11 1.559 checking if x86_64-w64-mingw32-gcc PIC flag -DDLL_EXPORT -DPIC works... yes
#11 1.574 checking if x86_64-w64-mingw32-gcc static flag -static works... no
#11 1.599 checking if x86_64-w64-mingw32-gcc supports -c -o file.o... yes
#11 1.619 checking if x86_64-w64-mingw32-gcc supports -c -o file.o... (cached) yes
#11 1.620 checking whether the x86_64-w64-mingw32-gcc linker (/usr/x86_64-w64-mingw32/bin/ld) supports shared libraries... yes
#11 1.624 checking whether -lc should be explicitly linked in... yes
#11 1.653 checking dynamic linker characteristics... Win32 ld.exe
#11 1.668 checking how to hardcode library paths into programs... immediate
#11 1.668 checking whether stripping libraries is possible... yes
#11 1.670 checking if libtool supports shared libraries... yes
#11 1.670 checking whether to build shared libraries... yes
#11 1.670 checking whether to build static libraries... yes
#11 1.672 checking for x86_64-w64-mingw32-g++... x86_64-w64-mingw32-g++
#11 1.683 checking whether we are using the GNU C++ compiler... yes
#11 1.707 checking whether x86_64-w64-mingw32-g++ accepts -g... yes
#11 1.734 checking how to run the C++ preprocessor... x86_64-w64-mingw32-g++ -E
#11 1.788 checking for gethostname in -lnsl... no
#11 1.827 checking for gethostbyname in -lnsl... no
#11 1.863 checking for accept in -lsocket... no
#11 1.897 checking for va_copy() function... configure: error: cannot run test program while cross compiling
#11 1.899 See 'config.log' for more details.
#11 1.929 make: *** No targets specified and no makefile found.  Stop.
#11 1.932 make: *** No rule to make target 'install'.  Stop.
#11 ERROR: executor failed running [/bin/sh -c install_uuid() {       tar zxf uuid-$UUID_VERSION.tar.gz;       ( cd uuid-$UUID_VERSION;         sed -i -e "s/-m 755 uuid /-m 755 uuid.exe /" Makefile.in;         ./configure --host=$CROSS --prefix=$MINGW_ROOT;         make;         make install;       );     };     cd /mingw/src &&     CROSS=$CROSS64 MINGW_ROOT=$MINGW64_ROOT install_uuid &&     rm -rf uuid-$UUID_VERSION &&     CROSS=$CROSS32 MINGW_ROOT=$MINGW32_ROOT install_uuid &&     rm -rf uuid-$UUID_VERSION]: exit code: 2

Has anyone else seen this? Am I doing something wrong? @jan?

Rather odd. I’ve updated the docker yesterday after discovering MinGW from Fedora 33 was not without problems. I pinned Fedora at 32. I’ve built the docker since on two machines without any issues. Latest commit is 657d81147b043f0c0e7bf60ab5797a7bf3dc847b.

That’s so weird. By any chance, does your dev environment have the ability to natively run .exe files, like with binfmt_misc or something?

Hmm. Yes. Both machines have wine-binfmt installed. Would that inherit to the Docker container?

Likely yes, I’d imagine. (The funny thing is, my dev environment is actually Ubuntu on WSL under Win10 rather than bare-metal Linux, so it has native support for Windows binaries, but the Docker daemon is running under a separate WSL instance which specifically has Windows interop disabled.)