summaryrefslogtreecommitdiff
path: root/dev-libs/libsecp256k1
diff options
context:
space:
mode:
Diffstat (limited to 'dev-libs/libsecp256k1')
-rw-r--r--dev-libs/libsecp256k1/Manifest7
-rw-r--r--dev-libs/libsecp256k1/files/0.2.0-fix-cross-compile.patch87
-rw-r--r--dev-libs/libsecp256k1/libsecp256k1-0.1_pre20201028-r1.ebuild (renamed from dev-libs/libsecp256k1/libsecp256k1-0.1_pre20201028.ebuild)8
-rw-r--r--dev-libs/libsecp256k1/libsecp256k1-0.2.0-r2.ebuild (renamed from dev-libs/libsecp256k1/libsecp256k1-0.2.0-r1.ebuild)62
-rw-r--r--dev-libs/libsecp256k1/metadata.xml3
5 files changed, 121 insertions, 46 deletions
diff --git a/dev-libs/libsecp256k1/Manifest b/dev-libs/libsecp256k1/Manifest
index e3f4e5d56b65..e1f598421e9f 100644
--- a/dev-libs/libsecp256k1/Manifest
+++ b/dev-libs/libsecp256k1/Manifest
@@ -1,7 +1,8 @@
+AUX 0.2.0-fix-cross-compile.patch 3941 BLAKE2B ec2272250dd4cde7dcae4eb2bf0ac73649330a70fce4108b086d1e834bf9f132fc513fbb9ae4d2f5f87ceeb033e9ab3d4ff39025b9c537dd4ad982020faa5092 SHA512 c6fcb9dba23d00955174fef94323bd37250e1019aa1b68c0b4393292b505e6ff17670ea1121837f50f4b22356dd637ea53f4e43623c2cf32691d435f0278805a
DIST libsecp256k1-0.2.0.tar.gz 2456096 BLAKE2B 9160ea9977ddc08daf8881cdcb98cd223024c938ab09c0dab9fc4cd67d355018f339bab7701bbb895345fa858e5673006ab81e027da109a7c9d470e2052eecdf SHA512 a345ffd69c5587777dc834a9f86f89971090158695507cf08cd12efc3b136ff5eff54a7bd789354a5e6e11229e1b2839f706458d64cdf7561519245c5be31a9f
DIST libsecp256k1-v0.1_pre20190401.tgz 166663 BLAKE2B 68c9fc3fda6af56452f32edeae5dcb5a92f68bc3fb39a397c532951c6392347df14ea0347bbe05cab43158512e0d9f5ea87bd8f69bece1b04440860ebb8065ee SHA512 8c4945e93cb5ff241482ba4426b25162a7ae3b26860edc10c91d06b1c396887202ad971f4d38e035828352531b87fc29087a12b675e43da44f23c9ea3b6c0cc8
DIST libsecp256k1-v0.1_pre20201028.tgz 200051 BLAKE2B 90d636049b411e02703feb2661006900a55f952f60e76e2b7147a5afe8e391a06a80d6ae1489b1e7f2382176c7ea831526465a85bca09156dc6d37b417fcb33b SHA512 54a0fa21b64dd6836e4227de51f3539afe06e0e2f352683397d6adb5dd0508af443d2e25f91e90e1ae366b261965fe7d438292314705baee799cf37421644958
EBUILD libsecp256k1-0.1_pre20190401.ebuild 1577 BLAKE2B f1472ea251a7f43a7c6a96aabcfcf34481d55b1f43afaca01293326c1d19cb0debf9d9a258250b6f045060d4827ada3b6f0644f2029e1d37ef7349833136dbc1 SHA512 ac2c63c0db252ca605ce4d2f99de32a66ffd24d6658eb23692d5380f02507e754b2135c5de562dcc98c689c32eea8edb85b6976ab3cb5c9814088f3e9cf5e8ac
-EBUILD libsecp256k1-0.1_pre20201028.ebuild 1911 BLAKE2B 3d222fe811adfc6df26d7a7271c72b3d4d39c39742be1046e814028d1a97d68a2c3f5399ce13f3df04cb13cb46843be20b9218355e4ef105a305493d25d90e55 SHA512 b6daafabdb58adc46dc973ba56cdb50fe9cff927ae67b9fdfe5318c0a84ad473f33890fed8afc58247fe734359151468bfbc5225436bc11ddad5aa7631e56080
-EBUILD libsecp256k1-0.2.0-r1.ebuild 1932 BLAKE2B f71d754f607dc0de2edc1b5ec13298601820d0fd1af9140fe5cb132f2c6c2b788611a21df9b4ce7c3709b8c1f869c74b10269df489da81fcca3b8cbcccc937b8 SHA512 13d913a5e92d3b218cebdd282e4af58e6088ba5d1ddeb6cba6ecb727b9823711e4e61b7359415e288afcd63601d299ed1012ed74da880c9ddb60e7791f34a702
-MISC metadata.xml 1369 BLAKE2B c1fe8fac34fe5181cf4f95bdceafa0d228e750eb731161a2a0938a0b72c5cac88a7d872b689d1fac264a44d93da7788b8ddab3785d4c71dd80f90f2a0b9f3d74 SHA512 614774e744a25199edd3ecc4b4beb6fe2fb550d2160594a6c9994e566987dde010d6f2bd4c09a14976ee5dae5a11a316d68b937fc20a84df2c3a415364be6bda
+EBUILD libsecp256k1-0.1_pre20201028-r1.ebuild 1771 BLAKE2B 4f3ed2587e7c8e5637446b01858072542deef4cb1413969f673820db6634489a6fce0b228cd702a18b0952634cda4c3480efc2df421242cb62e62bcfd3e788e7 SHA512 30a9ebfa633e9daac40b6345261aa31326c698314cde6e138deea33a7d3a924e914ee8be82b39b0ddcd02a047824f71edce2870c421f0fe0ce44f0284068504e
+EBUILD libsecp256k1-0.2.0-r2.ebuild 1716 BLAKE2B 0f1cacd77407313498270b2fed646ce14e9b795b241037f4b44f15f3a04f4762058798357e49fe7432154837e95dd7516d1306f70953b3577b05fece3d1a6b82 SHA512 78a28a64a146c677f68bcab83f01db94faba5461d4fbd612efdb654cd6b596bff9bdd2de90768057f77cd4b69bf7240d8eb032091f88d4f58fb93fd64bb5fc09
+MISC metadata.xml 1229 BLAKE2B 2bef1f35210eb662ffe409aa32b5d61a11a4838ccda892fe545c1eef596bb130ebdd4ff80814d1e69a0328b16f74e94e50a1557f00c64bc16c6b218a84969614 SHA512 42f20aa48559dc254bc1233732aac1e0b3a4dec8935abcd81b980127f5ec511206812f84493c1d55bc6ce369735df0a2b01170327b39cc7dfb995811f4ce3085
diff --git a/dev-libs/libsecp256k1/files/0.2.0-fix-cross-compile.patch b/dev-libs/libsecp256k1/files/0.2.0-fix-cross-compile.patch
new file mode 100644
index 000000000000..a1db0826ebe2
--- /dev/null
+++ b/dev-libs/libsecp256k1/files/0.2.0-fix-cross-compile.patch
@@ -0,0 +1,87 @@
+https://github.com/bitcoin-core/secp256k1/pull/1159
+
+From 772e747bd9104d80fe531bed61f23f75342d7d63 Mon Sep 17 00:00:00 2001
+From: Matt Whitlock <bitcoin@mattwhitlock.name>
+Date: Sun, 20 Nov 2022 01:46:07 -0500
+Subject: [PATCH] Makefile: build precomp generators using build-system
+ toolchain
+
+When cross-compiling libsecp256k1, if the `precomputed_ecmult*.c` source
+files need to be regenerated, then the generators need to be built for
+the *build* system, not for the *host* system. Autoconf supports this
+fairly cleanly via the `AX_PROG_CC_FOR_BUILD` macro (from Autoconf
+Archive), but Automake requires some hackery. When building the
+generators, we override the `CC`, `CFLAGS`, `CPPFLAGS`, and `LDFLAGS`
+variables to their build-system counterparts, whose names are suffixed
+with `_FOR_BUILD` and whose values are populated by the aforementioned
+Autoconf macro and may be overridden on the `make` command line. Since
+Automake lacks support for overriding `EXEEXT` on a per-program basis,
+we define a recipe that builds the generator binaries with names
+suffixed with `$(EXEEXT)` and then renames them suffixed with
+`$(BUILD_EXEEXT)`.
+---
+ Makefile.am | 30 ++++++++++++++++++++++++------
+ configure.ac | 1 +
+ 2 files changed, 25 insertions(+), 6 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 30b6a794d0..e929300298 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -180,8 +180,26 @@ endif
+ endif
+
+ ### Precomputed tables
+-EXTRA_PROGRAMS = precompute_ecmult precompute_ecmult_gen
+-CLEANFILES = $(EXTRA_PROGRAMS)
++PROGRAMS_FOR_BUILD = precompute_ecmult precompute_ecmult_gen
++$(addsuffix $(BUILD_EXEEXT),$(PROGRAMS_FOR_BUILD)) : override CC = $(CC_FOR_BUILD)
++$(addsuffix $(BUILD_EXEEXT),$(PROGRAMS_FOR_BUILD)) : override CFLAGS = $(CFLAGS_FOR_BUILD)
++$(addsuffix $(BUILD_EXEEXT),$(PROGRAMS_FOR_BUILD)) : override CPPFLAGS = $(CPPFLAGS_FOR_BUILD)
++$(addsuffix $(BUILD_EXEEXT),$(PROGRAMS_FOR_BUILD)) : override LDFLAGS = $(LDFLAGS_FOR_BUILD)
++# Automake has no support for PROGRAMS suffixed with BUILD_EXEEXT
++# instead of EXEEXT, so if those extensions differ, then we define a
++# recipe that builds the latter and renames it to the former. Since
++# Cygwin toolchains always append '.exe' to the output file name given
++# by '-o', we ignore rename failures since the toolchain will have
++# already created the right output file. (Note: The leading spaces
++# before ifneq and endif here are a hack so Automake won't try to
++# interpret them as an Automake conditional.)
++ ifneq ($(BUILD_EXEEXT),$(EXEEXT))
++%$(BUILD_EXEEXT) : %$(EXEEXT)
++ mv -- '$<' '$@' || :
++ endif
++
++EXTRA_PROGRAMS = $(PROGRAMS_FOR_BUILD)
++CLEANFILES = $(addsuffix $(BUILD_EXEEXT),$(PROGRAMS_FOR_BUILD))
+
+ precompute_ecmult_SOURCES = src/precompute_ecmult.c
+ precompute_ecmult_CPPFLAGS = $(SECP_INCLUDES)
+@@ -198,11 +216,11 @@ precompute_ecmult_gen_LDADD = $(SECP_LIBS) $(COMMON_LIB)
+ # This means that rebuilds of the prebuilt files always need to be
+ # forced by deleting them, e.g., by invoking `make clean-precomp`.
+ src/precomputed_ecmult.c:
+- $(MAKE) $(AM_MAKEFLAGS) precompute_ecmult$(EXEEXT)
+- ./precompute_ecmult$(EXEEXT)
++ $(MAKE) $(AM_MAKEFLAGS) precompute_ecmult$(BUILD_EXEEXT)
++ ./precompute_ecmult$(BUILD_EXEEXT)
+ src/precomputed_ecmult_gen.c:
+- $(MAKE) $(AM_MAKEFLAGS) precompute_ecmult_gen$(EXEEXT)
+- ./precompute_ecmult_gen$(EXEEXT)
++ $(MAKE) $(AM_MAKEFLAGS) precompute_ecmult_gen$(BUILD_EXEEXT)
++ ./precompute_ecmult_gen$(BUILD_EXEEXT)
+
+ PRECOMP = src/precomputed_ecmult_gen.c src/precomputed_ecmult.c
+ precomp: $(PRECOMP)
+diff --git a/configure.ac b/configure.ac
+index a2a15d2b82..013964f5ff 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -35,6 +35,7 @@ m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
+ AC_PROG_CC
+ AM_PROG_AS
+ AM_PROG_AR
++AX_PROG_CC_FOR_BUILD
+
+ # Clear some cache variables as a workaround for a bug that appears due to a bad
+ # interaction between AM_PROG_AR and LT_INIT when combining MSVC's archiver lib.exe.
diff --git a/dev-libs/libsecp256k1/libsecp256k1-0.1_pre20201028.ebuild b/dev-libs/libsecp256k1/libsecp256k1-0.1_pre20201028-r1.ebuild
index b78335558ac9..ae79e2f9f11b 100644
--- a/dev-libs/libsecp256k1/libsecp256k1-0.1_pre20201028.ebuild
+++ b/dev-libs/libsecp256k1/libsecp256k1-0.1_pre20201028-r1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2021 Gentoo Authors
+# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
@@ -14,13 +14,12 @@ SRC_URI="https://github.com/bitcoin-core/${MyPN}/archive/${COMMITHASH}.tar.gz ->
LICENSE="MIT"
SLOT="0"
KEYWORDS="amd64 ~arm ~arm64 ~mips ~ppc ~ppc64 x86 ~amd64-linux ~x86-linux"
-IUSE="+asm ecdh +experimental +extrakeys gmp lowmem precompute-ecmult +schnorr +recovery test test-openssl valgrind"
+IUSE="+asm ecdh +experimental +extrakeys gmp lowmem +recovery +schnorr test test-openssl valgrind"
RESTRICT="!test? ( test )"
REQUIRED_USE="
asm? ( || ( amd64 arm ) arm? ( experimental ) )
extrakeys? ( experimental )
- ?? ( lowmem precompute-ecmult )
schnorr? ( experimental extrakeys )
test-openssl? ( test )
"
@@ -63,8 +62,7 @@ src_configure() {
--with-bignum=$(usex gmp gmp no) \
$(use_enable recovery module-recovery) \
$(use_enable schnorr module-schnorrsig) \
- $(usex lowmem '--with-ecmult-window=2 --with-ecmult-gen-precision=2' '') \
- $(usex precompute-ecmult '--with-ecmult-window=24 --with-ecmult-gen-precision=8' '') \
+ $(usex lowmem '--with-ecmult-window=4 --with-ecmult-gen-precision=2' '') \
$(use_with valgrind) \
--disable-static
}
diff --git a/dev-libs/libsecp256k1/libsecp256k1-0.2.0-r1.ebuild b/dev-libs/libsecp256k1/libsecp256k1-0.2.0-r2.ebuild
index 30b67ab2dd17..588001fd95a4 100644
--- a/dev-libs/libsecp256k1/libsecp256k1-0.2.0-r1.ebuild
+++ b/dev-libs/libsecp256k1/libsecp256k1-0.2.0-r2.ebuild
@@ -5,38 +5,33 @@ EAPI=8
inherit autotools
-MY_PN=${PN##lib}
-
+MyPN=secp256k1
DESCRIPTION="Optimized C library for EC operations on curve secp256k1"
HOMEPAGE="https://github.com/bitcoin-core/secp256k1"
-if [[ ${PV} == *_p* ]] ; then
- MY_COMMIT="3967d96bf184519eb98b766af665b4d4b072563e"
- SRC_URI="https://github.com/bitcoin-core/${MyPN}/archive/${COMMITHASH}.tar.gz -> ${P}.tar.gz"
- S="${WORKDIR}"/${MY_PN}-${MY_COMMIT}
-else
- SRC_URI="https://github.com/bitcoin-core/secp256k1/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
- S="${WORKDIR}"/${MY_PN}-${PV}
-fi
+SRC_URI="https://github.com/bitcoin-core/secp256k1/archive/v${PV}.tar.gz -> ${P}.tar.gz"
LICENSE="MIT"
-SLOT="0/1"
+SLOT="0/1" # subslot is "$((_LIB_VERSION_CURRENT-_LIB_VERSION_AGE))" from configure.ac
KEYWORDS="~amd64 ~arm ~arm64 ~mips ~ppc ~ppc64 ~x86 ~amd64-linux ~x86-linux"
-IUSE="+asm ecdh experimental +extrakeys lowmem precompute-ecmult +schnorr +recovery test valgrind"
+IUSE="+asm +ecdh experimental +extrakeys lowmem +recovery +schnorr test valgrind"
RESTRICT="!test? ( test )"
+
REQUIRED_USE="
- ?? ( lowmem precompute-ecmult )
- asm? (
- || ( amd64 arm )
- )
+ asm? ( || ( amd64 arm ) arm? ( experimental ) )
schnorr? ( extrakeys )
"
-
BDEPEND="
+ sys-devel/autoconf-archive
virtual/pkgconfig
- test? ( dev-libs/openssl )
valgrind? ( dev-util/valgrind )
"
+PATCHES=(
+ "${FILESDIR}/0.2.0-fix-cross-compile.patch"
+)
+
+S="${WORKDIR}/${MyPN}-${PV}"
+
src_prepare() {
default
eautoreconf
@@ -46,37 +41,32 @@ src_prepare() {
}
src_configure() {
- local asm_opt
- if use asm; then
- if use arm; then
- asm_opt=arm
- else
- asm_opt=auto
- fi
- else
- asm_opt=no
- fi
-
local myeconfargs=(
--disable-benchmark
$(use_enable experimental)
$(use_enable test tests)
$(use_enable test exhaustive-tests)
- $(use_enable ecdh module-ecdh)
- $(use_enable extrakeys module-extrakeys)
- --with-asm=${asm_opt}
- $(use_enable recovery module-recovery)
+ $(use_enable {,module-}ecdh)
+ $(use_enable {,module-}extrakeys)
+ $(use_enable {,module-}recovery)
$(use_enable schnorr module-schnorrsig)
- $(usev lowmem '--with-ecmult-window=2 --with-ecmult-gen-precision=2')
- $(usev precompute-ecmult '--with-ecmult-window=24 --with-ecmult-gen-precision=8')
+ $(usev lowmem '--with-ecmult-window=4 --with-ecmult-gen-precision=2')
$(use_with valgrind)
)
+ if use asm; then
+ if use arm; then
+ myeconfargs+=( --with-asm=arm )
+ else
+ myeconfargs+=( --with-asm=auto )
+ fi
+ else
+ myeconfargs+=( --with-asm=no )
+ fi
econf "${myeconfargs[@]}"
}
src_install() {
default
-
find "${ED}" -name '*.la' -delete || die
}
diff --git a/dev-libs/libsecp256k1/metadata.xml b/dev-libs/libsecp256k1/metadata.xml
index 3a2cdd782fc6..9a105e32f61a 100644
--- a/dev-libs/libsecp256k1/metadata.xml
+++ b/dev-libs/libsecp256k1/metadata.xml
@@ -15,8 +15,7 @@
<flag name="endomorphism">Enable endomorphism</flag>
<flag name="experimental">Allow experimental USE flags</flag>
<flag name="extrakeys">Enable extrakeys module</flag>
- <flag name="lowmem">Reduce runtime memory usage at the expense of performance (ecmult window size 2, gen precision 2)</flag>
- <flag name="precompute-ecmult">Use over 512 MB memory at runtime for better performance (ecmult window size 24, gen precision 8)</flag>
+ <flag name="lowmem">Reduce runtime memory usage at the expense of performance (ecmult window size 4, gen precision 2)</flag>
<flag name="recovery">Enable ECDSA pubkey recovery module</flag>
<flag name="schnorr">Enable Schnorr signature module</flag>
<flag name="test-openssl">Enable OpenSSL comparison tests</flag>