package MGA::DrakISO::Live; use strict; use MDK::Common; 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_name { my ($live) = @_; my $fields = $live->{name_fields} || default_name_fields($live); join('-', grep { $_ } @{$live->{settings}}{@$fields}); } sub get_set_suffix { my ($live) = @_; $live->{settings}{set} ? "-$live->{settings}{set}" : ""; } sub get_langs { my ($live) = @_; uniq( (ref $live->{regions} ? @{$live->{regions}{$live->{settings}{region}}} : ()), @{$live->{system}{langs_always}} ); } sub get_builddir { my ($live, $o_subdir) = @_; $live->{settings}{builddir} . '/' . $live->get_name . $live->get_set_suffix . if_($o_subdir, '/' . $o_subdir); } 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'; } sub get_absolute_path { my ($live, $path) = @_; if (defined $path && substr($path, 0, 1) ne '/') { $live->{settings}{config_root} . '/' . $path; } else { $path; } } 1;