From afc99a1e8c9d40d19898330327d3ac8f0856bfed Mon Sep 17 00:00:00 2001 From: Corey Bryant Date: Tue, 18 Apr 2017 19:15:58 +0000 Subject: [PATCH] Compile python and drop environment dictionary Classic python snaps require python to be compiled from source. Additionaly, move away from using the environment dictionary until it is fully supported by snapd. Finally, use a fixed python path in order to get the correct site-specific config. These changes were recommended in the following bug: https://bugs.launchpad.net/snapcraft/+bug/1675479 Change-Id: I61be2595bd063f9d7605450e556066b9d72cc90f --- snap/snap-openstack.yaml | 2 +- snap/templates/admin.ini.j2 | 2 +- snap/templates/public.ini.j2 | 2 +- snapcraft.yaml | 37 ++++++++++++++++++++++++++++-------- 4 files changed, 32 insertions(+), 11 deletions(-) diff --git a/snap/snap-openstack.yaml b/snap/snap-openstack.yaml index a2ea7a6..05aabe7 100644 --- a/snap/snap-openstack.yaml +++ b/snap/snap-openstack.yaml @@ -27,7 +27,7 @@ setup: "{snap}/etc/nginx/": "/etc/nginx/keystone" entry_points: keystone-manage: - binary: keystone-manage + binary: "{snap}/bin/keystone-manage" config-files: - "/etc/keystone/keystone.conf" config-dirs: diff --git a/snap/templates/admin.ini.j2 b/snap/templates/admin.ini.j2 index c682e00..e5ce4cb 100644 --- a/snap/templates/admin.ini.j2 +++ b/snap/templates/admin.ini.j2 @@ -6,6 +6,6 @@ master = true enable-threads = true processes = 4 thunder-lock = true -plugins = python lazy-apps = true pyargv = --config-file=/etc/keystone/keystone.conf --config-dir=/etc/keystone/conf.d --log-file=/var/log/keystone/keystone.log +home = {{ snap }}/usr diff --git a/snap/templates/public.ini.j2 b/snap/templates/public.ini.j2 index 38f1866..bf8ac5d 100644 --- a/snap/templates/public.ini.j2 +++ b/snap/templates/public.ini.j2 @@ -6,6 +6,6 @@ master = true enable-threads = true processes = 4 thunder-lock = true -plugins = python lazy-apps = true pyargv = --config-file=/etc/keystone/keystone.conf --config-dir=/etc/keystone/conf.d --log-file=/var/log/keystone/keystone.log +home = {{ snap }}/usr diff --git a/snapcraft.yaml b/snapcraft.yaml index b5f2340..d70a1c5 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -9,23 +9,26 @@ description: | confinement: classic grade: devel -environment: - PATH: $PATH:$SNAP/bin/:$SNAP/usr/sbin - PYTHONPATH: $PYTHONPATH:$SNAP/lib/python2.7/site-packages - LD_LIBRARY_PATH: $SNAP/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH - apps: uwsgi: - command: snap-openstack keystone-uwsgi + command: > + env PYTHONPATH=$PYTHONPATH:$SNAP/lib/python2.7/site-packages + $SNAP/usr/bin/python2 $SNAP/bin/snap-openstack keystone-uwsgi daemon: simple nginx: - command: snap-openstack keystone-nginx + command: > + env PYTHONPATH=$PYTHONPATH:$SNAP/lib/python2.7/site-packages + LD_LIBRARY_PATH=$SNAP/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH + $SNAP/usr/bin/python2 $SNAP/bin/snap-openstack keystone-nginx daemon: forking manage: - command: snap-openstack keystone-manage + command: > + env PYTHONPATH=$PYTHONPATH:$SNAP/lib/python2.7/site-packages + $SNAP/usr/bin/python2 $SNAP/bin/snap-openstack keystone-manage parts: keystone: + after: [python] plugin: python python-version: python2 source: http://tarballs.openstack.org/keystone/keystone-master.tar.gz @@ -39,6 +42,11 @@ parts: - libffi-dev - libssl-dev stage-packages: [nginx] + stage: + - -usr/bin/2to3 + - -usr/bin/pydoc + - -usr/bin/python2.7 + - -usr/lib/python2.7 install: touch $SNAPCRAFT_PART_INSTALL/lib/python2.7/site-packages/paste/__init__.py touch $SNAPCRAFT_PART_INSTALL/lib/python2.7/site-packages/repoze/__init__.py @@ -63,3 +71,16 @@ parts: - etc/keystone/*.templates stage: [$etc] snap: [$etc] + python: + source: https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tar.xz + plugin: autotools + configflags: + - --prefix=/usr + - --enable-shared + - --enable-unicode=ucs4 + build-packages: + - libssl-dev + prime: + - -usr/include + install: + $SNAPCRAFT_PART_INSTALL/usr/bin/python2 -m ensurepip