Skip to content
  • Simon McVittie's avatar
    Make _dbus_get_local_machine_uuid_encoded() properly failable · 6f751caf
    Simon McVittie authored
    
    
    This function already raised an error, and all callers handled that
    error as gracefully as they could (because _dbus_generate_uuid() is
    failable, since 2015). Given that, it seems unnecessarily hostile
    to do a _dbus_warn_check_failed() unless we have no better alternative:
    yes, it indicates that dbus has not been installed correctly, but
    during build-time tests it's entirely reasonable that dbus has not
    yet been installed.
    
    Callers are:
    
    * DBusConnection, to implement Peer.GetMachineId()
    * The bus driver, to implement Peer.GetMachineId()
    * X11 autolaunching
    * dbus_get_local_machine_id()
    
    Of those, only the last one is not in a position to return an error
    gracefully, so move the _dbus_warn_check_failed() to there.
    
    Migrate the text about the D-Bus library being incorrectly set up
    into the error emitted by the Unix implementation, and to make it
    less misleading, include separate error messages for both the
    files we try to read:
    
    $ bwrap --ro-bind / / --dev /dev --tmpfs /etc --tmpfs /var \
      ./tools/dbus-uuidgen --get
    D-Bus library appears to be incorrectly set up: see the manual
    page for dbus-uuidgen to correct this issue. (Failed to open
    "/var/lib/dbus/machine-id": No such file or directory; Failed to open
    "/etc/machine-id": No such file or directory)
    
    Signed-off-by: default avatarSimon McVittie <smcv@collabora.com>
    Reviewed-by: default avatarPhilip Withnall <withnall@endlessm.com>
    Bug: https://bugs.freedesktop.org/show_bug.cgi?id=13194
    6f751caf