LON-CAPA Software Developer Instructions

  1. Using CVS
  2. Viewing the software (make HTML)
  3. Compiling the software (make build)
  4. Adding/removing files from the LON-CAPA installation (doc/loncapafiles/loncapafiles.html)
  5. Configurable files versus non-configurable files
  6. Updating the non-configurable files on your machine (make install)
  7. Updating the configurable files on your machine (make configinstall)
  8. Building RPMs (make RPM)
  1. Using CVS

  2. Viewing the software (make HTML)

    Commands
    cd loncom/build
    rm -Rf HTML (or alternatively, "make clean")
    make HTML
    cd HTML
    (look at the index.html file with a web browser such as Netscape)
    
    General description of what happens

    This is the actual make target code.

    
    HTML:
            install -d HTML
            cp ../../doc/loncapafiles/*.gif HTML
            perl parse.pl ../../doc/loncapafiles/loncapafiles.html HTML > HTML/index.html
    
    
    What basically happens is that specially marked-up data in the LON-CAPA cvs repository file doc/loncapafiles.html is parsed into a more viewable format by loncom/build/parse.pl. The resulting file gives a very well organized view of all the files, directories, links, ownerships, permissions, and brief documentation of what each file does.

  3. Compiling the software (make build)

    Commands
    cd loncom/build
    make build
    
    General description of what happens

    This is the actual make target code.

    
    build:
            perl parse.pl ../../doc/loncapafiles/loncapafiles.html build > Makefile.build
            make -f Makefile.build all
    
    
    loncom/build/parse.pl reads in all the build information out of doc/loncapafiles/loncapafiles.html. A new Makefile named loncom/build/Makefile.build is dynamically constructed. This dynamically generated Makefile is then run to build/compile all the software targets from source. This currently takes 10 minutes (depends on the speed of the machine you compile with).

    Example

    Here is information for one file tth.so provided in doc/loncapafiles/loncapafiles.html.


    <METAGROUP>
    <LONCAPA TYPE=LOCATION DIST="redhat6.2" SOURCE="loncom/modules/TexConvert/tthperl/tth.so" TARGET="usr/lib/perl5/site_perl/5.005/tth.so" CATEGORY="system file">
    <DESCRIPTION>
    shared library file for dynamic loading and unloading of TeX-to-HTML functionality
    </DESCRIPTION>
    <BUILD>
    loncom/modules/TexConvert/tthperl/commands
    </BUILD>
    <DEPENDENCIES>
    ../tthdynamic/tthfunc.c
    ../ttmdynamic/ttmfunc.c
    </DEPENDENCIES>
    loncom/build/parse.pl sees the BUILD tags and sets up a dynamic file Makefile.build to run the command inside the BUILD tags (currently, DEPENDENCIES is not used for anything besides documentation).

    Here is an example of a dynamically generated Makefile.build that builds two LON-CAPA files (one of which is tth.so.

    all: ../homework/caparesponse/capa.so ../modules/TexConvert/tthperl/tth.so 
    
    ../homework/caparesponse/capa.so:  ../homework/caparesponse/caparesponse.c ../ho
    mework/caparesponse/caparesponse.pm alwaysrun
            cd ../homework/caparesponse/; sh ./commands
    
    ../modules/TexConvert/tthperl/tth.so:  ../modules/TexConvert/tthperl/../tthdynam
    ic/tthfunc.c ../modules/TexConvert/tthperl/../ttmdynamic/ttmfunc.c
            cd ../modules/TexConvert/tthperl/; sh ./commands
    
    alwaysrun:
    

  4. Adding/removing files from the LON-CAPA installation (doc/loncapafiles/loncapafiles.html)

  5. Configurable files versus non-configurable files

  6. Updating the non-configurable files on your machine (make install)

  7. Updating the configurable files on your machine (make configinstall)

  8. Building RPMs (make RPM)