Openembedded Core Discussions
 help / color / mirror / Atom feed
* a few questions about "COMPATIBLE_MACHINE" variable
@ 2016-12-19 15:17 Robert P. J. Day
  2016-12-19 15:28 ` Christopher Larson
  0 siblings, 1 reply; 7+ messages in thread
From: Robert P. J. Day @ 2016-12-19 15:17 UTC (permalink / raw)
  To: OE Core mailing list


  as a starting point, COMPATIBLE_MACHINE is processed on a per-recipe
basis, and if it has no value, then there is no machine restriction
being applied to that recipe, correct? that's based on this snippet
from base.bbclass:

  need_machine = d.getVar('COMPATIBLE_MACHINE')
  if need_machine:
      import re
      compat_machines = (d.getVar('MACHINEOVERRIDES') or "").split(":")
      for m in compat_machines:
          if re.match(need_machine, m):
              break
      else:
          raise bb.parse.SkipPackage("incompatible with machine %s (not in COMPATIBLE_MACHINE)" % d.getVar('MACHINE'))

so far, so good?

  next, the documentation describes the value of that variable as a
regular expression, so the values are processed as RE patterns, but
some of the actual uses are confusing. from
poky/meta/recipes-kernel/linux:

$ grep -r COMPATIBLE_MACHINE *
linux-dummy.bb:#COMPATIBLE_MACHINE = "your_machine"
linux-yocto_4.1.bb:COMPATIBLE_MACHINE = "qemuarm|qemuarm64|qemux86|qemuppc|qemumips|qemumips64|qemux86-64"
linux-yocto_4.4.bb:COMPATIBLE_MACHINE = "qemuarm|qemuarm64|qemux86|qemuppc|qemumips|qemumips64|qemux86-64"
linux-yocto_4.8.bb:COMPATIBLE_MACHINE = "qemuarm|qemuarm64|qemux86|qemuppc|qemumips|qemumips64|qemux86-64"
linux-yocto-dev.bb:COMPATIBLE_MACHINE = "(qemuarm|qemux86|qemuppc|qemumips|qemumips64|qemux86-64)"
linux-yocto-rt_4.1.bb:COMPATIBLE_MACHINE = "(qemux86|qemux86-64|qemuarm|qemuppc|qemumips)"
linux-yocto-rt_4.4.bb:COMPATIBLE_MACHINE = "(qemux86|qemux86-64|qemuarm|qemuppc|qemumips)"
linux-yocto-rt_4.8.bb:COMPATIBLE_MACHINE = "(qemux86|qemux86-64|qemuarm|qemuppc|qemumips)"
linux-yocto-tiny_4.1.bb:COMPATIBLE_MACHINE = "(qemux86$)"
linux-yocto-tiny_4.4.bb:COMPATIBLE_MACHINE = "(qemux86$)"
linux-yocto-tiny_4.8.bb:COMPATIBLE_MACHINE = "(qemux86$)"
$

  first, what is best practice -- to use parentheses or not? i'm
assuming it makes no difference, but it does seem inconsistent and
could cause some confusion.

  next, if the possibilities in a list are REs, what is the point of
explicitly listing, say, "qemuarm|qemuarm64"? would not the RE
"qemuarm" subsume the more explicit "qemuarm64"? same for the other
architectures. (one could suggest that that entire line could be
shortened to "... = (^qemu)".)

  the above seems pretty clear since the following lines would appear
to say that *only* the qemux86 is compatible:

  linux-yocto-tiny_4.1.bb:COMPATIBLE_MACHINE = "(qemux86$)"
  linux-yocto-tiny_4.4.bb:COMPATIBLE_MACHINE = "(qemux86$)"
  linux-yocto-tiny_4.8.bb:COMPATIBLE_MACHINE = "(qemux86$)"

which suggests the following passage from the YP kernel dev manual is
a bit misleading:

  "You must change it to match a list of the machines that your new
  recipe supports. For example, to support the qemux86 and qemux86-64
  machines, use the following form:

       COMPATIBLE_MACHINE = "qemux86|qemux86-64"

and if all this is true, then if you're introducing a new machine, to
be magnificently pedantic, one should not use:

  COMPATIBLE_MACHINE_machinename = "machinename"

but

  COMPATIBLE_MACHINE_machinename = "^machinename$"

just to play it safe. am i reading all this correctly?

rday

-- 

========================================================================
Robert P. J. Day                                 Ottawa, Ontario, CANADA
                        http://crashcourse.ca

Twitter:                                       http://twitter.com/rpjday
LinkedIn:                               http://ca.linkedin.com/in/rpjday
========================================================================



^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2017-02-26 11:58 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-12-19 15:17 a few questions about "COMPATIBLE_MACHINE" variable Robert P. J. Day
2016-12-19 15:28 ` Christopher Larson
     [not found]   ` <CABcZAN=X+O23y=utG3iBvsdPNo1g9qM7H2JAT1PUpt-R=AYCBg@mail.gmail.com>
2016-12-19 17:56     ` Robert P. J. Day
2016-12-19 18:46       ` Christopher Larson
2016-12-19 20:33         ` Robert P. J. Day
2017-02-26 11:36         ` Robert P. J. Day
2017-02-26 11:58           ` Robert P. J. Day

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox