Annotation of loncom/build/install_web_site_cronjob, revision 1.9

1.1       harris41    1: #!/usr/bin/perl
                      2: 
                      3: =pod
                      4: 
                      5: =head1 NAME
                      6: 
                      7: install_web_site_cronjob - maintain install.lon-capa.org web-site every day
                      8: 
                      9: =head1 DESCRIPTION
                     10: 
                     11: This is a file that runs periodically on B<install.lon-capa.org>.
                     12: 
                     13: This file should be run by the 'loninst' user and be part of
                     14: the 'loninst' crontab entries (to view loninst crontab, login
                     15: as loninst and crontab C<-l>; to edit loninst crontab, login as
                     16: loninst and crontab C<-e>).
                     17: 
                     18: This file should be on the B<install.lon-capa.org> filesystem as
1.2       harris41   19: F</home/loninst/auto/install_web_site_cronjob>.
1.1       harris41   20: 
                     21: The current 'loninst' crontab entry is:
                     22: 
1.2       harris41   23: 13 16 * * *    /home/loninst/auto/install_web_site_cronjob
1.1       harris41   24: 
1.2       harris41   25: The main goal of B<install_web_site_cronjob> is to periodically produce the
1.3       albertel   26: unstable tarball needed for LON-CAPA installation.
1.1       harris41   27: 
1.2       harris41   28: A secondary yet important function of B<install_web_site_cronjob> is that it
1.1       harris41   29: also refreshes the documentation present on the install.lon-capa.org
                     30: web site.
                     31: 
1.5       harris41   32: This documentation is refreshed based on a file located inside
                     33: F</home/loninst/public_html/versions>.  This file is named
                     34: F<LATEST-IS-VERSIONNUMBER>, where
                     35: I<VERSIONNUMBER> is the latest stable release of loncapa (e.g. 0.4 or 0.6.1).
                     36: The F<LATEST-IS-VERSIONNUMBER> file contains a string
                     37: that is used to date the release of the current stable version.
1.3       albertel   38: 
1.1       harris41   39: The coding of this script is a strange brew of shell commands
                     40: with perl.
                     41: 
                     42: =head1 AUTHOR
                     43: 
                     44: 
                     45: =cut
                     46: 
                     47: # --------------------------------------------- Making the tarball distribution
1.5       harris41   48: 
                     49: # In an ideal world, this tarball distribution would be always generated with
                     50: # the "make tardist" command.  But instead, unstable is now defined as
                     51: # "all the gunk we have been working on", whereas the 
                     52: # "make tardist" command means a "carefully inventoried selection of gunk".
1.3       albertel   53: #`cd /home/loninst/auto; export CVS_PASSFILE=/home/loninst/.cvspass; export CVSROOT=:pserver:scott\@localhost:/home/cvs; rm -Rf loncapa/[C][^V]*; rm -Rf loncapa/[^C]*; cvs -Q co loncapa; cd loncapa/loncom/build; make build 2>/dev/null; make tardist;`;
1.5       harris41   54: 
                     55: # The real world.  Just give them all the gunk for the unstable distribution.
1.4       harris41   56: `cd /home/loninst/auto; export CVS_PASSFILE=/home/loninst/.cvspass; export CVSROOT=:pserver:scott\@localhost:/home/cvs; rm -Rf loncapa-unstable; rm -Rf loncapa; cvs -Q export -r HEAD loncapa;`;
1.5       harris41   57: 
                     58: # Generate a README file that advises them about dealing with the gunk.
1.4       harris41   59: open(OUT,'>/home/loninst/auto/loncapa/README');
                     60: print(OUT <<END);
                     61: This is a CVS export of LON-CAPA generated on:
                     62: END
                     63: print(OUT `date`);
                     64: print(OUT <<END);
                     65: 
                     66: To generate an installable tarball distribution from this file, you can
                     67: execute the following commands:
                     68: cd loncom/build
                     69: make tardist
                     70: 
                     71: Note that the installable tarball distribution (the 'tardist' target)
                     72: is what encapsulates the stable releases of the LON-CAPA software (as
                     73: well as ensuring that LON-CAPA's distributability does not rely solely on
                     74: CVS software).
                     75: 
                     76: END
                     77: print(OUT <<END);
                     78: An alternative Makefile command sequence is:
                     79: cd loncom/build
                     80: make build
                     81: make install
                     82: 
                     83: For more information on Makefile targets, you can just enter the following
                     84: commands:
                     85: cd loncom/build
                     86: make help
                     87: 
                     88: Finally, if you encounter any problems, be sure to enter them
                     89: into the bug database http://bugs.lon-capa.org/ or, alternatively,
                     90: discuss them on one of the mailing lists available at
                     91: http://mail.lon-capa.org/.
                     92: END
                     93: close(OUT);
1.5       harris41   94: 
1.7       albertel   95: #'
1.5       harris41   96: # Roll the directory together into the unstable tarball.
1.4       harris41   97: `cd /home/loninst/auto; ln -s loncapa loncapa-unstable; tar cvvf loncapa-unstable.tar loncapa-unstable/* ;gzip -9 -f loncapa-unstable.tar`;
1.5       harris41   98: 
1.1       harris41   99: # ---------------------------------------- Dynamically generating documentation
1.9     ! albertel  100: 
        !           101: system("rm /home/loninst/public_html/*html");
        !           102: 
        !           103: # pdf and doc targets are borken right now
        !           104: #`cd /home/loninst/auto/loncapa/loncom/build; make pdfdoc`;
        !           105: #`cd /home/loninst/auto/loncapa/loncom/build; make doc`;
        !           106: #`cd /home/loninst/auto/loncapa/loncom/build; cp docs.tar.gz /home/loninst/public_html/docs/.`;
        !           107: #`cd /home/loninst/public_html/docs; tar xzf docs.tar.gz`;
        !           108: 
        !           109: `cd /home/loninst/auto/loncapa/loncom/build; make buildwebsite`;
1.1       harris41  110: 
                    111: # ------------------------------------ Copying over the latest unstable tarball
1.3       albertel  112: #my $filename=`cd /home/loninst/auto; find loncapa -type f -name *.tar.gz -maxdepth 1`;
                    113: #chomp($filename);
                    114: #$filename=~/loncapa\/loncapa\-(.*?)\.tar\.gz/;
                    115: #my $version=$1;
                    116: `cd /home/loninst/auto; cp -f loncapa-unstable.tar.gz ../public_html/versions/loncapa-unstable.tar.gz`;
                    117: #`cd /home/loninst/public_html/versions; rm -f loncapa-unstable.tar.gz; ln -s loncapa-$version-unstable.tar.gz loncapa-unstable.tar.gz`;
                    118: 
1.5       harris41  119: # ------------------------------------------------ Determine the latest version
1.3       albertel  120: my $filename=`cd /home/loninst/public_html/versions; find . -type f -name LATEST-IS-* -maxdepth 1`;
1.1       harris41  121: chomp($filename);
1.5       harris41  122: $filename =~ /LATEST-IS-(.*)/;
                    123: my $version = $1;
1.3       albertel  124: open(IN,"</home/loninst/public_html/versions/$filename");
1.5       harris41  125: my $releasedate = <IN>;
1.3       albertel  126: close(IN);
1.5       harris41  127: 
1.1       harris41  128: # ------------------ Updating the download page with the date of the last build
                    129: open(IN,"</home/loninst/public_html/docs/downloads/index.html");
1.5       harris41  130: my @lines = <IN>;
1.1       harris41  131: close(IN);
1.5       harris41  132: my $date = `date -I`; chomp($date);
                    133: my $text = join('',@lines);
                    134: $text =~ s/loncapa-unstable\.tar\.gz\<\/a\>.*?\./loncapa-unstable\.tar\.gz\<\/a\> (generated $date)\./;
                    135: $text =~ s/LATESTVERSION/$version/g;
                    136: $text =~ s/LATESTDATE/$releasedate/g;
1.1       harris41  137: open(OUT,">/home/loninst/public_html/docs/downloads/index.html");
                    138: print(OUT $text);
                    139: close(OUT);
1.7       albertel  140: 
                    141: #'
                    142: # ---------------------------------------- Determine the latest testing version
                    143: my $filename=`cd /home/loninst/public_html/versions; find . -type f -name LATEST-TESTING-IS-* -maxdepth 1`;
                    144: chomp($filename);
                    145: $filename =~ /LATEST-TESTING-IS-(.*)/;
                    146: my $version = $1;
1.8       albertel  147: open(IN,"</home/loninst/public_html/versions/$filename");
                    148: my $releasedate = <IN>;
                    149: close(IN);
                    150: # -------------- Updating the download page with the date of the last build
                    151: open(IN,"</home/loninst/public_html/docs/downloads/index.html");
                    152: my @lines = <IN>;
                    153: close(IN);
                    154: my $text = join('',@lines);
1.7       albertel  155: if ($version) {
                    156:     $text =~ s/LATESTTESTINGVERSION/$version/g;
                    157:     $text =~ s/LATESTTESTINGDATE/$releasedate/g;
                    158:     $text =~ s/TESTINGRELEASE_START//g;
                    159:     $text =~ s/TESTINGRELEASE_END//g;
                    160: } else {
                    161:     $text =~ s/TESTINGRELEASE_START.*TESTINGRELEASE_END//g;
                    162: }
1.8       albertel  163: open(OUT,">/home/loninst/public_html/docs/downloads/index.html");
                    164: print(OUT $text);
                    165: close(OUT);
1.9     ! albertel  166: 
        !           167: system("cp /home/loninst/auto/loncapa/doc/build/*.html /home/loninst/public_html/");

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>