diff --git a/src/modules/packages/main.py b/src/modules/packages/main.py index 2413990b4..d132c8ce9 100644 --- a/src/modules/packages/main.py +++ b/src/modules/packages/main.py @@ -76,8 +76,9 @@ def run(): for entry in operations: run_operations(pkgman, entry) - operations = libcalamares.globalstorage.value("packageOperations") - for entry in operations: - run_operations(pkgman, entry) + if libcalamares.globalstorage.contains("pagkageOperations"): + operations = libcalamares.globalstorage.value("packageOperations") + for entry in operations: + run_operations(pkgman, entry) return None diff --git a/src/modules/users/CMakeLists.txt b/src/modules/users/CMakeLists.txt index 4d4ef208f..fc1f26d0f 100644 --- a/src/modules/users/CMakeLists.txt +++ b/src/modules/users/CMakeLists.txt @@ -11,6 +11,7 @@ calamares_add_plugin( users SetPasswordJob.cpp UsersViewStep.cpp UsersPage.cpp + SetHostNameJob.cpp UI page_usersetup.ui RESOURCES diff --git a/src/modules/users/SetHostNameJob.cpp b/src/modules/users/SetHostNameJob.cpp new file mode 100644 index 000000000..5b04de1ac --- /dev/null +++ b/src/modules/users/SetHostNameJob.cpp @@ -0,0 +1,68 @@ +/* + * Copyright (C) 2014 Rohan Garg + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "SetHostNameJob.h" + +#include "GlobalStorage.h" +#include "utils/Logger.h" +#include "JobQueue.h" + +#include +#include + +SetHostNameJob::SetHostNameJob( const QString& hostname ) + : Calamares::Job() + , m_hostname( hostname ) +{ +} + +QString SetHostNameJob::prettyName() const +{ + return tr( "Set hostname %1" ).arg( m_hostname ); +} + +Calamares::JobResult SetHostNameJob::exec() +{ + Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage(); + + if ( !gs || !gs->contains( "rootMountPoint" ) ) + { + cLog() << "No rootMountPoint in global storage"; + return Calamares::JobResult::error( tr( "Internal Error" ) ); + } + + QString destDir = gs->value( "rootMountPoint" ).toString(); + if ( !QDir( destDir ).exists() ) + { + cLog() << "rootMountPoint points to a dir which does not exist"; + return Calamares::JobResult::error( tr( "Internal Error" ) ); + } + + QFile hostfile( destDir + "/etc/hostname" ); + if ( !hostfile.open( QFile::WriteOnly ) ) + { + cLog() << "Can't write to hostname file"; + return Calamares::JobResult::error( tr( "Cannot write hostname to target system" ) ); + } + + QTextStream out( &hostfile ); + out << m_hostname << "\n"; + hostfile.close(); + + return Calamares::JobResult::ok(); +} diff --git a/src/modules/users/SetHostNameJob.h b/src/modules/users/SetHostNameJob.h new file mode 100644 index 000000000..2f32063ff --- /dev/null +++ b/src/modules/users/SetHostNameJob.h @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2014 Rohan Garg + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#ifndef SETHOSTNAMEJOB_CPP_H +#define SETHOSTNAMEJOB_CPP_H + +#include + +class SetHostNameJob : public Calamares::Job +{ + Q_OBJECT +public: + SetHostNameJob( const QString& hostname ); + QString prettyName() const override; + Calamares::JobResult exec() override; +private: + const QString m_hostname; +}; + + +#endif // SETHOSTNAMEJOB_CPP_H diff --git a/src/modules/users/UsersPage.cpp b/src/modules/users/UsersPage.cpp index 3b44814fd..db4c577cf 100644 --- a/src/modules/users/UsersPage.cpp +++ b/src/modules/users/UsersPage.cpp @@ -24,6 +24,7 @@ #include "ui_page_usersetup.h" #include "CreateUserJob.h" #include "SetPasswordJob.h" +#include "SetHostNameJob.h" #include "JobQueue.h" #include "GlobalStorage.h" #include "utils/Logger.h" @@ -109,6 +110,9 @@ UsersPage::createJobs( const QString& defaultUserGroup, const QStringList& defau ui->textBoxRootPassword->text() ); list.append( Calamares::job_ptr( j ) ); + j = new SetHostNameJob( ui->textBoxHostname->text() ); + list.append( Calamares::job_ptr( j ) ); + Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage(); gs->insert( "hostname", ui->textBoxHostname->text() ); if ( ui->checkBoxLoginAuto->isChecked() ) @@ -270,11 +274,11 @@ UsersPage::validateHostnameText( const QString& textRef ) if ( pos >= 0 && pos < text.size() ) ui->labelHostnameError->setText( - tr( "Your username contains an invalid character '%1'" ) + tr( "Your hostname contains an invalid character '%1'" ) .arg( text.at( pos ) ) ); else ui->labelHostnameError->setText( - tr( "Your username contains invalid characters!" ) ); + tr( "Your hostname contains invalid characters!" ) ); m_readyHostname = false; }