当前位置: 首页 > news >正文

【openwrt学习笔记】新patch的制作和旧patch的修改

目录

    • 一、参考资料
    • 二、使用QUILT工具添加补丁
      • 2.1 添加一个新的补丁
      • 2.2 编辑一个已存在的补丁
      • 2.3 补丁命名规范
      • 2.4 添加或修改内核补丁文件
    • 三、使用diff 打补丁
    • 四、相关问题及解决方法
      • 4.1 make package/package-name/update V=s失败

一、参考资料

Working with patches

二、使用QUILT工具添加补丁

默认已有quilt工具,环境已配置好,此处不赘述

2.1 添加一个新的补丁

(1)准备源目录

make package/example/{clean,prepare} V=s QUILT=1

(2)切换到准备好源码的目录:

cd build_dir/target-*/example-*

(3)应用所有已存在的补丁文件:

quilt push -a

(4)创建一份新的,空的补丁文件

quilt new 010-main_code_fix.patch

(5)添加修改的文件
上述参考资料是直接使用quilt edit命令来修改文件,但是这种方法无论是用vim 和nano用起来都不太方便,而且此时的patch修改已经是基本确认验证过代码了,基本已经有修改好的代码了。
所以这是直接使用

quilt add file_name(涉及的改动文件,都添加进去)

(6)修改文件
使用任意编辑工具皆可。
(7)查看差异

quilt diff

(8)确认无误后,使得patch生成

quilt refresh

此时可以在当前目录下,patch文件中找到生成的patch文件。可复制出来,当做备份。
注释:(trailing whitespace 尾随空格)可能会与这个警告,就是说那一行行末尾有多余空格和tab,可以手动删除再更新,也可以不管。
(9)patch放到编译目录中,使用以下命令重新清除编译,查看是否修改成功,编译无误

make package/example/{clean,compile} V=s

2.2 编辑一个已存在的补丁

(1)开始准备源目录:

make package/example/{clean,prepare} V=s QUILT=1

(2)切换到准备好的源目录中:

cd build_dir/target-*/example-*

(3)列出有效的补丁文件:

quilt series

(4)转到需要编辑的补丁文件

quilt push 010-main_code_fix.patch

(5)(6)(7)(8)(9)同上

2.3 补丁命名规范

所有的补丁文件应该以“NNN-lowercase_shortname.patch”的形式命名,并分成以下几类:
0xx - 上游补丁
1xx - 代码等待上游合并
2xx - 内核构建、配置、头补丁
3xx - 特定架构的补丁
4xx - mtd相关的补丁(子系统和驱动)
5xx - 文件系统相关的补丁
6xx - 通用网络补丁
7xx - 网络层/物理层驱动补丁
8xx - 其他驱动
9xx - 未分类的其他补丁

2.4 添加或修改内核补丁文件

暂时没有用到,也未验证相关是否正确,后面用到再总结补充。

三、使用diff 打补丁

使用diff打补丁,适合于对补丁流程熟悉,并且补丁文件个数不多及目录结构简单的情况,有时候单个文件补丁内容过多不变一个个手动修改时使用本节介绍方法也可以让工作更高效。

相关操作及命令:
(1)修改目标文件,并将该文件重命名为newfile,旧文件假设为oldfile;
(2)执行命令添加补丁内容:

$diff –Nur oldfile newfile > number-destfile.patch 

(3)修改补丁内容,修改文件路径,旧文件为a/xxx/xxx,新文件为b/xxx/xxx,文件路径必须和实际的路径层数相同,a,b代表编译包的名称;
(4)将制作好的number-destfile.patch这个补丁文件放到package/package-name/patches目录中,如果patches目录之前不存在,那么创建一个就可以了;
(5)打补丁工作结束!

四、相关问题及解决方法

题及解决方法

4.1 make package/package-name/update V=s失败

问题原因:目标组件的编译方法Makefile的Prepare节存在问题,缺少“$(call Build/Prepare/Default)”这句。

解决方法: 添加$(call Build/Prepare/Default)这句到Prepare节中,如下:

define Build/Preparemkdir -p $(PKG_BUILD_DIR)$(CP) ./src/* $(PKG_BUILD_DIR)/$(call Build/Prepare/Default)
endef

结果:问题解决

相关文章:

【openwrt学习笔记】新patch的制作和旧patch的修改

目录 一、参考资料二、使用QUILT工具添加补丁2.1 添加一个新的补丁2.2 编辑一个已存在的补丁2.3 补丁命名规范2.4 添加或修改内核补丁文件 三、使用diff 打补丁四、相关问题及解决方法4.1 make package/package-name/update Vs失败 一、参考资料 Working with patches 二、使…...

【GIT】Git clone https://xxx.git 报错仓库找不到,ssh却可以。

环境 MacBook Pro:13.0 (22A380),Intel。 Python:3.10.9 序言 最近在Mac电脑中按照stable diffusion webUI 时,总是报: MacBook-Pro:openai yutao$ git clone https://github.com/AUTOMATIC1111/stable-diffusion-…...

Vue系列(三)之 基础语法下篇【事件处理,表单综合案例,组件通信】

一. 事件处理 在 Vue.js 中,v-on 指令被用于监听 DOM 事件,并在事件触发时执行相应的方法,这些方法就是事件处理器。v-on 指令有简写形式 ,例如 click"handleClick" 会监听点击事件并执行 handleClick 方法。 事件处理…...

AI 编码助手 Codewhisperer 安装步骤和使用初体验

文章作者:为了自己加油 最近亚⻢逊云科技推出了一款基于机器学习的AI编程助手 Amazon Code Whisperer,可以实时提供代码建议。在编写代码时,它会自动根据现有的代码和注释给出建议。Amazon Code Whisperer与 GitHub Copilot 类似,…...

Python操作Elasticsearch

一、Python操作ES之基本使用 安装:pip3 install elasticsearch from elasticsearch import Elasticsearchobj = Elasticsearch() # 创建索引(Index) # result = obj.indices.create(index=user,ignore=400) # # print(result)# print(result) # 删除索引 # result = obj.i…...

面试打底稿② 专业技能的第二部分

简历原文 抽查部分 比较熟悉Nacos、Feign、SpringCloud Gateway等微服务的使用,有实际上手项目使用的经验;基本掌握Linux常用命令,了解Linux系统管理、网络管理、生产环境等必用服务,了解Docker的使用,在博客中多有关…...

java 对mybatis拦截Interceptor进行权限控制(条件修改),入参修改,返回修改

使用jsqlparser对sql解析拼装 基础准备 <dependency><groupId>com.github.jsqlparser</groupId><artifactId>jsqlparser</artifactId><version>4.5</version><scope>compile</scope> </dependency> <depende…...

鲲鹏+麒麟v10 sp1 打包tomcat

一、安装打包软件 yum install rpm-build yum install rpmdevtools 二、复制tar包 注意&#xff1a;如果要修改配置文件需要把tar包解压&#xff0c;修改tomcat配置文件 cp apache-tomcat-8.5.93.tar.gz /root/rpm-build/SOURCES 三、编辑/root/rpm-build/SOURCES/tomcat.…...

大屏大概是怎么个开发法(前端)

写在前面&#xff0c;博主是个在北京打拼的码农&#xff0c;从事前端工作5年了&#xff0c;做过十多个大大小小不同类型的项目&#xff0c;最近心血来潮在这儿写点东西&#xff0c;欢迎大家多多指教。 对于文章中出现的任何错误请大家批评指出&#xff0c;一定及时修改。有任何…...

什么是Selenium?使用Selenium进行自动化测试!

你知道什么是 Selenium 吗&#xff1f;你知道为什么要使用它吗&#xff1f;答案就在本文中&#xff0c;很高兴能够与你共飧。 自动化测试正席卷全球&#xff0c;Selenium 认证是业界最抢手的技能之一。 什么是 Selenium&#xff1f; Selenium 是一种开源工具&#xff0c;用于…...

第一章:最新版零基础学习 PYTHON 教程(第十七节 - Python 表达式语句–Python返回语句)

return 语句用于结束函数调用的执行,并将结果(return 关键字后面的表达式的值)“返回”给调用者。return 语句之后的语句不被执行。如果return语句没有任何表达式,则返回特殊值None。return 语句总体上用于调用函数,以便可以执行传递的语句。 注意: Return 语句不能在函数…...

前端碎知识点

1 统计字符串中每个字符出现的频率 const str fgasdfadfdasd;const result str.split().reduce((a, b) > {if (a[b]) {a[b];} else {a[b] 1;}return a; }, {});const resultNew str.split().reduce((a, b) > {// undefined&#xff0c;就是NaNa[b] || (a[b] 1);ret…...

【Leetcode Sheet】Weekly Practice 7

Leetcode Test 1462 课程表Ⅳ(9.12) 你总共需要上 numCourses 门课&#xff0c;课程编号依次为 0 到 numCourses-1 。你会得到一个数组 prerequisite &#xff0c;其中 prerequisites[i] [ai, bi] 表示如果你想选 bi 课程&#xff0c;你 必须 先选 ai 课程。 有的课会有直接…...

leetcode Top100(23)回文链表

给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为回文链表。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 输入&#xff1a;head [1,2,2,1] 输出&#xff1a;true采用动态数组&#xff0c;判断数组对称就可以了&#xff08;这解法空间…...

WebGL绘制圆形的点

目录 前言 如何实现圆形的点&#xff1f; 片元着色器内置变量&#xff08;gl_FragCoord、gl_PointCoord&#xff09; gl_PointCoord的含义 示例程序&#xff08;RoundedPoint.js&#xff09; 代码详解 前言 本文将讨论示例程序RoundedPoint&#xff0c;该程序绘制了圆…...

《The Rise and Potential of Large Language Model Based Agents: A Survey》全文翻译

The Rise and Potential of Large Language Model Based Agents: A Surve - 基于 LLMs 的代理的兴起和潜力&#xff1a;一项调查 论文信息摘要1. 介绍2. 背景2.1 AI 代理的起源2.2 代理研究的技术趋势2.3 为什么大语言模型适合作为代理大脑的主要组件 论文信息 题目&#xff1…...

在线地图获取城市路网数据

在线地图获取城市路网数据 近期科研项目中&#xff0c;需要获取城市路网数据&#xff0c;于是详细阅读各大在线地图api接口&#xff0c;总结出来这么一条可行的思路&#xff1a; 首先获取城市轮廓根据城市轮廓把城市分割成若干个小块在每个小块中根据在线地图的POI检索接口&a…...

8.2 Jmeter if控制器使用

前提&#xff1a;jmeter脚本需要用到if控制器&#xff0c;if判断如果查询不到&#xff0c;则去新增。 1、添加if控制器 线程组-->逻辑控制器-->如果(if)控制器 1&#xff09;、Expression (must evaluate to true or false) &#xff1a;表达式&#xff08;值必须是tru…...

科技云报道:青云科技打出“AI算力牌”,抢跑“云+AI”新增市场

科技云报道原创。 近三年&#xff0c;中国云计算市场在多个维度同时发生着剧烈变化——疫情极大加速了全社会对于数字化的认知和接受程度&#xff1b;一系列云原生技术依托着开源和蓬勃的市场而迅速发展演变&#xff0c;更多产品和技术名词同时涌向市场&#xff1b;国际关系复…...

学习路之PHP--lumen安装配置

一、下载lumen源码 composer create-project --prefer-dist laravel/lumen blog 安装lumen-generator composer require flipbox/lumen-generator 二、配置 bootstrap\app.php 97行 $app->register(Flipbox\LumenGenerator\LumenGeneratorServiceProvider::class);三、生成…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下&#xff1a; struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用

在工业制造领域&#xff0c;无损检测&#xff08;NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统&#xff0c;以非接触式光学麦克风技术为核心&#xff0c;打破传统检测瓶颈&#xff0c;为半导体、航空航天、汽车制造等行业提供了高灵敏…...