misc: fix snap image build

Clean up snapcraft.yaml bit rot, switch to Ubuntu 20.04, add README.md

Type: improvement

Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: I2e0d3925cf43541e70b59083f8c91af539aa34e6
This commit is contained in:
Dave Barach
2021-01-26 10:51:13 -05:00
committed by Dave Barach
parent 86f1232dde
commit 832a316526
3 changed files with 92 additions and 5 deletions

83
extras/snap/README.md Normal file
View File

@ -0,0 +1,83 @@
General
-------
The external dependency package will not build in the snapcraft
vm. The path of least resistance is to copy it to the root of the
(original) workspace before running the prep script.
Snapcraft has mount issues except under /home. Run the prep script and
copy the entire directory (including the .tgz file) under
/home/yourself.
Run the prep script
-------------------
```
$ cd <vpp-workspace>/extras/snap
$ ./prep
```
Copy data to /home (if necessary)
```
$ mkdir /home/xxx
$ cd <vpp-workspace>/extras/snap
$ cp * /home/xxx
Set snapcraft environment variables
-----------------------------------
Minimum requirements:
```
SNAPCRAFT_BUILD_ENVIRONMENT_MEMORY=16G
SNAPCRAFT_BUILD_ENVIRONMENT_DISK=32G
```
Optional:
```
SNAPCRAFT_BUILD_ENVIRONMENT_CPU=8
SNAPCRAFT_ENABLE_DEVELOPER_DEBUG=yes
```
Run snapcraft
-------------
With luck, simply running snapcraft will produce the snap
```
$ <environment-variable-settings> snapcraft [--debug]
```
Rerunning snapcraft phases
--------------------------
Here's how to (re)run individual phases, to avoid starting from
scratch N times in case of errors:
```
snapcraft pull [<part-name>]
snapcraft build [<part-name>]
snapcraft stage [<part-name>]
snapcraft prime [<part-name>]
snapcraft snap or snapcraft
```
Restart without rebuilding VM
-----------------------------
To restart from scratch without rebuilding the VM:
```
snapcraft clean vpp
```
Delete (all) snapcraft VMs
--------------------------
```
for vm in $(multipass list | awk '{print $1}' | grep ^snapcraft-); do
multipass delete $vm --purge
done
```

View File

@ -5,6 +5,8 @@ set -eu
cd ../../build-root cd ../../build-root
echo "make distclean..." echo "make distclean..."
make distclean > /dev/null 2>&1 make distclean > /dev/null 2>&1
# make sure we don't trip over a symbolic link later
rm -f .ccache
cd ../ cd ../
echo "construct source tarball..." echo "construct source tarball..."
tar -zcf extras/snap/vpp.tgz --exclude=extras/snap/vpp.tgz . tar -zcf extras/snap/vpp.tgz --exclude=extras/snap/vpp.tgz .

View File

@ -1,6 +1,6 @@
name: vpp name: vpp
base: core18 base: core20
version: '20.05' version: '21.01'
summary: Vector Packet Processor summary: Vector Packet Processor
description: | description: |
High performance user-mode network stack High performance user-mode network stack
@ -17,14 +17,16 @@ parts:
- gcc-8 - gcc-8
- make - make
- libnuma-dev - libnuma-dev
- libpcap-dev
stage-packages: stage-packages:
# For the dpdk plugin # For the dpdk plugin
- libnuma1 - libnuma1
override-build: | override-build: |
UNATTENDED=y make install-dep build-release dpkg -i vpp-ext-deps*.deb || true
UNATTENDED=y make install-dep install-ext-deps build-release
override-prime: | override-prime: |
# Copy the build results into SNAPCRAFT_PRIME # Copy the build result into SNAPCRAFT_PRIME
cd $SNAPCRAFT_PART_BUILD/build-root/install-vpp-native cd $SNAPCRAFT_PART_SRC/../build/build-root/install-vpp-native
tar cf - . | (cd $SNAPCRAFT_PRIME ; tar xf -) tar cf - . | (cd $SNAPCRAFT_PRIME ; tar xf -)
# Copy staged libraries into SNAPCRAFT_PRIME # Copy staged libraries into SNAPCRAFT_PRIME
cp $SNAPCRAFT_STAGE/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/lib* $SNAPCRAFT_PRIME/vpp/lib cp $SNAPCRAFT_STAGE/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/lib* $SNAPCRAFT_PRIME/vpp/lib