diff --git a/snapcraft.yaml b/snapcraft.yaml index 4651a45..44887e0 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -15,7 +15,11 @@ environment: PYTHONPATH: $PYTHONPATH:/usr/lib/python3.8:/usr/lib/python3/dist-packages:$SNAP/usr/lib/python3.8:$SNAP/lib/python3.8/site-packages:$SNAP/usr/lib/python3/dist-packages PYTHONWARNINGS: ignore # Needed by a targetcli dependency. - GI_TYPELIB_PATH: $SNAP/usr/lib/x86_64-linux-gnu/girepository-1.0 + GI_TYPELIB_PATH: $SNAP/usr/lib/$SNAP_ARCH-linux-gnu/girepository-1.0 + +architectures: + - build-on: amd64 + - build-on: arm64 system-usernames: snap_daemon: shared @@ -35,6 +39,12 @@ layout: bind: $SNAP/usr/share/libvirt /usr/share/qemu: bind: $SNAP/usr/share/qemu + # For UEFI Support, bindmount the OVMF and AAVMF directories + # appropriately. UEFI support is required for aarch64. + /usr/share/OVMF: + bind: $SNAP/usr/share/OVMF + /usr/share/AAVMF: + bind: $SNAP/usr/share/AAVMF # Keystone really wants to look here for its fernet keys for some reason /etc/keystone/fernet-keys: bind: $SNAP_COMMON/fernet-keys @@ -739,20 +749,6 @@ parts: # patch --batch --forward --strip 1 --input ../project/patches/nova/nova_log_error.patch organize: lib/python3.8/site-packages/openstack_dashboard/local/local_settings.py.example: lib/python3.8/site-packages/openstack_dashboard/local/local_settings.py - override-build: | - snapcraftctl build - rm $SNAPCRAFT_PART_INSTALL/pyvenv.cfg - --strip 1 \ - --input "$patch" - echo - done - # Now that everything is built, let's disable user site-packages - # as stated in PEP-0370 - # sed -i usr/lib/python3.8/site.py -e 's/^ENABLE_USER_SITE = None$/ENABLE_USER_SITE = False/' - # Uncomment the below line for better python-libvirt debugging output. - # patch --batch --forward --strip 1 --input ../project/patches/nova/nova_log_error.patch - organize: - lib/python3.8/site-packages/openstack_dashboard/local/local_settings.py.example: lib/python3.8/site-packages/openstack_dashboard/local/local_settings.py override-build: | snapcraftctl build rm $SNAPCRAFT_PART_INSTALL/pyvenv.cfg @@ -772,7 +768,6 @@ parts: etc/*.ini: etc/keystone/ etc/*.json: etc/keystone/ etc/*.templates: etc/keystone/ - filesets: etc: - etc/keystone/* @@ -1088,6 +1083,12 @@ parts: - librtmp1 - libssh-4 - libwind0-heimdal + # UEFI Support, required on arm64 + - on arm64: + - qemu-efi-aarch64 + - qemu-efi-arm + - on amd64: + - ovmf build-packages: - acpica-tools - libaio-dev @@ -1131,7 +1132,7 @@ parts: - --disable-bsd-user - --disable-vhost-user - --enable-system - - --target-list=x86_64-softmmu + - --target-list=x86_64-softmmu,aarch64-softmmu - --disable-xen override-build: | dpkg-source --before-build . @@ -1240,7 +1241,7 @@ parts: # for the child processes they spawn since the environment variables are not passed down to children by default after execve(2). # `readelf -d /snap/microstack/current/usr/libexec/virt-aa-helper` should return something like: # (RUNPATH) Library runpath: [/snap/microstack/current/usr/lib:/snap/microstack/current/usr/lib/x86_64-linux-gnu:...] - - LDFLAGS: '$LDFLAGS -Wl,-rpath=/snap/$SNAPCRAFT_PROJECT_NAME/current/usr/lib -Wl,-rpath=/snap/$SNAPCRAFT_PROJECT_NAME/current/usr/lib/x86_64-linux-gnu -Wl,-rpath=/snap/$SNAPCRAFT_PROJECT_NAME/current/lib -Wl,-rpath=/lib/x86_64-linux-gnu -Wl,-rpath=/lib/' + - LDFLAGS: '$LDFLAGS -Wl,-rpath=/snap/$SNAPCRAFT_PROJECT_NAME/current/usr/lib -Wl,-rpath=/snap/$SNAPCRAFT_PROJECT_NAME/current/usr/lib/$SNAPCRAFT_ARCH_TRIPLET -Wl,-rpath=/snap/$SNAPCRAFT_PROJECT_NAME/current/lib -Wl,-rpath=/lib/$SNAPCRAFT_ARCH_TRIPLET -Wl,-rpath=/lib/' override-build: | dpkg-source --before-build . logger `echo -n $PWD` @@ -1442,7 +1443,7 @@ parts: # see LP: #1882994 rm $SNAPCRAFT_PART_INSTALL/bin/python3 rm $SNAPCRAFT_PART_INSTALL/bin/python - rm $SNAPCRAFT_PART_INSTALL/lib/python3.8/site-packages/netifaces.cpython-38-x86_64-linux-gnu.so + rm $SNAPCRAFT_PART_INSTALL/lib/python3.8/site-packages/netifaces.cpython-38-$SNAPCRAFT_ARCH_TRIPLET.so # Launch script launch: @@ -1558,7 +1559,6 @@ parts: lma-build-prep: plugin: nil - source: "" build-packages: - dirmngr override-build: | diff --git a/tools/init/init/questions/__init__.py b/tools/init/init/questions/__init__.py index 2b25df9..89d6343 100644 --- a/tools/init/init/questions/__init__.py +++ b/tools/init/init/questions/__init__.py @@ -24,6 +24,8 @@ limitations under the License. """ import json +import platform + from time import sleep from os import path from pathlib import Path @@ -869,7 +871,8 @@ class GlanceSetup(Question): env = dict(**_env) env['VER'] = '0.4.0' - env['IMG'] = 'cirros-{VER}-x86_64-disk.img'.format(**env) + env['ARCH'] = platform.machine() + env['IMG'] = 'cirros-{VER}-{ARCH}-disk.img'.format(**env) cirros_path = '{SNAP_COMMON}/images/{IMG}'.format(**env)