我正在尝试用 flatpak 构建一个 Vala 程序。我需要连接到一个 mysql 服务器,这就是为什么我需要libmysqlclient
与我的 flatpak 捆绑在一起。
这就是我添加mysql_config
到 meson.build 文件中的原因。
project('zeiterfassunggtk', ['c', 'vala'], version: '0.1.0',
meson_version: '>= 0.40.0',
)
i18n = import('i18n')
mysql_config = find_program('mysql_config')
mysql_vapi = meson.get_compiler('vala').find_library('mysql')
mysql_dep = declare_dependency(c_args: run_command([mysql_config, '--cflags']).stdout().split(),
link_args: run_command([mysql_config, '--libs']).stdout().split(),
dependencies: [mysql_vapi])
subdir('data')
subdir('src')
subdir('po')
meson.add_install_script('build-aux/meson/postinstall.py')
现在的问题是 mysql_config 在 flatpak 运行时中不可用。所以我需要将它与我的 flatpak 捆绑在一起。
然而,Flatpak 文档对我来说并不是很有帮助。
模块
模块列表指定要作为构建过程的一部分构建的每个模块。其中一个模块是应用程序本身,其他模块是捆绑为 Flatpak 一部分的依赖项和库。虽然简单的应用程序可能只指定一个或两个模块,因此模块部分很短,但一些应用程序可以捆绑大量模块,因此模块部分很长。
GNOME Dictionary 的模块部分很短,因为它只包含应用程序本身,看起来像:
"modules": [ { "name": "gnome-dictionary", "sources": [ { "type": "archive", "url": "https://download.gnome.org/sources/gnome-dictionary/3.26/gnome-dictionary-3.26.0.tar.xz", "sha256": "387ff8fbb8091448453fd26dcf0b10053601c662e59581097bc0b54ced52e9ef" } ] } ]
可以看出,每个列出的模块都有一个名称(可以自由分配)和一个源列表。每个来源都有一个类型,可用的类型包括:
archive - .tar or .zip archive files git - Git repositories bzr - Bazaar repositories file - local file (these are copied into the source directory) dir - local directory (these are copied into the source directory) script - an array of shell commands (these are put in a shellscript file) shell - an array of shell commands that are run during source extraction patch - a patch (are applied to the source directory) extra-data - data that can be downloaded at install time; this can include archive or package files
每种源类型都有不同的属性,这些属性在 Flatpak Builder 命令参考中列出。
有人可以告诉我如何添加libmysqlclient
到我的 flatpak 以及如何使用mysql_config
为我的 flatpak 设置正确的编译器标志。
这是我的清单(gnome-builder 默认):
{
"app-id" : "org.gnome.Zeiterfassunggtk",
"runtime" : "org.gnome.Platform",
"runtime-version" : "3.28",
"sdk" : "org.gnome.Sdk",
"command" : "zeiterfassunggtk",
"finish-args" : [
"--share=network",
"--share=ipc",
"--socket=x11",
"--socket=wayland",
"--filesystem=xdg-run/dconf",
"--filesystem=~/.config/dconf:ro",
"--talk-name=ca.desrt.dconf",
"--env=DCONF_USER_CONFIG_DIR=.config/dconf"
],
"build-options" : {
"cflags" : "-O2 -g",
"cxxflags" : "-O2 -g",
"env" : {
"V" : "1"
}
},
"cleanup" : [
"/include",
"/lib/pkgconfig",
"/man",
"/share/doc",
"/share/gtk-doc",
"/share/man",
"/share/pkgconfig",
"/share/vala",
"*.la",
"*.a"
],
"modules" : [
{
"name" : "zeiterfassunggtk",
"buildsystem" : "meson",
"config-opts" : [
"--libdir=lib"
],
"builddir" : true,
"sources" : [
{
"type" : "git",
"url" : "file:///home/g.zehetner/Projekte/ZeiterfassungGtk"
}
]
}
]
}