[oe] How to deal with complex patch including creating new patches?

Koen Kooi koen at dominion.thruhere.net
Fri Apr 25 07:46:03 UTC 2014


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

zhangxiao schreef op 25-04-14 08:25:
> Hi Experts,
> 
> As we know, usually we have to add patches on source tree and in most
> cases what we need to do is just add the source of the patch into SRC_URI
> list and bitbake will install it automatically in "patch" task.
> 
> While for some complex cases, for example the netcat as below:
> 
> http://cgit.openembedded.org/cgit.cgi/meta-openembedded/tree/meta-networking/recipes-support/netcat/netcat-openbsd_1.105.bb?h=master
>
> 
> 
> ... 8        SRC_URI = 
> "${DEBIAN_MIRROR}/main/n/netcat-openbsd/netcat-openbsd_${PV}.orig.tar.gz;name=netcat
>
> 
\
> 9 
> ${DEBIAN_MIRROR}/main/n/netcat-openbsd/netcat-openbsd_${PV}-7.debian.tar.gz;name=netcat-patch"
>
>  ...
> 
> It has two sources: one source tree as
> "netcat-openbsd_${PV}.orig.tar.gz"and the other is a patch called
> "netcat-openbsd_${PV}-7.debian.tar.gz".
> 
> While the patch is not simple as usual that beside common modifications
> on source tree, it also creates several patches that also need to be
> installed. To deal with it, this bb file make it in do_compile in line 22
> as below: ... 20        do_compile() { 21            cd ${S} 22
> while read line; do patch -p1 < ${WORKDIR}/debian/patches/$line; done <
> ${WORKDIR}/debian/patches/series 23            pkgrel=4 24
> oe_runmake CFLAGS="$CFLAGS -DDEBIAN_VERSION=\"\\\"${pkgrel}\\\"\"" 25
> } ...
> 
> Of course it is not good and will cause error when we force re-compile
> it since those patches had already been installed in the previous compile
> task.
> 
> The how to fix it?
> 
> Currently I can find two methods as below:
> 
> First, for line 21, 22 of do_compile that install new created patches,
> remove them. Then:
> 
> A) Add a do_patch_append and install those new created patches to this
> function;
> 
> B) Convert the netcat-openbsd_${PV}-7.debian.tar.gz to a pure patch. Let
> it contains all modifications and no need to create more patches any
> more. Then place this new created patch locally and modify the SRC_URI to
> point to it.

c) add all the patches from there to SRC_URI.

squashing patches is not a good idea, especially when updating the recipe
later on.

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Darwin)
Comment: GPGTools - http://gpgtools.org

iD8DBQFTWhK7MkyGM64RGpERAndgAJ9Lc8id//55Uk4OfsKD/zvH4W4s/ACcD0RQ
DvoFZmyIodLqi+AhxAWHkdM=
=71Zw
-----END PGP SIGNATURE-----




More information about the Openembedded-devel mailing list