From b0eeeed2fa74329a23b53ed5e825216ca96d5d18 Mon Sep 17 00:00:00 2001 From: Corey Bryant Date: Mon, 24 Apr 2017 12:53:41 +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: I5505bb19b026589c94df4c2753a7ee4b7e2f8fb1 --- snapcraft.yaml | 42 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/snapcraft.yaml b/snapcraft.yaml index 115cd02..07fd1fb 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -17,28 +17,36 @@ description: | confinement: classic grade: devel -environment: - PATH: $PATH:$SNAP/bin/ - apps: api: - command: snap-openstack nova-api-os-compute + command: > + env PYTHONPATH=$PYTHONPATH:$SNAP/lib/python2.7/site-packages + $SNAP/usr/bin/python2 $SNAP/bin/snap-openstack nova-api-os-compute daemon: simple conductor: - command: snap-openstack nova-conductor + command: > + env PYTHONPATH=$PYTHONPATH:$SNAP/lib/python2.7/site-packages + $SNAP/usr/bin/python2 $SNAP/bin/snap-openstack nova-conductor daemon: simple scheduler: - command: snap-openstack nova-scheduler + command: > + env PYTHONPATH=$PYTHONPATH:$SNAP/lib/python2.7/site-packages + $SNAP/usr/bin/python2 $SNAP/bin/snap-openstack nova-scheduler daemon: simple consoleauth: - command: snap-openstack nova-consoleauth + command: > + env PYTHONPATH=$PYTHONPATH:$SNAP/lib/python2.7/site-packages + $SNAP/usr/bin/python2 $SNAP/bin/snap-openstack nova-consoleauth daemon: simple manage: - command: snap-openstack nova-manage + command: > + env PYTHONPATH=$PYTHONPATH:$SNAP/lib/python2.7/site-packages + $SNAP/usr/bin/python2 $SNAP/bin/snap-openstack nova-manage aliases: - nova-manage parts: nova: + after: [python] plugin: python python-version: python2 source: http://tarballs.openstack.org/nova/nova-master.tar.gz @@ -51,6 +59,11 @@ parts: - gcc - libffi-dev - libssl-dev + 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 @@ -70,3 +83,16 @@ parts: - etc/nova/rootwrap.d 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