]> git.proxmox.com Git - pve-installer.git/blobdiff - proxinstall
bump version to 6.0-1
[pve-installer.git] / proxinstall
index 74b76f10814e8e63005fadf90115bf456f369635..2c44567f4dc9d6eee437d5e8223fc36733ab4031 100755 (executable)
@@ -13,7 +13,7 @@ use IO::File;
 use IO::Select;
 use Cwd 'abs_path';
 use Gtk3 '-init';
-use Gtk3::WebKit;
+use Gtk3::WebKit2;
 use Encode;
 use String::ShellQuote;
 use Data::Dumper;
@@ -691,6 +691,9 @@ sub get_partition_dev {
 
     if ($dev =~ m|^/dev/sd([a-h]?[a-z]\|i[a-v])$|) {
        return "${dev}$partnum";
+    } elsif ($dev =~ m|^/dev/xvd[a-z]$|) {
+       # Citrix Hypervisor blockdev
+       return "${dev}$partnum";
     } elsif ($dev =~ m|^/dev/[hxev]d[a-z]$|) {
        return "${dev}$partnum";
     } elsif ($dev =~ m|^/dev/[^/]+/c\d+d\d+$|) {
@@ -1286,6 +1289,11 @@ sub extract_data {
            }
        }
 
+       mkdir "$targetdir/mnt";
+       mkdir "$targetdir/mnt/hostrun";
+       syscmd("mount --bind /run $targetdir/mnt/hostrun") == 0 ||
+           die "unable to bindmount run on $targetdir/mnt/hostrun\n";
+
        update_progress(1, 0.05, $maxper, "extracting base system");
 
        my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size) = stat ($basefile);
@@ -1315,6 +1323,8 @@ sub extract_data {
            die "unable to mount proc on $targetdir/proc\n";
        syscmd("mount -n -t sysfs sysfs $targetdir/sys") == 0 ||
            die "unable to mount sysfs on $targetdir/sys\n";
+       syscmd("chroot $targetdir mount --bind /mnt/hostrun /run") == 0 ||
+           die "unable to re-bindmount hostrun on /run in chroot\n";
 
        update_progress(1, $maxper, 0.5, "configuring base system");
 
@@ -1611,9 +1621,6 @@ _EOD
 
        # cleanup
 
-       # hack: remove dead.letter from sshd installation
-       syscmd("rm -rf $targetdir/dead.letter");
-
        unlink "$targetdir/usr/sbin/policy-rc.d";
 
        diversion_remove($targetdir, "/sbin/start-stop-daemon");
@@ -1675,6 +1682,8 @@ _EOD
        syscmd("chroot $targetdir /usr/bin/dpkg-query -W --showformat='\${package}\n'> final.pkglist");
     }
 
+    syscmd("umount $targetdir/run");
+    syscmd("umount $targetdir/mnt/hostrun");
     syscmd("umount $targetdir/tmp");
     syscmd("umount $targetdir/proc");
     syscmd("umount $targetdir/sys");
@@ -1739,13 +1748,17 @@ sub display_html {
     my $data = file_get_contents($path);
 
     if ($filename eq 'license.htm') {
-       my $license = decode('utf8', file_get_contents("${proxmox_cddir}/EULA"));
+       my $license = eval { decode('utf8', file_get_contents("${proxmox_cddir}/EULA")) };
+       if (my $err = $@) {
+           die $err if !$opt_testmode;
+           $license = "TESTMODE: Ignore non existent EULA...\n";
+       }
        my $title = "END USER LICENSE AGREEMENT (EULA)";
        $data =~ s/__LICENSE__/$license/;
        $data =~ s/__LICENSE_TITLE__/$title/;
     }
 
-    $htmlview->load_html_string($data, $url);
+    $htmlview->load_html($data, $url);
 
     $last_display_change = time();
 }
@@ -1819,7 +1832,7 @@ sub create_main_window {
     my $vbox2 = Gtk3::VBox->new(0, 0);
     $hbox->add($vbox2);
 
-    $htmlview = Gtk3::WebKit::WebView->new();
+    $htmlview = Gtk3::WebKit2::WebView->new();
     my $scrolls = Gtk3::ScrolledWindow->new();
     $scrolls->add($htmlview);
 
@@ -2023,7 +2036,11 @@ sub create_ipconf_view {
 
     my $device_change_handler = sub {
        my $current = shift;
-       $ipconf->{selected} = $device_active_map->{$current->get_active()};
+
+       my $new = $device_active_map->{$current->get_active()};
+       return if $new eq $ipconf->{selected};
+
+       $ipconf->{selected} = $new;
        my $iface = $ipconf->{ifaces}->{$ipconf->{selected}};
        $config->{mngmt_nic} = $iface->{name};
        $ipconf_entry_addr->set_text($iface->{inet}->{addr} || $iface->{inet6}->{addr})
@@ -3066,7 +3083,7 @@ sub create_hdsel_view {
     $target_hd_combo->signal_connect(changed => sub {
        $a = shift->get_active;
        my ($disk, $devname) = @{@$hds[$a]};
-       $last_hd_selected = 0;
+       $last_hd_selected = $a;
        $target_hd = $devname;
     });