-
Notifications
You must be signed in to change notification settings - Fork 83
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
关于添加自定义安装包、patch及修改源代码的方法和已知问题 #1
Comments
修改upload_feeds 参见最后一行注释。 |
哦豁,我是小白。。。你这个比@KFERMercer的要复杂一些哦。。。🤪🤪🤪 |
本质上都有潜在可能性出现po2lmo的问题,只是我在update_feeds.sh里把所有安装包放在package/feeds目录。你原本的是放在package/openwrt-packages 目录,可能由于名称排序靠后,让你能避免那样的依赖关系错误。 你也不用patch了,直接吧update_feeds.sh的17和18行的package/feeds改成package/openwrt-packages吧 |
我已经把scripts/update_feeds.sh里用到的目录改成了以z为首字母的名字,似乎不再会出现po2lmo问题 |
|
所有的git clone可以用install_package代替,例如: 所有的sed命令和mv命令,可以转化成patch放在patches目录 其他的: 为什么要用patch而不允许自定义脚本直接sed和cp/mv不同于其他项目,这个项目由于每次编译会重复利用先前的编译环境,下一次编译时存在多方面可能性会让自定义脚本的执行结果不可靠:
如果每次编译都会再次执行自定义脚本以确保你的自定义得到执行,代码可能会陷入混乱状态。 patch的好处是,已apply的patch可以不再被重复apply,可以做到相对的严格。(当然,如果你修改或删除patch,代码同样不再可靠,这时候你需要“re-create your building environment”) |
对于 |
如何将mv/cp命令转化成patch文件举例 :
多个patch可以堆放在同一个文件,也可以分开放 |
如何将sed转化为patch把第一步里的命令替换为 注意,所有这些步骤是在本地执行的,不是在github actions或docker内 |
@RealKiro 我看了下你现在编译失败的原因
我很好奇,你尝试过其他CI编译,它们正常吗,比如Actions-Openwrt或者Openwrt-CI。如果正常,请把相应的编译日志链接发给我看一下 P.S.: 我初步怀疑是你的名称不一致所致。 |
确实是这个有错误,我更正后再试试,🙏 |
感谢🙏,编译成功了 |
这样做没法和原git clone过的源码保持同步吧?要想同步必须每次git pull 重新做一份patch |
其实增量编译是在你不频繁更新openwrt和packages代码的情况下比较有用和可靠,主要应对的是你想更改编译参数或想添加删除一两个功能时。如果每次都有更新openwrt本身和所有packages,很可能大量代码需要重新编译,花费的时间不一定短。 增量编译的时候默认也不会拉取最新的openwrt或packages源码,仅使用创建base builder时拉取的版本。(除非你指定了 如果你确实每次都想更新所有源码,你的patch文件不一定需要每次更新代码时重做,只要你patch的周边代码没有经历大的变动。相对来说这确实是比较严格的补丁操作,能避免出错,但是也造成在不少情况下你需要重新生成patch。 因为,除了patch,我暂时想不到什么好的办法,能既重复利用旧编译状态,又能安全地多次重复执行自定义脚本。其实patch本身也是不够安全稳定的,现有的方法不能正确做到patch本身前后发生变化时,判断一个文件是否已经patch过。 不知你有什么好的建议 Edit: |
有一个办法。把“自定义脚本执行前的源代码”和“build,staging_dir,bin目录”分成两个docker image。这样能保留非patch文件timestamp的一致性。但是这样需要不小的改动 |
我能力不行无法给您提供帮助,但我想的是有没有可能尽量做到像本地编译那样,加一个判断:当更新或重新上传 config.diff 时从头开始拉源码编译,当只改变 scripts 或 patches 时只在原来编译过的基础上再次编译 |
前段花了一些功夫实现了一个方法,现在还在dev分支测试。�等测试好了就可以使用script来直接修改代码文件了。先不要尝试dev,还很乱,应该有不少bug 现在头疼的是,变化太多,以前花费了很大精力写的README几乎不适用了😂 |
好的,大佬。。。继续加油,奥力给。。。🤪🤪🤪🤪🤪🤪 |
貌似你没再在电报群了,这个项目你成功了吗? |
还有人维护吗 |
不再维护 |
The text was updated successfully, but these errors were encountered: