File: task.yaml

package info (click to toggle)
snapd 2.71-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 79,536 kB
  • sloc: ansic: 16,114; sh: 16,105; python: 9,941; makefile: 1,890; exp: 190; awk: 40; xml: 22
file content (64 lines) | stat: -rw-r--r-- 2,522 bytes parent folder | download
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"