# The LearningOnline Network with CAPA # Scott Harrison # $Id: Makefile,v 1.92 2002/05/01 14:42:52 harris41 Exp $ DISTPROBE=`perl ./distprobe` DIST=$(DISTPROBE) CATEGORY="development" SOURCE=../.. TARGET="" NORESTORECONF="0" HOSTNAME="" LAUNCH=| perl OUTSTREAM=> SAVE=program.pl.$(TIMESTAMP) LAUNCHSAVE=$(OUTSTREAM) $(SAVE) METAMTARGET="" MTARGET="" VERSION=0.1 help: @echo "*** You need to specify a valid target ***" @echo "NOTE: You can specify options to your Makefile target." @echo "(option) DIST can be redhat7.1, debian, redhat6.2, or default" @echo "(option) CATEGORY can be runtime or development" @echo "(option) SOURCE is an absolute or relative directory path" @echo "(option) TARGET is an absolute or relative directory path" @echo "build: compile the CVS source tree" @echo "install: install from a compiled CVS source tree to a " @echo " specified TARGET destination on the filesystem" @echo "test: test different parts of the LON-CAPA system (TEST_*)" @echo "TEST_lpml_scripts: make sure that the system can process " @echo " the Linux Packaging Markup Language" @echo "TEST_system_dependencies: make sure that all needed system " @echo " components are active and present " @echo " on the server such as perl modules" @echo " and the MySQL database" @echo "TEST_web_layer: mimic a login and various system actions on " @echo " a LON-CAPA system" @echo "HTML: generate an HTML-formatted description of the LON-CAPA" @echo " CVS files" @echo "documentation_tree: compiles a documentation tree from the " @echo " CVS:doc directory" @echo "status: compare the TARGET filesystem with a compiled CVS " @echo " source directory" @echo "statuspost: post the results of "make status" to " @echo " TARGET/home/httpd/html/lon-status/filestatus.html" @echo "rpmstatus: compare the rpms on a system to defined lists " @echo " CVS:doc/otherfiles/cd_rpms and " @echo " CVS:doc/otherfiles/rpm_list.txt" @echo "rpmstatuspost: post the results of "make rpmstatus" to " @echo " TARGET/home/httpd/html/lon-status/rpmstatus.html" @echo "RPM: build LON-CAPA-base RPM from CVS repository" @echo "setup_RPM: build LON-CAPA-setup RPM from CVS repository" @echo " handy for CD-ROM generation" @echo "tardist: build a tarball that will upgrade the software on a " @echo " system" test: TEST_lpml_scripts TEST_system_dependencies TEST_web_layer @echo "ALL SYSTEM DEPENDENCY TESTS SUCCESSFUL" TEST_system_dependencies: @echo "TESTING SYSTEM DEPENDENCIES" cd system_dependencies; make TEST_lpml_scripts: @echo "TESTING LPML INSTALLATION CODE" cd ../test; perl filecomparetest.pl TEST_web_layer: @echo "TESTING WEB LAYER" cd weblayer_test; make TEST_hosts_tab: @echo "Testing hosts.tab" @if (test -h ../hosts.tab); then \ echo "there is a defined link; assume okay"; \ else echo "**** ERROR **** hosts.tab not defined!" && \ echo -n "You need to do one of the following within your " && \ echo "CVS repository (cd loncapa/loncom)" && \ echo " 1) ln -s production_hosts.tab hosts.tab" && \ echo " 2) ln -s development_hosts.tab hosts.tab" && \ echo "or 3) ln -s rawhide_hosts.tab hosts.tab" && \ echo "(you most likely want option #1, production_hosts.tab)" && \ exit 1; \ fi NET_hosts_tab: make TIMESTAMP=`date +"%s"` METAMTARGET="TRANSPORT" \ MTARGET="hosts_tab" HOSTNAME="$(HOSTNAME)" lpmladm hosts_tab: TEST_hosts_tab cat $(SOURCE)/doc/loncapafiles/loncapafiles.lpml | \ perl xfml_parse.pl $(SOURCE)/doc/loncapafiles/valid_hosts.xfml | \ perl lpml_parse.pl install $(CATEGORY) $(DIST) "$(SOURCE)" \ "$(TARGET)" > Makefile.install make -f Makefile.install directories make -f Makefile.install files @echo "If hosts.tab has changed, restart httpd and loncontrol:" @echo " /etc/rc.d/init.d/httpd restart" @echo " /etc/rc.d/init.d/loncontrol restart" lpmladm: @if (test $(METAMTARGET) = "TRANSPORT"); then \ echo "Transporting to $(HOSTNAME)"; \ sudo make DIST=$(DIST) CATEGORY=$(CATEGORY) \ SOURCE="$(SOURCE)" \ TARGET="lpmladm.$(TIMESTAMP)" \ NORESTORECONF="$(NORESTORECONF)" "$(MTARGET)"; \ cd lpmladm.$(TIMESTAMP); \ sudo tar czvf ../tarball$(TIMESTAMP).tar.gz .; \ cd ..; scp tarball$(TIMESTAMP).tar.gz \ lpmladm@$(HOSTNAME):~/tarball$(TIMESTAMP).tar.gz; \ ssh lpmladm@$(HOSTNAME) sudo mv tarball$(TIMESTAMP).tar.gz /; \ ssh lpmladm@$(HOSTNAME) sudo tar -x -z -v -C / \ -p --same-owner -f \ /tarball$(TIMESTAMP).tar.gz; \ ssh lpmladm@$(HOSTNAME) sudo rm -f \ /tarball$(TIMESTAMP).tar.gz; \ elif (test $(METAMTARGET) = "LAUNCH"); then \ echo "Launching process on $(HOSTNAME)"; \ LAUNCHSAVE=$(OUTSTREAM) $(SAVE); \ make DIST=$(DIST) CATEGORY=$(CATEGORY) SOURCE="$(SOURCE)" \ TARGET="$(TARGET)" NORESTORECONF="$(NORESTORECONF)" \ LAUNCH="$(LAUNCHSAVE)" "$(MTARGET)"; \ scp $(SAVE) lpmladm@$(HOSTNAME):~/$(SAVE); \ ssh lpmladm@$(HOSTNAME) sudo perl $(SAVE); \ ssh lpmladm@$(HOSTNAME) sudo rm -f $(SAVE); \ else \ echo "**** ERROR **** Incorrect METAMTARGET"; \ fi HTML: install -d HTML cp $(SOURCE)/doc/loncapafiles/*.gif HTML cat $(SOURCE)/doc/loncapafiles/loncapafiles.lpml | \ perl lpml_parse.pl html development default "$(SOURCE)" '$(TARGET)' \ > HTML/index.html status: install -d HTML cp $(SOURCE)/doc/loncapafiles/*.gif HTML cat $(SOURCE)/doc/loncapafiles/loncapafiles.lpml | \ perl lpml_parse.pl html $(CATEGORY) $(DIST) "$(SOURCE)" "($TARGET)" | \ perl lpml_html_posteval.pl > \ HTML/filestatus.html statuspost: status cp $(SOURCE)/doc/loncapafiles/*.gif \ $(TARGET)/home/httpd/html/lon-status cp HTML/filestatus.html \ $(TARGET)/home/httpd/html/lon-status/filestatus.html rpmstatus: install -d RPMSTATUS rpm -qa --queryformat \ '%{NAME}\t%{VERSION}\t%{RELEASE}\t%{BUILDTIME}\n' | sort > \ RPMSTATUS/current.tmp cat $(SOURCE)/doc/otherfiles/cd_rpms.txt > RPMSTATUS/standard.tmp cat $(SOURCE)/doc/otherfiles/rpm_list.txt > RPMSTATUS/expected.tmp perl rpmparse.pl RPMSTATUS/standard.tmp RPMSTATUS/current.tmp \ RPMSTATUS/expected.tmp > RPMSTATUS/rpmstatus.html rpmstatuspost: rpmstatus cp RPMSTATUS/rpmstatus.html /home/httpd/html/lon-status/rpmstatus.html configinstall: Makefile.configinstall make -f Makefile.configinstall SOURCE="$(SOURCE)" TARGET="$(TARGET)" \ configfiles if (test "0" = $(NORESTORECONF)); then \ perl loncaparestoreconfigurations suffix .lpmlnew; fi Makefile.configinstall: $(SOURCE)/doc/loncapafiles/loncapafiles.lpml lpml_parse.pl cat $(SOURCE)/doc/loncapafiles/loncapafiles.lpml | \ perl lpml_parse.pl configinstall $(CATEGORY) $(DIST) "$(SOURCE)" \ "$(TARGET)" > Makefile.configinstall warningnote: @if (test -s WARNINGS); then \ W=`grep -c '\*\*\*\* WARNING' WARNINGS`; \ E=`grep -c '\*\*\*\* ERROR' WARNINGS`; \ N=`grep -c '\*\*\*\* NOTE' WARNINGS`; \ echo "---> $$W WARNINGS ENCOUNTERED! "; \ echo "---> $$E ERRORS ENCOUNTERED! "; \ echo "---> $$N NOTES ENCOUNTERED! "; \ echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"; \ echo "!!!! Please read the WARNINGS file !!!!"; \ echo "!!!! to make sure everything is !!!!"; \ echo "!!!! correct and taken care of !!!!"; \ echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"; \ fi NET_webserverconf: make TIMESTAMP=`date +"%s"` METAMTARGET="LAUNCH" \ MTARGET="webserverconf" HOSTNAME="$(HOSTNAME)" lpmladm webserverconf: cat $(SOURCE)/doc/loncapafiles/webserver.piml | \ perl piml_parse.pl $(CATEGORY) $(DIST) "$(TARGET)" $(LAUNCH) sanitycheck: cat $(SOURCE)/doc/loncapafiles/sanitycheck.piml | \ perl piml_parse.pl $(CATEGORY) $(DIST) "$(TARGET)" $(LAUNCH) | \ tee -a WARNINGS postinstall: make webserverconf make sanitycheck install: TEST_hosts_tab Makefile.install Makefile echo -n "" > WARNINGS make -f Makefile.install SOURCE="$(SOURCE)" TARGET="$(TARGET)" \ directories make -f Makefile.install SOURCE="$(SOURCE)" TARGET="$(TARGET)" files make -f Makefile.install SOURCE="$(SOURCE)" TARGET="$(TARGET)" links make SOURCE="$(SOURCE)" TARGET="$(TARGET)" \ NORESTORECONF="$(NORESTORECONF)" configinstall make postinstall make warningnote echo "You can run 'make test' to see if your system is ready to go!" Makefile.install: $(SOURCE)/doc/loncapafiles/loncapafiles.lpml lpml_parse.pl cat $(SOURCE)/doc/loncapafiles/loncapafiles.lpml | \ perl lpml_parse.pl install $(CATEGORY) $(DIST) "$(SOURCE)" \ "$(TARGET)" > Makefile.install build: Makefile.build pod2html.sh pod2man.sh install -d $(SOURCE)/doc/man install -d $(SOURCE)/doc/scripts install -d $(SOURCE)/doc/lib/perl/Apache echo -n "" > WARNINGS make -f Makefile.build all make warningnote Makefile.build: $(SOURCE)/doc/loncapafiles/loncapafiles.lpml lpml_parse.pl cat $(SOURCE)/doc/loncapafiles/loncapafiles.lpml | \ perl lpml_parse.pl build $(CATEGORY) $(DIST) "$(SOURCE)" "$(TARGET)" \ > Makefile.build RPM: BinaryRoot base_rpm_file_list cat $(SOURCE)/doc/loncapafiles/loncapafiles.lpml | \ perl lpml_parse.pl make_rpm $(CATEGORY) $(DIST) $(SOURCE) $(TARGET) \ > base_customizerpm.xml cat base_rpm_file_list.txt | perl make_rpm.pl base 3.2 '' '' \ BinaryRoot base_customizerpm.xml setup_RPM: echo "SetupBinaryRoot/etc/passwd" > setup_rpm_file_list.txt echo "SetupBinaryRoot/etc/group" >> setup_rpm_file_list.txt echo "SetupBinaryRoot/etc/hosts.deny" >> setup_rpm_file_list.txt echo "SetupBinaryRoot/home/www" >> setup_rpm_file_list.txt echo "SetupBinaryRoot/etc/pam.d/passwd" >> setup_rpm_file_list.txt echo "SetupBinaryRoot/etc/pam.d/login" >> setup_rpm_file_list.txt perl setup_rpm_binaryroot.pl cat setup_rpm_file_list.txt | perl make_rpm.pl setup 3.2 '' '' \ SetupBinaryRoot customizerpm.xml DPKG: make TARGET='lon-capa-$(VERSION)' NORESTORECONF='1' install @echo "You will next need to follow instructions at:" @echo "http://people.debian.org/~jaldhar/make_package1.html" @echo "A directory with a snapshot of the debian package files" @echo "is LON-CAPA-base." # What DPKG steps need to happen (for future implementation): # export EMAIL="" ... probably sharrison@mail.lon-capa.org # deb-make # edit debian/control # make debian/dirs file # make debian/copyright file # debian/README.debian... point them to LON-CAPA URLS # debian/changelog # debian/conffiles # debuild # and maybe do some GPG-related steps around here base_rpm_file_list: cat $(SOURCE)/doc/loncapafiles/loncapafiles.lpml | \ perl lpml_parse.pl rpm_file_list $(CATEGORY) $(DIST) $(SOURCE) \ 'BinaryRoot' | sort > base_rpm_file_list.txt BinaryRoot: base_rpm_file_list make TARGET='BinaryRoot' NORESTORECONF='1' install # Generates CVS:loncom/build/docs; root location of install.lon-capa.org doc: install -d docs install -m 0755 -d docs/icons install -m 0644 $(SOURCE)/doc/icons/[^C][^V]* docs/icons install -m 0755 -d docs/reconfig perl doc_template.pl $(SOURCE)/doc/templates/template.html \ $(SOURCE)/doc/build/reconfig.html > docs/reconfig/index.html install -m 0755 -d docs/reconfig/confexamples install -m 0644 $(SOURCE)/doc/build/confexamples/[^C][^V]* \ docs/reconfig/confexamples perl doc_template.pl $(SOURCE)/doc/templates/template.html \ $(SOURCE)/doc/build/installindex.html > docs/index.html install -m 0755 -d docs/license perl doc_template.pl $(SOURCE)/doc/templates/template.html \ $(SOURCE)/doc/build/license.html > docs/license/index.html install -m 0755 -d docs/contact perl doc_template.pl $(SOURCE)/doc/templates/template.html \ $(SOURCE)/doc/build/contact.html > docs/contact/index.html install -m 0755 -d docs/faq perl doc_template.pl $(SOURCE)/doc/templates/template.html \ $(SOURCE)/doc/build/faq.html > docs/faq/index.html install -m 0755 -d docs/downloads perl doc_template.pl $(SOURCE)/doc/templates/template.html \ $(SOURCE)/doc/build/download.html > docs/downloads/index.html install -m 0755 -d docs/install perl doc_template.pl $(SOURCE)/doc/templates/template.html \ $(SOURCE)/doc/build/install.html > docs/install/index.html install -m 0755 -d docs/upgrade perl doc_template.pl $(SOURCE)/doc/templates/template.html \ $(SOURCE)/doc/build/upgrade.html > docs/upgrade/index.html cd docs; tar czvpf ../docs.tar.gz . documentation_tree: cvsreport install -d docs install $(SOURCE)/doc/build/cvsreport.html docs/cvsreport.html install $(SOURCE)/doc/build/doc.html docs/index.html install -d docs/hardware install $(SOURCE)/doc/hardware/hardware.html \ docs/hardware/hardware.html install -d docs/3.1 install $(SOURCE)/doc/build/install.html docs/3.1/index.html install $(SOURCE)/doc/build/instructions_with_cd.html \ docs/3.1/instructions_with_cd.html install $(SOURCE)/doc/build/libraryserverconfiguration.gif \ docs/3.1/libraryserverconfiguration.gif install $(SOURCE)/doc/build/librarysystemsettings.gif \ docs/3.1/librarysystemsettings.gif install -d docs/cvsupgrade install $(SOURCE)/doc/build/cvsupgrade.html docs/cvsupgrade/index.html install -d docs/upgrade install $(SOURCE)/doc/build/upgrade.html docs/upgrade/index.html install -d docs/reconfig install $(SOURCE)/doc/build/reconfig.html docs/reconfig/index.html install -d docs/3.1/otherfiles install $(SOURCE)/doc/otherfiles/rpm_list.txt \ docs/3.1/otherfiles/rpm_list.txt install $(SOURCE)/doc/build/loncapanetwork.html \ docs/loncapanetwork.html install $(SOURCE)/doc/build/loncapanfs.html docs/loncapanfs.html install $(SOURCE)/doc/build/loncapaappleshares.html \ docs/loncapaappleshares.html install $(SOURCE)/doc/build/loncapasqldatabase.html \ docs/loncapasqldatabase.html install $(SOURCE)/doc/build/loncapapasswords.html \ docs/loncapapasswords.html install $(SOURCE)/doc/build/loncapapasswordauthentication.html \ docs/loncapapasswordauthentication.html install $(SOURCE)/doc/build/loncapatimesync.html \ docs/loncapatimesync.html install $(SOURCE)/doc/build/loncapamathequivalency.html \ docs/loncapamathequivalency.html tar czvf install.lon-capa.org_docs.tar.gz docs rm -Rf docs tardist: cat $(SOURCE)/doc/loncapafiles/buildfiles.lpml | \ perl lpml_parse.pl MANIFEST development default \ '$(SOURCE)' '$(TARGET)' | grep '[[:alnum:]]' > $(SOURCE)/MANIFEST cat $(SOURCE)/doc/loncapafiles/loncapafiles.lpml | \ perl lpml_parse.pl MANIFEST development default \ '$(SOURCE)' '$(TARGET)' | grep '[[:alnum:]]' >> $(SOURCE)/MANIFEST cd $(SOURCE); find . -type f -name 'Entries' | grep 'CVS/Entries' >> \ MANIFEST echo 'README' >> $(SOURCE)/MANIFEST echo 'UPDATE' >> $(SOURCE)/MANIFEST echo 'TEST' >> $(SOURCE)/MANIFEST echo 'MANIFEST' >> $(SOURCE)/MANIFEST echo 'loncom/rawhide_hosts.tab' >> $(SOURCE)/MANIFEST echo 'loncom/production_hosts.tab' >> $(SOURCE)/MANIFEST echo 'loncom/development_hosts.tab' >> $(SOURCE)/MANIFEST echo 'doc/man' >> $(SOURCE)/MANIFEST echo 'doc/lib' >> $(SOURCE)/MANIFEST echo 'doc/lib/perl' >> $(SOURCE)/MANIFEST echo 'doc/lib/perl/Apache' >> $(SOURCE)/MANIFEST echo 'doc/scripts' >> $(SOURCE)/MANIFEST echo '#!/bin/sh' > $(SOURCE)/UPDATE echo 'cd loncom/build; make build; make install' >> $(SOURCE)/UPDATE echo '#!/bin/sh' > $(SOURCE)/TEST echo 'cd loncom/build; make test' >> $(SOURCE)/TEST chmod a+rx $(SOURCE)/UPDATE chmod a+rx $(SOURCE)/TEST cp $(SOURCE)/doc/shortest_path_redhat7.2.txt $(SOURCE)/README cd $(SOURCE); \ tar --no-recursion --numeric-owner --files-from MANIFEST \ -czf loncapa.tar.gz 2>WARNINGS || [ "0" == "0" ] cat $(SOURCE)/WARNINGS | \ xargs --replace=XXX echo '**** WARNING **** XXX' > WARNINGS rm -f $(SOURCE)/WARNINGS make warningnote cvsreport: clean: rm -f $(SOURCE)/README rm -f $(SOURCE)/UPDATE rm -f $(SOURCE)/TEST rm -f $(SOURCE)/loncapa.tar.gz rm -Rf HTML rm -f Makefile.build rm -f Makefile.install rm -f Makefile.configinstall rm -Rf BinaryRoot rm -Rf SetupBinaryRoot rm -Rf LON-CAPA-base rm -f base_rpm_file_list.txt rm -f base_customizerpm.xml rm -f setup_rpm_file_list.txt rm -f docs.tar.gz rm -Rf docs rm -f program.pl* rm -Rf lpmladm.* make -f Makefile.cvs clean rm -f WARNINGS 500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.