From c67ac999def3400ca776b380f5b8f1503647373b Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 4 Oct 2019 14:57:05 +0200 Subject: [PATCH] [machineid] Implement DBUS and systemd machine-ids - refactor running the command into a helper function, to deal with the regular if-command-failed-then-complain pattern. - mark parameters as unused. - move distinction about kind of DBus file up into the MachineIdJob and remove the enum that marked it. --- src/modules/machineid/MachineIdJob.cpp | 20 ++++++++++++++------ src/modules/machineid/Workers.cpp | 26 +++++++++++++++++++++----- src/modules/machineid/Workers.h | 12 +++++------- 3 files changed, 40 insertions(+), 18 deletions(-) diff --git a/src/modules/machineid/MachineIdJob.cpp b/src/modules/machineid/MachineIdJob.cpp index 9ab0ef162..393950ded 100644 --- a/src/modules/machineid/MachineIdJob.cpp +++ b/src/modules/machineid/MachineIdJob.cpp @@ -104,13 +104,21 @@ MachineIdJob::exec() } if ( m_dbus ) { - auto r = MachineId::createDBusMachineId( m_dbus_symlink ? MachineId::DBusGeneration::SymlinkFromSystemD - : MachineId::DBusGeneration::New, - root, - target_dbus_machineid_file ); - if ( !r ) + if ( m_dbus_symlink && QFile::exists( root + target_systemd_machineid_file ) ) { - return r; + auto r = MachineId::createDBusLink( root, target_dbus_machineid_file, target_systemd_machineid_file ); + if ( !r ) + { + return r; + } + } + else + { + auto r = MachineId::createDBusMachineId( root, target_dbus_machineid_file ); + if ( !r ) + { + return r; + } } } diff --git a/src/modules/machineid/Workers.cpp b/src/modules/machineid/Workers.cpp index 3557c5b84..e7d5eb03f 100644 --- a/src/modules/machineid/Workers.cpp +++ b/src/modules/machineid/Workers.cpp @@ -139,10 +139,9 @@ createEntropy( const EntropyGeneration kind, const QString& rootMountPoint, cons return createNewEntropy( poolSize, rootMountPoint, fileName ); } -Calamares::JobResult -createSystemdMachineId( const QString& rootMountPoint, const QString& fileName ) +static Calamares::JobResult +runCmd( const QStringList& cmd ) { - auto cmd = QStringList { QStringLiteral( "systemd-machine-id-setup" ) }; auto r = CalamaresUtils::System::instance()->targetEnvCommand( cmd ); if ( r.getExitCode() ) { @@ -153,9 +152,26 @@ createSystemdMachineId( const QString& rootMountPoint, const QString& fileName ) } Calamares::JobResult -createDBusMachineId( DBusGeneration kind, const QString& rootMountPoint, const QString& fileName ) +createSystemdMachineId( const QString& rootMountPoint, const QString& fileName ) { - return Calamares::JobResult::internalError( QObject::tr( "Internal Error" ), QObject::tr( "Not implemented" ), 0 ); + Q_UNUSED( rootMountPoint ) + Q_UNUSED( fileName ) + return runCmd( QStringList { QStringLiteral( "systemd-machine-id-setup" ) } ); +} + +Calamares::JobResult +createDBusMachineId( const QString& rootMountPoint, const QString& fileName ) +{ + Q_UNUSED( rootMountPoint ) + Q_UNUSED( fileName ) + return runCmd( QStringList { QStringLiteral( "dbus-uuidgen" ), QStringLiteral( "--ensure" ) } ); +} + +Calamares::JobResult +createDBusLink( const QString& rootMountPoint, const QString& fileName, const QString& systemdFileName ) +{ + Q_UNUSED( rootMountPoint ); + return runCmd( QStringList { QStringLiteral( "ln" ), QStringLiteral( "-s" ), systemdFileName, fileName } ); } } // namespace MachineId diff --git a/src/modules/machineid/Workers.h b/src/modules/machineid/Workers.h index 2247af45a..5cf6270d9 100644 --- a/src/modules/machineid/Workers.h +++ b/src/modules/machineid/Workers.h @@ -67,14 +67,12 @@ createEntropy( const EntropyGeneration kind, const QString& rootMountPoint, cons * Creating UUIDs for DBUS and SystemD. */ -/// @brief How to create the DBus machine-id (bool-like) -enum class DBusGeneration -{ - New, - SymlinkFromSystemD -}; +/// @brief Create a new DBus UUID file +Calamares::JobResult createDBusMachineId( const QString& rootMountPoint, const QString& fileName ); -Calamares::JobResult createDBusMachineId( DBusGeneration kind, const QString& rootMountPoint, const QString& fileName ); +/// @brief Symlink DBus UUID file to the one from systemd (which must exist already) +Calamares::JobResult +createDBusLink( const QString& rootMountPoint, const QString& fileName, const QString& systemdFileName ); Calamares::JobResult createSystemdMachineId( const QString& rootMountPoint, const QString& fileName );