Have a file from one part be available at a specific directory

Hi Folks,

I have a config file in one of my parts that needs to be available at a different location in my snap structure.

so this file “parts/tis/src/data/uvc-extensions/usb3.xml” needs to be available at “usr/share/uvcdynctrl/data/199e”

How would I go about to acheive this?

Any help is greatly appreciated!

This is my yaml file:

apps:

  python:
      command: python3
      plugs: [camera,framebuffer]
      environment:
          LD_LIBRARY_PATH: $LD_LIBRARY_PATH:$SNAP/home/ubuntu/mysnaps/snaps/parts/tis/install/usr/lib/aarch64-linux-gnu/gstreamer-1.0:$SNAP/lib/tcam-0:$SNAP/usr/lib/aarch64-linux-gnu/blas:$SNAP/usr/lib/aarch64-linux-gnu/lapack
          GST_PLUGIN_PATH: $SNAP/usr/lib/aarch64-linux-gnu/gstreamer-1.0:$SNAP/home/ubuntu/mysnaps/snaps/parts/tis/install/usr/lib/aarch64-linux-gnu/gstreamer-1.0:$SNAP/lib/tcam-0
          GST_PLUGIN_SYSTEM_PATH : $SNAP/usr/lib/aarch64-linux-gnu/gstreamer-1.0
          GST_PLUGIN_SCANNER: $SNAP/usr/lib/aarch64-linux-gnu/gstreamer1.0/gstreamer-1.0/gst-plugin-scanner
          GI_TYPELIB_PATH: $SNAP/usr/lib/girepository-1.0:$SNAP/usr/lib/aarch64-linux-gnu/girepository-1.0


  stream:
      command: gst-launch-1.0 tcambin ! video/x-raw, format=GRAY8, width=640, height=480, framerate=60/1 ! videoconvert ! fbdevsink
      plugs: [camera,framebuffer]
      environment:
          LD_LIBRARY_PATH: $LD_LIBRARY_PATH:$SNAP/home/ubuntu/mysnaps/snaps/parts/tis/install/usr/lib/aarch64-linux-gnu/gstreamer-1.0:$SNAP/lib/tcam-0
          GST_PLUGIN_PATH: $SNAP/usr/lib/aarch64-linux-gnu/gstreamer-1.0:$SNAP/home/ubuntu/mysnaps/snaps/parts/tis/install/usr/lib/aarch64-linux-gnu/gstreamer-1.0:$SNAP/lib/tcam-0
          GST_PLUGIN_SYSTEM_PATH : $SNAP/usr/lib/aarch64-linux-gnu/gstreamer-1.0
          GST_PLUGIN_SCANNER: $SNAP/usr/lib/aarch64-linux-gnu/gstreamer1.0/gstreamer-1.0/gst-plugin-scanner

  iris:
      command: flask run --host=0.0.0.0 #--port=80 --no-reload   
      daemon: simple
      restart-condition: always
      plugs: [home, network, network-bind]
      environment:
          LD_LIBRARY_PATH: $LD_LIBRARY_PATH:$SNAP/home/ubuntu/mysnaps/snaps/parts/tis/install/usr/lib/aarch64-linux-gnu/gstreamer-1.0:$SNAP/lib/tcam-0:$SNAP/usr/lib/aarch64-linux-gnu/blas:$SNAP/usr/lib/aarch64-linux-gnu/lapack
          GST_PLUGIN_PATH: $SNAP/usr/lib/aarch64-linux-gnu/gstreamer-1.0:$SNAP/home/ubuntu/mysnaps/snaps/parts/tis/install/usr/lib/aarch64-linux-gnu/gstreamer-1.0:$SNAP/lib/tcam-0
          GST_PLUGIN_SYSTEM_PATH : $SNAP/usr/lib/aarch64-linux-gnu/gstreamer-1.0
          GST_PLUGIN_SCANNER: $SNAP/usr/lib/aarch64-linux-gnu/gstreamer1.0/gstreamer-1.0/gst-plugin-scanner
          FLASK_APP: $SNAP/incuvers-iris/
          LC_ALL: C.UTF-8
          LANG: C.UTF-8
parts:
  tis:
    source-type: git
    source: https://github.com/TheImagingSource/tiscamera
    plugin: cmake
    #organize:
    #    src/data/uvc-extensions : usr/share/uvcdynctrl/data/199
    #stage:
    #    - usr/share/uvcdynctrl/data/199
    prime: ['*']
    #    override-pull: |  
        #ls $SNAP/usr/share/
        #mkdir $SNAP/usr/share/uvcdynctr
        #mkdir $SNAP/usr/share/uvcdynctr/data/
        #mkdir usr/share/uvcdynctrl
        #mkdir $SNAP/usr/share/uvcdynctrl/data
        #mkdir $SNAP/usr/share/uvcdynctrl/data/199e

#        snapcraftctl pull
#        pwd
#        ls
        #mkdir usr/share/uvcdynctrl/data/199e
        #pwd
        #ls
        #echo "=================="
        #  src/data/uvc-extensions/
        #cp src/data/uvc-extensions/*.xml $SNAP/usr/share/uvcdynctrl/data/199e
        #snapcraftctl stage
    build-packages:
            - gstreamer1.0-tools
            - git
            - g++
            - pkg-config
            - uuid-dev
            - libudev-dev
            - libgstreamer1.0-dev
            - libgstreamer1.0-0
            - libgstreamer-plugins-base1.0-dev
            - libglib2.0-dev
            - libgirepository1.0-dev
            - libusb-1.0-0-dev
            - libzip-dev
            - python3-setuptools
            - libusb-1.0-0
            - libgl1
            - libglvnd0
            - libglx0
            - libgpm2
            - libslang2
            - uvcdynctrl # needed to load up uvc extension units
    stage-packages:
            - gstreamer1.0-tools
            - libusb-1.0-0
            - libgstreamer1.0-0
            - libgstreamer1.0-dev
            - libgstreamer-plugins-base1.0-0
            - gstreamer1.0-plugins-good
            - gstreamer1.0-plugins-bad
            - liborc-0.4-0
            - libpcre2-8-0
            - udev
            - uvcdynctrl # needed for udev rules
    after:
        - python-stuff

  uvc:
    plugin: dump
    source: ./parts/tis/src/data/uvc-extensions
    stage:
      - usb3.xml
    after:
      - tis

  python-stuff:
    plugin: python
    python-version: python3
    python-packages:
       [flask]
    stage-packages:
            - python3-numpy
            - libatlas-base-dev
            - libatlas3-base
            - libblas3
            - liblapack3
            - python3-gi
            - python3-gst-1.0
            - gir1.2-gstreamer-1.0
            - gir1.2-gst-plugins-base-1.0

You can use the organize keyword to move files about:

...
parts:
  tis:
    ...
    organize:
      parts/tis/src/data/uvc-extensions/usb3.xml: usr/share/uvcdynctrl/data/199e
...