Patch title: Release 94 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_
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) 
  if not (linux_version parse (var Int v1) "." (var Int v2) "." (var Int v3) any:(var Str extra))
    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_ve
  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+
    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_ve
  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 patch c:env:"patch" filter patch:"file"<>""
    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
    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_ve
  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 (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_ve
  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
  if false # no console blanking: replaced by terminal configuration sequence in /pliant/fullpliant/boot.pli
    # 2.4
    (var AsciiFile console) load "embedded:/usr/src/linux/dr
    console set "static void" "timer_do_blank_screen" "stati
    console store
    (var AsciiFile console) load "embedded:/usr/src/linux/dr
    console set "static void" "timer_do_blank_screen" "stati
    console store
    # 2.6
    (var AsciiFile console) load "embedded:/usr/src/linux/drivers/char/vt.c"
    console set "static int" "blankinterval" "static int blankinterval = 0;"
    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":"cons
  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":"cons
  if c:env:"kernel":"constant":"hostcc"<>""
    makefile set "HOSTCC" "=" "HOSTCC = "+c:env:"kernel":"constant":"hostcc"
  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":"
    makefile set "AFLAGS" ":=" "AFLAGS := "+c:env:"kernel":"
  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://fullplian
  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_MOD
  each k c:env:"kernel":"make"
    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



  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":"
    makefile set "AFLAGS" ":=" "AFLAGS := "+c:env:"kernel":"
  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://fullplian
  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_MOD
  each k c:env:"kernel":"make"
    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