Linux发行版的打包#

需求#

  • Python

  • MuPDF 检出(包括子模块)。

  • PyMuPDF 检出。

  • scripts/sysinstall.py:g_sys_packages 中列出的系统包。

  • pyproject.toml 中列出的 Python 包。

运行测试的额外要求:

  • scripts/gh_release.py:test_packages 中列出的 Python 包。

一般步骤#

  • 构建并安装 MuPDF:

    • 安装所需的系统包。

    • 在 MuPDF 的 Makefile 上运行 make install-shared-python,需要至少这些 make 变量:

      • DESTDIR 设置为安装目录,例如 /

      • prefix 设置为相对于 DESTDIR 的位置,例如 /usr/local/usr。必须以 / 开头。

      • USE_SYSTEM_LIBS=yes

      • HAVE_LEPTONICA=yes

      • HAVE_TESSERACT=yes

  • 构建和安装 PyMuPDF:

    • 运行 pip install ./PyMuPDFpip wheel ./PyMuPDF 至少需要这些环境变量:

      • PYMUPDF_SETUP_MUPDF_BUILD=(空字符串)以防止下载和构建硬编码的MuPDF版本。

      • CFLAGSCXXFLAGSLDFLAGS 设置为允许可见安装的 MuPDF 头文件和共享库。

  • 运行 PyMuPDF 测试:

    • 确保所需的Python包可用。

    • 运行 pytest -k "not test_color_count and not test_3050" PyMuPDF

      • 测试 test_color_count 如果 MuPDF 没有使用 PyMuPDF 的自定义 config.h 构建,则被认为是失败。

      • 测试 test_3050 已知在没有构建自身第三方库的情况下会失败。

使用 scripts/sysinstall.py#

scripts/sysinstall.py 提供了一个关于构建、安装和测试命令的有用示例,这些命令已知可以正常工作,因为它由 Github action .github/workflows/test_sysinstall.yml 定期运行。

  • 使用 -h 运行或查看文档字符串以获取详细的使用信息。

  • 它使用Debian风格的 apt 命令来安装系统包。

  • 默认情况下,它假设本地 git 检出 mupdf/PyMuPDF/

要运行完整构建,安装并测试本地假根和系统根:

./PyMuPDF/scripts/sysinstall.py
./PyMuPDF/scripts/sysinstall.py --root /

要查看将要运行的命令而不实际运行它们:

./PyMuPDF/scripts/sysinstall.py -m 0 -p 0 -t 0

另见#

  • setup.py的初始文档注释中包含有关在构建PyMuPDF时使用的环境变量的详细信息。