From 72296ed24e11d10180a4b72de533ab2090ab3f57 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Mon, 1 Feb 2016 04:57:24 +0000 Subject: [PATCH 01/17] Reuse Windows ICO for Windows installer --- Makefile.am | 2 +- share/setup.nsi.in | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile.am b/Makefile.am index b746299a42..989f154624 100644 --- a/Makefile.am +++ b/Makefile.am @@ -51,7 +51,7 @@ BIN_CHECKS=$(top_srcdir)/contrib/devtools/symbol-check.py \ $(top_srcdir)/contrib/devtools/security-check.py \ $(top_srcdir)/contrib/devtools/utils.py -WINDOWS_PACKAGING = $(top_srcdir)/share/pixmaps/bitcoin.ico \ +WINDOWS_PACKAGING = $(top_srcdir)/src/qt/res/icons/bitcoin.ico \ $(top_srcdir)/share/pixmaps/nsis-header.bmp \ $(top_srcdir)/share/pixmaps/nsis-wizard.bmp \ $(top_srcdir)/doc/README_windows.txt diff --git a/share/setup.nsi.in b/share/setup.nsi.in index 2ce798bd2d..cdaae1ef9a 100644 --- a/share/setup.nsi.in +++ b/share/setup.nsi.in @@ -15,7 +15,7 @@ Unicode true !define URL @PACKAGE_URL@ # MUI Symbol Definitions -!define MUI_ICON "@abs_top_srcdir@/share/pixmaps/bitcoin.ico" +!define MUI_ICON "@abs_top_srcdir@/src/qt/res/icons/bitcoin.ico" !define MUI_WELCOMEFINISHPAGE_BITMAP "@abs_top_srcdir@/share/pixmaps/nsis-wizard.bmp" !define MUI_HEADERIMAGE !define MUI_HEADERIMAGE_RIGHT From f0a588de910f62767c9a0197bf24d592ab606ef3 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Sun, 10 Oct 2021 16:08:01 +0000 Subject: [PATCH 02/17] guix: Dependencies for rendering icons --- contrib/guix/manifest.scm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/contrib/guix/manifest.scm b/contrib/guix/manifest.scm index 1a47e91b49..3f416190ea 100644 --- a/contrib/guix/manifest.scm +++ b/contrib/guix/manifest.scm @@ -10,6 +10,8 @@ (gnu packages file) (gnu packages gawk) (gnu packages gcc) + (gnu packages image) + (gnu packages imagemagick) ((gnu packages installers) #:select (nsis-x86_64)) ((gnu packages linux) #:select (linux-libre-headers-6.1 util-linux)) (gnu packages llvm) @@ -526,6 +528,9 @@ inspecting signatures in Mach-O binaries.") autoconf-2.71 automake pkg-config + imagemagick + libicns + librsvg ;; Scripting python-minimal ;; (3.10) ;; Git From 1b5581ef75a12175875617c92e997a9f11e59dba Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Sun, 10 Oct 2021 20:21:46 +0000 Subject: [PATCH 03/17] CI: Include dependencies for building icons --- .github/workflows/ci.yml | 2 +- ci/test/00_setup_env.sh | 2 +- ci/test/00_setup_env_i686_centos.sh | 2 +- ci/test/00_setup_env_mac_cross.sh | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7961c3c900..e6cbbdbe22 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -105,7 +105,7 @@ jobs: run: | # A workaround for "The `brew link` step did not complete successfully" error. brew install --quiet python@3 || brew link --overwrite python@3 - brew install --quiet automake libtool pkg-config gnu-getopt ccache boost libevent miniupnpc libnatpmp zeromq qt@5 qrencode + brew install --quiet automake libtool pkg-config gnu-getopt ccache boost libevent miniupnpc libnatpmp zeromq qt@5 qrencode imagemagick libicns librsvg - name: Set Ccache directory run: echo "CCACHE_DIR=${RUNNER_TEMP}/ccache_dir" >> "$GITHUB_ENV" diff --git a/ci/test/00_setup_env.sh b/ci/test/00_setup_env.sh index b9e6818afb..6995f65480 100755 --- a/ci/test/00_setup_env.sh +++ b/ci/test/00_setup_env.sh @@ -66,7 +66,7 @@ export BASE_BUILD_DIR=${BASE_BUILD_DIR:-$BASE_SCRATCH_DIR/build} # The folder for previous release binaries. # This folder exists only on the ci guest, and on the ci host as a volume. export PREVIOUS_RELEASES_DIR=${PREVIOUS_RELEASES_DIR:-$BASE_ROOT_DIR/prev_releases} -export CI_BASE_PACKAGES=${CI_BASE_PACKAGES:-build-essential libtool autotools-dev automake pkg-config bsdmainutils curl ca-certificates ccache python3 rsync git procps bison e2fsprogs cmake} +export CI_BASE_PACKAGES=${CI_BASE_PACKAGES:-build-essential libtool autotools-dev automake pkg-config bsdmainutils curl ca-certificates ccache python3 rsync git procps bison e2fsprogs cmake icnsutils librsvg2-bin imagemagick} export GOAL=${GOAL:-install} export DIR_QA_ASSETS=${DIR_QA_ASSETS:-${BASE_SCRATCH_DIR}/qa-assets} export CI_RETRY_EXE=${CI_RETRY_EXE:-"retry --"} diff --git a/ci/test/00_setup_env_i686_centos.sh b/ci/test/00_setup_env_i686_centos.sh index 5f8391c5da..b8b8955848 100755 --- a/ci/test/00_setup_env_i686_centos.sh +++ b/ci/test/00_setup_env_i686_centos.sh @@ -9,7 +9,7 @@ export LC_ALL=C.UTF-8 export HOST=i686-pc-linux-gnu export CONTAINER_NAME=ci_i686_centos export CI_IMAGE_NAME_TAG="quay.io/centos/amd64:stream9" -export CI_BASE_PACKAGES="gcc-c++ glibc-devel.x86_64 libstdc++-devel.x86_64 glibc-devel.i686 libstdc++-devel.i686 ccache libtool make git python3 python3-pip which patch lbzip2 xz procps-ng dash rsync coreutils bison util-linux e2fsprogs cmake" +export CI_BASE_PACKAGES="gcc-c++ glibc-devel.x86_64 libstdc++-devel.x86_64 glibc-devel.i686 libstdc++-devel.i686 ccache libtool make git python3 python3-pip which patch lbzip2 xz procps-ng dash rsync coreutils bison util-linux e2fsprogs cmake libicns-utils librsvg2-tools ImageMagick" export PIP_PACKAGES="pyzmq" export GOAL="install" export NO_WERROR=1 # Suppress error: #warning _FORTIFY_SOURCE > 2 is treated like 2 on this platform [-Werror=cpp] diff --git a/ci/test/00_setup_env_mac_cross.sh b/ci/test/00_setup_env_mac_cross.sh index f607c93ae6..f4b436a990 100755 --- a/ci/test/00_setup_env_mac_cross.sh +++ b/ci/test/00_setup_env_mac_cross.sh @@ -11,7 +11,7 @@ export SDK_URL=${SDK_URL:-https://bitcoincore.org/depends-sources/sdks} export CONTAINER_NAME=ci_macos_cross export CI_IMAGE_NAME_TAG="docker.io/ubuntu:24.04" export HOST=x86_64-apple-darwin -export PACKAGES="clang lld llvm zip" +export PACKAGES="clang lld llvm zip icnsutils imagemagick librsvg2-bin" export XCODE_VERSION=15.0 export XCODE_BUILD_ID=15A240d export RUN_UNIT_TESTS=false From 1782a870e9616aba47c36c3252d05311c4da081a Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Tue, 12 Oct 2021 05:21:27 +0000 Subject: [PATCH 04/17] Make a modified copy of qrc file for VPATH builds --- src/Makefile.qt.include | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Makefile.qt.include b/src/Makefile.qt.include index 1ac6b74688..5c18de3ce6 100644 --- a/src/Makefile.qt.include +++ b/src/Makefile.qt.include @@ -102,6 +102,7 @@ QT_MOC = \ QT_QRC_CPP = qt/qrc_bitcoin.cpp QT_QRC = qt/bitcoin.qrc +QT_QRC_BUILD = qt/qrc_bitcoin_build.qrc QT_QRC_LOCALE_CPP = qt/qrc_bitcoin_locale.cpp QT_QRC_LOCALE = qt/bitcoin_locale.qrc @@ -379,11 +380,14 @@ $(QT_QRC_LOCALE_CPP): $(QT_QRC_LOCALE) $(QT_QM) $(AM_V_GEN) QT_SELECT=$(QT_SELECT) $(RCC) -name bitcoin_locale --format-version 1 $(@D)/temp_$( $@ @rm $(@D)/temp_$("$@" + +$(QT_QRC_CPP): $(QT_QRC_BUILD) $(QT_FORMS_H) $(QT_RES_FONTS) $(QT_RES_ICONS) $(QT_RES_ANIMATION) @test -f $(RCC) || (echo "rcc $(RCC) not found, but is required for generating qrc cpp files"; exit 1) $(AM_V_GEN) QT_SELECT=$(QT_SELECT) $(RCC) -name bitcoin --format-version 1 $< > $@ -CLEAN_QT = $(nodist_qt_libbitcoinqt_a_SOURCES) $(QT_QM) $(QT_FORMS_H) qt/*.gcda qt/*.gcno qt/temp_bitcoin_locale.qrc +CLEAN_QT = $(nodist_qt_libbitcoinqt_a_SOURCES) $(QT_QM) $(QT_FORMS_H) qt/*.gcda qt/*.gcno qt/temp_bitcoin_locale.qrc $(QT_QRC_BUILD) CLEANFILES += $(CLEAN_QT) From ea29400aba76d7a6007e63448e541dc26b6feaff Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Fri, 5 Feb 2016 06:58:18 +0000 Subject: [PATCH 05/17] Render some icons when possible 8-bit icon is required to make builds deterministic --- Makefile.am | 7 ++++-- configure.ac | 20 ++++++++++++++++ share/setup.nsi.in | 2 +- src/Makefile.qt.include | 44 ++++++++++++++++++++++++++++++++---- src/qt/bitcoin.qrc | 2 +- src/qt/res/bitcoin-qt-res.rc | 2 +- src/qt/res/src/bitcoin.svg | 2 +- 7 files changed, 69 insertions(+), 10 deletions(-) diff --git a/Makefile.am b/Makefile.am index 989f154624..905367ffe4 100644 --- a/Makefile.am +++ b/Makefile.am @@ -32,7 +32,7 @@ OSX_APP=Bitcoin-Qt.app OSX_VOLNAME = $(subst $(space),-,$(PACKAGE_NAME)) OSX_ZIP = $(OSX_VOLNAME).zip OSX_DEPLOY_SCRIPT=$(top_srcdir)/contrib/macdeploy/macdeployqtplus -OSX_INSTALLER_ICONS=$(top_srcdir)/src/qt/res/icons/bitcoin.icns +OSX_INSTALLER_ICONS=src/qt/res/rendered_icons/bitcoin.icns OSX_PLIST=$(top_builddir)/share/qt/Info.plist #not installed DIST_CONTRIB = \ @@ -51,7 +51,7 @@ BIN_CHECKS=$(top_srcdir)/contrib/devtools/symbol-check.py \ $(top_srcdir)/contrib/devtools/security-check.py \ $(top_srcdir)/contrib/devtools/utils.py -WINDOWS_PACKAGING = $(top_srcdir)/src/qt/res/icons/bitcoin.ico \ +WINDOWS_PACKAGING = src/qt/res/rendered_icons/bitcoin.ico \ $(top_srcdir)/share/pixmaps/nsis-header.bmp \ $(top_srcdir)/share/pixmaps/nsis-wizard.bmp \ $(top_srcdir)/doc/README_windows.txt @@ -64,6 +64,9 @@ COVERAGE_INFO = $(COV_TOOL_WRAPPER) baseline.info \ baseline_filtered.info functional_test.info functional_test_filtered.info \ test_bitcoin_coverage.info test_bitcoin.info fuzz.info fuzz_filtered.info fuzz_coverage.info +$(OSX_INSTALLER_ICONS): FORCE + $(MAKE) -C src $(patsubst src/%,%,$@) + dist-hook: -$(GIT) archive --format=tar HEAD -- src/clientversion.cpp | $(AMTAR) -C $(top_distdir) -xf - diff --git a/configure.ac b/configure.ac index 43ba33acff..d46e0fea80 100644 --- a/configure.ac +++ b/configure.ac @@ -617,6 +617,17 @@ AC_ARG_WITH([daemon], [build_bitcoind=$withval], [build_bitcoind=yes]) +can_render_icons=yes +AC_PATH_PROGS([RSVG_CONVERT],[rsvg-convert rsvg],no) +AC_PATH_PROGS([IMAGEMAGICK_CONVERT],[convert],no) +AC_PATH_PROGS([PNG2ICNS],[png2icns],no) + +if test x$RSVG_CONVERT = xno; then + can_render_icons='rsvg-convert' +elif test x$IMAGEMAGICK_CONVERT = xno; then + can_render_icons='(ImageMagick) convert' +fi + case $host in *mingw*) TARGET_OS=windows @@ -672,6 +683,10 @@ case $host in AX_CHECK_COMPILE_FLAG([-Wa,-muse-unaligned-vector-move], [CORE_CXXFLAGS="$CORE_CXXFLAGS -Wa,-muse-unaligned-vector-move"], [], [$CXXFLAG_WERROR]) ;; *darwin*) + if test x$PNG2ICNS = xno; then + can_render_icons='png2icns' + fi + TARGET_OS=darwin if test $cross_compiling != "yes"; then BUILD_OS=darwin @@ -763,6 +778,11 @@ case $host in ;; esac +AM_CONDITIONAL([CAN_RENDER_ICONS], [test "$can_render_icons" = "yes"]) +if test "$can_render_icons" != "yes"; then + AC_MSG_WARN([Couldn't find ${can_render_icons}; you won't get the Knots-branded Bitcoin icon]) +fi + if test "$use_extended_functional_tests" != "no"; then AC_SUBST(EXTENDED_FUNCTIONAL_TESTS, --extended) fi diff --git a/share/setup.nsi.in b/share/setup.nsi.in index cdaae1ef9a..58af804d7e 100644 --- a/share/setup.nsi.in +++ b/share/setup.nsi.in @@ -15,7 +15,7 @@ Unicode true !define URL @PACKAGE_URL@ # MUI Symbol Definitions -!define MUI_ICON "@abs_top_srcdir@/src/qt/res/icons/bitcoin.ico" +!define MUI_ICON "@abs_top_srcdir@/src/qt/res/rendered_icons/bitcoin.ico" !define MUI_WELCOMEFINISHPAGE_BITMAP "@abs_top_srcdir@/share/pixmaps/nsis-wizard.bmp" !define MUI_HEADERIMAGE !define MUI_HEADERIMAGE_RIGHT diff --git a/src/Makefile.qt.include b/src/Makefile.qt.include index 5c18de3ce6..44e1985ca5 100644 --- a/src/Makefile.qt.include +++ b/src/Makefile.qt.include @@ -172,12 +172,20 @@ BITCOIN_QT_H = \ QT_RES_FONTS = \ qt/res/fonts/RobotoMono-Bold.ttf -QT_RES_ICONS = \ +RES_RENDERED_ICON_SRC = qt/res/src/bitcoin.svg + +RES_RENDERED_ICONS = \ + qt/res/rendered_icons/bitcoin.ico \ + qt/res/rendered_icons/bitcoin1024.png + +RES_ALL_RENDERED_ICONS = $(RES_RENDERED_ICONS) \ + $(patsubst %,qt/res/rendered_icons/bitcoin%.png,16 32 48 256 512 1024) \ + qt/res/rendered_icons/bitcoin.icns + +QT_RES_ICONS = $(RES_RENDERED_ICONS) \ qt/res/icons/add.png \ qt/res/icons/address-book.png \ - qt/res/icons/bitcoin.ico \ qt/res/icons/bitcoin_testnet.ico \ - qt/res/icons/bitcoin.png \ qt/res/icons/chevron.png \ qt/res/icons/clock1.png \ qt/res/icons/clock2.png \ @@ -293,6 +301,8 @@ QT_RES_ANIMATION = $(wildcard $(srcdir)/qt/res/animation/spinner-*.png) BITCOIN_QT_RC = qt/res/bitcoin-qt-res.rc +$(BITCOIN_RC): qt/res/rendered_icons/bitcoin.ico + BITCOIN_QT_INCLUDES = -DQT_NO_KEYWORDS -DQT_USE_QSTRINGBUILDER qt_libbitcoinqt_a_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(BITCOIN_QT_INCLUDES) \ @@ -387,7 +397,7 @@ $(QT_QRC_CPP): $(QT_QRC_BUILD) $(QT_FORMS_H) $(QT_RES_FONTS) $(QT_RES_ICONS) $(Q @test -f $(RCC) || (echo "rcc $(RCC) not found, but is required for generating qrc cpp files"; exit 1) $(AM_V_GEN) QT_SELECT=$(QT_SELECT) $(RCC) -name bitcoin --format-version 1 $< > $@ -CLEAN_QT = $(nodist_qt_libbitcoinqt_a_SOURCES) $(QT_QM) $(QT_FORMS_H) qt/*.gcda qt/*.gcno qt/temp_bitcoin_locale.qrc $(QT_QRC_BUILD) +CLEAN_QT = $(nodist_qt_libbitcoinqt_a_SOURCES) $(QT_QM) $(QT_FORMS_H) qt/*.gcda qt/*.gcno qt/temp_bitcoin_locale.qrc $(QT_QRC_BUILD) $(RES_ALL_RENDERED_ICONS) CLEANFILES += $(CLEAN_QT) @@ -411,3 +421,29 @@ moc_%.cpp: %.h @test -f $(LRELEASE) || (echo "lrelease $(LRELEASE) not found, but is required for generating translations"; exit 1) @$(MKDIR_P) $(@D) $(AM_V_GEN) QT_SELECT=$(QT_SELECT) $(LRELEASE) -silent $< -qm $@ + +EXTRA_DIST += $(RES_RENDERED_ICON_SRC) + +if CAN_RENDER_ICONS + +qt/res/rendered_icons/bitcoin%.png: qt/res/src/bitcoin.svg + @$(MKDIR_P) $(@D) + $(RSVG_CONVERT) -f png -d $* -p $* < $< > $@ + +# NOTE: ImageMagick will never convert transparent PNGs to 8-bit ICOs, but GIF is fine +qt/res/rendered_icons/bitcoin%d8.gif: qt/res/rendered_icons/bitcoin%.png + $(IMAGEMAGICK_CONVERT) $^ -colors 256 -channel A -threshold '50%' $@ + +qt/res/rendered_icons/bitcoin.icns: $(patsubst %,qt/res/rendered_icons/bitcoin%.png,256 512 1024 32 16) + $(PNG2ICNS) $@ $^ + +qt/res/rendered_icons/bitcoin.ico: qt/res/rendered_icons/bitcoin32d8.gif $(patsubst %,qt/res/rendered_icons/bitcoin%.png,256 64 48 32 20 16) + $(IMAGEMAGICK_CONVERT) $^ $@ + +else + +qt/res/rendered_icons/%: qt/res/icons/% + @$(MKDIR_P) $(@D) + cp $< $@ + +endif diff --git a/src/qt/bitcoin.qrc b/src/qt/bitcoin.qrc index fed373e551..09ddd170e7 100644 --- a/src/qt/bitcoin.qrc +++ b/src/qt/bitcoin.qrc @@ -1,6 +1,6 @@ - res/icons/bitcoin.png + res/rendered_icons/bitcoin1024.png res/icons/address-book.png res/icons/send.png res/icons/connect0.png diff --git a/src/qt/res/bitcoin-qt-res.rc b/src/qt/res/bitcoin-qt-res.rc index e590b407b0..0bd9fc443e 100644 --- a/src/qt/res/bitcoin-qt-res.rc +++ b/src/qt/res/bitcoin-qt-res.rc @@ -1,4 +1,4 @@ -IDI_ICON1 ICON DISCARDABLE "icons/bitcoin.ico" +IDI_ICON1 ICON DISCARDABLE "rendered_icons/bitcoin.ico" IDI_ICON2 ICON DISCARDABLE "icons/bitcoin_testnet.ico" #include // needed for VERSIONINFO diff --git a/src/qt/res/src/bitcoin.svg b/src/qt/res/src/bitcoin.svg index 14cf0c5e11..d8da87394d 100644 --- a/src/qt/res/src/bitcoin.svg +++ b/src/qt/res/src/bitcoin.svg @@ -7,7 +7,7 @@ From d22aa1d9cc58a838263405a7d386766624f68cf2 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Fri, 5 Feb 2016 18:53:43 +0000 Subject: [PATCH 06/17] Render NSIS wizard sidebar image --- Makefile.am | 6 +++--- share/setup.nsi.in | 4 ++-- src/Makefile.qt.include | 8 ++++++-- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/Makefile.am b/Makefile.am index 905367ffe4..1406032498 100644 --- a/Makefile.am +++ b/Makefile.am @@ -53,7 +53,7 @@ BIN_CHECKS=$(top_srcdir)/contrib/devtools/symbol-check.py \ WINDOWS_PACKAGING = src/qt/res/rendered_icons/bitcoin.ico \ $(top_srcdir)/share/pixmaps/nsis-header.bmp \ - $(top_srcdir)/share/pixmaps/nsis-wizard.bmp \ + src/qt/res/rendered_icons/nsis-wizard.bmp \ $(top_srcdir)/doc/README_windows.txt OSX_PACKAGING = $(OSX_DEPLOY_SCRIPT) $(OSX_INSTALLER_ICONS) \ @@ -64,14 +64,14 @@ COVERAGE_INFO = $(COV_TOOL_WRAPPER) baseline.info \ baseline_filtered.info functional_test.info functional_test_filtered.info \ test_bitcoin_coverage.info test_bitcoin.info fuzz.info fuzz_filtered.info fuzz_coverage.info -$(OSX_INSTALLER_ICONS): FORCE +src/qt/res/rendered_icons/%: FORCE $(MAKE) -C src $(patsubst src/%,%,$@) dist-hook: -$(GIT) archive --format=tar HEAD -- src/clientversion.cpp | $(AMTAR) -C $(top_distdir) -xf - if TARGET_WINDOWS -$(BITCOIN_WIN_INSTALLER): all-recursive +$(BITCOIN_WIN_INSTALLER): all-recursive $(WINDOWS_PACKAGING) $(MKDIR_P) $(top_builddir)/release STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $(BITCOIND_BIN) $(top_builddir)/release STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $(BITCOIN_QT_BIN) $(top_builddir)/release diff --git a/share/setup.nsi.in b/share/setup.nsi.in index 58af804d7e..3d54d572f5 100644 --- a/share/setup.nsi.in +++ b/share/setup.nsi.in @@ -16,7 +16,7 @@ Unicode true # MUI Symbol Definitions !define MUI_ICON "@abs_top_srcdir@/src/qt/res/rendered_icons/bitcoin.ico" -!define MUI_WELCOMEFINISHPAGE_BITMAP "@abs_top_srcdir@/share/pixmaps/nsis-wizard.bmp" +!define MUI_WELCOMEFINISHPAGE_BITMAP "@abs_top_builddir@/src/qt/res/rendered_icons/nsis-wizard.bmp" !define MUI_HEADERIMAGE !define MUI_HEADERIMAGE_RIGHT !define MUI_HEADERIMAGE_BITMAP "@abs_top_srcdir@/share/pixmaps/nsis-header.bmp" @@ -28,7 +28,7 @@ Unicode true !define MUI_FINISHPAGE_RUN "$WINDIR\explorer.exe" !define MUI_FINISHPAGE_RUN_PARAMETERS $INSTDIR\@BITCOIN_GUI_NAME@@EXEEXT@ !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico" -!define MUI_UNWELCOMEFINISHPAGE_BITMAP "@abs_top_srcdir@/share/pixmaps/nsis-wizard.bmp" +!define MUI_UNWELCOMEFINISHPAGE_BITMAP "@abs_top_builddir@/src/qt/res/rendered_icons/nsis-wizard.bmp" !define MUI_UNFINISHPAGE_NOAUTOCLOSE # Included files diff --git a/src/Makefile.qt.include b/src/Makefile.qt.include index 44e1985ca5..b2fef66467 100644 --- a/src/Makefile.qt.include +++ b/src/Makefile.qt.include @@ -179,8 +179,9 @@ RES_RENDERED_ICONS = \ qt/res/rendered_icons/bitcoin1024.png RES_ALL_RENDERED_ICONS = $(RES_RENDERED_ICONS) \ - $(patsubst %,qt/res/rendered_icons/bitcoin%.png,16 32 48 256 512 1024) \ - qt/res/rendered_icons/bitcoin.icns + $(patsubst %,qt/res/rendered_icons/bitcoin%.png,16 32 48 256 290 512 1024) \ + qt/res/rendered_icons/bitcoin.icns \ + qt/res/rendered_icons/nsis-wizard.bmp QT_RES_ICONS = $(RES_RENDERED_ICONS) \ qt/res/icons/add.png \ @@ -440,6 +441,9 @@ qt/res/rendered_icons/bitcoin.icns: $(patsubst %,qt/res/rendered_icons/bitcoin%. qt/res/rendered_icons/bitcoin.ico: qt/res/rendered_icons/bitcoin32d8.gif $(patsubst %,qt/res/rendered_icons/bitcoin%.png,256 64 48 32 20 16) $(IMAGEMAGICK_CONVERT) $^ $@ +qt/res/rendered_icons/nsis-wizard.bmp: qt/res/rendered_icons/bitcoin290.png + $(IMAGEMAGICK_CONVERT) $^ -crop 164x290+62+0 -border 0x12 -strip BMP3:$@ + else qt/res/rendered_icons/%: qt/res/icons/% From 4d071b07582c170cfcf471ba65629136c1ce645a Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Sat, 6 Feb 2016 07:28:33 +0000 Subject: [PATCH 07/17] Rather than clean generated icons, plan to distribute them --- Makefile.am | 3 ++ configure.ac | 3 -- contrib/guix/libexec/make_release_tarball.sh | 1 + src/Makefile.am | 37 +++++++++++++++++ src/Makefile.qt.include | 42 +------------------- 5 files changed, 42 insertions(+), 44 deletions(-) diff --git a/Makefile.am b/Makefile.am index 1406032498..7325cf2e5b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -327,6 +327,9 @@ docs: @echo "error: doxygen not found" endif +src_files: $(DISTFILES) + @true + clean-docs: rm -rf doc/doxygen diff --git a/configure.ac b/configure.ac index d46e0fea80..ab78ab92ed 100644 --- a/configure.ac +++ b/configure.ac @@ -779,9 +779,6 @@ case $host in esac AM_CONDITIONAL([CAN_RENDER_ICONS], [test "$can_render_icons" = "yes"]) -if test "$can_render_icons" != "yes"; then - AC_MSG_WARN([Couldn't find ${can_render_icons}; you won't get the Knots-branded Bitcoin icon]) -fi if test "$use_extended_functional_tests" != "no"; then AC_SUBST(EXTENDED_FUNCTIONAL_TESTS, --extended) diff --git a/contrib/guix/libexec/make_release_tarball.sh b/contrib/guix/libexec/make_release_tarball.sh index 0c9c6ef3c3..74b7ffa9e6 100755 --- a/contrib/guix/libexec/make_release_tarball.sh +++ b/contrib/guix/libexec/make_release_tarball.sh @@ -24,6 +24,7 @@ cd "${DISTNAME}" ./autogen.sh ./configure --prefix=/ --disable-ccache --disable-maintainer-mode --disable-dependency-tracking +make src_files make distclean cd .. diff --git a/src/Makefile.am b/src/Makefile.am index fc9f921d4d..711b373fd7 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1106,6 +1106,43 @@ endif echo "};"; \ } > "$@.new" && mv -f "$@.new" "$@" +# Rendered icons must be here, not in Makefile.qt.include, since they are distributed with the source tarball + +RES_RENDERED_ICON_SRC = qt/res/src/bitcoin.svg + +RES_RENDERED_ICONS = \ + qt/res/rendered_icons/bitcoin.ico \ + qt/res/rendered_icons/bitcoin1024.png + +RES_ALL_RENDERED_ICONS = $(RES_RENDERED_ICONS) \ + $(patsubst %,qt/res/rendered_icons/bitcoin%.png,16 32 48 256 290 512 1024) \ + qt/res/rendered_icons/bitcoin.icns \ + qt/res/rendered_icons/nsis-wizard.bmp + +EXTRA_DIST += $(RES_RENDERED_ICON_SRC) $(RES_ALL_RENDERED_ICONS) + +if CAN_RENDER_ICONS + +qt/res/rendered_icons/bitcoin%.png: qt/res/src/bitcoin.svg + @$(MKDIR_P) $(@D) + $(RSVG_CONVERT) -f png -d $* -p $* < $< > $@ + +# NOTE: ImageMagick will never convert transparent PNGs to 8-bit ICOs, but GIF is fine +qt/res/rendered_icons/bitcoin%d8.gif: qt/res/rendered_icons/bitcoin%.png + $(IMAGEMAGICK_CONVERT) $^ -colors 256 -channel A -threshold '50%' $@ + +qt/res/rendered_icons/bitcoin.icns: $(patsubst %,qt/res/rendered_icons/bitcoin%.png,256 512 1024 32 16) + $(PNG2ICNS) $@ $^ + +qt/res/rendered_icons/bitcoin.ico: qt/res/rendered_icons/bitcoin32d8.gif $(patsubst %,qt/res/rendered_icons/bitcoin%.png,256 64 48 32 20 16) + $(IMAGEMAGICK_CONVERT) $^ $@ + +qt/res/rendered_icons/nsis-wizard.bmp: qt/res/rendered_icons/bitcoin290.png + $(IMAGEMAGICK_CONVERT) $^ -crop 164x290+62+0 -border 0x12 -strip BMP3:$@ + +endif + + if EMBEDDED_LEVELDB include Makefile.crc32c.include include Makefile.leveldb.include diff --git a/src/Makefile.qt.include b/src/Makefile.qt.include index b2fef66467..495e874497 100644 --- a/src/Makefile.qt.include +++ b/src/Makefile.qt.include @@ -172,17 +172,6 @@ BITCOIN_QT_H = \ QT_RES_FONTS = \ qt/res/fonts/RobotoMono-Bold.ttf -RES_RENDERED_ICON_SRC = qt/res/src/bitcoin.svg - -RES_RENDERED_ICONS = \ - qt/res/rendered_icons/bitcoin.ico \ - qt/res/rendered_icons/bitcoin1024.png - -RES_ALL_RENDERED_ICONS = $(RES_RENDERED_ICONS) \ - $(patsubst %,qt/res/rendered_icons/bitcoin%.png,16 32 48 256 290 512 1024) \ - qt/res/rendered_icons/bitcoin.icns \ - qt/res/rendered_icons/nsis-wizard.bmp - QT_RES_ICONS = $(RES_RENDERED_ICONS) \ qt/res/icons/add.png \ qt/res/icons/address-book.png \ @@ -398,7 +387,7 @@ $(QT_QRC_CPP): $(QT_QRC_BUILD) $(QT_FORMS_H) $(QT_RES_FONTS) $(QT_RES_ICONS) $(Q @test -f $(RCC) || (echo "rcc $(RCC) not found, but is required for generating qrc cpp files"; exit 1) $(AM_V_GEN) QT_SELECT=$(QT_SELECT) $(RCC) -name bitcoin --format-version 1 $< > $@ -CLEAN_QT = $(nodist_qt_libbitcoinqt_a_SOURCES) $(QT_QM) $(QT_FORMS_H) qt/*.gcda qt/*.gcno qt/temp_bitcoin_locale.qrc $(QT_QRC_BUILD) $(RES_ALL_RENDERED_ICONS) +CLEAN_QT = $(nodist_qt_libbitcoinqt_a_SOURCES) $(QT_QM) $(QT_FORMS_H) qt/*.gcda qt/*.gcno qt/temp_bitcoin_locale.qrc $(QT_QRC_BUILD) CLEANFILES += $(CLEAN_QT) @@ -422,32 +411,3 @@ moc_%.cpp: %.h @test -f $(LRELEASE) || (echo "lrelease $(LRELEASE) not found, but is required for generating translations"; exit 1) @$(MKDIR_P) $(@D) $(AM_V_GEN) QT_SELECT=$(QT_SELECT) $(LRELEASE) -silent $< -qm $@ - -EXTRA_DIST += $(RES_RENDERED_ICON_SRC) - -if CAN_RENDER_ICONS - -qt/res/rendered_icons/bitcoin%.png: qt/res/src/bitcoin.svg - @$(MKDIR_P) $(@D) - $(RSVG_CONVERT) -f png -d $* -p $* < $< > $@ - -# NOTE: ImageMagick will never convert transparent PNGs to 8-bit ICOs, but GIF is fine -qt/res/rendered_icons/bitcoin%d8.gif: qt/res/rendered_icons/bitcoin%.png - $(IMAGEMAGICK_CONVERT) $^ -colors 256 -channel A -threshold '50%' $@ - -qt/res/rendered_icons/bitcoin.icns: $(patsubst %,qt/res/rendered_icons/bitcoin%.png,256 512 1024 32 16) - $(PNG2ICNS) $@ $^ - -qt/res/rendered_icons/bitcoin.ico: qt/res/rendered_icons/bitcoin32d8.gif $(patsubst %,qt/res/rendered_icons/bitcoin%.png,256 64 48 32 20 16) - $(IMAGEMAGICK_CONVERT) $^ $@ - -qt/res/rendered_icons/nsis-wizard.bmp: qt/res/rendered_icons/bitcoin290.png - $(IMAGEMAGICK_CONVERT) $^ -crop 164x290+62+0 -border 0x12 -strip BMP3:$@ - -else - -qt/res/rendered_icons/%: qt/res/icons/% - @$(MKDIR_P) $(@D) - cp $< $@ - -endif From 5c99e10e7f681624eb0288221298f0aa671a9bee Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Mon, 8 Aug 2016 06:56:15 +0000 Subject: [PATCH 08/17] Generate bitcoin_testnet.ico using ImageMagick --- src/Makefile.am | 4 ++++ src/Makefile.qt.include | 3 +-- src/qt/res/bitcoin-qt-res.rc | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/Makefile.am b/src/Makefile.am index 711b373fd7..3391e2050c 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1112,6 +1112,7 @@ RES_RENDERED_ICON_SRC = qt/res/src/bitcoin.svg RES_RENDERED_ICONS = \ qt/res/rendered_icons/bitcoin.ico \ + qt/res/rendered_icons/bitcoin_testnet.ico \ qt/res/rendered_icons/bitcoin1024.png RES_ALL_RENDERED_ICONS = $(RES_RENDERED_ICONS) \ @@ -1137,6 +1138,9 @@ qt/res/rendered_icons/bitcoin.icns: $(patsubst %,qt/res/rendered_icons/bitcoin%. qt/res/rendered_icons/bitcoin.ico: qt/res/rendered_icons/bitcoin32d8.gif $(patsubst %,qt/res/rendered_icons/bitcoin%.png,256 64 48 32 20 16) $(IMAGEMAGICK_CONVERT) $^ $@ +qt/res/rendered_icons/bitcoin_testnet.ico: qt/res/rendered_icons/bitcoin.ico + $(IMAGEMAGICK_CONVERT) $^ -modulate 100,87,9 $@ + qt/res/rendered_icons/nsis-wizard.bmp: qt/res/rendered_icons/bitcoin290.png $(IMAGEMAGICK_CONVERT) $^ -crop 164x290+62+0 -border 0x12 -strip BMP3:$@ diff --git a/src/Makefile.qt.include b/src/Makefile.qt.include index 495e874497..fd2140f3bd 100644 --- a/src/Makefile.qt.include +++ b/src/Makefile.qt.include @@ -175,7 +175,6 @@ QT_RES_FONTS = \ QT_RES_ICONS = $(RES_RENDERED_ICONS) \ qt/res/icons/add.png \ qt/res/icons/address-book.png \ - qt/res/icons/bitcoin_testnet.ico \ qt/res/icons/chevron.png \ qt/res/icons/clock1.png \ qt/res/icons/clock2.png \ @@ -291,7 +290,7 @@ QT_RES_ANIMATION = $(wildcard $(srcdir)/qt/res/animation/spinner-*.png) BITCOIN_QT_RC = qt/res/bitcoin-qt-res.rc -$(BITCOIN_RC): qt/res/rendered_icons/bitcoin.ico +$(BITCOIN_RC): qt/res/rendered_icons/bitcoin.ico qt/res/rendered_icons/bitcoin_testnet.ico BITCOIN_QT_INCLUDES = -DQT_NO_KEYWORDS -DQT_USE_QSTRINGBUILDER diff --git a/src/qt/res/bitcoin-qt-res.rc b/src/qt/res/bitcoin-qt-res.rc index 0bd9fc443e..ca228ad9b6 100644 --- a/src/qt/res/bitcoin-qt-res.rc +++ b/src/qt/res/bitcoin-qt-res.rc @@ -1,5 +1,5 @@ IDI_ICON1 ICON DISCARDABLE "rendered_icons/bitcoin.ico" -IDI_ICON2 ICON DISCARDABLE "icons/bitcoin_testnet.ico" +IDI_ICON2 ICON DISCARDABLE "rendered_icons/bitcoin_testnet.ico" #include // needed for VERSIONINFO #include "../../clientversion.h" // holds the needed client version information From 934e51a97f10893df533b97cc96673161e78a294 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Sat, 21 May 2022 08:37:24 +0000 Subject: [PATCH 09/17] guix: Use librsvg 2.40 to avoid Rust deps --- contrib/guix/manifest.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contrib/guix/manifest.scm b/contrib/guix/manifest.scm index 3f416190ea..b93928cacb 100644 --- a/contrib/guix/manifest.scm +++ b/contrib/guix/manifest.scm @@ -10,6 +10,7 @@ (gnu packages file) (gnu packages gawk) (gnu packages gcc) + (gnu packages gnome) (gnu packages image) (gnu packages imagemagick) ((gnu packages installers) #:select (nsis-x86_64)) @@ -530,7 +531,7 @@ inspecting signatures in Mach-O binaries.") pkg-config imagemagick libicns - librsvg + librsvg-2.40 ;; Scripting python-minimal ;; (3.10) ;; Git From dfe0b3afb27baa891f4666b6d3a61d3020f6cf3a Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Thu, 29 Feb 2024 00:50:47 +0000 Subject: [PATCH 10/17] configure: Warn or error (as appropriate) if icon rendering tools are missing --- configure.ac | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/configure.ac b/configure.ac index ab78ab92ed..66b316c624 100644 --- a/configure.ac +++ b/configure.ac @@ -779,6 +779,12 @@ case $host in esac AM_CONDITIONAL([CAN_RENDER_ICONS], [test "$can_render_icons" = "yes"]) +if test "$can_render_icons" != "yes"; then + if test ! -f "${srcdir}/src/qt/res/rendered_icons/bitcoin.ico"; then + AC_MSG_ERROR([Couldn't find ${can_render_icons} (required to build from git)]) + fi + AC_MSG_WARN([Couldn't find ${can_render_icons}; you won't get the Knots-branded Bitcoin icon]) +fi if test "$use_extended_functional_tests" != "no"; then AC_SUBST(EXTENDED_FUNCTIONAL_TESTS, --extended) From c5b87a1241c04391b042e75a830269b54b707987 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Sat, 11 May 2024 14:33:33 +0000 Subject: [PATCH 11/17] Bugfix: configure: Only require SVG-rendering tools if GUI is being built --- configure.ac | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 66b316c624..a5d0ab0f34 100644 --- a/configure.ac +++ b/configure.ac @@ -780,8 +780,8 @@ esac AM_CONDITIONAL([CAN_RENDER_ICONS], [test "$can_render_icons" = "yes"]) if test "$can_render_icons" != "yes"; then - if test ! -f "${srcdir}/src/qt/res/rendered_icons/bitcoin.ico"; then - AC_MSG_ERROR([Couldn't find ${can_render_icons} (required to build from git)]) + if test "$bitcoin_enable_qt" != "no" && test ! -f "${srcdir}/src/qt/res/rendered_icons/bitcoin.ico"; then + AC_MSG_ERROR([Couldn't find ${can_render_icons} (required to build GUI from git)]) fi AC_MSG_WARN([Couldn't find ${can_render_icons}; you won't get the Knots-branded Bitcoin icon]) fi From 4143bfd25fc70360e6585028cf43f1120ec2d3d6 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Fri, 7 Jun 2024 21:03:45 +0000 Subject: [PATCH 12/17] Bugfix: configure: Only require SVG-rendering tools if GUI is being built --- configure.ac | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/configure.ac b/configure.ac index a5d0ab0f34..62e91ec951 100644 --- a/configure.ac +++ b/configure.ac @@ -778,14 +778,6 @@ case $host in ;; esac -AM_CONDITIONAL([CAN_RENDER_ICONS], [test "$can_render_icons" = "yes"]) -if test "$can_render_icons" != "yes"; then - if test "$bitcoin_enable_qt" != "no" && test ! -f "${srcdir}/src/qt/res/rendered_icons/bitcoin.ico"; then - AC_MSG_ERROR([Couldn't find ${can_render_icons} (required to build GUI from git)]) - fi - AC_MSG_WARN([Couldn't find ${can_render_icons}; you won't get the Knots-branded Bitcoin icon]) -fi - if test "$use_extended_functional_tests" != "no"; then AC_SUBST(EXTENDED_FUNCTIONAL_TESTS, --extended) fi @@ -1209,6 +1201,13 @@ else fi fi +AM_CONDITIONAL([CAN_RENDER_ICONS], [test "$can_render_icons" = "yes"]) +if test "$can_render_icons" != "yes"; then + if test "$bitcoin_enable_qt" != "no" && test ! -f "${srcdir}/src/qt/res/rendered_icons/bitcoin.ico"; then + AC_MSG_ERROR([Couldn't find ${can_render_icons} (required to build GUI from git)]) + fi +fi + if test "$enable_fuzz_binary" = "yes"; then AC_MSG_CHECKING([whether main function is needed for fuzz binary]) AX_CHECK_LINK_FLAG( From 2b237aa21ba785a132ddb8c227bed7d57d476da3 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Wed, 6 Sep 2017 22:11:10 +0000 Subject: [PATCH 13/17] nsis-header.bmp: Generate from SVG --- Makefile.am | 2 +- configure.ac | 3 +++ contrib/guix/manifest.scm | 22 ++++++++++++++++++- share/setup.nsi.in | 2 +- src/Makefile.am | 7 +++++- src/qt/res/src/nsis-header.svg | 39 ++++++++++++++++++++++++++++++++++ 6 files changed, 71 insertions(+), 4 deletions(-) create mode 100644 src/qt/res/src/nsis-header.svg diff --git a/Makefile.am b/Makefile.am index 7325cf2e5b..49b483d274 100644 --- a/Makefile.am +++ b/Makefile.am @@ -52,7 +52,7 @@ BIN_CHECKS=$(top_srcdir)/contrib/devtools/symbol-check.py \ $(top_srcdir)/contrib/devtools/utils.py WINDOWS_PACKAGING = src/qt/res/rendered_icons/bitcoin.ico \ - $(top_srcdir)/share/pixmaps/nsis-header.bmp \ + src/qt/res/rendered_icons/nsis-header.bmp \ src/qt/res/rendered_icons/nsis-wizard.bmp \ $(top_srcdir)/doc/README_windows.txt diff --git a/configure.ac b/configure.ac index 62e91ec951..326b1fbdda 100644 --- a/configure.ac +++ b/configure.ac @@ -681,6 +681,9 @@ case $host in dnl Avoid the use of aligned vector instructions when building for Windows. dnl See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54412. AX_CHECK_COMPILE_FLAG([-Wa,-muse-unaligned-vector-move], [CORE_CXXFLAGS="$CORE_CXXFLAGS -Wa,-muse-unaligned-vector-move"], [], [$CXXFLAG_WERROR]) + + AC_PATH_PROGS([RSVG_CONVERT], [rsvg-convert rsvg],rsvg-convert) + AC_PATH_PROGS([IMAGEMAGICK_CONVERT], [convert],convert) ;; *darwin*) if test x$PNG2ICNS = xno; then diff --git a/contrib/guix/manifest.scm b/contrib/guix/manifest.scm index b93928cacb..2b716a69ef 100644 --- a/contrib/guix/manifest.scm +++ b/contrib/guix/manifest.scm @@ -25,6 +25,7 @@ ((gnu packages tls) #:select (openssl)) ((gnu packages version-control) #:select (git-minimal)) (guix build-system cmake) + (guix build-system font) (guix build-system gnu) (guix build-system python) (guix build-system trivial) @@ -165,6 +166,25 @@ chain for " target " development.")) (home-page (package-home-page pthreads-xgcc)) (license (package-license pthreads-xgcc))))) +(define-public font-tuffy + (package + (name "font-tuffy") + (version "20120614") + (source + (origin + (method url-fetch) + (uri (string-append "http://tulrich.com/fonts/tuffy-" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "02vf72bgrp30vrbfhxjw82s115z27dwfgnmmzfb0n9wfhxxfpyf6")))) + (build-system font-build-system) + (home-page "http://tulrich.com/fonts/") + (synopsis "The Tuffy Truetype Font Family") + (description + "Thatcher Ulrich's first outline font design. He started with the goal of producing a neutral, readable sans-serif text font. There are lots of \"expressive\" fonts out there, but he wanted to start with something very plain and clean, something he might want to actually use. ") + (license license:public-domain))) + ;; While LIEF is packaged in Guix, we maintain our own package, ;; to simplify building, and more easily apply updates. ;; Moreover, the Guix's package uses cmake, which caused build @@ -540,7 +560,7 @@ inspecting signatures in Mach-O binaries.") python-lief) (let ((target (getenv "HOST"))) (cond ((string-suffix? "-mingw32" target) - (list zip + (list font-tuffy zip (make-mingw-pthreads-cross-toolchain "x86_64-w64-mingw32") nsis-x86_64 nss-certs diff --git a/share/setup.nsi.in b/share/setup.nsi.in index 3d54d572f5..f4297ecc3b 100644 --- a/share/setup.nsi.in +++ b/share/setup.nsi.in @@ -19,7 +19,7 @@ Unicode true !define MUI_WELCOMEFINISHPAGE_BITMAP "@abs_top_builddir@/src/qt/res/rendered_icons/nsis-wizard.bmp" !define MUI_HEADERIMAGE !define MUI_HEADERIMAGE_RIGHT -!define MUI_HEADERIMAGE_BITMAP "@abs_top_srcdir@/share/pixmaps/nsis-header.bmp" +!define MUI_HEADERIMAGE_BITMAP "@abs_top_builddir@/src/qt/res/rendered_icons/nsis-header.bmp" !define MUI_FINISHPAGE_NOAUTOCLOSE !define MUI_STARTMENUPAGE_REGISTRY_ROOT HKLM !define MUI_STARTMENUPAGE_REGISTRY_KEY ${REGKEY} diff --git a/src/Makefile.am b/src/Makefile.am index 3391e2050c..d21ab7a87f 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1108,7 +1108,9 @@ endif # Rendered icons must be here, not in Makefile.qt.include, since they are distributed with the source tarball -RES_RENDERED_ICON_SRC = qt/res/src/bitcoin.svg +RES_RENDERED_ICON_SRC = \ + qt/res/src/bitcoin.svg \ + qt/res/src/nsis-header.svg RES_RENDERED_ICONS = \ qt/res/rendered_icons/bitcoin.ico \ @@ -1144,6 +1146,9 @@ qt/res/rendered_icons/bitcoin_testnet.ico: qt/res/rendered_icons/bitcoin.ico qt/res/rendered_icons/nsis-wizard.bmp: qt/res/rendered_icons/bitcoin290.png $(IMAGEMAGICK_CONVERT) $^ -crop 164x290+62+0 -border 0x12 -strip BMP3:$@ +qt/res/rendered_icons/nsis-header.bmp: qt/res/src/nsis-header.svg + sed 's/PACKAGE_NAME/$(PACKAGE_NAME)/' < "$<" | $(RSVG_CONVERT) -f png -d 57 -p 57 | $(IMAGEMAGICK_CONVERT) - -background white -alpha remove BMP3:$@ + endif diff --git a/src/qt/res/src/nsis-header.svg b/src/qt/res/src/nsis-header.svg new file mode 100644 index 0000000000..b534b4b49d --- /dev/null +++ b/src/qt/res/src/nsis-header.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + PACKAGE_NAME + From e54a3c83323dc62a749f563c63308ca55fbb8a21 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Wed, 3 Jul 2024 22:59:42 +0000 Subject: [PATCH 14/17] build: Support silent-rules for image generation and manipulation --- src/Makefile.am | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Makefile.am b/src/Makefile.am index d21ab7a87f..c135a224ce 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1128,26 +1128,26 @@ if CAN_RENDER_ICONS qt/res/rendered_icons/bitcoin%.png: qt/res/src/bitcoin.svg @$(MKDIR_P) $(@D) - $(RSVG_CONVERT) -f png -d $* -p $* < $< > $@ + $(AM_V_GEN) $(RSVG_CONVERT) -f png -d $* -p $* < $< > $@ # NOTE: ImageMagick will never convert transparent PNGs to 8-bit ICOs, but GIF is fine qt/res/rendered_icons/bitcoin%d8.gif: qt/res/rendered_icons/bitcoin%.png - $(IMAGEMAGICK_CONVERT) $^ -colors 256 -channel A -threshold '50%' $@ + $(AM_V_GEN) $(IMAGEMAGICK_CONVERT) $^ -colors 256 -channel A -threshold '50%' $@ qt/res/rendered_icons/bitcoin.icns: $(patsubst %,qt/res/rendered_icons/bitcoin%.png,256 512 1024 32 16) - $(PNG2ICNS) $@ $^ + $(AM_V_GEN) $(PNG2ICNS) $@ $^ qt/res/rendered_icons/bitcoin.ico: qt/res/rendered_icons/bitcoin32d8.gif $(patsubst %,qt/res/rendered_icons/bitcoin%.png,256 64 48 32 20 16) - $(IMAGEMAGICK_CONVERT) $^ $@ + $(AM_V_GEN) $(IMAGEMAGICK_CONVERT) $^ $@ qt/res/rendered_icons/bitcoin_testnet.ico: qt/res/rendered_icons/bitcoin.ico - $(IMAGEMAGICK_CONVERT) $^ -modulate 100,87,9 $@ + $(AM_V_GEN) $(IMAGEMAGICK_CONVERT) $^ -modulate 100,87,9 $@ qt/res/rendered_icons/nsis-wizard.bmp: qt/res/rendered_icons/bitcoin290.png - $(IMAGEMAGICK_CONVERT) $^ -crop 164x290+62+0 -border 0x12 -strip BMP3:$@ + $(AM_V_GEN) $(IMAGEMAGICK_CONVERT) $^ -crop 164x290+62+0 -border 0x12 -strip BMP3:$@ qt/res/rendered_icons/nsis-header.bmp: qt/res/src/nsis-header.svg - sed 's/PACKAGE_NAME/$(PACKAGE_NAME)/' < "$<" | $(RSVG_CONVERT) -f png -d 57 -p 57 | $(IMAGEMAGICK_CONVERT) - -background white -alpha remove BMP3:$@ + $(AM_V_GEN) sed 's/PACKAGE_NAME/$(PACKAGE_NAME)/' < "$<" | $(RSVG_CONVERT) -f png -d 57 -p 57 | $(IMAGEMAGICK_CONVERT) - -background white -alpha remove BMP3:$@ endif From 09bbed8ab16fdb016b7cc19da3db5858ffc3a5b7 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Wed, 3 Jul 2024 22:58:55 +0000 Subject: [PATCH 15/17] configure: Check for and use new ImageMagick 7 "magick" command --- configure.ac | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/configure.ac b/configure.ac index 326b1fbdda..431fe59f4c 100644 --- a/configure.ac +++ b/configure.ac @@ -619,13 +619,13 @@ AC_ARG_WITH([daemon], can_render_icons=yes AC_PATH_PROGS([RSVG_CONVERT],[rsvg-convert rsvg],no) -AC_PATH_PROGS([IMAGEMAGICK_CONVERT],[convert],no) +AC_PATH_PROGS([IMAGEMAGICK_CONVERT],[magick convert],no) AC_PATH_PROGS([PNG2ICNS],[png2icns],no) if test x$RSVG_CONVERT = xno; then can_render_icons='rsvg-convert' elif test x$IMAGEMAGICK_CONVERT = xno; then - can_render_icons='(ImageMagick) convert' + can_render_icons='ImageMagick' fi case $host in @@ -683,7 +683,7 @@ case $host in AX_CHECK_COMPILE_FLAG([-Wa,-muse-unaligned-vector-move], [CORE_CXXFLAGS="$CORE_CXXFLAGS -Wa,-muse-unaligned-vector-move"], [], [$CXXFLAG_WERROR]) AC_PATH_PROGS([RSVG_CONVERT], [rsvg-convert rsvg],rsvg-convert) - AC_PATH_PROGS([IMAGEMAGICK_CONVERT], [convert],convert) + AC_PATH_PROGS([IMAGEMAGICK_CONVERT], [magick convert],convert) ;; *darwin*) if test x$PNG2ICNS = xno; then From 5c3890fd48527fd5319b75980de9554389946b1f Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Fri, 7 Feb 2025 20:43:51 +0000 Subject: [PATCH 16/17] build-unix: Update for SVG sources --- doc/build-unix.md | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/doc/build-unix.md b/doc/build-unix.md index de54fb4eeb..3467963839 100644 --- a/doc/build-unix.md +++ b/doc/build-unix.md @@ -7,8 +7,11 @@ Some notes on how to build Bitcoin Core in Unix. To Build --------------------- +If you are building from git directly, you need to run `./autogen.sh` before +the first time you build. This is not required if you downloaded the source +code from the website. + ```bash -./autogen.sh ./configure make # use "-j N" for N parallel jobs make install # optional @@ -87,6 +90,10 @@ Additionally, to support Wayland protocol for modern desktop environments: sudo apt install qtwayland5 +If you are building directly from git (instead of the official source code release), you will also need: + + sudo apt install librsvg2-bin imagemagick + libqrencode (optional) can be installed with: sudo apt-get install libqrencode-dev @@ -144,6 +151,10 @@ Additionally, to support Wayland protocol for modern desktop environments: sudo dnf install qt5-qtwayland +If you are building directly from git (instead of the official source code release), you will also need: + + sudo dnf install librsvg2-tools ImageMagick + libqrencode (optional) can be installed with: sudo dnf install qrencode-devel @@ -202,8 +213,8 @@ Setup and Build Example: Arch Linux ----------------------------------- This example lists the steps necessary to setup and build a command line only distribution of the latest changes on Arch Linux: - pacman --sync --needed autoconf automake boost gcc git libevent libtool make pkgconf python sqlite - git clone https://github.com/bitcoin/bitcoin.git + pacman --sync --needed autoconf automake boost gcc git libevent libtool make pkgconf python sqlite librsvg imagemagick + git clone https://github.com/bitcoinknots/bitcoin.git cd bitcoin/ ./autogen.sh ./configure From 4db3dd08edd5c8830672da5bb40ab297c9527ea2 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Fri, 7 Feb 2025 21:11:16 +0000 Subject: [PATCH 17/17] Bugfix: Include bitcoin_testnet.ico in source code releases --- Makefile.am | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Makefile.am b/Makefile.am index 49b483d274..40a306c800 100644 --- a/Makefile.am +++ b/Makefile.am @@ -311,6 +311,8 @@ EXTRA_DIST += \ test/util/data/txreplacesingleinput.hex \ test/util/rpcauth-test.py +EXTRA_DIST += src/qt/res/rendered_icons/bitcoin_testnet.ico + CLEANFILES = $(OSX_ZIP) $(BITCOIN_WIN_INSTALLER) DISTCHECK_CONFIGURE_FLAGS = --enable-man