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 配置文件。