Subject: [pgAdmin4][Patch] Remake Docker container packaging

From: Максим Кольцов <[email-masked]>
Date: Sat, 31 Mar 2018 20:49:49 +0300

Hi all,

I've been discussing this with Dave for about a month now. Today I
finally present a proposed patch to update pgadmin4's Docker
packaging.

Key features of this update:
- Main image is based on python:3.6-alpine3.7.
  Using Alpine linux leads to much smaller image
- All build is done with Docker multi-stage build. First of all build
the frontend in node:6 image,
  then build Sphinx documentation in separate Python container and in
the end just install all
  dependencies in a clean python:3.6-alpine3.7 image, so that it does
not have any leftovers from the build
  process and we don't rely on any tools available on the host.
- Use Gunicorn (http://gunicorn.org) as lightweight HTTP / WSGI server.
  Gunicorn supports both HTTP and HTTPS.
- Install Alpine postgresql-client package, which includes pg_dump and
other tools and config
  PgAdmin to find these tools by default
- Byte-compile all PgAdmin Python code in Dockerfile with optimization
(-O) enabled. This way Python
   does not have to compile modules on each container restart and
consume space in overlay fs

Please find attached patch from "git format-patch".
From 67e387525a7c832958858c7ec1a1b7076382090e Mon Sep 17 00:00:00 2001
From: Maxim Koltsov <[email-masked]>
Date: Sat, 31 Mar 2018 20:37:51 +0300
Subject: [PATCH] Re-make Docker container packaging

Key features of this update:
- Main image is based on python:3.6-alpine3.7.
  Using Alpine linux leads to much smaller image
- All build is done with Docker multi-stage build. First of all build the frontend in node:6 image,
  then build Sphinx documentation in separate Python container and in the end just install all
  dependencies in a clean python:3.6-alpine3.7 image, so that it does not have any leftovers from the build
  process and we don't rely on any tools available on the host.
- Use Gunicorn (http://gunicorn.org) as lightweight HTTP / WSGI server.
  Gunicorn supports both HTTP and HTTPS.
- Install Alpine postgresql-client package, which includes pg_dump and other tools and config
  PgAdmin to find these tools by default
- Byte-compile all PgAdmin Python code in Dockerfile with optimization (-O) enabled. This way Python
  does not have to compile modules on each container restart and consume space in overlay fs
---
 pkg/docker/Dockerfile       | 89 ++++++++++++++++++++++++---------------------
 pkg/docker/README           | 58 ++++++++++++++---------------
 pkg/docker/build.sh         | 57 +++++------------------------
 pkg/docker/config_distro.py |  4 ++
 pkg/docker/entry.sh         | 29 ---------------
 pkg/docker/entrypoint.sh    | 21 +++++++++++
 pkg/docker/pgadmin4.conf.j2 | 43 ----------------------
 pkg/docker/run_pgadmin.py   |  4 ++
 8 files changed, 112 insertions(+), 193 deletions(-)
 create mode 100644 pkg/docker/config_distro.py
 delete mode 100644 pkg/docker/entry.sh
 create mode 100755 pkg/docker/entrypoint.sh
 delete mode 100644 pkg/docker/pgadmin4.conf.j2
 create mode 100644 pkg/docker/run_pgadmin.py

diff --git a/pkg/docker/Dockerfile b/pkg/docker/Dockerfile
index 1c1dde27..083dbd60 100644
--- a/pkg/docker/Dockerfile
+++ b/pkg/docker/Dockerfile
@@ -7,58 +7,63 @@
 #
 #########################################################################
 
-# Get the basics out of the way
-FROM centos:latest
+# First of all, build frontend with NodeJS in a separate builder container
+# Node-6 with ABI v48 is supported by all needed C++ packages
+FROM node:6 AS node-builder
 
-LABEL name="pgAdmin 4" \
-    vendor="The pgAdmin Development Team" \
-    license="PostgreSQL"
+COPY ./pgadmin4/web/ /pgadmin4/web/
+WORKDIR /pgadmin4/web
 
-# We only need the web/ directory, and a few other things
-COPY web /var/www/pgadmin
-COPY requirements.txt /var/www/pgadmin
+RUN yarn install --cache-folder ./ycache --verbose && \
+    yarn run bundle && \
+    rm -rf ./ycache ./pgadmin/static/js/generated/.cache
 
-# Install everything we need. Use easy_install to get pip, to avoid setting up EPEL
-RUN yum install -y python-setuptools python-devel httpd mod_wsgi mod_ssl gcc
-RUN easy_install pip
-RUN pip install j2cli
+# Build Sphinx documentation in separate container
+FROM python:3.6-alpine3.7 as docs-builder
 
-# Now install the Python runtime dependencies
-RUN pip install -r /var/www/pgadmin/requirements.txt
+# Install only dependencies absolutely required for documentation building
+RUN apk add --no-cache make
+RUN pip install --no-cache-dir \
+    sphinx flask_babel flask_security flask_paranoid python-dateutil flask_sqlalchemy \
+    flask_gravatar simplejson
 
-# Create required directories for config
+COPY ./pgadmin4/ /pgadmin4
 
+RUN LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 make -C /pgadmin4/docs/en_US -f Makefile.sphinx html
 
-# Create required directories for running
-RUN mkdir -p /var/log/pgadmin
-RUN chown -R apache /var/log/pgadmin
-RUN mkdir -p /var/lib/pgadmin
-RUN chown -R apache /var/lib/pgadmin
-RUN mkdir -p /certs
-RUN chown -R apache /certs
-RUN chmod 700 /certs
+# Then install backend, copy static files and set up entrypoint
+# Need alpine3.7 to get pg_dump and friends in postgresql-client package
+FROM python:3.6-alpine3.7
 
-# Push logs to the container's output streams
-RUN ln -sf /proc/self/fd/1 /var/log/httpd/access_log && \
-    ln -sf /proc/self/fd/1 /var/log/httpd/ssl_access_log && \
-    ln -sf /proc/self/fd/2 /var/log/httpd/error_log && \
-    ln -sf /proc/self/fd/2 /var/log/httpd/ssl_error_log
+RUN pip --no-cache-dir install gunicorn
+RUN apk add --no-cache postgresql-client postgresql-libs
 
-# Apache config time
-RUN mkdir -p /templates
-COPY pgadmin4.conf.j2 /templates/
-COPY entry.sh /
+# Install build-dependencies, build & install C extensions and purge deps in one RUN step
+# so that deps do not increase the size of resulting image by remaining in layers
+RUN set -ex && \
+    apk add --no-cache --virtual build-deps build-base postgresql-dev && \
+    pip install --no-cache-dir psycopg2 pycrypto && \
+    apk del --no-cache build-deps
 
-# Finally, remove packages we only needed for building
-RUN yum -y remove gcc cpp glibc-devel glibc-headers kernel-headers libgomp libmpc mpfr
+COPY --from=node-builder /pgadmin4/web/pgadmin/static/js/generated/ /pgadmin4/pgadmin/static/js/generated/
+COPY --from=docs-builder /pgadmin4/docs/en_US/_build/html/ /pgadmin4/docs/
 
-# Default config options
-ENV PGADMIN_DEFAULT_EMAIL [email-masked]
-ENV PGADMIN_DEFAULT_PASSWORD Conta1ner
-ENV PGADMIN_ENABLE_TLS False
-ENV PGADMIN_SERVER_NAME pgadmin4
+COPY ./pgadmin4/web /pgadmin4
+COPY ./pgadmin4/requirements.txt /pgadmin4
+COPY ./run_pgadmin.py /pgadmin4
+COPY ./config_distro.py /pgadmin4
 
-EXPOSE 80 443
+WORKDIR /pgadmin4
+ENV PYTHONPATH=/pgadmin4
 
-# Start the service
-ENTRYPOINT ["/bin/bash", "/entry.sh"]
+RUN pip install --no-cache-dir -r requirements.txt
+
+# Precompile and optimize python code to save time and space on startup
+RUN python -O -m compileall /pgadmin4
+
+COPY ./entrypoint.sh /entrypoint.sh
+
+VOLUME /var/lib/pgadmin
+EXPOSE 8080 8443
+
+ENTRYPOINT ["/entrypoint.sh"]
diff --git a/pkg/docker/README b/pkg/docker/README
index b2d9595e..9fed51c9 100644
--- a/pkg/docker/README
+++ b/pkg/docker/README
@@ -4,14 +4,16 @@ Building
 ========
 
 Whilst you can just use the Dockerfile directly, it requires that various pre-configuration steps are performed, for
-example, the pgAdmin web code must be copied to ./web and yarn install/yarn run bundle must be executed.
-requirements.txt is also expected to be in this directory, and the pre-built docs must be in web/docs.
+example, the pgAdmin web code must be copied to `./web`, Sphinx documentation source must be copied to `./docs`
+and `requirements.txt` is also expected to be in this directory.
 
 The recommended (and easy) way to build the container is to do:
 
+```console
 cd $PGADMIN_SRC/
 workon pgadmin-venv
 make docker
+```
 
 This will call the build script $PGADMIN_SRC/pkg/docker/build.sh which will prepare a staging directory containing all
 the required files, then build the container and push it to your repo.
@@ -21,57 +23,51 @@ Running
 
 The container will accept the following variables at startup:
 
-PGADMIN_DEFAULT_EMAIL
----------------------
-
-Default: [email-masked])
+PGADMIN_SETUP_EMAIL
+-------------------
 
 This is the email address used when setting up the initial administrator account to login to pgAdmin.
 
-PGADMIN_DEFAULT_PASSWORD
-------------------------
-
-Default: Conta1ner
+PGADMIN_SETUP_PASSWORD
+----------------------
 
 This is the password used when setting up the initial administrator account to login to pgAdmin.
 
 PGADMIN_ENABLE_TLS
 ------------------
 
-Default: False
+Default: unset
 
-If set to the default, False, the container will listen on port 80 for connections in plain text. If set to True, the
-container will listen on port 443 for TLS connections.
+If not set, the container will listen on port 8080 for connections in insecure HTTP protocol.
+If set to any value, the container will listen on port 8443 for TLS connections.
 
-When TLS is enabled, a certificate and key must be provided. Typically these should be stored on the host file system
-and mounted from the container. The expected paths are /certs/server.crt and /certs/server.key
+When TLS is enabled, a certificate and key must be provided.
+Typically these should be stored on the host file system and mounted from the container.
+The expected paths are `/certs/server.crt` and `/certs/server.key`.
 
-PGADMIN_SERVER_NAME
--------------------
-
-Default: pgadmin4
-
-This variable allows you to specify the value used for the Apache HTTPD ServerName directive. This is commonly used to
-ensure the CN of the TLS certificate matches what the server expects.
+You need to explicitly map these ports with `-p` option to some port at your machine.
 
 Examples
 ========
 
 Run a simple container over port 80:
 
-docker run -p 80:80 \
-           -e "PGADMIN_DEFAULT_EMAIL=[email-masked]" \
-           -e "PGADMIN_DEFAULT_PASSWORD=SuperSecret" \
+```console
+docker run -p 80:8080 \
+           -e "PGADMIN_SETUP_EMAIL=[email-masked]" \
+           -e "PGADMIN_SETUP_PASSWORD=SuperSecret" \
            -d pgadmin4
+```
 
 Run a TLS secured container using a shared config/storage directory in /private/var/lib/pgadmin on the host:
 
-docker run -p 443:443 \
+```console
+docker run -p 443:8443 \
            -v "/private/var/lib/pgadmin:/var/lib/pgadmin" \
            -v "/path/to/certificate.cert:/certs/server.cert" \
            -v "/path/to/certificate.key:/certs/server.key" \
-           -e "PGADMIN_DEFAULT_EMAIL=[email-masked]" \
-           -e "PGADMIN_DEFAULT_PASSWORD=SuperSecret" \
-           -e "PGADMIN_ENABLE_TLS=True" \
-           -e "PGADMIN_SERVER_NAME=pgadmin.domain.com" \
-           -d pgadmin4
\ No newline at end of file
+           -e "PGADMIN_SETUP_EMAIL=[email-masked]" \
+           -e "PGADMIN_SETUP_PASSWORD=SuperSecret" \
+           -e "PGADMIN_ENABLE_TLS=1" \
+           -d pgadmin4
+```
diff --git a/pkg/docker/build.sh b/pkg/docker/build.sh
index 373c99b7..1dda3ca2 100755
--- a/pkg/docker/build.sh
+++ b/pkg/docker/build.sh
@@ -41,60 +41,21 @@ if [ -d docker-build ]; then
     rm -rf docker-build
 fi
 
-mkdir docker-build
-
-# Create the output directory if not present
-if [ ! -d dist ]; then
-    mkdir dist
-fi
+mkdir -p docker-build/pgadmin4
 
 # Build the clean tree
-for FILE in `git ls-files web`
-do
-    echo Adding $FILE
-    # We use tar here to preserve the path, as Mac (for example) doesn't support cp --parents
-    tar cf - $FILE | (cd docker-build; tar xf -)
-done
-
-pushd web
-    yarn install
-    yarn run bundle
-
-    rm -rf pgadmin/static/js/generated/.cache
-
-    for FILE in `ls -d pgadmin/static/js/generated/*`
-    do
-        echo Adding $FILE
-        tar cf - $FILE | (cd ../docker-build/web; tar xf -)
-    done
-popd
-
-# Build the docs
-if [ -d docs/en_US/_build/html ]; then
-    rm -rf docs/en_US/_build/html
-fi
-
-LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 make -C docs/en_US -f Makefile.sphinx html
-
-mkdir docker-build/web/docs
-cp -R docs/en_US/_build/html/* docker-build/web/docs/
-
-# Configure pgAdmin
-echo "HELP_PATH = '../../docs/'" >> docker-build/web/config_distro.py
-echo "DEFAULT_BINARY_PATHS = {" >> docker-build/web/config_distro.py
-echo "    'pg':   ''," >> docker-build/web/config_distro.py
-echo "    'ppas': ''," >> docker-build/web/config_distro.py
-echo "    'gpdb': ''" >> docker-build/web/config_distro.py
-echo "}" >> docker-build/web/config_distro.py
+echo Copying source tree...
+git archive HEAD -- docs web requirements.txt | tar xvf - -C docker-build/pgadmin4
 
 # Copy the Docker specific assets into place
-cp pkg/docker/Dockerfile docker-build/
-cp pkg/docker/entry.sh docker-build/
-cp pkg/docker/pgadmin4.conf.j2 docker-build/
-cp requirements.txt docker-build/
+cp pkg/docker/Dockerfile \
+    pkg/docker/entrypoint.sh \
+    pkg/docker/config_distro.py \
+    pkg/docker/run_pgadmin.py \
+    docker-build/
 
 # Build the container
 docker build docker-build -t $CONTAINER_NAME \
                           -t $CONTAINER_NAME:latest \
                           -t $CONTAINER_NAME:$APP_RELEASE \
-                          -t $CONTAINER_NAME:$APP_LONG_VERSION
\ No newline at end of file
+                          -t $CONTAINER_NAME:$APP_LONG_VERSION
diff --git a/pkg/docker/config_distro.py b/pkg/docker/config_distro.py
new file mode 100644
index 00000000..71ad3c74
--- /dev/null
+++ b/pkg/docker/config_distro.py
@@ -0,0 +1,4 @@
+HELP_PATH = '../../docs'
+DEFAULT_BINARY_PATHS = {
+        'pg': '/usr/bin'
+}
diff --git a/pkg/docker/entry.sh b/pkg/docker/entry.sh
deleted file mode 100644
index b6ba42e9..00000000
--- a/pkg/docker/entry.sh
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/usr/bin/env bash
-
-########################################################################
-#
-# pgAdmin 4 - PostgreSQL Tools
-#
-# Copyright (C) 2013 - 2018, The pgAdmin Development Team
-# This software is released under the PostgreSQL Licence
-#
-#########################################################################
-
-export PGADMIN_SETUP_EMAIL=${PGADMIN_DEFAULT_EMAIL}
-export PGADMIN_SETUP_PASSWORD=${PGADMIN_DEFAULT_PASSWORD}
-
-if [ ${PGADMIN_ENABLE_TLS} != "True" ]; then
-    if [ -f /etc/httpd/conf.d/ssl.conf ]; then
-        mv /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf.disabled
-    fi
-else
-    if [ -f /etc/httpd/conf.d/ssl.conf.disabled ]; then
-        mv /etc/httpd/conf.d/ssl.conf.disabled /etc/httpd/conf.d/ssl.conf
-    fi
-fi
-
-j2 /templates/pgadmin4.conf.j2 > /etc/httpd/conf.d/pgadmin4.conf
-
-rm -f /run/httpd/httpd.pid
-
-/usr/sbin/httpd -D FOREGROUND
diff --git a/pkg/docker/entrypoint.sh b/pkg/docker/entrypoint.sh
new file mode 100755
index 00000000..09fa3ab0
--- /dev/null
+++ b/pkg/docker/entrypoint.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+if [ ! -f /var/lib/pgadmin/pgadmin4.db ]; then
+    if [ -z "${PGADMIN_SETUP_EMAIL}" -o -z "${PGADMIN_SETUP_PASSWORD}" ]; then
+        echo 'You need to specify PGADMIN_SETUP_EMAIL and PGADMIN_SETUP_PASSWORD environment variables'
+        exit 1
+    fi
+
+    # Initialize DB before starting Gunicorn
+    # Importing pgadmin4 (from this script) is enough
+    python run_pgadmin.py
+fi
+
+# NOTE: currently pgadmin can run only with 1 worker due to sessions implementation
+# Using --threads to have multi-threaded single-process worker
+
+if [ ! -z ${PGADMIN_ENABLE_TLS} ]; then
+    exec gunicorn --bind 0.0.0.0:8443 -w 1 --threads ${GUNICORN_THREADS:-25} --access-logfile - --keyfile /certs/server.key --certfile /certs/server.cert run_pgadmin:app
+else
+    exec gunicorn --bind 0.0.0.0:8080 -w 1 --threads ${GUNICORN_THREADS:-25} --access-logfile - run_pgadmin:app
+fi
diff --git a/pkg/docker/pgadmin4.conf.j2 b/pkg/docker/pgadmin4.conf.j2
deleted file mode 100644
index d44de2d5..00000000
--- a/pkg/docker/pgadmin4.conf.j2
+++ /dev/null
@@ -1,43 +0,0 @@
-########################################################################
-#
-# pgAdmin 4 - PostgreSQL Tools
-#
-# Copyright (C) 2013 - 2018, The pgAdmin Development Team
-# This software is released under the PostgreSQL Licence
-#
-#########################################################################
-
-ServerName {{ PGADMIN_SERVER_NAME }}
-{% if PGADMIN_ENABLE_TLS|default('False') == 'True' %}
-LoadModule ssl_module modules/mod_ssl.so
-
-<VirtualHost *:443>
-    SSLEngine on
-    SSLCipherSuite HIGH:!aNULL:!MD5
-    SSLCertificateFile "/certs/server.cert"
-    SSLCertificateKeyFile "/certs/server.key"
-
-    ServerName {{ PGADMIN_SERVER_NAME }}
-    WSGIDaemonProcess pgadmin processes=1 threads=25
-    WSGIScriptAlias / /var/www/pgadmin/pgAdmin4.wsgi
-
-    <Directory /var/www/pgadmin>
-        WSGIProcessGroup pgadmin
-        WSGIApplicationGroup %{GLOBAL}
-        Order deny,allow
-        Allow from all
-    </Directory>
-</VirtualHost>
-{% else %}
-<VirtualHost *:80>
-    WSGIDaemonProcess pgadmin processes=1 threads=25
-    WSGIScriptAlias / /var/www/pgadmin/pgAdmin4.wsgi
-
-    <Directory /var/www/pgadmin>
-        WSGIProcessGroup pgadmin
-        WSGIApplicationGroup %{GLOBAL}
-        Order deny,allow
-        Allow from all
-    </Directory>
-</VirtualHost>
-{% endif %}
\ No newline at end of file
diff --git a/pkg/docker/run_pgadmin.py b/pkg/docker/run_pgadmin.py
new file mode 100644
index 00000000..48b17735
--- /dev/null
+++ b/pkg/docker/run_pgadmin.py
@@ -0,0 +1,4 @@
+import builtins
+builtins.SERVER_MODE = True
+
+from pgAdmin4 import app
-- 
2.16.2

---

From: Murtuza Zabuawala <[email-masked]>
Date: Mon, 2 Apr 2018 10:24:36 +0530

Hello,

I tested the patch and it is working fine.

- I had clean system before but after running DockerBuild, I can see 3
different images of pgAdmin4, Is this expected?

- We can remove /tests/ folder from each folders, we can also remove
/web/regression/ folder from the container, they are used to run tests.
We don't require them on production code.

- Can we make the ports configurable?
https://redmine.postgresql.org/issues/2997

- Allow user to choose whether to run it as Single user mode(SERVER_MODE =
False) or Multiuser mode(SERVER_MODE = True)

--
Regards,
Murtuza Zabuawala
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

---

From: Максим Кольцов <[email-masked]>
Date: Mon, 02 Apr 2018 06:40:36 +0000

> different images of pgAdmin4, Is this expected?
Yes, this is expected and is the same for old docker image. Two unnamed
images are temporary images from build process and can be safely removed,
if you don't want cache for next builds.

> We don't require them on production code.
Sounds reasonable. In fact, I believe I did that when making a prototype,
but forgot to replicate in this patch. Will do.

> https://redmine.postgresql.org/issues/2997
This is certainly doable. Please note, by the way, that pgadmin is now
started on port 8080 or 8443 by default.

---

From: Максим Кольцов <[email-masked]>
Date: Wed, 4 Apr 2018 11:46:07 +0300

I've updated patch. Now I drop tests and regressions.

And I added new env var: PGADMIN_LISTEN_PORT. Default value is 8080 for
http and 8443 for https mode.

Please review.

2018-04-02 9:40 GMT+03:00 Максим Кольцов <[email-masked]>:

>
>
> пн, 2 апр. 2018 г., 7:54 Murtuza Zabuawala <murtuza.zabuawala@
> enterprisedb.com>:
>
>> Hello,
>>
From b53a30bdb4030a62c9c040c667c9c399dc07c0f1 Mon Sep 17 00:00:00 2001
From: Maxim Koltsov <[email-masked]>
Date: Sat, 31 Mar 2018 20:37:51 +0300
Subject: [PATCH] Re-make Docker container packaging

 pkg/docker/.dockerignore    |  2 +
 pkg/docker/build.sh         | 58 +++++------------------------
 9 files changed, 115 insertions(+), 193 deletions(-)
 create mode 100644 pkg/docker/.dockerignore

diff --git a/pkg/docker/.dockerignore b/pkg/docker/.dockerignore
new file mode 100644
index 00000000..1b7ed264
--- /dev/null
+++ b/pkg/docker/.dockerignore
@@ -0,0 +1,2 @@
+pgadmin4/web/**/tests/
+pgadmin4/web/regression/
diff --git a/pkg/docker/Dockerfile b/pkg/docker/Dockerfile
index 1c1dde27..083dbd60 100644
--- a/pkg/docker/Dockerfile
+++ b/pkg/docker/Dockerfile
@@ -7,58 +7,63 @@
 #
 #########################################################################

 

 

 
 
-# Apache config time
-RUN mkdir -p /templates

 
-EXPOSE 80 443
+WORKDIR /pgadmin4
 
-# Start the service

 
+```console
 cd $PGADMIN_SRC/
 workon pgadmin-venv
 make docker
+```

 
-PGADMIN_DEFAULT_EMAIL
----------------------
-

 
 
 PGADMIN_ENABLE_TLS
 ------------------
 
-Default: False
+Default: unset

 
-PGADMIN_SERVER_NAME
--------------------
-
-Default: pgadmin4
-
 
 Examples
 ========

-docker run -p 80:80 \

-docker run -p 443:443 \
+```console
index 373c99b7..68bf13b6 100755
@@ -41,60 +41,22 @@ if [ -d docker-build ]; then
     rm -rf docker-build
 fi
 
-mkdir docker-build
-
 
 # Build the clean tree
 
+    pkg/docker/.dockerignore \
+    docker-build/
 
 # Build the container
index 00000000..f57e6461
+    exec gunicorn --bind 0.0.0.0:${PGADMIN_LISTEN_PORT:-8443} -w 1 --threads ${GUNICORN_THREADS:-25} --access-logfile - --keyfile /certs/server.key --certfile /certs/server.cert run_pgadmin:app
+    exec gunicorn --bind 0.0.0.0:${PGADMIN_LISTEN_PORT:-8080} -w 1 --threads ${GUNICORN_THREADS:-25} --access-logfile - run_pgadmin:app

---

From: Dave Page <[email-masked]>
Date: Wed, 4 Apr 2018 11:55:10 +0100

Hi

> http and 8443 for https mode.

I'm seeing the following error when building. It looks like it's caused by
the new requirement on pycryptodome:

  Running setup.py install for pycryptodome: started
    Running setup.py install for pycryptodome: finished with status 'error'
    Complete output from command /usr/local/bin/python -u -c "import
setuptools,
tokenize;__file__='/tmp/pip-build-mfrhme1c/pycryptodome/setup.py';f=getattr(tokenize,
'open', open)(__file__);code=f.read().replace('\r\n',
'\n');f.close();exec(compile(code, __file__, 'exec'))" install --record
/tmp/pip-4wlgoy0e-record/install-record.txt
--single-version-externally-managed --compile:
    Testing support for x86intrin.h header
    Target does not support x86intrin.h header
    running install
    running build
    running build_py
    creating build/lib.linux-x86_64-3.6
    creating build/lib.linux-x86_64-3.6/Crypto
    copying lib/Crypto/__init__.py -> build/lib.linux-x86_64-3.6/Crypto
    creating build/lib.linux-x86_64-3.6/Crypto/Cipher
    copying lib/Crypto/Cipher/PKCS1_v1_5.py ->
build/lib.linux-x86_64-3.6/Crypto/Cipher
    copying lib/Crypto/Cipher/_mode_ofb.py ->
build/lib.linux-x86_64-3.6/Crypto/Cipher
    copying lib/Crypto/Cipher/ARC2.py ->
build/lib.linux-x86_64-3.6/Crypto/Cipher
    copying lib/Crypto/Cipher/CAST.py ->
build/lib.linux-x86_64-3.6/Crypto/Cipher
    copying lib/Crypto/Cipher/_mode_openpgp.py ->
build/lib.linux-x86_64-3.6/Crypto/Cipher
    copying lib/Crypto/Cipher/ChaCha20.py ->
build/lib.linux-x86_64-3.6/Crypto/Cipher
    copying lib/Crypto/Cipher/_mode_ccm.py ->
build/lib.linux-x86_64-3.6/Crypto/Cipher
    copying lib/Crypto/Cipher/_mode_cbc.py ->
build/lib.linux-x86_64-3.6/Crypto/Cipher
    copying lib/Crypto/Cipher/_mode_gcm.py ->
build/lib.linux-x86_64-3.6/Crypto/Cipher
    copying lib/Crypto/Cipher/__init__.py ->
build/lib.linux-x86_64-3.6/Crypto/Cipher
    copying lib/Crypto/Cipher/Salsa20.py ->
build/lib.linux-x86_64-3.6/Crypto/Cipher
    copying lib/Crypto/Cipher/Blowfish.py ->
build/lib.linux-x86_64-3.6/Crypto/Cipher
    copying lib/Crypto/Cipher/DES3.py ->
build/lib.linux-x86_64-3.6/Crypto/Cipher
    copying lib/Crypto/Cipher/_mode_ctr.py ->
build/lib.linux-x86_64-3.6/Crypto/Cipher
    copying lib/Crypto/Cipher/ARC4.py ->
build/lib.linux-x86_64-3.6/Crypto/Cipher
    copying lib/Crypto/Cipher/PKCS1_OAEP.py ->
build/lib.linux-x86_64-3.6/Crypto/Cipher
    copying lib/Crypto/Cipher/_mode_siv.py ->
build/lib.linux-x86_64-3.6/Crypto/Cipher
    copying lib/Crypto/Cipher/AES.py ->
build/lib.linux-x86_64-3.6/Crypto/Cipher
    copying lib/Crypto/Cipher/_mode_eax.py ->
build/lib.linux-x86_64-3.6/Crypto/Cipher
    copying lib/Crypto/Cipher/_mode_ecb.py ->
build/lib.linux-x86_64-3.6/Crypto/Cipher
    copying lib/Crypto/Cipher/_mode_ocb.py ->
build/lib.linux-x86_64-3.6/Crypto/Cipher
    copying lib/Crypto/Cipher/DES.py ->
build/lib.linux-x86_64-3.6/Crypto/Cipher
    copying lib/Crypto/Cipher/_mode_cfb.py ->
build/lib.linux-x86_64-3.6/Crypto/Cipher
    creating build/lib.linux-x86_64-3.6/Crypto/Hash
    copying lib/Crypto/Hash/SHA256.py ->
build/lib.linux-x86_64-3.6/Crypto/Hash
    copying lib/Crypto/Hash/SHAKE256.py ->
build/lib.linux-x86_64-3.6/Crypto/Hash
    copying lib/Crypto/Hash/SHA384.py ->
build/lib.linux-x86_64-3.6/Crypto/Hash
    copying lib/Crypto/Hash/SHA224.py ->
build/lib.linux-x86_64-3.6/Crypto/Hash
    copying lib/Crypto/Hash/__init__.py ->
build/lib.linux-x86_64-3.6/Crypto/Hash
    copying lib/Crypto/Hash/SHAKE128.py ->
build/lib.linux-x86_64-3.6/Crypto/Hash
    copying lib/Crypto/Hash/HMAC.py ->
build/lib.linux-x86_64-3.6/Crypto/Hash
    copying lib/Crypto/Hash/keccak.py ->
build/lib.linux-x86_64-3.6/Crypto/Hash
    copying lib/Crypto/Hash/MD2.py -> build/lib.linux-x86_64-3.6/Crypto/Hash
    copying lib/Crypto/Hash/CMAC.py ->
build/lib.linux-x86_64-3.6/Crypto/Hash
    copying lib/Crypto/Hash/SHA3_384.py ->
build/lib.linux-x86_64-3.6/Crypto/Hash
    copying lib/Crypto/Hash/SHA3_256.py ->
build/lib.linux-x86_64-3.6/Crypto/Hash
    copying lib/Crypto/Hash/BLAKE2b.py ->
build/lib.linux-x86_64-3.6/Crypto/Hash
    copying lib/Crypto/Hash/SHA3_512.py ->
build/lib.linux-x86_64-3.6/Crypto/Hash
    copying lib/Crypto/Hash/SHA1.py ->
build/lib.linux-x86_64-3.6/Crypto/Hash
    copying lib/Crypto/Hash/RIPEMD160.py ->
build/lib.linux-x86_64-3.6/Crypto/Hash
    copying lib/Crypto/Hash/BLAKE2s.py ->
build/lib.linux-x86_64-3.6/Crypto/Hash
    copying lib/Crypto/Hash/SHA512.py ->
build/lib.linux-x86_64-3.6/Crypto/Hash
    copying lib/Crypto/Hash/SHA3_224.py ->
build/lib.linux-x86_64-3.6/Crypto/Hash
    copying lib/Crypto/Hash/MD4.py -> build/lib.linux-x86_64-3.6/Crypto/Hash
    copying lib/Crypto/Hash/MD5.py -> build/lib.linux-x86_64-3.6/Crypto/Hash
    copying lib/Crypto/Hash/SHA.py -> build/lib.linux-x86_64-3.6/Crypto/Hash
    copying lib/Crypto/Hash/RIPEMD.py ->
build/lib.linux-x86_64-3.6/Crypto/Hash
    creating build/lib.linux-x86_64-3.6/Crypto/IO
    copying lib/Crypto/IO/PKCS8.py -> build/lib.linux-x86_64-3.6/Crypto/IO
    copying lib/Crypto/IO/__init__.py ->
build/lib.linux-x86_64-3.6/Crypto/IO
    copying lib/Crypto/IO/PEM.py -> build/lib.linux-x86_64-3.6/Crypto/IO
    copying lib/Crypto/IO/_PBES.py -> build/lib.linux-x86_64-3.6/Crypto/IO
    creating build/lib.linux-x86_64-3.6/Crypto/PublicKey
    copying lib/Crypto/PublicKey/ECC.py ->
build/lib.linux-x86_64-3.6/Crypto/PublicKey
    copying lib/Crypto/PublicKey/__init__.py ->
build/lib.linux-x86_64-3.6/Crypto/PublicKey
    copying lib/Crypto/PublicKey/RSA.py ->
build/lib.linux-x86_64-3.6/Crypto/PublicKey
    copying lib/Crypto/PublicKey/DSA.py ->
build/lib.linux-x86_64-3.6/Crypto/PublicKey
    copying lib/Crypto/PublicKey/ElGamal.py ->
build/lib.linux-x86_64-3.6/Crypto/PublicKey
    creating build/lib.linux-x86_64-3.6/Crypto/Protocol
    copying lib/Crypto/Protocol/__init__.py ->
build/lib.linux-x86_64-3.6/Crypto/Protocol
    copying lib/Crypto/Protocol/SecretSharing.py ->
build/lib.linux-x86_64-3.6/Crypto/Protocol
    copying lib/Crypto/Protocol/KDF.py ->
build/lib.linux-x86_64-3.6/Crypto/Protocol
    creating build/lib.linux-x86_64-3.6/Crypto/Random
    copying lib/Crypto/Random/__init__.py ->
build/lib.linux-x86_64-3.6/Crypto/Random
    copying lib/Crypto/Random/random.py ->
build/lib.linux-x86_64-3.6/Crypto/Random
    creating build/lib.linux-x86_64-3.6/Crypto/Signature
    copying lib/Crypto/Signature/PKCS1_v1_5.py ->
build/lib.linux-x86_64-3.6/Crypto/Signature
    copying lib/Crypto/Signature/PKCS1_PSS.py ->
build/lib.linux-x86_64-3.6/Crypto/Signature
    copying lib/Crypto/Signature/pss.py ->
build/lib.linux-x86_64-3.6/Crypto/Signature
    copying lib/Crypto/Signature/__init__.py ->
build/lib.linux-x86_64-3.6/Crypto/Signature
    copying lib/Crypto/Signature/pkcs1_15.py ->
build/lib.linux-x86_64-3.6/Crypto/Signature
    copying lib/Crypto/Signature/DSS.py ->
build/lib.linux-x86_64-3.6/Crypto/Signature
    creating build/lib.linux-x86_64-3.6/Crypto/Util
    copying lib/Crypto/Util/asn1.py ->
build/lib.linux-x86_64-3.6/Crypto/Util
    copying lib/Crypto/Util/_raw_api.py ->
build/lib.linux-x86_64-3.6/Crypto/Util
    copying lib/Crypto/Util/strxor.py ->
build/lib.linux-x86_64-3.6/Crypto/Util
    copying lib/Crypto/Util/RFC1751.py ->
build/lib.linux-x86_64-3.6/Crypto/Util
    copying lib/Crypto/Util/_number_new.py ->
build/lib.linux-x86_64-3.6/Crypto/Util
    copying lib/Crypto/Util/Counter.py ->
build/lib.linux-x86_64-3.6/Crypto/Util
    copying lib/Crypto/Util/__init__.py ->
build/lib.linux-x86_64-3.6/Crypto/Util
    copying lib/Crypto/Util/_file_system.py ->
build/lib.linux-x86_64-3.6/Crypto/Util
    copying lib/Crypto/Util/number.py ->
build/lib.linux-x86_64-3.6/Crypto/Util
    copying lib/Crypto/Util/py3compat.py ->
build/lib.linux-x86_64-3.6/Crypto/Util
    copying lib/Crypto/Util/Padding.py ->
build/lib.linux-x86_64-3.6/Crypto/Util
    creating build/lib.linux-x86_64-3.6/Crypto/Math
    copying lib/Crypto/Math/_Numbers_int.py ->
build/lib.linux-x86_64-3.6/Crypto/Math
    copying lib/Crypto/Math/_Numbers_gmp.py ->
build/lib.linux-x86_64-3.6/Crypto/Math
    copying lib/Crypto/Math/__init__.py ->
build/lib.linux-x86_64-3.6/Crypto/Math
    copying lib/Crypto/Math/_Numbers_custom.py ->
build/lib.linux-x86_64-3.6/Crypto/Math
    copying lib/Crypto/Math/Primality.py ->
build/lib.linux-x86_64-3.6/Crypto/Math
    copying lib/Crypto/Math/Numbers.py ->
build/lib.linux-x86_64-3.6/Crypto/Math
    creating build/lib.linux-x86_64-3.6/Crypto/SelfTest
    copying lib/Crypto/SelfTest/__init__.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest
    copying lib/Crypto/SelfTest/loader.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest
    copying lib/Crypto/SelfTest/st_common.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest
    copying lib/Crypto/SelfTest/__main__.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest
    creating build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_ChaCha20.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_DES3.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_ARC4.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_Blowfish.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_DES.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_Salsa20.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_OCB.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/__init__.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_pkcs1_oaep.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_GCM.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_AES.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_CTR.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_pkcs1_15.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_CBC.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/common.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_OFB.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_ARC2.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_CAST.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_OpenPGP.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_CCM.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_EAX.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_SIV.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_CFB.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher
    creating build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_SHA3_224.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_MD4.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_BLAKE2.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_CMAC.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_SHA512.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_SHAKE.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_SHA3_256.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_SHA256.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/__init__.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_MD5.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_RIPEMD160.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_SHA224.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_SHA3_384.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/common.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_MD2.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_HMAC.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_SHA3_512.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_SHA384.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_keccak.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_SHA1.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash
    creating build/lib.linux-x86_64-3.6/Crypto/SelfTest/IO
    copying lib/Crypto/SelfTest/IO/test_PBES.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/IO
    copying lib/Crypto/SelfTest/IO/__init__.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/IO
    copying lib/Crypto/SelfTest/IO/test_PKCS8.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/IO
    creating build/lib.linux-x86_64-3.6/Crypto/SelfTest/Protocol
    copying lib/Crypto/SelfTest/Protocol/test_KDF.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Protocol
    copying lib/Crypto/SelfTest/Protocol/__init__.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Protocol
    copying lib/Crypto/SelfTest/Protocol/test_SecretSharing.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Protocol
    copying lib/Crypto/SelfTest/Protocol/test_rfc1751.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Protocol
    creating build/lib.linux-x86_64-3.6/Crypto/SelfTest/PublicKey
    copying lib/Crypto/SelfTest/PublicKey/__init__.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/PublicKey
    copying lib/Crypto/SelfTest/PublicKey/test_import_ECC.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/PublicKey
    copying lib/Crypto/SelfTest/PublicKey/test_ElGamal.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/PublicKey
    copying lib/Crypto/SelfTest/PublicKey/test_import_DSA.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/PublicKey
    copying lib/Crypto/SelfTest/PublicKey/test_RSA.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/PublicKey
    copying lib/Crypto/SelfTest/PublicKey/test_ECC.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/PublicKey
    copying lib/Crypto/SelfTest/PublicKey/test_DSA.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/PublicKey
    copying lib/Crypto/SelfTest/PublicKey/test_import_RSA.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/PublicKey
    creating build/lib.linux-x86_64-3.6/Crypto/SelfTest/Random
    copying lib/Crypto/SelfTest/Random/__init__.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Random
    copying lib/Crypto/SelfTest/Random/test_random.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Random
    creating build/lib.linux-x86_64-3.6/Crypto/SelfTest/Signature
    copying lib/Crypto/SelfTest/Signature/test_pss.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Signature
    copying lib/Crypto/SelfTest/Signature/__init__.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Signature
    copying lib/Crypto/SelfTest/Signature/test_pkcs1_15.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Signature
    copying lib/Crypto/SelfTest/Signature/test_dss.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Signature
    creating build/lib.linux-x86_64-3.6/Crypto/SelfTest/Util
    copying lib/Crypto/SelfTest/Util/test_Counter.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Util
    copying lib/Crypto/SelfTest/Util/test_asn1.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Util
    copying lib/Crypto/SelfTest/Util/__init__.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Util
    copying lib/Crypto/SelfTest/Util/test_number.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Util
    copying lib/Crypto/SelfTest/Util/test_strxor.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Util
    copying lib/Crypto/SelfTest/Util/test_Padding.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Util
    creating build/lib.linux-x86_64-3.6/Crypto/SelfTest/Math
    copying lib/Crypto/SelfTest/Math/test_modexp.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Math
    copying lib/Crypto/SelfTest/Math/__init__.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Math
    copying lib/Crypto/SelfTest/Math/test_Primality.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Math
    copying lib/Crypto/SelfTest/Math/test_Numbers.py ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Math
    creating build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors
    creating
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB128GFSbox256.rsp
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB128VarTxt128.rsp
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB8VarKey128.rsp
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/OFBKeySbox256.rsp
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB128MMT256.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying
lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB128KeySbox256.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/OFBGFSbox128.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB8GFSbox192.rsp
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB128VarKey256.rsp
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB128MCT128.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CBCMMT128.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB128GFSbox192.rsp
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CBCKeySbox128.rsp
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CBCVarTxt256.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB8VarKey192.rsp
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/OFBVarKey192.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CBCGFSbox256.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CBCGFSbox128.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CBCKeySbox192.rsp
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CBCVarTxt192.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/OFBGFSbox256.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB8VarTxt128.rsp
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying
lib/Crypto/SelfTest/Cipher/test_vectors/AES/gcmEncryptExtIV128.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB128VarKey128.rsp
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB128VarTxt192.rsp
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB8GFSbox128.rsp
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CBCGFSbox192.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB8GFSbox256.rsp
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB8MCT128.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CBCMCT256.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB128VarTxt256.rsp
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CBCVarKey128.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CBCVarKey192.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/OFBMCT128.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/OFBVarTxt128.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CBCMMT192.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB8VarTxt256.rsp
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/OFBVarTxt192.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/gcmDecrypt128.rsp
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB8VarKey256.rsp
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/OFBMCT192.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB8MMT256.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CBCVarTxt128.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB128MMT192.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/OFBMMT192.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/OFBMMT128.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB8KeySbox256.rsp
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB8VarTxt192.rsp
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB8KeySbox128.rsp
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/OFBKeySbox128.rsp
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB8KeySbox192.rsp
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CBCVarKey256.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/OFBVarKey128.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CBCKeySbox256.rsp
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB8MMT192.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying
lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB128KeySbox128.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/OFBMMT256.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/OFBMCT256.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB128GFSbox128.rsp
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying
lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB128KeySbox192.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CBCMCT128.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CBCMCT192.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB8MCT256.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/OFBVarKey256.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB128MMT128.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB8MMT128.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/OFBGFSbox192.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB128VarKey192.rsp
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB8MCT192.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB128MCT256.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CBCMMT256.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/OFBVarTxt256.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB128MCT192.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/OFBKeySbox192.rsp
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/AES
    creating
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/TDES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TCFB64invperm.rsp
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/TDES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TCBCvarkey.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/TDES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TCBCsubtab.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/TDES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TCBCpermop.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/TDES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TCBCinvperm.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/TDES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TOFBMMT2.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/TDES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TCFB8varkey.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/TDES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TCFB8permop.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/TDES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TOFBsubtab.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/TDES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TCBCMMT2.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/TDES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TCFB8vartext.rsp
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/TDES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TCFB8invperm.rsp
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/TDES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TECBMMT2.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/TDES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TOFBinvperm.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/TDES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TCFB64vartext.rsp
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/TDES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TOFBvartext.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/TDES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TCFB8MMT2.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/TDES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TCBCvartext.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/TDES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TCFB64MMT2.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/TDES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TCFB8subtab.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/TDES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TOFBMMT3.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/TDES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TECBMMT3.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/TDES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TCFB64varkey.rsp
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/TDES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TCFB64permop.rsp
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/TDES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TCFB64MMT3.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/TDES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TCFB64subtab.rsp
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/TDES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TCBCMMT3.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/TDES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TCFB8MMT3.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/TDES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TOFBvarkey.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/TDES
    copying lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TOFBpermop.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors/TDES
    creating build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash/test_vectors
    creating
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash/test_vectors/SHA1
    copying lib/Crypto/SelfTest/Hash/test_vectors/SHA1/SHA1ShortMsg.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash/test_vectors/SHA1
    creating
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash/test_vectors/SHA3
    copying
lib/Crypto/SelfTest/Hash/test_vectors/SHA3/ShortMsgKAT_SHAKE128.txt ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash/test_vectors/SHA3
    copying
lib/Crypto/SelfTest/Hash/test_vectors/SHA3/ShortMsgKAT_SHA3-384.txt ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash/test_vectors/SHA3
    copying
lib/Crypto/SelfTest/Hash/test_vectors/SHA3/ShortMsgKAT_SHA3-224.txt ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash/test_vectors/SHA3
    copying
lib/Crypto/SelfTest/Hash/test_vectors/SHA3/ShortMsgKAT_SHAKE256.txt ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash/test_vectors/SHA3
    copying
lib/Crypto/SelfTest/Hash/test_vectors/SHA3/ShortMsgKAT_SHA3-512.txt ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash/test_vectors/SHA3
    copying
lib/Crypto/SelfTest/Hash/test_vectors/SHA3/ShortMsgKAT_SHA3-256.txt ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash/test_vectors/SHA3
    creating
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash/test_vectors/keccak
    copying lib/Crypto/SelfTest/Hash/test_vectors/keccak/LongMsgKAT_256.txt
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash/test_vectors/keccak
    copying lib/Crypto/SelfTest/Hash/test_vectors/keccak/LongMsgKAT_512.txt
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash/test_vectors/keccak
    copying
lib/Crypto/SelfTest/Hash/test_vectors/keccak/ExtremelyLongMsgKAT_256.txt ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash/test_vectors/keccak
    copying
lib/Crypto/SelfTest/Hash/test_vectors/keccak/ShortMsgKAT_384.txt ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash/test_vectors/keccak
    copying
lib/Crypto/SelfTest/Hash/test_vectors/keccak/ShortMsgKAT_512.txt ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash/test_vectors/keccak
    copying
lib/Crypto/SelfTest/Hash/test_vectors/keccak/ExtremelyLongMsgKAT_512.txt ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash/test_vectors/keccak
    copying lib/Crypto/SelfTest/Hash/test_vectors/keccak/LongMsgKAT_224.txt
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash/test_vectors/keccak
    copying
lib/Crypto/SelfTest/Hash/test_vectors/keccak/ExtremelyLongMsgKAT_224.txt ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash/test_vectors/keccak
    copying lib/Crypto/SelfTest/Hash/test_vectors/keccak/readme.txt ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash/test_vectors/keccak
    copying
lib/Crypto/SelfTest/Hash/test_vectors/keccak/ShortMsgKAT_256.txt ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash/test_vectors/keccak
    copying
lib/Crypto/SelfTest/Hash/test_vectors/keccak/ShortMsgKAT_224.txt ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash/test_vectors/keccak
    copying
lib/Crypto/SelfTest/Hash/test_vectors/keccak/ExtremelyLongMsgKAT_384.txt ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash/test_vectors/keccak
    copying lib/Crypto/SelfTest/Hash/test_vectors/keccak/LongMsgKAT_384.txt
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash/test_vectors/keccak
    creating
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash/test_vectors/BLAKE2s
    copying lib/Crypto/SelfTest/Hash/test_vectors/BLAKE2s/tv2.txt ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash/test_vectors/BLAKE2s
    copying lib/Crypto/SelfTest/Hash/test_vectors/BLAKE2s/tv1.txt ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash/test_vectors/BLAKE2s
    copying lib/Crypto/SelfTest/Hash/test_vectors/BLAKE2s/blake2s-test.txt
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash/test_vectors/BLAKE2s
    creating
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash/test_vectors/BLAKE2b
    copying lib/Crypto/SelfTest/Hash/test_vectors/BLAKE2b/tv2.txt ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash/test_vectors/BLAKE2b
    copying lib/Crypto/SelfTest/Hash/test_vectors/BLAKE2b/tv1.txt ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash/test_vectors/BLAKE2b
    copying lib/Crypto/SelfTest/Hash/test_vectors/BLAKE2b/blake2b-test.txt
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash/test_vectors/BLAKE2b
    creating
build/lib.linux-x86_64-3.6/Crypto/SelfTest/PublicKey/test_vectors
    creating
build/lib.linux-x86_64-3.6/Crypto/SelfTest/PublicKey/test_vectors/ECC
    copying lib/Crypto/SelfTest/PublicKey/test_vectors/ECC/gen_ecc_p256.sh
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/PublicKey/test_vectors/ECC
    copying
lib/Crypto/SelfTest/PublicKey/test_vectors/ECC/ecc_p256_private_enc_aes192.pem
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/PublicKey/test_vectors/ECC
    copying
lib/Crypto/SelfTest/PublicKey/test_vectors/ECC/ecc_p256_private_p8_clear.der
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/PublicKey/test_vectors/ECC
    copying
lib/Crypto/SelfTest/PublicKey/test_vectors/ECC/ecc_p256_x509.pem ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/PublicKey/test_vectors/ECC
    copying
lib/Crypto/SelfTest/PublicKey/test_vectors/ECC/ecc_p256_private_enc_aes128.pem
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/PublicKey/test_vectors/ECC
    copying
lib/Crypto/SelfTest/PublicKey/test_vectors/ECC/ecc_p256_public_openssh.txt
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/PublicKey/test_vectors/ECC
    copying
lib/Crypto/SelfTest/PublicKey/test_vectors/ECC/ecc_p256_public_compressed.der
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/PublicKey/test_vectors/ECC
    copying
lib/Crypto/SelfTest/PublicKey/test_vectors/ECC/ecc_p256_private_enc_aes256_gcm.pem
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/PublicKey/test_vectors/ECC
    copying lib/Crypto/SelfTest/PublicKey/test_vectors/ECC/ecc_p256.txt ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/PublicKey/test_vectors/ECC
    copying
lib/Crypto/SelfTest/PublicKey/test_vectors/ECC/ecc_p256_public.der ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/PublicKey/test_vectors/ECC
    copying
lib/Crypto/SelfTest/PublicKey/test_vectors/ECC/ecc_p256_public_compressed.pem
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/PublicKey/test_vectors/ECC
    copying
lib/Crypto/SelfTest/PublicKey/test_vectors/ECC/ecc_p256_private_p8.pem ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/PublicKey/test_vectors/ECC
    copying
lib/Crypto/SelfTest/PublicKey/test_vectors/ECC/ecc_p256_private.pem ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/PublicKey/test_vectors/ECC
    copying
lib/Crypto/SelfTest/PublicKey/test_vectors/ECC/ecc_p256_private_p8_clear.pem
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/PublicKey/test_vectors/ECC
    copying
lib/Crypto/SelfTest/PublicKey/test_vectors/ECC/ecc_p256_private.der ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/PublicKey/test_vectors/ECC
    copying
lib/Crypto/SelfTest/PublicKey/test_vectors/ECC/ecc_p256_private_p8.der ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/PublicKey/test_vectors/ECC
    copying
lib/Crypto/SelfTest/PublicKey/test_vectors/ECC/point-at-infinity.org-P256.txt
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/PublicKey/test_vectors/ECC
    copying
lib/Crypto/SelfTest/PublicKey/test_vectors/ECC/ecc_p256_public.pem ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/PublicKey/test_vectors/ECC
    copying
lib/Crypto/SelfTest/PublicKey/test_vectors/ECC/openssl_version.txt ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/PublicKey/test_vectors/ECC
    copying
lib/Crypto/SelfTest/PublicKey/test_vectors/ECC/ecc_p256_private_enc_des3.pem
-> build/lib.linux-x86_64-3.6/Crypto/SelfTest/PublicKey/test_vectors/ECC
    copying
lib/Crypto/SelfTest/PublicKey/test_vectors/ECC/ecc_p256_x509.der ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/PublicKey/test_vectors/ECC
    creating
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Signature/test_vectors
    creating
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Signature/test_vectors/DSA
    copying
lib/Crypto/SelfTest/Signature/test_vectors/DSA/FIPS_186_3_SigGen.txt ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Signature/test_vectors/DSA
    copying
lib/Crypto/SelfTest/Signature/test_vectors/DSA/FIPS_186_3_SigVer.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Signature/test_vectors/DSA
    creating
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Signature/test_vectors/ECDSA
    copying lib/Crypto/SelfTest/Signature/test_vectors/ECDSA/README.txt ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Signature/test_vectors/ECDSA
    copying lib/Crypto/SelfTest/Signature/test_vectors/ECDSA/SigVer.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Signature/test_vectors/ECDSA
    copying lib/Crypto/SelfTest/Signature/test_vectors/ECDSA/SigGen.txt ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Signature/test_vectors/ECDSA
    creating
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Signature/test_vectors/PKCS1-v1.5
    copying
lib/Crypto/SelfTest/Signature/test_vectors/PKCS1-v1.5/SigGen15_186-2.txt ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Signature/test_vectors/PKCS1-v1.5
    copying
lib/Crypto/SelfTest/Signature/test_vectors/PKCS1-v1.5/SigVer15_186-3.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Signature/test_vectors/PKCS1-v1.5
    copying
lib/Crypto/SelfTest/Signature/test_vectors/PKCS1-v1.5/SigGen15_186-3.txt ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Signature/test_vectors/PKCS1-v1.5
    creating
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Signature/test_vectors/PKCS1-PSS
    copying
lib/Crypto/SelfTest/Signature/test_vectors/PKCS1-PSS/SigVerPSS_186-3.rsp ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Signature/test_vectors/PKCS1-PSS
    copying
lib/Crypto/SelfTest/Signature/test_vectors/PKCS1-PSS/SigGenPSS_186-3.txt ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Signature/test_vectors/PKCS1-PSS
    copying
lib/Crypto/SelfTest/Signature/test_vectors/PKCS1-PSS/SigGenPSS_186-2.txt ->
build/lib.linux-x86_64-3.6/Crypto/SelfTest/Signature/test_vectors/PKCS1-PSS
    Skipping optional fixer: buffer
    Skipping optional fixer: idioms
    Skipping optional fixer: set_literal
    Skipping optional fixer: ws_comma
    running build_ext
    Testing support for 128-bit integer
    Target does not support 128-bit integer
    Testing support for intrin.h header
    Target does not support intrin.h header
    Testing support for cpuid.h header
    Target does not support cpuid.h header
    warning: no support for Intel AESNI instructions
    building 'Crypto.Hash._MD2' extension
    creating build/temp.linux-x86_64-3.6
    creating build/temp.linux-x86_64-3.6/src
    gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall
-Wstrict-prototypes -DTHREAD_STACK_SIZE=0x100000 -fPIC -DPY_LITTLE_ENDIAN
-DLTC_NO_ASM -Isrc/ -I/usr/local/include/python3.6m -c src/MD2.c -o
build/temp.linux-x86_64-3.6/src/MD2.o
    unable to execute 'gcc': No such file or directory
    error: command 'gcc' failed with exit status 1

    ----------------------------------------
Command "/usr/local/bin/python -u -c "import setuptools,
tokenize;__file__='/tmp/pip-build-mfrhme1c/pycryptodome/setup.py';f=getattr(tokenize,
'open', open)(__file__);code=f.read().replace('\r\n',
'\n');f.close();exec(compile(code, __file__, 'exec'))" install --record
/tmp/pip-4wlgoy0e-record/install-record.txt
--single-version-externally-managed --compile" failed with error code 1 in
/tmp/pip-build-mfrhme1c/pycryptodome/
The command '/bin/sh -c pip install --no-cache-dir -r requirements.txt'
returned a non-zero code: 1
make: *** [docker] Error 1

-- 
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

---

From: Максим Кольцов <[email-masked]>
Date: Wed, 4 Apr 2018 14:16:36 +0300

> the new requirement on pycryptodome:

Is this new requirement merged in master? I will rebase my patch.

In future, when chaning C-extensions in requirements.txt, it's needed
to update Dockerfile, line 43:
    pip install --no-cache-dir psycopg2 pycrypto && \

I install build deps, build C-extensions and remove build deps in one
RUN step in order to avoid having layer with build deps in image
stack.
In fact, I can merge this with installation from requirements.txt.
There were some reasons I made it this way in the first place, but
it's not so relevant now.

Will post patch later.

>     copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB8VarKey128.rsp ->
>     copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/OFBKeySbox256.rsp ->
>     copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB128KeySbox256.rsp
>     copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB8GFSbox192.rsp ->
>     copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CBCKeySbox128.rsp ->
>     copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB8VarKey192.rsp ->
>     copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CBCKeySbox192.rsp ->
>     copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB8VarTxt128.rsp ->
>     copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB8GFSbox128.rsp ->
>     copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB8GFSbox256.rsp ->
>     copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB8VarTxt256.rsp ->
>     copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/gcmDecrypt128.rsp ->
>     copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB8VarKey256.rsp ->
>     copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB8VarTxt192.rsp ->
>     copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/OFBKeySbox128.rsp ->
>     copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CBCKeySbox256.rsp ->
>     copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB128KeySbox128.rsp
>     copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB128KeySbox192.rsp
>     copying lib/Crypto/SelfTest/Cipher/test_vectors/AES/OFBKeySbox192.rsp ->
>     copying lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TCFB8vartext.rsp ->
>     copying lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TCFB8invperm.rsp ->
>     copying lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TCFB64varkey.rsp ->
>     copying lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TCFB64permop.rsp ->
>     copying lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TCFB64subtab.rsp ->
>     copying lib/Crypto/SelfTest/Hash/test_vectors/keccak/ShortMsgKAT_384.txt
>     copying lib/Crypto/SelfTest/Hash/test_vectors/keccak/ShortMsgKAT_512.txt
>     copying lib/Crypto/SelfTest/Hash/test_vectors/keccak/ShortMsgKAT_256.txt
>     copying lib/Crypto/SelfTest/Hash/test_vectors/keccak/ShortMsgKAT_224.txt
>     copying lib/Crypto/SelfTest/PublicKey/test_vectors/ECC/ecc_p256_x509.pem
>     copying lib/Crypto/SelfTest/PublicKey/test_vectors/ECC/ecc_p256_x509.der

---

From: Dave Page <[email-masked]>
Date: Wed, 4 Apr 2018 12:18:52 +0100

> Is this new requirement merged in master? I will rebase my patch.

Yes it is.

>     pip install --no-cache-dir psycopg2 pycrypto && \

Ah, OK.

> RUN step in order to avoid having layer with build deps in image

Makes sense.

> it's not so relevant now.

Thanks!

> ->
> ->
> ->
> ->
> ->
> ->
> ->
> ->
> ->
> ->
> ->
> ->
> ->
> ->
> ->
> ->
> ->
> ->
> ->
> ->
> ->

---

From: Максим Кольцов <[email-masked]>
Date: Wed, 4 Apr 2018 14:19:11 +0300

> it's not so relevant now.

Also, please note line 26 in Dockerfile:

RUN pip install --no-cache-dir \
    sphinx flask_babel flask_security flask_paranoid python-dateutil
flask_sqlalchemy \
    flask_gravatar simplejson

Here I install packages that are imported during documentation build,
to avoid installing whole load of heavy packages and C-extensions in
docs-only intermediate container.
So, when these deps are changed, Dockerfile should be updated as well.

---

From: Максим Кольцов <[email-masked]>
Date: Wed, 4 Apr 2018 16:46:57 +0300

>> it's not so relevant now.

So, I've fixed it. Patch attached. Now whole requirements.txt is
installed in one step, with no left-overs and incompabilities.

>> > build/lib.linux-x86_64-3.6/Crypto/SelfTest/Cipher/test_vectors
>> >     creating
>> > lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB128GFSbox256.rsp
>> > lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB128VarTxt128.rsp
>> > lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB8VarKey128.rsp ->
>> > lib/Crypto/SelfTest/Cipher/test_vectors/AES/OFBKeySbox256.rsp ->
>> > lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB128KeySbox256.rsp
>> > lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB8GFSbox192.rsp ->
>> > lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB128VarKey256.rsp
>> > lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB128GFSbox192.rsp
>> > lib/Crypto/SelfTest/Cipher/test_vectors/AES/CBCKeySbox128.rsp ->
>> > lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB8VarKey192.rsp ->
>> > lib/Crypto/SelfTest/Cipher/test_vectors/AES/CBCKeySbox192.rsp ->
>> > lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB8VarTxt128.rsp ->
>> > lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB128VarKey128.rsp
>> > lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB128VarTxt192.rsp
>> > lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB8GFSbox128.rsp ->
>> > lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB8GFSbox256.rsp ->
>> > lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB128VarTxt256.rsp
>> > lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB8VarTxt256.rsp ->
>> > lib/Crypto/SelfTest/Cipher/test_vectors/AES/gcmDecrypt128.rsp ->
>> > lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB8VarKey256.rsp ->
>> > lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB8KeySbox256.rsp
>> > lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB8VarTxt192.rsp ->
>> > lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB8KeySbox128.rsp
>> > lib/Crypto/SelfTest/Cipher/test_vectors/AES/OFBKeySbox128.rsp ->
>> > lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB8KeySbox192.rsp
>> > lib/Crypto/SelfTest/Cipher/test_vectors/AES/CBCKeySbox256.rsp ->
>> > lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB128KeySbox128.rsp
>> > lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB128GFSbox128.rsp
>> > lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB128KeySbox192.rsp
>> > lib/Crypto/SelfTest/Cipher/test_vectors/AES/CFB128VarKey192.rsp
>> > lib/Crypto/SelfTest/Cipher/test_vectors/AES/OFBKeySbox192.rsp ->
>> > lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TCFB64invperm.rsp
>> > lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TCFB8vartext.rsp ->
>> > lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TCFB8invperm.rsp ->
>> > lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TCFB64vartext.rsp
>> > lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TCFB64varkey.rsp ->
>> > lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TCFB64permop.rsp ->
>> > lib/Crypto/SelfTest/Cipher/test_vectors/TDES/TCFB64subtab.rsp ->
>> > build/lib.linux-x86_64-3.6/Crypto/SelfTest/Hash/test_vectors
>> >     creating
>> > lib/Crypto/SelfTest/Hash/test_vectors/keccak/LongMsgKAT_256.txt
>> > lib/Crypto/SelfTest/Hash/test_vectors/keccak/LongMsgKAT_512.txt
>> > lib/Crypto/SelfTest/Hash/test_vectors/keccak/ShortMsgKAT_384.txt
>> > lib/Crypto/SelfTest/Hash/test_vectors/keccak/ShortMsgKAT_512.txt
>> > lib/Crypto/SelfTest/Hash/test_vectors/keccak/LongMsgKAT_224.txt
>> > lib/Crypto/SelfTest/Hash/test_vectors/keccak/ShortMsgKAT_256.txt
>> > lib/Crypto/SelfTest/Hash/test_vectors/keccak/ShortMsgKAT_224.txt
>> > lib/Crypto/SelfTest/Hash/test_vectors/keccak/LongMsgKAT_384.txt
>> > lib/Crypto/SelfTest/Hash/test_vectors/BLAKE2s/blake2s-test.txt
>> > lib/Crypto/SelfTest/Hash/test_vectors/BLAKE2b/blake2b-test.txt
>> > lib/Crypto/SelfTest/PublicKey/test_vectors/ECC/gen_ecc_p256.sh
>> > lib/Crypto/SelfTest/PublicKey/test_vectors/ECC/ecc_p256_x509.pem
>> > lib/Crypto/SelfTest/PublicKey/test_vectors/ECC/ecc_p256_x509.der
From 883d710765cc34dc666efb1e060ffab3913e9f7d Mon Sep 17 00:00:00 2001
From: Maxim Koltsov <[email-masked]>
Date: Sat, 31 Mar 2018 20:37:51 +0300
Subject: [PATCH] Re-make Docker container packaging

index 1c1dde27..e5f0ceea 100644

 

+    sphinx flask_security flask_paranoid python-dateutil flask_sqlalchemy \

 

-# Apache config time
-RUN mkdir -p /templates
 
+    pip install --no-cache-dir -r requirements.txt && \

-EXPOSE 80 443
 
-# Start the service

 
+```console
 cd $PGADMIN_SRC/
 workon pgadmin-venv
 make docker
+```

 
-PGADMIN_DEFAULT_EMAIL
----------------------
-

 
 
 PGADMIN_ENABLE_TLS
 ------------------
 
-Default: False
+Default: unset

 
-PGADMIN_SERVER_NAME
--------------------
-
-Default: pgadmin4
-
 
 Examples
 ========

-docker run -p 80:80 \

-docker run -p 443:443 \
+```console
 
-mkdir docker-build
-
 
 # Build the clean tree

 # Build the container

---

From: Dave Page <[email-masked]>
Date: Wed, 4 Apr 2018 16:22:07 +0100

Hi

> installed in one step, with no left-overs and incompabilities.

I've committed the patch with some minor changes to avoid breaking
compatibility with the older version:

- The default ports are 80/443 again.
- Username/password are set with PGADMIN_DEFAULT_EMAIL
and PGADMIN_DEFAULT_PASSWORD (though, I have left them without defaults).

Thanks!

---

From: Максим Кольцов <[email-masked]>
Date: Wed, 4 Apr 2018 21:28:03 +0300

2018-04-04 18:22 GMT+03:00 Dave Page <[email-masked]>:
> - Username/password are set with PGADMIN_DEFAULT_EMAIL and
> PGADMIN_DEFAULT_PASSWORD (though, I have left them without defaults).
>
> Thanks!

Great, thank you very much!
Will you update image at docker hub?

---

From: Dave Page <[email-masked]>
Date: Wed, 4 Apr 2018 20:23:44 +0100

> On 4 Apr 2018, at 19:28, Максим Кольцов <[email-masked]> wrote:
> 

We’re planning 3.0 for next week, so I’ll push an update then.

Thanks!