Browse Source

* new install version (keys not wrong correct yet)

peter 25 years ago
parent
commit
685340e8e3
5 changed files with 279 additions and 883 deletions
  1. 57 17
      install/fpinst/install.dat
  2. 0 220
      install/fpinst/install.dos
  3. 0 271
      install/fpinst/install.lin
  4. 0 213
      install/fpinst/install.os2
  5. 222 162
      install/fpinst/install.pas

+ 57 - 17
install/fpinst/install.w32 → install/fpinst/install.dat

@@ -1,45 +1,86 @@
 #
 # $Id$
 #
-# Win32 Install file
+# Install file for Go32v2/Win32/OS2
 #
-title=Free Pascal Compiler 0.99.14 for Win32
+title=Free Pascal Compiler 0.99.14
 version=0.99.14
 
 basepath=c:\pp
-binsub=\bin\win32
+binsub=\bin\go32v2
 ppc386=ppc386
 
+
+#
+# Go32v2 packages
+#
+pack=Dos/~G~o32v2
+filecheck=*go32.zip
+package=basego32.zip,~B~asic system for Go32v2 (required)
+package=asldgo32.zip,GNU ~L~inker and GNU Assembler for Go32v2 (required)
+package=gdbgo32.zip,GNU ~D~ebugger for Go32v2
+package=utilgo32.zip,GNU ~U~tilities (needed by Makefiles)
+package=ufclgo32.zip,~F~ree Component Libary (FCL)
+package=uapigo32.zip,~A~PI units (needed by FV)
+package=ubasgo32.zip,Basic ~u~nits (needed by FCL)
+package=unetgo32.zip,~N~etworking units
+package=umisgo32.zip,~M~iscellaneous units
+#package=ufvgo32.zip,Free ~V~ision (FV)
+
+
 #
-# Binary packages
+# Win32 packages
 #
+pack=~W~in32
+filecheck=*w32.zip
 package=basew32.zip,~B~asic system for Win32 (required)
 package=asldw32.zip,GNU ~L~inker and GNU Assembler for Win32 (required)
 package=gdbw32.zip,GNU ~D~ebugger for Win32
 package=utilw32.zip,GNU ~U~tilities (for makefiles)
-package=docs-pdf.zip,Documentation (~P~DF)
-package=demo.zip,D~e~mos
 package=ufclw32.zip,~F~ree Component Libary (FCL)
 package=uapiw32.zip,~A~PI units (needed by FV)
 package=ubasw32.zip,~B~asic units (needed by FCL)
-package=ugtkw32.zip,~G~TK units
+package=ugtkw32.zip,GT~K~ units
 package=unetw32.zip,~N~etworking units
 package=udbw32.zip,Da~t~abase (interbase,mysql) units
 package=umisw32.zip,~M~iscellaneous units
 #package=ufvw32.zip,Free ~V~ision (FV)
 
+
+#
+# Emx packages
+#
+pack=Os/2 ~E~MX
+filecheck=*emx.zip
+package=baseemx.zip,~B~asic system for EMX (required)
+package=asldemx.zip,GNU ~L~inker and assembler for EMX (required)
+package=gdbemx.zip,GNU ~D~ebugger for EMX and PMGDB front-end
+package=utilemx.zip,GNU ~U~tilities (for makefiles)
+
+
+#
+# Common packages
+#
+pack=~C~ommon
+package=docs-pdf.zip,Documentation (~P~DF)
+package=demo.zip,D~e~mos
+
+
 #
 # Source packages
 #
-source=basesrc.zip,Basic Makefiles for the sources
-source=compsrc.zip,~C~ompiler sources
-source=rtlsrc.zip,~R~un time library sources
-source=fclsrc.zip,~F~ree component library (FCL) sources
-source=apisrc.zip,API units sources
-source=pkgssrc.zip,Packages units sources
-source=utilssrc.zip,Utils sources
-source=instsrc.zip,Installer sources
-source=docsrc.zip,Documentation sources (La~T~eX)
+pack=~S~ources
+filecheck=*src.zip
+package=basesrc.zip,~B~asic Makefiles for the sources
+package=compsrc.zip,~C~ompiler sources
+package=rtlsrc.zip,~R~un time library sources
+package=fclsrc.zip,~F~ree component library (FCL) sources
+package=apisrc.zip,~A~PI units sources
+package=pkgssrc.zip,~P~ackages units sources
+package=utilssrc.zip,~U~tils sources
+package=instsrc.zip,~I~nstaller sources
+package=docsrc.zip,~D~ocumentation sources (LaTeX)
+
 
 cfgfile=ppc386.cfg
 defaultcfg=
@@ -179,7 +220,6 @@ defaultcfg=
 # searchpath for tools
 -FD$1/bin/$TARGET
 
-
 # -------------
 # Linking
 # -------------

+ 0 - 220
install/fpinst/install.dos

@@ -1,220 +0,0 @@
-#
-# $Id$
-#
-# Go32v2 Install file
-#
-title=Free Pascal Compiler 0.99.14 for Go32v2
-version=0.99.14
-
-basepath=c:\pp
-binsub=\bin\go32v2
-ppc386=ppc386
-
-#
-# Binary packages
-#
-package=basego32.zip,~B~asic system for Go32v2 (required)
-package=asldgo32.zip,GNU ~L~inker and GNU Assembler for Go32v2 (required)
-package=gdbgo32.zip,GNU ~D~ebugger for Go32v2
-package=utilgo32.zip,GNU ~U~tilities (needed by Makefiles)
-package=docs-pdf.zip,Documentation (~P~DF)
-package=demo.zip,D~e~mos
-package=ufclgo32.zip,~F~ree Component Libary (FCL)
-package=uapigo32.zip,~A~PI units (needed by FV)
-package=ubasgo32.zip,Basic units (needed by FCL)
-package=unetgo32.zip,Networking units
-package=umisgo32.zip,Miscellaneous units
-#package=ufvgo32.zip,Free ~V~ision (FV)
-
-#
-# Source packages
-#
-source=basesrc.zip,Basic Makefiles for the sources
-source=compsrc.zip,~C~ompiler sources
-source=rtlsrc.zip,~R~un time library sources
-source=fclsrc.zip,~F~ree component library (FCL) sources
-source=apisrc.zip,API units sources
-source=pkgssrc.zip,Packages units sources
-source=utilssrc.zip,Utils sources
-source=instsrc.zip,Installer sources
-source=docsrc.zip,Documentation sources (La~T~eX)
-
-cfgfile=ppc386.cfg
-defaultcfg=
-#
-# Example ppc386.cfg for Free Pascal Compiler Version 0.99.14
-#
-
-# ----------------------
-# Defines (preprocessor)
-# ----------------------
-
-#
-# nested #IFNDEF, #IFDEF, #ENDIF, #ELSE, #DEFINE, #UNDEF are allowed
-#
-# -d is the same as #DEFINE
-# -u is the same as #UNDEF
-#
-
-# When not m68k is defined at the commandline, define i386
-#IFNDEF m68k
-  #DEFINE i386
-#ENDIF
-
-#
-# Some examples (for switches see below, and the -? helppages)
-#
-# Try compiling with the -dRELEASE or -dDEBUG on the commandline
-#
-
-# For a release compile with optimizes and strip debuginfo
-#IFDEF RELEASE
-  -OG2p2
-  -Xs
-  #WRITE Compiling Release Version
-#ENDIF
-
-# For a debug version compile with debuginfo and all codegeneration checks on
-#IFDEF DEBUG
-  -g
-  -Crtoi
-  #WRITE Compiling Debug Version
-#ENDIF
-
-# ----------------
-# Parsing switches
-# ----------------
-
-# All assembler blocks are intel styled by default
-#-Rintel
-
-# All assembler blocks are AT&T styled by default
-#-Ratt
-
-# All assembler blocks are directly copied to asm
-#-Rdirect
-
-# Semantic checking
-# -S2   switch some Delphi 2 extension on
-# -Sc   supports operators like C (*=,+=,/= and -=)
-# -Sg   allows LABEL and GOTO
-# -Si   support C++ stlyed INLINE
-# -Sm   support macros like C (global)
-# -So   tries to be TP/BP 7.0 compatible
-# -Ss   constructor name must be init (destructor must be done)
-# -St   allows static keyword in objects
-
-# Allow goto, inline, C-operators
--Sgic
-
-# ---------------
-# Code generation
-# ---------------
-
-# Uncomment the next line if you always want static/dynamic units by default
-# (can be overruled with -CD, -CS at the commandline)
-#-CS
-#-CD
-
-# Set the default heapsize to 8Mb
-#-Ch8000000
-
-# Set default codegeneration checks (iocheck, overflow, range, stack)
-#-Ci
-#-Co
-#-Cr
-#-Ct
-
-# Optimizer switches
-# -Og        generate smaller code
-# -OG        generate faster code (default)
-# -Or        keep certain variables in registers (still BUGGY!!!)
-# -Ou        enable uncertain optimizations (see docs)
-# -O1        level 1 optimizations (quick optimizations)
-# -O2        level 2 optimizations (-O1 + slower optimizations)
-# -O3        level 3 optimizations (same as -O2u)
-# -Op        target processor
-#     -Op1  set target processor to 386/486
-#     -Op2  set target processor to Pentium/PentiumMMX (tm)
-#     -Op3  set target processor to PPro/PII/c6x86/K6 (tm)
-
-# Optimize always for Size and Pentium
-#-Og2p2
-
-
-# -----------------------
-# Set Filenames and Paths
-# -----------------------
-
-# Both slashes and backslashes are allowed in paths
-
-# path to the messagefile, not necessary anymore but can be used to override
-# the default language
-#-Fr$1/msg/errore.msg
-#-Fr$1/msg/errorn.msg
-#-Fr$1/msg/errores.msg
-#-Fr$1/msg/errord.msg
-#-Fr$1/msg/errorr.msg
-
-# path to the gcclib
-#-Fl$1/lib
-
-# searchpath for includefiles
--Fi$1/source/rtl/inc;$1/source/rtl/i386
-
-# searchpath for objectfiles
-#-Fo$1/source/rtl/inc;$1/source/rtl/i386
-
-# searchpath for units and other system dependent things
--Fu$1/units/$TARGET
--Fu$1/units/$TARGET/*
--Fu$1/units/$TARGET/rtl
-
-# searchpath for libraries
-#-Fl$1/lib
-#-Fl/lib;/usr/lib
-
-# searchpath for tools
--FD$1/bin/$TARGET
-
-
-# -------------
-# Linking
-# -------------
-
-# generate always debugging information for GDB (slows down the compiling
-# process)
-#-g
-
-# always pass an option to the linker
-#-k-s
-
-# Always strip debuginfo from the executable
--Xs
-
-
-# -------------
-# Miscellaneous
-# -------------
-
-# Write always a nice FPC logo ;)
--l
-
-# Verbosity
-# e : Show errors (default)       d : Show debug info
-# w : Show warnings               u : Show used files
-# n : Show notes                  t : Show tried files
-# h : Show hints                  m : Show defined macros
-# i : Show general info           p : Show compiled procedures
-# l : Show linenumbers            c : Show conditionals
-# a : Show everything             0 : Show nothing (except errors)
-
-# Display Info, Warnings, Notes and Hints
--viwnh
-# If you don't want so much verbosity use
-#-vw
-
-#
-# That's all folks
-#
-endcfg

+ 0 - 271
install/fpinst/install.lin

@@ -1,271 +0,0 @@
-#
-# $Id$
-#
-# Linux Install file
-#
-title=Free Pascal Compiler 0.99.12b for Linux
-version=0.99.12b
-
-basepath=/usr/lib/fpc/0.99.12
-binsub=
-ppc386=ppc386
-
-#
-# Binary packages
-#
-package=baselin.zip,~B~asic system for Linux (required)
-#package=asldlin.zip,GNU ~L~inker and GNU Assembler for Go32v2 (required)
-#package=gdblin.zip,GNU ~D~ebugger for Go32v2
-#package=utillin.zip,GNU ~U~tilities (required to recompile run time library)
-package=docs-pdf.zip,Documentation (~P~DF)
-package=demo.zip,D~e~mos
-#
-# Source packages
-#
-source=rl09912s.zip,~R~un time library sources
-source=pp09912s.zip,~C~ompiler sources
-source=fc09912s.zip,~F~ree component library (FCL) sources
-source=fv09912s.zip,Free ~V~ision (FV) and API sources
-source=gt09912s.zip,~G~TK interface sources
-source=doc160s.zip,Documentation sources (La~T~eX)
-
-cfgfile=ppc386.cfg
-defaultcfg=
-#
-# Example ppc386.cfg for Free Pascal Compiler Version 0.99.12
-#
-
-# ----------------------
-# Defines (preprocessor)
-# ----------------------
-
-#
-# nested #IFNDEF, #IFDEF, #ENDIF, #ELSE, #DEFINE, #UNDEF are allowed
-#
-# -d is the same as #DEFINE
-# -u is the same as #UNDEF
-#
-
-# When not m68k is defined at the commandline, define i386
-#IFNDEF m68k
-  #DEFINE i386
-#ENDIF
-
-#
-# Some examples (for switches see below, and the -? helppages)
-#
-# Try compiling with the -dRELEASE or -dDEBUG on the commandline
-#
-
-# For a release compile with optimizes and strip debuginfo
-#IFDEF RELEASE
-  -OG2p2
-  -Xs
-  #WRITE Compiling Release Version
-#ENDIF
-
-# For a debug version compile with debuginfo and all codegeneration checks on
-#IFDEF DEBUG
-  -g
-  -Crtoi
-  #WRITE Compiling Debug Version
-#ENDIF
-
-# ----------------
-# Parsing switches
-# ----------------
-
-# All assembler blocks are intel styled by default
-#-Rintel
-
-# All assembler blocks are AT&T styled by default
-#-Ratt
-
-# All assembler blocks are directly copied to asm
-#-Rdirect
-
-# Semantic checking
-# -S2   switch some Delphi 2 extension on
-# -Sc   supports operators like C (*=,+=,/= and -=)
-# -Sg   allows LABEL and GOTO
-# -Si   support C++ stlyed INLINE
-# -Sm   support macros like C (global)
-# -So   tries to be TP/BP 7.0 compatible
-# -Ss   constructor name must be init (destructor must be done)
-# -St   allows static keyword in objects
-
-# Allow goto, inline, C-operators
--Sgic
-
-# ---------------
-# Code generation
-# ---------------
-
-# Uncomment the next line if you always want static/dynamic units by default
-# (can be overruled with -CD, -CS at the commandline)
-#-CS
-#-CD
-
-# Set the default heapsize to 8Mb
-#-Ch8000000
-
-# Set default codegeneration checks (iocheck, overflow, range, stack)
-#-Ci
-#-Co
-#-Cr
-#-Ct
-
-# Optimizer switches
-# -Og        generate smaller code
-# -OG        generate faster code (default)
-# -Or        keep certain variables in registers (still BUGGY!!!)
-# -Ou        enable uncertain optimizations (see docs)
-# -O1        level 1 optimizations (quick optimizations)
-# -O2        level 2 optimizations (-O1 + slower optimizations)
-# -O3        level 3 optimizations (same as -O2u)
-# -Op        target processor
-#     -Op1  set target processor to 386/486
-#     -Op2  set target processor to Pentium/PentiumMMX (tm)
-#     -Op3  set target processor to PPro/PII/c6x86/K6 (tm)
-
-# Optimize always for Size and Pentium
-#-Og2p2
-
-
-# -----------------------
-# Set Filenames and Paths
-# -----------------------
-
-# Both slashes and backslashes are allowed in paths
-
-# path to the messagefile, not necessary anymore but can be used to override
-# the default language
-#-Fr$1/msg/errore.msg
-#-Fr$1/msg/errorn.msg
-#-Fr$1/msg/errores.msg
-#-Fr$1/msg/errord.msg
-#-Fr$1/msg/errorr.msg
-
-# path to the gcclib
-#-Fl$1/lib
-
-# searchpath for includefiles
--Fi$1/source/rtl/inc;$1/source/rtl/i386
-
-# searchpath for objectfiles
-#-Fo$1/source/rtl/inc;$1/source/rtl/i386
-
-# searchpath for units and other system dependent things
-#IFDEF Go32V1
-  -FD$1/bin/go32v1
-  #IFDEF FPC_LINK_STATIC
-    -Fu$1/rtl/go32v1/static
-    -Fu$1/units/go32v1/static
-  #ENDIF
-  -Fu$1/rtl/go32v1
-  -Fu$1/units/go32v1
-  -Fu$1/source/rtl/go32v1
-  -Fi$1/source/rtl/go32v1
-  -Fo$1/source/rtl/go32v1
-#ENDIF
-#IFDEF Go32V2
-  -FD$1/bin/go32v2
-  #IFDEF FPC_LINK_STATIC
-    -Fu$1/rtl/go32v2/static
-    -Fu$1/units/go32v2/static
-  #ENDIF
-  -Fu$1/rtl/go32v2
-  -Fu$1/units/go32v2
-  -Fu$1/source/rtl/go32v2
-  -Fi$1/source/rtl/go32v2
-  -Fo$1/source/rtl/go32v2
-#ENDIF
-#IFDEF Win32
-  -FD$1/bin/win32
-  #IFDEF FPC_LINK_STATIC
-    -Fu$1/rtl/win32/static
-    -Fu$1/units/win32/static
-  #ENDIF
-  -Fu$1/rtl/win32
-  -Fu$1/units/win32
-  -Fu$1/source/rtl/win32
-  -Fi$1/source/rtl/win32
-  -Fo$1/source/rtl/win32
-#ENDIF
-#IFDEF OS2
-  -FD$1/bin/os2
-  #IFDEF FPC_LINK_STATIC
-    -Fu$1/rtl/os2/static
-    -Fu$1/units/os2/static
-  #ENDIF
-  -Fu$1/rtl/os2
-  -Fu$1/units/os2
-  -Fu$1/source/rtl/os2
-  -Fi$1/source/rtl/os2
-  -Fo$1/source/rtl/os2
-#ENDIF
-#IFDEF Linux
-  # For statically, smartlinked units
-  #IFDEF FPC_LINK_STATIC
-    -Fu$1/rtl/static
-    -Fu$1/units/static
-  #ENDIF
-  # For Dynamically linked units
-  #IFDEF FPC_LINK_DYNAMIC
-    -Fu$1/rtl/shared
-    -Fu$1/units/shared
-  #ENDIF
-  -Fu$1/rtl/linux
-  -Fu$1/units/linux
-  -Fu$1/source/rtl/linux
-  -Fi$1/source/rtl/linux
-  -Fo$1/source/rtl/linux
-  #-Fu~/pp/units;~/pp/rtl/linux
-  #-Fu/usr/lib/fpc/0.99.12/units;/usr/lib/fpc/0.99.12/rtl
-#ENDIF
-
-# searchpath for libraries
-#-Fl$1/lib
-#-Fl/lib;/usr/lib
-
-
-# -------------
-# Linking
-# -------------
-
-# generate always debugging information for GDB (slows down the compiling
-# process)
-#-g
-
-# always pass an option to the linker
-#-k-s
-
-# Always strip debuginfo from the executable
--Xs
-
-
-# -------------
-# Miscellaneous
-# -------------
-
-# Write always a nice FPC logo ;)
--l
-
-# Verbosity
-# e : Show errors (default)       d : Show debug info
-# w : Show warnings               u : Show used files
-# n : Show notes                  t : Show tried files
-# h : Show hints                  m : Show defined macros
-# i : Show general info           p : Show compiled procedures
-# l : Show linenumbers            c : Show conditionals
-# a : Show everything             0 : Show nothing (except errors)
-
-# Display Info, Warnings, Notes and Hints
--viwnh
-# If you don't want so much verbosity use
-#-vw
-
-#
-# That's all folks
-#
-endcfg

+ 0 - 213
install/fpinst/install.os2

@@ -1,213 +0,0 @@
-#
-# $Id$
-#
-# EMX Install file
-#
-title=Free Pascal Compiler 0.99.14 for OS/2 and DOS (EMX)
-version=0.99.14
-
-basepath=c:\pp
-binsub=\bin\os2
-ppc386=ppos2
-
-#
-# Binary packages
-#
-package=baseemx.zip,~B~asic system for EMX (required)
-package=asldemx.zip,GNU ~L~inker and assembler for EMX (required)
-package=gdbemx.zip,GNU ~D~ebugger for EMX and PMGDB front-end
-package=utilemx.zip,GNU ~U~tilities (for makefiles)
-package=docs-pdf.zip,Documentation (~P~DF)
-package=demo.zip,D~e~mos
-#
-# Source packages
-#
-source=basesrc.zip,Basic Makefiles for the sources
-source=compsrc.zip,~C~ompiler sources
-source=rtlsrc.zip,~R~un time library sources
-source=fclsrc.zip,~F~ree component library (FCL) sources
-source=apisrc.zip,API units sources
-source=pkgssrc.zip,Packages units sources
-source=utilssrc.zip,Utils sources
-source=instsrc.zip,Installer sources
-source=docsrc.zip,Documentation sources (La~T~eX)
-
-cfgfile=ppc386.cfg
-defaultcfg=
-#
-# Example ppc386.cfg for Free Pascal Compiler Version 0.99.14
-#
-
-# ----------------------
-# Defines (preprocessor)
-# ----------------------
-
-#
-# nested #IFNDEF, #IFDEF, #ENDIF, #ELSE, #DEFINE, #UNDEF are allowed
-#
-# -d is the same as #DEFINE
-# -u is the same as #UNDEF
-#
-
-# When not m68k is defined at the commandline, define i386
-#IFNDEF m68k
-  #DEFINE i386
-#ENDIF
-
-#
-# Some examples (for switches see below, and the -? helppages)
-#
-# Try compiling with the -dRELEASE or -dDEBUG on the commandline
-#
-
-# For a release compile with optimizes and strip debuginfo
-#IFDEF RELEASE
-  -OG2p2
-  -Xs
-  #WRITE Compiling Release Version
-#ENDIF
-
-# For a debug version compile with debuginfo and all codegeneration checks on
-#IFDEF DEBUG
-  -g
-  -Crtoi
-  #WRITE Compiling Debug Version
-#ENDIF
-
-# ----------------
-# Parsing switches
-# ----------------
-
-# All assembler blocks are intel styled by default
-#-Rintel
-
-# All assembler blocks are AT&T styled by default
-#-Ratt
-
-# All assembler blocks are directly copied to asm
-#-Rdirect
-
-# Semantic checking
-# -S2   switch some Delphi 2 extension on
-# -Sc   supports operators like C (*=,+=,/= and -=)
-# -Sg   allows LABEL and GOTO
-# -Si   support C++ stlyed INLINE
-# -Sm   support macros like C (global)
-# -So   tries to be TP/BP 7.0 compatible
-# -Ss   constructor name must be init (destructor must be done)
-# -St   allows static keyword in objects
-
-# Allow goto, inline, C-operators
--Sgic
-
-# ---------------
-# Code generation
-# ---------------
-
-# Uncomment the next line if you always want static/dynamic units by default
-# (can be overruled with -CD, -CS at the commandline)
-#-CS
-#-CD
-
-# Set the default heapsize to 8Mb
-#-Ch8000000
-
-# Set default codegeneration checks (iocheck, overflow, range, stack)
-#-Ci
-#-Co
-#-Cr
-#-Ct
-
-# Optimizer switches
-# -Og        generate smaller code
-# -OG        generate faster code (default)
-# -Or        keep certain variables in registers (still BUGGY!!!)
-# -Ou        enable uncertain optimizations (see docs)
-# -O1        level 1 optimizations (quick optimizations)
-# -O2        level 2 optimizations (-O1 + slower optimizations)
-# -O3        level 3 optimizations (same as -O2u)
-# -Op        target processor
-#     -Op1  set target processor to 386/486
-#     -Op2  set target processor to Pentium/PentiumMMX (tm)
-#     -Op3  set target processor to PPro/PII/c6x86/K6 (tm)
-
-# Optimize always for Size and Pentium
-#-Og2p2
-
-
-# -----------------------
-# Set Filenames and Paths
-# -----------------------
-
-# Both slashes and backslashes are allowed in paths
-
-# path to the messagefile, not necessary anymore but can be used to override
-# the default language
-#-Fr$1/msg/errore.msg
-#-Fr$1/msg/errorn.msg
-#-Fr$1/msg/errores.msg
-#-Fr$1/msg/errord.msg
-#-Fr$1/msg/errorr.msg
-
-# path to the gcclib
-#-Fl$1/lib
-
-# searchpath for includefiles
--Fi$1/source/rtl/inc;$1/source/rtl/i386
-
-# searchpath for objectfiles
-#-Fo$1/source/rtl/inc;$1/source/rtl/i386
-
-# searchpath for libraries
-#-Fl$1/lib
-#-Fl/lib;/usr/lib
-
-# searchpath for units and other system dependent things
--Fu$1/units/$TARGET
--Fu$1/units/$TARGET/*
--Fu$1/units/$TARGET/rtl
-
-# searchpath for tools
--FD$1/bin/$TARGET
-
-
-# -------------
-# Linking
-# -------------
-
-# generate always debugging information for GDB (slows down the compiling
-# process)
-#-g
-
-# always pass an option to the linker
-#-k-s
-
-# Always strip debuginfo from the executable
--Xs
-
-
-# -------------
-# Miscellaneous
-# -------------
-
-# Write always a nice FPC logo ;)
--l
-
-# Verbosity
-# e : Show errors (default)       d : Show debug info
-# w : Show warnings               u : Show used files
-# n : Show notes                  t : Show tried files
-# h : Show hints                  m : Show defined macros
-# i : Show general info           p : Show compiled procedures
-# l : Show linenumbers            c : Show conditionals
-# a : Show everything             0 : Show nothing (except errors)
-
-# Display Info, Warnings, Notes and Hints
--viwnh
-# If you don't want so much verbosity use
-#-vw
-
-#
-# That's all folks
-#
-endcfg

+ 222 - 162
install/fpinst/install.pas

@@ -80,8 +80,8 @@ program install;
   const
      installerversion='0.99.14';
 
+     maxpacks=10;
      maxpackages=20;
-     maxsources=20;
      maxdefcfgs=1024;
 
      CfgExt = '.dat';
@@ -94,8 +94,16 @@ program install;
 
   type
      tpackage=record
-       name : string[60];
-       zip  : string[12];
+       name  : string[60];
+       zip   : string[12];
+     end;
+
+     tpack=record
+       name     : string[12];
+       include  : boolean;
+       filechk  : string[40];
+       packages : longint;
+       package  : array[1..maxpackages] of tpackage;
      end;
 
      cfgrec=record
@@ -104,10 +112,8 @@ program install;
        basepath : DirStr;
        binsub   : string[12];
        ppc386   : string[12];
-       packages : longint;
-       package  : array[1..maxpackages] of tpackage;
-       sources  : longint;
-       source   : array[1..maxsources] of tpackage;
+       packs    : word;
+       pack     : array[1..maxpacks] of tpack;
        defcfgfile : string[12];
        defcfgs  : longint;
        defcfg   : array[1..maxdefcfgs] of pstring;
@@ -116,15 +122,14 @@ program install;
      datarec=packed record
        basepath : DirStr;
        cfgval   : word;
-       packmask : word;
-       srcmask  : word;
+       packmask : array[1..maxpacks] of word;
      end;
 
      punzipdialog=^tunzipdialog;
      tunzipdialog=object(tdialog)
-         filetext : pstatictext;
-         constructor Init(var Bounds: TRect; ATitle: TTitleStr);
-         procedure do_unzip(s,topath:string);
+        filetext : pstatictext;
+        constructor Init(var Bounds: TRect; ATitle: TTitleStr);
+        procedure do_unzip(s,topath:string);
      end;
 
      penddialog = ^tenddialog;
@@ -142,31 +147,32 @@ program install;
          procedure handleevent(var event : tevent);virtual;
          procedure do_installdialog;
          procedure readcfg(const fn:string);
+         procedure checkavailpack;
      end;
 
 {$IFDEF DOSSTUB}
- PByte = ^byte;
- PRunBlock = ^TRunBlock;
- TRunBlock = record
-  Length: word;
-  Dependent: word;
-  Background: word;
-  TraceLevel: word;
-  PrgTitle: PChar;
-  PrgName: PChar;
-  Args: PChar;
-  TermQ: longint;
-  Environment: pointer;
-  Inheritance: word;
-  SesType: word;
-  Icon: pointer;
-  PgmHandle: longint;
-  PgmControl: word;
-  Column: word;
-  Row: word;
-  Width: word;
-  Height: word;
- end;
+  PByte = ^byte;
+  PRunBlock = ^TRunBlock;
+  TRunBlock = record
+    Length: word;
+    Dependent: word;
+    Background: word;
+    TraceLevel: word;
+    PrgTitle: PChar;
+    PrgName: PChar;
+    Args: PChar;
+    TermQ: longint;
+    Environment: pointer;
+    Inheritance: word;
+    SesType: word;
+    Icon: pointer;
+    PgmHandle: longint;
+    PgmControl: word;
+    Column: word;
+    Row: word;
+    Width: word;
+    Height: word;
+  end;
 {$ENDIF}
 
   var
@@ -190,6 +196,7 @@ program install;
       halt(1);
     end;
 
+
   function packagemask(i:longint):longint;
     begin
       packagemask:=1 shl (i-1);
@@ -229,6 +236,7 @@ program install;
        file_exists:=fsearch(f,path)<>'';
     end;
 
+
   function createdir(s:string):boolean;
     var
       s1,start : string;
@@ -268,6 +276,7 @@ program install;
        createdir:=err;
     end;
 
+
   function DiskSpaceN(const zipfile : string) : longint;
     var
       compressed,uncompressed : longint;
@@ -411,6 +420,7 @@ program install;
 
   procedure tunzipdialog.do_unzip(s,topath : string);
     var
+      again : boolean;
       fn,dir,wild : string;
     begin
        Disposestr(filetext^.text);
@@ -422,25 +432,26 @@ program install;
                        'Installation doesn''t becomes complete',nil,mferror+mfokbutton);
             errorhalt;
          end;
-       fn:=startpath+DirSep+s+#0;
-       dir:=topath+#0;
-       wild:=AllFiles + #0;
-(* TH - added to clear the previous state of DosError *)
-       DosError := 0;
-{$IFDEF DLL}
-       if
-{$ENDIF}
-          FileUnzipEx(@fn[1],@dir[1],@wild[1])
+       repeat
+         fn:=startpath+DirSep+s+#0;
+         dir:=topath+#0;
+         wild:=AllFiles + #0;
+         DosError := 0;
+         again:=false;
 {$IFDEF DLL}
-                                               = 0 then
+         if FileUnzipEx(@fn[1],@dir[1],@wild[1])=0 then
 {$ELSE}
-                                              ;
-       if doserror<>0 then
+         FileUnzipEx(@fn[1],@dir[1],@wild[1]);
+         if (doserror<>0) then
 {$ENDIF}
-         begin
-            messagebox('Error when extracting. Disk full?',nil,mferror+mfokbutton);
-            errorhalt;
-         end;
+           begin
+              if messagebox('Error when extracting. Disk full?'#13+
+                            #13#3'Try again?',nil,mferror+mfyesbutton+mfnobutton)=cmNo then
+               errorhalt
+              else
+               again:=true;
+           end;
+       until not again;
     end;
 
 
@@ -535,13 +546,15 @@ program install;
        y2 = y1+height;
     var
        tabr,tabir,r : trect;
-       srcmask,
-       mask_components : longint;
-       i,line : integer;
-       srcitems,items : psitem;
+       packmask : array[1..maxpacks] of longint;
+       i,line,j : integer;
+       items : array[1..maxpacks] of psitem;
        f : pview;
+       found : boolean;
        okbut,cancelbut : pbutton;
-       packcbs,sourcecbs : pcheckboxes;
+       firstitem : array[1..maxpacks] of integer;
+       packcbs : array[1..maxpacks] of pcheckboxes;
+       packtd : ptabdef;
        labpath : plabel;
        ilpath : pinputline;
        tab : ptab;
@@ -551,35 +564,31 @@ program install;
     begin
        f:=nil;
      { walk packages reverse and insert a newsitem for each, and set the mask }
-       items:=nil;
-       mask_components:=0;
-       for i:=cfg.packages downto 1 do
-        begin
-          if file_exists(cfg.package[i].zip,startpath) then
-           begin
-             items:=newsitem(cfg.package[i].name+diskspace(startpath+DirSep+cfg.package[i].zip),items);
-             mask_components:=mask_components or packagemask(i);
-           end
-          else
-           items:=newsitem(cfg.package[i].name,items);
-        end;
-
-     { walk source packages reverse and insert a newsitem for each, and set the mask }
-       srcitems:=nil;
-       srcmask:=0;
-       for i:=cfg.sources downto 1 do
-        begin
-          if file_exists(cfg.source[i].zip,startpath) then
-           begin
-             srcitems:=newsitem(cfg.source[i].name+diskspace(startpath+DirSep+cfg.source[i].zip),srcitems);
-             srcmask:=srcmask or packagemask(i);
-           end
-          else
-           srcitems:=newsitem(cfg.source[i].name,srcitems);
-        end;
+       for j:=1to cfg.packs do
+        with cfg.pack[j] do
+         begin
+           firstitem[j]:=0;
+           items[j]:=nil;
+           packmask[j]:=0;
+           for i:=packages downto 1 do
+            begin
+              if file_exists(package[i].zip,startpath) then
+               begin
+                 items[j]:=newsitem(package[i].name+diskspace(startpath+DirSep+package[i].zip),items[j]);
+                 packmask[j]:=packmask[j] or packagemask(i);
+                 firstitem[j]:=i;
+               end
+              else
+               items[j]:=newsitem(package[i].name,items[j]);
+            end;
+         end;
 
      { If no component found abort }
-       if (mask_components=0) and (srcmask=0) then
+       found:=false;
+       for j:=1to cfg.packs do
+        if packmask[j]<>0 then
+         found:=true;
+       if not found then
         begin
           messagebox('No components found to install, aborting.',nil,mferror+mfokbutton);
           errorhalt;
@@ -595,7 +604,7 @@ program install;
        TabIR.Grow(-2,-2);
        TabIR.Move(-2,0);
 
-       {-------- Sheet 1 ----------}
+       {-------- General Sheets ----------}
        R.Copy(TabIR);
        r.move(0,1);
        r.b.x:=r.a.x+40;
@@ -619,19 +628,22 @@ program install;
        new(cfgcb,init(r,newsitem('create ppc386.cfg',nil)));
        data.cfgval:=1;
 
-       {-------- Sheet 2 ----------}
-       R.Copy(TabIR);
-       new(packcbs,init(r,items));
-       data.packmask:=mask_components;
-       pcluster(packcbs)^.enablemask:=mask_components;
-
-       {-------- Sheet 3 ----------}
-       R.Copy(TabIR);
-       new(sourcecbs,init(r,srcitems));
-       data.srcmask:=srcmask;
-       pcluster(sourcecbs)^.enablemask:=srcmask;
+       {-------- Pack Sheets ----------}
+       for j:=1to cfg.packs do
+        begin
+          R.Copy(TabIR);
+          new(packcbs[j],init(r,items[j]));
+          if data.packmask[j]=$ffff then
+           data.packmask[j]:=packmask[j];
+          packcbs[j]^.enablemask:=packmask[j];
+          packcbs[j]^.movedto(firstitem[j]);
+        end;
 
        {--------- Main ---------}
+       packtd:=nil;
+       for j:=cfg.packs downto 1 do
+        packtd:=NewTabDef(cfg.pack[j].name,PackCbs[j],NewTabItem(PackCbs[j],nil),packtd);
+
        New(Tab, Init(TabR,
          NewTabDef('~G~eneral',IlPath,
            NewTabItem(TitleText,
@@ -640,23 +652,18 @@ program install;
            NewTabItem(LabCfg,
            NewTabItem(CfgCB,
            nil))))),
-         NewTabDef('~P~ackages',PackCbs,
-           NewTabItem(PackCbs,
-           nil),
-         NewTabDef('~S~ources',SourceCbs,
-           NewTabItem(SourceCbs,
-           nil),
-         nil)))));
+         packtd)
+       ));
        Tab^.GrowMode:=0;
        Insert(Tab);
 
        line:=tabr.b.y;
-       r.assign((width div 2)-14,line,(width div 2)-4,line+2);
-       new(okbut,init(r,'~O~k',cmok,bfdefault));
+       r.assign((width div 2)-18,line,(width div 2)-4,line+2);
+       new(okbut,init(r,'~C~ontinue',cmok,bfdefault));
        Insert(OkBut);
 
        r.assign((width div 2)+4,line,(width div 2)+14,line+2);
-       new(cancelbut,init(r,'~C~ancel',cmcancel,bfnormal));
+       new(cancelbut,init(r,'~Q~uit',cmcancel,bfnormal));
        Insert(CancelBut);
 
        Tab^.Select;
@@ -678,7 +685,8 @@ program install;
        r    : trect;
        result,
        c    : word;
-       i    : longint;
+       i,j  : longint;
+       found : boolean;
 {$ifndef linux}
        DSize,Space : longint;
        S: DirStr;
@@ -686,8 +694,8 @@ program install;
     begin
       data.basepath:=cfg.basepath;
       data.cfgval:=0;
-      data.srcmask:=0;
-      data.packmask:=0;
+      for j:=1to cfg.packs do
+       data.packmask[j]:=$ffff;
 
       repeat
       { select components }
@@ -699,23 +707,24 @@ program install;
               messagebox('Please, choose the directory for installation first.',nil,mferror+mfokbutton)
             else
              begin
-               if (data.srcmask>0) or (data.packmask>0) then
+               found:=false;
+               for j:=1to cfg.packs do
+                if data.packmask[j]>0 then
+                 found:=true;
+               if found then
                 begin
 {$IFNDEF LINUX}
                 { TH - check the available disk space here }
                   DSize := 0;
-                  for i:=1 to cfg.packages do
-                   begin
-                     if data.packmask and packagemask(i)<>0 then
-                      Inc (DSize, DiskSpaceN(cfg.package[i].zip));
-                   end;
-                  for i:=1 to cfg.sources do
-                   begin
-                     if data.srcmask and packagemask(i)<>0 then
-                      Inc (DSize, DiskSpaceN(cfg.source[i].zip));
-                   end;
-                  if data.packmask and packagemask(i)<>0 then
-                   Inc (DSize, DiskSpaceN(cfg.package[i].zip));
+                  for j:=1to cfg.packs do
+                   with cfg.pack[j] do
+                    begin
+                      for i:=1 to packages do
+                       begin
+                         if data.packmask[j] and packagemask(i)<>0 then
+                          Inc (DSize, DiskSpaceN(package[i].zip));
+                       end;
+                    end;
                   S := FExpand (Data.BasePath);
                   if S [Length (S)] = DirSep then
                    Dec (S [0]);
@@ -724,7 +733,7 @@ program install;
                    S := 'is not'
                   else
                    S := '';
-                  if Space < DSize + 500 then
+                  if true or (Space < DSize + 500) then
                    begin
                      if S = '' then
                       S := 'might not be';
@@ -740,9 +749,20 @@ program install;
                 end
                else
                 begin
-                  result:=messagebox('No components selected.'#13#13'Abort installation?',nil,mferror+mfyesbutton+mfnobutton);
-                  if result=cmYes then
-                   exit;
+                  { maybe only config }
+                  if (data.cfgval and 1)<>0 then
+                   begin
+                     result:=messagebox('No components selected.'#13#13'Create a configfile ?',nil,mfinformation+mfyesbutton+mfnobutton);
+                     if (result=cmYes) and createinstalldir(data.basepath) then
+                      writedefcfg(data.basepath+cfg.binsub+DirSep+cfg.defcfgfile);
+                     exit;
+                   end
+                  else
+                   begin
+                     result:=messagebox('No components selected.'#13#13'Abort installation?',nil,mferror+mfyesbutton+mfnobutton);
+                     if result=cmYes then
+                      exit;
+                   end;
                 end;
              end;
           end
@@ -751,28 +771,20 @@ program install;
       until false;
 
     { extract packages }
-      r.assign(20,7,60,16);
-      p2:=new(punzipdialog,init(r,'Extracting Packages'));
-      desktop^.insert(p2);
-      for i:=1 to cfg.packages do
-       begin
-         if data.packmask and packagemask(i)<>0 then
-          p2^.do_unzip(cfg.package[i].zip,data.basepath);
-       end;
-      desktop^.delete(p2);
-      dispose(p2,done);
-
-    { extract sources }
-      r.assign(20,7,60,16);
-      p2:=new(punzipdialog,init(r,'Extracting Sources'));
-      desktop^.insert(p2);
-      for i:=1 to cfg.sources do
-       begin
-         if data.srcmask and packagemask(i)<>0 then
-          p2^.do_unzip(cfg.source[i].zip,data.basepath);
-       end;
-      desktop^.delete(p2);
-      dispose(p2,done);
+      for j:=1 to cfg.packs do
+       with cfg.pack[j] do
+        begin
+          r.assign(20,7,60,16);
+          p2:=new(punzipdialog,init(r,'Extracting Packages'));
+          desktop^.insert(p2);
+          for i:=1 to packages do
+           begin
+             if data.packmask[j] and packagemask(i)<>0 then
+              p2^.do_unzip(package[i].zip,data.basepath);
+           end;
+          desktop^.delete(p2);
+          dispose(p2,done);
+        end;
 
     { write config }
       if (data.cfgval and 1)<>0 then
@@ -879,27 +891,45 @@ program install;
                    until false;
                  end
                else
-                if item='PACKAGE' then
+                if item='PACK' then
                  begin
-                   j:=pos(',',s);
-                   if (j>0) and (cfg.packages<maxpackages) then
+                   inc(cfg.packs);
+                   if cfg.packs>maxpacks then
                     begin
-                      inc(cfg.packages);
-                      cfg.package[cfg.packages].zip:=copy(s,1,j-1);
-                      cfg.package[cfg.packages].name:=copy(s,j+1,255);
+                      writeln('Too much packs');
+                      halt(1);
                     end;
+                   cfg.pack[cfg.packs].name:=s;
                  end
                else
-                if item='SOURCE' then
+                if item='FILECHECK' then
                  begin
-                   j:=pos(',',s);
-                   if (j>0) and (cfg.sources<maxsources) then
+                   if cfg.packs=0 then
                     begin
-                      inc(cfg.sources);
-                      cfg.source[cfg.sources].zip:=copy(s,1,j-1);
-                      cfg.source[cfg.sources].name:=copy(s,j+1,255);
+                      writeln('No pack set');
+                      halt(1);
                     end;
-                 end;
+                   cfg.pack[cfg.packs].filechk:=s;
+                 end
+               else
+                if item='PACKAGE' then
+                 begin
+                   if cfg.packs=0 then
+                    begin
+                      writeln('No pack set');
+                      halt(1);
+                    end;
+                   with cfg.pack[cfg.packs] do
+                    begin
+                      j:=pos(',',s);
+                      if (j>0) and (packages<maxpackages) then
+                       begin
+                         inc(packages);
+                         package[packages].zip:=copy(s,1,j-1);
+                         package[packages].name:=copy(s,j+1,255);
+                       end;
+                    end;
+                 end
              end;
           end;
        end;
@@ -907,6 +937,32 @@ program install;
     end;
 
 
+  procedure tapp.checkavailpack;
+    var
+      j : longint;
+      dir : searchrec;
+    begin
+    { check the packages }
+      j:=0;
+      while (j<cfg.packs) do
+       begin
+         inc(j);
+         if cfg.pack[j].filechk<>'' then
+          begin
+            findfirst(cfg.pack[j].filechk,$20,dir);
+            if doserror<>0 then
+             begin
+               { remove the package }
+               move(cfg.pack[j+1],cfg.pack[j],sizeof(tpack)*(cfg.packs-j));
+               dec(cfg.packs);
+               dec(j);
+             end;
+            findclose(dir);
+          end;
+       end;
+     end;
+
+
   procedure tapp.initmenubar;
     var
        r : trect;
@@ -914,7 +970,7 @@ program install;
        getextent(r);
        r.b.y:=r.a.y+1;
        menubar:=new(pmenubar,init(r,newmenu(
-          newsubmenu('~F~ree Pascal Installer '+installerversion,hcnocontext,newmenu(nil
+          newsubmenu('Free Pascal Installer',hcnocontext,newmenu(nil
           ),
        nil))));
     end;
@@ -1039,13 +1095,17 @@ begin
    FSplit (FExpand (ParamStr (0)), DStr, CfgName, EStr);
 
    installapp.readcfg(CfgName + CfgExt);
+   installapp.checkavailpack;
 {   installapp.readcfg(startpath+dirsep+cfgfile);}
    installapp.do_installdialog;
    installapp.done;
 end.
 {
   $Log$
-  Revision 1.10  2000-01-18 00:22:48  peter
+  Revision 1.11  2000-01-24 22:21:48  peter
+    * new install version (keys not wrong correct yet)
+
+  Revision 1.10  2000/01/18 00:22:48  peter
     * fixed uninited local var
 
   Revision 1.9  1999/08/03 20:21:53  peter
@@ -1120,4 +1180,4 @@ end.
   Revision 1.2  1998/04/07 22:47:57  florian
     + version/release/patch numbers as string added
 
-}
+}