
	  How does rpm2html works ?
	  =========================

 The input of rpm2html are:
    1/ a list of configuration files
    2/ [optional] a language message file.

 Each configuration file is handled independently as if
if was a new invocation of rpm2html.

 A configuration file represents a list of directories
and a distribution as a whole. All the references between
packages listed in the directories of a single config file
are marked by hyperlinks in the resulting HTML files. Here
is the process leading to the creation of the HTML pages:

  1/ The configuration file is parsed, it sets all the
     default values for rpm2html.
     Then all the directory entries are parsed and a list
     of directories to scan is built.

  2/ For each directory, the RPM are scanned, the HTML
     page describing the package is generated immediately.
     All resources provided and needed by the RPM file
     are stored in a list of resources. A list of parsed
     RPMs is also constructed.

  3/ Once all the RPM for this config file have been scanned
     all resources are dumped in resources files with
     links to the RPM providing them (one could also add the
     RPM needing them but everything needs libc for example).

  4/ The sorted lists of packages are generated by sorting
     the RPM list for various criteria and general front-end
     pages are generated unsing the new list order.

  5/ The main page is generated with links to the various
     front-end pages, statistics and description of the
     packages analyzed.

  6/ All the lists are freed and global variables are reset.

rpm2html is now ready to handle the next configuration file.
     
  A configuration file represent a "distribution" where all
the cross-links makes sense, e.g.:

 -->Dist 
        --> srcs
	--> noarch
	--> i386
	--> sparc
	--> alpha
	--> ppc

 Here is a possible configuration file for such a distribution
where all the HTML files are stored in the same directory:

------------------- config.onedir -----------------
;
; Sample configuration file for rpm2html
; when using a single directory for all HTML output
;

maint=Joe
mail=joe@mydistrib.org
dir=/home/http/html/MyDistrib
url=http://www.mydistrib.org/pub/mydistrib
ftpsrc=ftp://ftp.mydistrib.org/pub/mydistrib/srcs
host=MyDistrib.Org
header=mailto:joe@mydistrib.org Feedback

[/MyDistrib/RPM/srcs]
name=Sources for MyDistrib
ftp=ftp://ftp.mydistrib.org/pub/mydistrib/srcs

[/MyDistrib/RPM/noarch]
name=Arch independant packages for MyDistrib
ftp=ftp://ftp.mydistrib.org/pub/mydistrib/noarch

[/MyDistrib/RPM/i386]
name=i386 packages for MyDistrib
ftp=ftp://ftp.mydistrib.org/pub/mydistrib/i386

[/MyDistrib/RPM/alpha]
name=Alpha packages for MyDistrib
ftp=ftp://ftp.mydistrib.org/pub/mydistrib/alpha

[/MyDistrib/RPM/sparc]
name=Sparc packages for MyDistrib
ftp=ftp://ftp.mydistrib.org/pub/mydistrib/sparc

[/MyDistrib/RPM/ppc]
name=PPC packages for MyDistrib
ftp=ftp://ftp.mydistrib.org/pub/mydistrib/ppc

-------------------------------------------------

  In the second example, the front-end HTML
pages are stored in a general directory, as well
as all the resources pages. The HTML pages
are stored in separate directories. To be able
to provide cross linking between HTML pages located
in different directories on the server, the "subdir"
giving the relative URL path for the HTML directories
is needed, e.g. :

----------------- config.multidir ---------------
;
; Sample configuration file for rpm2html
; when using separate directories for the HTML files.
;

maint=Joe
mail=joe@mydistrib.org
dir=/home/http/html/MyDistrib
ftpsrc=ftp://ftp.mydistrib.org/pub/mydistrib/srcs
url=/mydistrib
host=MyDistrib.Org
header=mailto:joe@mydistrib.org Feedback

[/MyDistrib/RPM/srcs]
name=Sources for MyDistrib
ftp=ftp://ftp.mydistrib.org/pub/mydistrib/srcs
subdir=srcs

[/MyDistrib/RPM/noarch]
name=Arch independant packages for MyDistrib
ftp=ftp://ftp.mydistrib.org/pub/mydistrib/noarch
ftpsrc=ftp://ftp.mydistrib.org/pub/mydistrib/noarch
subdir=noarch

[/MyDistrib/RPM/i386]
name=i386 packages for MyDistrib
ftp=ftp://ftp.mydistrib.org/pub/mydistrib/i386
subdir=i386

[/MyDistrib/RPM/alpha]
name=Alpha packages for MyDistrib
ftp=ftp://ftp.mydistrib.org/pub/mydistrib/alpha
subdir=alpha

[/MyDistrib/RPM/sparc]
name=Sparc packages for MyDistrib
ftp=ftp://ftp.mydistrib.org/pub/mydistrib/sparc
subdir=sparc

[/MyDistrib/RPM/ppc]
name=PPC packages for MyDistrib
ftp=ftp://ftp.mydistrib.org/pub/mydistrib/ppc
subdir=ppc

-------------------------------------------------

  In that case the HTTP server tree follow closely
the ditribution tree but this is not mandatory.

Daniel.Veillard@apocalypse.org

$Id: PRINCIPLES,v 1.5 1998/04/28 02:25:41 veillard Exp $

