3

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 コマンド リファレンスに一覧表示されています。

libmysqlclientflatpakに追加する方法と、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"
                }
            ]
        }
    ]
}
4

1 に答える 1