openWRT中集成easyCWMP

這幾天的工作是將Openwrt中的freeCWMP替換爲easyCWMP.由於easyCWMP默認是不存在於menuconfig中的,因此只能通過添加pacakge的方式來進行.

好在easyCWMP對openWRT的支持很友好,可以直接在package下解壓,就可以在menuconfig中識別到了.

BUT!!!
坑也不少.

原以爲可以直接在package/解壓目錄下修改源碼,然後編譯,即可生效.最終弄了2天才弄清怎麼修改easyCWMP源碼.真是圖樣圖森破.

首先需要知道的是easyCWMP適用於openWRT的MAKE文件是在easyCWMP根目錄/ext/openwrt/build/下的.這個MakeFile中有如下定義:
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://easycwmp.org/download/
這就是直接修改package中源碼不生效的原因,人家每次都是從 dl 目錄來獲取源碼的(dl 沒有的話,從那個URL下載).

其實弄清了上面這一點就可以少走很多彎路了.
既然每次都是download,那麼這個package下的資源文件都沒用了,是吧.爲了乾淨整潔,我們把所有內容都刪掉,就只留下MakeFile和config.in.(config.in不能刪,不然make menuconfig都出錯).
既然這裏都沒有資源文件了,我們就不動”在這裏修改源碼”的歪腦筋了.想了想之前使用的三方包是如何修改源碼的?

patch啊啊啊!

趕緊回去翻了一下之前三方包的目錄結構和MakeFile文件,果然是一樣的,有PKG_SOURCE,有PKG_SOURCE_URL.整個目錄就一個MakeFile,一個patches文件夾.稍作驗證,看來是可行的.2天的迷茫就這麼散了.開開心心下班.

PS:記錄一下過程中踩得其他坑:
easyCWMP下載版本都是帶版本號的是吧,解壓完成後文件夾就是easycwmp-1.x.x這樣的.如果你不手動改爲easycwmp.
那麼!!!
是沒辦法make package/easycwmp/compile的!!!
對於openWRT不熟悉的小白,真的很難受啊.
還想吐槽的是,easyCWMP的MakeFile中下面這一段:

USE_LOCAL=$(shell ls ./src/ 2>/dev/null >/dev/null && echo 1)
ifneq ($(USE_LOCAL),)
define Build/Prepare
    $(CP) -R . $(PKG_BUILD_DIR)/
endef
endif

這是來欺騙我感情的嗎.不做修改不可能用得上啊.
即使想用Build/Prepare,easyCWMP的編譯規則也太複雜了….自己不會寫啊.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章