[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