On Fri, Mar 8, 2013 at 2:49 AM, Daniel Lazzari <dlazz...@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.becke...@gmail.com > > > <mailto:hans.becke...@gmail.com>> wrote: > > > > > > On Thu, Mar 7, 2013 at 1:12 PM, Hans Beck?rus > > > <hans.becke...@gmail.com <mailto:hans.becke...@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@yoctoproject.org <mailto:yocto@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 > dlazz...@leapfrog.com > _______________________________________________ > yocto mailing list > yocto@yoctoproject.org > https://lists.yoctoproject.org/listinfo/yocto >
_______________________________________________ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto