* BB_STAMP_POLICY @ 2008-05-28 13:13 Koen Kooi 2008-06-02 10:35 ` BB_STAMP_POLICY Detlef Vollmann 0 siblings, 1 reply; 6+ messages in thread From: Koen Kooi @ 2008-05-28 13:13 UTC (permalink / raw) To: openembedded-devel FYI: 11:37:33 Koen: is BB_STAMP_POLICY documented somewhere? 11:37:47 Richard Purdie: Not really 11:38:03 Richard Purdie: Takes the values "file" "whitelist" or "full" 11:38:35 Richard Purdie: "file" is the traditional behaviour with stamps just checked within a given recipe 11:38:46 Richard Purdie: "full" checks all the dependencies are consistent 11:39:12 Richard Purdie: "whitelist" allows some packages to be excluded from the stamp checking basically so packages staging can work ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: BB_STAMP_POLICY 2008-05-28 13:13 BB_STAMP_POLICY Koen Kooi @ 2008-06-02 10:35 ` Detlef Vollmann 2008-06-02 11:07 ` BB_STAMP_POLICY Richard Purdie 0 siblings, 1 reply; 6+ messages in thread From: Detlef Vollmann @ 2008-06-02 10:35 UTC (permalink / raw) To: openembedded-devel Koen Kooi wrote: > 11:37:33 Koen: is BB_STAMP_POLICY documented somewhere? > 11:37:47 Richard Purdie: Not really > 11:38:03 Richard Purdie: Takes the values "file" "whitelist" or "full" > 11:38:35 Richard Purdie: "file" is the traditional behaviour with stamps > just checked within a given recipe > 11:38:46 Richard Purdie: "full" checks all the dependencies are consistent > 11:39:12 Richard Purdie: "whitelist" allows some packages to be excluded > from the stamp checking basically so packages staging can work Just for info: I've tested "whitelist" pretty extensivly over the past few weeks and I'm pretty confident that all the bugs are fixed now. But I've run into a fundamental problem with dependency checking: for one of our projects we're changing frequently between NPTL and linuxthreads for glibc (we'd like to use NPTL for the features, but run again and again into problems with NPTL). Normally, this change is just a flip of GLIBC_ADDONS in the distro config file. But of course the value of this specific variable is not tracked by the dependency checking (which is IMHO correct). So what I did is to split the glibc recipes into a linuxthreads one and an NPTL one (which was quite some exercise). Now I face the problem to separate glibc between "--with-tls" and "--without-tls", which would be a change for EXTRA_OECONF_glibc-linuxthreads in my distro conf file, but again this defeats dependency tracking. So I would have to split glibc(-linuxthreads) again, but I'm a bit reluctant to do so... One solution for that would be to introduce something like use flags, which could be included into the stamp information and used for dependency checking. But there were a number of discussions about use flags on this list and there was quite some opposition. IIRC, this opposition was mainly against the cross-package nature of use flags, but we don't need this for dependency checking. What we need is a naming scheme that the dependency checker knows about so that it can include specific variables into the stamp information, something like USE_glibc_ADDONS = "nptl" USE_glibc_EXTRA_OECONF = "--with-tls --with-__thread" What do people think about this, or is there a completely different way to solve the underlying problem? Detlef ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: BB_STAMP_POLICY 2008-06-02 10:35 ` BB_STAMP_POLICY Detlef Vollmann @ 2008-06-02 11:07 ` Richard Purdie 2008-06-02 22:09 ` BB_STAMP_POLICY Detlef Vollmann 0 siblings, 1 reply; 6+ messages in thread From: Richard Purdie @ 2008-06-02 11:07 UTC (permalink / raw) To: openembedded-devel On Mon, 2008-06-02 at 12:35 +0200, Detlef Vollmann wrote: > But I've run into a fundamental problem with dependency checking: > for one of our projects we're changing frequently between NPTL > and linuxthreads for glibc (we'd like to use NPTL for the features, > but run again and again into problems with NPTL). > Normally, this change is just a flip of GLIBC_ADDONS in the distro > config file. But of course the value of this specific variable > is not tracked by the dependency checking (which is IMHO correct). > So what I did is to split the glibc recipes into a linuxthreads > one and an NPTL one (which was quite some exercise). > Now I face the problem to separate glibc between "--with-tls" > and "--without-tls", which would be a change for > EXTRA_OECONF_glibc-linuxthreads in my distro conf file, but > again this defeats dependency tracking. So I would have to > split glibc(-linuxthreads) again, but I'm a bit reluctant > to do so... > > One solution for that would be to introduce something like > use flags, which could be included into the stamp information > and used for dependency checking. But there were a number > of discussions about use flags on this list and there was > quite some opposition. > IIRC, this opposition was mainly against the cross-package > nature of use flags, but we don't need this for dependency > checking. What we need is a naming scheme that the dependency > checker knows about so that it can include specific variables > into the stamp information, something like > USE_glibc_ADDONS = "nptl" > USE_glibc_EXTRA_OECONF = "--with-tls --with-__thread" > > What do people think about this, or is there a completely > different way to solve the underlying problem? The correct solution from a bitbake/OE perspective is to have multiple providers, one for set of options combination and to switch between them using PREFERRED_PROVIDER. The biggest challenge you find when doing this is lots of recipes use ${PN} internally and by creating a new package you then need to hardcode that variable. Since thats the main barrier to doing this I'd propose trying to remove that obstacle. We could do this by having: bitbake.conf: PKGPN ?= "${PN}" and then using PKGPN in recipes instead of PN. If you then create a glibc-some-extra-option you can just add a line which says: PKGPN = "glibc" and it should all work. This would also be useful for -sdk and -native recipes for example which currently have nastier workarounds for this problem. Would this solve the problem? Can anyone see a better name than PKGPN? Regards, Richard ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: BB_STAMP_POLICY 2008-06-02 11:07 ` BB_STAMP_POLICY Richard Purdie @ 2008-06-02 22:09 ` Detlef Vollmann 2008-06-02 23:45 ` BB_STAMP_POLICY Richard Purdie 0 siblings, 1 reply; 6+ messages in thread From: Detlef Vollmann @ 2008-06-02 22:09 UTC (permalink / raw) To: openembedded-devel Richard Purdie wrote: > The correct solution from a bitbake/OE perspective is to have multiple > providers, one for set of options combination and to switch between them > using PREFERRED_PROVIDER. I understand, and that's why I started that way. But it starts to explode, and I have some uncomfortable feeling about breaking changes going unnoticed... > The biggest challenge you find when doing this is lots of recipes use > ${PN} internally and by creating a new package you then need to hardcode > that variable. Another problem is the hardcoded name of packages inside recipes (glibc-package.bbclass is a prominent example for that). > Since thats the main barrier to doing this I wouldn't say that's the main barrier. It's annoying, but once you know what to look for it's just some search and replace. The biggest problem I see are silent breaks, because of changes in some configuration files that are not tracked by dependency checking. > I'd propose trying to remove > that obstacle. We could do this by having: > > bitbake.conf: > > PKGPN ?= "${PN}" > > and then using PKGPN in recipes instead of PN. If you then create a > glibc-some-extra-option you can just add a line which says: > > PKGPN = "glibc" > > and it should all work. This would also be useful for -sdk and -native > recipes for example which currently have nastier workarounds for this > problem. > > Would this solve the problem? It would make the the setup of the additional recipes easier, but it doesn't solve the main problem of breaking changes. For that maybe something in insane.bbclass could check and complain about settings like EXTRA_OECONF_xyz in a conig file when BB_STAMP_POLICY is set. Detlef ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: BB_STAMP_POLICY 2008-06-02 22:09 ` BB_STAMP_POLICY Detlef Vollmann @ 2008-06-02 23:45 ` Richard Purdie 2008-06-03 5:05 ` BB_STAMP_POLICY Detlef Vollmann 0 siblings, 1 reply; 6+ messages in thread From: Richard Purdie @ 2008-06-02 23:45 UTC (permalink / raw) To: openembedded-devel On Tue, 2008-06-03 at 00:09 +0200, Detlef Vollmann wrote: > The biggest problem I see are silent breaks, because of changes in > some configuration files that are not tracked by dependency checking. I not 100% sure what you're getting at here but I'll try and follow this to its logical conclusion. If you change something in some recipe, say EXTRA_OECONF you then need to force a rebuild of the recipe either by bumping PR, using the --force option etc. to make the change take effect. This means package A would rebuild and the way BB_STAMP_POLICY full/whitelist works means that since A rebuilt, anything depending on A will also rebuild. So this case is covered. Perhaps you mean that you change some variable in say bitbake.conf and you then don't know which recipes it may have an effect on. You therefore don't know which to rebuild? Bitbake can't know whether a given change in some conf file changes a given package. What it can in theory tell is whether the some conf/class/bb/inc file has changed or not since a given package was built. We already have this cache logic in place but it currently has no influence on stamp validity decisions. It would be possible to wire that into the stamp logic so if you touch bitbake.conf anything which could be influenced by that file (everything) would rebuild. If you touch a class file like kernel.bbclass, just the kernel would rebuild (and anything depending on it). Any change to local.conf would rebuild everything. For comparison note that your USE variables just cover the EXTRA_OECONF variable. There are hundreds of other variables which can influence the build and trying to build a definitive list of them would be difficult. What makes EXTRA_OECONF special? Cheers, Richard ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: BB_STAMP_POLICY 2008-06-02 23:45 ` BB_STAMP_POLICY Richard Purdie @ 2008-06-03 5:05 ` Detlef Vollmann 0 siblings, 0 replies; 6+ messages in thread From: Detlef Vollmann @ 2008-06-03 5:05 UTC (permalink / raw) To: openembedded-devel Richard Purdie wrote: > On Tue, 2008-06-03 at 00:09 +0200, Detlef Vollmann wrote: >> The biggest problem I see are silent breaks, because of changes in >> some configuration files that are not tracked by dependency checking. > > I not 100% sure what you're getting at here but I'll try and follow this > to its logical conclusion. > > If you change something in some recipe, say EXTRA_OECONF you then need > to force a rebuild of the recipe either by bumping PR, using the --force > option etc. to make the change take effect. This means package A would > rebuild and the way BB_STAMP_POLICY full/whitelist works means that > since A rebuilt, anything depending on A will also rebuild. So this case > is covered. Correct, this is the way as it should be. But this way it's something manual, and that will get forgotten at some time. In our environment we sometimes build different projects at the same time (using different chroot environments for that). So if you want to change something for a project, you do the change and start the build, and then you go to some other work and come back after 20 minutes to do a short test and then publish the release for the testers. In such an environment, things like a forced build easily get forgotten. In our current build system, for switches between NPTL and linuxthreads we have to exchange toolchain manually, and we had more than one case where the image didn't contain the version that we expected, leading to nasty, hard to track down errors. > Perhaps you mean that you change some variable in say bitbake.conf and > you then don't know which recipes it may have an effect on. You > therefore don't know which to rebuild? No, that's not the real problem. > Bitbake can't know whether a given change in some conf file changes a > given package. What it can in theory tell is whether the some > conf/class/bb/inc file has changed or not since a given package was > built. We already have this cache logic in place but it currently has no > influence on stamp validity decisions. It would be possible to wire that > into the stamp logic so if you touch bitbake.conf anything which could > be influenced by that file (everything) would rebuild. If you touch a > class file like kernel.bbclass, just the kernel would rebuild (and > anything depending on it). Any change to local.conf would rebuild > everything. That would be the same as rebuilding a whole project because the Makefile has changed. I know people who do that, but I don't like this approach. > For comparison note that your USE variables just cover the EXTRA_OECONF > variable. There are hundreds of other variables which can influence the > build and trying to build a definitive list of them would be difficult. > What makes EXTRA_OECONF special? Sorry, but it seems that I didn't make myself very clear. What I proposed is a naming scheme like: USE_package_VARIABLE where 'USE' is the marker for bitbake that this is something to track, 'package' is the package for which this needs to be tracked, and 'VARIABLE' is the name of the variable as it is used in the package's recipe. Detlef ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2008-06-03 5:09 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2008-05-28 13:13 BB_STAMP_POLICY Koen Kooi 2008-06-02 10:35 ` BB_STAMP_POLICY Detlef Vollmann 2008-06-02 11:07 ` BB_STAMP_POLICY Richard Purdie 2008-06-02 22:09 ` BB_STAMP_POLICY Detlef Vollmann 2008-06-02 23:45 ` BB_STAMP_POLICY Richard Purdie 2008-06-03 5:05 ` BB_STAMP_POLICY Detlef Vollmann
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.