twindows binaries: bump python version (3.7.9->3.8.7) - electrum - Electrum Bitcoin wallet
 (HTM) git clone https://git.parazyd.org/electrum
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Submodules
       ---
 (DIR) commit 3d640dfc1ff5809e3a309a3cf18734ee6aaf81e1
 (DIR) parent b2be29b508deb310631cacfb51bb1561bce75ff9
 (HTM) Author: SomberNight <somber.night@protonmail.com>
       Date:   Tue, 12 Jan 2021 00:19:49 +0100
       
       windows binaries: bump python version (3.7.9->3.8.7)
       
       Had to also bump ubuntu version 18.04->20.04,
       as was getting errors running the self-compiled pyinstaller otherwise (weird...):
       
       ```
       from .utils.git import get_repo_revision
       ModuleNotFoundError: No module named 'PyInstaller.utils'
       ```
       (similar to https://github.com/pyinstaller/pyinstaller/issues/4403 )
       
       -----
       
       Note re appimage: when trying to compile python 3.8.x on ubuntu 16.04, I am getting:
       
       ./Modules/posixmodule.c: In function ‘os_copy_file_range_impl’:
       ./Modules/posixmodule.c:10351:15: error: implicit declaration of function ‘copy_file_range’ [-Werror=implicit-function-declaration]
                ret = copy_file_range(src, p_offset_src, dst, p_offset_dst, count, flags);
       
       This is because ubuntu 16.04 has too old glibc.
       
       Diffstat:
         M contrib/build-linux/appimage/Docke… |       4 ++++
         M contrib/build-linux/appimage/build… |       2 ++
         M contrib/build-wine/Dockerfile       |      55 ++++++++++++++++++-------------
         M contrib/build-wine/prepare-wine.sh  |       5 +++--
       
       4 files changed, 41 insertions(+), 25 deletions(-)
       ---
 (DIR) diff --git a/contrib/build-linux/appimage/Dockerfile b/contrib/build-linux/appimage/Dockerfile
       t@@ -1,6 +1,10 @@
       +# Note: we deliberately use an old Ubuntu LTS as base image.
       +# from https://docs.appimage.org/introduction/concepts.html :
       +# "[AppImages] should be built on the oldest possible system, allowing them to run on newer system[s]"
        FROM ubuntu:16.04@sha256:a4fc0c40360ff2224db3a483e5d80e9164fe3fdce2a8439d2686270643974632
        
        ENV LC_ALL=C.UTF-8 LANG=C.UTF-8
       +ENV DEBIAN_FRONTEND=noninteractive
        
        RUN apt-get update -q && \
            apt-get install -qy \
 (DIR) diff --git a/contrib/build-linux/appimage/build.sh b/contrib/build-linux/appimage/build.sh
       t@@ -13,6 +13,8 @@ CACHEDIR="$CONTRIB_APPIMAGE/.cache/appimage"
        export GCC_STRIP_BINARIES="1"
        
        # pinned versions
       +# note: compiling python 3.8.x requires at least glibc 2.27,
       +#       which is first available on ubuntu 18.04
        PYTHON_VERSION=3.7.9
        PKG2APPIMAGE_COMMIT="eb8f3acdd9f11ab19b78f5cb15daa772367daf15"
        SQUASHFSKIT_COMMIT="ae0d656efa2d0df2fcac795b6823b44462f19386"
 (DIR) diff --git a/contrib/build-wine/Dockerfile b/contrib/build-wine/Dockerfile
       t@@ -1,29 +1,38 @@
       -FROM ubuntu:18.04@sha256:b58746c8a89938b8c9f5b77de3b8cf1fe78210c696ab03a1442e235eea65d84f
       +FROM ubuntu:20.04@sha256:c95a8e48bf88e9849f3e0f723d9f49fa12c5a00cfc6e60d2bc99d87555295e4c
        
        ENV LC_ALL=C.UTF-8 LANG=C.UTF-8
       +ENV DEBIAN_FRONTEND=noninteractive
        
        RUN dpkg --add-architecture i386 && \
            apt-get update -q && \
            apt-get install -qy \
       -        wget=1.19.4-1ubuntu2.2 \
       -        gnupg2=2.2.4-1ubuntu1.3 \
       -        dirmngr=2.2.4-1ubuntu1.3 \
       -        python3-software-properties=0.96.24.32.1 \
       -        software-properties-common=0.96.24.32.1
       +        wget=1.20.3-1ubuntu1 \
       +        gnupg2=2.2.19-3ubuntu2 \
       +        dirmngr=2.2.19-3ubuntu2 \
       +        python3-software-properties=0.98.9.2 \
       +        software-properties-common=0.98.9.2 \
       +        && \
       +    rm -rf /var/lib/apt/lists/* && \
       +    apt-get autoremove -y && \
       +    apt-get clean
        
        RUN apt-get update -q && \
       -        apt-get install -qy \
       -        git=1:2.17.1-1ubuntu0.7 \
       -        p7zip-full=16.02+dfsg-6 \
       -        make=4.1-9.1ubuntu1 \
       -        mingw-w64=5.0.3-1 \
       -        mingw-w64-tools=5.0.3-1 \
       -        win-iconv-mingw-w64-dev=0.0.8-2 \
       +    apt-get install -qy \
       +        git=1:2.25.1-1ubuntu3 \
       +        p7zip-full=16.02+dfsg-7build1 \
       +        make=4.2.1-1.2 \
       +        mingw-w64=7.0.0-2 \
       +        mingw-w64-tools=7.0.0-2 \
       +        win-iconv-mingw-w64-dev=0.0.8-3 \
                autotools-dev=20180224.1 \
       -        autoconf=2.69-11 \
       -        autopoint=0.19.8.1-6ubuntu0.3 \
       -        libtool=2.4.6-2 \
       -        gettext=0.19.8.1-6
       +        autoconf=2.69-11.1 \
       +        autopoint=0.19.8.1-10build1 \
       +        libtool=2.4.6-14 \
       +        gettext=0.19.8.1-10build1 \
       +        && \
       +    rm -rf /var/lib/apt/lists/* && \
       +    apt-get autoremove -y && \
       +    apt-get clean
        
        RUN wget -nc https://dl.winehq.org/wine-builds/Release.key && \
                echo "c51bcb8cc4a12abfbd7c7660eaf90f49674d15e222c262f27e6c96429111b822 Release.key" | sha256sum -c - && \
       t@@ -36,11 +45,11 @@ RUN wget -nc https://dl.winehq.org/wine-builds/Release.key && \
            apt-add-repository https://dl.winehq.org/wine-builds/ubuntu/ && \
            apt-get update -q && \
            apt-get install -qy \
       -        wine-stable-amd64:amd64=4.0.3~bionic \
       -        wine-stable-i386:i386=4.0.3~bionic \
       -        wine-stable:amd64=4.0.3~bionic \
       -        winehq-stable:amd64=4.0.3~bionic
       -
       -RUN rm -rf /var/lib/apt/lists/* && \
       +        wine-stable-amd64:amd64=5.0.3~focal \
       +        wine-stable-i386:i386=5.0.3~focal \
       +        wine-stable:amd64=5.0.3~focal \
       +        winehq-stable:amd64=5.0.3~focal \
       +        && \
       +    rm -rf /var/lib/apt/lists/* && \
            apt-get autoremove -y && \
            apt-get clean
 (DIR) diff --git a/contrib/build-wine/prepare-wine.sh b/contrib/build-wine/prepare-wine.sh
       t@@ -13,7 +13,7 @@ PYINSTALLER_REPO="https://github.com/SomberNight/pyinstaller.git"
        PYINSTALLER_COMMIT="31fda9dc83feb1b3f2ff08c89ff7ae61506fc1ca"
        # ^ tag 4.1, plus a custom commit that fixes cross-compilation with MinGW
        
       -PYTHON_VERSION=3.7.9
       +PYTHON_VERSION=3.8.7
        
        ## These settings probably don't need change
        export WINEPREFIX=/opt/wine64
       t@@ -132,7 +132,8 @@ info "Building PyInstaller."
                                      -Wno-dangling-else \
                                      -Wno-error=unused-value \
                                      -Wno-error=implicit-function-declaration \
       -                              -Wno-error=int-to-pointer-cast"
       +                              -Wno-error=int-to-pointer-cast \
       +                              -Wno-error=stringop-truncation"
            popd
            # sanity check bootloader is there:
            if [ "$GCC_TRIPLET_HOST" = "i686-w64-mingw32" ] ; then