[yocto] Problem with applying a patch using default -pnum

Hans Beckerus hans.beckerus at gmail.com
Thu Mar 7 13:22:49 PST 2013


On 2013-03-07 10:01, Jerrod Peach wrote:
>
>
>
> On Thu, Mar 7, 2013 at 2:43 PM, Hans Beckerus <hans.beckerus at gmail.com 
> <mailto:hans.beckerus at gmail.com>> wrote:
>
>     On 2013-03-07 8:11, Jerrod Peach wrote:
>>     Hans,
>>
>>     Are you sure you're seeing the patch system use $WORKDIR instead
>>     of $S as the root for patching?  I've had to do a lot of patching
>>     in our own layers recently and I've always seen $S used as the
>>     root for the patch.  Are you explicitly setting S =
>>     "${WORKDIR}/git"?  That's what we do for our git recipes.  That's
>>     how you get the system to recognize the source somewhere other
>>     than just $WORKDIR.
>>
>>     As for specifying a different -pnum, you absolutely can do that
>>     like so:
>>
>>     /SRC_URI += "file://my-change.patch*;striplevel=X*"/
>>
>>     X is the pnum that you want.  Its default value is 1.
>>
>>     You may also find this page useful -- it contains all sorts of
>>     hints for setting up your recipes in a Yocto-standard way:
>>
>>     https://wiki.yoctoproject.org/wiki/Recipe_&_Patch_Style_Guide
>>
>>     That's where I learned about striplevel and the preference for it
>>     over the deprecated pnum parameter.
>>
>>     Kind regards,
>>
>>     Jerrod
>>
>>
>     Hi Jarod. Thanks, the pointer you gave will most certainly be of
>     great aid. I will try the striplevel approach
>     instead of writing my own do_patch() override.
>     Regarding how certain I am that the root folder is ${WORKDIR} when
>     patching, not at all ;)
>     In my do_patch() function is simply did `pwd` and it was not set
>     to ${S} as I set it to.
>     That does not mean that the built-in patch system is using
>     ${WORKDIR}, I am aware of that.
>     Things here is, even though my patch is placed in ${W} and I set
>     ${S} to eg. ${W}/git/some/folder,
>     why would it not work? In another package I set ${S} to
>     ${WORKDIR}/git and it works
>     just fine. I can not understand why setting ${S} to something else
>     breaks the logic?
>     It's not that bitbake can not find the patch file, it definitely
>     does that, but the -pnum seems to get
>     messed up. But maybe that is the whole point of having the
>     striplevel=X in the first place.
>
>     Hans
>
>
> pnum/striplevel's purpose is to strip off the leading paths from a 
> patch file.  If you're having trouble understanding how that works, 
> this link might help:
>
> http://drupal.org/patch/apply#comment-239397
>
> Changing $S to a different depth and having do_patch() fail is 
> certainly expected behavior if you don't change the value of 
> striplevel.  Does that answer your question?

Yes, I am fully aware of how -pnum works. My confusion was based on how 
bitbake will assume a certain depth and use that as default.
Actually it could have been more clever by doing a comparison between $W 
(or patch file location), the patch itself, and $S.
Anyway, you did answer my question. Thanks. I will try the striplevel 
tomorrow when I am back at work.

Hans
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/yocto/attachments/20130307/05001fae/attachment.html>


More information about the yocto mailing list