diff options
author | bill-auger <mr.j.spam.me@gmail.com> | 2017-11-01 04:01:03 -0400 |
---|---|---|
committer | bill-auger <mr.j.spam.me@gmail.com> | 2017-11-01 06:38:37 -0400 |
commit | 28b713e0364ebb6f7ae850f348b544a16f9e2d2a (patch) | |
tree | 360b5cbb28ba357f68b65ee4613cbc6e660524a4 | |
parent | f5d3cbce4d329352a8e861d3a7ad5798a6a646ba (diff) |
bugfixv3.1.0-parabola-alpha10
-rw-r--r-- | src/libcalamares/JobQueue.cpp | 8 | ||||
-rw-r--r-- | src/libcalamares/PacstrapCppJob.cpp | 140 | ||||
-rw-r--r-- | src/libcalamares/PacstrapCppJob.h | 25 | ||||
-rw-r--r-- | src/modules/users/CreateUserJob.cpp | 32 | ||||
-rw-r--r-- | src/modules/welcome/checker/RequirementsChecker.cpp | 7 |
5 files changed, 107 insertions, 105 deletions
diff --git a/src/libcalamares/JobQueue.cpp b/src/libcalamares/JobQueue.cpp index 35d5f8b89..0ef5eb6e2 100644 --- a/src/libcalamares/JobQueue.cpp +++ b/src/libcalamares/JobQueue.cpp @@ -111,10 +111,10 @@ private: if (m_jobIndex < jobCount) { - cLog() << "Progress for Job[" << m_jobIndex << "]: " << ( jobPercent * 100 ) << "% completed"; - cLog() << "Progress Overall: " << ( cumulativeProgress * 100 ) << "% (accumulated) + " - << ( ( ( m_jobWeights.at( m_jobIndex ) ) * jobPercent ) * 100 ) << "% (this job) = " - << ( percent * 100 ) << "% (total)"; + cDebug(LOGINFO) << "[JOBQUEUE]: Progress for Job[" << m_jobIndex << "]: " << ( jobPercent * 100 ) << "% completed"; + cDebug(LOGINFO) << "[JOBQUEUE]: Progress Overall: " << ( cumulativeProgress * 100 ) << "% (accumulated) + " + << ( ( ( m_jobWeights.at( m_jobIndex ) ) * jobPercent ) * 100 ) << "% (this job) = " + << ( percent * 100 ) << "% (total)"; } QMetaObject::invokeMethod( m_queue, "progress", Qt::QueuedConnection, Q_ARG( qreal, percent ), diff --git a/src/libcalamares/PacstrapCppJob.cpp b/src/libcalamares/PacstrapCppJob.cpp index 01d1db350..91c1f142d 100644 --- a/src/libcalamares/PacstrapCppJob.cpp +++ b/src/libcalamares/PacstrapCppJob.cpp @@ -25,6 +25,64 @@ #include "utils/Logger.h" +/* PacstrapCppJob public class constants */ + +const QString PacstrapCppJob::BASE_PACKAGES_KEY = "base" ; +const QString PacstrapCppJob::BOOTLODER_PACKAGES_KEY = "bootloader" ; +const QString PacstrapCppJob::KERNEL_PACKAGES_KEY = "kernel" ; +const QString PacstrapCppJob::APPLICATIONS_PACKAGES_KEY = "applications" ; +const QString PacstrapCppJob::MULTIMEDIA_PACKAGES_KEY = "multimedia" ; +const QString PacstrapCppJob::NETWORK_PACKAGES_KEY = "network" ; +const QString PacstrapCppJob::THEMES_PACKAGES_KEY = "themes" ; +const QString PacstrapCppJob::UTILITIES_PACKAGES_KEY = "utilities" ; +const QString PacstrapCppJob::XSERVER_PACKAGES_KEY = "x-server" ; +const QString PacstrapCppJob::MATE_PACKAGES_KEY = "mate" ; +const QString PacstrapCppJob::LXDE_PACKAGES_KEY = "lxde" ; + + +/* PacstrapCppJob protected class constants */ + +const QString PacstrapCppJob::MOUNTPOINT = "/tmp/pacstrap" ; +const char* PacstrapCppJob::BASE_JOB_NAME = "Pacstrap Base C++ Job" ; +const char* PacstrapCppJob::GUI_JOB_NAME = "Pacstrap Desktop C++ Job" ; +const char* PacstrapCppJob::BASE_STATUS_MSG = "Installing root filesystem" ; +const char* PacstrapCppJob::GUI_STATUS_MSG = "Installing graphical desktop environment" ; +const qreal PacstrapCppJob::BASE_JOB_WEIGHT = 20.0 ; // progress-bar job weight (1.0 normal) +const qreal PacstrapCppJob::GUI_JOB_WEIGHT = 57.0 ; // progress-bar job weight (1.0 normal) +const qreal PacstrapCppJob::PACMAN_SYNC_PROPORTION = 0.05 ; // per task progress-bar proportion +const qreal PacstrapCppJob::LIST_PACKAGES_PROPORTION = 0.05 ; // per task progress-bar proportion +const qreal PacstrapCppJob::CHROOT_TASK_PROPORTION = 0.9 ; // per task progress-bar proportion +const QString PacstrapCppJob::PACSTRAP_FMT = "pacstrap -C %1 %2 %3" ; +const QString PacstrapCppJob::PACSTRAP_ERROR_MSG = "Failed to install packages in chroot." ; + + +/* PacstrapCppJob private class constants */ + +const QDir PacstrapCppJob::PACKAGES_CACHE_DIR = QDir(MOUNTPOINT + "/var/cache/pacman/pkg") ; +const QDir PacstrapCppJob::PACKAGES_METADATA_DIR = QDir(MOUNTPOINT + "/var/lib/pacman/local") ; +const QString PacstrapCppJob::DEFAULT_CONF_FILENAME = "/etc/pacman.conf" ; +const QString PacstrapCppJob::ONLINE_CONF_FILENAME = "/etc/pacman-online.conf" ; +const QString PacstrapCppJob::OFFLINE_CONF_FILENAME = "/etc/pacman-offline.conf" ; +const QString PacstrapCppJob::SYSTEM_EXEC_FMT = "/bin/sh -c \"%1\"" ; +// const QString PacstrapCppJob::KEYRING_CMD = "pacman -Sy --noconfirm parabola-keyring" ; +// const QString PacstrapCppJob::KEYRING_CMD = "pacman -Sy --noconfirm parabola-keyring && \ +// pacman-key --populate parabola && \ +// pacman-key --refresh-keys " ; +const QString PacstrapCppJob::MOUNT_FMT = "mkdir %2 2> /dev/null || true && mount %1 %2" ; +const QString PacstrapCppJob::CHROOT_PREP_FMT = "mkdir -m 0755 -p {%1,%2}" ; +const QString PacstrapCppJob::PACKAGES_SYNC_FMT = "pacman --print --config %1 --root %2 -Sy" ; +const QString PacstrapCppJob::LIST_PACKAGES_FMT = "pacman --print --config %1 --root %2 -S %3" ; +const QString PacstrapCppJob::UMOUNT_FMT = "umount %1" ; +const QString PacstrapCppJob::CONFIG_ERROR_MSG = "Invalid configuration map." ; +const QString PacstrapCppJob::TARGET_ERROR_MSG = "Target device for root filesystem is unspecified." ; +const QString PacstrapCppJob::CONFFILE_ERROR_MSG = "Pacman configuration not found: '%1'." ; +// const QString PacstrapCppJob::KEYRING_ERROR_MSG = "Failed to update the pacman keyring." ; +const QString PacstrapCppJob::MOUNT_ERROR_MSG = "Failed to mount the pacstrap chroot." ; +const QString PacstrapCppJob::CHROOT_PREP_ERROR_MSG = "Failed to prepare the pacstrap chroot." ; +const QString PacstrapCppJob::PACMAN_SYNC_ERROR_MSG = "Failed to syncronize packages in the pacstrap chroot." ; +const QString PacstrapCppJob::UMOUNT_ERROR_MSG = "Failed to unmount the pacstrap chroot." ; + + /* PacstrapCppJob public constructors/destructors */ PacstrapCppJob::PacstrapCppJob(QString job_name , QString status_msg , @@ -60,13 +118,15 @@ QString PacstrapCppJob::prettyStatusMessage() const { return thi Calamares::JobResult PacstrapCppJob::exec() { - QVariantList partitions = this->globalStorage->value(GS::PARTITIONS_KEY ).toList() ; - bool has_isorepo = this->globalStorage->value(GS::HAS_ISOREPO_KEY).toBool() ; - bool has_internet = this->globalStorage->value(GS::IS_ONLINE_KEY ).toBool() ; - this->targetDevice = FindTargetDevice(partitions) ; - this->confFile = (!has_isorepo) ? DEFAULT_CONF_FILENAME : - (has_internet) ? ONLINE_CONF_FILENAME : OFFLINE_CONF_FILENAME ; - this->packages = getPackageList() ; + QVariantList partitions = this->globalStorage->value(GS::PARTITIONS_KEY ).toList() ; + bool has_isorepo = this->globalStorage->value(GS::HAS_ISOREPO_KEY).toBool() ; + bool is_online = this->globalStorage->value(GS::IS_ONLINE_KEY ).toBool() ; + this->targetDevice = FindTargetDevice(partitions) ; + this->confFile = (!has_isorepo) ? DEFAULT_CONF_FILENAME : + (is_online ) ? ONLINE_CONF_FILENAME : OFFLINE_CONF_FILENAME ; + this->packages = getPackageList() ; + +DEBUG_TRACE_EXEC if (this->localStorage.empty() ) return JobError(CONFIG_ERROR_MSG) ; if (this->targetDevice.isEmpty() ) return JobError(TARGET_ERROR_MSG) ; @@ -89,8 +149,6 @@ Calamares::JobResult PacstrapCppJob::exec() { QString new_packages = execOutput(list_packages_cmd , LIST_PACKAGES_PROPORTION) ; this->nPreviousPackages = NPackagesInstalled() ; -// this->nPendingPackages = (has_isorepo) ? new_packages.count(QChar::LineFeed) : -// new_packages.count(QChar::LineFeed) * 2 ; this->nPendingPackages = new_packages.count(QChar::LineFeed) ; if (this->nPendingPackages > 0) @@ -183,10 +241,10 @@ DEBUG_TRACE_FINDTARGETDEVICE qint16 PacstrapCppJob::NPackagesInstalled() { - int n_packages_downloaded = PACKAGES_CACHE_DIR .entryList(QDir::Files).count() - 2 ; - int n_packages_installed = PACKAGES_METADATA_DIR.entryList(QDir::Dirs ).count() - 2 ; + int n_downloaded = PACKAGES_CACHE_DIR .entryList(QDir::Files | QDir::NoDotAndDotDot).count() ; + int n_installed = PACKAGES_METADATA_DIR.entryList(QDir::Dirs | QDir::NoDotAndDotDot).count() ; - return (n_packages_downloaded + n_packages_installed) / 2 ; + return (n_downloaded + n_installed) / 2 ; } Calamares::JobResult PacstrapCppJob::JobError(QString error_msg) @@ -224,61 +282,3 @@ DEBUG_TRACE_GETTASKCOMPLETION return completion_percent ; } - - -/* PacstrapCppJob public class constants */ - -const QString PacstrapCppJob::BASE_PACKAGES_KEY = "base" ; -const QString PacstrapCppJob::BOOTLODER_PACKAGES_KEY = "bootloader" ; -const QString PacstrapCppJob::KERNEL_PACKAGES_KEY = "kernel" ; -const QString PacstrapCppJob::APPLICATIONS_PACKAGES_KEY = "applications" ; -const QString PacstrapCppJob::MULTIMEDIA_PACKAGES_KEY = "multimedia" ; -const QString PacstrapCppJob::NETWORK_PACKAGES_KEY = "network" ; -const QString PacstrapCppJob::THEMES_PACKAGES_KEY = "themes" ; -const QString PacstrapCppJob::UTILITIES_PACKAGES_KEY = "utilities" ; -const QString PacstrapCppJob::XSERVER_PACKAGES_KEY = "x-server" ; -const QString PacstrapCppJob::MATE_PACKAGES_KEY = "mate" ; -const QString PacstrapCppJob::LXDE_PACKAGES_KEY = "lxde" ; - - -/* PacstrapCppJob protected class constants */ - -const QString PacstrapCppJob::MOUNTPOINT = "/tmp/pacstrap" ; -const char* PacstrapCppJob::BASE_JOB_NAME = "Pacstrap Base C++ Job" ; -const char* PacstrapCppJob::GUI_JOB_NAME = "Pacstrap Desktop C++ Job" ; -const char* PacstrapCppJob::BASE_STATUS_MSG = "Installing root filesystem" ; -const char* PacstrapCppJob::GUI_STATUS_MSG = "Installing graphical desktop environment" ; -const qreal PacstrapCppJob::BASE_JOB_WEIGHT = 20.0 ; // progress-bar job weight (1.0 normal) -const qreal PacstrapCppJob::GUI_JOB_WEIGHT = 57.0 ; // progress-bar job weight (1.0 normal) -const qreal PacstrapCppJob::PACMAN_SYNC_PROPORTION = 0.05 ; // per task progress-bar proportion -const qreal PacstrapCppJob::LIST_PACKAGES_PROPORTION = 0.05 ; // per task progress-bar proportion -const qreal PacstrapCppJob::CHROOT_TASK_PROPORTION = 0.9 ; // per task progress-bar proportion -const QString PacstrapCppJob::PACSTRAP_FMT = "pacstrap -C %1 %2 %3" ; -const QString PacstrapCppJob::PACSTRAP_ERROR_MSG = "Failed to install packages in chroot." ; - - -/* PacstrapCppJob private class constants */ - -const QDir PacstrapCppJob::PACKAGES_CACHE_DIR = QDir(MOUNTPOINT + "/var/cache/pacman/pkg") ; -const QDir PacstrapCppJob::PACKAGES_METADATA_DIR = QDir(MOUNTPOINT + "/var/lib/pacman/local") ; -const QString PacstrapCppJob::DEFAULT_CONF_FILENAME = "/etc/pacman.conf" ; -const QString PacstrapCppJob::ONLINE_CONF_FILENAME = "/etc/pacman-online.conf" ; -const QString PacstrapCppJob::OFFLINE_CONF_FILENAME = "/etc/pacman-offline.conf" ; -const QString PacstrapCppJob::SYSTEM_EXEC_FMT = "/bin/sh -c \"%1\"" ; -// const QString PacstrapCppJob::KEYRING_CMD = "pacman -Sy --noconfirm parabola-keyring" ; -// const QString PacstrapCppJob::KEYRING_CMD = "pacman -Sy --noconfirm parabola-keyring && \ -// pacman-key --populate parabola && \ -// pacman-key --refresh-keys " ; -const QString PacstrapCppJob::MOUNT_FMT = "mkdir %2 2> /dev/null || true && mount %1 %2" ; -const QString PacstrapCppJob::CHROOT_PREP_FMT = "mkdir -m 0755 -p {%1,%2}" ; -const QString PacstrapCppJob::PACKAGES_SYNC_FMT = "pacman --print --config %1 --root %2 -Sy" ; -const QString PacstrapCppJob::LIST_PACKAGES_FMT = "pacman --print --config %1 --root %2 -S %3" ; -const QString PacstrapCppJob::UMOUNT_FMT = "umount %1" ; -const QString PacstrapCppJob::CONFIG_ERROR_MSG = "Invalid configuration map." ; -const QString PacstrapCppJob::TARGET_ERROR_MSG = "Target device for root filesystem is unspecified." ; -const QString PacstrapCppJob::CONFFILE_ERROR_MSG = "Pacman configuration not found: '%1'." ; -// const QString PacstrapCppJob::KEYRING_ERROR_MSG = "Failed to update the pacman keyring." ; -const QString PacstrapCppJob::MOUNT_ERROR_MSG = "Failed to mount the pacstrap chroot." ; -const QString PacstrapCppJob::CHROOT_PREP_ERROR_MSG = "Failed to prepare the pacstrap chroot." ; -const QString PacstrapCppJob::PACMAN_SYNC_ERROR_MSG = "Failed to syncronize packages in the pacstrap chroot." ; -const QString PacstrapCppJob::UMOUNT_ERROR_MSG = "Failed to unmount the pacstrap chroot." ; diff --git a/src/libcalamares/PacstrapCppJob.h b/src/libcalamares/PacstrapCppJob.h index 4a05a32e8..6efc2f71f 100644 --- a/src/libcalamares/PacstrapCppJob.h +++ b/src/libcalamares/PacstrapCppJob.h @@ -140,13 +140,21 @@ private: } ; -/* debug */ - - -#define DEBUG_TRACE_EXECWITHPROGRESS \ - cDebug(LOGVERBOSE) << "[PACSTRAP]: status=" , status ; \ - cDebug(LOGVERBOSE) << "[PACSTRAP]: stdout=" , stdout ; \ - cDebug(LOGVERBOSE) << "[PACSTRAP]: stderr=" , stderr ; +/* DEBUG */ + +#define DEBUG_TRACE_EXEC cDebug() << "[PACSTRAP]: exec()" \ + << " job_name=" << this->jobName \ + << " has_isorepo=" << has_isorepo \ + << " is_online=" << is_online \ + << " targetDevice=" << this->targetDevice \ + << " confFile=" << this->confFile \ + << " n_packages=" << this->packages.count() ; + +#define DEBUG_TRACE_EXECWITHPROGRESS \ + cDebug() << "[PACSTRAP]: shell command exited=" << command_line ; \ + cDebug() << "[PACSTRAP]: status=" << status ; \ + cDebug(LOGVERBOSE) << "[PACSTRAP]: stdout=" << stdout ; \ + cDebug(LOGVERBOSE) << "[PACSTRAP]: stderr=" << stderr ; #define DEBUG_TRACE_FINDTARGETDEVICE if (!target_device.isEmpty()) \ cDebug() << "[PACSTRAP]: mounting target_device: " << target_device ; @@ -159,7 +167,8 @@ private: #define DEBUG_TRACE_GETTASKCOMPLETION cDebug() << "[PACSTRAP]: " << \ "this->nPreviousPackages=" << this->nPreviousPackages << \ " NPackagesInstalled()=" << NPackagesInstalled() << \ - "\nn_new_packages=" << (int)n_new_packages << \ + "\n " << \ + "n_new_packages=" << (int)n_new_packages << \ " this->nPendingPackages=" << this->nPendingPackages << \ " completion_percent=" << completion_percent ; diff --git a/src/modules/users/CreateUserJob.cpp b/src/modules/users/CreateUserJob.cpp index 7a07bfb5c..9a79623c7 100644 --- a/src/modules/users/CreateUserJob.cpp +++ b/src/modules/users/CreateUserJob.cpp @@ -82,25 +82,23 @@ CreateUserJob::exec() else sudoersFilename += QStringLiteral( "10-parabola-installer" ); */ - QMap<QString, QVariant> brandingMap = gs->value( "branding" ).toMap(); - QString distroName = brandingMap.value( "shortProductName" ).toString(); - distroName = distroName.toLower().replace( QRegExp( "[^a-z0-9]" ), "-" ); - QString sudoersFilename = QString( "etc/sudoers.d/10-%1-installer" ).arg( distroName ); - QFileInfo sudoersFi( destDir.absoluteFilePath( sudoersFilename ) ); + QMap<QString, QVariant> brandingMap = gs->value( "branding" ).toMap(); + QString distroName = brandingMap.value( "shortProductName" ).toString(); + distroName = distroName.toLower().replace( QRegExp( "[^a-z0-9]" ), "-" ); + QString sudoersFilename = QString( "etc/sudoers.d/10-%1-installer" ).arg( distroName ); + QFileInfo sudoersFi( destDir.absoluteFilePath( sudoersFilename ) ); - cDebug() << QString("[CREATEUSER]: preparing sudoers") ; + cDebug() << QString("[CREATEUSER]: preparing sudoers") ; -cDebug() << QString("[CREATEUSER]: CreateUserJob::exec() distroName=%1").arg(distroName); -cDebug() << QString("[CREATEUSER]: CreateUserJob::exec() sudoersFilename=%1").arg(sudoersFilename); -cDebug() << QString("[CREATEUSER]: CreateUserJob::exec() sudoersFi=%1").arg(sudoersFi.filePath()); -cDebug() << QString("[CREATEUSER]: CreateUserJob::exec() isAbsolute=%2").arg(sudoersFi.isAbsolute()); -cDebug() << QString("[CREATEUSER]: CreateUserJob::exec() isWritable=%3").arg(sudoersFi.isWritable()); QString etcdir = gs->value( "rootMountPoint" ).toString() + "/etc" ; -cDebug() << QString("[CREATEUSER]: CreateUserJob::exec() ls -l %1").arg(etcdir) ; - QProcess::execute( QString( "/bin/sh -c \"ls -l %1\"" ).arg( etcdir ) ); -cDebug() << QString("[CREATEUSER]: CreateUserJob::exec() ls -l %1").arg(sudoersFi.filePath()) ; - QProcess::execute( QString( "/bin/sh -c \"ls -l %1\"" ).arg( sudoersFi.filePath() ) ); - +cDebug() << QString("[CREATEUSER]: CreateUserJob::exec() distroName=%1" ).arg(distroName); +cDebug() << QString("[CREATEUSER]: CreateUserJob::exec() sudoersFilename=%1").arg(sudoersFilename); +cDebug() << QString("[CREATEUSER]: CreateUserJob::exec() sudoersFi=%1" ).arg(sudoersFi.filePath()); +cDebug() << QString("[CREATEUSER]: CreateUserJob::exec() isAbsolute=%1" ).arg(sudoersFi.isAbsolute()); +cDebug() << QString("[CREATEUSER]: CreateUserJob::exec() exists=%1" ).arg(sudoersFi.absoluteDir().exists()); +cDebug() << QString("[CREATEUSER]: CreateUserJob::exec() isWritable=%1" ).arg(sudoersFi.isWritable()); +cDebug() << QString("[CREATEUSER]: CreateUserJob::exec() ls -l %1").arg(etcdir) ; QProcess::execute( QString( "/bin/sh -c \"ls -l %1\"" ).arg( etcdir ) ) ; +cDebug() << QString("[CREATEUSER]: CreateUserJob::exec() ls -l %1").arg(sudoersFi.filePath()) ; QProcess::execute( QString( "/bin/sh -c \"ls -l %1\"" ).arg( sudoersFi.filePath() ) ) ; if ( !sudoersFi.absoluteDir().exists() ) return Calamares::JobResult::error( tr( "Sudoers dir is not writable." ) ); @@ -229,7 +227,7 @@ cDebug() << QString("[CREATEUSER]: CreateUserJob::exec() ls -al /home/%1/ - targ /* parabola-specific configuration */ // Calamares::GlobalStorage* globalStorage = Calamares::JobQueue::instance()->globalStorage(); - QString default_desktop = gs->value("default-desktop").toString(); + QString default_desktop = gs->value(GS::DESKTOP_PACKAGES_KEY).toString(); /* if [ -x /usr/bin/setxkbmap ]; then echo "setxkbmap $(cat /.codecheck | grep XKBMAP= | cut -d '=' -f 2)" >> /home/${user#*=}/.bashrc diff --git a/src/modules/welcome/checker/RequirementsChecker.cpp b/src/modules/welcome/checker/RequirementsChecker.cpp index ab36aef4f..751b411a4 100644 --- a/src/modules/welcome/checker/RequirementsChecker.cpp +++ b/src/modules/welcome/checker/RequirementsChecker.cpp @@ -279,15 +279,10 @@ RequirementsChecker::setConfigurationMap( const QVariantMap& configurationMap ) bool has_isorepo = QDir("/isorepo").exists("isorepo.db.tar.gz"); globalStorage->insert( GS::HAS_ISOREPO_KEY, has_isorepo ); if ( has_isorepo ) - { - m_entriesToCheck.removeAll("internet") ; m_entriesToRequire.removeAll("internet") ; - } else - { - m_entriesToCheck.append("internet") ; m_entriesToRequire.append("internet") ; - } + m_entriesToCheck.append("internet") ; m_entriesToCheck.removeDuplicates() ; m_entriesToRequire.removeDuplicates() ; } |