aboutsummaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorfanquake <fanquake@gmail.com>2023-06-28 11:26:23 +0100
committerfanquake <fanquake@gmail.com>2023-06-28 11:41:35 +0100
commitec822e88dd691297dbd7f36848a4b9e792ef83df (patch)
tree1fad5de49066e4076a81f19a9eec338624cef1c3 /contrib
parentd9c7c2fd3ec7b0fcae7e0c9423bff6c6799dd67c (diff)
parent529c92e837b28169b501562efe7b5b7120a2ebbb (diff)
downloadbitcoin-ec822e88dd691297dbd7f36848a4b9e792ef83df.tar.xz
Merge bitcoin/bitcoin#27813: guix: Update `python-lief` package to 0.13.2
529c92e837b28169b501562efe7b5b7120a2ebbb guix: Update `python-lief` package to 0.13.2 (Hennadii Stepanov) Pull request description: The Guix's `python-lief` package is going to move to using external deps, rather than the bundled ones (https://lists.gnu.org/archive/html/guix-patches/2023-05/msg01302.html). We want to continue using our own package indefinitely, to keep the build simpler, and allow for easier updating. Changes in `contrib/devtools/security-check.py` are caused by https://github.com/lief-project/LIEF/commit/6357c6370bf102b580b8d65c3aad1c3010b0e07d. Also see: https://github.com/bitcoin/bitcoin/pull/27507. ACKs for top commit: fanquake: ACK 529c92e837b28169b501562efe7b5b7120a2ebbb Tree-SHA512: ad81111b090a39b380fe25bb27b54a339e78a158f462c7adda25d5ee55f0d654107b1486b29b9687ad0808e27b01e04f53a0e8ffc6600b79103d6bd0dfec64ef
Diffstat (limited to 'contrib')
-rwxr-xr-xcontrib/devtools/security-check.py6
-rw-r--r--contrib/guix/manifest.scm37
-rw-r--r--contrib/guix/patches/lief-fix-ppc64-nx-default.patch29
3 files changed, 25 insertions, 47 deletions
diff --git a/contrib/devtools/security-check.py b/contrib/devtools/security-check.py
index 85f75f978a..af9d63717d 100755
--- a/contrib/devtools/security-check.py
+++ b/contrib/devtools/security-check.py
@@ -113,7 +113,7 @@ def check_ELF_control_flow(binary) -> bool:
main = binary.get_function_address('main')
content = binary.get_content_from_virtual_address(main, 4, lief.Binary.VA_TYPES.AUTO)
- if content == [243, 15, 30, 250]: # endbr64
+ if content.tolist() == [243, 15, 30, 250]: # endbr64
return True
return False
@@ -142,7 +142,7 @@ def check_PE_control_flow(binary) -> bool:
content = binary.get_content_from_virtual_address(virtual_address, 4, lief.Binary.VA_TYPES.VA)
- if content == [243, 15, 30, 250]: # endbr64
+ if content.tolist() == [243, 15, 30, 250]: # endbr64
return True
return False
@@ -183,7 +183,7 @@ def check_MACHO_control_flow(binary) -> bool:
'''
content = binary.get_content_from_virtual_address(binary.entrypoint, 4, lief.Binary.VA_TYPES.AUTO)
- if content == [243, 15, 30, 250]: # endbr64
+ if content.tolist() == [243, 15, 30, 250]: # endbr64
return True
return False
diff --git a/contrib/guix/manifest.scm b/contrib/guix/manifest.scm
index 1808eeffbe..b77a2a8efe 100644
--- a/contrib/guix/manifest.scm
+++ b/contrib/guix/manifest.scm
@@ -22,6 +22,7 @@
(gnu packages moreutils)
(gnu packages pkg-config)
(gnu packages python)
+ ((gnu packages python-build) #:select (python-tomli))
(gnu packages python-crypto)
(gnu packages python-web)
(gnu packages shells)
@@ -203,38 +204,44 @@ chain for " target " development."))
(search-our-patches "nsis-gcc-10-memmove.patch"
"nsis-disable-installer-reloc.patch")))
-(define (fix-ppc64-nx-default lief)
- (package-with-extra-patches lief
- (search-our-patches "lief-fix-ppc64-nx-default.patch")))
-
-;; Our python-lief package can be removed once we are using
-;; guix 83bfdb409787cb2737e68b093a319b247b7858e6 or later.
-;; Note we currently use cmake-minimal.
+;; 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
+;; failure; see https://github.com/bitcoin/bitcoin/pull/27296.
(define-public python-lief
(package
(name "python-lief")
- (version "0.12.3")
+ (version "0.13.2")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/lief-project/LIEF")
(commit version)))
(file-name (git-file-name name version))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Configure build for Python bindings.
+ (substitute* "api/python/config-default.toml"
+ (("(ninja = )true" all m)
+ (string-append m "false"))
+ (("(parallel-jobs = )0" all m)
+ (string-append m (number->string (parallel-job-count)))))))
(sha256
(base32
- "11i6hqmcjh56y554kqhl61698n9v66j2qk1c1g63mv2w07h2z661"))))
+ "0y48x358ppig5xp97ahcphfipx7cg9chldj2q5zrmn610fmi4zll"))))
(build-system python-build-system)
- (native-inputs (list cmake-minimal))
+ (native-inputs (list cmake-minimal python-tomli))
(arguments
(list
#:tests? #f ;needs network
#:phases #~(modify-phases %standard-phases
+ (add-before 'build 'change-directory
+ (lambda _
+ (chdir "api/python")))
(replace 'build
(lambda _
- (invoke
- "python" "setup.py" "--sdk" "build"
- (string-append
- "-j" (number->string (parallel-job-count)))))))))
+ (invoke "python" "setup.py" "build"))))))
(home-page "https://github.com/lief-project/LIEF")
(synopsis "Library to instrument executable formats")
(description
@@ -596,7 +603,7 @@ inspecting signatures in Mach-O binaries.")
;; Git
git-minimal
;; Tests
- (fix-ppc64-nx-default python-lief))
+ python-lief)
(let ((target (getenv "HOST")))
(cond ((string-suffix? "-mingw32" target)
;; Windows
diff --git a/contrib/guix/patches/lief-fix-ppc64-nx-default.patch b/contrib/guix/patches/lief-fix-ppc64-nx-default.patch
deleted file mode 100644
index 101bc1ddc0..0000000000
--- a/contrib/guix/patches/lief-fix-ppc64-nx-default.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-Correct default for Binary::has_nx on ppc64
-
-From the Linux kernel source:
-
- * This is the default if a program doesn't have a PT_GNU_STACK
- * program header entry. The PPC64 ELF ABI has a non executable stack
- * stack by default, so in the absence of a PT_GNU_STACK program header
- * we turn execute permission off.
-
-This patch can be dropped the next time we update LIEF.
-
-diff --git a/src/ELF/Binary.cpp b/src/ELF/Binary.cpp
-index a90be1ab..fd2d9764 100644
---- a/src/ELF/Binary.cpp
-+++ b/src/ELF/Binary.cpp
-@@ -1084,7 +1084,12 @@ bool Binary::has_nx() const {
- return segment->type() == SEGMENT_TYPES::PT_GNU_STACK;
- });
- if (it_stack == std::end(segments_)) {
-- return false;
-+ if (header().machine_type() == ARCH::EM_PPC64) {
-+ // The PPC64 ELF ABI has a non-executable stack by default.
-+ return true;
-+ } else {
-+ return false;
-+ }
- }
-
- return !(*it_stack)->has(ELF_SEGMENT_FLAGS::PF_X);