[Libguestfs] [supermin PATCH] rpm: check for SQLite-based RPM DB

Richard W.M. Jones rjones at redhat.com
Thu Aug 27 07:46:11 UTC 2020


On Thu, Aug 27, 2020 at 06:50:50AM +0200, Pino Toscano wrote:
> On Wednesday, 26 August 2020 21:15:36 CEST Richard W.M. Jones wrote:
> > On Wed, Aug 26, 2020 at 06:57:43PM +0200, Pino Toscano wrote:
> > > Fedora 33 switched the DB of RPM to SQLite, so no more Packages/Name/etc
> > > files. Because any missing file exception is ignored when checking for
> > > --if-newer, the lack of the Package files was not properly noticed, so
> > > the appliance was always considered out out date.
> > > 
> > > Check for the SQLite-based DB first, falling back to the old format.
> > > 
> > > Signed-off-by: Pino Toscano <ptoscano at redhat.com>
> > > ---
> > >  src/ph_rpm.ml | 5 ++++-
> > >  1 file changed, 4 insertions(+), 1 deletion(-)
> > > 
> > > diff --git a/src/ph_rpm.ml b/src/ph_rpm.ml
> > > index dbe3bda..0821126 100644
> > > --- a/src/ph_rpm.ml
> > > +++ b/src/ph_rpm.ml
> > > @@ -234,7 +234,10 @@ let rpm_package_name pkg =
> > >    rpm.name
> > >  
> > >  let rpm_get_package_database_mtime () =
> > > -  (lstat "/var/lib/rpm/Packages").st_mtime
> > > +  try
> > > +    (lstat "/var/lib/rpm/rpmdb.sqlite").st_mtime
> > > +  with Unix_error (ENOENT, _, _) ->
> > > +    (lstat "/var/lib/rpm/Packages").st_mtime
> > >  
> > >  (* Return the best provider of a particular RPM requirement.
> > 
> > Yes this looks fine, ACK.  If you really wanted you could factor out
> > the (...).st_mtime, something like:
> > 
> >   (try
> >     lstat "/var/lib/rpm/rpmdb.sqlite"
> >    with Unix_error (ENOENT, _, _) ->
> >     lstat "/var/lib/rpm/Packages"
> >    ).st_mtime
> 
> ACK. Sadly List.find_map is OCaml 4.10.0+ only.
> 
> Should I backport it to stable-5.2?

Yes please.

Rich.



> _______________________________________________
> Libguestfs mailing list
> Libguestfs at redhat.com
> https://www.redhat.com/mailman/listinfo/libguestfs


-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-p2v converts physical machines to virtual machines.  Boot with a
live CD or over the network (PXE) and turn machines into KVM guests.
http://libguestfs.org/virt-v2v




More information about the Libguestfs mailing list