deb 打包加上 patch 的问题。

如果您覺得您的問題不屬於 debian desktop 或是 debian server 版的範圍內,請在這裡發問。

版主: mufa

deb 打包加上 patch 的问题。

文章liangsuilong » 週四 10月 07, 2010 3:20 pm

前兩天我做了個 mysql-workbench 的 deb 套件,但是我不太明白 3.0 (quilt) 源代碼包格式如何注入 patch。看了 Debian Wiki 上的 quilt 教程。但是每一個 patch 都會引入不同的選項,而 quilt 自行聲明的變量似乎也不一定適合每一個 patch。因此求教於大家如何把打補丁這一項變得和 Debian 的規範一致。

原來我的做法是直接在 debian/rules 上直接 patch。

所以的套件都放在 google docs 之上:
https://docs.google.com/leaf?id=0B6uJ1YpVaG2EYTM1ZGEyNmYtZWNmMS00NzBiLThmMzYtNzUyN2NhMGIwZjFm&hl=en

代碼: 選擇全部
#!/usr/bin/make -f
# -*- makefile -*-
# Sample debian/rules that uses debhelper.
# This file was originally written by Joey Hess and Craig Small.
# As a special exception, when this file is copied by dh-make into a
# dh-make output file, you may use that output file without restriction.
# This special exception was added by Craig Small in version 0.37 of dh-make.

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

configure: configure-stamp
configure-stamp:
        dh_testdir
        # Add here commands to configure the package.
        patch -s -p1 -b --suffix .cppconn --fuzz=0 < debian/patches/mysql-workbench-5.2.28-cppconn.patch
        patch -s -p1 -b --suffix .ctemplate --fuzz=0 < debian/patches/mysql-workbench-5.2.27-ctemplate.patch 
        patch -s -p1 -b --suffix .tinyxml --fuzz=0 < debian/patches/mysql-workbench-5.2.28-tinyxml.patch
        touch -r COPYING .timestamp4rpm
        sed -i -e 's/\r//g' COPYING
        touch -r .timestamp4rpm COPYING
        rm -rf ext/boost
        rm -rf ext/curl
        rm -rf ext/libsigc++
        rm -rf ext/yassl
        rm -rf ext/cppconn
        rm -rf ext/ctemplate
        rm -rf library/tinyxml
        NOCONFIGURE=yes ./autogen.sh
        ./configure --disable-debug --prefix=/usr

        touch configure-stamp


build: build-stamp

build-stamp: configure-stamp
        dh_testdir

        # Add here commands to compile the package.
        $(MAKE) -j2
        #docbook-to-man debian/mysql-workbench.sgml > mysql-workbench.1

        touch $@

clean:
        dh_testdir
        dh_testroot
        rm -f build-stamp configure-stamp

        # Add here commands to clean up after the build process.
        -$(MAKE) clean

        dh_clean

install: build
        dh_testdir
        dh_testroot
        dh_clean -k
        dh_installdirs

        # Add here commands to install the package into debian/mysql-workbench.
        $(MAKE) DESTDIR=$(CURDIR)/debian/mysql-workbench install
        find debian/mysql-workbench/usr/lib/mysql-workbench -name \*.a  -exec rm {} \; -print
        find debian/mysql-workbench/usr/lib/mysql-workbench  -name \*.la -exec rm {} \; -print
        chmod +x debian/mysql-workbench/usr/share/mysql-workbench/sshtunnel.py


# Build architecture-independent files here.
binary-indep: build install
# We have nothing to do by default.

# Build architecture-dependent files here.
binary-arch: build install
        dh_testdir
        dh_testroot
        dh_installchangelogs ChangeLog
        dh_installdocs
        dh_installexamples
#        dh_install
#        dh_installmenu
#        dh_installdebconf       
#        dh_installlogrotate
#        dh_installemacsen
#        dh_installpam
#        dh_installmime
#        dh_python
#        dh_installinit
#        dh_installcron
#        dh_installinfo
        dh_installman
        dh_link
        dh_strip
        dh_compress
        dh_fixperms
#        dh_perl
#        dh_makeshlibs
        dh_installdeb
        dh_shlibdeps
        dh_gencontrol
        dh_md5sums
        dh_builddeb -- -Zxz -z7

binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install configure
liangsuilong
可愛的小學生
可愛的小學生
 
文章: 1
註冊時間: 週四 10月 07, 2010 11:41 am

Re: deb 打包加上 patch 的问题。

文章kanru » 週四 10月 07, 2010 4:20 pm

如果是 3.0 (quilt) 的話,就用 quilt 管理就好了

注意只能用 -p1 的 patch,要放在 debian/patches 下,debian/patches/series 要更新 (以上都可由 quilt 代勞)

然後 debian/rules 不用特別處理,因為 dpkg-source 會自動 patch/unpatch
圖檔
頭像
kanru
榮譽學長
榮譽學長
 
文章: 578
註冊時間: 週六 7月 12, 2003 12:09 pm


回到 debian misc

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客