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

Hans Beckérus hans.beckerus at gmail.com
Fri Mar 8 09:10:07 PST 2013


On Fri, Mar 8, 2013 at 2:49 AM, Daniel Lazzari <dlazzari at leapfrog.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
> >
> >
> > >
> > >
> > >
> > >
> > > On Thu, Mar 7, 2013 at 7:33 AM, Hans Beck?rus <hans.beckerus at gmail.com
> > > <mailto:hans.beckerus at gmail.com>> wrote:
> > >
> > >     On Thu, Mar 7, 2013 at 1:12 PM, Hans Beck?rus
> > >     <hans.beckerus at gmail.com <mailto:hans.beckerus at gmail.com>>
> > wrote:
> > >     > Hi. More problems ;)
> > >     > I have a patch file that needs to be applied to a source tree
> > >     and the
> > >     > patch file is copied properly to the ${WORKDIR} directory.
> > >     > So far so good. But, the problem with this source tree is that
> it is
> > >     > not built from the traditional root folder of the repo.
> > >     > This means I need to change ${S} to point somewhere else. This
> also
> > >     > causes the patch system to fail!
> > >     > I did an override of do_patch() in my .bb and that seems to
> > >     work, but
> > >     > I do not like to use overrides unless I really have to.
> > >     > So basically, is there some way to tell the built-in patch
> system to
> > >     > use a different -pnum value?
> > >     > If there is, I could stick with the do_patch() as provided by
> > >     default.
> > >     >
> > >     > Hans
> > >
> > >     Hmm, ok a correction from my side. Forget parts of what I said ;)
> > >     The patch system does not seem to use the value of ${S}, it is
> using
> > >     ${WORKDIR} as the root for patching, this is also where the patch
> file
> > >     is placed. The problem in my case does not seem to be that is built
> > >     from a non-standard path. The reason why it fails seems to be
> because
> > >     the actual source is not in ${WORKDIR}, it is in ${WORKDIR}/git.
> The
> > >     patch file does include git as part of the source path for obvious
> > >     reasons. What am I doing wrong? Having actual source code in
> > >     ${WORKDIR}/git I assume is very common for git based downloads.
> > >
> > >     Hans
> > >     _______________________________________________
> > >     yocto mailing list
> > >     yocto at yoctoproject.org <mailto:yocto at yoctoproject.org>
> > >     https://lists.yoctoproject.org/listinfo/yocto
> > >
> > >
>
> I also found another useful patch param called patchdir that sets the
> directory from which the patch is applied. This is useful when ${S} is set
> to a directory deeper than you want to patch from but don't want to mess
> with setting ${S}. I needed it to apply a patch to wpa_supplicant's src
> directory.
>
> Ex.
>
> file://gpio-sysfs-power-onoff-change.patch;patchdir=${WORKDIR}/wpa_supplicant-${PV}
>
> Thanks Daniel, that did the trick for me!
I set my patchdir=${W}/git and then used S=${W}/git/some/where/else as
build source.
No more need to override do_patch() :)

Hans

Daniel Lazzari Jr.
> Firmware Engineer
> dlazzari at leapfrog.com
> _______________________________________________
> yocto mailing list
> yocto at yoctoproject.org
> https://lists.yoctoproject.org/listinfo/yocto
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/yocto/attachments/20130308/dc3dfb09/attachment.html>


More information about the yocto mailing list