mirror of
https://github.com/feather-wallet/feather.git
synced 2024-11-16 17:27:38 +00:00
parent
0496f8b2cb
commit
d1cb45458d
3 changed files with 110 additions and 49 deletions
|
@ -7,12 +7,13 @@ $(package)_dependencies=libevent openssl zlib
|
||||||
|
|
||||||
define $(package)_set_vars
|
define $(package)_set_vars
|
||||||
$(package)_config_opts=--disable-asciidoc --disable-manpage --disable-html-manual --disable-system-torrc
|
$(package)_config_opts=--disable-asciidoc --disable-manpage --disable-html-manual --disable-system-torrc
|
||||||
$(package)_config_opts+=--disable-module-relay --disable-lzma --disable-zstd --enable-static-tor
|
$(package)_config_opts+=--disable-module-relay --disable-lzma --disable-zstd
|
||||||
$(package)_config_opts+=--with-libevent-dir=$(host_prefix) --with-openssl-dir=$(host_prefix)
|
$(package)_config_opts+=--with-libevent-dir=$(host_prefix) --with-openssl-dir=$(host_prefix)
|
||||||
$(package)_config_opts+=--with-zlib-dir=$(host_prefix) --disable-tool-name-check --enable-fatal-warnings
|
$(package)_config_opts+=--with-zlib-dir=$(host_prefix) --disable-tool-name-check --enable-fatal-warnings
|
||||||
$(package)_config_opts+=--prefix=$(host_prefix)
|
$(package)_config_opts+=--prefix=$(host_prefix)
|
||||||
$(package)_cflags+=-O2
|
$(package)_cflags+=-O2
|
||||||
$(package)_cxxflags+=-O2
|
$(package)_cxxflags+=-O2
|
||||||
|
$(package)_ldflags+=$(guix_ldflags)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_config_cmds
|
define $(package)_config_cmds
|
||||||
|
|
|
@ -76,29 +76,8 @@ FILE-NAME found in ./patches relative to the current file."
|
||||||
(substitute-keyword-arguments (package-arguments mingw-w64-x86_64-winpthreads)
|
(substitute-keyword-arguments (package-arguments mingw-w64-x86_64-winpthreads)
|
||||||
((#:parallel-build? _ #f) #f)))))
|
((#:parallel-build? _ #f) #f)))))
|
||||||
|
|
||||||
(define (make-gcc-rpath-link xgcc)
|
|
||||||
"Given a XGCC package, return a modified package that replace each instance of
|
|
||||||
-rpath in the default system spec that's inserted by Guix with -rpath-link"
|
|
||||||
(package
|
|
||||||
(inherit xgcc)
|
|
||||||
(arguments
|
|
||||||
(substitute-keyword-arguments (package-arguments xgcc)
|
|
||||||
((#:phases phases)
|
|
||||||
`(modify-phases ,phases
|
|
||||||
(add-after 'pre-configure 'replace-rpath-with-rpath-link
|
|
||||||
(lambda _
|
|
||||||
(substitute* (cons "gcc/config/rs6000/sysv4.h"
|
|
||||||
(find-files "gcc/config"
|
|
||||||
"^gnu-user.*\\.h$"))
|
|
||||||
(("-rpath=") "-rpath-link="))
|
|
||||||
#t))))))))
|
|
||||||
|
|
||||||
(define building-on (string-append "--build=" (list-ref (string-split (%current-system) #\-) 0) "-guix-linux-gnu"))
|
(define building-on (string-append "--build=" (list-ref (string-split (%current-system) #\-) 0) "-guix-linux-gnu"))
|
||||||
|
|
||||||
(define (explicit-cross-configure package)
|
|
||||||
(define building-on (string-append (list-ref (string-split (%current-system) #\-) 0) "-guix-linux-gnu"))
|
|
||||||
(package-with-extra-configure-variable package "--build" building-on))
|
|
||||||
|
|
||||||
(define (make-cross-toolchain target
|
(define (make-cross-toolchain target
|
||||||
base-gcc-for-libc
|
base-gcc-for-libc
|
||||||
base-kernel-headers
|
base-kernel-headers
|
||||||
|
@ -108,9 +87,9 @@ FILE-NAME found in ./patches relative to the current file."
|
||||||
(let* ((xbinutils (cross-binutils target))
|
(let* ((xbinutils (cross-binutils target))
|
||||||
;; 1. Build a cross-compiling gcc without targeting any libc, derived
|
;; 1. Build a cross-compiling gcc without targeting any libc, derived
|
||||||
;; from BASE-GCC-FOR-LIBC
|
;; from BASE-GCC-FOR-LIBC
|
||||||
(xgcc-sans-libc (explicit-cross-configure (cross-gcc target
|
(xgcc-sans-libc (cross-gcc target
|
||||||
#:xgcc base-gcc-for-libc
|
#:xgcc base-gcc-for-libc
|
||||||
#:xbinutils xbinutils)))
|
#:xbinutils xbinutils))
|
||||||
;; 2. Build cross-compiled kernel headers with XGCC-SANS-LIBC, derived
|
;; 2. Build cross-compiled kernel headers with XGCC-SANS-LIBC, derived
|
||||||
;; from BASE-KERNEL-HEADERS
|
;; from BASE-KERNEL-HEADERS
|
||||||
(xkernel (cross-kernel-headers target
|
(xkernel (cross-kernel-headers target
|
||||||
|
@ -119,17 +98,17 @@ FILE-NAME found in ./patches relative to the current file."
|
||||||
xbinutils))
|
xbinutils))
|
||||||
;; 3. Build a cross-compiled libc with XGCC-SANS-LIBC and XKERNEL,
|
;; 3. Build a cross-compiled libc with XGCC-SANS-LIBC and XKERNEL,
|
||||||
;; derived from BASE-LIBC
|
;; derived from BASE-LIBC
|
||||||
(xlibc (explicit-cross-configure (cross-libc target
|
(xlibc (cross-libc target
|
||||||
base-libc
|
base-libc
|
||||||
xgcc-sans-libc
|
xgcc-sans-libc
|
||||||
xbinutils
|
xbinutils
|
||||||
xkernel)))
|
xkernel))
|
||||||
;; 4. Build a cross-compiling gcc targeting XLIBC, derived from
|
;; 4. Build a cross-compiling gcc targeting XLIBC, derived from
|
||||||
;; BASE-GCC
|
;; BASE-GCC
|
||||||
(xgcc (explicit-cross-configure (cross-gcc target
|
(xgcc (cross-gcc target
|
||||||
#:xgcc base-gcc
|
#:xgcc base-gcc
|
||||||
#:xbinutils xbinutils
|
#:xbinutils xbinutils
|
||||||
#:libc xlibc))))
|
#:libc xlibc)))
|
||||||
;; Define a meta-package that propagates the resulting XBINUTILS, XLIBC, and
|
;; Define a meta-package that propagates the resulting XBINUTILS, XLIBC, and
|
||||||
;; XGCC
|
;; XGCC
|
||||||
(package
|
(package
|
||||||
|
@ -153,19 +132,12 @@ chain for " target " development."))
|
||||||
(define base-gcc gcc-10)
|
(define base-gcc gcc-10)
|
||||||
(define base-linux-kernel-headers linux-libre-headers-5.15)
|
(define base-linux-kernel-headers linux-libre-headers-5.15)
|
||||||
|
|
||||||
;; https://gcc.gnu.org/install/configure.html
|
|
||||||
(define (hardened-gcc gcc)
|
|
||||||
(package-with-extra-configure-variable (
|
|
||||||
package-with-extra-configure-variable gcc
|
|
||||||
"--enable-default-ssp" "yes")
|
|
||||||
"--enable-default-pie" "yes"))
|
|
||||||
|
|
||||||
(define* (make-bitcoin-cross-toolchain target
|
(define* (make-bitcoin-cross-toolchain target
|
||||||
#:key
|
#:key
|
||||||
(base-gcc-for-libc base-gcc)
|
(base-gcc-for-libc linux-base-gcc)
|
||||||
(base-kernel-headers base-linux-kernel-headers)
|
(base-kernel-headers base-linux-kernel-headers)
|
||||||
(base-libc (hardened-glibc (make-glibc-without-werror glibc-2.27)))
|
(base-libc glibc-2.27)
|
||||||
(base-gcc (make-gcc-rpath-link (hardened-gcc base-gcc))))
|
(base-gcc linux-base-gcc))
|
||||||
"Convenience wrapper around MAKE-CROSS-TOOLCHAIN with default values
|
"Convenience wrapper around MAKE-CROSS-TOOLCHAIN with default values
|
||||||
desirable for building Feather Wallet release binaries."
|
desirable for building Feather Wallet release binaries."
|
||||||
(make-cross-toolchain target
|
(make-cross-toolchain target
|
||||||
|
@ -212,16 +184,6 @@ chain for " target " development."))
|
||||||
(search-our-patches "nsis-gcc-10-memmove.patch"
|
(search-our-patches "nsis-gcc-10-memmove.patch"
|
||||||
"nsis-disable-installer-reloc.patch")))
|
"nsis-disable-installer-reloc.patch")))
|
||||||
|
|
||||||
(define (make-glibc-without-werror glibc)
|
|
||||||
(package-with-extra-configure-variable glibc "enable_werror" "no"))
|
|
||||||
|
|
||||||
;; https://www.gnu.org/software/libc/manual/html_node/Configuring-and-compiling.html
|
|
||||||
(define (hardened-glibc glibc)
|
|
||||||
(package-with-extra-configure-variable (
|
|
||||||
package-with-extra-configure-variable glibc
|
|
||||||
"--enable-stack-protector" "all")
|
|
||||||
"--enable-bind-now" "yes"))
|
|
||||||
|
|
||||||
(define-public mingw-w64-base-gcc
|
(define-public mingw-w64-base-gcc
|
||||||
(package
|
(package
|
||||||
(inherit base-gcc)
|
(inherit base-gcc)
|
||||||
|
@ -233,6 +195,30 @@ chain for " target " development."))
|
||||||
(list "--enable-threads=posix",
|
(list "--enable-threads=posix",
|
||||||
building-on)))))))
|
building-on)))))))
|
||||||
|
|
||||||
|
(define-public linux-base-gcc
|
||||||
|
(package
|
||||||
|
(inherit base-gcc)
|
||||||
|
(arguments
|
||||||
|
(substitute-keyword-arguments (package-arguments base-gcc)
|
||||||
|
((#:configure-flags flags)
|
||||||
|
`(append ,flags
|
||||||
|
;; https://gcc.gnu.org/install/configure.html
|
||||||
|
(list "--enable-initfini-array=yes",
|
||||||
|
"--enable-default-ssp=yes",
|
||||||
|
"--enable-default-pie=yes",
|
||||||
|
building-on)))
|
||||||
|
((#:phases phases)
|
||||||
|
`(modify-phases ,phases
|
||||||
|
;; Given a XGCC package, return a modified package that replace each instance of
|
||||||
|
;; -rpath in the default system spec that's inserted by Guix with -rpath-link
|
||||||
|
(add-after 'pre-configure 'replace-rpath-with-rpath-link
|
||||||
|
(lambda _
|
||||||
|
(substitute* (cons "gcc/config/rs6000/sysv4.h"
|
||||||
|
(find-files "gcc/config"
|
||||||
|
"^gnu-user.*\\.h$"))
|
||||||
|
(("-rpath=") "-rpath-link="))
|
||||||
|
#t))))))))
|
||||||
|
|
||||||
(define-public glibc-2.27
|
(define-public glibc-2.27
|
||||||
(package
|
(package
|
||||||
(inherit glibc-2.31)
|
(inherit glibc-2.31)
|
||||||
|
@ -248,7 +234,28 @@ chain for " target " development."))
|
||||||
"0azpb9cvnbv25zg8019rqz48h8i2257ngyjg566dlnp74ivrs9vq"))
|
"0azpb9cvnbv25zg8019rqz48h8i2257ngyjg566dlnp74ivrs9vq"))
|
||||||
(patches (search-our-patches "glibc-2.27-riscv64-Use-__has_include-to-include-asm-syscalls.h.patch"
|
(patches (search-our-patches "glibc-2.27-riscv64-Use-__has_include-to-include-asm-syscalls.h.patch"
|
||||||
"glibc-2.27-fcommon.patch"
|
"glibc-2.27-fcommon.patch"
|
||||||
"glibc-2.27-guix-prefix.patch"))))))
|
"glibc-2.27-no-librt.patch"))))
|
||||||
|
(arguments
|
||||||
|
(substitute-keyword-arguments (package-arguments glibc)
|
||||||
|
((#:configure-flags flags)
|
||||||
|
`(append ,flags
|
||||||
|
;; https://www.gnu.org/software/libc/manual/html_node/Configuring-and-compiling.html
|
||||||
|
(list "--enable-stack-protector=all",
|
||||||
|
"--enable-bind-now",
|
||||||
|
"--disable-werror",
|
||||||
|
building-on)))
|
||||||
|
((#:phases phases)
|
||||||
|
`(modify-phases ,phases
|
||||||
|
(add-before 'configure 'set-etc-rpc-installation-directory
|
||||||
|
(lambda* (#:key outputs #:allow-other-keys)
|
||||||
|
;; Install the rpc data base file under `$out/etc/rpc'.
|
||||||
|
;; Otherwise build will fail with "Permission denied."
|
||||||
|
(let ((out (assoc-ref outputs "out")))
|
||||||
|
(substitute* "sunrpc/Makefile"
|
||||||
|
(("^\\$\\(inst_sysconfdir\\)/rpc(.*)$" _ suffix)
|
||||||
|
(string-append out "/etc/rpc" suffix "\n"))
|
||||||
|
(("^install-others =.*$")
|
||||||
|
(string-append "install-others = " out "/etc/rpc\n"))))))))))))
|
||||||
|
|
||||||
(define-public ldid
|
(define-public ldid
|
||||||
(package
|
(package
|
||||||
|
|
53
contrib/guix/patches/glibc-2.27-no-librt.patch
Normal file
53
contrib/guix/patches/glibc-2.27-no-librt.patch
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
This patch can be dropped when we are building with glibc 2.30+.
|
||||||
|
|
||||||
|
commit 6e41ef56c9baab719a02f1377b1e7ce7bff61e73
|
||||||
|
Author: Florian Weimer <fweimer@redhat.com>
|
||||||
|
Date: Fri Feb 8 10:21:56 2019 +0100
|
||||||
|
|
||||||
|
rt: Turn forwards from librt to libc into compat symbols [BZ #24194]
|
||||||
|
|
||||||
|
As the result of commit 6e6249d0b461b952d0f544792372663feb6d792a
|
||||||
|
("BZ#14743: Move clock_* symbols from librt to libc."), in glibc 2.17,
|
||||||
|
clock_gettime, clock_getres, clock_settime, clock_getcpuclockid,
|
||||||
|
clock_nanosleep were added to libc, and the file rt/clock-compat.c
|
||||||
|
was added with forwarders to the actual implementations in libc.
|
||||||
|
These forwarders were wrapped in
|
||||||
|
|
||||||
|
#if SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_17)
|
||||||
|
|
||||||
|
so that they are not present for newer architectures (such as
|
||||||
|
powerpc64le) with a 2.17 or later ABI baseline. But the forwarders
|
||||||
|
were not marked as compatibility symbols. As a result, on older
|
||||||
|
architectures, historic configure checks such as
|
||||||
|
|
||||||
|
AC_CHECK_LIB(rt, clock_gettime)
|
||||||
|
|
||||||
|
still cause linking against librt, even though this is completely
|
||||||
|
unnecessary. It also creates a needless porting hazard because
|
||||||
|
architectures behave differently when it comes to symbol availability.
|
||||||
|
|
||||||
|
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
|
||||||
|
|
||||||
|
diff --git a/rt/clock-compat.c b/rt/clock-compat.c
|
||||||
|
index f816973c05..11e71aa890 100644
|
||||||
|
--- a/rt/clock-compat.c
|
||||||
|
+++ b/rt/clock-compat.c
|
||||||
|
@@ -30,14 +30,16 @@
|
||||||
|
#if HAVE_IFUNC
|
||||||
|
# undef INIT_ARCH
|
||||||
|
# define INIT_ARCH()
|
||||||
|
-# define COMPAT_REDIRECT(name, proto, arglist) libc_ifunc (name, &__##name)
|
||||||
|
+# define COMPAT_REDIRECT(name, proto, arglist) libc_ifunc (name, &__##name) \
|
||||||
|
+ compat_symbol (librt, name, name, GLIBC_2_2);
|
||||||
|
#else
|
||||||
|
# define COMPAT_REDIRECT(name, proto, arglist) \
|
||||||
|
int \
|
||||||
|
name proto \
|
||||||
|
{ \
|
||||||
|
return __##name arglist; \
|
||||||
|
- }
|
||||||
|
+ } \
|
||||||
|
+ compat_symbol (librt, name, name, GLIBC_2_2);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
COMPAT_REDIRECT (clock_getres,
|
Loading…
Reference in a new issue