package MDV::Draklive::Live; use MDK::Common; sub new { my ($class) = @_; bless {}, $class; } sub get_name { my ($live) = @_; join('-', grep { $_ } @{$live->{settings}}{qw(name product version desktop region media arch)}); } sub get_builddir { my ($live) = @_; $live->{settings}{builddir} . '/' . $live->get_name; } sub get_system_root { my ($live) = @_; $live->{settings}{chroot} . '/' . $live->get_name; } sub get_media_prefix { my ($live, $setting, $o_boot) = @_; my $hidden = $live->{system}{hide_media_dirs} && $live->{media}->get_boot_setting('can_hide', { boot => $o_boot }); $live->{prefix}{media}{$hidden ? "hidden_$setting" : $setting}; } sub find_kernel { my ($live) = @_; my $kernel = $live->{system}{kernel}; unless ($kernel) { my $vmlinuz = readlink($live->get_system_root . '/boot/vmlinuz'); $vmlinuz ||= find { -e $_ && ! -l $_ } glob_($live->get_system_root . '/boot/vmlinuz-*'); ($kernel) = $vmlinuz =~ /\bvmlinuz-(.*)$/ or die "no kernel can be found\n"; } $kernel; } sub get_lib_prefix { my ($live) = @_; my $lib_prefix = find { glob($live->get_system_root . $_ . '/libc.so.*') } qw(/lib64 /lib); $lib_prefix or die 'unable to find system libraries in /lib or /lib64'; $lib_prefix; } 1;