Patch title: Release 93 bulk changes
Abstract:
File: /fullpliant/kernel.pli
Key:
    Removed line
    Added line
   
abstract
  [This module will install, patch, and compile the Linux ke


function kernel_install c -> status
  arg Data:Computer c ; arg ExtendedStatus status
  var Str linux_version := c:env:"kernel":"constant":"linux_
  if not (linux_version parse (var Int v1) "." (var Int v2) 
    return (failure "Incorrect kernel version ("+linux_versi
  var Str pcmcia_version := c:env:"kernel":"constant":"pcmci
  var Str alsa_version := shunt v1=2 and v2=4 c:env:"kernel"
abstract
  [This module will install, patch, and compile the Linux ke


function kernel_install c -> status
  arg Data:Computer c ; arg ExtendedStatus status
  var Str linux_version := c:env:"kernel":"constant":"linux_
  if not (linux_version parse (var Int v1) "." (var Int v2) 
    return (failure "Incorrect kernel version ("+linux_versi
  var Str pcmcia_version := c:env:"kernel":"constant":"pcmci
  var Str alsa_version := shunt v1=2 and v2=4 c:env:"kernel"
  var Str fuse_version := c:env:"kernel":"constant":"fuse_version"
  var Int base := 0
  var Int final := v3
  var Int maxi := 0 ; var Str v := ""
  var Array:FileInfo files := file_list kernel_source_path s
  for (var Int i) 0 files:size-1
    if (files:i:name parse "linux-" (var Int vi1) "." (var I
      if vi1=v1 and vi2=v2 and (vi3>base and vi3<=v3)
        base := vi3
  part check_for_same
    (var Stream sign) open "embedded:/usr/src/linux/.pliant"
    var Str s := ""
    while not sign:atend
      s += sign:readline+"[lf]"
    sign close
    if s=(kernel_signature c false)
      return success
  console "  installing Linux kernel " linux_version " sourc
  status := success
  if (file_query "embedded:/usr/src/linux-"+linux_version+"/
    console "    removing old kernel source" eol
    file_tree_delete "embedded:/usr/src/linux-"+linux_versio
  console "    unpacking linux-"+string:v1+"."+string:v2+"."
  file_delete "embedded:/usr/src/linux"
  file_tree_delete "embedded:/usr/src/linux/"
  file_tree_delete "embedded:/usr/src/linux-"+string:v1+"."+
  if (file_extract kernel_source_path+"linux-"+string:v1+"."
    return failure:"Failed to extract Linux source"
  file_link "linux-"+string:v1+"."+string:v2+"."+string:base
  if pcmcia_version<>""
    if (file_query "embedded:/usr/src/pcmcia-cs-"+pcmcia_ver
      console "    removing old pcmcia source" eol
      file_tree_delete "embedded:/usr/src/pcmcia-cs-"+pcmcia
    file_delete "embedded:/usr/src/pcmcia-cs" ; file_tree_de
    var Str pcmcia_tar := "pcmcia-cs-"+pcmcia_version+".tar.
    console "    unpacking "+pcmcia_tar eol
    if (file_extract kernel_source_path+pcmcia_tar "embedded
      return failure:"Failed to extract PCMCIA source"
    file_link "pcmcia-cs-"+pcmcia_version+"/" "embedded:/usr
  if alsa_version<>""
    if (file_query "embedded:/usr/src/alsa-driver-"+alsa_ver
      console "    removing old ALSA source" eol
      file_tree_delete "embedded:/usr/src/alsa-driver-"+alsa
    var Str alsa_tar := "alsa-driver-"+alsa_version+".tar.bz
    console "    unpacking "+alsa_tar eol
    if (file_extract kernel_source_path+alsa_tar "embedded:/
      return failure:"Failed to extract ALSA source"
  for i base+1 final
    console "    applying patch-"+string:v1+"."+string:v2+".
    # file_tree_delete "embedded:/usr/src/linux-"+string:v1+
    file_tree_delete "os_file:"+(file_os_name "embedded:/usr
    each patch c:env:"patch"
      if patch:"file"="patch-"+string:v1+"."+string:v2+"."+s
        each f patch
          if (keyof:f parse "ignore" any)
            console "    ignoring " f eol
            file_copy "embedded:/usr/src/linux/"+f "embedded
    if v1>2 or (v1>=2 and v2>=6)
      file_link "linux-"+string:v1+"."+string:v2+"."+(string
      file_link "linux-"+string:v1+"."+string:v2+"."+(string
    apply_patch kernel_source_path+"patch-"+string:v1+"."+st
    if v1>2 or (v1>=2 and v2>=6)
      file_delete "embedded:/usr/src/a/"
      file_delete "embedded:/usr/src/b/"
    each patch c:env:"patch"
      if patch:"file"="patch-"+string:v1+"."+string:v2+"."+s
        each f patch
          if (keyof:f parse "ignore" any)
            file_copy "embedded:/usr/src/linux/"+f+".origina
            file_delete "embedded:/usr/src/linux/"+f+".origi
    file_move "embedded:/usr/src/linux-"+string:v1+"."+strin
    file_delete "embedded:/usr/src/linux"
    file_link "linux-"+string:v1+"."+string:v2+"."+string:i+
  each patch c:env:"patch"
    each f patch
      if (keyof:f parse "alias" any)
        file_link "linux-"+string:v1+"."+string:v2+"."+strin
    each f patch
      if (keyof:f parse "ignore" any)
        file_copy "embedded:/usr/src/linux/"+f "embedded:/us
    var Str file := patch "file"
    var Str options := shunt patch:"fuzzy"="true" " -N -F 10
    console "    applying "+file eol
    var Str cmd := ""
    if (file search ".gz" -1)<>(-1)
      apply_patch kernel_source_path+file "gzip -d" "patch -
    eif (file search ".bz2" -1)<>(-1)
      apply_patch kernel_source_path+file "bzip2 -d" "patch 
    else
      apply_patch kernel_source_path+file "cat" "patch -p0 -
    each f patch
      if (keyof:f parse "ignore" any)
        file_copy "embedded:/usr/src/linux/"+f+".original" "
        file_delete "embedded:/usr/src/linux/"+f+".original"
    each f patch
      if (keyof:f parse "alias" any)
        file_delete "embedded:/usr/src/"+f+"/"
  var Int base := 0
  var Int final := v3
  var Int maxi := 0 ; var Str v := ""
  var Array:FileInfo files := file_list kernel_source_path s
  for (var Int i) 0 files:size-1
    if (files:i:name parse "linux-" (var Int vi1) "." (var I
      if vi1=v1 and vi2=v2 and (vi3>base and vi3<=v3)
        base := vi3
  part check_for_same
    (var Stream sign) open "embedded:/usr/src/linux/.pliant"
    var Str s := ""
    while not sign:atend
      s += sign:readline+"[lf]"
    sign close
    if s=(kernel_signature c false)
      return success
  console "  installing Linux kernel " linux_version " sourc
  status := success
  if (file_query "embedded:/usr/src/linux-"+linux_version+"/
    console "    removing old kernel source" eol
    file_tree_delete "embedded:/usr/src/linux-"+linux_versio
  console "    unpacking linux-"+string:v1+"."+string:v2+"."
  file_delete "embedded:/usr/src/linux"
  file_tree_delete "embedded:/usr/src/linux/"
  file_tree_delete "embedded:/usr/src/linux-"+string:v1+"."+
  if (file_extract kernel_source_path+"linux-"+string:v1+"."
    return failure:"Failed to extract Linux source"
  file_link "linux-"+string:v1+"."+string:v2+"."+string:base
  if pcmcia_version<>""
    if (file_query "embedded:/usr/src/pcmcia-cs-"+pcmcia_ver
      console "    removing old pcmcia source" eol
      file_tree_delete "embedded:/usr/src/pcmcia-cs-"+pcmcia
    file_delete "embedded:/usr/src/pcmcia-cs" ; file_tree_de
    var Str pcmcia_tar := "pcmcia-cs-"+pcmcia_version+".tar.
    console "    unpacking "+pcmcia_tar eol
    if (file_extract kernel_source_path+pcmcia_tar "embedded
      return failure:"Failed to extract PCMCIA source"
    file_link "pcmcia-cs-"+pcmcia_version+"/" "embedded:/usr
  if alsa_version<>""
    if (file_query "embedded:/usr/src/alsa-driver-"+alsa_ver
      console "    removing old ALSA source" eol
      file_tree_delete "embedded:/usr/src/alsa-driver-"+alsa
    var Str alsa_tar := "alsa-driver-"+alsa_version+".tar.bz
    console "    unpacking "+alsa_tar eol
    if (file_extract kernel_source_path+alsa_tar "embedded:/
      return failure:"Failed to extract ALSA source"
  for i base+1 final
    console "    applying patch-"+string:v1+"."+string:v2+".
    # file_tree_delete "embedded:/usr/src/linux-"+string:v1+
    file_tree_delete "os_file:"+(file_os_name "embedded:/usr
    each patch c:env:"patch"
      if patch:"file"="patch-"+string:v1+"."+string:v2+"."+s
        each f patch
          if (keyof:f parse "ignore" any)
            console "    ignoring " f eol
            file_copy "embedded:/usr/src/linux/"+f "embedded
    if v1>2 or (v1>=2 and v2>=6)
      file_link "linux-"+string:v1+"."+string:v2+"."+(string
      file_link "linux-"+string:v1+"."+string:v2+"."+(string
    apply_patch kernel_source_path+"patch-"+string:v1+"."+st
    if v1>2 or (v1>=2 and v2>=6)
      file_delete "embedded:/usr/src/a/"
      file_delete "embedded:/usr/src/b/"
    each patch c:env:"patch"
      if patch:"file"="patch-"+string:v1+"."+string:v2+"."+s
        each f patch
          if (keyof:f parse "ignore" any)
            file_copy "embedded:/usr/src/linux/"+f+".origina
            file_delete "embedded:/usr/src/linux/"+f+".origi
    file_move "embedded:/usr/src/linux-"+string:v1+"."+strin
    file_delete "embedded:/usr/src/linux"
    file_link "linux-"+string:v1+"."+string:v2+"."+string:i+
  each patch c:env:"patch"
    each f patch
      if (keyof:f parse "alias" any)
        file_link "linux-"+string:v1+"."+string:v2+"."+strin
    each f patch
      if (keyof:f parse "ignore" any)
        file_copy "embedded:/usr/src/linux/"+f "embedded:/us
    var Str file := patch "file"
    var Str options := shunt patch:"fuzzy"="true" " -N -F 10
    console "    applying "+file eol
    var Str cmd := ""
    if (file search ".gz" -1)<>(-1)
      apply_patch kernel_source_path+file "gzip -d" "patch -
    eif (file search ".bz2" -1)<>(-1)
      apply_patch kernel_source_path+file "bzip2 -d" "patch 
    else
      apply_patch kernel_source_path+file "cat" "patch -p0 -
    each f patch
      if (keyof:f parse "ignore" any)
        file_copy "embedded:/usr/src/linux/"+f+".original" "
        file_delete "embedded:/usr/src/linux/"+f+".original"
    each f patch
      if (keyof:f parse "alias" any)
        file_delete "embedded:/usr/src/"+f+"/"
  if fuse_version<>""
    file_extract "file:/fullpliant/kernel/src/fuse-"+fuse_version+".tar.gz" "embedded:/usr/src/"
  if v1=2 and v2=2 and computer_fullname="hubert.heliogroup.
    # dirty hack for my HP XU 5/90C SMP systems
    (var AsciiFile apic) load "embedded:/usr/src/linux/arch/
    apic set "static inline int" "irq_polarity" "static inli
    apic set "static inline int" "irq_trigger" "static inlin
    apic store
  if true # no console blanking
    (var AsciiFile console) load "embedded:/usr/src/linux/dr
    console set "static void" "timer_do_blank_screen" "stati
    console store
  if status=success
    (var Stream sign) open "embedded:/usr/src/linux/.pliant"
    sign writechars (kernel_signature c false)
  else
    file_delete "embedded:/usr/src/linux/.pliant"



function write_kernel_configuration c
  arg_rw Data:Computer c
  (var AsciiFile makefile) load "embedded:/usr/src/linux/Mak
  makefile set "EXTRAVERSION" "=" "EXTRAVERSION ="
  if c:env:"kernel":"make":"CONFIG_SMP"="y"
    makefile fuzzy_set "SMP" "=" "SMP = 1"
  else
    makefile fuzzy_set "SMP" "=" "# SMP = 1"
  if v1=2 and v2=2 and computer_fullname="hubert.heliogroup.
    # dirty hack for my HP XU 5/90C SMP systems
    (var AsciiFile apic) load "embedded:/usr/src/linux/arch/
    apic set "static inline int" "irq_polarity" "static inli
    apic set "static inline int" "irq_trigger" "static inlin
    apic store
  if true # no console blanking
    (var AsciiFile console) load "embedded:/usr/src/linux/dr
    console set "static void" "timer_do_blank_screen" "stati
    console store
  if status=success
    (var Stream sign) open "embedded:/usr/src/linux/.pliant"
    sign writechars (kernel_signature c false)
  else
    file_delete "embedded:/usr/src/linux/.pliant"



function write_kernel_configuration c
  arg_rw Data:Computer c
  (var AsciiFile makefile) load "embedded:/usr/src/linux/Mak
  makefile set "EXTRAVERSION" "=" "EXTRAVERSION ="
  if c:env:"kernel":"make":"CONFIG_SMP"="y"
    makefile fuzzy_set "SMP" "=" "SMP = 1"
  else
    makefile fuzzy_set "SMP" "=" "# SMP = 1"
  if c:env:"kernel":"constant":"architecture"<>""
    makefile set "ARCH" "?=" "ARCH ?= "+c:env:"kernel":"constant":"architecture"
  if c:env:"kernel":"constant":"gcc"<>""
    makefile set "HOSTCC" "=" "HOSTCC = "+c:env:"kernel":"co
    makefile set "CC" "=" "CC = $(CROSS_COMPILE)"+c:env:"ker
  if c:env:"kernel":"constant":"gcc"<>""
    makefile set "HOSTCC" "=" "HOSTCC = "+c:env:"kernel":"co
    makefile set "CC" "=" "CC = $(CROSS_COMPILE)"+c:env:"ker
  if c:env:"kernel":"constant":"gccflags"<>""
    makefile set "CFLAGS" ":=" "CFLAGS := "+c:env:"kernel":"constant":"gccflags"+" -Wall -Wstrict-prototypes -Wno-trigraphs \"
    makefile set "AFLAGS" ":=" "AFLAGS := "+c:env:"kernel":"constant":"gccflags"+" -D__ASSEMBLY__"
  makefile store
  var Str port := c:env:"kernel":"constant":"de620/io_port"
  if port=""
    port := "0x378"
  # 0x3BC for Thinkpad 750
  (var AsciiFile de620) load "embedded:/usr/src/linux/driver
  de620 set "#define" "DE620_IO" "#define DE620_IO "+port
  de620 store
  (var Stream conf) open "embedded:/usr/src/linux/.config" o
  conf writeline "# This file has been automatically generat
  conf writeline "# module /pliant/linux/kernel/build.pli"
  makefile store
  var Str port := c:env:"kernel":"constant":"de620/io_port"
  if port=""
    port := "0x378"
  # 0x3BC for Thinkpad 750
  (var AsciiFile de620) load "embedded:/usr/src/linux/driver
  de620 set "#define" "DE620_IO" "#define DE620_IO "+port
  de620 store
  (var Stream conf) open "embedded:/usr/src/linux/.config" o
  conf writeline "# This file has been automatically generat
  conf writeline "# module /pliant/linux/kernel/build.pli"
  conf writeline "# (Pliant is available at http://pliant.cx
  conf writeline "# (Pliant is available at http://fullpliant.org/)"
  conf writeline "#"
  conf writeline "# Pliant extra informations:"
  (var Stream version) open "embedded:/usr/src/linux/.pliant
  while not version:atend
    conf writeline "#   "+version:readline
  conf writeline "#"
  conf writeline "# Linux kernel standard informations:"
  conf writeline "#"
  conf writeline "# Pliant extra informations:"
  (var Stream version) open "embedded:/usr/src/linux/.pliant
  while not version:atend
    conf writeline "#   "+version:readline
  conf writeline "#"
  conf writeline "# Linux kernel standard informations:"
  var CBool has_modules := c:env:"kernel":"make":"CONFIG_MODULES"="y"
  each k c:env:"kernel":"make"
  each k c:env:"kernel":"make"
    if k<>"n"
    if k="m" and not has_modules
      conf writeline keyof:k+"=y"
    eif k<>"n"
      conf writeline keyof:k+"="+k
    else
      conf writeline "# "+keyof:k+" is not set"
  set_implicit_kernel_settings c conf
  conf close
  (var AsciiFile f) load "embedded:/usr/src/linux/include/ne
  f set "#define" "PROT_SOCK" "#define PROT_SOCK 0"
  f store



function kernel_compile c -> status
  arg_rw Data:Computer c ; arg ExtendedStatus status
  (var AsciiFile makefile) load "embedded:/usr/src/linux/Mak
  var Str computer_name := c:env:"pliant":"identity":"name"
  var Str kernel_version := c:env:"kernel":"constant":"linux
  var Str extra_version := makefile get "EXTRAVERSION" "="
  var Str pcmcia_version := c:env:"kernel":"constant":"pcmci
  kernel_version parse (var Int v1) "." (var Int v2)  "." (v
  var Str alsa_version := shunt v1=2 and v2=4 c:env:"kernel"
      conf writeline keyof:k+"="+k
    else
      conf writeline "# "+keyof:k+" is not set"
  set_implicit_kernel_settings c conf
  conf close
  (var AsciiFile f) load "embedded:/usr/src/linux/include/ne
  f set "#define" "PROT_SOCK" "#define PROT_SOCK 0"
  f store



function kernel_compile c -> status
  arg_rw Data:Computer c ; arg ExtendedStatus status
  (var AsciiFile makefile) load "embedded:/usr/src/linux/Mak
  var Str computer_name := c:env:"pliant":"identity":"name"
  var Str kernel_version := c:env:"kernel":"constant":"linux
  var Str extra_version := makefile get "EXTRAVERSION" "="
  var Str pcmcia_version := c:env:"kernel":"constant":"pcmci
  kernel_version parse (var Int v1) "." (var Int v2)  "." (v
  var Str alsa_version := shunt v1=2 and v2=4 c:env:"kernel"
  var Str fuse_version := c:env:"kernel":"constant":"fuse_version"
  status := kernel_install c
  if status=failure
    return
  var Str sign := string_md5_hexa_signature:(kernel_signatur
  if (file_query kernel_binary_path+"kernel-"+kernel_version
    return success
  console "  configuring the kernel" eol
  write_kernel_configuration c
  var Str temp := file_temporary
  (var Stream s) open temp out
  for (var Int i) 1 4096
    s writeline ""
  s close
  command "make oldconfig" "linux/" temp
  file_delete temp
  var Str kernel_image := shunt v1>2 or v2>=2 "bzImage" "zIm
  status := kernel_install c
  if status=failure
    return
  var Str sign := string_md5_hexa_signature:(kernel_signatur
  if (file_query kernel_binary_path+"kernel-"+kernel_version
    return success
  console "  configuring the kernel" eol
  write_kernel_configuration c
  var Str temp := file_temporary
  (var Stream s) open temp out
  for (var Int i) 1 4096
    s writeline ""
  s close
  command "make oldconfig" "linux/" temp
  file_delete temp
  var Str kernel_image := shunt v1>2 or v2>=2 "bzImage" "zIm
  var CBool modules := true
  var CBool modules := c:env:"kernel":"make":"CONFIG_MODULES"="y"
  file_tree_delete "embedded:/tmp/kernel/" ; file_tree_creat
  if true # build the kernel
    command "make dep" "linux/"
    command "make clean" "linux/"
    console "  compiling the kernel (be patient)" eol
    if (command "make "+kernel_image "linux/")<>0
      return (failure "Failed to build kernel for computer "
  if modules # build the modules
    console "  compiling the modules (be patient)" eol
    (var AsciiFile makefile) load "embedded:/usr/src/linux/M
    makefile fuzzy_set "INSTALL_MOD_PATH" "" "INSTALL_MOD_PA
    makefile store
    if (command "make modules" "linux/")<>0
      return (failure "Failed to build kernel modules for co
    command "make modules_install" "linux/"
    var Str mpath := "embedded:/tmp/kernel/lib/modules/"+str
    file_delete mpath+"build"
    if false
      file_tree_copy mpath+"kernel/drivers/" mpath ; file_tr
      file_tree_copy mpath+"kernel/" mpath ; file_tree_delet
  if modules and c:env:"kernel":"make":"CONFIG_PCMCIA"="y" a
    console "  compiling PCMCIA support (be patient)" eol
    (var AsciiFile config_in) load "embedded:/usr/src/pcmcia
    config_in set "RC_DIR" "=" "RC_DIR=/etc"
    config_in set "SYSV_INIT" "=" "SYSV_INIT=y"
    config_in store
    file_delete "embedded:/usr/src/pcmcia-cs/config.out"
    var Str params := " --noprompt"
    params += " --kernel=/usr/src/linux"
    params += " --target=/tmp/kernel"
    params += " --moddir=/lib/modules/"+string:v1+"."+string
    params += " --cc=gcc"
    params += " --ld=ld"
    params += " --debug=[dq][dq]"
    params += " --trust"
    params += shunt c:env:"kernel":"make":"CONFIG_CARDBUS"="
    params += " --srctree"
    command "Configure"+params "pcmcia-cs/"
    if (command "make all" "pcmcia-cs/")<>0
      return (failure "Failed to build pcmcia support for co
    command "make install" "pcmcia-cs/"
  if modules and alsa_version<>"" # build ALSA sound support
    console "  compiling ALSA sound support (be patient)" eo
    command "configure" "alsa-driver-"+alsa_version+"/"
    command "make" "alsa-driver-"+alsa_version+"/"
    (var AsciiFile mk_conf) load "embedded:/usr/src/alsa-dri
    mk_conf set "moddir" "=" "moddir = /tmp/kernel/lib/modul
    mk_conf store
    command "make install" "alsa-driver-"+alsa_version+"/"
  file_tree_delete "embedded:/tmp/kernel/" ; file_tree_creat
  if true # build the kernel
    command "make dep" "linux/"
    command "make clean" "linux/"
    console "  compiling the kernel (be patient)" eol
    if (command "make "+kernel_image "linux/")<>0
      return (failure "Failed to build kernel for computer "
  if modules # build the modules
    console "  compiling the modules (be patient)" eol
    (var AsciiFile makefile) load "embedded:/usr/src/linux/M
    makefile fuzzy_set "INSTALL_MOD_PATH" "" "INSTALL_MOD_PA
    makefile store
    if (command "make modules" "linux/")<>0
      return (failure "Failed to build kernel modules for co
    command "make modules_install" "linux/"
    var Str mpath := "embedded:/tmp/kernel/lib/modules/"+str
    file_delete mpath+"build"
    if false
      file_tree_copy mpath+"kernel/drivers/" mpath ; file_tr
      file_tree_copy mpath+"kernel/" mpath ; file_tree_delet
  if modules and c:env:"kernel":"make":"CONFIG_PCMCIA"="y" a
    console "  compiling PCMCIA support (be patient)" eol
    (var AsciiFile config_in) load "embedded:/usr/src/pcmcia
    config_in set "RC_DIR" "=" "RC_DIR=/etc"
    config_in set "SYSV_INIT" "=" "SYSV_INIT=y"
    config_in store
    file_delete "embedded:/usr/src/pcmcia-cs/config.out"
    var Str params := " --noprompt"
    params += " --kernel=/usr/src/linux"
    params += " --target=/tmp/kernel"
    params += " --moddir=/lib/modules/"+string:v1+"."+string
    params += " --cc=gcc"
    params += " --ld=ld"
    params += " --debug=[dq][dq]"
    params += " --trust"
    params += shunt c:env:"kernel":"make":"CONFIG_CARDBUS"="
    params += " --srctree"
    command "Configure"+params "pcmcia-cs/"
    if (command "make all" "pcmcia-cs/")<>0
      return (failure "Failed to build pcmcia support for co
    command "make install" "pcmcia-cs/"
  if modules and alsa_version<>"" # build ALSA sound support
    console "  compiling ALSA sound support (be patient)" eo
    command "configure" "alsa-driver-"+alsa_version+"/"
    command "make" "alsa-driver-"+alsa_version+"/"
    (var AsciiFile mk_conf) load "embedded:/usr/src/alsa-dri
    mk_conf set "moddir" "=" "moddir = /tmp/kernel/lib/modul
    mk_conf store
    command "make install" "alsa-driver-"+alsa_version+"/"
  if modules and fuse_version<>"" # build FUSE filesystem support
    console "  compiling FUSE support" eol
    command "configure --with-kernel=/usr/src/linux" "fuse-"+fuse_version+"/"
    command "make clean" "fuse-"+fuse_version+"/"
    command "make" "fuse-"+fuse_version+"/"
    file_copy "embedded:/usr/src/fuse-"+fuse_version+"/kernel/fuse.ko" "embedded:/tmp/kernel/lib/modules/"+string:v1+"."+string:v2+"."+string:v3+"/kernel/fs/fuse/fuse.ko"
  if modules and (file_query kernel_source_path+"vmmon.tar" 
    console "  compiling VMWare modules" eol
    file_tree_delete "embedded:/usr/src/vmmon-only/"
    file_extract kernel_source_path+"vmmon.tar" "embedded:/u
    (var AsciiFile f) load "embedded:/usr/src/vmmon-only/Mak
    if c:env:"kernel":"make":"CONFIG_SMP"="y"
      f fuzzy_set "SUPPORT_SMP" "=" "SUPPORT_SMP=1"
    f set "DESTDIR" "=" "DESTDIR = driver"
    f set_all "DRIVERNAME" "=" "DRIVERNAME = vmmon.o"
    f store
    command "make" "vmmon-only/"
    file_copy "embedded:/usr/src/vmmon-only/driver/vmmon.o" 
  if modules and (file_query kernel_source_path+"vmnet.tar" 
    file_tree_delete "embedded:/usr/src/vmnet-only/"
    file_extract kernel_source_path+"vmnet.tar" "embedded:/u
    f load "embedded:/usr/src/vmnet-only/Makefile"
    if c:env:"kernel":"make":"CONFIG_SMP"="y"
      f fuzzy_set "SUPPORT_SMP" "=" "SUPPORT_SMP=1"
    f set_all "DRIVERNAME" "=" "DRIVERNAME = vmnet.o"
    f store
    command "make" "vmnet-only/"
    file_copy "embedded:/usr/src/vmnet-only/vmnet.o" "embedd
  if modules and (file_query kernel_source_path+"vmppuser.ta
    file_tree_delete "embedded:/usr/src/vmppuser-only/"
    file_extract kernel_source_path+"vmppuser.tar" "embedded
    f load "embedded:/usr/src/vmppuser-only/Makefile"
    if c:env:"kernel":"make":"CONFIG_SMP"="y"
      f fuzzy_set "SUPPORT_SMP" "=" "SUPPORT_SMP=1"
    f set_all "DRIVERNAME" "=" "DRIVERNAME = vmppuser.o"
    f store
    command "make" "vmppuser-only/"
    file_copy "embedded:/usr/src/vmppuser-only/vmppuser.o" "
  void ?
  console "  storing the newly compiled kernel." eol
  file_tree_create kernel_binary_path
  if modules and (file_query kernel_source_path+"vmmon.tar" 
    console "  compiling VMWare modules" eol
    file_tree_delete "embedded:/usr/src/vmmon-only/"
    file_extract kernel_source_path+"vmmon.tar" "embedded:/u
    (var AsciiFile f) load "embedded:/usr/src/vmmon-only/Mak
    if c:env:"kernel":"make":"CONFIG_SMP"="y"
      f fuzzy_set "SUPPORT_SMP" "=" "SUPPORT_SMP=1"
    f set "DESTDIR" "=" "DESTDIR = driver"
    f set_all "DRIVERNAME" "=" "DRIVERNAME = vmmon.o"
    f store
    command "make" "vmmon-only/"
    file_copy "embedded:/usr/src/vmmon-only/driver/vmmon.o" 
  if modules and (file_query kernel_source_path+"vmnet.tar" 
    file_tree_delete "embedded:/usr/src/vmnet-only/"
    file_extract kernel_source_path+"vmnet.tar" "embedded:/u
    f load "embedded:/usr/src/vmnet-only/Makefile"
    if c:env:"kernel":"make":"CONFIG_SMP"="y"
      f fuzzy_set "SUPPORT_SMP" "=" "SUPPORT_SMP=1"
    f set_all "DRIVERNAME" "=" "DRIVERNAME = vmnet.o"
    f store
    command "make" "vmnet-only/"
    file_copy "embedded:/usr/src/vmnet-only/vmnet.o" "embedd
  if modules and (file_query kernel_source_path+"vmppuser.ta
    file_tree_delete "embedded:/usr/src/vmppuser-only/"
    file_extract kernel_source_path+"vmppuser.tar" "embedded
    f load "embedded:/usr/src/vmppuser-only/Makefile"
    if c:env:"kernel":"make":"CONFIG_SMP"="y"
      f fuzzy_set "SUPPORT_SMP" "=" "SUPPORT_SMP=1"
    f set_all "DRIVERNAME" "=" "DRIVERNAME = vmppuser.o"
    f store
    command "make" "vmppuser-only/"
    file_copy "embedded:/usr/src/vmppuser-only/vmppuser.o" "
  void ?
  console "  storing the newly compiled kernel." eol
  file_tree_create kernel_binary_path
  file_copy "embedded:/usr/src/linux/arch/i386/boot/"+kernel
  var Str arch := c:env:"kernel":"constant":"architecture"
  if arch=""
    arch := "i386"
  file_copy "embedded:/usr/src/linux/arch/"+arch+"/boot/"+kernel_image "embedded:/tmp/kernel/boot/kernel"
  file_copy "embedded:/usr/src/linux/System.map" "embedded:/
  execute "tar -zc -f "+file_os_name:kernel_binary_path+"ker
  file_tree_delete "embedded:/tmp/kernel/"
  status := success


  file_copy "embedded:/usr/src/linux/System.map" "embedded:/
  execute "tar -zc -f "+file_os_name:kernel_binary_path+"ker
  file_tree_delete "embedded:/tmp/kernel/"
  status := success