是一個 openSUSE Build Service 命令列的客戶端工具
其實我跟他不太熟
但是 http://en.opensuse.org/Build_Service_Tutorial
和 http://en.opensuse.org/Build_Service/CLI
都有詳盡的說明
裏面有提到,如果您會用 svn 的話,使用 osc 會有賓至如歸的感受
(可惜我和 svn 也不熟)
我現在要依照第一個連結,一步一步跑一次
(我使用 commandline 的方法)
目的是在 M17N:Devel[1] 這個 Project[2] 底下建構 gcin 這個 Package
[註1]M17N (multilingualization) 是 openSUSE 的多國語言化計劃,
裏面蠻多都是關於CJK的,而
M17N:Devel 則是此計劃的測試區,詳情請參考
http://news.opensuse.org/2009/06/18/opensuse-factory-is-now-open/
[註2]Project 是 OBS 的專有名詞,每個申請了 openSUSE Build Service 的人,
都會有一個 home:YOUR-LOGIN-NAME 的 home project。package 就是指在 project 底下建構的套件。
前言請自己看
第一步:登入
先建立一個工作目錄,例如:~/OBS
$ cd ~/OBS
$ osc checkout M17N:Devel
(這個命令可簡化成 osc co ...)
如果您從未用過 osc,將會提示您輸入使用者名稱及密碼(當然是指 OBS 的)
這時候會在您的工作目錄下建立一個 M17N:Devel 的目錄
並且開始將 M17N:Devel project 中的內容抓到這個目錄底下
每個套件(package)就是一個子目錄
因為此計劃中已經有了其他的套件,所以要花一段時間才能完成
若您用自己的 home project,上面命令要改成
$ osc checkout home:YOUR_LOGIN_NAME
完成後,切換到 M17N:Devel 目錄下
$ cd M17N\:Devel/
第二步:建立新套件
我要建立 gcin 套件
$ osc meta pkg -e M17N:Devel gcin
此時會開啟您預設的文字編輯器請您填入
title 標題(請填入該套件的摘要 Summary),description(請填入套件的描述),
url 位址(請填入上游位址)
這樣就可以了
如果您沒有設定 EDITOR 的變數,會用 vim 來編輯
若不習慣用 vim,請在上面命令執行前先執行
$ export EDITOR=kwrite
(請將 kwrite 改成您自己習慣的純文字編輯器)
存檔之後,就會開始傳送資訊到 M17N:Devel
您可以用瀏覽器看到
接著只要執行
$ osc up
您的工作目錄就會從 M17N:Devel 更新
所以您的 M17N:Devel 目錄中也會多了一個 gcin 的目錄
現在切換到 gcin 目錄中
$ cd gcin
將您的 source[3] 通通複製到此
[註3]這裡的 source 其實是指程式的原始碼(通常打包成 tar.gz 或 tar.bz2 格式)、patches(修補)和 spec 檔
這是我的 gcin.spec 檔
#
# spec file for package gcin
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
# norootforbuild
%define release 1
%define prefix /usr
%define name gcin
%define version 1.4.6pre8
%define uversion 1.4.6.pre8
Summary: Gcin is a Chinese input method server
Name: %{name}
Version: %{version}
Release: %{release}
License: LGPL
Vendor: Edward Liu
URL: http://hyperrate.com/dir.php?eid=67
Group: System/I18n/Chinese
Source0: gcin-%{uversion}.tar.bz2
Source1: xim.d-gcin
Source2: gcin-README.suse
Source3: xim.gcin.suse.template
Patch0: configure145p2.diff
Patch1: gcin_scripts_modify-XIM_103.diff
Patch2: gcin_desktop_icon_path.diff
Patch3: qt4-im145p2.diff
Patch4: use_small_icons.diff
Patch5: gtk-im-path1437.diff
Patch11: sync_gcin-setup.diff
BuildRoot: %{_builddir}/%{name}-%{uversion}-root
BuildRequires: qt3-devel libjpeg-devel pkgconfig gtk2-devel libqt4-devel update-desktop-files
BuildRequires: chrpath anthy-devel
Requires: gtk2 >= 2.2.4
#Provides: locale(ja;zh)
PreReq: /usr/bin/touch
Docdir: %{prefix}/share/doc/packages
%description
gcin is a Chinese input method server for traditional Chinese.
It features a better GTK user interface.
%package devel
Summary: Gcin development package
Group: Development/Libraries/C and C++
Requires: %{name} = %{version}
%description devel
gcin development package contains the header files for gcin
%prep
%setup -n gcin-%{uversion}
%patch0
%patch1
%patch2
%patch3
%patch4
%patch5
%patch11 -p1
%build
CFLAGS="$RPM_OPT_FLAGS" %configure --prefix=/usr --use_xim='Y' --new_gtk_im='Y' --use_i18n=Y
make
%install
mkdir -p $RPM_BUILD_ROOT/etc/X11/xim.d/
install -m 644 $RPM_SOURCE_DIR/xim.d-gcin $RPM_BUILD_ROOT/etc/X11/xim.d/gcin
DESTDIR=$RPM_BUILD_ROOT make install
%suse_update_desktop_file gcin-setup System SystemSetup
pushd $RPM_BUILD_ROOT/etc/X11/xim.d/
for lang in en zh_TW zh_HK zh_CN zh_SG ; do
mkdir $lang
pushd $lang
ln -s ../gcin 30-gcin
popd
done
popd
chrpath -r /usr/%_lib/gcin ${RPM_BUILD_ROOT}%{_bindir}/gcin
chrpath -r /usr/%_lib/gcin ${RPM_BUILD_ROOT}%{_bindir}/sim2trad
%find_lang %{name}
%clean
rm -rf $RPM_BUILD_ROOT
%files -f %{name}.lang
%defattr(-,root,root)
%doc README.html Changelog.html COPYING AUTHORS
%doc $RPM_SOURCE_DIR/xim.gcin.suse.template
%doc $RPM_SOURCE_DIR/gcin-README.suse
%dir /etc/X11/xim.d/
%dir %{_libdir}/gcin
%dir %{_libdir}/menu
%dir %{_datadir}/control-center-2.0
%dir %{_datadir}/control-center-2.0/capplets
%dir %{_datadir}/gcin
%dir %{_datadir}/gcin/script
%dir %{_datadir}/gcin/table
%config /etc/X11/xim.d/*
%{_bindir}/*
%{_datadir}/gcin/table/*
%{_datadir}/gcin/script/*
%{_datadir}/man/man1/*
%{_datadir}/icons/*
%{_datadir}/pixmaps/gcin.png
%{_datadir}/applications/*
%{_datadir}/control-center-2.0/capplets/*
%{_libdir}/menu/*
%{_libdir}/gtk-2.0/*
%{_libdir}/qt3/plugins/inputmethods/*
%{_libdir}/gcin/*
%{_libdir}/qt4/plugins/inputmethods/im-gcin.so
%files devel
%defattr(-,root,root)
%{_includedir}/*
%post
/sbin/ldconfig
touch var/adm/SuSEconfig/run-gtk
%postun
/sbin/ldconfig
touch var/adm/SuSEconfig/run-gtk
%changelog
* Fri Jul 03 2009 - swyear@gmail.com
- 1.4.6:
- gtab 自動選字時,手動選字的問題。
- gtab shift+字母 改成大寫輸出
- .cin 現在支援 %flag_auto_select_by_phrase 選項,有了這個表示產生的 .gtab 會自動啟用由詞庫自動選字。gcin-setup 中可以強迫開啟or關閉。
- gtab 詞庫自動選字現可以用空白鍵送出編輯區的內容。
- pcmanx 無法顯示編輯區的問題。
- mozilla thunderbird 選單不正常的問題。
- 詞音注音選字時也可以用 mouse 選擇了。
- 如果 gtab 有指定保留大小寫的選項,則 CapsLock 輸入英數的功能自動關閉。
- 左鍵 click tray icon 改成中英切換,因為現在比較少用簡體輸出。有時候沒辦法使用 ctrl-space 切換中英時就可以用。簡體輸出改到右鍵的選單裡。
- GTK 程式 focus out 時現在會自動送出編輯區的內容。QT的程式目前還不行。
- Eclipse double click 會導致空白的問題。
- 在tray icon 按 Shift + 左鍵可以列出所有輸入法的選單。
- 詞音按 [] 輸入「」【】現在不需要按空白鍵。
你可以從上面看到 spec + sources + patches 共有12個檔案
有些是為了配合 openSUSE 輸入法啟動的方式所加的檔案與說明
有些則是因為 gcin 的 configure 和 Makefile 都是"手寫的",
所以要做一些修改來配合實際的路徑
有些則是 OBS 龜毛的要求
因此在我的 gcin 目錄中就必須要有這12個檔案
$ ls
configure145p2.diff gtk-im-path1437.diff
gcin-1.4.6.pre8.tar.bz2 qt4-im145p2.diff
gcin_desktop_icon_path.diff sync_gcin-setup.diff
gcin-README.suse use_small_icons.diff
gcin_scripts_modify-XIM_103.diff xim.d-gcin
gcin.spec xim.gcin.suse.template
然後執行
$ osc add *
將此目錄中所有檔案都加入,下次提交時就會上傳到 M17N:Devel
然後提交
$ osc commit
(或簡化為 osc ci)
會出現一個編輯視窗,請在虛線上方寫一下此次提交的摘要,例如:
First commit to M17N:Devel by swyear
存檔後就會開始上傳提交
當然這也要花上一陣子(甚至更久,因為用ADSL上傳速度通常較慢)
理論上應該進行第三步驟:加套件庫(就是你的套件要在哪個環境建構)
看看你有哪些可用的套件庫
$ osc ls
你會得到數百個
看來還是用 web 介面點一點好了
因為M17N:Devel已經將這方面處理好了,我不必去改它
若是您自己第一次用OBS,你就可能需要自己動手了
第四步驟:在OBS伺服器上開始建構(Build)
其實不必做什麼事,當OBS伺服器偵測到 source 有變化時
就會自動開始建構,當然,得要OBS有空時...
您也可以參考在本機上自行建構(我是不幹的啦)
建構好的套件會自動輸出到
http://download.opensuse.org/repositories/M17N:/Devel/
也就是說,你以後也可以從這個套件庫取得 gcin 了
然後我要寫封信到 opensuse-m17n@opensuse.org
說我新提交了一個新套件 gcin 到 M17N:Devel
介紹一下 gcin 並請大家測試檢查...
不過,現在OBS伺服器都很忙,也不知道何時才會建構完成
今天也太晚了,還是明天再說吧
今天的工作就到此告一段落了
沒有留言:
張貼留言