fpc/utils/fppkg
peter f3e4496ca7 * build fppkg
git-svn-id: trunk@5909 -
2007-01-11 21:55:00 +00:00
..
lnet * re-add some somehow missed units, update to latest 2007-01-08 22:16:06 +00:00
fpmkcnst.inc
fpmktype.pp
fpmkunit.pp
fppkg.lpi * Added libcurl downloader and implemented new command style as in smart/svn/cvs 2006-11-06 23:17:09 +00:00
fppkg.pp * Added libcurl downloader and implemented new command style as in smart/svn/cvs 2006-11-06 23:17:09 +00:00
fprepos.pp
fpxmlrep.pp
Makefile * build fppkg 2007-01-11 21:55:00 +00:00
Makefile.fpc * build fppkg 2007-01-11 21:55:00 +00:00
pkgdownload.pp * initial skeleton 2006-11-01 14:04:10 +00:00
pkghandler.pp * Added libcurl downloader and implemented new command style as in smart/svn/cvs 2006-11-06 23:17:09 +00:00
pkglibcurl.pp * Added libcurl downloader and implemented new command style as in smart/svn/cvs 2006-11-06 23:17:09 +00:00
pkglnet.pas * adds lnet to the compile-list 2007-01-04 10:10:45 +00:00
pkgmessages.pp * Added libcurl downloader and implemented new command style as in smart/svn/cvs 2006-11-06 23:17:09 +00:00
pkgmkconv.pp * initial skeleton 2006-11-01 14:04:10 +00:00
pkgocurl.pp * Added OCurl based downloader 2006-11-03 20:48:52 +00:00
pkgropts.pp
pkgsynapse.pp * Initial implementation of Synapse-based downloader 2006-11-03 20:03:23 +00:00
pkgwget.pp * Added program to test downloader class 2006-11-03 21:26:44 +00:00
README * Added direct libcurl interface 2006-11-05 14:18:45 +00:00
rep2xml.lpi
rep2xml.lpr
reptest.pp
testdownload.pp * Added program to test downloader class 2006-11-03 21:26:44 +00:00

This is the FPC packager.

The architecture is as follows:

A mirror list is maintained with FPC repositories.
The packager will download the mirror list and store 
it somewhere locally

From a mirror, a repository is chosen (using it's name)

From the repository the repository file is downloaded. 
It contains all known packages. The fprepos.pp unit contains the
functionality to read and maintain the package file. 

The packager maintains a local repository file. when needed
it will download a package and install it. It does so recursively.

Each package contains a fpmake.pp driver. It contains all that
is needed to compile, install and zip a package. It can also
create a manifest file (in XML) to import in a repository.

All packager functionality will be implemented in units so
these units can be used in command-line and GUI package managers.

All packager command handling is implemented in descendents fom 
TPackageHandler (pkghandler.pp). All messages emitted by these
handlers are in pkgmessages. 

Units:
-----

fprepos:
  A unit that describes a repository. 
  It is mainly a collection of packages.
fpxmlrep
  A unit to read/write a repository to XML. It can be used to read a
  manifest file as produced by the fpmake driver.
pkgropts
  A unit to maintain settings for the packager it reads/writes
  options from/to an ini file.
fpmkunit
  this is the unit that implements all the functionality a fpmake driver
  needs.
fpmktype
  types and constants shared by fpmkunit and fprepos 
rep2xml
  test program for the fprepos unit.
reptest
  creates some test packages for use in the rep2xml test program.
fppkg
  the package manager application
fpmkconv
  Makefile.fpc to fpmake converter.
pkgmessages
  the messages used in pkghandler and below.
pkghandler
  the base for all fppkg command handlers
pkgdownload
  a base implementation for download functionality in fppkg
pkgwget
  a downloader based on spawning wget.
pkgsynapse
  a downloader based on Synapse. Do not put in makefile, as Synapse is
  not distributed by default with FPC.
pkglibcurl
  a downloader based on LibCurl (plain C library). 
pkgocurl
  a downloader based on CurlPas (object version). Do not put in makefile,
  as CurlPas is not distributed with FPC.
 

Options supported in packager config file:
------------------------------------------

LocalMirrors 
  Local file with list of mirrors.
RemoteMirrors
  URL with location of remote mirrors file.
RemoteRepository
  Name of repository as found in LocalMirrors file.
LocalRepository
  Location of local repository file.
InstallDir
  Directory to install packages/units to
BuildDir
  Directory where to unpack and build packages
Compiler
  Compiler binary to be used
OS
  Default OS
CPU 
  Default CPU

Defaults can be found in pkgropts