On 24-08-16 09:18, Richard Purdie wrote:
> On Wed, 2016-08-24 at 08:35 +0200, Mike Looijmans wrote:
>> First time I've heard about this limitation, I don't understand
>> what's this about either. I've been telling people to put their arch
>> or machine specific code into a seperate package and RDEPEND on it
>> from an allarch package that holds the Python code that calls into
>> that.
>>
>> We haven't seen any problems with that.
>>
>> So what is the bad thing that would happen if we don't set the
>> SIGGEN_EXCLUDE... variables in the layer.conf file?
>
> If you have an allarch recipe X and you depend on a tune or machine
> specific package from it, what you'll see is that when you switch
> MACHINE (with a different tune), the recipe X will rebuild each time.

So it's just inefficient, but does not break things?

> This is obviously suboptimal however its not the end of the world. It
> is problematic if you're using PR server.

Which brings me to the next question: What would go wrong then?

(PR server is somewhat mandatory today)

> The reason it rebuilds is that its checksum has a dependency on
> something which is tune or machine specific, you change MACHINE, the
> checksum changes and the allarch recipe's checksum changes.
>
> If we remove the dependency from the task checksum, the problem isn't
> there and it doesn't rebuild, however there are some circumstances
> where this could be an issue, e.g. if a dependency name was renamed by
> debian.bbclass for example.
>
> The mechanism for removing such a dependency is the one I've mentioned
> in layer.conf.
>
> You can see if you have a problem with your layers by running:
>
> oe-selftest -r sstatetests.SStateTests.test_sstate_allarch_samesigs
>
> Does that make the issue any clearer?

A bit. But I don't understand what I have to fill in where. Example:


mike@mikebuntu:~/.../recipes-spike/spike$ cat spikeall.bb
LICENSE="CLOSED"
inherit allarch
RDEPENDS_${PN} = "spikemach"
do_install() {
  install -d ${D}${bindir}
  echo 'cat ${sysconfdir}/hello' > ${S}/${PN}.sh
  install -m 755 ${S}/${PN}.sh ${D}${bindir}
}
mike@mikebuntu:~/.../recipes-spike/spike$ cat spikemach.bb
LICENSE="CLOSED"
PACKAGE_ARCH="${MACHINE_ARCH}"
PV="2"
do_install() {
  install -d ${D}${sysconfdir}
  echo "${MACHINE}" > ${D}${sysconfdir}/hello
}


I run "bitbake spikeall" and both packages get built.

I run "bitbake spikeall" and nothing builds (which is good)

Change the PV in spikemach.bb, and run "bitbake spikeall". Both spikemach and
spikeall are built (which is the problem we're talking about then, spikeall
needn't build again).

I add the following line to the layer.conf in that layer:

SIGGEN_EXCLUDERECIPES_ABISAFE += "spikeall"

No change, spikeall still gets rebuilt along with spikemach.

The other way around maybe?

SIGGEN_EXCLUDERECIPES_ABISAFE += "spikemach"

Now it appears to work. Changing spikemach no longer causes spikeall to rebuild.

I have no clue as to why this would be needed, but I'll take your word for it.

Why can't we just do SIGGEN_EXCLUDERECIPES_ABISAFE="1" in the spikemach.bb
recipe? That's much easier to maintain and understand...

 

Kind regards,

 

Mike Looijmans

System Expert

 



TOPIC Products

 

 

Materiaalweg 4

 

 

5681 RJ Best

T:

+31 (0) 499 33 69 69

Postbus 440

E:

mike.looijmans@topicproducts.com

5680 AK Best

W:

www.topicproducts.com

The Netherlands


Please consider the environment before printing this e-mail


Topic zoekt gedreven (embedded) software specialisten!