Compare commits

..

29 commits

Author SHA1 Message Date
tobtoht
51dc8ed04f
release: bump version to 2.8.1 2025-04-13 02:06:53 +02:00
tobtoht
cc4babb41b
update feather-docs 2025-04-12 09:21:43 +02:00
tobtoht
64548ee882
epee: remove broken windows module path 2025-04-12 03:42:00 +02:00
tobtoht
4f2c06f945
about: fix default page 2025-04-11 22:51:22 +02:00
tobtoht
ae54acef6c
depends: libxcb_util_cursor: add flatpak icon search dir 2025-04-11 05:22:30 +02:00
tobtoht
c67b06cf2f
guix: remove unsigned windows installer 2025-04-10 04:19:46 +02:00
tobtoht
2bfdf14637
about: add versions tab 2025-04-10 04:19:34 +02:00
tobtoht
7222005e0c
main: print monero version on startup 2025-04-10 03:16:51 +02:00
tobtoht
6052981b4c
depends: remove references to ~/.guix-profile 2025-04-10 02:44:44 +02:00
tobtoht
230da721bc
guix: remove --user option 2025-04-09 21:28:29 +02:00
tobtoht
08cfd8a2d7
nodes: add baz nodes 2025-04-09 21:27:11 +02:00
tobtoht
ab994bfcde
macos: update gen-sdk 2025-04-09 21:13:40 +02:00
tobtoht
7aa051b58b
macos: fix copyright string 2025-04-09 21:08:57 +02:00
tobtoht
2301f68176
build: bump minimum macos to 12.0 2025-04-09 21:03:04 +02:00
tobtoht
dc4d7c9dbf
guix: warn if running guix-build as root 2025-04-09 06:17:41 +02:00
tobtoht
b2edef87a3
depends: openssl: update to 3.5.0 2025-04-09 03:01:31 +02:00
tobtoht
4b7775e208
ci: fix macos build 2025-04-08 22:30:59 +02:00
tobtoht
32ce43fc17
seed: use member variable not moved argument 2025-04-08 21:50:09 +02:00
tobtoht
398ac9aed7
cmake: fix for cmake 4.0.0 2025-04-08 19:19:04 +02:00
tobtoht
a3ce971312
depends: protobuf: update to 30.2 2025-04-08 18:54:08 +02:00
tobtoht
1fa3eead85
depends: abseil: update to 20250127.1 2025-04-08 18:33:10 +02:00
tobtoht
dced995e16
depends: libusb: update to 1.0.28 2025-04-08 18:19:42 +02:00
tobtoht
92bba92418
depends: tor: update to 0.4.8.16 2025-04-08 18:00:34 +02:00
tobtoht
65fd38da03
depends: expat: update to 2.7.1 2025-04-05 14:14:30 +02:00
tobtoht
ffa1c427b1
depends: zxing-cpp: update to 2.3.0 2025-04-05 14:10:49 +02:00
tobtoht
f73940891a
depends: qt: update to 6.9.0 2025-04-03 10:05:33 +02:00
tobtoht
c97dbbba98
guix: add workarounds for distro issues 2025-04-01 16:23:42 +02:00
tobtoht
e9df4a9fcb
revuo: add separator between section 2025-04-01 10:42:30 +02:00
tobtoht
3c7d768f08
guix: explicitely enable CET 2025-03-31 15:11:15 +02:00
41 changed files with 270 additions and 181 deletions

View file

@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 3.18)
project(feather
VERSION "2.8.0"
VERSION "2.8.1"
DESCRIPTION "A free Monero desktop wallet"
LANGUAGES CXX C ASM
)

View file

@ -1,5 +1,5 @@
OSX_MIN_VERSION=11.0
OSX_SDK_VERSION=11.0
OSX_MIN_VERSION=12.0
OSX_SDK_VERSION=12.0
XCODE_VERSION=12.2
XCODE_BUILD_ID=12B45b
LD64_VERSION=711

View file

@ -1,8 +1,8 @@
package=expat
$(package)_version=2.7.0
$(package)_version=2.7.1
$(package)_download_path=https://github.com/libexpat/libexpat/releases/download/R_$(subst .,_,$($(package)_version))/
$(package)_file_name=$(package)-$($(package)_version).tar.gz
$(package)_sha256_hash=362e89ca6b8a0d46fc5740a917eb2a8b4d6356edbe016eee09f49c0781215844
$(package)_sha256_hash=0cce2e6e69b327fc607b8ff264f4b66bdf71ead55a87ffd5f3143f535f15cfa2
$(package)_build_subdir=build
define $(package)_set_vars

View file

@ -1,9 +1,9 @@
package=libusb
$(package)_version=1.0.27
$(package)_version=1.0.28
$(package)_download_path=https://github.com/libusb/libusb/archive/refs/tags
$(package)_download_file=v$($(package)_version).tar.gz
$(package)_file_name=$(package)-$($(package)_version).tar.gz
$(package)_sha256_hash=e8f18a7a36ecbb11fb820bd71540350d8f61bcd9db0d2e8c18a6fb80b214a3de
$(package)_sha256_hash=378b3709a405065f8f9fb9f35e82d666defde4d342c2a1b181a9ac134d23c6fe
$(package)_patches=CMakeLists.txt config.h.in
define $(package)_preprocess_cmds

View file

@ -4,6 +4,7 @@ $(package)_download_path=https://xcb.freedesktop.org/dist
$(package)_file_name=xcb-util-cursor-$($(package)_version).tar.gz
$(package)_sha256_hash=0e9c5446dc6f3beb8af6ebfcc9e27bcc6da6fe2860f7fc07b99144dfa568e93b
$(package)_dependencies=libxcb libxcb_util_render libxcb_util_image
$(package)_patches=flatpak.patch
define $(package)_set_vars
$(package)_config_opts := --disable-shared --disable-devel-docs --without-doxygen
@ -11,6 +12,7 @@ $(package)_config_opts += --disable-dependency-tracking --enable-option-checking
endef
define $(package)_preprocess_cmds
patch -p1 -i $($(package)_patch_dir)/flatpak.patch && \
cp -f $(BASEDIR)/config.guess $(BASEDIR)/config.sub .
endef

View file

@ -1,9 +1,9 @@
package=native_abseil
$(package)_version=20250127.0
$(package)_version=20250127.1
$(package)_download_path=https://github.com/abseil/abseil-cpp/archive/refs/tags/
$(package)_download_file=$($(package)_version).tar.gz
$(package)_file_name=abseil-$($(package)_version).tar.gz
$(package)_sha256_hash=16242f394245627e508ec6bb296b433c90f8d914f73b9c026fddb905e27276e8
$(package)_sha256_hash=b396401fd29e2e679cace77867481d388c807671dc2acc602a0259eeb79b7811
define $(package)_config_cmds
$($(package)_cmake)

View file

@ -1,8 +1,8 @@
package=native_expat
$(package)_version=2.7.0
$(package)_version=2.7.1
$(package)_download_path=https://github.com/libexpat/libexpat/releases/download/R_$(subst .,_,$($(package)_version))/
$(package)_file_name=expat-$($(package)_version).tar.gz
$(package)_sha256_hash=362e89ca6b8a0d46fc5740a917eb2a8b4d6356edbe016eee09f49c0781215844
$(package)_sha256_hash=0cce2e6e69b327fc607b8ff264f4b66bdf71ead55a87ffd5f3143f535f15cfa2
$(package)_build_subdir=build
define $(package)_set_vars

View file

@ -1,8 +1,8 @@
package=native_protobuf
$(package)_version=29.1
$(package)_version=30.2
$(package)_download_path=https://github.com/protocolbuffers/protobuf/releases/download/v$($(package)_version)
$(package)_file_name=protobuf-$($(package)_version).tar.gz
$(package)_sha256_hash=3d32940e975c4ad9b8ba69640e78f5527075bae33ca2890275bf26b853c0962c
$(package)_sha256_hash=fb06709acc393cc36f87c251bb28a5500a2e12936d4346099f2c6240f6c7a941
$(package)_dependencies=native_abseil
define $(package)_set_vars

View file

@ -1,32 +1,31 @@
package=native_qt
$(package)_version=6.8.3
$(package)_download_path=https://download.qt.io/official_releases/qt/6.8/$($(package)_version)/submodules
$(package)_version=6.9.0
$(package)_download_path=https://download.qt.io/official_releases/qt/6.9/$($(package)_version)/submodules
$(package)_suffix=everywhere-src-$($(package)_version).tar.xz
$(package)_file_name=qtbase-$($(package)_suffix)
$(package)_sha256_hash=56001b905601bb9023d399f3ba780d7fa940f3e4861e496a7c490331f49e0b80
$(package)_sha256_hash=c1800c2ea835801af04a05d4a32321d79a93954ee3ae2172bbeacf13d1f0598c
$(package)_linux_dependencies=native_wayland
$(package)_qt_libs=corelib network widgets gui plugins testlib
$(package)_patches = dont_hardcode_pwd.patch
$(package)_patches += fast_fixed_dtoa_no_optimize.patch
$(package)_patches = fast_fixed_dtoa_no_optimize.patch
$(package)_patches += guix_cross_lib_path.patch
$(package)_patches += qtbase-moc-ignore-gcc-macro.patch
$(package)_patches += rcc_hardcode_timestamp.patch
$(package)_patches += root_CMakeLists.txt
$(package)_qttools_file_name=qttools-$($(package)_suffix)
$(package)_qttools_sha256_hash=02a4e219248b94f1333df843d25763f35251c1074cdc4fb5bda67d340f8c8b3a
$(package)_qttools_sha256_hash=fa645589cc3f939022401a926825972a44277dead8ec8607d9f2662e6529c9a4
$(package)_qtsvg_file_name=qtsvg-$($(package)_suffix)
$(package)_qtsvg_sha256_hash=35eb516460f00f264eb504baa253432384351cf23fb9980a5857190e8deef438
$(package)_qtsvg_sha256_hash=ec359d930c95935ea48af58b100c2f5d0d275968ec8ca1e0e76629b7159215fc
$(package)_qtmultimedia_file_name=qtmultimedia-$($(package)_suffix)
$(package)_qtmultimedia_sha256_hash=32e82307d783172a3b984cc3c47c5e4e8b819cee3cbfc702c7012c47f15f6b01
$(package)_qtmultimedia_sha256_hash=995c3b194f3de3e1929280639642f7661d94aa57523c459dbbf2f71dbdcaa18c
$(package)_qtshadertools_file_name=qtshadertools-$($(package)_suffix)
$(package)_qtshadertools_sha256_hash=f6ec88bf42deba84d8f6b5d0914636ceed4749ccb51d1945b2f79b322b7ecf47
$(package)_qtshadertools_sha256_hash=916c40281ac3dee23b163f6ca73fb5bdeee344838b9a922b6f36269642d6f4bb
$(package)_qtwayland_file_name=qtwayland-$($(package)_suffix)
$(package)_qtwayland_sha256_hash=20fe385887d21190165a3180c17dcfc8b9a0e1da4ec76865b6334bdc709994b0
$(package)_qtwayland_sha256_hash=503416fcb04db503bd130e6a49c45e3e546f091e83406f774a0c703130c91805
$(package)_extra_sources += $($(package)_qttools_file_name)
$(package)_extra_sources += $($(package)_qtsvg_file_name)
@ -157,7 +156,6 @@ endef
define $(package)_preprocess_cmds
cp $($(package)_patch_dir)/root_CMakeLists.txt CMakeLists.txt && \
patch -p1 -i $($(package)_patch_dir)/dont_hardcode_pwd.patch && \
patch -p1 -i $($(package)_patch_dir)/qtbase-moc-ignore-gcc-macro.patch && \
patch -p1 -i $($(package)_patch_dir)/rcc_hardcode_timestamp.patch && \
patch -p1 -i $($(package)_patch_dir)/fast_fixed_dtoa_no_optimize.patch && \

View file

@ -1,8 +1,8 @@
package=openssl
$(package)_version=3.4.1
$(package)_version=3.5.0
$(package)_download_path=https://github.com/openssl/openssl/releases/download/openssl-$($(package)_version)
$(package)_file_name=$(package)-$($(package)_version).tar.gz
$(package)_sha256_hash=002a2d6b30b58bf4bea46c43bdd96365aaf8daa6c428782aa4feee06da197df3
$(package)_sha256_hash=344d0a79f1a9b08029b0744e2cc401a43f9c90acd1044d09a530b4885a8e9fc0
define $(package)_set_vars
$(package)_config_env=AR="$($(package)_ar)" ARFLAGS=$($(package)_arflags) RANLIB="$($(package)_ranlib)" CC="$($(package)_cc)"

View file

@ -1,9 +1,9 @@
package=qt
$(package)_version=6.8.3
$(package)_download_path=https://download.qt.io/official_releases/qt/6.8/$($(package)_version)/submodules
$(package)_version=6.9.0
$(package)_download_path=https://download.qt.io/official_releases/qt/6.9/$($(package)_version)/submodules
$(package)_suffix=everywhere-src-$($(package)_version).tar.xz
$(package)_file_name=qtbase-$($(package)_suffix)
$(package)_sha256_hash=56001b905601bb9023d399f3ba780d7fa940f3e4861e496a7c490331f49e0b80
$(package)_sha256_hash=c1800c2ea835801af04a05d4a32321d79a93954ee3ae2172bbeacf13d1f0598c
$(package)_darwin_dependencies=openssl native_qt
$(package)_mingw32_dependencies=openssl native_qt
$(package)_linux_dependencies=openssl native_qt freetype fontconfig libxcb libxkbcommon libxcb_util libxcb_util_render libxcb_util_keysyms libxcb_util_image libxcb_util_wm libxcb_util_cursor dbus wayland native_wayland
@ -27,22 +27,22 @@ $(package)_patches += qtwayland-tabletevent-fix.patch
#$(package)_patches += fix-static-fontconfig-static-linking.patch
$(package)_qttools_file_name=qttools-$($(package)_suffix)
$(package)_qttools_sha256_hash=02a4e219248b94f1333df843d25763f35251c1074cdc4fb5bda67d340f8c8b3a
$(package)_qttools_sha256_hash=fa645589cc3f939022401a926825972a44277dead8ec8607d9f2662e6529c9a4
$(package)_qtsvg_file_name=qtsvg-$($(package)_suffix)
$(package)_qtsvg_sha256_hash=35eb516460f00f264eb504baa253432384351cf23fb9980a5857190e8deef438
$(package)_qtsvg_sha256_hash=ec359d930c95935ea48af58b100c2f5d0d275968ec8ca1e0e76629b7159215fc
$(package)_qtwebsockets_file_name=qtwebsockets-$($(package)_suffix)
$(package)_qtwebsockets_sha256_hash=fc6310c1b12d6e22a31062727aa6574ed69239d036c8a4247b3b089902709b11
$(package)_qtwebsockets_sha256_hash=6b3add7cacf3a4e0b448d5e69d9dac42795fef63309038af1dc5a454ce514940
$(package)_qtmultimedia_file_name=qtmultimedia-$($(package)_suffix)
$(package)_qtmultimedia_sha256_hash=32e82307d783172a3b984cc3c47c5e4e8b819cee3cbfc702c7012c47f15f6b01
$(package)_qtmultimedia_sha256_hash=995c3b194f3de3e1929280639642f7661d94aa57523c459dbbf2f71dbdcaa18c
$(package)_qtshadertools_file_name=qtshadertools-$($(package)_suffix)
$(package)_qtshadertools_sha256_hash=f6ec88bf42deba84d8f6b5d0914636ceed4749ccb51d1945b2f79b322b7ecf47
$(package)_qtshadertools_sha256_hash=916c40281ac3dee23b163f6ca73fb5bdeee344838b9a922b6f36269642d6f4bb
$(package)_qtwayland_file_name=qtwayland-$($(package)_suffix)
$(package)_qtwayland_sha256_hash=20fe385887d21190165a3180c17dcfc8b9a0e1da4ec76865b6334bdc709994b0
$(package)_qtwayland_sha256_hash=503416fcb04db503bd130e6a49c45e3e546f091e83406f774a0c703130c91805
$(package)_extra_sources += $($(package)_qttools_file_name)
$(package)_extra_sources += $($(package)_qtsvg_file_name)
@ -53,7 +53,6 @@ $(package)_extra_sources += $($(package)_qtwayland_file_name)
define $(package)_set_vars
$(package)_config_opts += -DQT_HOST_PATH=$(build_prefix)/qt-host
$(package)_config_opts += -DCMAKE_LIBRARY_PATH=/home/user/.guix-profile/lib
$(package)_config_opts += -DBUILD_SHARED_LIBS=OFF
$(package)_config_opts += -DCMAKE_INSTALL_PREFIX=$(host_prefix)
$(package)_config_opts += -DINSTALL_LIBEXECDIR=$(build_prefix)/bin
@ -163,7 +162,7 @@ $(package)_config_opts_darwin += -DQT_FEATURE_accessibility=OFF
$(package)_config_opts_darwin += -DQT_FEATURE_dbus=OFF
$(package)_config_opts_darwin += -DQT_FEATURE_freetype=OFF
$(package)_config_opts_darwin += -DQT_FEATURE_ffmpeg=OFF
$(package)_config_opts_darwin += -DQMAKE_MACOSX_DEPLOYMENT_TARGET=11.0
$(package)_config_opts_darwin += -DQMAKE_MACOSX_DEPLOYMENT_TARGET=12.0
$(package)_config_opts_darwin += -DBUILD_WITH_PCH=OFF
$(package)_config_opts_darwin += '-DQT_QMAKE_DEVICE_OPTIONS=MAC_SDK_PATH=$(host_prefix)/native/SDK;MAC_SDK_VERSION=$(OSX_SDK_VERSION);CROSS_COMPILE=$(host)-;MAC_TARGET=$(host);XCODE_VERSION=$(XCODE_VERSION)'
$(package)_config_opts_darwin += -DQT_NO_APPLE_SDK_AND_XCODE_CHECK=ON

View file

@ -1,8 +1,8 @@
package=tor_darwin
$(package)_version=0.4.8.10
$(package)_download_path=https://dist.torproject.org/torbrowser/13.0.11/
$(package)_file_name=tor-browser-macos-13.0.11.dmg
$(package)_sha256_hash=809fd7b1c5859cd9a4abebdb20a6b99e51b3c46d865f030b88fe5d6590bcbfdd
$(package)_version=0.4.8.16
$(package)_download_path=https://dist.torproject.org/torbrowser/14.0.9/
$(package)_file_name=tor-browser-macos-14.0.9.dmg
$(package)_sha256_hash=82a3dba862a34af1796e6a032f08c591e88cbac5831bedc83e168c1833d62506
$(package)_extract_cmds=mkdir -p $$($(1)_extract_dir) && \
echo "$$($(1)_sha256_hash) $$($(1)_source)" > $$($(1)_extract_dir)/.$$($(1)_file_name).hash && \
$(build_SHA256SUM) -c $$($(1)_extract_dir)/.$$($(1)_file_name).hash && \
@ -10,4 +10,4 @@ $(package)_extract_cmds=mkdir -p $$($(1)_extract_dir) && \
define $(package)_stage_cmds
cp -a Tor\ Browser/Tor\ Browser.app/Contents/MacOS/Tor $($(package)_staging_prefix_dir)/Tor/
endef
endef

View file

@ -1,8 +1,8 @@
package=tor_linux
$(package)_version=0.4.8.14
$(package)_version=0.4.8.16
$(package)_download_path=https://dist.torproject.org/
$(package)_file_name=tor-$($(package)_version).tar.gz
$(package)_sha256_hash=5047e1ded12d9aac4eb858f7634a627714dd58ce99053d517691a4b304a66d10
$(package)_sha256_hash=6540dd377a120fb8e7d27530aa3b7ff72a0fa5b4f670fe1d64c987c1cfd390cb
$(package)_dependencies=libevent openssl zlib
define $(package)_set_vars

View file

@ -1,10 +1,10 @@
package=tor_mingw32
$(package)_version=0.4.8.10
$(package)_download_path=https://dist.torproject.org/torbrowser/13.0.11/
$(package)_file_name=tor-expert-bundle-windows-x86_64-13.0.11.tar.gz
$(package)_sha256_hash=78d9529b0a206e6727093ede340fc34dab2de4ea03046ff5d5d590879dc21c6e
$(package)_version=0.4.8.16
$(package)_download_path=https://dist.torproject.org/torbrowser/14.0.9/
$(package)_file_name=tor-expert-bundle-windows-x86_64-14.0.9.tar.gz
$(package)_sha256_hash=dce4dfd488ed8220b97c613f08216b63c6895bbefd0d091a3156501f188fe5f4
define $(package)_stage_cmds
mkdir -p $($(package)_staging_prefix_dir)/Tor/ && \
cp tor.exe $($(package)_staging_prefix_dir)/Tor/
endef
endef

View file

@ -1,14 +1,18 @@
package=zxing-cpp
$(package)_version=2.2.1
$(package)_version=2.3.0
$(package)_download_path=https://github.com/$(package)/$(package)/archive/refs/tags
$(package)_download_file=v$($(package)_version).tar.gz
$(package)_file_name=$(package)-$($(package)_version).tar.gz
$(package)_sha256_hash=02078ae15f19f9d423a441f205b1d1bee32349ddda7467e2c84e8f08876f8635
$(package)_sha256_hash=64e4139103fdbc57752698ee15b5f0b0f7af9a0331ecbdc492047e0772c417ba
define $(package)_set_vars
$(package)_config_opts=-DBUILD_WRITERS=OFF -DBUILD_EXAMPLES=OFF -DBUILD_SHARED_LIBS=OFF
endef
define $(package)_preprocess_cmds
rm -rf test wrappers
endef
define $(package)_config_cmds
$($(package)_cmake) .
endef

View file

@ -3,7 +3,7 @@ c = '@cc@'
cpp = '@cxx@'
ar = '@ar@'
strip = '@strip@'
pkgconfig = '/home/user/.guix-profile/bin/pkg-config'
pkgconfig = 'pkg-config'
[host_machine]
system = 'linux'

View file

@ -3,7 +3,7 @@ c = '@cc@'
cpp = '@cxx@'
ar = '@ar@'
strip = '@strip@'
pkgconfig = '/home/user/.guix-profile/bin/pkg-config'
pkgconfig = 'pkg-config'
[host_machine]
system = 'linux'

View file

@ -0,0 +1,13 @@
diff --git a/configure b/configure
index 6d37be5..4dc4ff5 100755
--- a/configure
+++ b/configure
@@ -20228,7 +20228,7 @@ printf "%s\n" "yes" >&6; }
fi
-DEF_CURSORPATH="~/.icons:/usr/share/icons:/usr/share/pixmaps:/usr/X11R6/lib/X11/icons"
+DEF_CURSORPATH="~/.icons:/usr/share/icons:/usr/share/pixmaps:/usr/X11R6/lib/X11/icons:/run/host/share/icons"
# Check whether --with-cursorpath was given.
if test ${with_cursorpath+y}

View file

@ -3,7 +3,7 @@ c = '@cc@'
cpp = '@cxx@'
ar = '@ar@'
strip = '@strip@'
pkgconfig = '/home/user/.guix-profile/bin/pkg-config'
pkgconfig = 'pkg-config'
[host_machine]
system = 'linux'

View file

@ -1,16 +0,0 @@
diff --git a/qtbase/configure b/qtbase/configure
index e57707dc..d8f6c934 100755
--- a/qtbase/configure
+++ b/qtbase/configure
@@ -9,9 +9,9 @@
# the directory of this script is the "source tree"
relpath=`dirname "$0"`
-relpath=`(cd "$relpath"; /bin/pwd)`
+relpath=`(cd "$relpath"; pwd)`
# the current directory is the "build tree" or "object tree"
-outpath=`/bin/pwd`
+outpath=`pwd`
outpathPrefix=$outpath
# do this early so we don't store it in config.status

View file

@ -3,7 +3,7 @@ c = '@cc@'
cpp = '@cxx@'
ar = '@ar@'
strip = '@strip@'
pkgconfig = '/home/user/.guix-profile/bin/pkg-config'
pkgconfig = 'pkg-config'
[host_machine]
system = 'linux'

View file

@ -30,7 +30,7 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
set(CMAKE_EXE_LINKER_FLAGS "@cmake_ld_flags@")
set(CMAKE_MODULE_LINKER_FLAGS "@cmake_ld_flags@")
set(CMAKE_SHARED_LINKER_FLAGS "@cmake_ld_flags@")
SET(CMAKE_OSX_DEPLOYMENT_TARGET "11.0")
SET(CMAKE_OSX_DEPLOYMENT_TARGET "12.0")
set(CMAKE_INSTALL_NAME_TOOL @target@-install_name_tool)
endif()

View file

@ -3,7 +3,7 @@ c = '@cc@'
cpp = '@cxx@'
ar = '@ar@'
strip = '@strip@'
pkgconfig = '/home/user/.guix-profile/bin/pkg-config'
pkgconfig = 'pkg-config'
[host_machine]
system = 'linux'

View file

@ -94,7 +94,7 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
SET(BUILD_TAG "mac-x64")
SET(CMAKE_OSX_ARCHITECTURES "x86_64")
endif()
SET(CMAKE_SYSTEM_VERSION 20.1)
SET(CMAKE_SYSTEM_VERSION 21.0.1)
SET(_CMAKE_TOOLCHAIN_PREFIX @prefix@/native/bin/${CONF_TRIPLE}-)
SET(CMAKE_C_COMPILER @CC@)
SET(CMAKE_C_COMPILER_TARGET ${CLANG_TARGET})
@ -116,7 +116,7 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
SET(BREW OFF)
SET(PORT OFF)
SET(CMAKE_OSX_SYSROOT "@prefix@/native/SDK")
SET(CMAKE_OSX_DEPLOYMENT_TARGET "11.0")
SET(CMAKE_OSX_DEPLOYMENT_TARGET "12.0")
SET(CMAKE_CXX_STANDARD 17)
else()
SET(CMAKE_C_COMPILER @CC@)

View file

@ -46,6 +46,50 @@ $ git clone https://github.com/feather-wallet/feather
$ cd feather
```
### Before building
#### Ubuntu
On **Ubuntu**, you may run into the following error caused by [this Ubuntu bug](https://bugs.launchpad.net/ubuntu/+source/guix/+bug/2064115):
`guix environment: error: mount: mount "none" on "/tmp/guix-directory.Ile657": Permission denied`
To work around this issue, you need to create a permissive AppArmor profile for Guix:
```bash
$ apt install apparmor-utils
$ cat <<EOL >> /etc/apparmor.d/guix
abi <abi/4.0>,
include <tunables/global>
profile guix /usr/bin/guix flags=(unconfined) {
userns,
include if exists <local/guix>
}
EOL
$ /etc/init.d/apparmor reload
$ aa-enforce guix
```
#### Fedora
On **Fedora**, you may run into the following error:
`guix gc: error: remounting /gnu/store writable: Permission denied`
To work around this issue, you need to temporarily disable SELinux:
```bash
sudo setenforce 0
```
You can re-enable it after the build with:
```bash
sudo setenforce 1
```
### Run the build
To build all targets using all available cores:

View file

@ -19,6 +19,15 @@ source "$(dirname "${BASH_SOURCE[0]}")/libexec/prelude.bash"
check_tools cat mkdir make getent curl git guix
################
# Check if we're running as root
################
if [ "$EUID" -eq 0 ]; then
echo "Warning! Running this script as root may cause problems."
echo
fi
################
# GUIX_BUILD_OPTIONS should be empty
################
@ -440,7 +449,6 @@ EOF
--keep-failed \
--fallback \
--link-profile \
--user="user" \
--root="$(profiledir_for_host "${HOST}")" \
${SUBSTITUTE_URLS:+--substitute-urls="$SUBSTITUTE_URLS"} \
${ADDITIONAL_GUIX_COMMON_FLAGS} ${ADDITIONAL_GUIX_ENVIRONMENT_FLAGS} \
@ -479,7 +487,6 @@ EOF
--share="$OUTDIR"=/outdir \
--keep-failed \
--fallback \
--user="user" \
${SUBSTITUTE_URLS:+--substitute-urls="$SUBSTITUTE_URLS"} \
${ADDITIONAL_GUIX_COMMON_FLAGS} ${ADDITIONAL_GUIX_ENVIRONMENT_FLAGS} \
-- env DISTNAME="$DISTNAME" \

View file

@ -433,6 +433,7 @@ export PATH="${BASEPREFIX}/${HOST}/native/bin:${PATH}"
-sigin "/distsrc/external/feather-codesigning/signatures/${HOST}/feather.installer.pem" || true
cp FeatherWalletSetup.exe.tmp "${OUTDIR}/FeatherWalletSetup-${TAG}.exe"
mv FeatherWalletSetup.exe.tmp "FeatherWalletSetup-${TAG}.exe"
rm FeatherWalletSetup.exe
rm "${OUTDIR}/FeatherWalletSetup.exe"
;;
"")

View file

@ -180,6 +180,9 @@ chain for " target " development."))
(list "--enable-initfini-array=yes",
"--enable-default-ssp=yes",
"--enable-default-pie=yes",
"--enable-standard-branch-protection=yes",
"--enable-cet=yes",
"--disable-gcov",
building-on)))
((#:phases phases)
`(modify-phases ,phases
@ -215,6 +218,7 @@ chain for " target " development."))
`(append ,flags
;; https://www.gnu.org/software/libc/manual/html_node/Configuring-and-compiling.html
(list "--enable-stack-protector=all",
"--enable-cet",
"--enable-bind-now",
"--disable-werror",
building-on)))

View file

@ -3,7 +3,7 @@
<plist version="0.9">
<dict>
<key>LSMinimumSystemVersion</key>
<string>11</string>
<string>12</string>
<key>LSArchitecturePriority</key>
<array>
@ -22,7 +22,7 @@
</array>
<key>NSHumanReadableCopyright</key>
<string>Copyright © 2014-@COPYRIGHT_YEAR@ @COPYRIGHT_HOLDERS@</string>
<string>Copyright © 2020-@COPYRIGHT_YEAR@ @COPYRIGHT_HOLDERS@</string>
<key>CFBundleShortVersionString</key>
<string>@PROJECT_VERSION@</string>

View file

@ -6,95 +6,64 @@
A free Apple Developer Account is required to proceed.
Our current macOS SDK
(`Xcode-12.2-12B45b-extracted-SDK-with-libcxx-headers.tar.gz`)
can be extracted from
[Xcode_12.2.xip](https://download.developer.apple.com/Developer_Tools/Xcode_12.2/Xcode_12.2.xip).
Our macOS SDK can be extracted from
[Xcode_15.xip](https://download.developer.apple.com/Developer_Tools/Xcode_15/Xcode_15.xip).
Alternatively, after logging in to your account go to 'Downloads', then 'More'
and search for [`Xcode 12.2`](https://developer.apple.com/download/all/?q=Xcode%2012.2).
and search for [`Xcode 15`](https://developer.apple.com/download/all/?q=Xcode%2015).
An Apple ID and cookies enabled for the hostname are needed to download this.
The `sha256sum` of the downloaded XIP archive should be `28d352f8c14a43d9b8a082ac6338dc173cb153f964c6e8fb6ba389e5be528bd0`.
The `sha256sum` of the downloaded XIP archive should be `4daaed2ef2253c9661779fa40bfff50655dc7ec45801aba5a39653e7bcdde48e`.
After Xcode version 7.x, Apple started shipping the `Xcode.app` in a `.xip`
archive. This makes the SDK less-trivial to extract on non-macOS machines. One
approach (tested on Debian Buster) is outlined below:
To extract the `.xip` on Linux:
```bash
# Install/clone tools needed for extracting Xcode.app
apt install cpio
git clone https://github.com/bitcoin-core/apple-sdk-tools.git
# Unpack Xcode_12.2.xip and place the resulting Xcode.app in your current
# Unpack the .xip and place the resulting Xcode.app in your current
# working directory
python3 apple-sdk-tools/extract_xcode.py -f Xcode_12.2.xip | cpio -d -i
python3 apple-sdk-tools/extract_xcode.py -f Xcode_15.xip | cpio -d -i
```
On macOS the process is more straightforward:
On macOS:
```bash
xip -x Xcode_12.2.xip
xip -x Xcode_15.xip
```
### Step 2: Generating `Xcode-12.2-12B45b-extracted-SDK-with-libcxx-headers.tar.gz` from `Xcode.app`
### Step 2: Generating the SDK tarball from `Xcode.app`
To generate `Xcode-12.2-12B45b-extracted-SDK-with-libcxx-headers.tar.gz`, run
the script [`gen-sdk`](./gen-sdk) with the path to `Xcode.app` (extracted in the
previous stage) as the first argument.
To generate the SDK, run the script [`gen-sdk`](./gen-sdk) with the
path to `Xcode.app` (extracted in the previous stage) as the first argument.
```bash
# Generate a Xcode-12.2-12B45b-extracted-SDK-with-libcxx-headers.tar.gz from
# the supplied Xcode.app
./contrib/macdeploy/gen-sdk '/path/to/Xcode.app'
```
The `sha256sum` of the generated TAR.GZ archive should be `332477876917786b26dd7c3fc1665d2c5cdca81c72755e6a9754f308de77d33b`.
The generated archive should be: `Xcode-15.0-15A240d-extracted-SDK-with-libcxx-headers.tar.gz`.
The `sha256sum` should be `c0c2e7bb92c1fee0c4e9f3a485e4530786732d6c6dd9e9f418c282aa6892f55d`.
## Deterministic macOS App Notes
macOS Applications are created in Linux by combining a recent `clang` and the Apple
`binutils` (`ld`, `ar`, etc).
macOS Applications are created on Linux using a recent LLVM.
Apple uses `clang` extensively for development and has upstreamed the necessary
functionality so that a vanilla clang can take advantage. It supports the use of `-F`,
`-target`, `-mmacosx-version-min`, and `-isysroot`, which are all necessary when
building for macOS.
All builds must target an Apple SDK. These SDKs are free to download, but not redistributable.
See the SDK Extraction notes above for how to obtain it.
Apple's version of `binutils` (called `cctools`) contains lots of functionality missing in the
FSF's `binutils`. In addition to extra linker options for frameworks and sysroots, several
other tools are needed as well such as `install_name_tool`, `lipo`, and `nmedit`. These
do not build under Linux, so they have been patched to do so. The work here was used as
a starting point: [mingwandroid/toolchain4](https://github.com/mingwandroid/toolchain4).
The Guix build process has been designed to avoid including the SDK's files in Guix's outputs.
All interim tarballs are fully deterministic and may be freely redistributed.
In order to build a working toolchain, the following source packages are needed from
Apple: `cctools`, `dyld`, and `ld64`.
These tools inject timestamps by default, which produce non-deterministic binaries. The
`ZERO_AR_DATE` environment variable is used to disable that.
This version of `cctools` has been patched to use the current version of `clang`'s headers
and its `libLTO.so` rather than those from `llvmgcc`, as it was originally done in `toolchain4`.
To complicate things further, all builds must target an Apple SDK. These SDKs are free to
download, but not redistributable. See the SDK Extraction notes above for how to obtain it.
The Guix process builds 2 sets of files: Linux tools, then Apple binaries which are
created using these tools. The build process has been designed to avoid including the
SDK's files in Guix's outputs. All interim tarballs are fully deterministic and may be freely
redistributed.
As of OS X 10.9 Mavericks, using an Apple-blessed key to sign binaries is a requirement in
order to satisfy the new Gatekeeper requirements. Because this private key cannot be
shared, we'll have to be a bit creative in order for the build process to remain somewhat
deterministic. Here's how it works:
Using an Apple-blessed key to sign binaries is a requirement to produce (distributable) macOS
binaries. Because this private key cannot be shared, we'll have to be a bit creative in order
for the build process to remain somewhat deterministic. Here's how it works:
- Builders use Guix to create an unsigned release. This outputs an unsigned ZIP which
users may choose to bless and run. It also outputs an unsigned app structure in the form
of a tarball, which also contains all of the tools that have been previously (deterministically)
built in order to create a final DMG.
users may choose to bless, self-codesign, and run. It also outputs an unsigned app structure
in the form of a tarball.
- The Apple keyholder uses this unsigned app to create a detached signature, using the
script that is also included there. Detached signatures are available from this [repository](https://github.com/bitcoin-core/bitcoin-detached-sigs).
- Builders feed the unsigned app + detached signature back into Guix. It uses the
pre-built tools to recombine the pieces into a deterministic ZIP.
included script. Detached signatures are available from this [repository](https://github.com/bitcoin-core/bitcoin-detached-sigs).
- Builders feed the unsigned app + detached signature back into Guix, which combines the
pieces into a deterministic ZIP.

View file

@ -8,21 +8,6 @@ import gzip
import os
import contextlib
# monkey-patch Python 3.8 and older to fix wrong TAR header handling
# see https://github.com/bitcoin/bitcoin/pull/24534
# and https://github.com/python/cpython/pull/18080 for more info
if sys.version_info < (3, 9):
_old_create_header = tarfile.TarInfo._create_header
def _create_header(info, format, encoding, errors):
buf = _old_create_header(info, format, encoding, errors)
# replace devmajor/devminor with binary zeroes
buf = buf[:329] + bytes(16) + buf[345:]
# recompute checksum
chksum = tarfile.calc_chksums(buf)[0]
buf = buf[:-364] + bytes("%06o\0" % chksum, "ascii") + buf[-357:]
return buf
tarfile.TarInfo._create_header = staticmethod(_create_header)
@contextlib.contextmanager
def cd(path):
"""Context manager that restores PWD even if an exception was raised."""
@ -60,13 +45,8 @@ def run():
sdk_build_id = pl['ProductBuildVersion']
print("Found MacOSX SDK (version: {sdk_version}, build id: {sdk_build_id})".format(sdk_version=sdk_version, sdk_build_id=sdk_build_id))
clang_rt = xcode_app.joinpath("Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/lib/darwin")
out_name = "Xcode-{xcode_version}-{xcode_build_id}-extracted-SDK-with-libcxx-headers".format(xcode_version=xcode_version, xcode_build_id=xcode_build_id)
xcode_libcxx_dir = xcode_app.joinpath("Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1")
assert xcode_libcxx_dir.is_dir()
if args.out_sdktgz:
out_sdktgz_path = pathlib.Path(args.out_sdktgz_path)
else:
@ -74,7 +54,7 @@ def run():
out_sdktgz_path = pathlib.Path("./{}.tar.gz".format(out_name))
def tarfp_add_with_base_change(tarfp, dir_to_add, alt_base_dir):
"""Add all files in dir_to_add to tarfp, but prepent MEMBERPREFIX to the files'
"""Add all files in dir_to_add to tarfp, but prepent alt_base_dir to the files'
names
e.g. if the only file under /root/bazdir is /root/bazdir/qux, invoking:
@ -109,10 +89,6 @@ def run():
with tarfile.open(mode="w", fileobj=gzf, format=tarfile.GNU_FORMAT) as tarfp:
print("Adding MacOSX SDK {} files...".format(sdk_version))
tarfp_add_with_base_change(tarfp, sdk_dir, out_name)
print("Adding libc++ headers...")
tarfp_add_with_base_change(tarfp, xcode_libcxx_dir, "{}/usr/include/c++/v1".format(out_name))
print("Adding clang_rt libraries")
tarfp_add_with_base_change(tarfp, clang_rt, "{}/lib/darwin".format(out_name))
print("Done! Find the resulting gzipped tarball at:")
print(out_sdktgz_path.resolve())

@ -1 +1 @@
Subproject commit 0c34181fd21e7e0f28d325996449e6d3fedb8e8f
Subproject commit ccad1600519e3b9e1a1fac9d52e3d22d7b609a9d

@ -1 +1 @@
Subproject commit 5a11c96cb0887fd92484e3db9d775f5b5c76445f
Subproject commit 9d011ba8dc04e39a261c90c85ab6947567965224

2
monero

@ -1 +1 @@
Subproject commit 105c53beef238fa5234118124726d9e6d9588c8b
Subproject commit 896f780842bab646392e71c7917eb220a35e33dc

View file

@ -269,6 +269,7 @@ target_link_libraries(feather PRIVATE
epee
easylogging
ringct
version
${Boost_LIBRARIES}
${OPENSSL_LIBRARIES}
${EXTRA_LIBRARIES}

View file

@ -1,6 +1,9 @@
{
"mainnet": {
"tor": [
"loveanvthlsepingenr7opdqy6nlhn5jidwvzzxfmwsw2rry5mn2gfqd.onion:18089",
"dtrnd4in2igrtfx2c45ghf2drns3doddmcsfy6b5gjw5iinukd33slqd.onion:18081",
"3vjfahy3dk4znsicambgluiaa5whqb364skmsq5os7bnxjhbavbawqad.onion:18089",
"ip4zpbps7unk6xhlanqtw24f75akfbl3upeckfjqjks7ftfnk4i73oid.onion:18081",
"cakexmrl7bonq7ovjka5kuwuyd3f7qnkz6z6s6dmsy3uckwra7bvggyd.onion:18081",
"qz43zul2x56jexzoqgkx2trzwcfnr6l3hbtfcfx54g4r3eahy3bssjyd.onion:18089",
@ -25,6 +28,8 @@
"ugnlcdciyhghh2zert7c3kl4biwkirc43ke33jiy5slnd3mv2trq.b32.i2p:18089"
],
"clearnet": [
"node3-us.monero.love:18081",
"node2-eu.monero.love:18089",
"xmr-node.cakewallet.com:18081",
"singapore.node.xmr.pm:18089",
"node.majesticbank.is:18089",

View file

@ -6,8 +6,10 @@
#include <QMessageBox>
#include <QDate>
#include <QSslSocket>
#include "utils/Utils.h"
#include "version.h"
AboutDialog::AboutDialog(QWidget *parent)
: WindowModalDialog(parent)
@ -26,6 +28,12 @@ AboutDialog::AboutDialog(QWidget *parent)
auto ack_text = Utils::barrayToString(ack);
ui->ackText->setText(ack_text);
ui->label_featherVersion->setText(FEATHER_VERSION);
ui->label_moneroVersion->setText(MONERO_VERSION);
ui->label_qtVersion->setText(QT_VERSION_STR);
ui->label_torVersion->setText(TOR_VERSION);
ui->label_sslVersion->setText(QSslSocket::sslLibraryVersionString());
this->adjustSize();
}

View file

@ -214,6 +214,83 @@
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_2">
<attribute name="title">
<string>Versions</string>
</attribute>
<layout class="QFormLayout" name="formLayout_2">
<item row="0" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-weight:700;&quot;&gt;Feather:&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="label_featherVersion">
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_20">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-weight:700;&quot;&gt;Monero:&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="label_moneroVersion">
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_22">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-weight:700;&quot;&gt;Qt:&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLabel" name="label_qtVersion">
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_24">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-weight:700;&quot;&gt;SSL:&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLabel" name="label_sslVersion">
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_26">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-weight:700;&quot;&gt;Tor:&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLabel" name="label_torVersion">
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="acknowledgements">
<attribute name="title">
<string>Acknowledgements</string>

View file

@ -11,6 +11,7 @@
#include <wallet/api/wallet2_api.h>
#include "libwalletqt/Wallet.h"
#include "libwalletqt/WalletManager.h"
#include "version.h"
#if defined(Q_OS_LINUX) && defined(STACK_TRACE)
#define BOOST_STACKTRACE_LINK
@ -180,21 +181,16 @@ if (AttachConsole(ATTACH_PARENT_PROCESS)) {
conf()->set(Config::restartRequired, false);
if (!quiet) {
QMap<QString, QString> info;
info["Qt"] = QT_VERSION_STR;
info["Feather"] = FEATHER_VERSION;
if (stagenet) info["Mode"] = "Stagenet";
else if (testnet) info["Mode"] = "Testnet";
else info["Mode"] = "Mainnet";
info["SSL"] = QSslSocket::sslLibraryVersionString();
info["SSL build"] = QSslSocket::sslLibraryBuildVersionString();
#if defined(TOR_VERSION)
info["Tor version"] = TOR_VERSION;
#else
info["Tor version"] = "Not bundled";
#endif
for (const QString &k: info.keys()) {
qWarning().nospace().noquote() << QString("%1: %2").arg(k, info[k]);
QList<QPair<QString, QString>> info;
info.emplace_back("Feather", FEATHER_VERSION);
info.emplace_back("Monero", MONERO_VERSION);
info.emplace_back("Qt", QT_VERSION_STR);
info.emplace_back("Tor", TOR_VERSION);
info.emplace_back("SSL", QSslSocket::sslLibraryVersionString());
info.emplace_back("Mode", stagenet ? "Stagenet" : (testnet ? "Testnet" : "Mainnet"));
for (const auto &k: info) {
qWarning().nospace().noquote() << QString("%1: %2").arg(k.first, k.second);
}
}

View file

@ -70,6 +70,7 @@ void RevuoWidget::updateItems(const QList<QSharedPointer<RevuoItem>> &items) {
for (const auto &newsbyte : item->newsbytes) {
text += "<p> • " + newsbyte + "</p>\n";
}
text += "╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍\n";
text += "<h3>Upcoming Events</h3>\n";
if (item->events.isEmpty()) {
text += "<p>There are no upcoming events.</p>\n";

View file

@ -138,7 +138,7 @@ Seed::Seed(Type type, QStringList mnemonic, NetworkType::Type networkType)
if (this->type == Type::MONERO) {
crypto::secret_key recovery_key;
std::string old_language;
if (!crypto::ElectrumWords::words_to_bytes(mnemonic.join(" ").toStdString(), recovery_key, old_language)) {
if (!crypto::ElectrumWords::words_to_bytes(this->mnemonic.join(" ").toStdString(), recovery_key, old_language)) {
if (this->mnemonic.length() == 25) {
this->errorString = "Invalid checksum word";
}