summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile9
-rwxr-xr-xmake_boot_img67
-rw-r--r--perl-install/Makefile3
-rw-r--r--perl-install/c/stuff.xs.pm7
-rw-r--r--perl-install/common.pm8
-rw-r--r--perl-install/install_steps_gtk.pm11
-rw-r--r--perl-install/modules.pm2
-rw-r--r--perl-install/pkgs.pm18
-rw-r--r--perl-install/share/list.sparc1
-rw-r--r--tools/Makefile2
10 files changed, 83 insertions, 45 deletions
diff --git a/Makefile b/Makefile
index de1c1e0af..0dd016544 100644
--- a/Makefile
+++ b/Makefile
@@ -7,7 +7,8 @@ BOOT_IMG = pcmcia_ks.img network_ks.img
RELEASE_BOOT_IMG += pcmcia.img
endif
ifeq (sparc,$(ARCH))
-BOOT_IMG = live.img tftp.img tftprd.img
+BOOT_IMG = live.img tftp.img tftprd.img live64.img tftp64.img tftprd64.img
+RELEASE_BOOT_IMG += hd64.img cdrom64.img network64.img
endif
BOOT_IMG += $(RELEASE_BOOT_IMG)
@@ -70,11 +71,11 @@ rescue: modules
network_ks.rdz pcmcia_ks.rdz: %_ks.rdz: %.rdz
-network.rdz pcmcia.rdz hd.rdz cdrom.rdz live.rdz tftp.rdz tftprd.rdz: dirs modules
+network.rdz pcmcia.rdz hd.rdz cdrom.rdz live.rdz tftp.rdz tftprd.rdz network64.rdz hd64.rdz cdrom64.rdz live64.rdz tftp64.rdz tftprd64.rdz: dirs modules
./make_boot_img $@ $(@:%.rdz=%)
$(BOOT_IMG): %.img: %.rdz
- `./tools/specific_arch ./make_boot_img` $@ $(@:%.img=%)
+ ./make_boot_img $@ $(@:%.img=%)
tar: clean
rpm -qa > needed_rpms.lst
@@ -89,7 +90,7 @@ $(BOOT_IMG:%=%f): %f: %
xmessage "Floppy done"
clean:
- rm -rf $(BOOT_IMG) $(BOOT_RDZ) $(BINS) modules install_pcmcia_modules vmlinu* System.map
+ rm -rf $(BOOT_IMG) $(BOOT_RDZ) $(BINS) modules modules64 install_pcmcia_modules vmlinu* System*.map
rm -rf install/*/sbin/install install/*/sbin/init
for i in $(DIRS) rescue; do make -C $$i clean; done
find . -name "*~" -o -name ".#*" | xargs rm -f
diff --git a/make_boot_img b/make_boot_img
index 742a47ba2..41cecb13f 100755
--- a/make_boot_img
+++ b/make_boot_img
@@ -31,7 +31,14 @@ $install = $ {{
pcmcia => "full-install",
network => "install",
cdrom => "local-install",
- hd => "local-install"
+ hd => "local-install",
+ live64 => "full-install",
+ tftp64 => "full-install",
+ tftprd64 => "full-install",
+ pcmcia64 => "full-install",
+ network64 => "install",
+ cdrom64 => "local-install",
+ hd64 => "local-install",
}}{$type} or die;
$img =~ /rdz$/ ? initrd($mnt, $img) : $::{"boot_img_$arch"}->($mnt, $img);
@@ -40,6 +47,7 @@ sub install_s { _ "strip $_[0]"; _ "$sudo install $_[0] $_[1]" }
sub initrd {
my ($mnt, $img) = @_;
+ my ($ltype, $I) = $type =~ /(.*?)(64)/; $ltype ||= $type;
my $tmp = "$ENV{HOME}/tmp/initrd";
my $tar = "$instdir/install1_$type.$arch.tar.bz2";
-e $tar or $tar = "$instdir/install1.$arch.tar.bz2";
@@ -54,9 +62,8 @@ sub initrd {
install_s("$instdir/$install", "$mnt/sbin/install");
_ "$sudo cp -f install_${type}_modules/* $mnt/modules/" if -d "install_${type}_modules";
- _ "$sudo cp -f modules/${type}_modules.cgz $mnt/modules/modules.cgz";
- _ "ln -s modules.cgz $mnt/modules/modules64.cgz" if $arch =~ /sparc/;
- _ "$sudo cp -f modules/modules.dep $mnt/modules/";
+ _ "$sudo cp -f modules$I/${ltype}_modules.cgz $mnt/modules/modules$I.cgz";
+ _ "$sudo cp -f modules$I/modules.dep $mnt/modules/";
_ "$sudo umount $mnt";
# Workaround for vfat-loop bug (quite touchy)
@@ -143,15 +150,15 @@ sub boot_img_alpha {
sub boot_img_sparc {
my ($mnt, $img) = @_;
- if ($type eq 'live') {
+ if ($type =~ /^live(.*)/) {
#- hack to produce directly into /export the needed file for cdrom boot.
my $dir = "/export";
my $boot = "boot"; #- non-absolute pathname only!
_ "mkdir -p $dir/$boot";
_ "cp -f /boot/cd.b /boot/second.b $dir/$boot";
- _ "cp -f vmlinuz $dir/$boot/vmlinux.gz";
- -f "live.rdz" ? _ "cp -f live.rdz $dir/$boot" : initrd("${mnt}2", "$dir/$boot/live.rdz");
+ _ "cp -f vmlinux$1 $dir/$boot/vmlinux$1";
+ -f "live$1.rdz" ? _ "cp -f live$1.rdz $dir/$boot" : initrd("${mnt}2", "$dir/$boot/live$1.rdz");
output("$dir/$boot/silo.conf", "
partition=1
@@ -177,20 +184,37 @@ image=\"cat /$boot/kickit.msg\"
image=\"cat /$boot/param.msg\"
label=6
single-key
-image=/$boot/vmlinux.gz
+image[sun4c,sun4d,sun4m]=/$boot/vmlinux
label=linux
alias=install
initrd=/$boot/live.rdz
append=ramdisk_size=32000
-image=/$boot/vmlinux.gz
+image[sun4c,sun4d,sun4m]=/$boot/vmlinux
label=text
initrd=/$boot/live.rdz
append=ramdisk_size=32000 text
-image=/$boot/vmlinux.gz
+image[sun4c,sun4d,sun4m]=/$boot/vmlinux
label=expert
initrd=/$boot/live.rdz
append=ramdisk_size=32000 expert
-image=/$boot/vmlinux.gz
+image[sun4c,sun4d,sun4m]=/$boot/vmlinux
+ label=ks
+ initrd=/$boot/live.rdz
+ append=ramdisk_size=32000 ks
+image[sun4u]=/$boot/vmlinux64
+ label=linux
+ alias=install
+ initrd=/$boot/live.rdz
+ append=ramdisk_size=32000
+image[sun4u]=/$boot/vmlinux64
+ label=text
+ initrd=/$boot/live.rdz
+ append=ramdisk_size=32000 text
+image[sun4u]=/$boot/vmlinux64
+ label=expert
+ initrd=/$boot/live.rdz
+ append=ramdisk_size=32000 expert
+image[sun4u]=/$boot/vmlinux64
label=ks
initrd=/$boot/live.rdz
append=ramdisk_size=32000 ks
@@ -200,29 +224,30 @@ image=/$boot/vmlinux.gz
To Build a Bootable CD-ROM, try:
mkisofs -R -o t.iso -S $boot/cd.b -B $boot/second.b -s /$boot/silo.conf /export
");
- } elsif ($type eq 'tftp') {
+ } elsif ($type =~ /^tftprd(.*)/) {
my $dir = "/export";
my $boot = "images";
+ my $setarch = $1 ? "sparc64" : "sparc32";
_ "mkdir -p $dir/$boot";
- _ "elftoaout kernel/src/vmlinux -o $dir/$boot/tftp.img";
- } elsif ($type eq 'tftprd') {
+ -f "$type.rdz" or initrd("${mnt}2", "$type.rdz");
+ _ "cp -f vmlinux$1.aout $dir/$boot/$type.img";
+ _ "$setarch kernel$1/src/arch/sparc$1/boot/piggyback $dir/$boot/$type.img kernel$1/boot/System.map $type.rdz";
+ } elsif ($type =~ /^tftp(.*)/) {
my $dir = "/export";
my $boot = "images";
- my $arch = `uname -m`; chomp $arch;
_ "mkdir -p $dir/$boot";
- -f "$type.rdz" ? _ "cp -f $type.rdz kernel/src/initrd.gz" : initrd("${mnt}2", "kernel/src/initrd.gz");
- _ "make -C kernel/src tftpboot.img";
- _ "cp -f kernel/src/arch/$arch/boot/tftpboot.img $dir/$boot/tftprd.img";
+ _ "cp -f vmlinux$1.aout $dir/$boot/$type.img";
} else {
my $dir = "floppy";
+ my ($ltype, $I) = $type =~ /(.*?)(64)/; $ltype ||= $type;
__ "$sudo umount $mnt 2>/dev/null";
_ "rm -rf $dir";
_ "mkdir -p $dir";
_ "cp -f /boot/fd.b /boot/second.b $dir";
- _ "cp -f vmlinuz $dir/vmlinux.gz";
+ _ "cp -f vmlinuz$I $dir/vmlinux$I.gz";
-f "$type.rdz" ? _ "cp -f $type.rdz $dir" : initrd("${mnt}2", "$dir/$type.rdz");
output("$dir/silo.conf", "
@@ -230,10 +255,10 @@ partition=1
default=linux
timeout=100
read-write
-image=/vmlinux.gz
+image=/vmlinux$I.gz
label=linux
initrd=/$type.rdz
- append=ramdisk_size=32000 $type
+ append=ramdisk_size=32000 $ltype
");
_ "genromfs -d $dir -f /dev/ram -A 2048,/.. -a 512 -V \'DrakX boot disk\'";
_ "$sudo mount -t romfs /dev/ram $mnt";
diff --git a/perl-install/Makefile b/perl-install/Makefile
index 7e4ebb940..3265325ce 100644
--- a/perl-install/Makefile
+++ b/perl-install/Makefile
@@ -125,6 +125,9 @@ endif
if [ -f ../modules/modules.cz* ]; then \
cp -f ../modules/modules.cz* $(DEST)/lib/; \
+ if [ -f ../modules64/modules.cz* ]; then \
+ cp -f ../modules64/modules.cz* $(DEST)/lib/modules64.cz2; \
+ fi \
else \
cp -f ../modules/modules.cpio.bz2 $(DEST)/lib/; \
install -d $(DEST)/lib/modules; \
diff --git a/perl-install/c/stuff.xs.pm b/perl-install/c/stuff.xs.pm
index 6296c7461..77c779c83 100644
--- a/perl-install/c/stuff.xs.pm
+++ b/perl-install/c/stuff.xs.pm
@@ -261,6 +261,13 @@ kernel_version()
OUTPUT:
RETVAL
+char *
+kernel_arch()
+ CODE:
+ struct utsname u;
+ if (uname(&u) == 0) RETVAL = u.machine; else RETVAL = NULL;
+ OUTPUT:
+ RETVAL
int
set_loop(dev_fd, file)
diff --git a/perl-install/common.pm b/perl-install/common.pm
index 643201b3e..0a9a29271 100644
--- a/perl-install/common.pm
+++ b/perl-install/common.pm
@@ -136,14 +136,12 @@ sub expand_symlinks {
}
sub arch() {
- require Config;
- Config->import;
- no strict;
- $Config{archname} =~ /(.*)-/ and $1;
+ require c;
+ c::kernel_arch();
}
sub better_arch {
my ($new, $old) = @_;
- while ($new && $new != $old) { $new = $compat_arch{$_} }
+ while ($new && $new ne $old) { $new = $compat_arch{$new} }
$new;
}
sub compat_arch { better_arch(arch(), $_[0]) }
diff --git a/perl-install/install_steps_gtk.pm b/perl-install/install_steps_gtk.pm
index c8e1b8859..763012057 100644
--- a/perl-install/install_steps_gtk.pm
+++ b/perl-install/install_steps_gtk.pm
@@ -83,6 +83,7 @@ sub new($$) {
} elsif (arch() =~ /^sparc/) {
local $_ = cat_("/proc/fb");
if (/Mach64/) { @servers = qw(Mach64) }
+ elsif (/Permedia2/) { @servers = qw(3DLabs) }
else { @servers = qw(Xsun24) }
}
@servers = qw(PPCDummy) if arch() eq "ppc";
@@ -946,9 +947,6 @@ Section "Screen"
EndSubsection
EndSection
-END
- if (arch() =~ /^sparc/) {
- print F <<END_FBDEV_SPARC;
Section "Screen"
Driver "svga"
Device "svga"
@@ -959,9 +957,7 @@ Section "Screen"
ViewPort 0 0
EndSubsection
EndSection
-END_FBDEV_SPARC
- } else {
- print F <<END_FBDEV;
+
Section "Screen"
Driver "accel"
Device "svga"
@@ -972,8 +968,7 @@ Section "Screen"
ViewPort 0 0
EndSubsection
EndSection
-END_FBDEV
- }
+END
}
#- ModeLine "640x480" 28 640 672 768 800 480 490 492 525
#-######################################################################################
diff --git a/perl-install/modules.pm b/perl-install/modules.pm
index 198bc118f..d4e2bcddd 100644
--- a/perl-install/modules.pm
+++ b/perl-install/modules.pm
@@ -423,7 +423,7 @@ sub unload($;$) {
sub load_raw {
my @l = map { my ($i, @i) = @$_; [ $i, \@i ] } @_;
- my $cz = "/lib/modules.cz"; -e $cz or $cz .= "2";
+ my $cz = "/lib/modules" . (arch() eq 'sparc64' && "64") . ".cz"; -e $cz or $cz .= "2";
run_program::run("extract_archive", $cz, "/tmp", map { "$_->[0].o" } @l);
my @failed = grep {
my $m = "/tmp/$_->[0].o";
diff --git a/perl-install/pkgs.pm b/perl-install/pkgs.pm
index 8db9231a9..36647a872 100644
--- a/perl-install/pkgs.pm
+++ b/perl-install/pkgs.pm
@@ -115,7 +115,7 @@ my %ignoreBadPkg = (
#- simpler and faster depslist reader, this gets (sizeDeps).
sub packageHeaderFile { my ($pkg) = @_; $pkg->{file} }
sub packageName { my ($pkg) = @_; $pkg->{file} =~ /([^\(]*)(?:\([^\)]*\))?-[^-]+-[^-]+/ ? $1 : die "invalid file `$pkg->{file}'" }
-sub packageSpecificArch { my ($pkg) = @_; $pkg->{file} =~ /[^\(]*(?:\(([^\)])*\))?-[^-]+-[^-]+/ ? $1 : die "invalid file `$pkg->{file}'" }
+sub packageSpecificArch { my ($pkg) = @_; $pkg->{file} =~ /[^\(]*(?:\(([^\)]*)\))?-[^-]+-[^-]+/ ? $1 : die "invalid file `$pkg->{file}'" }
sub packageVersion { my ($pkg) = @_; $pkg->{file} =~ /.*-([^-]+)-[^-]+/ ? $1 : die "invalid file `$pkg->{file}'" }
sub packageRelease { my ($pkg) = @_; $pkg->{file} =~ /.*-[^-]+-([^-]+)/ ? $1 : die "invalid file `$pkg->{file}'" }
@@ -181,11 +181,19 @@ sub extractHeaders($$$) {
}
#- size and correction size functions for packages.
+#- invCorrectSize corrects size in the range 0 to 3Gb approximately, so
+#- it should not be used outside these levels.
+#- but since it is an inverted parabolic curve starting above 0, we can
+#- get a solution where X=Y at approximately 9.3Gb. we use this point as
+#- a limit to change the approximation to use a linear one.
+#- for information above this point, we have the corrected size below the
+#- original size wich is absurd, this point is named D below.
my $A = -1.922e-05;
my $B = 1.18411;
my $C = 23.2; #- doesn't take hdlist's into account as getAvailableSpace will do it.
-sub correctSize { max($_[0], ($A * $_[0] + $B) * $_[0] + $C) } #- size correction in MB.
-sub invCorrectSize { min($_[0], (sqrt(max(sqr($B) + 4 * $A * ($_[0] - $C), 0)) - $B) / 2 / $A) } #- size correction in MB.
+my $D = (sqrt(sqr($B - 1) - 4 * $A * $C) - ($B - 1)) / 2 / $A;
+sub correctSize { $_[0] < $D ? ($A * $_[0] + $B) * $_[0] + $C : $_[0] } #- size correction in MB.
+sub invCorrectSize { $_[0] < $D ? (sqrt(sqr($B) + 4 * $A * ($_[0] - $C)) - $B) / 2 / $A : $_[0]; } #- size correction in MB.
sub selectedSize {
my ($packages) = @_;
@@ -426,7 +434,7 @@ sub psUsingHdlist {
if ($old_pkg) {
if (packageVersion($pkg) eq packageVersion($old_pkg) && packageRelease($pkg) eq packageRelease($old_pkg)) {
if (better_arch($specific_arch, packageSpecificArch($old_pkg))) {
- log::l("replacing old package with package $1 with better arch");
+ log::l("replacing old package with package $1 with better arch: $specific_arch");
$packages->[0]{packageName($pkg)} = $pkg;
} else {
log::l("keeping old package against package $1 with worse arch");
@@ -438,7 +446,7 @@ sub psUsingHdlist {
$packages->[0]{packageName($pkg)} = $pkg;
}
} else {
- log::l("ignoring package $1 with incompatible arch");
+ log::l("ignoring package $1 with incompatible arch: $specific_arch");
}
} else {
die "bad hdlist file: $newf";
diff --git a/perl-install/share/list.sparc b/perl-install/share/list.sparc
index efe38ea7a..dca2dd4a9 100644
--- a/perl-install/share/list.sparc
+++ b/perl-install/share/list.sparc
@@ -78,4 +78,5 @@
/usr/lib/rpm/rpmrc
/usr/X11R6/bin/Xsun24
/usr/X11R6/bin/XF86_Mach64
+/usr/X11R6/bin/XF86_3DLabs
/usr/X11R6/bin/xmodmap
diff --git a/tools/Makefile b/tools/Makefile
index 20a9192f3..469758906 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -15,7 +15,7 @@ $(DIRS):
install:
install make_mdkinst_stage2 gencompss $(ROOTDEST)/misc
cd /usr/bin ; install build_archive $(ROOTDEST)/misc || { echo "build_archive is missing"; exit 1; }
- cd /usr/bin ; install mkhdlist gendepslist2 rpm2header genhdlist_cz2 $(ROOTDEST)/misc || { echo "install rpmtools first!" ; exit 1; }
+ cd /usr/bin ; install gendepslist2 rpm2header genhdlist_cz2 $(ROOTDEST)/misc || { echo "install rpmtools first!" ; exit 1; }
mkdir -p $(DEST)/usr/bin
xhost+: %: %.c