summaryrefslogtreecommitdiffstats
path: root/lib/MGA/DrakISO/ISOBuild.pm
blob: 84d8b206879b99e716bd1b8980643ca94f5b6ffb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# Copyright (C) 2005 Mandriva
#                    Olivier Blin <oblin@mandriva.com>
# Copyright (C) 2017-2018 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA.

# SYNOPSIS
# --------
# This package defines the base ISOBuild class that is used to hold all the
# settings and configuration values needed to build an ISO. It provides a
# number of helper functions which are used when building either type ISO.
# The subclasses ClassicBuild and LiveBuild extend this class with functions
# specific to building the two types of ISO.

package MGA::DrakISO::ISOBuild;

use strict;

use MDK::Common;

sub new {
    my ($class) = @_;
    bless {}, $class;
}

sub get_name {
    my ($build) = @_;
    my $fields = $build->{iso_name_fields} || $build->default_name_fields;
    join('-', grep { $_ } @{$build->{settings}}{@$fields});
}

sub get_set_suffix {
    my ($build) = @_;
    $build->{settings}{set} ? "-$build->{settings}{set}" : "";
}

sub get_build_dir {
    my ($build, $o_subdir) = @_;
    $build->{settings}{workdir} . '/' . $build->get_name . $build->get_set_suffix . if_($o_subdir, '/' . $o_subdir);
}

sub get_chroot_dir {
    my ($build) = @_;
    get_build_dir($build, 'chroot');
}

sub get_absolute_path {
    my ($build, $path) = @_;
    if (defined $path && substr($path, 0, 1) ne '/') {
        $build->{settings}{config_root} . '/' . $path;
    } else {
        $path;
    }
}

1;