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 `_. libxml2 libxslt1.1 ------------------ There is a thorough analysis of native dependencies in `PR207 `_.