2010年11月24日 星期三

Bazaar 的分支使用方式

Bazaar 的分支使用方式與 Mercurial 跟 Git 都不太一樣
它比較類似 Subversion 的使用方式以下是簡單的示範

首先要建立一個 shared repository
~$ bzr init-repository hello

然後在 hello 這個目錄底下再建立個別的 branch 目錄
~/hello$ bzr init trunk

或是直接從遠端拉變更資料回來
~/hello$ bzr branch lp:ubuntu/hello trunk

如果是要做本地端分支的話,要再建立另一個新的目錄 (這邊有點類似使用 svn copy 的分支方式)
~/hello$ bzr branch trunk my-branch

如果是要建立遠端的分支的話,則是利用 Launchpad 提供的服務
~/hello/my-branch$ bzr push lp:~fourdollars/hello/my-branch

所以 Bazaar 的缺點是不像 Mercurial 跟 Git 那樣在一次的 clone 之後就可以將所有的分支都抓下來了,但是另外的好處就是由 Launchpad 提供的整合介面,讓 Patch Provider 也可以透過 Launchpad 來提 Merge Request,而 Reviewer 只要在 Launchpad 上面點一下 Accept 就可以自動 merge 了,這樣反而省下了許多指令的使用,至於是好是壞則是見仁見智囉。

參考資料:http://wiki.inkscape.org/wiki/index.php/Working_with_Bazaar

2010年10月9日 星期六

使用 GNU Build System 管理用 Vala 寫的 GTK+ 程式

延續先前的文章『使用 GNU Build System (aka Autotools) 來管理 Vala 編譯流程

首先準備好 GTK+ 的 Vala 原始碼檔案 MyApp.vala
using Gtk;

namespace ValaTutorial
{
    class MyApp : Gtk.Window
    {
        public MyApp ()
        {
            var button = new Button.with_label ("Click me!");
            add (button);

            button.clicked.connect (on_clicked);
        }

        private void on_clicked (Gtk.Button button)
        {
            stdout.printf ("Ouch!\n");
        }

        public static int main (string[] args)
        {                                                    
            Gtk.init (ref args);

            var app = new MyApp ();
            app.show_all ();

            app.destroy.connect (Gtk.main_quit);

            Gtk.main ();
            return 0;
        }
    }
}
然後再準備一個 Makefile.am
# AM_VALAFLAGS = --pkg gtk+-2.0            

bin_PROGRAMS = MyApp

MyApp_SOURCES = MyApp.vala
MyApp_CPPFLAGS = @GTK_CFLAGS@
MyApp_LDFLAGS = @GTK_LIBS@
MyApp_VALAFLAGS = --pkg gtk+-2.0
第 1,8 行是 Vala 使用外部函式庫時需要的參數,視實際需求選擇使用
效果相當於
$ valac --pkg gtk+2.0 MyApp.vala
最後是自動產生並修改過後的 configure.ac
#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ([2.65])
AC_INIT([hello], [0.0], [foo@bar.com])

AM_INIT_AUTOMAKE([-Wall -Werror foreign])

# Checks for programs.
AC_PROG_CC
AM_PROG_VALAC([0.8.0])

# Checks for libraries.
AM_PATH_GTK_2_0                                                 

# Checks for header files.

# Checks for typedefs, structures, and compiler characteristics.

# Checks for library functions.

AC_CONFIG_FILES([Makefile])
AC_OUTPUT
第 14 行會產生出 Makefile.am 所需要的 @GTK_CFLAGS@ 及 @GTK_LIBS@
最後就是一般 GNU Build System 慣用的指令
$ autoreconf -if
$ ./configure
$ make
參考資料:

2010年10月8日 星期五

使用 GNU Build System (aka Autotools) 來管理 Vala 編譯流程

首先要先安裝好需要的軟體套件

以 Ubuntu 10.04 為例
$ sudo apt-get install autoconf automake pkg-config valac vim

Ubuntu 10.04 上面的 Vim 並沒有提供 Vala 的語法著色
還好官方網站上面已經有提供了 Vala/Vim
照著做一遍就好了

準備一個的 hello world 原始碼檔案 hello.vala
void main() {
    stdout.printf("Hello world\n");
}

接者寫一個 Makefile.am
bin_PROGRAMS = hello
hello_SOURCES = hello.vala
hello_CPPFLAGS = @GLIB_CFLAGS@
hello_LDFLAGS = @GLIB_LIBS@

然後將 autoscan 產生出來的 configure.scan 更名為 configure.ac
$ autoscan
$ mv configure.scan configure.ac

再修改成下面這樣
#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ(2.65)
AC_INIT([hello],[0.0],[foo@bar.com])

AM_INIT_AUTOMAKE([-Wall -Werror foreign])

# Checks for programs.
AC_PROG_CC
AM_PROG_VALAC([0.8.0])

# Checks for libraries.
AM_PATH_GLIB_2_0(,,,[gobject])                                  

# Checks for header files.

# Checks for typedefs, structures, and compiler characteristics.

# Checks for library functions.

AC_CONFIG_FILES([Makefile])
AC_OUTPUT

第 7 行的
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
會產生一些處理 Makefile.am 的工具出來

第 10 行的
AC_PROG_CC
會檢查 C Compiler 因為 Vala 最終還是會產生 C 的原始檔案

第 11 行的
AM_PROG_VALAC([0.8.0])
當然就是檢查這篇文章的主角 Vala 囉

第 14 行的
AM_PATH_GLIB_2_0(,,,[gobject])
會產生出在 Makefile.am 所使用的 @GLIB_CFLAGS@ 跟 @GLIB_LIBS@
還有會使用到 glib 裡面的 gobject 這個 module

接下來就如同一般的 GNU Build System (aka Autotools) 的慣用方法
使用以下命令來產生 configure 腳本檔案
$ autoreconf -if

然後就是 ./configure && make && make install 這類常見的指令連續技囉~ :P

2010年10月3日 星期日

BetaRadio v1.1 正式釋出

此版新增的功能是可以透過網路新增播放清單
簡單講就是 list.json 這個網路上的檔案裡面有多少清單就會看到多少清單
另外修正了播放時會斷斷續續的問題

Ubuntu 9.10/10.04/10.10 使用者可以直接使用命令列執行以下步驟
$ sudo add-apt-repository ppa:fourdollars/betaradio
$ sudo apt-get update
$ sudo apt-get install betaradio
來安裝

至於其它的 GNU/Linux 系統就要請諸位大大們幫忙產生安裝套件囉~ <(_ _)>

軟體原始碼下載 betaradio-1.1.tar.bz2 SHA1: 2768cfbb07dbc7d87b6f653645a00037629446ad
編譯時會需要 libgtk2.0-dev libgstreamer0.10-dev libjson-glib-dev libsoup2.4-dev 這些套件
執行時會需要 gstreamer0.10-plugins-good gstreamer0.10-plugins-bad gstreamer0.10-plugins-ugly gstreamer0.10-ffmpeg 這些套件

祝大家玩得開心。:D

2010年9月27日 星期一

Debian Package (6) - 使用 pbuilder - personal package builder 個人 Debian Package 製作工具

目標是編譯在 Ubuntu 10.04 上面使用的 Debian Package

首先是安裝需要的軟體套件還有修正一些小問題
sudo apt-get install pbuilder cowdancer ccache
sudo mkdir -p /var/cache/ccache # To avoid error of "special device /var/cache/ccache does not exist"

然後編輯設定檔 ~/.pbuilderrc 加入
MIRRORSITE=http://tw.archive.ubuntu.com/ubuntu/
COMPONENTS="main restricted universe multiverse"
DISTRIBUTION=lucid
OTHERMIRROR="deb http://tw.archive.ubuntu.com/ubuntu/ lucid-security main restricted universe multiverse|deb http://tw.archive.ubuntu.com/ubuntu/ lucid-updates main restricted universe multiverse|deb http://tw.archive.ubuntu.com/ubuntu/ lucid-proposed main restricted universe multiverse|deb http://tw.archive.ubuntu.com/ubuntu/ lucid-backports main restricted universe multiverse"
PDEBUILD_PBUILDER=cowbuilder
BUILDRESULT=~/deb/

接者開始產生一個編譯用的基本環境
sudo cowbuilder --create

然後就可以在原本使用 debuild 編譯 Debian Package 的目錄裡面
改用 pdebuild 來編譯 Debian Package
程式會自動透過網路下載相依的軟體套件然後將 Debian Package 編譯到 ~/deb/ 底下

或是像下面的使用方法
apt-get source --download-only hello
下載 hello_2.4-3.diff.gz hello_2.4-3.dsc hello_2.4.orig.tar.gz 後,再執行
sudo cowbuilder --build hello_2.4-3.dsc
來編譯 Debian Package

參考資料:

2010年9月23日 星期四

StarCraft2 on Ubuntu 10.04



不過目前在 Intel 顯示晶片上面似乎無法使用 Wine 來顯示 3D 圖形
所以遊戲中的 3D 模型的部份都無法顯示出來,也就是無法玩的意思。XD

參考資料:
http://www.thehelper.net/forums/showthread.php?t=147567
https://launchpad.net/~ubuntu-wine/+archive/ppa