星期一, 11月 29, 2010

打包gcin到ppa的心得

我是沿用1.4.6由kanru所寫的debian目錄,kanru大似乎沒考慮到64bit的部份,放到ppa的時候,因為會build出各種arch的版本,所以就需要處理。
我碰到的問題是在於目錄名稱,32bit是lib,而64bit則是lib64,在debian/rules裡,我用 DEB_BUILD_ARCH_BITS 來決定是處理lib64或是lib,原來的gcin.install也改用gcin.install.in,然後用sed來替換,產生gcin.install:

# 略...gcin是先裝到debian/tmp下,後續再用搬目錄方式,搬到debian/gcin下,這個target跑完,dpkg-buildpackage會去包debian/gcin下的檔案。
if [ "$(DEB_BUILD_ARCH_BITS)" -eq "64" ]; then \
mv debian/tmp/usr/lib64/gtk-2.0/immodules/* debian/gcin/usr/lib/gtk-2.0/$(GTKVER)/immodules/ ;\
else \
mv debian/tmp/usr/lib/gtk-2.0/immodules/* debian/gcin/usr/lib/gtk-2.0/$(GTKVER)/immodules/ ;\
fi
# 略
if [ "$(DEB_BUILD_ARCH_BITS)" -eq "64" ]; then \
sed -e s,@LIBDIR@,lib64, debian/gcin.install.in > debian/gcin.install ; \
else \
sed -e s,@LIBDIR@,lib, debian/gcin.install.in > debian/gcin.install ; \
fi
# 略


另外,則是遇到無法上傳的問題,說是因為檔名重複,就被reject掉了,後來是在debian/changelog裡,讓"檔名-版本"的後面多加-lucid0, -lucid1, -maverick0, -maverick1...的方式,硬解了,不知道是不是正解...

如果你需要最新版的gcin,除了Tetralet包的版本之外,也可以試試我包的:
sudo add-apt-repository ppa:elleryq/gcin
sudo apt-get update
sudo apt-get upgrade

沒有留言: