[Bug 257658] lang/crystal: 1.1.1 fails to detect openssl version

From: <bugzilla-noreply_at_freebsd.org>
Date: Fri, 06 Aug 2021 14:08:15 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=257658

            Bug ID: 257658
           Summary: lang/crystal: 1.1.1 fails to detect openssl version
           Product: Ports & Packages
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Some People
          Priority: ---
         Component: Individual Port(s)
          Assignee: ports-bugs@FreeBSD.org
          Reporter: mandree@FreeBSD.org
                CC: dch@freebsd.org, greg@unrelenting.technology
             Flags: maintainer-feedback?(greg@unrelenting.technology)
                CC: greg@unrelenting.technology

lang/crystal's openssl integration is unable to work with OpenSSL providers
that do not provide a pkg-config.

Trigger:
compile avalanchemq from https://reviews.freebsd.org/D31410 and see linker
errors that look like the OpenSSL module is expecting an ancient OpenSSL API,
not 1.1.1's.

Debugging this with dch on IRC, I find this on FreeBSD 13.0:

1. Crystal's openssl modules, through
/usr/local/lib/crystal/openssl/lib_ssl.cr, tries to derive the OpenSSL version
like so:
    {% ssl_version = `hash pkg-config 2> /dev/null && pkg-config
--silence-errors --modversion libssl || printf %s
0.0.0`.split.last.gsub(/[^0-9.]/, "") %}

Now, FreeBSD's base OpenSSL does not provide the typical libssl.pc,
libcrypto.pc or openssl.pc files, so this line comes up with version 0.0.0 as a
fallback.

This however causes the Crystal OpenSSL code to use an old OpenSSL API version
which expects all sorts of outdated symbols from the libraries, which 1.1.1 no
longer provides.

I am unaware of the Crystal language, so I cannot provide a fix.

Please patch Crystal in a way that it properly detects the OpenSSL version
(1.1.1k as of 13.0-RELEASE) and uses the right API.

-- 
You are receiving this mail because:
You are the assignee for the bug.