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')
問題は、flatpak ランタイムで mysql_config を使用できないことです。そのため、フラットパックにバンドルする必要があります。
ただし、Flatpak のドキュメントはあまり役に立ちませんでした。
モジュール
モジュール リストは、ビルド プロセスの一部としてビルドされる各モジュールを指定します。これらのモジュールの 1 つはアプリケーション自体であり、他のモジュールは Flatpak の一部としてバンドルされている依存関係とライブラリです。単純なアプリケーションは 1 つまたは 2 つのモジュールしか指定しないため、モジュール セクションが短くなる場合がありますが、一部のアプリケーションでは多数のモジュールをバンドルできるため、モジュール セクションが長くなります。
GNOME ディクショナリのモジュール セクションは短く、アプリケーション自体が含まれているだけで、次のようになっています。
"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に追加する方法と、flatpakmysql_config
に正しいコンパイラ フラグを設定する方法を教えてください。
これは私のマニフェストです (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"
}
]
}
]
}