Definitions used in this document.

	where <default> is the default directory of the base
	RPMS. 

	where <sitename> is your sitename which is the directory			under sites/ . 

        where <tree> is the directory where <default>/ exists
		
	In this example it is /mnt/src/sl30rolling/i386/
	Note that it must be a full path name. 
 	 
------------------------------------------------------------------------------
Steps for making your own site customization
------------------------------------------------------------------------------
Prereqs
-------

Note that the steps outlined here must be executed on a system which has
Scientific Linux (SL) with the anaconda and anaconda-runtime rpms installed.
The "Development Tools" group must have been installed if you wish to
build your own rpms.

STEPS
-----

In this example we will use 

	new site "newsite" so $SITE is "newsite".
	<tree> is in /mnt/src/sl30rolling/i386/ and is defined as $TREE
	<default> is SL and is defined as $DEFAULT

  	DEFAULT=SL
  	SITE=newsite 
  	TREE=/mnt/src/sl30rolling/i386/

cd $TREE
mkdir sites/newsite			  # Create new site area
cd sites/example
find . -print | cpio -pvdum ../newsite    # copy over example area as a start
cd ../newsite/Updates

  <add and remove RPMS in "Updates" to customize as you want> 

  For the rpms you want to change install the SRPM and then make changes
  as necessary in /usr/src/redhat/SPECS/ .  You should change the version
  string so as to distinguish it from the original.

  Some rpms that you might want to change are

     yum-conf 

	so to point to your local yum repository 

     example-release 
	
	to contain your own release name.  This will change the name of this
        rpm and will require you to change the example-release entry in 
        ../base/comps* so the installer will find the right rpm. 
	To install the SRPM for example-release so that you can modify it
	for your needs.  

		rpm -iv $TREE/sites/example/SRPMS/example-release*

	The spec file after installing will be in 
	/usr/src/redhat/SPECS/example-release.spec .  It is easiest to copy 
	this spec file as newsite-release.spec and modify that.  Then rebuild
        your new release rpm with

		rpmbuild -ba /usr/src/redhat/SPECS/newsite-release.spec

	The new newsite-release rpm will be in /usr/src/redhat/RPMS/i386/
 
     anaconda-images

	This rpm contains the graphics used during the install.  See 
        README.images for info on what could/should be changed.
    
     anaconda-help

	This rpm contains the "help" info on the left side of the gui installer
	screen.  You might want to change the "SL" to be your site name.

cd ../base

  <modify "comps.xml.main" to include added RPMS and other site
  customizations, The one included here is the same as what is in SL itself,
  with sl-release changed to example-release>

modify "scripts/comps.site.spec"

  Change the "example" entries at the beginning to be your site
  Also make sure that basedir is what your base directory really is

sh scripts/cp.comps.xml.main.sh 

cd ../build/isolinux 

  <modify files in "build/isolinux" as described in "build/isolinux/README"
  NOTE that this is <tree>/sites/$SITE/build/isolinux and NOT 
  <tree>/isolinux/ >

cd ../scripts

  <modify "locations.include" to fix TREE= and SITE= to be 
  TREE=<where ever your tree is located>  # In our case it is already ok.
  SITE=newsite
  change --product string in build.release.site.sh>

modify rpmdb-example.spec.in  

  < cp rpmdb-example.spec.in rpmdb-newsite.spec.in>
  < modify rpmdb-newsite.spec.in to have your newsite in it instead of example>

sh make.updates.img.sh         # Need to do whenever you change contents of
			       # $TREE/sites/$SITE/RHupdates/

sh build.hdlist.site.sh        # Run this whenever you change contents of
			       # $TREE/sites/$SITE/Updates/

sh build.release.site.sh       # Only need to run this when changing installer
			       # kernel , but at least 1 time

<now test install with images in "$TREE/sites/$SITE/images/">



while <not_right_yet>

   <add and remove RPMS in "$TREE/sites/$SITE/Updates" to customize as you want>

   <run $TREE/sites/$SITE/build/scripts/build.hdlist.site.sh after each 
    batch of changes>

   <modify $TREE/sites/$SITE/base/comps.xml.main and run 
   $TREE/sites/$SITE/base/scripts/cp.comps.xml.main.sh when you want to move
   these changes over as your "real comps.xml">

   <test with install images in $TREE/sites/$SITE/images/, only need to 
   rebuild these when installer kernel changes or anaconda rpms change 
   and you want to include those changes
   Note that anaconda python script changes can be placed in 
   $TREE/sites/$SITE/RHupdates/ , this makes testing easier,  they do
   NOT have to be put in the anaconda rpms unless that is what you want>

end

    <After you are happy. There are a few scripts that should be run that 
    create a rpm that contain info about all the other rpms.  This is why 
    it should be done at the end.  It does not hurt to run it more it
    just takes time.>

cd $TREE/$ARCH/sites/newsite/build/scripts
make.rpmdb-site.sh

    <I have also included a script to make cd isos.  The created isos are
     placed in $TREE/$ARCH/sites/newsite/iso/ .  Verify that you have at
     least 650MB x 4 disk space free there.>

cd buildisoimages
make.cdisos.sh

    <I have created a script that will build everything.  It asks if you 
     want to build install images and cd iso images.  It calls all the 
     other scripts and thus makes sure that all things have been built.
     It is located in

         $TREE/$ARCH/sites/newsite/build/scripts

     make.everything.sh

     >

If you have any questions about this procedure please send me email.

-Connie Sieh
csieh@fnal.gov