Ubuntu snap packaging with Qt: fonts missing
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.
18.04 snap qt
add a comment |
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.
18.04 snap qt
add a comment |
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.
18.04 snap qt
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.
18.04 snap qt
18.04 snap qt
asked Jan 17 at 23:33
Anton KasabutskiAnton Kasabutski
112
112
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
I had to work with user configuration folder that snap creates.
- Create wrapper and use as main app. Wrapper will call actual application.
- Before starting application, wrapper will copy file from
$SNAP/etc/fonts/fonts.conf
to$SNAP_USER_DATA/.config/fontconfig/fonts.conf
. - 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
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "89"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f1110694%2fubuntu-snap-packaging-with-qt-fonts-missing%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
I had to work with user configuration folder that snap creates.
- Create wrapper and use as main app. Wrapper will call actual application.
- Before starting application, wrapper will copy file from
$SNAP/etc/fonts/fonts.conf
to$SNAP_USER_DATA/.config/fontconfig/fonts.conf
. - 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
add a comment |
I had to work with user configuration folder that snap creates.
- Create wrapper and use as main app. Wrapper will call actual application.
- Before starting application, wrapper will copy file from
$SNAP/etc/fonts/fonts.conf
to$SNAP_USER_DATA/.config/fontconfig/fonts.conf
. - 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
add a comment |
I had to work with user configuration folder that snap creates.
- Create wrapper and use as main app. Wrapper will call actual application.
- Before starting application, wrapper will copy file from
$SNAP/etc/fonts/fonts.conf
to$SNAP_USER_DATA/.config/fontconfig/fonts.conf
. - 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
I had to work with user configuration folder that snap creates.
- Create wrapper and use as main app. Wrapper will call actual application.
- Before starting application, wrapper will copy file from
$SNAP/etc/fonts/fonts.conf
to$SNAP_USER_DATA/.config/fontconfig/fonts.conf
. - 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
answered Jan 24 at 2:42
Anton KasabutskiAnton Kasabutski
112
112
add a comment |
add a comment |
Thanks for contributing an answer to Ask Ubuntu!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f1110694%2fubuntu-snap-packaging-with-qt-fonts-missing%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown