Merge pull request #152 from calamares/python-branding

Give Python modules access to the branding information.
This commit is contained in:
Teo Mrnjavac 2014-11-17 13:24:19 +01:00
commit df47842fc7
10 changed files with 59 additions and 18 deletions

View File

@ -10,6 +10,17 @@ A dictionary with the following keys:
- `installPath`: device where the boot loader should be installed ("/dev/sda", "/dev/sdb1"...) - `installPath`: device where the boot loader should be installed ("/dev/sda", "/dev/sdb1"...)
## branding
A dictionary with the following keys (loaded from branding.desc):
- `productName`: distribution unversioned product name (long version)
- `shortProductName`: distribution unversioned product name (short version)
- `version`: distribution version number (long version)
- `shortVersion`: distribution version number (short version)
- `versionedName`: distribution product name and version (long version)
- `shortVersionedName`: distribution product name and version (short version)
## partitions ## partitions
A list of dictionaries, one per partition. The dictionary contains the following keys: A list of dictionaries, one per partition. The dictionary contains the following keys:

View File

@ -3,6 +3,7 @@ componentName: default
strings: strings:
productName: Generic GNU/Linux productName: Generic GNU/Linux
shortProductName: Generic
version: 1.0 LTS version: 1.0 LTS
shortVersion: 1.0 shortVersion: 1.0
versionedName: Generic GNU/Linux 1.0 LTS "Rusty Trombone" versionedName: Generic GNU/Linux 1.0 LTS "Rusty Trombone"

View File

@ -316,5 +316,6 @@ CalamaresApplication::onPluginsReady()
void void
CalamaresApplication::initJobQueue() CalamaresApplication::initJobQueue()
{ {
new Calamares::JobQueue( this ); Calamares::JobQueue *jobQueue = new Calamares::JobQueue( this );
Calamares::Branding::instance()->setGlobals( jobQueue->globalStorage() );
} }

View File

@ -18,6 +18,7 @@
#include "Branding.h" #include "Branding.h"
#include "GlobalStorage.h"
#include "utils/CalamaresUtils.h" #include "utils/CalamaresUtils.h"
#include "utils/Logger.h" #include "utils/Logger.h"
#include "utils/YamlUtils.h" #include "utils/YamlUtils.h"
@ -26,6 +27,7 @@
#include <QDir> #include <QDir>
#include <QFile> #include <QFile>
#include <QPixmap> #include <QPixmap>
#include <QVariantMap>
#include <yaml-cpp/yaml.h> #include <yaml-cpp/yaml.h>
@ -48,7 +50,8 @@ QStringList Branding::s_stringEntryStrings =
"version", "version",
"shortVersion", "shortVersion",
"versionedName", "versionedName",
"shortVersionedName" "shortVersionedName",
"shortProductName"
}; };
@ -200,6 +203,16 @@ Branding::slideshowPaths() const
} }
void
Branding::setGlobals( GlobalStorage* globalStorage ) const
{
QVariantMap brandingMap;
foreach ( const QString& key, s_stringEntryStrings )
brandingMap.insert( key, m_strings.value( key ) );
globalStorage->insert( "branding", brandingMap );
}
void void
Branding::bail( const QString& message ) Branding::bail( const QString& message )
{ {

View File

@ -30,6 +30,8 @@
namespace Calamares namespace Calamares
{ {
class GlobalStorage;
class UIDLLEXPORT Branding : public QObject class UIDLLEXPORT Branding : public QObject
{ {
Q_OBJECT Q_OBJECT
@ -40,7 +42,8 @@ public:
Version, Version,
ShortVersion, ShortVersion,
VersionedName, VersionedName,
ShortVersionedName ShortVersionedName,
ShortProductName
}; };
enum ImageEntry : short enum ImageEntry : short
@ -63,6 +66,13 @@ public:
QPixmap image( Branding::ImageEntry imageEntry, const QSize& size ) const; QPixmap image( Branding::ImageEntry imageEntry, const QSize& size ) const;
QStringList slideshowPaths() const; QStringList slideshowPaths() const;
/**
* Creates a map called "branding" in the global storage, and inserts an
* entry for each of the branding strings. This makes the branding
* information accessible to the Python modules.
*/
void setGlobals( GlobalStorage* globalStorage ) const;
private: private:
static Branding* s_instance; static Branding* s_instance;

View File

@ -1,7 +1,6 @@
--- ---
# Gummiboot configuration files settings, set preferred distribution name and amount of time before # Gummiboot configuration files settings, set kernel and initramfs file names
# default selection boots # and amount of time before default selection boots
distribution: KaOS-kf5
kernel: /vmlinuz-linux kernel: /vmlinuz-linux
img: /initramfs-linux.img img: /initramfs-linux.img
fallback: /initramfs-linux-fallback.img fallback: /initramfs-linux-fallback.img

View File

@ -53,7 +53,8 @@ def get_uuid():
def create_conf(uuid, conf_path): def create_conf(uuid, conf_path):
distribution = libcalamares.job.configuration["distribution"] branding = libcalamares.globalstorage.value("branding")
distribution = branding["shortProductName"]
kernel = libcalamares.job.configuration["kernel"] kernel = libcalamares.job.configuration["kernel"]
img = libcalamares.job.configuration["img"] img = libcalamares.job.configuration["img"]
partitions = libcalamares.globalstorage.value("partitions") partitions = libcalamares.globalstorage.value("partitions")
@ -79,7 +80,8 @@ def create_conf(uuid, conf_path):
def create_fallback(uuid, fallback_path): def create_fallback(uuid, fallback_path):
distribution = libcalamares.job.configuration["distribution"] branding = libcalamares.globalstorage.value("branding")
distribution = branding["shortProductName"]
kernel = libcalamares.job.configuration["kernel"] kernel = libcalamares.job.configuration["kernel"]
fb_img = libcalamares.job.configuration["fallback"] fb_img = libcalamares.job.configuration["fallback"]
partitions = libcalamares.globalstorage.value("partitions") partitions = libcalamares.globalstorage.value("partitions")
@ -105,11 +107,13 @@ def create_fallback(uuid, fallback_path):
def create_loader(loader_path): def create_loader(loader_path):
distribution = libcalamares.job.configuration["distribution"] branding = libcalamares.globalstorage.value("branding")
distribution = branding["shortProductName"]
timeout = libcalamares.job.configuration["timeout"] timeout = libcalamares.job.configuration["timeout"]
file_name_sanitizer = str.maketrans(" /", "_-")
lines = [ lines = [
'timeout %s\n' % timeout, 'timeout %s\n' % timeout,
'default %s\n' % distribution, 'default %s\n' % distribution.translate(file_name_sanitizer),
] ]
with open(loader_path, 'w') as f: with open(loader_path, 'w') as f:
@ -122,11 +126,13 @@ def install_bootloader(boot_loader, fw_type):
if fw_type == 'efi': if fw_type == 'efi':
install_path = libcalamares.globalstorage.value("rootMountPoint") install_path = libcalamares.globalstorage.value("rootMountPoint")
uuid = get_uuid() uuid = get_uuid()
distribution = libcalamares.job.configuration["distribution"] branding = libcalamares.globalstorage.value("branding")
distribution = branding["shortProductName"]
file_name_sanitizer = str.maketrans(" /", "_-")
conf_path = os.path.join( conf_path = os.path.join(
install_path, "boot", "loader", "entries", "%s.conf" % distribution) install_path, "boot", "loader", "entries", "%s.conf" % distribution.translate(file_name_sanitizer))
fallback_path = os.path.join( fallback_path = os.path.join(
install_path, "boot", "loader", "entries", "%s-fallback.conf" % distribution) install_path, "boot", "loader", "entries", "%s-fallback.conf" % distribution.translate(file_name_sanitizer))
loader_path = os.path.join( loader_path = os.path.join(
install_path, "boot", "loader", "loader.conf") install_path, "boot", "loader", "loader.conf")
partitions = libcalamares.globalstorage.value("partitions") partitions = libcalamares.globalstorage.value("partitions")

View File

@ -1,3 +1,5 @@
rootMountPoint: /tmp/mount rootMountPoint: /tmp/mount
bootLoader: bootLoader:
installPath: /dev/sdb installPath: /dev/sdb
branding:
shortProductName: "Generic Distro"

View File

@ -1,3 +0,0 @@
---
# Replace 'LinuxDistribution' with your distribution name - for example with 'Manjaro'
distributor: LinuxDistribution

View File

@ -56,7 +56,7 @@ def modify_grub_default(partitions, root_mount_point, distributor):
elif lines[i].startswith("GRUB_CMDLINE_LINUX_DEFAULT"): elif lines[i].startswith("GRUB_CMDLINE_LINUX_DEFAULT"):
lines[i] = kernel_cmd lines[i] = kernel_cmd
elif lines[i].startswith("#GRUB_DISTRIBUTOR") or lines[i].startswith("GRUB_DISTRIBUTOR"): elif lines[i].startswith("#GRUB_DISTRIBUTOR") or lines[i].startswith("GRUB_DISTRIBUTOR"):
lines[i] = "GRUB_DISTRIBUTOR=%s" % distributor lines[i] = "GRUB_DISTRIBUTOR='%s'" % distributor.replace("'", "'\\''")
with open(default_grub, 'w') as grub_file: with open(default_grub, 'w') as grub_file:
grub_file.write("\n".join(lines) + "\n") grub_file.write("\n".join(lines) + "\n")
@ -66,5 +66,6 @@ def modify_grub_default(partitions, root_mount_point, distributor):
def run(): def run():
partitions = libcalamares.globalstorage.value("partitions") partitions = libcalamares.globalstorage.value("partitions")
root_mount_point = libcalamares.globalstorage.value("rootMountPoint") root_mount_point = libcalamares.globalstorage.value("rootMountPoint")
distributor = libcalamares.job.configuration["distributor"] branding = libcalamares.globalstorage.value("branding")
distributor = branding["shortProductName"]
return modify_grub_default(partitions, root_mount_point, distributor) return modify_grub_default(partitions, root_mount_point, distributor)