我想知道是否有任何方法可以使用“diff”命令为 Free scale“LTIB”生成补丁文件(通过排除编译时生成的二进制文件、目标文件和其他临时文件(没有“./ltib clean /"distclean")) 并使用“patch”命令重新应用它们。
我可以生成补丁文件,默认情况下包含所有临时文件。
我提前感谢您的帮助..
我想知道是否有任何方法可以使用“diff”命令为 Free scale“LTIB”生成补丁文件(通过排除编译时生成的二进制文件、目标文件和其他临时文件(没有“./ltib clean /"distclean")) 并使用“patch”命令重新应用它们。
我可以生成补丁文件,默认情况下包含所有临时文件。
我提前感谢您的帮助..
这取决于您要制作的补丁。在 LTIB 环境中,您可能希望使用不同的策略更改几种类型的内容:
对软件包的修改(在 $LTIB_DIR/rpm/BUILD 下):LTIB 本身可以为您准备一个补丁文件并编辑活动的 .spec 文件(位于 $LTIB_DIR/dist 或 $LTIB_DIR/config/platform 下);为此,您可以使用 ltib 制作补丁:
cd $LTIB_DIR
./ltib -p packagename -m patchmerge
如果您查看 ltib 脚本本身中的 patchmerge 代码,您会发现它大致执行以下操作:
mv $LTIB_DIR/rpm/BUILD/packagename $LTIB_DIR/rpm/BUILD/packagename.modified
cd $LTIB_DIR/rpm/BUILD/packagename.modified
make distclean
cd -
rpmbuild -bp ... # go through the original prep stage
diff --exclude CVS --exclude .git -uNr $LTIB_DIR/rpm/BUILD/packagename $LTIB_DIR/rpm/BUILD/packagename.modified > patchfile
然后将补丁文件添加到规范中并告诉您有关它的信息。
我不知道您要避免使用哪个 distclean(全局或包),但是如果您可以在包目录中执行“make distclean”(而不是执行./ltib -m distclean
,这将删除您的 rootfs),那么这个可能对你没问题。
否则,您可以使用 diff (或git diff
)制作您自己的补丁文件。
您可以制作一个diff
类似的排除文件.gitignore
并将其提供给 diff 以便对补丁中的内容更具选择性(阅读diff
手册页):
cd $LTIB_DIR
vi diffignore # add file patterns to this file
mv $LTIB_DIR/rpm/BUILD/packagename $LTIB_DIR/rpm/BUILD/packagename.modified
./ltib -p packagename -m prep
diff --exclude CVS --exclude .git -X diffignore -uNr $LTIB_DIR/rpm/BUILD/packagename $LTIB_DIR/rpm/BUILD/packagename.modified > patchfile