summaryrefslogtreecommitdiffstats
path: root/lib/MGA/DrakISO/LiveBuild.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/MGA/DrakISO/LiveBuild.pm')
-rw-r--r--lib/MGA/DrakISO/LiveBuild.pm81
1 files changed, 81 insertions, 0 deletions
diff --git a/lib/MGA/DrakISO/LiveBuild.pm b/lib/MGA/DrakISO/LiveBuild.pm
new file mode 100644
index 0000000..dbfda48
--- /dev/null
+++ b/lib/MGA/DrakISO/LiveBuild.pm
@@ -0,0 +1,81 @@
+# Copyright (C) 2005 Mandriva
+# Olivier Blin <oblin@mandriva.com>
+# Copyright (C) 2017 Mageia
+# Martin Whitaker <mageia@martin-whitaker.me.uk>
+#
+# 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 2, 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+# SYNOPSIS
+# --------
+# This package defines the LiveBuild subclass that is used to hold all the
+# settings and configuration values needed to build a Live ISO. It provides
+# a number of helper functions over and above those provided by the ISOBuild
+# superclass.
+
+package MGA::DrakISO::LiveBuild;
+
+use strict;
+
+use MDK::Common;
+
+use MGA::DrakISO::ISOBuild;
+
+our @ISA = qw(MGA::DrakISO::ISOBuild);
+
+sub new {
+ my ($class) = @_;
+ bless {}, $class;
+}
+
+sub default_name_fields {
+ my ($live) = @_;
+ [ qw(name version product desktop),
+ if_($live->{settings}{region} ne 'all', $live->{settings}{region}),
+ qw(arch media)
+ ];
+}
+
+sub get_langs {
+ my ($live) = @_;
+ uniq(
+ (ref $live->{regions} ? @{$live->{regions}{$live->{settings}{region}}} : ()),
+ @{$live->{system}{langs_always}}
+ );
+}
+
+sub get_system_root {
+ my ($live) = @_;
+ $live->{settings}{chroot} . '/' . $live->get_name . $live->get_set_suffix;
+}
+
+sub find_kernel {
+ my ($live) = @_;
+ require bootloader;
+ local $::prefix = $live->get_system_root;
+ my @kernels = bootloader::get_kernels_and_labels();
+ my $kernel;
+ if ($live->{system}{kernel}) {
+ $kernel = find { $_->{version} eq $live->{system}{kernel} } @kernels;
+ $kernel or die "kernel $live->{system}{kernel} can not be found\n";
+ }
+ $kernel ||= first(@kernels) or die "no kernel can be found\n";
+}
+
+sub get_initrd_name {
+ my ($live) = @_;
+ 'initrd-' . $live->find_kernel->{version} . '.img';
+}
+
+1;