LibreOffice 源代码、每日构建版及 bibisect 仓库国内镜像

发表于

分类:

在国内的网络环境下,克隆 LibreOffice 的源代码仓库、克隆翻译子模块仓库,编译时获取依赖的 external_tarballs,以及参与 bug 诊断时获取 “二进制二分查找 (bibisect) ” 仓库,都存在很大的困难,严重影响了大家的参与度。

通过折腾,我把我手头的一些资源放在了自己的国内服务器上,供需要的人自由获取,以方便大家参与。

https://go.suokunlong.cn:88/cgit

一、源代码、子模块

克隆地址可在以上链接各项目页面的 clone 部分找到。比如:

git clone git://git.libreofficechina.org/core.git
git clone git://go.suokunlong.cn/lo/core

编译时如果在 autogen.input 中(或者 ./autogen.sh 的命令行参数中)启用 –with-lang=zh-CN 或者其他语言,则会用到 translations 子模块,make 时默认是从 gerrit 克隆这个子模块,墙内访问会卡在这个环节。此时,可以按下 Ctrl-C 键终止 make,然后将 .git/config 中 [submodule “translations”] 段的 url 改为镜像地址(见以上列出的镜像仓库 translations 页面中的 clone 部分),比如:

# git/config 中 [submodule "translations"] 段的 url 改为:
url = git://go.suokunlong.cn/lo/translations

# core源代码中 g 工具默认是没有开启 submodule update 中的 --progress 参数的。手动通过以下命令来更新子模块,可以显示进度:
git submodule update --progress

如果您要参与代码贡献,需要知道官方的代码 review 是统一在 https://gerrit.libreoffice.org 上进行的,不能在这些只读镜像上 git push,也不能在 github 上提交 PR. 具体方式请参考 wiki: https://wiki.documentfoundation.org/Development

二、external_tarballs (编译时需要从 dev-www.libreoffice.org/src/ 下载的第三方源代码包)

这是编译时的依赖包,各种各样的,官方统一放到 https://dev-www.libreoffice.org/src/ 中,编译时会自动从这里去抓取。但是,服务器在德国,国内如果不科学上网的话下载一个月也下不完。我将我目前用到的缓存包统一放到了如下位置。需要的可以在编译时显示正在下载某个包时按下 Ctrl-C 键,然后手动通过浏览器在以下位置找到这个包,下载后放到对应的位置,然后再运行 make,获取另一个包时再中断然后再手动下载(默认是放在源代码根目录下的 external/tarballs 文件夹,但是您可以在 autogen.input 中通过 –with-external-tar = … 来指定其他位置,从而在不同分支的编译中共享这个目录)。

https://go.suokunlong.cn:88/dl/libreoffice/external_tarballs/

三、“二进制二分查找”(bibisect)仓库

LibreOffice 的 QA(质量控制)团队有一个很神奇的工具,叫做 bibisect。熟悉 git 的同学应该知道,git 里有一个 bisect(二分查找),但这里我们所说的是 bibisect(二进制二分查找),两个 bi.

简单说,就是:git 的 bisect 是源代码层面的二分查找,目的是通过二分树算法来快速找到造成某个“倒退”问题的 commit。但是,LibreOffice 的源代码编译很费时间,我们从源代码层面去 bisect 是几乎不可能的。因此,有人就发明了 bibisect,其原理是按照 libreoffice 的源代码 commit 的原有顺序先编译,然后将每一次编译所得的可直接运行的二进制文件作为一次 commit,放到一个 git 仓库中。这样,QA 团队就能直接通过 git bisect 命令进行 bug 诊断,而不用多次去编译源代码了。

在实际中,每个 bibisect 仓库可能是每隔 n 个源代码 commit 进行一次编译(为了节省 bibisect 仓库的体积),这样的情况下 bibisect 的结果是只能将源代码 commit 范围锁定在一个比较小的范围内,再由开发者去判断到底是哪个 commit 造成了 bug(在 bugzilla 上会将这个 bug 标记关键词为 bibisected)。但是最新的几个bibisect 仓库中基本上都是每个源代码 commit 编译一次并放到 bibisect 仓库中,这种情况下 bibisect 完成后实际上就已经 bisect 了(这个 bug 可以被同时标记为 bibisect和 bisect)。

Bibisect 的详细说明,以及QA 团队的官方 bibisect 仓库可以在 wiki 页面上找到(中文翻译):

https://wiki.documentfoundation.org/QA/Bibisect/zh-cn

由于每个 bibisect 仓库体积会很大,所以国内的网速根本无法克隆,影响大家的参与度。我很早之前通过科学方式克隆了几个,最近又通过源代码构建的方式自己做 bibisect 仓库,现分享如下:

# 已归档的bundle仓库
https://go.suokunlong.cn:88/dl/libreoffice/bibisect/
# 尚未归档的 git 仓库
https://go.suokunlong.cn:88/cgit

其中:

  • bibisect-linux-64-6.0:涵盖从 libreoffice-5-4-branch-point 到 libreoffice-6-0-branch-point 之间的源代码 commit 对应的二进制构建,以及后续 libreoffice-6-0 分支上的构建。
  • bibisect-linux-64-6.1:暂缺,最近一段时间国外网站访问速度太太太慢了,欢迎补充。
  • ……
  • bibisect-linux-64-7.3-CN:我自己构建的仓库,涵盖从 libreoffice-6-4-branch-point 到 libreoffice-7-0-branch-point,仅包含 master 分支,启用了简体中文和繁体中文界面。

对于“已归档的bundle”仓库,你需要先下载该bundle包(用任何下载工具均可),然后从该bundle包直接 git clone,然后按照wiki中的指南进行bibisect即可。比如:

git clone ./linux-64-6.4.git-bundle bibisect-linux-64

对于“尚未归档的 git 仓库”,你需要使用 git clone 的方式克隆,例如:

git clone git://go.suokunlong.cn/lo/bibisect-linux-64-7.3-CN

我用于构建 bibisect 仓库的 Python 源代码可以在以下位置找到:

https://go.suokunlong.cn:88/cgit/lo/bibisect_tool/

四、每日构建版

目前 TDF官方提供的每日构建版已经启用了多国语言支持了,因此中文用户可以直接用来测试。但是,由于国内特殊的网络环境,从境外服务器下载速度可能很慢。为此,我专门写了一段Python代码每日将TDF官方的daily builds下载到我自己的服务器上:

https://go.suokunlong.cn:88/dl/libreoffice/daily/

由于制作镜像时的下载速度问题,我只下载了 Windows 和 Linux (DEB, RPM) 下的包,并且只提供主安装包以及语言包,不包含离线帮助包和SDK。如果有人需要Mac下的每日构建包,请留言以便我添加。

以上,读者有任何问题,请随时在下方留言。


评论:

《“LibreOffice 源代码、每日构建版及 bibisect 仓库国内镜像”》 有 15 条评论

  1. mmm

    发布于

    有没有windows下,编译好的工程文件

  2. charles

    发布于

    编译完成,如何提取sdk呢

  3. wsl

    发布于

    您好,有编译好的镜像么?

  4. 高原之狼

    发布于

    我和 zhw 遇到相同的问题,国内社区镜像1 git.libreofficechina.org 无法正常克隆,两个协议都不行:

    $ git clone –verbose git://git.libreofficechina.org/core.git libreoffice
    Cloning into ‘libreoffice’…
    Looking up git.libreofficechina.org … done.
    Connecting to git.libreofficechina.org (port 9418) … fatal: unable to connect to git.libreofficechina.org:
    git.libreofficechina.org[0: 122.114.165.2]: errno=Unknown error

    $ git clone –verbose https://git.libreofficechina.org/core.git libreoffice
    Cloning into ‘libreoffice’…
    POST git-upload-pack (gzip 62175 to 31202 bytes)
    error: RPC failed; HTTP 504 curl 22 The requested URL returned error: 504
    fatal: the remote end hung up unexpectedly

    已在 QQ 上向 ACTom 报告,在这里也提一下。

    改用 Kevin 你的社区镜像2 git://go.suokunlong.cn/lo/core 克隆,目前进度正常。

  5. zhw

    发布于

    online的库能给镜像个吗?

    1. 这里有:https://git.libreofficechina.org/
      如果克隆很慢或有任何问题,麻烦留言告知。

      1. zhw

        发布于

        git.libreofficechina.org[0: 122.114.165.2]: errno=Connection refused

        error: RPC failed; HTTP 504 curl 22 The requested URL returned error: 504 Gateway Time-out
        fatal: The remote end hung up unexpectedly

        1. 用浏览器打开:
          https://git.libreofficechina.org/online/

          底部有两个克隆链接(这两个链接是需要用git的,不是用浏览器的):
          https://git.libreofficechina.org/online.git
          git://git.libreofficechina.org/online.git

          因此,克隆方法为:
          git clone https://git.libreofficechina.org/online.git
          或者:
          git clone git://git.libreofficechina.org/online.git

  6. 由于运营商现在已经封掉了80和443端口,因此我更新了链接,使用了非标准端口。

    1. xuenhua

      发布于

      1. xuenhua

        发布于

        理解错了,配置错了,手工修改了makefile为您的地址速度很快了。

    2. xuenhua

      发布于

      1. Kevin Suo

        发布于

        已下载到了 https://go.suokunlong.cn:88/dl/libreoffice/extern/
        除了HistOOory_v0.9.zip以及download.opensuse.org文件夹。

  7. ACTom 搭建的社区仓库 https://git.libreofficechina.org 已经可以使用了,但目前的缺陷是:https 协议下的仓库目前是“哑 http”,这种方式下不支持 shallow 方式克隆(即 –depth 选项),而且克隆时无法显示进度。一个 workaround的办法是使用仓库下面给出的 git 协议方式,比如: git clone git://git.libreofficechina.org/core.

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注