[oe] [RFC] patch file location

Frans Meulenbroeks fransmeulenbroeks at gmail.com
Tue Jun 22 07:03:43 UTC 2010


I'd like to draw the attention to the location of patch files.
My original understanding was that these should be in either the files
dir (if they apply to all), or in a dir with the name of the recipe
(replacing the _ with a - ).
And I kind-a assumed that if a patch is in a recipe dir it would have
priority above a version in the files dir.

However, this does not seem to be enforced.
I noticed some packages do also not live up to this.
One example is glibc.
Take one patch as example: arm-memcpy.patch:

This patch occurs in 5 dirs:

recipes/glibc$ ls -l */arm-memcpy*
-rw-r--r-- 1 frans frans 17071 2010-06-02 15:57 glibc-2.2.5/arm-memcpy.patch
-rw-r--r-- 1 frans frans 16957 2010-06-02 15:57 glibc-2.3.2/arm-memcpy.patch
-rw-r--r-- 1 frans frans 16960 2010-06-02 15:57 glibc-2.4/arm-memcpy.patch
-rw-r--r-- 1 frans frans 16993 2010-06-02 15:57 glibc-cvs-2.3.5/arm-memcpy.patch
-rw-r--r-- 1 frans frans 16960 2010-06-02 15:57 glibc-cvs/arm-memcpy.patch

Looking at the size these are at least 4 different versions

This patch is referenced in 14 recipes:

recipes/glibc$ grep arm-memcpy *
glibc_2.10.1.bb:           file://arm-memcpy.patch \
glibc_2.2.5.bb:	   file://arm-memcpy.patch;striplevel=0 \
glibc_2.3.2.bb: 	   file://arm-memcpy.patch;striplevel=0 \
glibc_2.3.2+cvs20040726.bb:	   file://arm-memcpy.patch;striplevel=0 \
glibc_2.3.3+cvs20041128.bb:	   file://arm-memcpy.patch;striplevel=0 \
glibc_2.3.3+cvs20050221.bb:	   file://arm-memcpy.patch;striplevel=0 \
glibc_2.3.3+cvs20050420.bb:	   file://arm-memcpy.patch;striplevel=0 \
glibc_2.3.5+cvs20050627.bb:	   file://arm-memcpy.patch \
glibc_2.4.bb:           file://arm-memcpy.patch \
glibc_2.5.bb:  file://arm-memcpy.patch \
glibc_2.6.1.bb:  file://arm-memcpy.patch \
glibc_2.7.bb:           file://arm-memcpy.patch \
glibc_2.9.bb:           file://arm-memcpy.patch \
glibc_cvs.bb:#	   file://arm-memcpy.patch;striplevel=0 \
glibc_cvs.bb:	   file://arm-memcpy.patch \

Frankly speaking I have no clue at all which version of the patch will
be used by the 2.10.1 recipe. The only ways to find out is to study
the class code that does the patch or to actually build the package
(in the hope it selects the patch in a deterministic way). I don't
think it is good that if someone is debugging a problem that they
should have such a hard time to find out what version of a file is
actually used

My proposal:
- only apply patches (seek for patches) in the recipe dir (e.g. in the
example for glibc_2.10.1.bb this would be glibc-2.10.1) and in the
files directory

(optionally we might allow for a mechanism that allows specifying
patches for higher level recipes; e.g. glibc_2.10.1 could look in
glibc-2.10.1, glibc-2.10, glibc-2, glibc and files).

How do people feel about this? Any implementation hints?

Frans




More information about the Openembedded-devel mailing list