zoukankan      html  css  js  c++  java
  • openwrt 创建补丁

    quilt介绍

    openwrt使用quilt工具对patch进行管理,quilt其实就是一系列shell脚本组成的一个工具。

    安装quilt

    openwrt好像在host tools里面有quilt,不过也可以通过apt安装

    sudo apt install quilt -y
    

    配置quilt

    quilt使用前需要做一些配置,它的配置文件一般放~/.quiltrc或者/etc/quilt.quiltrc,你可以通过直接vim打开/usr/bin/quilt来一窥究竟。一般配置如下:

    cat > ~/.quiltrc <<EOF
    QUILT_DIFF_ARGS="--no-timestamps --no-index -p ab --color=auto"
    QUILT_REFRESH_ARGS="--no-timestamps --no-index -p ab"
    QUILT_SERIES_ARGS="--color=auto"
    QUILT_PATCH_OPTS="--unified"
    QUILT_DIFF_OPTS="-p"
    EDITOR="vim"
    EOF
    

    前面几个都是对脚本里面使用diffpatch这些工具时,所使用的参数进行配置,没啥好关注的,主要是EDITOR这项配置为你习惯的编辑器即可。

    添加一个新的补丁

    以我近期用到的uqmi包为例,增加一个补丁,先要对它prepare。注意这里uqmi包是还未修改过的,补丁将来就是往它上面打。

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

    熟悉openwrt的都知道,这是清理包,并且将包的源码解压到build_dir里面去,做编译前的准备工作。如果这个包是openwrt里面的host包,即编译出来的东西是给你PC用的,那么命令就是:

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

    然后进到包对应的准备好的源码目录:

    cd build_dir/target-arm_cortex-a7+neon-vfpv4_musl-1.1.16_eabi/uqmi-2016-12-19-8ceeab69/
    

    此时的源码是最原始的,可能它已经存在一些补丁了,先把已存在的补丁打上去,

    quilt push -a
    

    查看已有补丁:

    quilt series
    

    这里我的uqmi还没补丁,然后再在此基础上创建你自己的补丁,命令如下:

    quilt new 000-uqmi_test_pch.patch
    

    补丁名字有规定,因为如果包里面包含多个补丁,打补丁需要按照一定的顺序来的。

    • 补丁名字以数字开头,然后通过-符号链接一个简短的描述,数字和横杆-是重点

    • 选择的这个开头的数字必须高于已有补丁的开头数字,可以通过quilt series来查看已有补丁的

    其实数字就是打补丁的顺序,因为打补丁是通过脚本来完成的,先对补丁文件排序,再逐个打上去。

    创建空补丁后,接下来要把需要修改的文件与之关联。可以通过quilt add xxx来做这件事,然后你就可以编辑你要改的文件,也可以直接用quilt edit xx来添加并打开要改的文件:

    quilt edit xxx
    

    按照这种方法,把这次生成补丁需要修改的文件都修改后,使用quilt diff预览一下补丁

    quilt diff
    

    觉得没问题后,用quilt refresh将更新到补丁文件000-uqmi_test_pch.patch

    quilt refresh
    

    回到openwrt顶层目录,更新一下包

    make package/uqmi/update V=s
    

    最后重新编译这个包

    make package/uqmi/{clean,compile} package/index V=s
    

    如果编译出问题,如何处参考:Edit an existing patch

  • 相关阅读:
    Restful风格
    SpringMVC概念、原理及搭建
    Mybatis搭建
    HttpServletRequest、HttpServletResponse、Cookie、Session
    Servlet基础
    Spring整合Mybatis
    PHP代码标识
    IOC及Bean容器
    框架
    Spring概况
  • 原文地址:https://www.cnblogs.com/thammer/p/13608381.html
Copyright © 2011-2022 走看看