Bug 2265000

Summary: raco pkg install fails with: SSL not available; check `ssl-load-fail-reason'
Product: [Fedora] Fedora Reporter: Trevor Cook <trevor>
Component: racketAssignee: Jens Petersen <petersen>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: high Docs Contact:
Priority: unspecified    
Version: 39CC: petersen
Target Milestone: ---   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: racket-8.12-1.fc41 racket-8.12-2.fc39 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2024-06-02 03:37:03 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Trevor Cook 2024-02-19 21:32:34 UTC
The openssl module fails to load, giving an `ssl-load-fail-reason` of `ffi-lib: couldn't open "libcrypto.so" (libcrypto.so: cannot open shared object file: No such file or directory)`. This also has the effect of causing package installations through `raco` to fail with the following message:

"ssl-make-client-context: requested protocol not supported; SSL not available; check `ssl-load-fail-reason'"

Reproducible: Always

Steps to Reproduce:
1. Launch the racket REPL.
2. Enter (require openssl) into the REPL.
3. Type ssl-load-fail-reason into the REPL.
Actual Results:  
The REPL returns `"ffi-lib: couldn't open "libcrypto.so" (libcrypto.so: cannot open shared object file: No such file or directory)"`.

Expected Results:  
The module should load and ssl-load-fail-reason should not return a message.

Comment 1 Jens Petersen 2024-04-29 15:10:03 UTC
I just tried on an up-to-date F39 system and I can't reproduce actually.

racket-minimal-7.9-1.fc39.x86_64
openssl-3.1.1-4.fc39.x86_64

What package versions do you have?

Comment 2 Trevor Cook 2024-04-30 01:15:31 UTC
(In reply to Jens Petersen from comment #1)
> I just tried on an up-to-date F39 system and I can't reproduce actually.
> 
> racket-minimal-7.9-1.fc39.x86_64
> openssl-3.1.1-4.fc39.x86_64
> 
> What package versions do you have?

I can still reproduce on a fresh, fully-updated install of Fedora 39. I have the same package versions. I can also reproduce on Fedora 40.

Comment 3 Jens Petersen 2024-04-30 05:13:23 UTC
Could you please copy the exact full output you see in a terminal here? that would be helpful

eg this is what I am seeing:

fedora:~$ racket
bash: racket: command not found...
Install package 'racket-minimal' to provide command 'racket'? [N/y] y

 * Waiting in queue... 
 * Loading list of packages.... 
The following packages have to be installed:
 racket-collects-7.9-1.fc40.noarch	Racket's core collections libraries
 racket-minimal-7.9-1.fc40.x86_64	A minimal Racket installation
Proceed with changes? [N/y] y

 * Waiting in queue... 
 * Waiting for authentication... 
 * Waiting in queue... 
 * Downloading packages... 
 * Requesting data... 
 * Testing changes... 
 * Installing packages... 
Welcome to Racket v7.9 [bc].
> (require openssl)
> 

So I don't know how to reproduce.

Could it be something related with the openssl for your system?

Comment 4 Jens Petersen 2024-04-30 05:15:40 UTC
Oh, I can reproduce with raco but not in the repl (perhaps your repl env is different?)

fedora:~$ raco pkg install pandoc
Resolving "pandoc" via https://download.racket-lang.org/releases/7.9/catalog/
ssl-make-client-context: requested protocol not supported;
 SSL not available; check `ssl-load-fail-reason'
  requested: 'auto
  context...:
   /usr/share/racket/collects/openssl/mzssl.rkt:717:0: make-raw-context
   /usr/share/racket/collects/openssl/mzssl.rkt:734:0: ssl-make-client-context
   /usr/share/racket/collects/openssl/mzssl.rkt:1031:0: ssl-secure-client-context
   /usr/share/racket/collects/openssl/mzssl.rkt:586:18
   /usr/share/racket/collects/racket/private/more-scheme.rkt:266:2: call-with-exception-handler
   /usr/share/racket/collects/openssl/mzssl.rkt:1520:0: wrap-ports
   /usr/share/racket/collects/net/http-client.rkt:67:0: http-conn-open!
   /usr/share/racket/collects/net/http-client.rkt:274:0
   /usr/share/racket/collects/racket/contract/private/arrow-val-first.rkt:555:3
   /usr/share/racket/collects/net/url.rkt:201:0: http://getpost-impure-port
   /usr/share/racket/collects/net/url.rkt:309:2: redirection-loop
   /usr/share/racket/collects/racket/contract/private/arrow-val-first.rkt:555:3
   /usr/share/racket/collects/pkg/private/network.rkt:59:3
   /usr/share/racket/collects/pkg/private/catalog.rkt:218:0: read-from-server
   /usr/share/racket/collects/pkg/private/catalog.rkt:138:9: for-loop
   /usr/share/racket/collects/pkg/private/catalog.rkt:135:2: lookup-normally
   ...

Hmm

Comment 5 Jens Petersen 2024-04-30 05:20:17 UTC
I just built racket-8.12 for Rawhide - the version 7.9 in current releases is very old...
Maybe racket 7 does not support openssl v3?

So this might be sufficient reason to backport 8.12 to F40 and possibly earlier releases even.

I can reproduce the raco problem even for epel9 :-(

Comment 6 Trevor Cook 2024-04-30 06:14:56 UTC
(In reply to Jens Petersen from comment #3)
> Could you please copy the exact full output you see in a terminal here? that
> would be helpful
> 
> eg this is what I am seeing:
> 
> fedora:~$ racket
> bash: racket: command not found...
> Install package 'racket-minimal' to provide command 'racket'? [N/y] y
> 
>  * Waiting in queue... 
>  * Loading list of packages.... 
> The following packages have to be installed:
>  racket-collects-7.9-1.fc40.noarch	Racket's core collections libraries
>  racket-minimal-7.9-1.fc40.x86_64	A minimal Racket installation
> Proceed with changes? [N/y] y
> 
>  * Waiting in queue... 
>  * Waiting for authentication... 
>  * Waiting in queue... 
>  * Downloading packages... 
>  * Requesting data... 
>  * Testing changes... 
>  * Installing packages... 
> Welcome to Racket v7.9 [bc].
> > (require openssl)
> > 
> 
> So I don't know how to reproduce.
> 
> Could it be something related with the openssl for your system?

(require openssl) will not produce any output. Afterwards you have to enter "ssl-load-fail-reason" to see the failure. The raco failure you saw is how I first found the problem.

Comment 7 Jens Petersen 2024-04-30 06:23:31 UTC
Okay you are right - when I tested yesterday I got '#f' for ssl-load-fail-reason, but I see it now in my F40 VM.
I guess I had openssl-devel installed where I had tested. ;-)

So that is the workaround: install openssl-devel, which provides libcrypto.so .
I will add it as a Requires.

Thanks for reporting and nice bug number btw. :-)

Comment 8 Jens Petersen 2024-04-30 06:41:08 UTC
(Though I also feel it is kind of an upstream bug that openssl-devel is needed.)

Comment 9 Jens Petersen 2024-04-30 06:42:34 UTC
(In reply to Jens Petersen from comment #8)
> (Though I also feel it is kind of an upstream bug that openssl-devel is
> needed.)

Looks fixed in racket 8.12 at least.

Comment 10 Fedora Update System 2024-05-27 07:55:05 UTC
FEDORA-2024-1c898aa44f (racket-8.12-2.fc39) has been submitted as an update to Fedora 39.
https://bodhi.fedoraproject.org/updates/FEDORA-2024-1c898aa44f

Comment 11 Fedora Update System 2024-06-02 03:37:03 UTC
FEDORA-2024-1c898aa44f (racket-8.12-2.fc39) has been pushed to the Fedora 39 stable repository.
If problem still persists, please make note of it in this bug report.