Bug 270076 - security/opensc: fails to build on 14.0-CURRENT
Summary: security/opensc: fails to build on 14.0-CURRENT
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: amd64 Any
: --- Affects Only Me
Assignee: Alex Dupre
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-03-09 22:41 UTC by Dave Cottlehuber
Modified: 2023-07-10 07:44 UTC (History)
1 user (show)

See Also:
bugzilla: maintainer-feedback? (ale)


Attachments
poudriere build log (162.83 KB, text/plain)
2023-03-09 22:41 UTC, Dave Cottlehuber
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Dave Cottlehuber freebsd_committer freebsd_triage 2023-03-09 22:41:02 UTC
Created attachment 240711 [details]
poudriere build log

card-openpgp.c:1164:7: error: passing arguments to a function without a prototype is deprecated in all versions of C and is not supported in C2x [-Werror,-Wdeprecated-non-prototype]


..
libtool: compile:  cc -DHAVE_CONFIG_H -I. -I../.. -DOPENSC_CONF_PATH=\"/usr/local/etc/opensc.conf\" -DDEFAULT_SM_MODULE_PATH=\"/usr/local/lib\" -DDEFAULT_SM_MODULE=\"libsmm-local.so\" -I../../src -I/usr/include -I/usr/local/include/PCSC -pthread -Wall -Wextra -Wno-unused-parameter -Werror -Wstrict-aliasing=2 -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -MT libopensc_la-card-openpgp.lo -MD -MP -MF .deps/libopensc_la-card-openpgp.Tpo -c card-openpgp.c  -fPIC -DPIC -o .libs/libopensc_la-card-openpgp.o
card-openpgp.c:1164:7: error: passing arguments to a function without a prototype is deprecated in all versions of C and is not supported in C2x [-Werror,-Wdeprecated-non-prototype]
                func(blob);
                    ^
1 error generated.
gmake[4]: *** [Makefile:1728: libopensc_la-card-openpgp.lo] Error 1
Comment 1 Alex Dupre freebsd_committer freebsd_triage 2023-03-13 13:36:17 UTC
Can you check in my last commit fixed the error?
Comment 2 Kristof Provost freebsd_committer freebsd_triage 2023-07-05 16:36:29 UTC
(In reply to Alex Dupre from comment #1)
I'm still seeing a build failure:

libtool: link: cc -I/usr/include -Wall -Wextra -Wno-unused-parameter -Werror -Wstrict-aliasing=2 -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -fstack-protector-strong -o .libs/pkcs11-tool pkcs11_tool-pkcs11-tool.o pkcs11_tool-util.o  ../../src/common/.libs/libpkcs11.a -L/usr/lib ../../src/libopensc/.libs/libopensc.so -L/usr/local/lib ../../src/common/.libs/libscdl.a ../../src/common/.libs/libcompat.a -lz -ldl -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lintl -lcrypto -pthread -Wl,-rpath -Wl,/usr/local/lib
ld: error: undefined symbol: d2i_KeyParams
>>> referenced by pkcs11-tool.c
>>>               pkcs11_tool-pkcs11-tool.o:(read_object)
cc: error: linker command failed with exit code 1 (use -v to see invocation)
gmake[5]: *** [Makefile:971: pkcs11-tool] Error 1

Because we're OpenSSL 3 now it's trying to use d2i_KeyParams() rather than d2i_ECParameters(), and from my initial digging it looks like we (i.e. freebsd-src) are not actually building the file that function lives in.
Comment 3 Kristof Provost freebsd_committer freebsd_triage 2023-07-05 21:53:15 UTC
(In reply to Kristof Provost from comment #2)
I'm test-building with this patch:

diff --git a/secure/lib/libcrypto/Makefile b/secure/lib/libcrypto/Makefile
index 28258e796984..ef5652e8c27c 100644
--- a/secure/lib/libcrypto/Makefile
+++ b/secure/lib/libcrypto/Makefile
@@ -74,7 +74,7 @@ SRCS+=        n_pkey.c nsseq.c p5_pbe.c p5_pbev2.c p5_scrypt.c p8_pkey.c
 SRCS+= t_bitst.c t_pkey.c t_spki.c tasn_dec.c tasn_enc.c tasn_fre.c
 SRCS+= tasn_new.c tasn_prn.c tasn_scn.c tasn_typ.c tasn_utl.c x_algor.c
 SRCS+= x_bignum.c x_info.c x_int64.c x_long.c x_pkey.c x_sig.c x_spki.c
-SRCS+= x_val.c
+SRCS+= x_val.c d2i_param.c

 # async
 SRCS+= async.c async_err.c async_posix.c async_wait.c
diff --git a/secure/lib/libcrypto/Version.map b/secure/lib/libcrypto/Version.map
index 421819324961..74d0b8b3cef1 100644
--- a/secure/lib/libcrypto/Version.map
+++ b/secure/lib/libcrypto/Version.map
@@ -3564,6 +3564,8 @@ OPENSSL_1_1_0 {
         d2i_IPAddressOrRange;
         d2i_IPAddressRange;
         d2i_ISSUING_DIST_POINT;
+        d2i_KeyParams;
+        d2i_KeyParams_bio;
         d2i_NETSCAPE_CERT_SEQUENCE;
         d2i_NETSCAPE_SPKAC;
         d2i_NETSCAPE_SPKI;

and that appears to work. I'll poke the openssl-in-src people about this.
Comment 4 commit-hook freebsd_committer freebsd_triage 2023-07-09 16:19:00 UTC
A commit in branch main references this bug:

URL: https://cgit.FreeBSD.org/src/commit/?id=ebd508a0b2719e15575e8a2224f0730c4d37afec

commit ebd508a0b2719e15575e8a2224f0730c4d37afec
Author:     Kristof Provost <kp@FreeBSD.org>
AuthorDate: 2023-07-07 19:25:34 +0000
Commit:     Kristof Provost <kp@FreeBSD.org>
CommitDate: 2023-07-09 13:18:21 +0000

    openssl: include d2i_KeyParams() and d2i_KeyParams_bio()

    These functions are new, and some ports (e.g.opensc) expect to have them
    available. Add the file they're defined in to the build, and add them
    to Version.map.

    PR:             270076
    Reviewed by:    markj, emaste, pierre
    Fixes:  b077aed33b7b ("Merge OpenSSL 3.0.9")
    Sponsored by:   Rubicon Communications, LLC ("Netgate")
    Differential Revision:  https://reviews.freebsd.org/D40914

 secure/lib/libcrypto/Makefile    | 4 ++--
 secure/lib/libcrypto/Version.map | 2 ++
 2 files changed, 4 insertions(+), 2 deletions(-)