rootfs_ipk.bbclass: Ensure bad recommendations persist in the status file
PATCH 1/1 rootfs_ipk.bbclass: Ensure bad recommendations persist in the status file
Currently bad recommendations are added to the status file with status "ok". After a single opkg command, whilst it will ignore the recommendation, the status changes to "installed" even if the recommended package was not installed. Whilst this is likely a glitch in opkg's logic, the correct way to persist the information in the status file is to set the status to "hold" as deinstall packages with that status remain. With this change the bad recommendations persist accross multiple opkg runs and the system behaves as expected.
[YOCTO #1758]
---
meta/classes/rootfs_ipk.bbclass +1 -1
@@ -44,7 +44,7 @@ fakeroot rootfs_ipk_do_rootfs () { pkginfo="`opkg-cl ${IPKG_ARGS} info $i`" if [ ! -z "$pkginfo" ]; then echo "$pkginfo" | grep -e '^Package:' -e '^Architecture:' -e '^Version:' >> $STATUS - echo "Status: deinstall ok not-installed" >> $STATUS + echo "Status: deinstall hold not-installed" >> $STATUS echo >> $STATUS else echo "Requested ignored recommendation $i is not a package"
Quoted 8 lines · Richard Purdie
Currently bad recommendations are added to the status file with status "ok". After a single opkg command, whilst it will ignore the recommendation, the status changes to "installed" even if the recommended package was not installed. Whilst this is likely a glitch in opkg's logic, the correct way to persist the information in the status file is to set the status to "hold" as deinstall packages with that status remain. With this change the bad recommendations persist accross multiple opkg runs and the system behaves as expected.
I personally dislike fixing it in rootfs_ipk instead of opkg ... opkg has change its behaviour behind the scenes and this needs to be fixed IMO.
Signature · 3 lines
Otavio Salvador O.S. Systems E-mail: [email protected] http://www.ossystems.com.br Mobile: +55 53 9981-7854 http://projetos.ossystems.com.br
Quoted 11 lines · Otavio Salvador
Quoted 8 lines · Richard Purdie
Currently bad recommendations are added to the status file with status "ok". After a single opkg command, whilst it will ignore the recommendation, the status changes to "installed" even if the recommended package was not installed. Whilst this is likely a glitch in opkg's logic, the correct way to persist the information in the status file is to set the status to "hold" as deinstall packages with that status remain. With this change the bad recommendations persist accross multiple opkg runs and the system behaves as expected.
Quoted 3 lines
I personally dislike fixing it in
rootfs_ipkinstead of opkg ... opkg has change its behaviour behind the scenes and this needs to be fixed IMO.
I'm not sure opkg has changed behaviour. We used to just do one single "opkg install" after which the status file was incorrect but the bad recommends was not installed. We started doing more than one "opkg install" and this has muddied the waters so to speak. I'm still unclear if the bad recommends actually make it onto the target system but certainly the status file was incorrect.
The summary is we were not using opkg correctly in the first place. This patch corrects that problem so we do what we what that code intended to do and persists the bad recommend into the status file. This fixes the bug that was reported too.
There look to be remaining issues in opkg but not ones that directly affect the build system. Please do take this up with the opkg people but I'm afraid I personally don't have time to start debugging opkg and I think there are other more urgent priorities at the moment now this is a non-issue for the builds.
Cheers,
Richard
Quoted 16 lines · Richard Purdie
Quoted 11 lines · Otavio Salvador
Quoted 8 lines · Richard Purdie
Currently bad recommendations are added to the status file with status "ok". After a single opkg command, whilst it will ignore the recommendation, the status changes to "installed" even if the recommended package was not installed. Whilst this is likely a glitch in opkg's logic, the correct way to persist the information in the status file is to set the status to "hold" as deinstall packages with that status remain. With this change the bad recommendations persist accross multiple opkg runs and the system behaves as expected.
Quoted 3 lines
I personally dislike fixing it in
rootfs_ipkinstead of opkg ... opkg has change its behaviour behind the scenes and this needs to be fixed IMO.
Quoted 6 lines
I'm not sure opkg has changed behaviour. We used to just do one single "opkg install" after which the status file was incorrect but the bad recommends was not installed. We started doing more than one "opkg install" and this has muddied the waters so to speak. I'm still unclear if the bad recommends actually make it onto the target system but certainly the status file was incorrect.
It does end onto the target.
Quoted 10 lines
The summary is we were not using opkg correctly in the first place. This patch corrects that problem so we do what we what that code intended to do and persists the bad recommend into the status file. This fixes the bug that was reported too.
There look to be remaining issues in opkg but not ones that directly affect the build system. Please do take this up with the opkg people but I'm afraid I personally don't have time to start debugging opkg and I think there are other more urgent priorities at the moment now this is a non-issue for the builds.
This does fix the problem we were having but I am concerned about other possible behaviour changes it might happen.
I think this patch ought to go but someone skilled on opkg might take a look at opkg code to see if this isn't a regression of lately changes.
Signature · 3 lines
Otavio Salvador O.S. Systems E-mail: [email protected] http://www.ossystems.com.br Mobile: +55 53 9981-7854 http://projetos.ossystems.com.br
Hello Richard,
sorry for digging out such an old message, but please see below.
Quoted 18 lines · Richard Purdie
Currently bad recommendations are added to the status file with status "ok". After a single opkg command, whilst it will ignore the recommendation, the status changes to "installed" even if the recommended package was not installed. Whilst this is likely a glitch in opkg's logic, the correct way to persist the information in the status file is to set the status to "hold" as deinstall packages with that status remain. With this change the bad recommendations persist accross multiple opkg runs and the system behaves as expected.
[YOCTO #1758]
Signed-off-by Richard Purdie <[email protected]>---
meta/classes/rootfs_ipk.bbclass +0
-0
meta/classes/rootfs_ipk.bbclass fakeroot rootfs_ipk_do_rootfs () { · line 47
Quoted 5 lines
meta/classes/rootfs_ipk.bbclass +1
-1@@ -44,7 +44,7 @@ fakeroot rootfs_ipk_do_rootfs () { pkginfo="`opkg-cl ${IPKG_ARGS} info $i`" if [ ! -z "$pkginfo" ]; then echo "$pkginfo" | grep -e '^Package:' -e '^Architecture:' -e '^Version:' >> $STATUS - echo "Status: deinstall ok not-installed" >> $STATUS + echo "Status: deinstall hold not-installed" >> $STATUS
I just implemented bad recommendations for deb (in dora) and by looking at dpkg's source code I realized that "hold" is only a valid value for the first field. Maybe you meant to write "Status: hold ok not-installed" instead? Valid values for the second field are ok and reinstreq.
The code above doesn't exist in master anymore, but the status line hasn't changed in the newer version implemented in python.
Regards,
Andreas
Quoted 35 lines · Andreas Oberritter
Hello Richard,
sorry for digging out such an old message, but please see below.
Quoted 18 lines · Richard Purdie
Currently bad recommendations are added to the status file with status "ok". After a single opkg command, whilst it will ignore the recommendation, the status changes to "installed" even if the recommended package was not installed. Whilst this is likely a glitch in opkg's logic, the correct way to persist the information in the status file is to set the status to "hold" as deinstall packages with that status remain. With this change the bad recommendations persist accross multiple opkg runs and the system behaves as expected.
[YOCTO #1758]
Signed-off-by Richard Purdie <[email protected]>---
meta/classes/rootfs_ipk.bbclass +0
-0meta/classes/rootfs_ipk.bbclass fakeroot rootfs_ipk_do_rootfs () { · line 47
Quoted 5 lines
meta/classes/rootfs_ipk.bbclass +1
-1@@ -44,7 +44,7 @@ fakeroot rootfs_ipk_do_rootfs () { pkginfo="`opkg-cl ${IPKG_ARGS} info $i`" if [ ! -z "$pkginfo" ]; then echo "$pkginfo" | grep -e '^Package:' -e '^Architecture:' -e '^Version:' >> $STATUS - echo "Status: deinstall ok not-installed" >> $STATUS + echo "Status: deinstall hold not-installed" >> $STATUSI just implemented bad recommendations for deb (in dora) and by looking at dpkg's source code I realized that "hold" is only a valid value for the first field. Maybe you meant to write "Status: hold ok not-installed" instead? Valid values for the second field are ok and reinstreq.
Quoted 2 lines
The code above doesn't exist in master anymore, but the status line hasn't changed in the newer version implemented in python.
I'm not sure what opkg accepts or what is correct. Paul, cc'd may have a better idea though. What we have seems to work, that doesn't necessarily mean its correct though...
Cheers,
Richard