| Allegro CL version 10.1 Significant update since the initial 10.1 release. 10.0 version |
Initially :unset
. The purpose of this variable is
to tell Allegro CL the names of the SSL system libraries. (These names
are not fully standardized.) If the value of this variable
is :unset
and the associated environment
variable ACL_SSL_LIBRARY_NAMES
does not have a
value, when the :ssl
module is loaded, Allegro CL
will determine the version of SSL on the host machine and make
reasonable guesses about the associated system library names. You need
set this variable (or the associated environment variable) only if
loading the :ssl
module with them unset does not
work.
If you do need to specify library names because the defaults do not
work or because Allegro CL is not loading the version of SSL that you
want, you can, as we describe, set this variable or
the ACL_SSL_LIBRARY_NAMES
environment variable to
specify the desired system libraries to load. You should also set the
variable *aclssl-version*
or its associated environment
variable, as we also describe below.
This variable tells the system exactly which system libraries should
be loaded and it allows you to specify several possible values in case
different machines use different library names. You can set the value
of the variable or you can set the environment
variable ACL_SSL_LIBRARY_NAMES
. If the variable has
value :unset
and the environment variable is set,
the variable value will be set from the environment variable value.
If you set the value of the variable directly, the value must be a
list of two entries, each a string or a list of strings (on Windows,
each should be just a string). When both are strings, the entries are the
names of the two OpenSSL shared libraries that must be loaded in order
to enable the :ssl
module. Each string is a file
name with a full type suffix but no directory pathname.
When an entry is a list (UNIX only), the entries in the sublist should
again be filenames with full type suffixes but no directory pathnames.
When the
:ssl
module is loaded, the names in the list are
tried in order until one denotes a library that loads without error.
Here is an example from Linux using two lists (note: these library names are examples only and are not recommended values):
cl-user(4): *ssl-library-names* (("libcrypto.so.1.0.0" "libcrypto.so.10" "libcrypto.so") ("libssl.so.1.0.0" "libssl.so.10" "libssl.so")) cl-user(5):
If the value of *ssl-library-names*
is :unset
when the :ssl
module
is loaded and the environment
variable ACL_SSL_LIBRARY_NAMES
has a value, that
value is read and the value of *ssl-library-names*
is set to it. Here is an
example setting ACL_SSL_LIBRARY_NAMES
(again, the
values are examples and not suggestions):
% setenv ACL_SSL_LIBRARY_NAMES "libcrypto.so.10 libssl.so.10"
That value causes the value of *ssl-library-names*
to become
cl-user(6): *ssl-library-names* ("libcrypto.so.10" "libssl.so.10") cl-user(7):
Thus *ssl-library-names*
becomes a list of two
strings. It is not possible to
set ACL_SSL_LIBRARY_NAMES
to a value which
causes *ssl-library-names*
to have sublists as
elements so there are no choices of system libraries to load. We
presume if you are setting the environment variable, you know which
two libraries to specify.
If *ssl-library-names*
has a value other than :unset
or
ACL_SSL_LIBRARY_NAMES
has a value, then either
variable *aclssl-name*
should also be given a non-nil
value or the
appropriate environment variable, ACL_ACLSSL_NAME
(for 8-bit Lisps) or ACL_ACLISSL_NAME
(for 16-bit
Lisps), should be given a value. See *aclssl-name*
for a list of suitable values.
That tells Allegro CL which Allegro CL shared library to load. (It
cannot be reliably determined which release of SSL is being loaded
just from the library names.) If *aclssl-name*
is nil
and the associated environment variables are unset, Allegro CL assumes
SSL 1.0 is being loaded and loads the appropriate Allegro CL SSL 1.0
library for its character size (8 bit or 16 bit). Warning: if
you are using OpenSSL 1.1 and either aclssl
or aclissl
(the SSL 1.0 libraries) is loaded, there
will likely be errors later which are difficult to understand.
If *ssl-library-names*
is :unset
and
the ACL_SSL_LIBRARY_NAMES
environment variable is
unset, the OpenSSL version is determined by other means (see
*aclssl-version*
) and
that information is sufficient to determing the correct Allegro CL
library to load (since Lisp konws the OpenSSL version and its own
character size) and for reasonable guesses to be made as to system
library names. The system sets *ssl-library-names*
to these reasonable
guesses. As said at the beginning, this often works.
When the :ssl
module is loaded, the filenames
specified by *ssl-library-names*
(whether set by the user,
set from the ACL_SSL_LIBRARY_NAMES
environment
variable, or set by the system) will be looked for as the names of the
OpenSSL libraries. If they are not found (searching directories
specified by LD_LIBRARY_PATH
on UNIX
machines, PATH
on Windows,
and DYLD_LIBRARY_PATH
on Macs) loading of
the :ssl
module will fail. If that happens, you
must determine the SSL version and the names of the relevant system
libraries and set *ssl-library-names*
or ACL_SSL_LIBRARY_NAMES
,
and *aclssl-version*
and try again.
OpenSLL is described in The Allegro CL SSL API in socket.htm.
Copyright (c) 1998-2022, Franz Inc. Lafayette, CA., USA. All rights reserved.
This page was not revised from the 10.0 page.
Created 2019.8.20.
| Allegro CL version 10.1 Significant update since the initial 10.1 release. 10.0 version |