Installation Quirks
cairo and pango
djaodjin-extended-templates requires WeasyPrint to print PDF of charge receipts from an HTML template.
As a result both cairo and pango must be present on the Operating System.
Debian-based distributions:
$ apt-get install libcairo2 libpangoft2-1.0-0
Note that the djaoapp Docker image is based on an official Python Docker image, which in turn is based on a Debian Docker image. As a result, you can find the exact commands to install on a Debian-based distribution in the Dockerfile.
RedHat-based distributions:
$ yum install cairo pango $ pango-view –version pango-view (pango) 1.42.3
Amazon Linux 2 (as of 2023-08-21) comes with pango 1.42 while WeasyPrint 53 requires at least Pango 1.44. That is the main reason why weasyprint is pinned to version 52.5.
Mac OSX:
$ brew install python3 cairo pango
You will want to use the python3 install from brew as recommended on StackOverflow to avoid going down a rabit hole.
xmlsec1 and openldap
djaodjin-signup requires transitively xmlsec1 and openldap native libraries to implement SAML and LDAP identification respectively.
The SAML implementation depends on python-saml
which transitively depends
on xmlsec1
native libraries through xmlsec
bindings. xmlsec1
itself
depends on openssl
.
On some distributions (ex: AWS Linux 2), the xmlsec1
rpm package is built
against OpenSSL 1.0 and thus depends on openssl
. Python3.11 is built
against OpenSSL 1.1 (minimum). openssl11
is available on AWS Linux 2
but there is conflict when you try to install both openssl
and
openssl11
.
Installing xmlsec1 (here xmlsec1-1.3.0.tar.gz
) from source is a bit tricky.
Somehow it requires libgcrypt
on the system we run tests with. That required
to install both libgpg-error
and libgcrypt
from source. Looking through
libgcrypt
rpm spec file we can find the following comment:
# The original libgcrypt sources now contain potentially patented ECC
Installing python-xmlsec
when xmlsec1
was compiled from source
and installed in /usr/local``can be tricky. Typically it requires to
export ``PKG_CONFIG_PATH
to the shell environment beforehand as in:
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
The LDAP authentication backend requires python-ldap
which transitively
depends on openldap native libraries.