From 98d29cba5660228320c76a364721cd3bf81d5cb8 Mon Sep 17 00:00:00 2001 From: SomberNight Date: Mon, 24 Oct 2022 18:08:51 +0000 Subject: [PATCH] wine build: build win-iconv-mingw-w64-dev, instead of using debian sid This commit reintroduces b8240bec3ef531167c794e48453770fc9ac63e4e, which was previously reverted due to making the build non-reproducible. I have found building with "make -j1" seems to work. see https://github.com/win-iconv/win-iconv/issues/42 closes https://github.com/spesmilo/electrum/issues/7994 related https://github.com/spesmilo/electrum/pull/7992 --- contrib/build-wine/Dockerfile | 2 +- contrib/build-wine/apt.preferences | 6 +----- contrib/build-wine/apt.sources.list | 1 - contrib/build-wine/make_win.sh | 24 ++++++++++++++++++++++++ contrib/freeze_containers_distro.sh | 2 -- 5 files changed, 26 insertions(+), 9 deletions(-) diff --git a/contrib/build-wine/Dockerfile b/contrib/build-wine/Dockerfile index 1991f0ba5..f9e7c304c 100644 --- a/contrib/build-wine/Dockerfile +++ b/contrib/build-wine/Dockerfile @@ -24,12 +24,12 @@ RUN dpkg --add-architecture i386 && \ make \ mingw-w64 \ mingw-w64-tools \ - win-iconv-mingw-w64-dev \ autotools-dev \ autoconf \ autopoint \ libtool \ gettext \ + sudo \ && \ rm -rf /var/lib/apt/lists/* && \ apt-get autoremove -y && \ diff --git a/contrib/build-wine/apt.preferences b/contrib/build-wine/apt.preferences index d0e270cec..d861cd83d 100644 --- a/contrib/build-wine/apt.preferences +++ b/contrib/build-wine/apt.preferences @@ -1,7 +1,3 @@ Package: * -Pin: release n=bullseye -Pin-Priority: 1001 - -Package: win-iconv-mingw-w64-dev -Pin: release a=unstable +Pin: origin "snapshot.debian.org" Pin-Priority: 1001 diff --git a/contrib/build-wine/apt.sources.list b/contrib/build-wine/apt.sources.list index e9ee9b574..9c9c22126 100644 --- a/contrib/build-wine/apt.sources.list +++ b/contrib/build-wine/apt.sources.list @@ -1,3 +1,2 @@ deb https://snapshot.debian.org/archive/debian/20220811T031049Z/ bullseye main non-free contrib deb-src https://snapshot.debian.org/archive/debian/20220811T031049Z/ bullseye main non-free contrib -deb [check-valid-until=no] https://snapshot.debian.org/archive/debian/20220811T031049Z/ sid main non-free contrib diff --git a/contrib/build-wine/make_win.sh b/contrib/build-wine/make_win.sh index 18be42a7d..d38f41d56 100755 --- a/contrib/build-wine/make_win.sh +++ b/contrib/build-wine/make_win.sh @@ -50,6 +50,30 @@ fi if [ -f "$DLL_TARGET_DIR/libzbar-0.dll" ]; then info "libzbar already built, skipping" else + ( + # As debian bullseye doesn't provide win-iconv-mingw-w64-dev, we need to build it: + WIN_ICONV_COMMIT="9f98392dfecadffd62572e73e9aba878e03496c4" + # ^ tag "v0.0.8" + info "Building win-iconv..." + cd "$CACHEDIR" + if [ ! -d win-iconv ]; then + git clone https://github.com/win-iconv/win-iconv.git + fi + cd win-iconv + if ! $(git cat-file -e ${WIN_ICONV_COMMIT}) ; then + info "Could not find requested version $WIN_ICONV_COMMIT in local clone; fetching..." + git fetch --all + fi + git reset --hard + git clean -dfxq + git checkout "${WIN_ICONV_COMMIT}^{commit}" + + # note: "-j1" as parallel jobs lead to non-reproducibility seemingly due to ordering issues + # see https://github.com/win-iconv/win-iconv/issues/42 + CC="${GCC_TRIPLET_HOST}-gcc" make -j1 || fail "Could not build win-iconv" + # FIXME avoid using sudo + sudo make install prefix="/usr/${GCC_TRIPLET_HOST}" || fail "Could not install win-iconv" + ) "$CONTRIB"/make_zbar.sh || fail "Could not build zbar" fi diff --git a/contrib/freeze_containers_distro.sh b/contrib/freeze_containers_distro.sh index 0ef7adb30..d36715e87 100755 --- a/contrib/freeze_containers_distro.sh +++ b/contrib/freeze_containers_distro.sh @@ -38,8 +38,6 @@ echo "deb-src ${DEBIAN_SNAPSHOT} ${DEBIAN_APPIMAGE_DISTRO} main non-free contrib # build-wine echo "deb ${DEBIAN_SNAPSHOT} ${DEBIAN_WINE_DISTRO} main non-free contrib" >$contrib/build-wine/apt.sources.list echo "deb-src ${DEBIAN_SNAPSHOT} ${DEBIAN_WINE_DISTRO} main non-free contrib" >>$contrib/build-wine/apt.sources.list -# we need win-iconv-mingw-w64-dev which is only in sid/unstable -echo "deb [check-valid-until=no] ${DEBIAN_SNAPSHOT} unstable main non-free contrib" >>$contrib/build-wine/apt.sources.list # android echo "deb ${DEBIAN_SNAPSHOT} ${DEBIAN_ANDROID_DISTRO} main non-free contrib" >$contrib/android/apt.sources.list