2

I have binary and all resolved Qt dependencies packaged in tar.gz. I am using next yaml file for snap:

name: sample_name_lol_1
base: core18
version: '1.0.0'
summary: sample_summary_lol_2
description: |
  sample_desc_lol_3

grade: devel
confinement: devmode

parts:
  sample_name_lol_1:
    plugin: dump
    source: MyApp.tar.gz
    stage-packages: [
      ffmpeg,
      x264,
      x265,
      libopencv-core-dev,
      libopencv-imgproc-dev,
      libopencv-calib3d-dev,
      libblas-dev,
      liblapack-dev,
      libfontconfig1-dev,
      fonts-freefont-ttf,
      ttf-ubuntu-font-family
    ]

apps:
    MyApp:
        command: MyApp
        environment:
          LD_LIBRARY_PATH: $LD_LIBRARY_PATH:$SNAP/usr/lib/x86_64-linux-gnu/blas:$SNAP/usr/lib/x86_64-linux-gnu/lapack

Normal application run (say from regular unpacking tar.gz) would give me information about all fonts available on the system. However snap run (sample_name_lol_1.MyApp) won't see system fonts, only few of them (only 3 to be precise - sans, sans-serif, monospace). I found path after installation, /snap/sample_name_lol_1/x1/usr/share/fonts and /snap/sample_name_lol_1/x1/etc/fonts. Those places are read-only and I can't figure out, what exactly should be done, so Qt application will able to see at lease standard Ubuntu font.

1 Answer 1

0

I had to work with user configuration folder that snap creates.

  1. Create wrapper and use as main app. Wrapper will call actual application.
  2. Before starting application, wrapper will copy file from $SNAP/etc/fonts/fonts.conf to $SNAP_USER_DATA/.config/fontconfig/fonts.conf.
  3. Also application will modify newly copied file using "sed -i" command, where directories were changed to $SNAP location. Example: <dir>/usr/fonts... will become <dir>/snap/your_app/version/...

It doesn't seem like a clean solution, however it's acceptable solution for me by now.

name: sample_name
base: core18
version: '1.0.0'
summary: Sample Summary
description: |
  Sample Desc

grade: devel
confinement: devmode

parts:
  sample_name:
    plugin: dump
    source: sample_name.tar.gz
    stage-packages: [
      ffmpeg,
      x264,
      x265,
      libopencv-core-dev,
      libopencv-imgproc-dev,
      libopencv-calib3d-dev,
      libblas-dev,
      liblapack-dev,
      ttf-ubuntu-font-family
    ]
  fix-fontconfig:
    plugin: nil
    override-build: |
      mkdir $SNAPCRAFT_PART_INSTALL/bin
      echo "mkdir \$SNAP_USER_DATA/.config" >> $SNAPCRAFT_PART_INSTALL/bin/sample-wrapper.sh
      echo "mkdir \$SNAP_USER_DATA/.config/fontconfig" >> $SNAPCRAFT_PART_INSTALL/bin/sample-wrapper.sh
      echo "cp \$SNAP/etc/fonts/fonts.conf \$SNAP_USER_DATA/.config/fontconfig/fonts.conf" >> $SNAPCRAFT_PART_INSTALL/bin/sample-wrapper.sh
      echo "sed -i \"s#<dir>/usr#<dir>\$SNAP/usr#g\" \$SNAP_USER_DATA/.config/fontconfig/fonts.conf" >> $SNAPCRAFT_PART_INSTALL/bin/sample-wrapper.sh
      echo "\$SNAP/sample_name" >> $SNAPCRAFT_PART_INSTALL/bin/sample-wrapper.sh
    after: [sample_name]

apps:
    sample_name:
        command: sh $SNAP/bin/sample-wrapper.sh
        environment:
          LD_LIBRARY_PATH: $LD_LIBRARY_PATH:$SNAP/usr/lib/x86_64-linux-gnu/blas:$SNAP/usr/lib/x86_64-linux-gnu/lapack

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.