Create Windows installer #53

This commit is contained in:
2025-07-28 15:27:43 -05:00
parent 0c049a17f6
commit 2f14e0f054
7 changed files with 59 additions and 7 deletions

View File

@@ -7,6 +7,7 @@ set(EXPAT_HASH 85372797ff0673a8fc4a6be16466bb5a0ca28c0dcf3c6f7ac1686b4a3ba2aabb)
set(GCC_HASH 51b9919ea69c980d7a381db95d4be27edf73b21254eb13d752a08003b4d013b1) set(GCC_HASH 51b9919ea69c980d7a381db95d4be27edf73b21254eb13d752a08003b4d013b1)
set(GTEST_HASH 65fab701d9829d38cb77c14acdc431d2108bfdbf8979e40eb8ae567edf10b27c) set(GTEST_HASH 65fab701d9829d38cb77c14acdc431d2108bfdbf8979e40eb8ae567edf10b27c)
set(ICU_HASH a2c443404f00098e9e90acf29dc318e049d2dc78d9ae5f46efb261934a730ce2) set(ICU_HASH a2c443404f00098e9e90acf29dc318e049d2dc78d9ae5f46efb261934a730ce2)
set(INNOSETUP_HASH f3c42116542c4cc57263c5ba6c4feabfc49fe771f2f98a79d2f7628b8762723b)
set(JSON_HASH 4b92eb0c06d10683f7447ce9406cb97cd4b453be18d7279320f7b2f025c10187) set(JSON_HASH 4b92eb0c06d10683f7447ce9406cb97cd4b453be18d7279320f7b2f025c10187)
set(LIBSODIUM_HASH 8e5aeca07a723a27bbecc3beef14b0068d37e7fc0e97f51b3f1c82d2a58005c1) set(LIBSODIUM_HASH 8e5aeca07a723a27bbecc3beef14b0068d37e7fc0e97f51b3f1c82d2a58005c1)
set(MINGW_HASH 5afe822af5c4edbf67daaf45eec61d538f49eef6b19524de64897c6b95828caf) set(MINGW_HASH 5afe822af5c4edbf67daaf45eec61d538f49eef6b19524de64897c6b95828caf)

View File

@@ -1,18 +1,19 @@
set(BINUTILS_VERSION 2.44) set(BINUTILS_VERSION 2.44)
set(BOOST_MAJOR_VERSION 1)
set(BOOST_MINOR_VERSION 88)
set(BOOST_PATCH_VERSION 0)
set(BOOST2_MAJOR_VERSION 1) set(BOOST2_MAJOR_VERSION 1)
set(BOOST2_MINOR_VERSION 76) set(BOOST2_MINOR_VERSION 76)
set(BOOST2_PATCH_VERSION 0) set(BOOST2_PATCH_VERSION 0)
set(BOOST_MAJOR_VERSION 1)
set(BOOST_MINOR_VERSION 88)
set(BOOST_PATCH_VERSION 0)
set(CPP_HTTPLIB_VERSION 0.23.1) set(CPP_HTTPLIB_VERSION 0.23.1)
set(CURL_VERSION 8.15.0)
set(CURL2_VERSION 8_15_0) set(CURL2_VERSION 8_15_0)
set(EXPAT_VERSION 2.7.1) set(CURL_VERSION 8.15.0)
set(EXPAT2_VERSION 2_7_1) set(EXPAT2_VERSION 2_7_1)
set(EXPAT_VERSION 2.7.1)
set(GCC_VERSION 15.1.0) set(GCC_VERSION 15.1.0)
set(GTEST_VERSION 1.17.0) set(GTEST_VERSION 1.17.0)
set(ICU_VERSION 76-1) set(ICU_VERSION 76-1)
set(INNOSETUP_VERSION 6.4.3)
set(JSON_VERSION 3.12.0) set(JSON_VERSION 3.12.0)
set(LIBSODIUM_VERSION 1.0.20) set(LIBSODIUM_VERSION 1.0.20)
set(MINGW_VERSION 13.0.0) set(MINGW_VERSION 13.0.0)
@@ -21,7 +22,7 @@ set(PKG_CONFIG_VERSION 0.29.2)
set(PUGIXML_VERSION 1.15) set(PUGIXML_VERSION 1.15)
set(ROCKSDB_VERSION 10.4.2) set(ROCKSDB_VERSION 10.4.2)
set(SPDLOG_VERSION 1.15.3) set(SPDLOG_VERSION 1.15.3)
set(SQLITE_VERSION 3500300)
set(SQLITE2_VERSION 3.50.3) set(SQLITE2_VERSION 3.50.3)
set(SQLITE_VERSION 3500300)
set(STDUUID_VERSION 1.2.3) set(STDUUID_VERSION 1.2.3)
set(ZLIB_VERSION 1.3.1) set(ZLIB_VERSION 1.3.1)

View File

@@ -12,6 +12,7 @@ RUN apk add \
bzip2 \ bzip2 \
clang17-extra-tools \ clang17-extra-tools \
cmake \ cmake \
curl \
file \ file \
flex \ flex \
g++ \ g++ \
@@ -43,6 +44,7 @@ RUN apk add \
ruby \ ruby \
texinfo \ texinfo \
unzip \ unzip \
xvfb \
wget \ wget \
wine \ wine \
xz \ xz \
@@ -102,6 +104,39 @@ RUN echo -e \
"system = 'windows'\n"\ "system = 'windows'\n"\
> ${MY_TOOLCHAIN_FILE_MESON} > ${MY_TOOLCHAIN_FILE_MESON}
RUN mkdir -p /opt/bin;echo -e \
"#!/bin/sh\n"\
"COUNT=0\n"\
"echo \"Start waiting on \$@\"\n"\
"while pgrep \"\$@\" > /dev/null; do \n"\
" echo \"waiting ...\"\n"\
" sleep 1;\n"\
" COUNT=\$((COUNT+1))\n"\
" if [ \$COUNT -eq 60 ]; then\n"\
" exit 3;\n"\
" fi\n"\
"done\n"\
"echo \"\$@ completed\"\n"\
> /opt/bin/waitonprocess && \
chmod +x /opt/bin/waitonprocess && \
cat /opt/bin/waitonprocess
RUN echo -e \
"#!/bin/sh\n"\
"Xvfb \$DISPLAY &\n"\
"tokill=\$!\n"\
"wine wineboot --init\n"\
"waitonprocess wineserver\n"\
"\"\$@\"\n"\
"retval=\$?\n"\
"kill -15 \$tokill\n"\
"wine wineboot --shutdown\n"\
"return \$retval\n"\
> /opt/bin/wine-x11-run && \
chmod +x /opt/bin/wine-x11-run && \
cat /opt/bin/wine-x11-run
ENV PATH="/opt/bin:${PATH}"
SHELL [ "/bin/bash", "-c" ] SHELL [ "/bin/bash", "-c" ]
RUN mkdir -p \ RUN mkdir -p \
@@ -112,6 +147,16 @@ RUN mkdir -p \
ADD ./3rd_party /3rd_party ADD ./3rd_party /3rd_party
ENV DISPLAY=:99
ENV WINEDEBUG=-all,err+all
RUN wine64 reg add 'HKEY_CURRENT_USER\Software\Wine' /v ShowDotFiles /d Y \
&& while [ ! -f /root/.wine/user.reg ]; do sleep 1; done
ARG INNOSETUP_VERSION
ENV MY_INNOSETUP_VERSION=${INNOSETUP_VERSION}
RUN wine-x11-run wine64 /3rd_party/mingw64/innosetup-${MY_INNOSETUP_VERSION}.exe /SP- /VERYSILENT /ALLUSERS /SUPPRESSMSGBOXES /DOWNLOADISCRYPT=1
ARG BINUTILS_VERSION ARG BINUTILS_VERSION
ENV MY_BINUTILS_VERSION=${BINUTILS_VERSION} ENV MY_BINUTILS_VERSION=${BINUTILS_VERSION}
RUN cd /3rd_party/mingw64 && sha256sum -c ./binutils-${MY_BINUTILS_VERSION}.tar.xz.sha256 && cd - \ RUN cd /3rd_party/mingw64 && sha256sum -c ./binutils-${MY_BINUTILS_VERSION}.tar.xz.sha256 && cd - \

View File

@@ -292,6 +292,8 @@ if [ "${PROJECT_IS_MINGW}" == "1" ] && [ "${PROJECT_IS_MINGW_UNIX}" != "1" ]; th
MSYS=winsymlinks:nativestrict MSYS=winsymlinks:nativestrict
fi fi
PROJECT_ENABLE_INNOSETUP=1
export MSYS export MSYS
export NUM_JOBS export NUM_JOBS
export OPENSSL_ROOT_DIR export OPENSSL_ROOT_DIR

View File

@@ -26,6 +26,7 @@ PROJECT_CLEANUP[EXPAT]="3rd_party/mingw64/expat-*"
PROJECT_CLEANUP[GCC]="3rd_party/mingw64/gcc-*" PROJECT_CLEANUP[GCC]="3rd_party/mingw64/gcc-*"
PROJECT_CLEANUP[ICU]="3rd_party/mingw64/icu-release-*" PROJECT_CLEANUP[ICU]="3rd_party/mingw64/icu-release-*"
PROJECT_CLEANUP[JSON]="3rd_party/json-*" PROJECT_CLEANUP[JSON]="3rd_party/json-*"
PROJECT_CLEANUP[INNOSETUP]="3rd_party/mingw64/innosetup-*"
PROJECT_CLEANUP[LIBBITCOIN_SYSTEM_ON]="3rd_party/boost_${PROJECT_VERSIONS[BOOST_MAJOR]}_${PROJECT_VERSIONS[BOOST_MINOR]}_*" PROJECT_CLEANUP[LIBBITCOIN_SYSTEM_ON]="3rd_party/boost_${PROJECT_VERSIONS[BOOST_MAJOR]}_${PROJECT_VERSIONS[BOOST_MINOR]}_*"
PROJECT_CLEANUP[LIBSODIUM]="3rd_party/libsodium-*:3rd_party/libsodium*" PROJECT_CLEANUP[LIBSODIUM]="3rd_party/libsodium-*:3rd_party/libsodium*"
PROJECT_CLEANUP[MINGW]="3rd_party/mingw64/mingw-w64-*" PROJECT_CLEANUP[MINGW]="3rd_party/mingw64/mingw-w64-*"
@@ -52,6 +53,7 @@ PROJECT_DOWNLOADS[GCC]="https://mirrorservice.org/sites/sourceware.org/pub/gcc/r
PROJECT_DOWNLOADS[GTEST]="https://github.com/google/googletest/archive/refs/tags/v${PROJECT_VERSIONS[GTEST]}.tar.gz;googletest-${PROJECT_VERSIONS[GTEST]}.tar.gz;3rd_party" PROJECT_DOWNLOADS[GTEST]="https://github.com/google/googletest/archive/refs/tags/v${PROJECT_VERSIONS[GTEST]}.tar.gz;googletest-${PROJECT_VERSIONS[GTEST]}.tar.gz;3rd_party"
PROJECT_DOWNLOADS[ICU]="https://github.com/unicode-org/icu/archive/refs/tags/release-${PROJECT_VERSIONS[ICU]}.tar.gz;icu-release-${PROJECT_VERSIONS[ICU]}.tar.gz;3rd_party/mingw64" PROJECT_DOWNLOADS[ICU]="https://github.com/unicode-org/icu/archive/refs/tags/release-${PROJECT_VERSIONS[ICU]}.tar.gz;icu-release-${PROJECT_VERSIONS[ICU]}.tar.gz;3rd_party/mingw64"
PROJECT_DOWNLOADS[JSON]="https://github.com/nlohmann/json/archive/refs/tags/v${PROJECT_VERSIONS[JSON]}.tar.gz;json-${PROJECT_VERSIONS[JSON]}.tar.gz;3rd_party" PROJECT_DOWNLOADS[JSON]="https://github.com/nlohmann/json/archive/refs/tags/v${PROJECT_VERSIONS[JSON]}.tar.gz;json-${PROJECT_VERSIONS[JSON]}.tar.gz;3rd_party"
PROJECT_DOWNLOADS[INNOSETUP]="https://files.jrsoftware.org/is/6/innosetup-${PROJECT_VERSIONS[INNOSETUP]}.exe;innosetup-${PROJECT_VERSIONS[INNOSETUP]}.exe;3rd_party/mingw64"
PROJECT_DOWNLOADS[LIBSODIUM]="https://github.com/jedisct1/libsodium/archive/refs/tags/${PROJECT_VERSIONS[LIBSODIUM]}-RELEASE.tar.gz;libsodium-${PROJECT_VERSIONS[LIBSODIUM]}.tar.gz;3rd_party" PROJECT_DOWNLOADS[LIBSODIUM]="https://github.com/jedisct1/libsodium/archive/refs/tags/${PROJECT_VERSIONS[LIBSODIUM]}-RELEASE.tar.gz;libsodium-${PROJECT_VERSIONS[LIBSODIUM]}.tar.gz;3rd_party"
PROJECT_DOWNLOADS[MINGW]="https://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-release/mingw-w64-v${PROJECT_VERSIONS[MINGW]}.tar.bz2;;mingw-w64-v${PROJECT_VERSIONS[MINGW]}.tar.bz2;3rd_party/mingw64" PROJECT_DOWNLOADS[MINGW]="https://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-release/mingw-w64-v${PROJECT_VERSIONS[MINGW]}.tar.bz2;;mingw-w64-v${PROJECT_VERSIONS[MINGW]}.tar.bz2;3rd_party/mingw64"
PROJECT_DOWNLOADS[OPENSSL]="https://github.com/openssl/openssl/releases/download/openssl-${PROJECT_VERSIONS[OPENSSL]}/openssl-${PROJECT_VERSIONS[OPENSSL]}.tar.gz;openssl-${PROJECT_VERSIONS[OPENSSL]}.tar.gz;3rd_party" PROJECT_DOWNLOADS[OPENSSL]="https://github.com/openssl/openssl/releases/download/openssl-${PROJECT_VERSIONS[OPENSSL]}/openssl-${PROJECT_VERSIONS[OPENSSL]}.tar.gz;openssl-${PROJECT_VERSIONS[OPENSSL]}.tar.gz;3rd_party"

View File

@@ -16,6 +16,7 @@ PROJECT_VERSIONS[EXPAT2]="2_7_1"
PROJECT_VERSIONS[GCC]="15.1.0" PROJECT_VERSIONS[GCC]="15.1.0"
PROJECT_VERSIONS[GTEST]="1.17.0" PROJECT_VERSIONS[GTEST]="1.17.0"
PROJECT_VERSIONS[ICU]="76-1" PROJECT_VERSIONS[ICU]="76-1"
PROJECT_VERSIONS[INNOSETUP]="6.4.3"
PROJECT_VERSIONS[JSON]="3.12.0" PROJECT_VERSIONS[JSON]="3.12.0"
PROJECT_VERSIONS[LIBSODIUM]="1.0.20" PROJECT_VERSIONS[LIBSODIUM]="1.0.20"
PROJECT_VERSIONS[MINGW]="13.0.0" PROJECT_VERSIONS[MINGW]="13.0.0"

View File

@@ -1 +1 @@
4b92eb0c06d10683f7447ce9406cb97cd4b453be18d7279320f7b2f025c10187 json-3.12.0.tar.gz 4b92eb0c06d10683f7447ce9406cb97cd4b453be18d7279320f7b2f025c10187 *json-3.12.0.tar.gz