When a dependency causes a recipe to effectively be rebuilt, its output may in fact not change; but new packages (with an increased PR value, if using the PR server) will be generated nonetheless. There's no practical way for us to predict whether or not this is going to be the case based solely on the inputs, but we could compare the package output and see if that is materially different and based upon that decide to replace the old package with the new one. I've created a class to do this but it needs further work. Here's the link to the mailing list discussion: http://thread.gmane.org/gmane.comp.handhelds.openembedded.core/68979 And the class itself (the other changes in the patchset have been merged). http://cgit.openembedded.org/openembedded-core-contrib/diff/meta/classes/packagefeed-stability.bbclass?h=paule/packagefeed-stability
Actually, a better link to the class file: http://cgit.openembedded.org/openembedded-core-contrib/plain/meta/classes/packagefeed-stability.bbclass?h=paule/packagefeed-stability
I started taking a look at this work and added a couple of patches to: 1) Prevent do_package_compare being run for native packages (this was a hammer to prevent trying to run build-compare on the build-compare package). 2) Prevent do_package_compare being run for recipes where PACKAGES is empty (this was to prevent trying to run do_package_compare on gcc-source, which has no packages) 3) Ensure the -prediff directory is created (by setting the 'dirs' varflag on the do_package_compare function) 4) Update to the latest build-compare. Having looked over some of the build-compare output I think we need to do something smarter with dev packages. For example packagegroup-core-boot is being copied with the following message: packagegroup-core-boot: copying packagegroup-core-boot because packagegroup-core-boot-dev has a fixed version dependency on it and that package is going to be copied. As indicated the only difference in the -dev file is the PR of the base package having increased: ./control differs (ASCII text) --- old/./control 2016-01-14 23:00:19.303712892 +0000 +++ new/./control 2016-01-14 23:00:19.311712932 +0000 @@ -9,6 +9,6 @@ License: MIT Architecture: qemux86 OE: packagegroup-core-boot -Depends: packagegroup-core-boot (= 1.0-r17.0) +Depends: packagegroup-core-boot (= 1.0-r17.1) Recommends: base-passwd-dev, netbase-dev, udev-dev, base-files-dev, sysvinit-dev, busybox-hwclock-dev, modutils-initscripts-dev, v86d-dev, busybox-dev, update-alternatives-opkg-dev, init-ifupdown-dev, initscripts-dev Can we just skip -dev and -dbg packages as suggested by Mark? I think the conclusion of the thread where Paul notes his concern regarding patching a header is that only -dbg packages should be skipped. Thus we perhaps need to improve the smarts around comparison of versioned Depends on the base package? WIP tree is: http://cgit.openembedded.org/openembedded-core-contrib/log/?h=joshuagl/packagefeed-stability
(In reply to comment #2) > > Having looked over some of the build-compare output I think we need to do > something smarter with dev packages. For example packagegroup-core-boot is > being copied with the following message: > > packagegroup-core-boot: copying packagegroup-core-boot because > packagegroup-core-boot-dev has a fixed version dependency on it and that > package is going to be copied. > > As indicated the only difference in the -dev file is the PR of the base > package having increased: > > ./control differs (ASCII text) > --- old/./control 2016-01-14 23:00:19.303712892 +0000 > +++ new/./control 2016-01-14 23:00:19.311712932 +0000 > @@ -9,6 +9,6 @@ > License: MIT > Architecture: qemux86 > OE: packagegroup-core-boot > -Depends: packagegroup-core-boot (= 1.0-r17.0) > +Depends: packagegroup-core-boot (= 1.0-r17.1) > Recommends: base-passwd-dev, netbase-dev, udev-dev, base-files-dev, > sysvinit-dev, busybox-hwclock-dev, modutils-initscripts-dev, v86d-dev, > busybox-dev, update-alternatives-opkg-dev, init-ifupdown-dev, initscripts-dev > > Can we just skip -dev and -dbg packages as suggested by Mark? Having just taken a look at Paul's changes to build-compare I'm wondering whether the solution here is to update adjust_controlfile () in functions.sh to up Depends entries which match the base package?
I think we should definitely skip comparison of the '-dbg' files. While possible to do a package upgrade due to '-dbg', this will be such a rare occurrence that I don't think it needs to be factored in. Due to the potential for header changes I agree with Paul on the main and -dev packages should be compared. As mentioned in the thread a simple optimization is as soon as the first package is found to have a difference stop comparing that series and copy/install them all (as a group). Any one change, means they all changed. As for the PR stuff, I though, at least on the RPM comparison, that the PR values of dependencies were filtered out of the comparison, since we do expect it to change -- but specific PR versions not be dependent between recipes. (Versions yes, but not PR.)
(In reply to comment #4) > I think we should definitely skip comparison of the '-dbg' files. While > possible to do a package upgrade due to '-dbg', this will be such a rare > occurrence that I don't think it needs to be factored in. Noted, I'll work on making this change. > Due to the potential for header changes I agree with Paul on the main and > -dev packages should be compared. OK, great. > As mentioned in the thread a simple optimization is as soon as the first > package is found to have a difference stop comparing that series and > copy/install them all (as a group). Any one change, means they all changed. Yep, this is on my todo too. > As for the PR stuff, I though, at least on the RPM comparison, that the PR > values of dependencies were filtered out of the comparison, since we do > expect it to change -- but specific PR versions not be dependent between > recipes. (Versions yes, but not PR.) Right, this is using stock OE-Core's default configuration so it's generating ipk that include the version of the main package in the Depends: of -dev and -dbg packages. I hacked a nasty little change to build-compare to delete the version for the sake of the comparison: http://git.openembedded.org/openembedded-core-contrib/commit/?h=joshuagl/packagefeed-stability&id=c929ba4661efe2c317261602c9044a6e96380569 After which I get fewer packages copied, but need to change the logic in the class as you've suggested so that when one generated package is copied for a recipe they all are (with that branch as it stands I get some of the python modules copied, but not all of them, which seems very undesirable). I need to level up in Awk in order to make it cleaner, though.
Robert, it looks like you've taken this one over based on your recently submitted patchset (thanks!) so I'll assign this one to you.
Yes, currently, the rpm part have been sent to oe-core mailing list, I'm working on ipk and deb part. git://git.openembedded.org/openembedded-core-contrib rbt/feed I spent about 1 week on rpm, I guess I need about 20 days for all of them.
Merged into master: http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=51b08835b64421669e018481e344effe4727183b http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=495e2f80a99f73d751349dc140908b4c6078ae96 http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=fef5ae147e883743ee0e3ba2d3e4b547137c8984 http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=ad6aae31065b798b6f6f83eb830cebb075a0b62a http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=9621959a3ad052af33bb8a5ed530f8e84b799f0d http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=cbf7902030ba367baaf0b8551b11c882aaefae3d http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=600f0b3e04fc97640a935edfd14900c06a99d2ab http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=2c2f22a5338ce8b71b6d939ca42d47b314391908