1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
summary: Test for interfaces exposing libraries on classic userspace
details: Test for interfaces exposing libraries on classic userspace
systems: [ubuntu-24*]
environment:
PROVIDER_SNAP1: libs-provider1
PROVIDER_SNAP2: libs-provider2
LIBS1_PATH: $PROVIDER_SNAP1/libs
LIBS2_PATH: $PROVIDER_SNAP2/libs
prepare: |
gcc square.c -o libsquare.so -fPIC -shared
gcc multiply.c -o libmultiply.so -fPIC -shared
gcc user.c -lsquare -lmultiply -L. -o user
mkdir -p "$LIBS1_PATH"
cp libsquare.so "$LIBS1_PATH"
snap pack "$PROVIDER_SNAP1"
mkdir -p "$LIBS2_PATH"
cp libmultiply.so "$LIBS2_PATH"
snap pack "$PROVIDER_SNAP2"
execute: |
LDCONF_PATH=/etc/ld.so.conf.d/snap.system.conf
egl_vendor_cfg1=/usr/share/glvnd/egl_vendor.d/15_snap_libs-provider1_egl-driver-libs.json
egl_vendor_cfg2=/usr/share/glvnd/egl_vendor.d/15_snap_libs-provider2_egl-driver-libs.json
snap install --dangerous "$PROVIDER_SNAP1"_*.snap
snap install --dangerous "$PROVIDER_SNAP2"_*.snap
snap connect system:cuda-driver-libs "$PROVIDER_SNAP1":cuda-driver-libs
snap connect system:cuda-driver-libs "$PROVIDER_SNAP2":cuda-driver-libs
MATCH /snap/"$PROVIDER_SNAP1"/x1/libs < "$LDCONF_PATH"
MATCH /snap/"$PROVIDER_SNAP2"/x1/libs < "$LDCONF_PATH"
ldd user | MATCH /snap/"$PROVIDER_SNAP1"/x1/libs/libsquare.so
ldd user | MATCH /snap/"$PROVIDER_SNAP2"/x1/libs/libmultiply.so
./user 2 | MATCH 8
snap connect system:egl-driver-libs "$PROVIDER_SNAP1":egl-driver-libs
snap connect system:egl-driver-libs "$PROVIDER_SNAP2":egl-driver-libs
snap disconnect system:cuda-driver-libs "$PROVIDER_SNAP1":cuda-driver-libs
snap disconnect system:cuda-driver-libs "$PROVIDER_SNAP2":cuda-driver-libs
# Libraries are provided also by the egl slots
ldd user | MATCH /snap/"$PROVIDER_SNAP1"/x1/libs/libsquare.so
ldd user | MATCH /snap/"$PROVIDER_SNAP2"/x1/libs/libmultiply.so
./user 2 | MATCH 8
# Check EGL vendor configuration files
MATCH '"library_path": "libsquare.so"' < "$egl_vendor_cfg1"
MATCH '"library_path": "libmultiply.so"' < "$egl_vendor_cfg2"
snap remove libs-provider2
MATCH /snap/"$PROVIDER_SNAP1"/x1/libs < "$LDCONF_PATH"
not MATCH /snap/"$PROVIDER_SNAP2"/x1/libs < "$LDCONF_PATH"
MATCH '"library_path": "libsquare.so"' < "$egl_vendor_cfg1"
not stat "$egl_vendor_cfg2"
snap remove libs-provider1
not stat "$LDCONF_PATH"
ldd user | MATCH 'libsquare.so => not found'
ldd user | MATCH 'libmultiply.so => not found'
not stat "$egl_vendor_cfg1"
not stat "$egl_vendor_cfg2"
|