Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Failed to build Electrum for windows #6971

Closed
Toporin opened this issue Jan 26, 2021 · 13 comments
Closed

Failed to build Electrum for windows #6971

Toporin opened this issue Jan 26, 2021 · 13 comments

Comments

@Toporin
Copy link
Contributor

Toporin commented Jan 26, 2021

I tried to build Electrum (master commit @ d6e2930) for Windows using the deterministic build scripts and it failed silently with the following trace:

log
💬 INFO:  Installing Python.
gpg: directory '/root/.gnupg' created
gpg: keybox '/root/.gnupg/keyring-electrum-build-python-dev.gpg' created
gpg: key FC624643487034E5: 5 signatures not checked due to missing keys
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key FC624643487034E5: public key "Steve Dower (Python Release Signing) <steve.dower@microsoft.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1
gpg: no ultimately trusted keys found
Installing core...
--2021-01-26 14:52:03--  https://www.python.org/ftp/python/3.8.7/win32/core.msi
Resolving www.python.org (www.python.org)... 151.101.36.223, 2a04:4e42:9::223
Connecting to www.python.org (www.python.org)|151.101.36.223|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1425408 (1.4M) [application/octet-stream]
Saving to: ‘/opt/wine64/drive_c/electrum/contrib/build-wine/.cache/python3.8.7-win32/core.msi’

/opt/wine64/drive_c 100%[===================>]   1.36M  4.45MB/s    in 0.3s    

2021-01-26 14:52:04 (4.45 MB/s) - ‘/opt/wine64/drive_c/electrum/contrib/build-wine/.cache/python3.8.7-win32/core.msi’ saved [1425408/1425408]

--2021-01-26 14:52:04--  https://www.python.org/ftp/python/3.8.7/win32/core.msi.asc
Resolving www.python.org (www.python.org)... 151.101.36.223, 2a04:4e42:9::223
Connecting to www.python.org (www.python.org)|151.101.36.223|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 836 [application/octet-stream]
Saving to: ‘/opt/wine64/drive_c/electrum/contrib/build-wine/.cache/python3.8.7-win32/core.msi.asc’

/opt/wine64/drive_c 100%[===================>]     836  --.-KB/s    in 0s      

2021-01-26 14:52:04 (18.7 MB/s) - ‘/opt/wine64/drive_c/electrum/contrib/build-wine/.cache/python3.8.7-win32/core.msi.asc’ saved [836/836]

🗯 ERROR: prepare-wine failed
`

As far as I can tell, the error could be related to commit 3d640dfc1ff5809e3a309a3cf18734ee6aaf81e1 (windows binaries: bump python version (3.7.9->3.8.7)) since with python v3.7.9 it builds fine.

The build fails at this line (line 60 of https://github.com/spesmilo/electrum/blob/3d640dfc1ff5809e3a309a3cf18734ee6aaf81e1/contrib/build-wine/prepare-wine.sh):
`wine msiexec /i "$PYTHON_DOWNLOADS/${msifile}.msi" /qb TARGETDIR=$PYHOME`

Here is the full trace:
`
sudo docker run -it \
>     --name electrum-wine-builder-cont \
>     -v $PWD:/opt/wine64/drive_c/electrum \
>     --rm \
>     --workdir /opt/wine64/drive_c/electrum/contrib/build-wine \
>     electrum-wine-builder-img \
>     ./build.sh
💬 INFO:  Clearing /opt/wine64/drive_c/electrum/contrib/build-wine/build and /opt/wine64/drive_c/electrum/contrib/build-wine/dist...
💬 INFO:  Building secp256k1...
Cloning into 'secp256k1'...
remote: Enumerating objects: 48, done.
remote: Counting objects: 100% (48/48), done.
remote: Compressing objects: 100% (42/42), done.
remote: Total 6103 (delta 18), reused 23 (delta 6), pack-reused 6055
Receiving objects: 100% (6103/6103), 2.63 MiB | 1.36 MiB/s, done.
Resolving deltas: 100% (4268/4268), done.
HEAD is now at 659d0d4 Merge #880: Add parens around ROUND_TO_ALIGN's parameter.
Note: switching to 'dbd41db16a0e91b2566820898a3ab2d7dad4fe00^{commit}'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at dbd41db Merge #759: Fix uninitialized variables in ecmult_multi test
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, 'build-aux'.
libtoolize: copying file 'build-aux/ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'build-aux/m4'.
libtoolize: copying file 'build-aux/m4/libtool.m4'
libtoolize: copying file 'build-aux/m4/ltoptions.m4'
libtoolize: copying file 'build-aux/m4/ltsugar.m4'
libtoolize: copying file 'build-aux/m4/ltversion.m4'
libtoolize: copying file 'build-aux/m4/lt~obsolete.m4'
configure.ac:15: installing 'build-aux/compile'
configure.ac:5: installing 'build-aux/config.guess'
configure.ac:5: installing 'build-aux/config.sub'
configure.ac:9: installing 'build-aux/install-sh'
configure.ac:9: installing 'build-aux/missing'
Makefile.am: installing 'build-aux/depcomp'
parallel-tests: installing 'build-aux/test-driver'
checking build system type... x86_64-pc-linux-gnu
checking host system type... i686-w64-mingw32
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for i686-w64-mingw32-strip... i686-w64-mingw32-strip
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking how to print strings... printf
checking whether make supports the include directive... yes (GNU style)
checking for i686-w64-mingw32-gcc... i686-w64-mingw32-gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.exe
checking for suffix of executables... .exe
checking whether we are cross compiling... yes
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether i686-w64-mingw32-gcc accepts -g... yes
checking for i686-w64-mingw32-gcc option to accept ISO C89... none needed
checking whether i686-w64-mingw32-gcc understands -c and -o together... yes
checking dependency style of i686-w64-mingw32-gcc... gcc3
checking for a sed that does not truncate output... /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by i686-w64-mingw32-gcc... /usr/bin/i686-w64-mingw32-ld
checking if the linker (/usr/bin/i686-w64-mingw32-ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/i686-w64-mingw32-nm -B
checking the name lister (/usr/bin/i686-w64-mingw32-nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking how to convert x86_64-pc-linux-gnu file names to i686-w64-mingw32 format... func_convert_file_nix_to_w32
checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/i686-w64-mingw32-ld option to reload object files... -r
checking for i686-w64-mingw32-objdump... i686-w64-mingw32-objdump
checking how to recognize dependent libraries... file_magic ^x86 archive import|^x86 DLL
checking for i686-w64-mingw32-dlltool... i686-w64-mingw32-dlltool
checking how to associate runtime and link libraries... func_cygming_dll_for_implib
checking for i686-w64-mingw32-ar... i686-w64-mingw32-ar
checking for archiver @FILE support... @
checking for i686-w64-mingw32-strip... (cached) i686-w64-mingw32-strip
checking for i686-w64-mingw32-ranlib... i686-w64-mingw32-ranlib
checking command to parse /usr/bin/i686-w64-mingw32-nm -B output from i686-w64-mingw32-gcc object... ok
checking for sysroot... no
checking for a working dd... /usr/bin/dd
checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1
checking for i686-w64-mingw32-mt... no
checking for mt... no
checking if : is a manifest tool... no
checking how to run the C preprocessor... i686-w64-mingw32-gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... no
checking for objdir... .libs
checking if i686-w64-mingw32-gcc supports -fno-rtti -fno-exceptions... no
checking for i686-w64-mingw32-gcc option to produce PIC... -DDLL_EXPORT -DPIC
checking if i686-w64-mingw32-gcc PIC flag -DDLL_EXPORT -DPIC works... yes
checking if i686-w64-mingw32-gcc static flag -static works... yes
checking if i686-w64-mingw32-gcc supports -c -o file.o... yes
checking if i686-w64-mingw32-gcc supports -c -o file.o... (cached) yes
checking whether the i686-w64-mingw32-gcc linker (/usr/bin/i686-w64-mingw32-ld) supports shared libraries... yes
checking whether -lc should be explicitly linked in... yes
checking dynamic linker characteristics... Win32 ld.exe
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... no
checking whether make supports nested variables... (cached) yes
checking for i686-w64-mingw32-pkg-config... /usr/bin/i686-w64-mingw32-pkg-config
checking pkg-config is at least version 0.9.0... Please install dpkg-dev to use pkg-config when cross-building
no
checking for i686-w64-mingw32-ar... /usr/bin/i686-w64-mingw32-ar
checking for i686-w64-mingw32-ranlib... /usr/bin/i686-w64-mingw32-ranlib
checking for i686-w64-mingw32-strip... /usr/bin/i686-w64-mingw32-strip
checking for gcc... gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... (cached) none needed
checking whether gcc understands -c and -o together... (cached) yes
checking dependency style of gcc... (cached) gcc3
checking how to run the C preprocessor... gcc -E
checking for i686-w64-mingw32-gcc option to accept ISO C89... (cached) none needed
checking dependency style of i686-w64-mingw32-gcc... gcc3
checking if i686-w64-mingw32-gcc supports -std=c89 -pedantic -Wall -Wextra -Wcast-align -Wnested-externs -Wshadow -Wstrict-prototypes -Wno-unused-function -Wno-long-long -Wno-overlength-strings... yes
checking if i686-w64-mingw32-gcc supports -fvisibility=hidden... yes
checking for __int128... no
checking valgrind/memcheck.h usability... no
checking valgrind/memcheck.h presence... no
checking for valgrind/memcheck.h... no
checking if native gcc supports -Wall -Wextra -Wno-unused-function... yes
checking for working native compiler: gcc... yes
checking for x86_64 assembly availability... no
checking gmp.h usability... no
checking gmp.h presence... no
checking for gmp.h... no
checking whether byte ordering is bigendian... no
configure: ******
configure: WARNING: experimental build
configure: Experimental features do not have stable APIs or properties, and may not be safe for production use.
configure: Building ECDH module: yes
configure: ******
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating libsecp256k1.pc
config.status: creating src/libsecp256k1-config.h
config.status: executing depfiles commands
config.status: executing libtool commands

Build Options:
  with endomorphism       = no
  with ecmult precomp     = yes
  with external callbacks = no
  with benchmarks         = no
  with coverage           = no
  module ecdh             = yes
  module recovery         = yes

  asm                     = no
  bignum                  = no
  field                   = 32bit
  scalar                  = 32bit
  ecmult window size      = 15
  ecmult gen prec. bits   = 4

  valgrind                = no
  CC                      = i686-w64-mingw32-gcc
  CFLAGS                  = -O2 -fvisibility=hidden -std=c89 -pedantic -Wall -Wextra -Wcast-align -Wnested-externs -Wshadow -Wstrict-prototypes -Wno-unused-function -Wno-long-long -Wno-overlength-strings -W -g
  CPPFLAGS                = 
  LDFLAGS                 = 

gcc -I. -I./src -Wall -Wextra -Wno-unused-function -g -O2 -c src/gen_context.c -o gen_context.o
gcc -Wall -Wextra -Wno-unused-function -g -O2  gen_context.o -o gen_context
./gen_context
  CC       src/libsecp256k1_la-secp256k1.lo
  CCLD     libsecp256k1.la
make[1]: Entering directory '/opt/wine64/drive_c/electrum/contrib/secp256k1'
 /usr/bin/mkdir -p '/opt/wine64/drive_c/electrum/contrib/secp256k1/dist/lib'
 /bin/bash ./libtool   --mode=install /usr/bin/install -c   libsecp256k1.la '/opt/wine64/drive_c/electrum/contrib/secp256k1/dist/lib'
libtool: install: /usr/bin/install -c .libs/libsecp256k1.dll.a /opt/wine64/drive_c/electrum/contrib/secp256k1/dist/lib/libsecp256k1.dll.a
libtool: install: base_file=`basename libsecp256k1.la`
libtool: install:  dlpath=`/bin/bash 2>&1 -c '. .libs/'libsecp256k1.la'i; echo libsecp256k1-0.dll'`
libtool: install:  dldir=/opt/wine64/drive_c/electrum/contrib/secp256k1/dist/lib/`dirname ../bin/libsecp256k1-0.dll`
libtool: install:  test -d /opt/wine64/drive_c/electrum/contrib/secp256k1/dist/lib/../bin || mkdir -p /opt/wine64/drive_c/electrum/contrib/secp256k1/dist/lib/../bin
libtool: install:  /usr/bin/install -c .libs/libsecp256k1-0.dll /opt/wine64/drive_c/electrum/contrib/secp256k1/dist/lib/../bin/libsecp256k1-0.dll
libtool: install:  chmod a+x /opt/wine64/drive_c/electrum/contrib/secp256k1/dist/lib/../bin/libsecp256k1-0.dll
libtool: install:  if test -n '' && test -n 'i686-w64-mingw32-strip --strip-unneeded'; then eval 'i686-w64-mingw32-strip --strip-unneeded /opt/wine64/drive_c/electrum/contrib/secp256k1/dist/lib/../bin/libsecp256k1-0.dll' || exit 0; fi
libtool: install: /usr/bin/install -c .libs/libsecp256k1.lai /opt/wine64/drive_c/electrum/contrib/secp256k1/dist/lib/libsecp256k1.la
 /usr/bin/mkdir -p '/opt/wine64/drive_c/electrum/contrib/secp256k1/dist/include'
 /usr/bin/install -c -m 644 include/secp256k1.h include/secp256k1_preallocated.h include/secp256k1_ecdh.h include/secp256k1_recovery.h '/opt/wine64/drive_c/electrum/contrib/secp256k1/dist/include'
 /usr/bin/mkdir -p '/opt/wine64/drive_c/electrum/contrib/secp256k1/dist/lib/pkgconfig'
 /usr/bin/install -c -m 644 libsecp256k1.pc '/opt/wine64/drive_c/electrum/contrib/secp256k1/dist/lib/pkgconfig'
make[1]: Leaving directory '/opt/wine64/drive_c/electrum/contrib/secp256k1'
'/opt/wine64/drive_c/electrum/contrib/secp256k1/dist/lib/../bin/libsecp256k1-0.dll' -> '/opt/wine64/drive_c/electrum/contrib/../electrum/libsecp256k1-0.dll'
💬 INFO:  ../bin/libsecp256k1-0.dll has been placed in the inner 'electrum' folder.
💬 INFO:  Building zbar...
Cloning into 'zbar'...
remote: Enumerating objects: 30, done.
remote: Counting objects: 100% (30/30), done.
remote: Compressing objects: 100% (25/25), done.
remote: Total 7249 (delta 9), reused 18 (delta 5), pack-reused 7219
Receiving objects: 100% (7249/7249), 4.88 MiB | 3.58 MiB/s, done.
Resolving deltas: 100% (3955/3955), done.
HEAD is now at 89e7900 configure.ac: Fix quote issue (autoconf 2.70 compat)
Note: switching to 'd2893738411be897a04caa42ffc13d1f6107d3c6^{commit}'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at d289373 zbarcam: minor syntax conformity change
autoreconf: Entering directory `.'
autoreconf: running: autopoint --force
autopoint: using AM_GNU_GETTEXT_REQUIRE_VERSION instead of AM_GNU_GETTEXT_VERSION
Copying file ABOUT-NLS
Copying file config/config.rpath
Copying file config/codeset.m4
Copying file config/extern-inline.m4
Copying file config/fcntl-o.m4
Copying file config/gettext.m4
Copying file config/glibc2.m4
Copying file config/glibc21.m4
Copying file config/iconv.m4
Copying file config/intdiv0.m4
Copying file config/intl.m4
Copying file config/intldir.m4
Copying file config/intlmacosx.m4
Copying file config/intmax.m4
Copying file config/inttypes-pri.m4
Copying file config/inttypes_h.m4
Copying file config/lcmessage.m4
Copying file config/lib-ld.m4
Copying file config/lib-link.m4
Copying file config/lib-prefix.m4
Copying file config/lock.m4
Copying file config/longlong.m4
Copying file config/nls.m4
Copying file config/po.m4
Copying file config/printf-posix.m4
Copying file config/progtest.m4
Copying file config/size_max.m4
Copying file config/stdint_h.m4
Copying file config/threadlib.m4
Copying file config/uintmax_t.m4
Copying file config/visibility.m4
Copying file config/wchar_t.m4
Copying file config/wint_t.m4
Copying file config/xsize.m4
Copying file po/Makefile.in.in
Copying file po/Makevars.template
Copying file po/Rules-quot
Copying file po/boldquot.sed
Copying file po/en@boldquot.header
Copying file po/en@quot.header
Copying file po/insert-header.sin
Copying file po/quot.sed
Copying file po/remove-potcdate.sin
autoreconf: running: aclocal --force -I config
autoreconf: configure.ac: tracing
autoreconf: running: libtoolize --copy --force
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, 'config'.
libtoolize: copying file 'config/ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'config'.
libtoolize: copying file 'config/libtool.m4'
libtoolize: copying file 'config/ltoptions.m4'
libtoolize: copying file 'config/ltsugar.m4'
libtoolize: copying file 'config/ltversion.m4'
libtoolize: copying file 'config/lt~obsolete.m4'
autoreconf: running: /usr/bin/autoconf --force
autoreconf: running: /usr/bin/autoheader --force
autoreconf: running: automake --add-missing --copy --force-missing
configure.ac:13: installing 'config/compile'
configure.ac:13: installing 'config/config.guess'
configure.ac:13: installing 'config/config.sub'
configure.ac:8: installing 'config/install-sh'
configure.ac:8: installing 'config/missing'
Makefile.am: installing 'config/depcomp'
autoreconf: Leaving directory `.'
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for i686-w64-mingw32-strip... i686-w64-mingw32-strip
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking build system type... x86_64-pc-linux-gnu
checking host system type... i686-w64-mingw32
checking how to print strings... printf
checking whether make supports the include directive... yes (GNU style)
checking for i686-w64-mingw32-gcc... i686-w64-mingw32-gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.exe
checking for suffix of executables... .exe
checking whether we are cross compiling... yes
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether i686-w64-mingw32-gcc accepts -g... yes
checking for i686-w64-mingw32-gcc option to accept ISO C89... none needed
checking whether i686-w64-mingw32-gcc understands -c and -o together... yes
checking dependency style of i686-w64-mingw32-gcc... none
checking for a sed that does not truncate output... /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by i686-w64-mingw32-gcc... /usr/bin/i686-w64-mingw32-ld
checking if the linker (/usr/bin/i686-w64-mingw32-ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/i686-w64-mingw32-nm -B
checking the name lister (/usr/bin/i686-w64-mingw32-nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking how to convert x86_64-pc-linux-gnu file names to i686-w64-mingw32 format... func_convert_file_nix_to_w32
checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/i686-w64-mingw32-ld option to reload object files... -r
checking for i686-w64-mingw32-objdump... i686-w64-mingw32-objdump
checking how to recognize dependent libraries... file_magic ^x86 archive import|^x86 DLL
checking for i686-w64-mingw32-dlltool... i686-w64-mingw32-dlltool
checking how to associate runtime and link libraries... func_cygming_dll_for_implib
checking for i686-w64-mingw32-ar... i686-w64-mingw32-ar
checking for archiver @FILE support... @
checking for i686-w64-mingw32-strip... (cached) i686-w64-mingw32-strip
checking for i686-w64-mingw32-ranlib... i686-w64-mingw32-ranlib
checking command to parse /usr/bin/i686-w64-mingw32-nm -B output from i686-w64-mingw32-gcc object... ok
checking for sysroot... no
checking for a working dd... /usr/bin/dd
checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1
checking for i686-w64-mingw32-mt... no
checking for mt... no
checking if : is a manifest tool... no
checking how to run the C preprocessor... i686-w64-mingw32-gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... no
checking for i686-w64-mingw32-as... i686-w64-mingw32-as
checking for i686-w64-mingw32-dlltool... (cached) i686-w64-mingw32-dlltool
checking for i686-w64-mingw32-objdump... (cached) i686-w64-mingw32-objdump
checking for objdir... .libs
checking if i686-w64-mingw32-gcc supports -fno-rtti -fno-exceptions... no
checking for i686-w64-mingw32-gcc option to produce PIC... -DDLL_EXPORT -DPIC
checking if i686-w64-mingw32-gcc PIC flag -DDLL_EXPORT -DPIC works... yes
checking if i686-w64-mingw32-gcc static flag -static works... yes
checking if i686-w64-mingw32-gcc supports -c -o file.o... yes
checking if i686-w64-mingw32-gcc supports -c -o file.o... (cached) yes
checking whether the i686-w64-mingw32-gcc linker (/usr/bin/i686-w64-mingw32-ld) supports shared libraries... yes
checking whether -lc should be explicitly linked in... yes
checking dynamic linker characteristics... Win32 ld.exe
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... no
checking for i686-w64-mingw32-windres... i686-w64-mingw32-windres
checking whether make supports nested variables... (cached) yes
checking for size_t... yes
checking for working alloca.h... no
checking for alloca... yes
checking for error_at_line... no
checking for _LARGEFILE_SOURCE value needed for large files... no
checking arpa/inet.h usability... no
checking arpa/inet.h presence... no
checking for arpa/inet.h... no
checking malloc.h usability... yes
checking malloc.h presence... yes
checking for malloc.h... yes
checking mntent.h usability... no
checking mntent.h presence... no
checking for mntent.h... no
checking netdb.h usability... no
checking netdb.h presence... no
checking for netdb.h... no
checking netinet/in.h usability... no
checking netinet/in.h presence... no
checking for netinet/in.h... no
checking shadow.h usability... no
checking shadow.h presence... no
checking for shadow.h... no
checking sys/file.h usability... yes
checking sys/file.h presence... yes
checking for sys/file.h... yes
checking sys/mount.h usability... no
checking sys/mount.h presence... no
checking for sys/mount.h... no
checking sys/param.h usability... yes
checking sys/param.h presence... yes
checking for sys/param.h... yes
checking sys/socket.h usability... no
checking sys/socket.h presence... no
checking for sys/socket.h... no
checking sys/statfs.h usability... no
checking sys/statfs.h presence... no
checking for sys/statfs.h... no
checking sys/statvfs.h usability... no
checking sys/statvfs.h presence... no
checking for sys/statvfs.h... no
checking sys/vfs.h usability... no
checking sys/vfs.h presence... no
checking for sys/vfs.h... no
checking for unistd.h... (cached) yes
checking values.h usability... no
checking values.h presence... no
checking for values.h... no
checking for i686-w64-mingw32-gcc... (cached) i686-w64-mingw32-gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether i686-w64-mingw32-gcc accepts -g... (cached) yes
checking for i686-w64-mingw32-gcc option to accept ISO C89... (cached) none needed
checking whether i686-w64-mingw32-gcc understands -c and -o together... (cached) yes
checking dependency style of i686-w64-mingw32-gcc... (cached) none
checking for i686-w64-mingw32-g++... i686-w64-mingw32-g++
checking whether we are using the GNU C++ compiler... yes
checking whether i686-w64-mingw32-g++ accepts -g... yes
checking dependency style of i686-w64-mingw32-g++... none
checking how to run the C++ preprocessor... i686-w64-mingw32-g++ -E
checking for ld used by i686-w64-mingw32-g++... /usr/bin/i686-w64-mingw32-ld
checking if the linker (/usr/bin/i686-w64-mingw32-ld) is GNU ld... yes
checking whether the i686-w64-mingw32-g++ linker (/usr/bin/i686-w64-mingw32-ld) supports shared libraries... yes
checking for i686-w64-mingw32-g++ option to produce PIC... -DDLL_EXPORT -DPIC
checking if i686-w64-mingw32-g++ PIC flag -DDLL_EXPORT -DPIC works... yes
checking if i686-w64-mingw32-g++ static flag -static works... yes
checking if i686-w64-mingw32-g++ supports -c -o file.o... yes
checking if i686-w64-mingw32-g++ supports -c -o file.o... (cached) yes
checking whether the i686-w64-mingw32-g++ linker (/usr/bin/i686-w64-mingw32-ld) supports shared libraries... yes
checking dynamic linker characteristics... Win32 ld.exe
checking how to hardcode library paths into programs... immediate
checking for i686-w64-mingw32-gcc option to accept ISO C99... none needed
checking for i686-w64-mingw32-gcc option to accept ISO Standard C... (cached) none needed
checking for i686-w64-mingw32-pkg-config... /usr/bin/i686-w64-mingw32-pkg-config
checking pkg-config is at least version 0.9.0... Please install dpkg-dev to use pkg-config when cross-building
no
checking for xmlto... no
checking whether to build EAN symbologies... no
checking whether to build DataBar symbology... no
checking whether to build Code 128 symbology... no
checking whether to build Code 93 symbology... no
checking whether to build Code 39 symbology... no
checking whether to build Codabar symbology... no
checking whether to build Interleaved 2 of 5 symbology... no
checking whether to build QR Code... yes
checking whether to build SQ Code... no
checking whether to build PDF417 symbology (incomplete)... no
checking for library containing clock_gettime... -lpthread
checking for ld used by i686-w64-mingw32-gcc... /usr/bin/i686-w64-mingw32-ld
checking if the linker (/usr/bin/i686-w64-mingw32-ld) is GNU ld... yes
checking for shared library run path origin... done
checking for iconv... yes
checking for working iconv... guessing yes
checking how to link with libiconv... -liconv
checking for iconv declaration... 
         extern size_t iconv (iconv_t cd, const char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
checking whether NLS is requested... yes
checking for msgfmt... /usr/bin/msgfmt
checking for gmsgfmt... /usr/bin/msgfmt
checking for xgettext... /usr/bin/xgettext
checking for msgmerge... /usr/bin/msgmerge
checking for CFPreferencesCopyAppValue... no
checking for CFLocaleCopyCurrent... no
checking for GNU gettext in libc... no
checking for iconv... (cached) yes
checking for working iconv... (cached) guessing yes
checking how to link with libiconv... -liconv
checking for GNU gettext in libintl... no
checking whether to use NLS... no
checking poll.h usability... no
checking poll.h presence... no
checking for poll.h... no
configure: WARNING: libv4l not detected. Install it to support more cameras!
checking for X... disabled
checking for X11/extensions/XShm.h... no
checking for X11/extensions/Xvlib.h... no
configure: image scanning disabled -- zbarimg will *not* be built
checking for javac... no
checking for jikes... no
checking for ecj... no
checking for gcj... no
checking for javah... no
checking for jar... no
checking for java... no
checking whether to enable assertions... yes
checking errno.h usability... yes
checking errno.h presence... yes
checking for errno.h... yes
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking features.h usability... no
checking features.h presence... no
checking for features.h... no
checking for inttypes.h... (cached) yes
checking float.h usability... yes
checking float.h presence... yes
checking for float.h... yes
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking locale.h usability... yes
checking locale.h presence... yes
checking for locale.h... yes
checking stddef.h usability... yes
checking stddef.h presence... yes
checking for stddef.h... yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking for unistd.h... (cached) yes
checking for sys/types.h... (cached) yes
checking for sys/stat.h... (cached) yes
checking sys/ioctl.h usability... no
checking sys/ioctl.h presence... no
checking for sys/ioctl.h... no
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking sys/times.h usability... no
checking sys/times.h presence... no
checking for sys/times.h... no
checking sys/ipc.h usability... no
checking sys/ipc.h presence... no
checking for sys/ipc.h... no
checking sys/shm.h usability... no
checking sys/shm.h presence... no
checking for sys/shm.h... no
checking sys/mman.h usability... no
checking sys/mman.h presence... no
checking for sys/mman.h... no
checking whether sys/types.h defines makedev... no
checking sys/mkdev.h usability... no
checking sys/mkdev.h presence... no
checking for sys/mkdev.h... no
checking sys/sysmacros.h usability... no
checking sys/sysmacros.h presence... no
checking for sys/sysmacros.h... no
checking for stdbool.h that conforms to C99... yes
checking for _Bool... yes
checking for int32_t... yes
checking for uint32_t... yes
checking for uint8_t... yes
checking for uintptr_t... yes
checking for uid_t in sys/types.h... no
checking for int32_t... (cached) yes
checking for int64_t... yes
checking for off_t... yes
checking for size_t... (cached) yes
checking for uint16_t... yes
checking for uint32_t... (cached) yes
checking for uint64_t... yes
checking for uint8_t... (cached) yes
checking for struct stat.st_rdev... yes
checking for an ANSI C-conforming const... yes
checking for inline... inline
checking for stdlib.h... (cached) yes
checking for unistd.h... (cached) yes
checking for sys/param.h... (cached) yes
checking for getpagesize... yes
checking for working mmap... no
checking for alarm... yes
checking for clock_gettime... yes
checking for floor... yes
checking for getcwd... yes
checking for gettimeofday... yes
checking for localeconv... yes
checking for memchr... yes
checking for memmove... yes
checking for memset... yes
checking for modf... yes
checking for munmap... no
checking for pow... yes
checking for select... no
checking for setenv... no
checking for sqrt... yes
checking for strcasecmp... yes
checking for strchr... yes
checking for strdup... yes
checking for strerror... yes
checking for strrchr... yes
checking for strstr... yes
checking for strtol... yes
checking for strtoul... yes
checking for malloc... yes
checking for realloc... yes
Generating config files
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating gtk/Makefile
config.status: creating java/Makefile
config.status: creating po/Makefile.in
config.status: creating zbar/Makefile
config.status: creating zbar.pc
config.status: creating zbar-gtk.pc
config.status: creating doc/doxygen.conf
config.status: creating test/test_examples.sh
config.status: creating test/check_dbus.sh
config.status: creating include/config.h
config.status: executing depfiles commands
config.status: executing libtool commands
config.status: executing po-directories commands
config.status: creating po/POTFILES
config.status: creating po/Makefile
config.status: executing doc/version.xml commands
writing new doc/version.xml
config.status: executing doc/reldate.xml commands
writing new doc/reldate.xml

please verify that the detected configuration matches your expectations:
------------------------------------------------------------------------
DirectShow driver      --with-directshow=yes
pthreads               --enable-pthread=no
doc                    --enable-doc=no
v4l                    --enable-video=yes
jpeg                   --with-jpeg=no
Python                 --with-python=no 
GTK                    --with-gtk=no       
GObject introspection  --with-gir=no
Qt                     --with-qt=no         
Java                   --with-java=no
ImageMagick            --with-imagemagick=no
Enabled codes:         qrcode
Disabled codes:        ean databar code128 code93 code39 codabar i25 sqcode pdf417

        => libv4l will *NOT* be used
        => JPEG image conversions will *NOT* be supported
        => the zbarimg file scanner will *NOT* be built
        => GTK support will *NOT* be built
        => the Qt widget will *NOT* be built
        => the Java interface will *NOT* be built
        => the Java unit test will *NOT* be enabled
make  all-recursive
make[1]: Entering directory '/opt/wine64/drive_c/electrum/contrib/zbar'
Making all in zbar
make[2]: Entering directory '/opt/wine64/drive_c/electrum/contrib/zbar/zbar'
  CC       libzbar_la-error.lo
  CC       libzbar_la-config.lo
  CC       libzbar_la-symbol.lo
  CC       libzbar_la-image.lo
  CC       libzbar_la-convert.lo
  CC       libzbar_la-processor.lo
  CC       libzbar_la-refcnt.lo
  CC       libzbar_la-window.lo
  CC       libzbar_la-video.lo
  CC       libzbar_la-img_scanner.lo
  CC       libzbar_la-scanner.lo
  CC       libzbar_la-decoder.lo
  CC       libzbar_la-misc.lo
  CC       processor/libzbar_la-win.lo
/bin/bash ../libtool --tag=RC   \
--mode=compile i686-w64-mingw32-windres -DHAVE_CONFIG_H -I. -I../include  \
-I../include  -o libzbar-rc.lo libzbar.rc
libtool: compile:  i686-w64-mingw32-windres -DHAVE_CONFIG_H -I. -I../include -I../include libzbar.rc  -o .libs/libzbar-rc.o
  CC       processor/libzbar_la-lock.lo
  CC       decoder/libzbar_la-qr_finder.lo
  CC       qrcode/libzbar_la-qrdec.lo
  CC       qrcode/libzbar_la-qrdectxt.lo
  CC       qrcode/libzbar_la-rs.lo
  CC       qrcode/libzbar_la-isaac.lo
  CC       qrcode/libzbar_la-bch15_5.lo
  CC       qrcode/libzbar_la-binarize.lo
  CC       qrcode/libzbar_la-util.lo
qrcode/qrdectxt.c: In function ‘qr_code_data_list_extract_text’:
qrcode/qrdectxt.c:271:32: warning: passing argument 2 of ‘iconv’ from incompatible pointer type [-Wincompatible-pointer-types]
  271 |                  iconv(utf8_cd,&in,&inleft,&out,&outleft)==(size_t)-1;
      |                                ^~~
      |                                |
      |                                char **
In file included from qrcode/qrdectxt.c:10:
/usr/i686-w64-mingw32/include/iconv.h:17:48: note: expected ‘const char **’ but argument is of type ‘char **’
   17 | size_t iconv(iconv_t cd, WINICONV_CONST char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft);
qrcode/qrdectxt.c:311:40: warning: passing argument 2 of ‘iconv’ from incompatible pointer type [-Wincompatible-pointer-types]
  311 |                 err=iconv(enc_list[ei],&in,&inleft,&out,&outleft)==(size_t)-1;
      |                                        ^~~
      |                                        |
      |                                        char **
In file included from qrcode/qrdectxt.c:10:
/usr/i686-w64-mingw32/include/iconv.h:17:48: note: expected ‘const char **’ but argument is of type ‘char **’
   17 | size_t iconv(iconv_t cd, WINICONV_CONST char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft);
qrcode/qrdectxt.c:330:29: warning: passing argument 2 of ‘iconv’ from incompatible pointer type [-Wincompatible-pointer-types]
  330 |                iconv(eci_cd,&in,&inleft,&out,&outleft)==(size_t)-1;
      |                             ^~~
      |                             |
      |                             char **
In file included from qrcode/qrdectxt.c:10:
/usr/i686-w64-mingw32/include/iconv.h:17:48: note: expected ‘const char **’ but argument is of type ‘char **’
   17 | size_t iconv(iconv_t cd, WINICONV_CONST char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft);
In file included from ./image.h:26,
                 from qrcode/binarize.c:10:
../include/config.h:412: warning: "_WIN32_WINNT" redefined
  412 | #define _WIN32_WINNT 0x0500
      | 
In file included from /usr/share/mingw-w64/include/corecrt.h:10,
                 from /usr/share/mingw-w64/include/stdlib.h:9,
                 from qrcode/binarize.c:6:
/usr/share/mingw-w64/include/_mingw.h:234: note: this is the location of the previous definition
  234 | #define _WIN32_WINNT 0x502
      | 
  CC       video/libzbar_la-dshow.lo
  CC       window/libzbar_la-win.lo
  CC       window/libzbar_la-dib.lo
  CCLD     libzbar.la
make[2]: Leaving directory '/opt/wine64/drive_c/electrum/contrib/zbar/zbar'
Making all in .
make[2]: Entering directory '/opt/wine64/drive_c/electrum/contrib/zbar'
  CC       zbarcam/zbarcam-zbarcam.o
i686-w64-mingw32-windres -DHAVE_CONFIG_H -I. -I./include  \
-I./include  -o zbarcam/zbarcam-rc.o zbarcam/zbarcam.rc
  CCLD     zbarcam/zbarcam.exe
make[2]: Leaving directory '/opt/wine64/drive_c/electrum/contrib/zbar'
make[1]: Leaving directory '/opt/wine64/drive_c/electrum/contrib/zbar'
make  install-recursive
make[1]: Entering directory '/opt/wine64/drive_c/electrum/contrib/zbar'
Making install in zbar
make[2]: Entering directory '/opt/wine64/drive_c/electrum/contrib/zbar/zbar'
make[3]: Entering directory '/opt/wine64/drive_c/electrum/contrib/zbar/zbar'
 /usr/bin/mkdir -p '/opt/wine64/drive_c/electrum/contrib/zbar/dist/lib'
 /bin/bash ../libtool   --mode=install /usr/bin/install -c   libzbar.la '/opt/wine64/drive_c/electrum/contrib/zbar/dist/lib'
libtool: install: /usr/bin/install -c .libs/libzbar.dll.a /opt/wine64/drive_c/electrum/contrib/zbar/dist/lib/libzbar.dll.a
libtool: install: base_file=`basename libzbar.la`
libtool: install:  dlpath=`/bin/bash 2>&1 -c '. .libs/'libzbar.la'i; echo libzbar-0.dll'`
libtool: install:  dldir=/opt/wine64/drive_c/electrum/contrib/zbar/dist/lib/`dirname ../bin/libzbar-0.dll`
libtool: install:  test -d /opt/wine64/drive_c/electrum/contrib/zbar/dist/lib/../bin || mkdir -p /opt/wine64/drive_c/electrum/contrib/zbar/dist/lib/../bin
libtool: install:  /usr/bin/install -c .libs/libzbar-0.dll /opt/wine64/drive_c/electrum/contrib/zbar/dist/lib/../bin/libzbar-0.dll
libtool: install:  chmod a+x /opt/wine64/drive_c/electrum/contrib/zbar/dist/lib/../bin/libzbar-0.dll
libtool: install:  if test -n '' && test -n 'i686-w64-mingw32-strip --strip-unneeded'; then eval 'i686-w64-mingw32-strip --strip-unneeded /opt/wine64/drive_c/electrum/contrib/zbar/dist/lib/../bin/libzbar-0.dll' || exit 0; fi
libtool: install: /usr/bin/install -c .libs/libzbar.lai /opt/wine64/drive_c/electrum/contrib/zbar/dist/lib/libzbar.la
make[3]: Nothing to be done for 'install-data-am'.
make[3]: Leaving directory '/opt/wine64/drive_c/electrum/contrib/zbar/zbar'
make[2]: Leaving directory '/opt/wine64/drive_c/electrum/contrib/zbar/zbar'
Making install in .
make[2]: Entering directory '/opt/wine64/drive_c/electrum/contrib/zbar'
make[3]: Entering directory '/opt/wine64/drive_c/electrum/contrib/zbar'
 /usr/bin/mkdir -p '/opt/wine64/drive_c/electrum/contrib/zbar/dist/bin'
  /bin/bash ./libtool   --mode=install /usr/bin/install -c zbarcam/zbarcam.exe '/opt/wine64/drive_c/electrum/contrib/zbar/dist/bin'
libtool: install: /usr/bin/install -c zbarcam/.libs/zbarcam.exe /opt/wine64/drive_c/electrum/contrib/zbar/dist/bin/zbarcam.exe
 /usr/bin/mkdir -p '/opt/wine64/drive_c/electrum/contrib/zbar/dist/share/doc/zbar'
 /usr/bin/install -c -m 644 COPYING HACKING.md INSTALL.md LICENSE.md NEWS.md README.md TODO.md README-windows.md '/opt/wine64/drive_c/electrum/contrib/zbar/dist/share/doc/zbar'
 /usr/bin/mkdir -p '/opt/wine64/drive_c/electrum/contrib/zbar/dist/include'
 /usr/bin/install -c -m 644 include/zbar.h '/opt/wine64/drive_c/electrum/contrib/zbar/dist/include'
 /usr/bin/mkdir -p '/opt/wine64/drive_c/electrum/contrib/zbar/dist/lib/pkgconfig'
 /usr/bin/install -c -m 644 zbar.pc '/opt/wine64/drive_c/electrum/contrib/zbar/dist/lib/pkgconfig'
 /usr/bin/mkdir -p '/opt/wine64/drive_c/electrum/contrib/zbar/dist/share/zbar'
 /usr/bin/install -c -m 644 ./python/test/barcode.png ./examples/scan_image.cpp ./examples/scan_image.vcproj '/opt/wine64/drive_c/electrum/contrib/zbar/dist/share/zbar'
 /usr/bin/mkdir -p '/opt/wine64/drive_c/electrum/contrib/zbar/dist/include/zbar'
 /usr/bin/install -c -m 644 include/zbar/Scanner.h include/zbar/Decoder.h include/zbar/Exception.h include/zbar/Symbol.h include/zbar/Image.h include/zbar/ImageScanner.h include/zbar/Video.h include/zbar/Window.h include/zbar/Processor.h '/opt/wine64/drive_c/electrum/contrib/zbar/dist/include/zbar'
make[3]: Leaving directory '/opt/wine64/drive_c/electrum/contrib/zbar'
make[2]: Leaving directory '/opt/wine64/drive_c/electrum/contrib/zbar'
make[1]: Leaving directory '/opt/wine64/drive_c/electrum/contrib/zbar'
'/opt/wine64/drive_c/electrum/contrib/zbar/dist/lib/../bin/libzbar-0.dll' -> '/opt/wine64/drive_c/electrum/contrib/../electrum/libzbar-0.dll'
💬 INFO:  ../bin/libzbar-0.dll has been placed in the inner 'electrum' folder.
💬 INFO:  Booting wine.
Could not find Wine Gecko. HTML rendering will be disabled.
Could not find Wine Gecko. HTML rendering will be disabled.
wine: configuration in L"/opt/wine64" has been updated.
💬 INFO:  Installing Python.
gpg: directory '/root/.gnupg' created
gpg: keybox '/root/.gnupg/keyring-electrum-build-python-dev.gpg' created
gpg: key FC624643487034E5: 5 signatures not checked due to missing keys
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key FC624643487034E5: public key "Steve Dower (Python Release Signing) <steve.dower@microsoft.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1
gpg: no ultimately trusted keys found
Installing core...
--2021-01-26 14:52:03--  https://www.python.org/ftp/python/3.8.7/win32/core.msi
Resolving www.python.org (www.python.org)... 151.101.36.223, 2a04:4e42:9::223
Connecting to www.python.org (www.python.org)|151.101.36.223|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1425408 (1.4M) [application/octet-stream]
Saving to: ‘/opt/wine64/drive_c/electrum/contrib/build-wine/.cache/python3.8.7-win32/core.msi’

/opt/wine64/drive_c 100%[===================>]   1.36M  4.45MB/s    in 0.3s    

2021-01-26 14:52:04 (4.45 MB/s) - ‘/opt/wine64/drive_c/electrum/contrib/build-wine/.cache/python3.8.7-win32/core.msi’ saved [1425408/1425408]

--2021-01-26 14:52:04--  https://www.python.org/ftp/python/3.8.7/win32/core.msi.asc
Resolving www.python.org (www.python.org)... 151.101.36.223, 2a04:4e42:9::223
Connecting to www.python.org (www.python.org)|151.101.36.223|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 836 [application/octet-stream]
Saving to: ‘/opt/wine64/drive_c/electrum/contrib/build-wine/.cache/python3.8.7-win32/core.msi.asc’

/opt/wine64/drive_c 100%[===================>]     836  --.-KB/s    in 0s      

2021-01-26 14:52:04 (18.7 MB/s) - ‘/opt/wine64/drive_c/electrum/contrib/build-wine/.cache/python3.8.7-win32/core.msi.asc’ saved [836/836]

🗯 ERROR: prepare-wine failed

@SomberNight
Copy link
Member

Right... I can see the travis builds have been failing the same way, however I have not been able to reproduce the issue locally.
For some reason, it builds as expected on my machine (ubuntu 20.04).
Any clues about your setup?

@Toporin
Copy link
Contributor Author

Toporin commented Jan 27, 2021

I don't really know, the build is deterministic so there should not be much differences from one machine to another.
I see in the 'prepare-wine.sh' script that it supports 2 architectures: win32 and amd64 (line 46-49).
My machine used 'win32', could it be the issue?
Then perhaps the msi install fails for win32 arch and not the other...

@SomberNight
Copy link
Member

My machine used 'win32', could it be the issue?

No, I am also testing with that; that is the default.

Something errors in this loop:

echo "Installing $msifile..."
download_if_not_exist "$PYTHON_DOWNLOADS/${msifile}.msi" "https://www.python.org/ftp/python/$PYTHON_VERSION/$ARCH/${msifile}.msi"
download_if_not_exist "$PYTHON_DOWNLOADS/${msifile}.msi.asc" "https://www.python.org/ftp/python/$PYTHON_VERSION/$ARCH/${msifile}.msi.asc"
verify_signature "$PYTHON_DOWNLOADS/${msifile}.msi.asc" $KEYRING_PYTHON_DEV
wine msiexec /i "$PYTHON_DOWNLOADS/${msifile}.msi" /qb TARGETDIR=$PYHOME

Could you perhaps add echo/print statements after each line there to see which line errors?

@SomberNight
Copy link
Member

In case it is the wine msiexec line, it might help if you removed/commented out this line:

export WINEDEBUG=-all

to see more logs

@Toporin
Copy link
Contributor Author

Toporin commented Jan 27, 2021

Here is the error with more logs:

💬 INFO:  Installing Python.
gpg: directory '/root/.gnupg' created
gpg: keybox '/root/.gnupg/keyring-electrum-build-python-dev.gpg' created
gpg: key FC624643487034E5: 5 signatures not checked due to missing keys
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key FC624643487034E5: public key "Steve Dower (Python Release Signing) <steve.dower@microsoft.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1
gpg: no ultimately trusted keys found
Installing core...
--2021-01-27 19:14:28--  https://www.python.org/ftp/python/3.8.7/win32/core.msi
Resolving www.python.org (www.python.org)... 151.101.36.223, 2a04:4e42:9::223
Connecting to www.python.org (www.python.org)|151.101.36.223|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1425408 (1.4M) [application/octet-stream]
Saving to: ‘/opt/wine64/drive_c/electrum/contrib/build-wine/.cache/python3.8.7-win32/core.msi’

/opt/wine64/drive_c 100%[===================>]   1.36M  4.71MB/s    in 0.3s    

2021-01-27 19:14:29 (4.71 MB/s) - ‘/opt/wine64/drive_c/electrum/contrib/build-wine/.cache/python3.8.7-win32/core.msi’ saved [1425408/1425408]

--2021-01-27 19:14:29--  https://www.python.org/ftp/python/3.8.7/win32/core.msi.asc
Resolving www.python.org (www.python.org)... 151.101.36.223, 2a04:4e42:9::223
Connecting to www.python.org (www.python.org)|151.101.36.223|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 836 [application/octet-stream]
Saving to: ‘/opt/wine64/drive_c/electrum/contrib/build-wine/.cache/python3.8.7-win32/core.msi.asc’

/opt/wine64/drive_c 100%[===================>]     836  --.-KB/s    in 0s      

2021-01-27 19:14:29 (23.4 MB/s) - ‘/opt/wine64/drive_c/electrum/contrib/build-wine/.cache/python3.8.7-win32/core.msi.asc’ saved [836/836]

003a:fixme:ntdll:NtLockFile I/O completion on lock not implemented yet
003a:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION
003a:err:mscoree:LoadLibraryShim error reading registry key for installroot
003a:err:mscoree:LoadLibraryShim error reading registry key for installroot
003a:err:mscoree:LoadLibraryShim error reading registry key for installroot
003a:err:mscoree:LoadLibraryShim error reading registry key for installroot
003a:err:msi:ACTION_InstallFiles compressed file wasn't installed (L"python.dll")
003a:err:msi:execute_script Execution of script 0 halted; action L"InstallFiles" returned 1603
003a:err:msi:ITERATE_Actions Execution halted, action L"InstallFinalize" returned 1603
003a:fixme:msi:internal_ui_handler internal UI not implemented for message 0x0b000000 (UI level = 3)
003a:fixme:msi:internal_ui_handler internal UI not implemented for message 0x0b000000 (UI level = 3)
🗯 ERROR: prepare-wine failed

@Toporin
Copy link
Contributor Author

Toporin commented Jan 27, 2021

By the way, I get the same error logs when trying to install python v3.7.9 instead of v3.8.7 (with everything else unchanged).

@SomberNight
Copy link
Member

SomberNight commented Jan 29, 2021

I have tried building binaries in ~fresh VMs, using Ubuntu and Manjaro as guests, and verified that reproducible builds still work, and they did for me.
I don't know why it is different for you and for Travis.

All recent relevant changes were done in 3d640df
I guess this must have to do with the wine version bump.
Incidentally, there has been an even newer version of wine released since, we should try using that.

Still, I have no idea how this could bleed through the containerisation and result in differences between your setup and mine.

SomberNight added a commit that referenced this issue Jan 29, 2021

Verified

This commit was signed with the committer’s verified signature.
SomberNight ghost43
related: #6971
@SomberNight
Copy link
Member

I guess this must have to do with the wine version bump.
Incidentally, there has been an even newer version of wine released since, we should try using that.

I've bumped the wine version again in 1a629d8
Feel free to try with that; unfortunately Travis is extremely slow these days.

@Toporin
Copy link
Contributor Author

Toporin commented Jan 29, 2021

I tried with the upgraded wine version but it fails also.
So far I have tried the following config without success:

Ubuntu:20.04
Wine: 5.0.3~focal
python: 3.8.7
=> fail

Ubuntu:20.04
Wine: 5.0.3~focal
python: 3.7.9
=> fail

Ubuntu:20.04
Wine: 6.0.0~focal-1
python: 3.8.7
=> fail

Ubuntu:20.04
Wine: 4.0.4~focal-1
python: 3.8.7
=> fail

Maybe I can also try Wine 5.x with Ubuntu 16.04 and see whether it works...

@SomberNight
Copy link
Member

I tried with the upgraded wine version but it fails also.

:/

btw from your wine debug output, these are the lines that I do NOT have:

003a:err:msi:ACTION_InstallFiles compressed file wasn't installed (L"python.dll")
003a:err:msi:execute_script Execution of script 0 halted; action L"InstallFiles" returned 1603
003a:err:msi:ITERATE_Actions Execution halted, action L"InstallFinalize" returned 1603

@SomberNight
Copy link
Member

SomberNight commented Feb 1, 2021

#6981 seems to claim it is due to docker version differences;
could you try after updating docker?


I have been testing on Ubuntu 20.04 and Manjaro; both have docker 20.10.2.

@Toporin
Copy link
Contributor Author

Toporin commented Feb 1, 2021

I upgraded docker from 19.03.5 to 20.10.2 and the Windows version built without error!
I used the electrum master branch at commit d6e2930 (the same that failed previously).

So apparently upgrading docker as proposed in #6981 solved this issue!

@Toporin
Copy link
Contributor Author

Toporin commented Feb 1, 2021

I will do a few more tests and if it works, I will close this issue.

SomberNight added a commit that referenced this issue Feb 1, 2021

Verified

This commit was signed with the committer’s verified signature.
SomberNight ghost43
related:
#6971
#6981
@Toporin Toporin closed this as completed Feb 2, 2021
JeremyRand pushed a commit to namecoin/electrum-nmc that referenced this issue May 7, 2021

Partially verified

This commit is signed with the committer’s verified signature. The key has expired.
JeremyRand’s contribution has been verified via GPG key.
We cannot verify signatures from co-authors, and some of the co-authors attributed to this commit require their commits to be signed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants