summaryrefslogtreecommitdiffstats
path: root/perl-install/fs/format.pm
blob: 7fd7d012e76c57df2f2a80aa2fc71c4b884330fd (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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
Diffstat (limited to 'perl-install/mouse.pm')
-rw-r--r--perl-install/mouse.pm6
1 files changed, 3 insertions, 3 deletions
diff --git a/perl-install/mouse.pm b/perl-install/mouse.pm
index 27979ea8d..795d859b1 100644
--- a/perl-install/mouse.pm
+++ b/perl-install/mouse.pm
@@ -6,7 +6,7 @@ use strict;
#-######################################################################################
#- misc imports
#-######################################################################################
-use common qw(:common :system :functional);
+use common qw(:common :system :functional :file);
use modules;
use log;
@@ -62,7 +62,7 @@ sub serial_ports_names {
}
sub serial_ports_names2dev {
local ($_) = @_;
- /(\w+)/;
+ first(/(\w+)/);
}
sub read($) {
@@ -76,7 +76,7 @@ sub write($;$) {
my ($prefix, $mouse) = @_;
local $mouse->{FULLNAME} = qq("$mouse->{FULLNAME}");
setVarsInSh("$prefix/etc/sysconfig/mouse", $mouse, qw(MOUSETYPE XMOUSETYPE FULLNAME XEMU3));
- symlink $mouse->{device}, "$prefix/dev/mouse" or log::l("creating $prefix/dev/mouse symlink failed");
+ symlinkf $mouse->{device}, "$prefix/dev/mouse" or log::l("creating $prefix/dev/mouse symlink failed");
}
sub detect() {
"hl opt">, '-q' ], jfs => [ 'jfsprogs', 'mkfs.jfs', '-f' ], hfs => [ 'hfsutils', 'hformat' ], dos => [ 'dosfstools', 'mkdosfs' ], vfat => [ 'dosfstools', 'mkdosfs', '-F', '32' ], swap => [ 'util-linux', 'mkswap' ], ); sub package_needed_for_partition_type { my ($part) = @_; my $l = $cmds{$part->{fs_type}} or return; $l->[0]; } sub known_type { my ($part) = @_; to_bool($cmds{$part->{fs_type}}); } sub check_package_is_installed { my ($do_pkgs, $fs_type) = @_; my ($pkg, $binary) = @{$cmds{$fs_type} || return}; $do_pkgs->ensure_binary_is_installed($pkg, $binary); } sub part { my ($raids, $part, $prefix, $wait_message) = @_; if (isRAID($part)) { $wait_message->(N("Formatting partition %s", $part->{device})) if $wait_message; require raid; raid::format_part($raids, $part); } elsif (isLoopback($part)) { $wait_message->(N("Creating and formatting file %s", $part->{loopback_file})) if $wait_message; loopback::format_part($part, $prefix); } else { $wait_message->(N("Formatting partition %s", $part->{device})) if $wait_message; part_raw($part, $wait_message); } } sub part_raw { my ($part, $wait_message) = @_; $part->{isFormatted} and return; if ($part->{encrypt_key}) { require fs; fs::set_loop($part); } my $dev = $part->{real_device} || $part->{device}; my @options = if_($part->{toFormatCheck}, "-c"); log::l("formatting device $dev (type $part->{fs_type})"); my $fs_type = $part->{fs_type}; if ($fs_type eq 'ext2' || $fs_type eq 'ext3') { push @options, "-m", "0" if $part->{mntpoint} =~ m|^/home|; } elsif (isDos($part)) { $fs_type = 'dos'; } elsif ($fs_type eq 'hfs') { push @options, '-l', "Untitled"; } elsif (isAppleBootstrap($part)) { push @options, '-l', 'bootstrap'; } my ($_pkg, $cmd, @first_options) = @{$cmds{$fs_type} || die N("I do not know how to format %s in type %s", $part->{device}, $part->{fs_type})}; my @args = ($cmd, @first_options, @options, devices::make($dev)); my $time = time(); if ($cmd eq 'mke2fs' && $wait_message) { mke2fs($wait_message, @args) or die N("%s formatting of %s failed", $fs_type, $dev); } else { run_program::raw({ timeout => 60 * 60 }, @args) or die N("%s formatting of %s failed", $fs_type, $dev); } warn "$cmd took: ", formatTimeRaw(time() - $time); if ($fs_type eq 'ext3') { disable_forced_fsck($dev); } set_isFormatted($part, 1); } sub mke2fs { my ($wait_message, @args) = @_; open(my $F, "@args |"); local $/ = "\b"; local $_; while (<$F>) { $wait_message->('', $1, $2) if m!^\s*(\d+)/(\d+)\b!; } return close($F); } sub disable_forced_fsck { my ($dev) = @_; run_program::run("tune2fs", "-c0", "-i0", devices::make($dev)); } sub wait_message { my ($in) = @_; my $w; $w, sub { my ($msg, $current, $total) = @_; if ($msg) { $w ||= $in->wait_message('', $msg); $w->set($msg); } elsif ($total) { $w->set("$current / $total"); } }; } 1;