I think we could address this properly by adding a 'package-database' image feature?
Alex On Thu, 20 Jan 2022 at 09:39, Jia, Hongxu <hongxu....@windriver.com> wrote: > On 1/20/22 14:34, Diego Santa Cruz wrote: > > [Please note: This e-mail is from an EXTERNAL e-mail address] > > Hi, > > > > We do exactly that in our images, keep rpm but avoid dnf. We do it by > adding this to the image recipes (via in inc file). > > > > ROOTFS_PKGMANAGE_remove = "dnf" > > ROOTFS_POSTUNINSTALL_COMMAND += "spx_wipe_dnf_data ; " > > > > spx_wipe_dnf_data() { > > bbnote "Removing all dnf runtime data" > > for d in /var/lib/dnf /var/cache/dnf; do > > [ -d ${IMAGE_ROOTFS}$d ] || continue > > dirsize=`du -ks ${IMAGE_ROOTFS}/$d | awk '{ print $1 }'` > > bbnote "Removing $d with $dirsize KiB" > > rm -rf ${IMAGE_ROOTFS}$d/* > > done > > } > > > > > > Yes, it helps, thank you very much > > //Hongxu > > I hope this helps > > > > -- > > *Diego Santa Cruz, PhD *Technology Architect > spinetix.com > <https://urldefense.com/v3/__http://spinetix.com__;!!AjveYdw8EvQ!P_Qo8UNa9oH3Xr8z3HrU_xtzKsKiL3G0BxR5ApZ1zjZT1dhR0-6zDAqCXf8Cxd2SHbwc$> > > > > *From:* openembedded-core@lists.openembedded.org > <openembedded-core@lists.openembedded.org> > <openembedded-core@lists.openembedded.org> *On Behalf Of *hongxu via > lists.openembedded.org > <https://urldefense.com/v3/__http://lists.openembedded.org__;!!AjveYdw8EvQ!P_Qo8UNa9oH3Xr8z3HrU_xtzKsKiL3G0BxR5ApZ1zjZT1dhR0-6zDAqCXf8CxZKo62pc$> > *Sent:* 20 January 2022 03:54 > *To:* Alexander Kanavin <alex.kana...@gmail.com> <alex.kana...@gmail.com> > *Cc:* OE-core <openembedded-core@lists.openembedded.org> > <openembedded-core@lists.openembedded.org>; Yang, Liezhi > <liezhi.y...@windriver.com> <liezhi.y...@windriver.com> > *Subject:* Re: [OE-core] [PATCH] package_manager/rpm: conditional remove > package manager database > > > > I am afraid doing remove operation in ROOTFS_POSTPROCESS_COMMAND could not > satisfy this case > > > > The background is in order to save spaces in embedded device, user do not > install > > package dnf which introduces python3, and use rpm to manage package on > target > > > > In oe-core, the dnf, rpm and pkg database are introduced by > package-management of IMAGE_FEATURES, > > if package-management in IMAGE_FEATURES, we could remove unused pkg data in > > ROOTFS_POSTPROCESS_COMMAND as you suggested, but we could not uninstall > > dnf and all related depend(such as python3) gracefully; > > if package-management not in IMAGE_FEATURES, the pkg data will be removed > > before ROOTFS_POSTPROCESS_COMMAND, that's why this commit are trying to > resolve > > > > The root cause maybe dnf is too heavy for disk sensitive device > > > > //Hongxu > > > ------------------------------ > > *From:* Alexander Kanavin <alex.kana...@gmail.com> > *Sent:* Wednesday, January 19, 2022 6:15 PM > *To:* Jia, Hongxu <hongxu....@windriver.com> > *Cc:* OE-core <openembedded-core@lists.openembedded.org>; Yang, Liezhi < > liezhi.y...@windriver.com> > *Subject:* Re: [OE-core] [PATCH] package_manager/rpm: conditional remove > package manager database > > > > [Please note: This e-mail is from an EXTERNAL e-mail address] > > Apologies, but please no. This adds complexity, isn't possible to disable > and is difficult to understand. You can simply remove the unneeded files > from ROOTFS_POSTPROCESS_COMMAND in your image class. > > > > Alex > > > > On Wed, 19 Jan 2022 at 04:07, hongxu <hongxu....@windriver.com> wrote: > > In order to save spaces in target rootfs, the user wants to remove dnf and > keep rpm, in this situation, we should remove dnf database only > > If rpm was installed, keep rpm database, after applying this commit: > > Edit conf/local.conf > ... > IMAGE_FEATURES:remove = "package-management" > IMAGE_INSTALL:append= " rpm" > ... > > Build image and boot, run rpm -qa on target: > Without this commit > ... > root@intel-x86-64:~# rpm -qa | wc -l > 0 > ... > > Apply this commit > ... > root@intel-x86-64:~# rpm -qa | wc -l > 1865 > ... > > With this commit, the rpm -qa works as expected. > > It does not make sense to keep dnf and remove rpm, so this commit > does not consider the scenario > > Signed-off-by: Hongxu Jia <hongxu....@windriver.com> > --- > meta/lib/oe/package_manager/rpm/__init__.py > <https://urldefense.com/v3/__https://eur02.safelinks.protection.outlook.com/?url=https*3A*2F*2Furldefense.com*2Fv3*2F__http*3A*2F*2F__init__.py__*3B!!AjveYdw8EvQ!JHTMzGi0-aiMoNjIt7Jb186B-p8VNKpv_Yrm-v87Li0GFTZf07eaSBP1gIDKvdp1Putv*24&data=04*7C01*7Cdiego.santacruz*40spinetix.com*7Ccfe2bf45c56e4efe23b608d9dbc02521*7C5f4034faed2d4840a93facb1e9633b93*7C0*7C0*7C637782440578878242*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C3000&sdata=i0*2B51iSlYuayK9kClXpEUxk*2FhpzlSMHHkNLpa7*2BDSWc*3D&reserved=0__;JSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSU!!AjveYdw8EvQ!P_Qo8UNa9oH3Xr8z3HrU_xtzKsKiL3G0BxR5ApZ1zjZT1dhR0-6zDAqCXf8Cxamel_UX$> > | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/meta/lib/oe/package_manager/rpm/__init__.py > <https://urldefense.com/v3/__https://eur02.safelinks.protection.outlook.com/?url=https*3A*2F*2Furldefense.com*2Fv3*2F__http*3A*2F*2F__init__.py__*3B!!AjveYdw8EvQ!JHTMzGi0-aiMoNjIt7Jb186B-p8VNKpv_Yrm-v87Li0GFTZf07eaSBP1gIDKvdp1Putv*24&data=04*7C01*7Cdiego.santacruz*40spinetix.com*7Ccfe2bf45c56e4efe23b608d9dbc02521*7C5f4034faed2d4840a93facb1e9633b93*7C0*7C0*7C637782440578878242*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C3000&sdata=i0*2B51iSlYuayK9kClXpEUxk*2FhpzlSMHHkNLpa7*2BDSWc*3D&reserved=0__;JSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSU!!AjveYdw8EvQ!P_Qo8UNa9oH3Xr8z3HrU_xtzKsKiL3G0BxR5ApZ1zjZT1dhR0-6zDAqCXf8Cxamel_UX$> > b/meta/lib/oe/package_manager/rpm/__init__.py > <https://urldefense.com/v3/__https://eur02.safelinks.protection.outlook.com/?url=https*3A*2F*2Furldefense.com*2Fv3*2F__http*3A*2F*2F__init__.py__*3B!!AjveYdw8EvQ!JHTMzGi0-aiMoNjIt7Jb186B-p8VNKpv_Yrm-v87Li0GFTZf07eaSBP1gIDKvdp1Putv*24&data=04*7C01*7Cdiego.santacruz*40spinetix.com*7Ccfe2bf45c56e4efe23b608d9dbc02521*7C5f4034faed2d4840a93facb1e9633b93*7C0*7C0*7C637782440578878242*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C3000&sdata=i0*2B51iSlYuayK9kClXpEUxk*2FhpzlSMHHkNLpa7*2BDSWc*3D&reserved=0__;JSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSU!!AjveYdw8EvQ!P_Qo8UNa9oH3Xr8z3HrU_xtzKsKiL3G0BxR5ApZ1zjZT1dhR0-6zDAqCXf8Cxamel_UX$> > index b392581069..dce5912329 100644 > --- a/meta/lib/oe/package_manager/rpm/__init__.py > <https://urldefense.com/v3/__https://eur02.safelinks.protection.outlook.com/?url=https*3A*2F*2Furldefense.com*2Fv3*2F__http*3A*2F*2F__init__.py__*3B!!AjveYdw8EvQ!JHTMzGi0-aiMoNjIt7Jb186B-p8VNKpv_Yrm-v87Li0GFTZf07eaSBP1gIDKvdp1Putv*24&data=04*7C01*7Cdiego.santacruz*40spinetix.com*7Ccfe2bf45c56e4efe23b608d9dbc02521*7C5f4034faed2d4840a93facb1e9633b93*7C0*7C0*7C637782440578878242*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C3000&sdata=i0*2B51iSlYuayK9kClXpEUxk*2FhpzlSMHHkNLpa7*2BDSWc*3D&reserved=0__;JSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSU!!AjveYdw8EvQ!P_Qo8UNa9oH3Xr8z3HrU_xtzKsKiL3G0BxR5ApZ1zjZT1dhR0-6zDAqCXf8Cxamel_UX$> > +++ b/meta/lib/oe/package_manager/rpm/__init__.py > <https://urldefense.com/v3/__https://eur02.safelinks.protection.outlook.com/?url=https*3A*2F*2Furldefense.com*2Fv3*2F__http*3A*2F*2F__init__.py__*3B!!AjveYdw8EvQ!JHTMzGi0-aiMoNjIt7Jb186B-p8VNKpv_Yrm-v87Li0GFTZf07eaSBP1gIDKvdp1Putv*24&data=04*7C01*7Cdiego.santacruz*40spinetix.com*7Ccfe2bf45c56e4efe23b608d9dbc02521*7C5f4034faed2d4840a93facb1e9633b93*7C0*7C0*7C637782440578878242*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C3000&sdata=i0*2B51iSlYuayK9kClXpEUxk*2FhpzlSMHHkNLpa7*2BDSWc*3D&reserved=0__;JSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSU!!AjveYdw8EvQ!P_Qo8UNa9oH3Xr8z3HrU_xtzKsKiL3G0BxR5ApZ1zjZT1dhR0-6zDAqCXf8Cxamel_UX$> > @@ -80,7 +80,9 @@ class RpmPM(PackageManager): > self.saved_packaging_data = > self.d.expand('${T}/saved_packaging_data/%s' % self.task_name) > if not os.path.exists(self.d.expand('${T}/saved_packaging_data')): > bb.utils.mkdirhier(self.d.expand('${T}/saved_packaging_data')) > - self.packaging_data_dirs = ['etc/rpm', 'etc/rpmrc', 'etc/dnf', > 'var/lib/rpm', 'var/lib/dnf', 'var/cache/dnf'] > + self.packaging_data_rpm_dirs = ['etc/rpm', 'etc/rpmrc', > 'var/lib/rpm'] > + self.packaging_data_dnf_dirs = ['etc/dnf', 'var/lib/dnf', > 'var/cache/dnf'] > + self.packaging_data_dirs = self.packaging_data_rpm_dirs + > self.packaging_data_dnf_dirs > self.solution_manifest = self.d.expand('${T}/saved/%s_solution' % > self.task_name) > if not os.path.exists(self.d.expand('${T}/saved')): > @@ -237,8 +239,11 @@ class RpmPM(PackageManager): > self._invoke_dnf(["autoremove"]) > > def remove_packaging_data(self): > + remove_packaging_data_dirs = self.packaging_data_dnf_dirs > + if "rpm" not in self.list_installed(): > + remove_packaging_data_dirs += self.packaging_data_rpm_dirs > self._invoke_dnf(["clean", "all"]) > - for dir in self.packaging_data_dirs: > + for dir in remove_packaging_data_dirs: > bb.utils.remove(oe.path.join(self.target_rootfs, dir), True) > > def backup_packaging_data(self): > -- > 2.27.0 > > > > >
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#160755): https://lists.openembedded.org/g/openembedded-core/message/160755 Mute This Topic: https://lists.openembedded.org/mt/88527238/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-