[OE-core] [RFC PATCH 1/5] base.bbclass: detect when S has been set incorrectly

Christopher Larson kergoth at gmail.com
Mon Jan 19 19:40:25 UTC 2015


Honestly I can't recall anymore. I remember looking into this, as this has
been a long-standing annoyance, but I don't recall what the issues were.
I'm absolutely in favor of your pursuing this.

On Tue Jan 13 2015 at 2:08:08 AM Petter Mabäcker <petter at technux.se> wrote:

> On 01/12/2015 04:53 PM, Paul Eggleton wrote:
> > Hi Petter,
> >
> > On Saturday 10 January 2015 15:40:10 Petter Mabäcker wrote:
> >> Currently base.bbclass is creating S if it's not created by unpacking
> >> an archive or fetching a repository. If we avoid creating S we can
> detect
> >> when S hasn't been set correctly, since it will not exist. Then we can
> tell
> >> the user that they should set S to a proper value, instead of just
> failing
> >> with odd errors in later tasks.
> >>
> >> Besides removing the auto-creation of S this change will introduce a
> warning
> >> if S is set incorrectly. The reason for not display an error and return
> is
> >> due to all external layers that might have recipes that will fail
> otherwise
> >> and that might be a bit to hard to start with. So use a warning until
> >> people have had a chance to cleanup affected recipes.
> >>
> >> [YOCTO #5627]
> >>
> >> Signed-off-by: Petter Mabäcker <petter at technux.se>
> >> ---
> >>   meta/classes/base.bbclass | 17 +++++++++++++----
> >>   1 file changed, 13 insertions(+), 4 deletions(-)
> >>
> >> diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass
> >> index de50be1..789af3b 100644
> >> --- a/meta/classes/base.bbclass
> >> +++ b/meta/classes/base.bbclass
> >> @@ -113,7 +113,6 @@ python base_do_fetch() {
> >>
> >>   addtask unpack after do_fetch
> >>   do_unpack[dirs] = "${WORKDIR}"
> >> -do_unpack[cleandirs] = "${S}/patches"
> >>   python base_do_unpack() {
> >>       src_uri = (d.getVar('SRC_URI', True) or "").split()
> >>       if len(src_uri) == 0:
> >> @@ -121,11 +120,21 @@ python base_do_unpack() {
> >>
> >>       rootdir = d.getVar('WORKDIR', True)
> >>
> >> +    # Ensure that we cleanup ${S}/patches
> >> +    # TODO: Investigate if we can remove
> >> +    # the entire ${S} in this case.
> >> +    s_dir = d.getVar('S', True)
> >> +    p_dir = os.path.join(s_dir, 'patches')
> >> +    bb.utils.remove(p_dir, True)
> >> +
> >>       try:
> >>           fetcher = bb.fetch2.Fetch(src_uri, d)
> >>           fetcher.unpack(rootdir)
> >>       except bb.fetch2.BBFetchException as e:
> >>           raise bb.build.FuncFailed(e)
> >> +
> >> +    if not os.path.exists(s_dir):
> >> +        bb.warn("%s ('S') don't exist, you must set 'S' to a proper
> value"
> >> % s_dir) }
> >>
> >>   def pkgarch_mapping(d):
> >> @@ -220,7 +229,7 @@ CONFIGURESTAMPFILE = "${WORKDIR}/configure.sstate"
> >>   CLEANBROKEN = "0"
> >>
> >>   addtask configure after do_patch
> >> -do_configure[dirs] = "${S} ${B}"
> >> +do_configure[dirs] = "${B}"
> >>   do_configure[deptask] = "do_populate_sysroot"
> >>   base_do_configure() {
> >>      if [ -n "${CONFIGURESTAMPFILE}" -a -e "${CONFIGURESTAMPFILE}" ];
> then
> >> @@ -238,7 +247,7 @@ base_do_configure() {
> >>   }
> >>
> >>   addtask compile after do_configure
> >> -do_compile[dirs] = "${S} ${B}"
> >> +do_compile[dirs] = "${B}"
> >>   base_do_compile() {
> >>      if [ -e Makefile -o -e makefile -o -e GNUmakefile ]; then
> >>              oe_runmake || die "make failed"
> >> @@ -248,7 +257,7 @@ base_do_compile() {
> >>   }
> >>
> >>   addtask install after do_compile
> >> -do_install[dirs] = "${D} ${S} ${B}"
> >> +do_install[dirs] = "${D} ${B}"
> >>   # Remove and re-create ${D} so that is it guaranteed to be empty
> >>   do_install[cleandirs] = "${D}"
> > This looks reasonable to me; however I'm sure I recall Chris talking
> about
> > some kind of complication with this issue a year or so ago - Chris do you
> > remember what that was about?
> >
> > Cheers,
> > Paul
> >
> Ok, I will wait and see if Chris remembers anything sneaky about this. I
> have run quite some tests without seeing any problems so far. Perhaps it
> was about removing ${S} instead of just ${S}/patches in do_unpack ?
> Because I think there have been some discussions about that in the past.
> I also did some test with that in the scope of 'bug 5627', but it is far
> more complex to do such a chance, a lot of recipes didn't liked that at
> all =/ It seems more correct to really wipe entire ${S} in that case,
> but I guess it have to wait..
>
> BR,
> Petter
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20150119/676dbf13/attachment-0002.html>


More information about the Openembedded-core mailing list