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的编译规则也太复杂了….自己不会写啊.

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