File:  [LON-CAPA] / loncom / build / Makefile
Revision 1.110: download - view: text, annotated - select for diffs
Mon May 13 17:35:20 2002 UTC (21 years, 11 months ago) by harris41
Branches: MAIN
CVS tags: HEAD
make sure that files attempt to install off the tarball irrespective of
status of build (eventually we either distribute precompiled builds
or have some sort of interactive pause that tells the user about the build
BUG 431  (the problem was that make build; make install... introduces
a serial dependency whereas splitting them onto two different lines
removes that dependency)

# The LearningOnline Network with CAPA

# Scott Harrison
# $Id: Makefile,v 1.110 2002/05/13 17:35:20 harris41 Exp $

DISTPROBE=`perl ./distprobe`
DIST=$(DISTPROBE)
CATEGORY="development"
SOURCE=../..
TARGET=""
DIRTARGET=loncapa
NORESTORECONF="0"
HOSTNAME=""
LAUNCH=| perl
QUERYLAUNCH=> /tmp/loncapa_query.pl; perl /tmp/loncapa_query.pl
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, 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

updatequery:
	cat $(SOURCE)/doc/loncapafiles/updatequery.piml | \
	perl piml_parse.pl $(CATEGORY) $(DIST) "$(TARGET)" $(QUERYLAUNCH) | \
	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
	@if (test -e installation_manual.pdf); then \
		cp -vf installation_manual.pdf docs/.; \
	else \
		touch docs/installation_manual.pdf; \
	fi
	install -m 0755 -d docs/icons
	install -m 0644 $(SOURCE)/doc/icons/[^C][^V]* docs/icons
	install -m 0755 -d docs/reconfig
	cd docs; ln -fs installation_manual.pdf index.pdf
	cd docs/reconfig; ln -fs ../installation_manual.pdf index.pdf
	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
	cd docs/license; ln -fs ../installation_manual.pdf index.pdf
	perl doc_template.pl $(SOURCE)/doc/templates/template.html \
		$(SOURCE)/doc/build/license.html > docs/license/index.html
	install -m 0755 -d docs/contact
	cd docs/contact; ln -fs ../installation_manual.pdf index.pdf
	perl doc_template.pl $(SOURCE)/doc/templates/template.html \
		$(SOURCE)/doc/build/contact.html > docs/contact/index.html
	install -m 0755 -d docs/faq
	cd docs/faq; ln -fs ../installation_manual.pdf index.pdf
	perl doc_template.pl $(SOURCE)/doc/templates/template.html \
		$(SOURCE)/doc/build/faq.html > docs/faq/index.html
	install -m 0755 -d docs/downloads
	cd docs/downloads; ln -fs ../installation_manual.pdf download.pdf
	perl doc_template.pl $(SOURCE)/doc/templates/template.html \
		$(SOURCE)/doc/build/download.html > docs/downloads/index.html
	install -m 0755 -d docs/install
	cd docs/install; ln -fs ../installation_manual.pdf install.pdf
	perl doc_template.pl $(SOURCE)/doc/templates/template.html \
		$(SOURCE)/doc/build/install.html > docs/install/index.html
	install -m 0755 -d docs/upgrade
	cd docs/upgrade; ln -fs ../installation_manual.pdf upgrade.pdf
	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 .

pdfdoc: TEST_html2ps
	install -d pdfdoc
	/usr/local/html2ps/bin/html2ps -D \
	$(SOURCE)/doc/build/installindex_noform.html > pdfdoc/installindex.ps
	/usr/local/html2ps/bin/html2ps -D \
	$(SOURCE)/doc/build/reconfig.html | \
	perl -nle 's/\[EXAMPLE\]/\[EXAMPLE \(at end of document\)\]/g;print' \
	> pdfdoc/reconfig.ps
	/usr/local/html2ps/bin/html2ps -D \
	$(SOURCE)/doc/build/install.html > pdfdoc/install.ps
	/usr/local/html2ps/bin/html2ps -D \
	$(SOURCE)/doc/build/upgrade.html > pdfdoc/upgrade.ps
	/usr/local/html2ps/bin/html2ps -D \
	$(SOURCE)/doc/build/faq.html > pdfdoc/faq.ps
	/usr/local/html2ps/bin/html2ps -D \
	$(SOURCE)/doc/build/download.html > pdfdoc/download.ps
	/usr/local/html2ps/bin/html2ps -D \
	$(SOURCE)/doc/build/contact.html > pdfdoc/contact.ps
	/usr/local/html2ps/bin/html2ps -D \
	$(SOURCE)/doc/build/license.html > pdfdoc/license.ps
#       This creates a bad confexamples.ps... so take the long way around
#	cd $(SOURCE)/doc/build/confexamples; \
#	mpage -P- -1 -H [^C]* > ../../../loncom/build/pdfdoc/confexamples.ps
	install -d pdfdoc/confexamples
	cd $(SOURCE)/doc/build/confexamples; \
	find . -type f | cut -b3- | grep -v '^C' | perl -nle \
	'`mpage -P- -1 -H $$_ > ../../../loncom/build/pdfdoc/confexamples/$$_.ps`;'
	echo '' > pdfdoc/contents.txt
	echo '' >> pdfdoc/contents.txt
	echo '          The Learning Online Network' >> pdfdoc/contents.txt
	echo '                    with the' >> pdfdoc/contents.txt
	echo '     Computer-Assisted Personalized Approach' >> \
	pdfdoc/contents.txt
	echo '' >> pdfdoc/contents.txt
	echo '' >> pdfdoc/contents.txt
	echo 'CONTENTS' >> pdfdoc/contents.txt
	echo '--------' >> pdfdoc/contents.txt
	echo 'Opening' >> pdfdoc/contents.txt
	echo 'Configuration' >> pdfdoc/contents.txt
	echo 'Installation' >> pdfdoc/contents.txt
	echo 'Upgrading a LON-CAPA Server' >> pdfdoc/contents.txt
	echo 'FAQ' >> pdfdoc/contents.txt
	echo 'Download' >> pdfdoc/contents.txt
	echo 'Contact Information' >> pdfdoc/contents.txt
	echo 'License Information' >> pdfdoc/contents.txt
	echo 'Configuration Examples' >> pdfdoc/contents.txt
	mpage -P- -1 \
	pdfdoc/contents.txt \
	pdfdoc/installindex.ps \
	pdfdoc/reconfig.ps \
	pdfdoc/install.ps \
	pdfdoc/upgrade.ps \
	pdfdoc/faq.ps \
	pdfdoc/download.ps \
	pdfdoc/contact.ps \
	pdfdoc/license.ps \
	pdfdoc/confexamples/*.ps \
	> pdfdoc/installation_manual.ps
	ps2pdf pdfdoc/installation_manual.ps pdfdoc/installation_manual.pdf
	mv -vf pdfdoc/installation_manual.pdf .

TEST_html2ps:
	@if (test -e /usr/local/html2ps/bin/html2ps); then \
		echo "I can find html2ps; assume okay"; \
	else \
	echo "**** ERROR **** cannot find /usr/local/html2ps/bin/html2ps!" && \
        echo "Please visit http://www.tdb.uu.se/~jan/html2ps.html" && \
	exit 1; \
	fi

tardist:
	# ----------- MANIFEST the building, testing and standard loncapa files
	cat $(SOURCE)/doc/loncapafiles/buildfiles.lpml | \
	perl lpml_parse.pl MANIFEST development default \
	'$(SOURCE)' '$(TARGET)' | grep '[[:alnum:]]' > $(SOURCE)/MANIFEST
	cat $(SOURCE)/doc/loncapafiles/testfiles.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
	# ------ CVS/Entries directories to retain 'time-checking' intelligence
	cd $(SOURCE); find . -type f -name 'Entries' | grep 'CVS/Entries' >> \
	MANIFEST
	# ---- Files for top-level (the vanilla layer that the user first sees)
	echo 'README' >> $(SOURCE)/MANIFEST
	echo 'UPDATE' >> $(SOURCE)/MANIFEST
	echo 'TEST' >> $(SOURCE)/MANIFEST
	echo 'CHECKRPMS' >> $(SOURCE)/MANIFEST
	# ---------------------------------- might as well include the MANIFEST
	echo 'MANIFEST' >> $(SOURCE)/MANIFEST
	# ------------------------------------------ hosts.tab are belong to us
	echo 'loncom/rawhide_hosts.tab' >> $(SOURCE)/MANIFEST
	echo 'loncom/production_hosts.tab' >> $(SOURCE)/MANIFEST
	echo 'loncom/development_hosts.tab' >> $(SOURCE)/MANIFEST
	# ------------------ Files needed for dynamically generated directories
	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
	# --------------------------- Point UPDATE to the internal make process
	echo '#!/bin/sh' > $(SOURCE)/UPDATE
	echo 'touch loncom/build/WARNINGS' >> $(SOURCE)/UPDATE;
	echo 'ln -s loncom/build/WARNINGS WARNINGS' >> $(SOURCE)/UPDATE;
	echo 'cd loncom/build; make build' >> $(SOURCE)/UPDATE
	echo 'make install' >> $(SOURCE)/UPDATE
	echo 'make updatequery' >> $(SOURCE)/UPDATE
	echo 'make hosts_tab' >> $(SOURCE)/UPDATE
	# ----------------------------- Point TEST to the internal make process
	echo '#!/bin/sh' > $(SOURCE)/TEST
	echo 'cd loncom/build; make test' >> $(SOURCE)/TEST
	# ----------------------------- Copy CHECKRPMS to the vanilla top-level
	cp $(SOURCE)/loncom/build/CHECKRPMS $(SOURCE)/CHECKRPMS
	# ----------------------- vanilla executables must indeed be executable
	chmod a+rx $(SOURCE)/UPDATE
	chmod a+rx $(SOURCE)/TEST
	chmod a+rx $(SOURCE)/CHECKRPMS
	# -------------------------------- Copy README to the vanilla top-level
	cp $(SOURCE)/doc/shortest_path_redhat7.2.txt $(SOURCE)/README
	# --------------------------------------------------- Clean up MANIFEST
	cd $(SOURCE); \
	sort MANIFEST | perl -nle 'print "$(DIRTARGET)/$$_"' | \
	perl -nle 's/\w+\/\.\.\///g;s/\w+\/\.\.\///g;print' | \
	perl -nle 's/\w+\/\.\.\///g;s/\w+\/\.\.\///g;print' | \
	perl -nle 's/\w+\/\.\.\///g;s/\w+\/\.\.\///g;print' | \
	perl -nle 's/\/\.\//\//g;print' | sort | uniq > \
	MANIFEST_loncapa
	# -------------------------------------------------------- Make tardist
	@cd $(SOURCE); \
	if (test -h $(DIRTARGET)); then \
		echo "$(DIRTARGET) link already defined; assume okay"; \
	else \
		ln -s . $(DIRTARGET); \
	fi
	cd $(SOURCE); \
	tar --no-recursion --numeric-owner --files-from MANIFEST_loncapa \
	-h -czf loncapa.tar.gz 2>WARNINGS || [ "0" == "0" ]
	cat $(SOURCE)/WARNINGS | \
	xargs --replace=XXX echo '**** WARNING **** XXX' > WARNINGS
	rm -f $(SOURCE)/WARNINGS
	make warningnote

clean:
	rm -f $(SOURCE)/README
	rm -f $(SOURCE)/UPDATE
	rm -f $(SOURCE)/TEST
	rm -f $(SOURCE)/MANIFEST
	rm -f $(SOURCE)/loncapa
	rm -f $(SOURCE)/loncapa.tar.gz
	rm -Rf HTML
	rm -f installation_manual.pdf
	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 -Rf pdfdoc
	rm -f program.pl*
	rm -Rf lpmladm.*
	make -f Makefile.cvs clean
	rm -f WARNINGS

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