打包xournalpp经验总结

Linux下的手绘笔记软件跟windows相比实在是太弱了。之前一直在用xournal,这周末研究了下怎么打包xournalpp(以前研究过,不过可能是我技艺不精,本地编译都会跪)。打包好的地址在这里。有使用电磁笔的朋友可以安装体验一下。

安装

sudo zypper ar https://download.opensuse.org/repositories/home:/zpj_ustc/openSUSE_Tumbleweed zpj_ustc
sudo zypper ref zpj_ustc && sudo zypper in xournalpp

经验(tucao)

不得不吐槽一下这个软件的bug真的是太多了,默认的master分支根本没法保存任何设置。经过研究发现82d925f这一次commit好像修复了这个问题,于是加上了这个补丁就好了。

由于这个软件依赖poppler的一些内部代码,它在编译过程中会自动下载poppler的源文件,这些依赖似乎是无法由任何libpoppler*-devel提供的。而打包rpm构建过程是无法进行下载的,所以需要预先下载好与当前的poppler版本相等的源文件如poppler-0.62.0.tar.xz并在%prep中将它解压放置到合适的位置。

搞到这里Tumbleweed基本解决了,但是leap的oss源并不能提供boost依赖。另外poppler在leap-OSS源的版本号并不是tumbleweed中的0.62。为了不下载更多的poppler.tar.xz源文件,我们可以引入0.62版本的poppler来提供leap的poppler依赖,使用更新的版本。那么问题就来了,如何提供这些新的依赖?经过研究发现,我们可以使用SUSE提供的添加多个软件源到一个项目功能,通过修改我的home:zpj_ustc的元数据,给leap添加X11:common:Factorydevel:libraries:c_c++来分别提供poppler和boost相关依赖。

  <repository name="openSUSE_Leap_42.3">
    <path project="X11:common:Factory" repository="openSUSE_Leap_42.3"/>
    <path project="devel:libraries:c_c++" repository="openSUSE_Leap_42.3"/>
    <path project="openSUSE:Leap:42.3" repository="standard"/>
    <arch>x86_64</arch>
  </repository>

osc编译缓存加速

如果处于打包的尝试阶段,无数次的试错是不可避免的。悲剧的是这个软件完整编译一次需要我的8核CPU呼呼的转两三分钟。(推到OBS云端编译测试显然又太浪费资源了而且比较慢)。运行osc build --help查看osc的帮助,发现有一个选项是

    --ccache            use ccache to speed up rebuilds

这就是我们需要的了!以后每次编译测试只需要加上这个选项,可以大大减少试错的周期。

存在的问题

缩略图生成器Thumbnailer不知道怎么处理,即使本地编译安装在nautilus里面也看不到缩略图。