integrate-distro.sh: Make it work for openSuSE i586@x86_64

Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
Jan Lindemann 2013-08-12 13:44:46 +00:00
commit 518c7ec98d

View file

@ -7,44 +7,9 @@ suse_version=12.3
o_name=suse-$suse_version
cmd=install
cwd=`pwd`
initrd_modules="
via-rhine
r8169
e1000
e1000e
b44
myri10ge
forcedeth
8139too
sata_nv
nfs
nfs_acl
auth_rpcgss
nfsv3
nfsv4
fscache
lockd
sunrpc
sis
edd
sisfb
evdev
shpchp
sis_agp
hwmon
aufs
ahci
libahci
usbhid
hid
uhci_hcd
ohci_hcd
ehci_hcd
usbcore
hid-generic
"
ssh_auth_sock=/tmp/agent-host.sock
env_ssh_auth_sock=$SSH_AUTH_SOCK
initrd_modules=" via-rhine r8169 e1000 e1000e b44 myri10ge forcedeth 8139too sata_nv nfs nfs_acl auth_rpcgss nfsv3 nfsv4 fscache lockd sunrpc sis edd sisfb evdev shpchp sis_agp hwmon aufs ahci libahci usbhid hid uhci_hcd ohci_hcd ehci_hcd usbcore hid-generic"
kernel_flavour=-desktop
@ -116,6 +81,9 @@ case $suse_version in
kernel_version=3.9.9-jng20-1.1$kernel_flavour
rpm_kernel_version=3.9.9~jng20-1.1
kernel_version=3.7.10-jng12$kernel_flavour
rpm_kernel_version=3.7.10~jng12-1
;;
esac
@ -265,7 +233,7 @@ usage()
get_opts()
{
set -- `getopt 'hd:n:a:p:k:u:w:' $*`
set -- `getopt 'hd:n:a:p:k:u:w:s:' $*`
while [ "$1" != -- ] ; do
case "$1" in
-h)
@ -299,6 +267,10 @@ get_opts()
cwd=$2
shift
;;
-s)
env_ssh_auth_sock=$2
shift
;;
*)
usage 1
;;
@ -377,8 +349,11 @@ _run_chroot()
run_chroot()
{
echo == running LANG=POSIX chroot $root "$@"
LANG=POSIX chroot $root "$@" || {
local cmd="LANG=POSIX SSH_AUTH_SOCK=$ssh_auth_sock chroot $root"
echo == running $cmd "$@"
#eval $cmd "$@" || {
#LANG=POSIX SSH_AUTH_SOCK=$ssh_auth_sock chroot $root "$@" || {
LANG=POSIX SSH_AUTH_SOCK=$ssh_auth_sock chroot $root "$@" || {
die "failed to run >$@<, exiting"
}
}
@ -387,7 +362,7 @@ run_hook()
{
hook="$1"
local cmd="${hooks[$hook]}"
[ "$cmd" ] || return
[ "$cmd" ] || return 0
(
cd $cwd
echo "== running hook $hook ($cmd)"
@ -406,6 +381,7 @@ create_partition_table()
{
assert_not_mounted
# FIXME mkpart primary 40G 100% doesn't work on nbd
_cat << EOT | run_parted
|mklabel gpt
|mkpart primary 1M 2M
@ -415,7 +391,7 @@ create_partition_table()
|name 2 boot
|mkpart primary 10G 40G
|name 3 swap
|mkpart primary 40G 100%
|mkpart primary 40G 100G
|name 4 root
EOT
@ -437,10 +413,13 @@ canonicalize()
check_mount()
{
local canonicalized=`canonicalize $root/$1`
local canonicalized=`realpath $root/$1 2>/dev/null`
[ ! "$canonicalized" ] && return 1
grep -q " $canonicalized " /proc/mounts || return 1
return 0
grep -q " $canonicalized " /proc/mounts && return 0
canonicalized=`canonicalize $root/$1`
[ ! "$canonicalized" ] && return 1
grep -q " $canonicalized " /proc/mounts && return 0
return 1
}
assert_not_mounted()
@ -460,6 +439,14 @@ setup_bind_mounts()
run -e mount -o bind $fs $root$fs
}
done
if [ "$env_ssh_auth_sock" ]; then
check_mount $ssh_auth_sock || {
echo "creating >$ssh_auth_sock<"
run -e mkdir -p `dirname $root/$ssh_auth_sock`
run -e touch $root/$ssh_auth_sock
run -e mount --bind $env_ssh_auth_sock $root/$ssh_auth_sock
}
fi
}
mount_devices()
@ -477,12 +464,13 @@ mount_devices()
unmount_devices()
{
local devices="/proc /sys /dev /boot /"
local devices="$ssh_auth_sock /proc /sys /dev /boot /"
[ "$1" ] && devices="$@"
local d
for d in $devices; do
check_mount $d && run umount $root$d
done
rm -f $ssh_auth_sock
}
zypper_repos_base()
@ -536,7 +524,7 @@ host_zypper()
local repos="$1"
shift
local distros=`zypper_repos $repos | awk '{print "--plus-repo " $2 }'`
zypper $zypper_global_opts --root $root $distros $@
run -e zypper $zypper_global_opts --root $root $distros $@
}
init_root_password_file()
@ -806,7 +794,6 @@ setup_boot_loader_net()
undo_rpmnew()
{
set +x
local n o
# reset config files to rpm versions
find $root -name '*.rpmnew' | while read n; do
@ -814,7 +801,6 @@ undo_rpmnew()
log renaming $n to $o
mv $n $o
done
set -x
}
setup_root_directory()
@ -909,7 +895,7 @@ set_sysconf_value()
cmd_install()
{
if true; then
if false; then
local c
set -e
@ -954,7 +940,6 @@ cmd_install()
chroot $root zypper $zypper_global_opts install --auto-agree-with-licenses $payload_pkgs
echo "=== installing payload packages <"
fi # test
run setup_zypper_repos special
run chroot $root zypper $zypper_global_opts install --auto-agree-with-licenses $special_pkgs
@ -970,12 +955,8 @@ cmd_install()
run_hook pkg-installed
export CVSROOT=:ext:$scm_user@cvs.jannet.de:/home/jannet/arc/cvs
if [ "$SSH_AUTH_SOCK" ]; then
mkdir -m 700 -p `dirname $root/$SSH_AUTH_SOCK`
ln $SSH_AUTH_SOCK $root/$SSH_AUTH_SOCK
fi
echo "=== running jcs fetch"
chroot $root jcs fetch
run_chroot jcs fetch
reset_host_files
echo "=== running jcs setup"
chroot $root jcs setup
@ -984,6 +965,7 @@ cmd_install()
# FIXME: this does not work off a netboot distro
slapcat | chroot $root /usr/sbin/slapadd -qw
fi # test
[ "$install_dev" ] && setup_boot_loader_local
setup_boot_loader_net
(cd $root/boot; ln -sf vmlinuz-$kernel_version vmlinuz)
@ -1006,8 +988,6 @@ cmd_install()
install -m 777 -d $root/srv/nfs/var/cores
install -m 777 -d $root/var/cores
rm -f $root/$SSH_AUTH_SOCK
unmount_devices
[ -w "$install_dev" ] || {
install -d -m 755 $root/../rw
@ -1052,7 +1032,8 @@ if [ `whoami` != root -o "$l32" ]; then
# preferring "ssh -l root localhost" over "sudo" to keep ssh-agent environment
#sudo -i $exe $@ -p $root_password_file
ssh -l root localhost $l32 $exe $@ -p $root_password_file -u $scm_user -w $cwd
[ "$env_ssh_auth_sock" ] && opt_ssh_auth_sock="-s $env_ssh_auth_sock"
ssh -l root localhost $l32 $exe $@ -p $root_password_file -u $scm_user -w $cwd $opt_ssh_auth_sock
exit $?
fi
@ -1066,9 +1047,14 @@ root=/srv/nfs/boot/distros/$name/ro
if [ "$install_dev" ]; then
install_dev_boot=$install_dev""2
install_dev_swap=$install_dev""3
install_dev_root=$install_dev""4
case $install_dev in
/dev/sd*) part_sep="";;
/dev/nbd*) part_sep="p";;
esac
install_dev_boot=$install_dev$part_sep""2
install_dev_swap=$install_dev$part_sep""3
install_dev_root=$install_dev$part_sep""4
case $install_dev in
/dev/sda) install_grub_dev_num=0;;
@ -1076,8 +1062,10 @@ if [ "$install_dev" ]; then
/dev/sdc) install_grub_dev_num=2;;
/dev/sdd) install_grub_dev_num=3;;
/dev/sde) install_grub_dev_num=4;;
/dev/nbd*)
install_grub_dev_num=${d/\/dev\/nbd/};;
*)
log "device \"$install_dev\" doesn't map into a known grub device number, edit $myname to add support"
log "device \"$install_dev\" can't be mapped onto a grub device number, edit $myname to add support"
exit 1;;
esac