1
0

Merge remote-tracking branch 'remotes/spesmilo/appimage-debian-base'

Change Docker base images from Ubuntu to Debian, and use `snapshot.debian.org` as apt source list.
Ubuntu occasionally removes version-pinned packages from apt (see #7484), which
- breaks historical reproducible builds
- introduces maintenance burden as we have to update the version pins
Hopefully this change fixes both issues.

merges https://github.com/spesmilo/electrum/pull/7926
closes https://github.com/spesmilo/electrum/issues/7484
This commit is contained in:
SomberNight
2022-08-22 13:10:25 +00:00
12 changed files with 183 additions and 78 deletions

View File

@@ -1,4 +1,12 @@
FROM ubuntu:20.04@sha256:c95a8e48bf88e9849f3e0f723d9f49fa12c5a00cfc6e60d2bc99d87555295e4c
FROM debian:bullseye@sha256:82bab30ed448b8e2509aabe21f40f0607d905b7fd0dec72802627a20274eba55
# need ca-certificates before using snapshot packages
RUN apt update -qq > /dev/null && apt install -qq --yes --no-install-recommends \
ca-certificates
# pin the distro packages.
COPY apt.sources.list /etc/apt/sources.list
COPY apt.preferences /etc/apt/preferences.d/snapshot
ENV LC_ALL=C.UTF-8 LANG=C.UTF-8
ENV DEBIAN_FRONTEND=noninteractive
@@ -6,29 +14,22 @@ ENV DEBIAN_FRONTEND=noninteractive
RUN dpkg --add-architecture i386 && \
apt-get update -q && \
apt-get install -qy \
wget=1.20.3-1ubuntu1 \
gnupg2=2.2.19-3ubuntu2.2 \
dirmngr=2.2.19-3ubuntu2.2 \
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.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.1 \
autopoint=0.19.8.1-10build1 \
libtool=2.4.6-14 \
gettext=0.19.8.1-10build1 \
wget \
gnupg2 \
dirmngr \
python3-software-properties \
software-properties-common \
git \
p7zip-full \
make \
mingw-w64 \
mingw-w64-tools \
autotools-dev \
autoconf \
autopoint \
libtool \
gettext \
sudo \
&& \
rm -rf /var/lib/apt/lists/* && \
apt-get autoremove -y && \
@@ -42,13 +43,15 @@ RUN wget -nc https://dl.winehq.org/wine-builds/Release.key && \
echo "78b185fabdb323971d13bd329fefc8038e08559aa51c4996de18db0639a51df6 winehq.key" | sha256sum -c - && \
apt-key add winehq.key && \
rm winehq.key && \
apt-add-repository https://dl.winehq.org/wine-builds/ubuntu/ && \
apt-add-repository https://dl.winehq.org/wine-builds/debian/ && \
apt-get update -q && \
apt-get install -qy \
wine-stable-amd64:amd64=7.0.0.0~focal-1 \
wine-stable-i386:i386=7.0.0.0~focal-1 \
wine-stable:amd64=7.0.0.0~focal-1 \
winehq-stable:amd64=7.0.0.0~focal-1 \
wine-stable-amd64:amd64=7.0.0.0~bullseye-1 \
wine-stable-i386:i386=7.0.0.0~bullseye-1 \
wine-stable:amd64=7.0.0.0~bullseye-1 \
winehq-stable:amd64=7.0.0.0~bullseye-1 \
libvkd3d1:amd64=1.2~bullseye-1 \
libvkd3d1:i386=1.2~bullseye-1 \
&& \
rm -rf /var/lib/apt/lists/* && \
apt-get autoremove -y && \

View File

@@ -0,0 +1,3 @@
Package: *
Pin: origin "snapshot.debian.org"
Pin-Priority: 1001

View File

@@ -0,0 +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

View File

@@ -50,6 +50,28 @@ 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="c9df88a284d448da5434c6ad2737b54a907f888c"
# ^ 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}"
CC="${GCC_TRIPLET_HOST}-gcc" make -j4 || 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