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

Richard W.M. Jones rjones at redhat.com
Wed Aug 26 19:15:36 UTC 2020


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

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-top is 'top' for virtual machines.  Tiny program with many
powerful monitoring features, net stats, disk stats, logging, etc.
http://people.redhat.com/~rjones/virt-top




More information about the Libguestfs mailing list