首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flatpak包libmysqlclient

Flatpak包libmysqlclient
EN

Stack Overflow用户
提问于 2018-09-27 09:54:32
回答 1查看 505关注 0票数 3

我在用平板电脑建立一个Vala程序。我需要连接到mysql服务器,这就是为什么我需要将libmysqlclient与我的平台捆绑在一起。

这就是为什么我将mysql_config添加到meson.build文件中。

代码语言:javascript
复制
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的一部分绑定的依赖项和库。虽然简单的应用程序可能只指定一个或两个模块,因此有较短的模块部分,但一些应用程序可以捆绑许多模块,因此有较长的模块部分。 GNOME字典的模块部分很短,因为它只包含应用程序本身,如下所示: “模块”:[{“名称”:“gnome-字典”,“源”:{“类型”:“归档”,"url":"https://download.gnome.org/sources/gnome-dictionary/3.26/gnome-dictionary-3.26.0.tar.xz","sha256":"387ff8fbb8091448453fd26dcf0b10053601c662e59581097bc0b54ced52e9ef“}] 可以看到,每个列出的模块都有一个名称(可以自由分配)和一个源列表。每个源都有一个类型,可用的类型包括: 存档- .tar或.zip存档文件Git - git存储库bzr - Bazaar存储库文件-本地文件(这些文件被复制到源目录) dir -本地目录(这些文件被复制到源目录)脚本-一个shell命令数组(这些命令放在shell脚本文件中) shell -一个在源提取修补程序期间运行的shell命令数组-一个修补程序(应用于源目录)额外数据-可以在安装时下载的数据;这可以包括存档或包文件。 对于每种源类型,都有不同的属性可用,这些属性在Flatpak Builder命令引用中列出。

有人能告诉我如何将libmysqlclient添加到我的平台上,以及如何使用mysql_config为我的平台设置正确的编译器标志吗?

这是我的清单(gnome构建器默认设置):

代码语言:javascript
复制
{
    "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"
                }
            ]
        }
    ]
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-30 20:26:01

Flatpak旨在使用容器化技术在Linux上分发应用程序。这允许Flatpak独立于当前发行版,如Ubuntu和Fedora。然而,创建Flatpak的人似乎需要发展分发包装者的一些技能。Flatpak的依赖项放置在清单的modules部分,这些依赖项将被构建并包含在Flatpak中。下面的内容是未经测试的,因此可能缺少一些细节,但它的目的是提供一个概述的想法,以帮助。有几种选择:

libmariadb

MariaDB是MySQL的一个分支。在对甲骨文公司收购MySQL的担忧之后,被社会所分出。我首先列出了这一点,因为这似乎是最简单的选择,至少从长期来看是如此。

MariaDB在GitHub上报道了mariadb-connector-c。出于某种原因,GitHub没有显示这些版本的校验和。所以MariaDB基金会下载部分是一个更好的选择。mariadb-connector-c可以连接到MariaDB和MySQL。

从源代码来看,mariadb-connector-c的构建系统是CMake。CMakeLists.txt文件中有您可能需要的选项,如WITH_SSL,但是下面的清单片段忽略了config-opts的使用。这个弗拉塔克GitHub问题可能有一个关于如何将config-opts用于CMake构建的相关示例。

因此,我们有一个源版本,一个校验和,我们知道构建系统。通过将类似的内容添加到清单的modules部分,您应该能够在Flatpak中包含mariadb-connector-c的构建:

代码语言:javascript
复制
{
  "name": "mariadb-connector-c",
  "buildsystem": "cmake",
  "sources": [
    {
      "type": "archive",
      "url": "https://downloads.mariadb.org/f/connector-c-3.0.8/mariadb-connector-c-3.0.8-src.tar.gz",
      "sha256": "2ca368fd79e87e80497a5c9fd18922d8316af8584d87cecb35bd5897cb1efd05"
    }
  ]
}

这也遗漏了cleanup密钥。

主要的问题是如何使它与您的Vala应用程序一起工作。pkg-config文件称为libmariadb.pc。因此,您的VAPI需要重命名为libmariadb.vapi。您可以将mysql.vapi/usr/share/复制到本地应用程序源目录,重命名为libmariadb.vapi。您将需要调整您的meson.build以将其作为VAPI搜索目录来包含,并且不再需要搜索mysql_configpkg-config将代替mysql_config的工作。

看起来MySQL C头文件仍然是maria-connector-c的一部分。祈祷它能起作用。C标头中还有一些特定于MariaDB的附加符号。如果您想修改VAPI,请阅读手动编写VAPI。之后,请考虑提交对Vala主线存储库的增强。

mysqlclient

MySQL似乎需要下载服务器才能构建客户机。我从这个页面开始,标题是下载连接器/C (libmysqlclient)。这提示Linux‘客户端实用程序包可以从MySQL社区服务器下载页面获得’。下载MySQL社区服务器页面没有提到‘客户端实用程序包’,只允许下载服务器和C客户机的300MiB+包。这就是为什么我建议从长远来看,libmariadb选项可能是更好的选择。还有一个页面MySQL连接器/C(存档版本),其中存档的版本是8.7M下载。首先,使用旧版本可能是一个更好的选择。

Flatpak清单将类似于用于libmariadb的清单。MySQL源代码可从GitHub获得也使用CMake。

MySQL 8的CMakeLists.txt文件确实显示pkg-config文件是mysqlclient.pc。所以Vala VAPI应该是mysqlclient.vapi。欢迎对Vala存储库的贡献来修复这个问题。通过使用pkg-config名称,您应该不再需要在meson.build中找到mysql_config

我还对Flathub储存库进行了搜索,以查看是否有其他项目在其清单中使用mysqlclientlibmariadb。什么也没发现。

卡板和磁带选项

如果您想要一个粗略的原型解决方案,那么Flatpak确实提供了一个simple构建类型。这允许运行命令,比如cp。因此,一个更快的选择可能是将本地MySQL客户端文件复制到Flatpak。这至少将允许您在开发方面取得进展,并返回到为最终版本实现一个健壮的解决方案。有关GitHub问题构建的示例,请参阅此simpleLibreOffice Flathub清单。另外,Flatpak文件结构也记录在要求和公约Flatpak沙箱内的典型文件系统中。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52534250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档