cwtex-q-fonts 字型打包

首先,為了瞭解打包的概要,所以照著〈How to create a GNU Hello RPM package/zh-tw
〉一文做了一次,約略知曉整個流程。

接著開始編輯 cwtex-q-fonts 的 spec 規格,這就像食譜一樣,只要寫得好,廚師就能直接煮出來。

嗯,講到這,我們得先準備好食材才行!
先切換到 ~/rpmbuild/SOURCES 擺放好所要的食材。也就是請前往 cwtex-q-fonts 的專案網站下載 0.2 版的封存檔,然後放到這個資料夾裡預備。抓下來的檔案叫做 cwtex-q-fonts-v02.tar.xz。

不過由於字型打包的 spec 樣板不在預設打包者工具中,要另外準備。所以如果你只有安裝前文所提及的 @development-tools 與 fedora-packager 的話還不夠,需要另外安裝:
sudo yum install fontpackages-devel

裝好後,就能利用下列指令參照內含多款字型的軟體包其 spec 樣板:

cd ~/rpmbuild/SPECS
rpmdev-newspec -t fonts-multi cwtex-q-fonts

接著就來編輯 cwtex-q-fonts.spec 吧!用 vi 或是 gedit 都可以,順手就好。

利用樣板生成的檔案中,可以看到由 < 與 > 括住的地方,那是讓打包者替換所要內容的。①、②、③ 等數字編號,是小提示,拉到檔案最下方有註解解釋那段作什麼用途,或是選用填入之類的,整份檔案編輯完成後,記得把數字編號與最下方不再需要的註解移掉。

由於是第一次打包內含多款字型的字型包,不是很有頭緒,因此下載了一些字型 source rpm 來參考。

cd ~/rpmbuild/SPRMS
yumdownloader --source google-droid-fonts cjkuni-uming-fonts wqy-microhei-fonts

用解壓縮軟體打開,找到附帶的 .spec 檔研究研究。

參考用 spec 檔開啟完後再回去 SPECS 資料夾。

cd ../SPECS

繼續改編 cwtex-q-fonts.spec 檔。

#global archivename %{name}-%{version} ② 這條,編號二的解釋說 Optional,不過我看 google-droid-fonts 中有設定,而且後面還可以利用,所以也就跟著設定了。cwtex-q-fonts 的下載版本是 0.2 版,不過封存檔名卻是 %{name}-v2,因此要將 %{version} 改成 v2,要不然一旦根據後續設定替換成 0.2 後,就抓不到封存檔了。

License 的部份根據下載回來的 copying.txt 可知是 GPLv2+。

SOURCE0 的地方就是要填入軟體包所含的源檔,所以填入下載回來的封存檔名,%{archivename}.tar.xz。

由於想要加入一些 fontconfig 檔作微調,雖然我還沒撰寫相關設定,但也開了相對應的空白檔案,檔名大致上長這樣:cwtex-q-fonts--fontconfig.conf,family 就是 ming、kai、yuan、hei、fangsong 等。由於這些檔案也是食材,所以也得放在 ~/rpmbuild/SOURCES 中。

因此 %global fontconf <①>-%{fontname} 這邊要把 <①> 替換成 fontconfig 的前綴二位數字;而 SOURCE 部份依序以 SOURCE1、SOURCE2.... 填入即可;%install 區段也要修改 <FAMILYX> 對應內容。

剩下欄位就該寫的寫一寫,沒什麼特別的。


再往下走,要注意的地方是拆包的部份,樣板 spec 希望打包者拆個 common 包裡面放這套字型共用的檔案,不過由於這套字型共用的只有著作權宣告、授權條款書,再加上我看抓回來的參考用 srpm 都沒有特別拆出 common,因此我也就不拆,先把相關內容註解掉看看後續會不會發生什麼錯誤,沒問題再拿掉。

接著是 # Repeat for every font family ➅ 的拆包了。這部份非常簡單,把 <FAMILY> 都替換成目標內容即可。不過由於我們沒有拆 common,所以著作權宣告、授權條款部份得自行補入,所以就參考 google-droid-fonts 在 %_font_pkg -n 開頭的這列下方插入以下內容。

%doc license.txt copying.txt

由於樣板內預設只有一組字型,所以要將內容複製貼上,再對應 ming、kai、hei、fangsong 等修改。

完成後就來到 %prep 區段。原本的樣板內只有 %setup -q 一列,不過 google-droid-fonts 內卻是 %setup -q -n %{archivename},所以查了一下〈How to create an RPM package〉中的說明,參數 -n 用於壓縮後目錄名稱與軟體包名稱不同之時,可以指定目錄名稱。由於下載回來的封存檔名稱與所要製作的軟體包不同,所以我也就同 droid 那樣設定了。

再往下到 %install 區段,大致上都不用動,樣板都已經寫得好好的了。只不過由於從 cwtex-q-fonts 專案抓回來的封存檔中,所有的字型檔都放在 ttf 這個子資料夾下,而不是第一層目錄中,因此我擔心內容中的 *.ttf 會讓 glob 抓不到,所以手動創造了個巨集名稱 %global archivefontdir ttf 放到檔頭,補入 %{archivefontdir}/ 放到 *.ttf 前,成為 %{archivefontdir}/*.ttf。

我參考了其他字型的 srpm 檔,發現其他字型封存檔都沒有把其字型放在 ttf 資料夾下,因此無法確定這樣作是否為常規作法,總之先寫好試試看,不行再說。

接著是安裝 conf 的部份,就對應修改 SOURCEX 與 ,只要前後一致即可。

繼續看到 #%files common 這邊,由於我們不拆包 common,所以這條也無用了,參考 droid 包作法一樣把它註解到,等到打包順利沒出錯再移除掉。

至於 %changelog 的地方,記得再最後方補入打包的版本號,可以參考 gnu hello 的範例,所以我就把

* Sun Dec 29 2013 Cheng-Chia Tseng
- # Documentation


改成

* Sun Dec 29 2013 Cheng-Chia Tseng - 0.2-1%{?dist}
- Initial version of the package


以上就大致完成 SPEC 檔 (食譜) 的撰寫了。

下個指令打包 (請廚師照食譜烹調) 看看:
rpmbuild -ba cwtex-q-fonts.spec

除了給了我一個警告外,似乎沒什麼其他問題。
 警告:無法標準化主機名稱:s205

當然,這是我試了三四次才修改、整理出來的成果,也不是第一次就成功的。

所以接下來就只要再設計對應且適當的 fontconfig,大致上就能打包完全啦!等完成後再看怎麼推回官方吧。XD

參考資料
https://fedoraproject.org/wiki/How_to_create_a_GNU_Hello_RPM_package/zh-tw
https://fedoraproject.org/wiki/How_to_create_an_RPM_package

製作成品,cwtex-q-fonts.spec
https://drive.google.com/file/d/0B2o5fiqQwyn-UXA0YUV0WU1BM0U/edit?usp=sharing

留言

這個網誌中的熱門文章

直行橫列,以及 line (列/行), column (欄), row (列)

Permission 取用權/權能; Permission denied 取用遭拒; Ask for permission 請求取用權/權能; Don't have the right permission to 無權/沒有權能

正體中文、繁體中文?