#!/bin/sh
#
# Copyright © 1995-1998 Ian Jackson <ian@chiark.greenend.org.uk>
# Copyright © 1998 Heiko Schlittermann <heiko@lotte.sax.de>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 dated June, 1991.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

set -e
vardir="$1"
method=$2
option=$3


cd "$vardir/methods/$method"

. ./shvar.$option


#debug() { echo "DEBUG: $@"; }
debug() { true; }
iarch=`dpkg --print-architecture`
ismulti() { test -e "$1/.disk/info" || test -e "$1$2/.disk/info"; }

# 1/ mountpoint
# 2/ hierarchy
getdisklabel () {
    debug "$1" "$2"
    if [ -f $1/.disk/info ]
    then
	echo -n `head -1 "$1/.disk/info"`
    else
        if [ -f $1$2/.disk/info ]
	then
	    echo -n `head -1 "$1$2/.disk/info"`
	else
            echo -n 'Non-Debian disc'
	fi
    fi
}

xit=1

do_umount() {
	if [ "$method" = "multi_mount" ]
	then
		echo /bin/true
		return
	fi
	if [ -n "$umount" ]; then
		echo umount "$umount"
		#">/dev/null" "2>&1"
	fi
}

do_mount() {

	if [ "$method" = "multi_mount" ]
	then
		echo /bin/true
		return
	fi

	if [ ! -b "$p_blockdev" ]
	then
		loop=",loop"
	fi

	if [ -n "$p_blockdev" ]
	then
		umount="$p_mountpoint"
		echo mount -rt iso9660 -o nosuid,nodev${loop} "$p_blockdev" "$p_mountpoint"\; umount="$p_mountpoint"
	fi

	if [ -n "$p_nfs" ]
	then
		umount="$p_mountpoint"
		echo mount -rt nfs "$p_nfs" -o nosuid,nodev "$p_mountpoint"\; umount="$p_mountpoint"
	fi

	#if [ -n "$p_multi" -a -n "$p_multi_contentsfile" ]; then
		#echo "This is disk "
		#echo "    "`getdisklabel "${p_mountpoint}" "${p_hierbase}"`
	#fi
}

trap 'eval `do_umount`; exit $xit' 0

eval `do_mount`

predep="$vardir/predep-package"
while true
do
	thisdisk="`getdisklabel ${p_mountpoint} ${p_hierbase}`"
	set +e
	dpkg --predep-package >"$predep"
	rc=$?
	set -e
	if test $rc = 1; then break; fi
	test $rc = 0

	perl -e '
		($binaryprefix,$predep,$thisdisk) = @ARGV;
		open(P,"< $predep") || die "cannot open $predep: $!\n";
		while (<P>) {
			s/\s*\n$//;
			$package= $_ if s/^Package: //i;
			/^X-Medium:\s+(.*)\s*/ and $medium = $1;
			@filename= split(/ /,$_) if s/^Filename: //i;
			@msdosfilename= split(/ /,$_) if s/^MSDOS-Filename: //i;
		}
		length($package) || die "internal error - no package";
		@filename || die "internal error - no filename";
		@filename==@msdosfilename || !@filename || !@msdosfilename ||
			die "internal error - mismatch >@filename< >@msdosfilename<";
		if ($medium && ($medium ne $thisdisk)) {
			print "

This is
    $thisdisk
However, $package is expected on disc:
    $medium
Please change the discs and press <RETURN>.

";
			exit(1);
		}
		@invoke=(); $|=1;
		for ($i=0; $i<=$#filename; $i++) {
			$ppart= $i+1;
			print "Looking for part $ppart of $package ... ";
			if (-f "$binaryprefix$filename[$i]") {
				$print= $filename[$i];
				$invoke= "$binaryprefix$filename[$i]";
			} elsif (-f "$binaryprefix$msdosfilename[$i]") {
				$print= $msdosfilename[$i];
				$invoke= "$binaryprefix$msdosfilename[$i]";
			} else {
				$base= $filename[$i]; $base =~ s,.*/,,;
				$msdosbase= $msdosfilename[$i]; $msdosbase =~ s,.*/,,;
				defined($c= open(X,"-|")) ||
					die "failed to fork for find: $!\n";
				if (!$c) {
					exec("find", "-L",
					     length($binaryprefix) ? $binaryprefix : ".",
					     "-name",$base,"-o","-name",$msdosbase);
					die "failed to exec find: $!\n";
				}
				while (chop($invoke= <X>)) { last if -f $invoke; }
				$print= $invoke;
				if (substr($print,0,length($binaryprefix)+1) eq
				    "$binaryprefix/") {
					$print= substr($print,length($binaryprefix));
				}
			}
			if (!length($invoke)) {
				print STDERR "

Oh dear, I need to install or upgrade $package, but I don'\''t see
the appropriate file(s) anywhere.  I'\''m expecting version $version or
later, as that is listed in the Packages.cd file.

Perhaps you downloaded it with an unexpected name, or something.
In any case, you must find the file(s) and then either place it with
the correct filename(s) (as listed in the Packages.cd file or in
/var/lib/dpkg/available) and rerun the installation, or upgrade the
package by using `dpkg --install --auto-deconfigure'\'' by hand.

";
				exit(1);
			}
			print "$print\n";
			push(@invoke,$invoke);
		}
		print "Running dpkg -iB for $package ...\n";
		exec("dpkg","-iB","--",@invoke);
		die "failed to exec dpkg: $!\n";
	' -- "$p_mountpoint$p_hierbase" "$predep" "$thisdisk"
done

	perl -e '
	$SIG{INT} = sub { cd $vardir; unlink <tmp/*>; exit 1; };
	$| = 1;
	my ($vardir, $mountpoint, $hierbase, $mount, $umount) = @ARGV;
	my $line;
	my $AVAIL = "$vardir/methods/multicd/available";
	my $STATUS = "$vardir/status";
	my %Installed, %Filename, %Medium;
	print "Get currently installed package versions...";
	open(IN, "$STATUS") or die "Cannot open $STATUS: $!\n";
	$line = 0;
	{ local $/ = "";
	while (<IN>) {
		my %status;
		my @pstat;
		$line++ % 20 or print ".";
		s/\n\s+/ /g;
		%status =  ("", split /^(\S*?):\s*/m, $_);
		map { chomp $status{$_}; $status{$_} =~ s/^\s*(.*?)\s*$/$1/;} keys %status;
		@pstat = split(/ /, $status{Status});
		next unless ($pstat[0] eq "install");
		if ($pstat[2] eq "config-files" || $pstat[2] eq "not-installed") {
		    $Installed{$status{Package}} = "0.0";
		} else {
		    $Installed{$status{Package}} = $status{Version} || "" ;
		}
	}; }
	print "\nGot ", scalar keys %Installed, " installed/pending packages\n";
	print "Scanning available packages...";
	$line = 0;
	open(IN, "$AVAIL") or die("Cannot open $AVAIL: $!\n");
	{ local $/ = "";
	while (<IN>) {
		my $updated;
		 $line++ % 20 or print ".";

		 s/\n\s+/ /g;
		 %avail   =  ("", split /^(\S*?):\s*/m, $_);
		 map { chomp $avail{$_}; $avail{$_} =~ s/^\s*(.*?)\s*$/$1/;} keys %avail;

		 next unless defined $Installed{$avail{Package}};

		 system "dpkg", "--compare-versions", $avail{Version}, "gt", $Installed{$avail{Package}};
		 $updated = ($? == 0);
		 #print "$avail{Package}(" . ($updated ? "+" : "=") . ") ";
		 $updated or next;

		 $Filename{$avail{Package}} = $avail{Filename};

		 next unless defined $avail{"X-Medium"};
		 ${Medium{$avail{"X-Medium"}}} or ${Medium{$avail{"X-Medium"}}} = [];
		 push @{${Medium{$avail{"X-Medium"}}}}, $avail{Package};
	}; };
	print "\n";

	if (@_ = keys(%Medium)) {
		    print "You will need the following distribution disc(s):\n",
			join (", ", @_), "\n";
	}

	foreach $need (sort @_) {
		if (-r "$mountpoint/.disk/info") {
			open(IN, "$mountpoint/.disk/info") or die("$mountpoint/.disk/info: $!\n");
		} else {
			open(IN, "$mountpoint/$hierbase/.disk/info") or die("$mountpoint/$hierbase/.disk/info: $!\n");
		}
		$disk = <IN>; chomp $disk; close(IN);

		print "Processing disc\n   $need\n";

		while ($disk ne $need) {
			print "Wrong disc.  This is disc\n    $disk\n";
			print "However, I need disc\n    $need\n";
			print "Please change the discs and press <RETURN>\n";
			system($umount);
			<STDIN>;
			system($mount); $? and warn("Cannot mount $mount\n");
		} continue {
			if (-r "$mountpoint/.disk/info") {
			    open(IN, "$mountpoint/.disk/info") or die("$mountpoint/.disk/info: $!\n");
			} else {
			    open(IN, "$mountpoint/$hierbase/.disk/info") or die("$mountpoint/$hierbase/.disk/info: $!\n");
			}
			$disk = <IN>; chomp $disk; close(IN);
		}

		-d "tmp" || mkdir "tmp", 0755 or die("Cannot mkdir tmp: $!\n");
		unlink <tmp/*>;

		print "creating symlinks...\n";
		foreach (@{$Medium{$need}}) {
			($basename = $Filename{$_}) =~ s/.*\///;
			symlink "$mountpoint/$hierbase/$Filename{$_}",
				"tmp/$basename";
		}
		chdir "tmp" or die "Cannot chdir to tmp: $!\n";
		system "dpkg", "-iGROEB", ".";
		unlink <*>;
		chdir "..";

		if ($?) {
			print "\nThe dpkg run produced errors.  Please tell me, if I should\n",
				  "continue with the next CD. [Y/n]: ";
			$ans = <STDIN>;
			exit 1 if $ans =~ /^n/i;
			$ouch = $?;
		}
	}

	exit $ouch;

' "$vardir" "$p_mountpoint" "$p_hierbase" "`do_mount`" "`do_umount`"


echo -n 'Installation OK.  Hit RETURN.  '
read response

xit=0

# vim:ts=4:sw=4:aw:ai:
