]> rtime.felk.cvut.cz Git - novaboot.git/blobdiff - novaboot
nix: Update flake inputs
[novaboot.git] / novaboot
index 1fdfd52e9eea29c831c02d207591a0fa66a5c26d..cd59748d35e6cb9633f345f6ce2d6d504ec4c149 100755 (executable)
--- a/novaboot
+++ b/novaboot
@@ -17,7 +17,9 @@
 
 use strict;
 use warnings;
-use warnings (exists $ENV{NOVABOOT_TEST} ? (FATAL => 'all') : ());
+use warnings (exists $ENV{NOVABOOT_TEST} ?
+              (FATAL => 'all') :
+              (FATAL => qw(inplace))); # Open warnings in <<>> are fatal
 use Getopt::Long qw(GetOptionsFromString GetOptionsFromArray);
 use Pod::Usage;
 use File::Basename;
@@ -357,7 +359,7 @@ my $EOF;
 my $last_fn = '';
 my ($modules, $variables, $generated, $copy, $chainload, $continuation) = ([], {}, [], []);
 my $skip_reading = defined($on_opt) || defined($off_opt);
-while (!$skip_reading && ($_ = <>)) {
+while (!$skip_reading && ($_ = <<>>)) {
     if ($ARGV ne $last_fn) { # New script
        die "Missing EOF in $last_fn" if $file;
        die "Unfinished line in $last_fn" if $continuation;
@@ -584,6 +586,7 @@ sub generate_grub2_config($$$$;$$)
     my $module_load_method = "module";
     if ($boot_method eq "linux") {
        $module_load_method = "initrd";
+       die('Too many "load" lines for Linux kernel') if (scalar(@$modules_ref) > 2);
     }
     foreach (@$modules_ref) {
        if ($first) {
@@ -593,9 +596,11 @@ sub generate_grub2_config($$$$;$$)
            print $fg "  $boot_method ${base}$kbin $kcmd\n";
        } else {
            my @args = split;
-           # GRUB2 doesn't pass filename in multiboot info so we have to duplicate it here
-           $_ = join(' ', ($args[0], @args));
-           s|\brom://|$rom_prefix|g; # We do not need to translate path for GRUB2
+           if ($boot_method eq "multiboot") {
+               # GRUB2 doesn't pass filename in multiboot info so we have to duplicate it here
+               $_ = join(' ', ($args[0], @args));
+               s|\brom://|$rom_prefix|g; # We do not need to translate path for GRUB2
+           }
            print $fg "  $module_load_method $base$_\n";
        }
     }
@@ -1184,14 +1189,14 @@ r     \\.efi.*   \\.efi";
     close($fh);
     # Unfortunately, tftpd requires root privileges even with
     # non-privileged (>1023) port due to initgroups().
-    system_verbose("sudo in.tftpd --listen --secure -v -v -v --pidfile $builddir/tftpd.pid -m mapfile --address :$tftp_port $tftp_root");
+    system_verbose("sudo in.tftpd --listen --secure -v -v -v --pidfile tftpd.pid -m mapfile --address :$tftp_port $tftp_root");
 
     # Kill server when we die
     $SIG{__DIE__} = sub { system_verbose('sudo pkill --pidfile=dhcpd.pid') if (defined $dhcp_tftp);
-                         system_verbose('sudo pkill --pidfile=tftpd.pid'); };
+                         system_verbose("sudo pkill --pidfile=$tftp_root/tftpd.pid"); };
 
     # We have to kill tftpd explicitely, because it is not in our process group
-    $SIG{INT} = sub { system_verbose('sudo pkill --pidfile=tftpd.pid'); exit(0); };
+    $SIG{INT} = sub { system_verbose("sudo pkill --pidfile=$tftp_root/tftpd.pid"); exit(0); };
 }
 
 ### AMT IDE-R
@@ -1290,8 +1295,9 @@ if (defined $uboot) {
            die "No '--uboot-addr kernel' given" unless $uboot_addr{kernel};
            $exp->send("tftpboot $uboot_addr{kernel} $prefix$kbin\n");
            $exp->expect(15,
-                        [qr/##/, sub { exp_continue; }],
-                        $uboot_prompt) || die "Kernel load: " . ($! || "timeout");
+                         $uboot_prompt,
+                        [qr/#/, sub { exp_continue; }]
+                ) || die "Kernel load: " . ($! || "timeout");
        }
        if (defined $dtb) {
            die "No '--uboot-addr fdt' given" unless $uboot_addr{fdt};