openSUSE:打包 vdr

跳转到:导航搜索


打包 VDR 插件的指南

本指南适用于从版本 13.2 开始的 openSUSE,以及更新的 vdr 构建服务仓库(VDR 版本 >= 2.0.0)。

命名

VDR 插件通常命名为 vdr-something。根据其他发行版的惯例,软件包应命名为 vdr-plugin-something

构建要求

VDR 插件软件包需要 BuildRequire vdr-devel。此软件包提供了一些方便的宏来简化 spec 文件。

运行时要求

VDR 插件软件包需要 PreReq vdr(abi) = %{vdr_apiversion},因为插件仅适用于特定版本的 vdr。还有一个便利宏,您可以执行 PreReq %{vdr_prereq}

  • %vdr_apiversion - VDR 插件 API 的版本,例如 '2.0.6'
  • %vdr_localedir - 翻译文件所在的位置
  • %vdr_libdir - 插件库所在的位置
  • %vdr_includedir - VDR 头文件所在的位置
  • %vdr_videodir - 视频目录所在的位置(/var/spool/video
  • %vdr_sysconfdir - 配置文件所在的位置(/etc/vdr
  • %vdr_make - 调用 'make' 并自动设置 VDRDIR、LIBDIR 和 LOCALEDIR
  • %vdr_find_locale - 列出区域设置文件并将列表放入 vdrlocale.files
  • %vdrname - VDR 软件包的名称,稳定版本为 'vdr'。通过将名称设为宏,有机会在构建 vdr 的开发版本时无需进行太多更改。这已被弃用。一旦我们开始构建开发版本,这将发生在单独的构建服务项目中,因此不需要这种技巧。

旧式插件的 spec 文件模板

“旧”插件使用 %vdr_make 构建,其含义为 make VDRDIR=%{vdr_includedir} LIBDIR=. LOCALEDIR=locale。插件被放置在当前目录中,作为 libvdr-<pluginname>.so(非常旧的插件)或 libvdr-<pluginname>.so.%{vdr_apiversion}(稍新的插件)。区域设置文件被放置在 locale/ 子目录中。旧插件通常没有 make install 目标,因此需要在 %install 中手动完成安装

 %define pluginname epgfixer
 Name:           vdr-plugin-%{pluginname}
 Version:        0.3.1
 Release:        0
 Summary:        A VDR plugin that fixes EPG data
 License:        GPL-2.0
 Group:          Hardware/TV
 Url:            http://projects.vdr-developer.org/projects/plg-epgfixer
 Source0:        vdr-%{pluginname}-%{version}.tar.bz2
 BuildRequires:  gcc-c++
 BuildRequires:  pcre-devel
 BuildRequires:  pkg-config
 BuildRequires:  vdr-devel
 PreReq:         %{vdr_prereq}
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 
 %description
 Epgfixer is a VDR plugin for doing extra fixing of EPG data.
 
 %prep
 %setup -q -n %{pluginname}-%{version}
 %patch0 -p 1
 
 %build
 %{vdr_make}
 
 %install
 install -d %{buildroot}%{_libdir}/vdr
 install -d %{buildroot}%{vdr_localedir}
 install libvdr-epgfixer.so.%{vdr_apiversion} %{buildroot}%{_libdir}/vdr/
 cp -a locale/* %{buildroot}%{vdr_localedir}/
 %{vdr_find_locale}
 
 %files -f vdrlocale.files
 %defattr(-,root,root)
 %{_libdir}/vdr/*
 %{vdr_dirs}
 %doc COPYING HISTORY README
 
 %changelog

请注意 PreReq。像此示例中的简单插件也可以使用普通的 Requires。但是,如果插件安装了必须由 vdr 可写的配置文件,则必须预先要求 vdr,因为 vdr 软件包会创建拥有配置文件的 vdr 用户。

“现代”插件的 spec 文件差异

当前带有“现代”spec 文件的 VDR 插件构建方式几乎与标准软件相同

 %build
 make %{?_smp_mflags} VDRDIR=%{vdr_includedir}
 
 %install
 make install VDRDIR=%{vdr_includedir} DESTDIR=%{buildroot}
 %vdr_find_locale 

通常它们需要 VDRDIR=%{vdr_includedir} 来在 %{vdr_includedir}/Make.config 中找到 VDR 配置文件。