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/Makefile.am b/Makefile.am index de454c62e1..99e3e3e60b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -37,7 +37,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 = \ @@ -57,9 +57,9 @@ 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 \ - $(top_srcdir)/share/pixmaps/nsis-header.bmp \ - $(top_srcdir)/share/pixmaps/nsis-wizard.bmp \ +WINDOWS_PACKAGING = src/qt/res/rendered_icons/bitcoin.ico \ + src/qt/res/rendered_icons/nsis-header.bmp \ + src/qt/res/rendered_icons/nsis-wizard.bmp \ $(top_srcdir)/doc/README_windows.txt OSX_PACKAGING = $(OSX_DEPLOY_SCRIPT) $(OSX_INSTALLER_ICONS) \ @@ -70,11 +70,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 +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 @@ -314,6 +317,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 @@ -330,6 +335,9 @@ docs: @echo "error: doxygen not found" endif +src_files: $(DISTFILES) + @true + clean-docs: rm -rf doc/doxygen 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 diff --git a/configure.ac b/configure.ac index bdbfbadf05..31a80d7ddb 100644 --- a/configure.ac +++ b/configure.ac @@ -663,6 +663,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],[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' +fi + case $host in *mingw*) TARGET_OS=windows @@ -718,8 +729,15 @@ 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], [magick convert],convert) ;; *darwin*) + if test x$PNG2ICNS = xno; then + can_render_icons='png2icns' + fi + TARGET_OS=darwin if test $cross_compiling != "yes"; then BUILD_OS=darwin @@ -1395,6 +1413,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]) TEMP_LDFLAGS="$LDFLAGS" 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/contrib/guix/manifest.scm b/contrib/guix/manifest.scm index ce87cb73b5..75cb5035d5 100644 --- a/contrib/guix/manifest.scm +++ b/contrib/guix/manifest.scm @@ -10,6 +10,9 @@ (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)) ((gnu packages linux) #:select (linux-libre-headers-6.1 util-linux)) (gnu packages llvm) @@ -22,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 pyproject) @@ -163,6 +167,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 @@ -531,6 +554,9 @@ inspecting signatures in Mach-O binaries.") autoconf-2.71 automake pkg-config + imagemagick + libicns + librsvg-2.40 ;; Scripting python-minimal ;; (3.10) ;; Git @@ -539,7 +565,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/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 diff --git a/share/setup.nsi.in b/share/setup.nsi.in index 2ce798bd2d..f4297ecc3b 100644 --- a/share/setup.nsi.in +++ b/share/setup.nsi.in @@ -15,11 +15,11 @@ Unicode true !define URL @PACKAGE_URL@ # MUI Symbol Definitions -!define MUI_ICON "@abs_top_srcdir@/share/pixmaps/bitcoin.ico" -!define MUI_WELCOMEFINISHPAGE_BITMAP "@abs_top_srcdir@/share/pixmaps/nsis-wizard.bmp" +!define MUI_ICON "@abs_top_srcdir@/src/qt/res/rendered_icons/bitcoin.ico" +!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} @@ -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.am b/src/Makefile.am index 7cff44f718..5fb9f05100 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1158,6 +1158,52 @@ 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 \ + qt/res/src/nsis-header.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) \ + $(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) + $(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 + $(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) + $(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) + $(AM_V_GEN) $(IMAGEMAGICK_CONVERT) $^ $@ + +qt/res/rendered_icons/bitcoin_testnet.ico: qt/res/rendered_icons/bitcoin.ico + $(AM_V_GEN) $(IMAGEMAGICK_CONVERT) $^ -modulate 100,87,9 $@ + +qt/res/rendered_icons/nsis-wizard.bmp: qt/res/rendered_icons/bitcoin290.png + $(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 + $(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 + + if EMBEDDED_LEVELDB include Makefile.crc32c.include include Makefile.leveldb.include diff --git a/src/Makefile.qt.include b/src/Makefile.qt.include index acf133ea9d..63f5d267c4 100644 --- a/src/Makefile.qt.include +++ b/src/Makefile.qt.include @@ -107,6 +107,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 @@ -181,12 +182,9 @@ BITCOIN_QT_H = \ QT_RES_FONTS = \ qt/res/fonts/RobotoMono-Bold.ttf -QT_RES_ICONS = \ +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 \ @@ -307,6 +305,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 qt/res/rendered_icons/bitcoin_testnet.ico + BITCOIN_QT_INCLUDES = -DQT_NO_KEYWORDS -DQT_USE_QSTRINGBUILDER qt_libbitcoinqt_a_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(BITCOIN_QT_INCLUDES) \ @@ -394,11 +394,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) 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..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 "icons/bitcoin.ico" -IDI_ICON2 ICON DISCARDABLE "icons/bitcoin_testnet.ico" +IDI_ICON1 ICON DISCARDABLE "rendered_icons/bitcoin.ico" +IDI_ICON2 ICON DISCARDABLE "rendered_icons/bitcoin_testnet.ico" #include // needed for VERSIONINFO #include "../../clientversion.h" // holds the needed client version information 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 @@ 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 +