[問題]如何patch 在網頁上的東西

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

版主: mufa

[問題]如何patch 在網頁上的東西

文章ronychen » 週六 5月 10, 2003 7:56 pm

首先,小弟承認這標題很奇怪 :ooops:
請聽我一一道來:
--
小弟每天上網的工具用laptop 上的hsfmodem,平時有到官方網站 下載driver,所以到也相安無事.
但是最近一心嚮往preemptible kernel patch , 所以問題來了. hsfmodem 跟 preemptible 不合, 好不容易有一位仁兄, 貼了一個patch 在網頁上. 可惜的是, 他有encoding.

看哪位大大可以幫忙一下,如何解決

Cheers
Beer is proof that God loves us and wants us to be happy. -- Benjamin Franklin
ronychen
可愛的小學生
可愛的小學生
 
文章: 13
註冊時間: 週三 1月 01, 2003 3:04 pm
來自: 中和

re:[問題]如何patch 在網頁上的東西

文章訪客 » 週六 5月 10, 2003 9:03 pm

I just look that url and There is a source code patch.
what I mean is you can just copy the whole 'patch' and save it as a ooxx.patch and use a program just called 'patch' to patch the source code for you.

well, I think it's a little hard to understand what I mean ^^;;
訪客
 

re:[問題]如何patch 在網頁上的東西

文章Drake » 週日 5月 11, 2003 12:21 am

終於可以輸入中文了 :-)

剛剛又看了一下,情況和前一篇回的不太一樣。

接下來,說明一下他是如何生出這些檔案的,我猜情況可能是這樣的:

這位 Antonino Daplas 在要 make kernel 之前,發覺到 modules (也就是drivers) 裏頭的一些程式碼需要做點更改才可以讓心愛的hsfmodem能正常運作,於是他經過左看右看,花了些心思研究程式碼後,對一些程式檔作了一些更改,然後才再 make kernel ,而且也的確可以用了。於是這位老兄想把改過的程式碼分享給大家,要怎麼分享呢?總不能把改過的那幾個程式檔就這樣 post 在討論區吧,這樣的話,那篇 post 會太冗長了。於是他退而求其次的想:如果可以只秀出那些被改過了的程式的話,因為改過的程式不多,就可以貼到討論區了吧。

於是他使用了一個叫 diff 的程式,這支程式吃兩個文字檔,然後告訴你這兩個文字檔的「差別「在哪。

於是 Antonino Daplas 老兄把改過的與原來相對應的程式檔餵給 diff 去分析,然後 diff 就把兩個檔的「差別」告訴他,也就是被Antonino Daplas 老兄改過的程式碼的部分。

網頁上後頭的附加內容就是這樣來的。

首先,那個網頁上的patch總計是對 5 個程式碼作 patch,每個 diff 後的檔名就是了。依序是:
modules/osspec/include/irq_vectors.h
modules/osspec/include/oscompat.h
modules/osspec/linuxres.c
modules/osspec/ostime.c
modules/serial_hsf.c

接下來的每一行中 - 代表被Antonino Daplas所去除掉的程式片段, + 代表Antonino Daplas加上的片段,而 = 後頭的資訊可以不用理它。拿 oscompat.h 來說:

代碼: 選擇全部
 #include <linux/version.h>
 #include <linux/config.h>
 #include <linux/sched.h>
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,40)
 #include <linux/tqueue.h>
+#else
+#include <linux/workqueue.h>
+#endif
+
 #include <linux/mm.h>
 #include <linux/interrupt.h>
 #include <linux/wait.h>

代表在原來的 oscompat.h 中,在他的 #include <linux/config.h> 和 #include <linux/sched.h> 後,這位老兄新增了兩行程式碼,分別是(去掉前頭的+號)

#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,40)
之後跳過 #include <linux/tqueue.h> ,在後頭再加上
#else
#include <linux/workqueue.h>
#endif

所以呢,你可以手動將你 kernel-source 中所對應的那五個檔的內容依他網站上的diff的結果更改一下,然後再 make 就行了。不然,也可以研究一下,要如何使用一隻叫 patch 的程式來幫你完成這些動作。
Drake
活潑的高中生
活潑的高中生
 
文章: 314
註冊時間: 週三 3月 26, 2003 11:00 am

re:[問題]如何patch 在網頁上的東西

文章ronychen » 週日 5月 11, 2003 8:48 am

Hi Drake 兄

那個patch的問題已經解決了,感謝你詳細的解釋. 現在就卡在kernel 版本的不同.因為那個patch 需要2.5.40 以上的核心. 而我現在是2.4.20....

To folks:

所謂的hsfmodem 是Conexant 這家公司為 筆記型電腦的內建modem chip所出的 其中一種linux driver.在現今台灣大多以寬頻上網或使用外接式的modem, 所以像我這樣的使用者,可以說是少之又少吧. :(

Anyway,繼續奮戰中

Cheers.
Beer is proof that God loves us and wants us to be happy. -- Benjamin Franklin
ronychen
可愛的小學生
可愛的小學生
 
文章: 13
註冊時間: 週三 1月 01, 2003 3:04 pm
來自: 中和

re:[問題]如何patch 在網頁上的東西

文章Drake » 週日 5月 11, 2003 3:13 pm

To ronychen,

寫完後,還很擔心表達得不夠清楚,希望有幫上一點小忙。

加油啦
Drake
活潑的高中生
活潑的高中生
 
文章: 314
註冊時間: 週三 3月 26, 2003 11:00 am


回到 debian misc

誰在線上

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

cron