Patch title: Release 84 bulk changes
Abstract:
File: /pliant/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 pcmcia_tar := ""
  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
    if (files:i:name parse "pcmcia-cs-" (var Int vi1) "." (v
      var Int test := vi1*1000^2+vi2*1000+vi3
      if test>maxi
        maxi := test
        v := string:vi1+"."+string:vi2+"."+string:vi3
  if pcmcia_version=""
    pcmcia_version := v
  if pcmcia_version=""
    return failure:"PCMCIA source version is not defined"
  if pcmcia_tar=""
    pcmcia_tar := "pcmcia-cs-"+pcmcia_version+".tar.gz"
  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 (file_query "embedded:/usr/src/pcmcia-cs-"+pcmcia_versi
    console "    removing old pcmcia source" eol
    file_tree_delete "embedded:/usr/src/pcmcia-cs-"+pcmcia_v
  console "    unpacking "+pcmcia_tar eol
  file_delete "embedded:/usr/src/pcmcia-cs" ; file_tree_dele
  if (file_extract kernel_source_path+pcmcia_tar "embedded:/
    return failure:"Failed to extract PCMCIA source"
  file_link "pcmcia-cs-"+pcmcia_version+"/" "embedded:/usr/s
  for i base+1 final
    console "    applying patch-"+string:v1+"."+string:v2+".
    file_tree_delete "embedded:/usr/src/linux-"+string:v1+".
    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
    apply_patch kernel_source_path+"patch-"+string:v1+"."+st
    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"
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 pcmcia_tar := ""
  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
    if (files:i:name parse "pcmcia-cs-" (var Int vi1) "." (v
      var Int test := vi1*1000^2+vi2*1000+vi3
      if test>maxi
        maxi := test
        v := string:vi1+"."+string:vi2+"."+string:vi3
  if pcmcia_version=""
    pcmcia_version := v
  if pcmcia_version=""
    return failure:"PCMCIA source version is not defined"
  if pcmcia_tar=""
    pcmcia_tar := "pcmcia-cs-"+pcmcia_version+".tar.gz"
  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 (file_query "embedded:/usr/src/pcmcia-cs-"+pcmcia_versi
    console "    removing old pcmcia source" eol
    file_tree_delete "embedded:/usr/src/pcmcia-cs-"+pcmcia_v
  console "    unpacking "+pcmcia_tar eol
  file_delete "embedded:/usr/src/pcmcia-cs" ; file_tree_dele
  if (file_extract kernel_source_path+pcmcia_tar "embedded:/
    return failure:"Failed to extract PCMCIA source"
  file_link "pcmcia-cs-"+pcmcia_version+"/" "embedded:/usr/s
  for i base+1 final
    console "    applying patch-"+string:v1+"."+string:v2+".
    file_tree_delete "embedded:/usr/src/linux-"+string:v1+".
    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
    apply_patch kernel_source_path+"patch-"+string:v1+"."+st
    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"
    # required for alan patches:
    # file_link "linux-"+linux_version+"/" "embedded:/usr/sr
    each f patch
    each f patch
      if (keyof:f parse "alias" any)
        file_link "linux-"+string:v1+"."+string:v2+"."+string:final+"/" "embedded:/usr/src/"+f+"/"
    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"
      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"
    # file_delete "embedded:/usr/src/linux.vanilla"
    each f patch
      if (keyof:f parse "alias" any)
        file_delete "embedded:/usr/src/"+f+"/"
  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"



  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"