Newer
Older
Digital_Repository / Repositories / otago_eprints / Makefile
SHELL=/bin/sh


# Load in machine-specific environment settings from environment_config.make.
# This include file MUST be created and MUST define the following variable:
#
# Used in Makefile
# EPRINTS_ROOT: /path/to/eprints/installation
#
# Used in ARCHIVE.xml configuration file
# EPRINTS_HOST: eprints host name
# EPRINTS_PORT: appropriate HTTP port
# EPRINTS_ADMIN_EMAIL: administrator email address (quote "@" with \)
# EPRINTS_ARCHIVE_NAME: full archive name as it appears in web pages
#
# Used in apachevhost.conf
# EPRINTS_ALLOWED_DOMAINS: domains that web registration is allowed from
#
include environment_config.make


SUBSTITUTIONS:=EPRINTS_HOST EPRINTS_PORT EPRINTS_ADMIN_EMAIL EPRINTS_ARCHIVE_NAME

ARCHIVE_NAME:=otago_eprints

BINDIR:=$(EPRINTS_ROOT)/bin

ARCHIVE_ROOT:=$(EPRINTS_ROOT)/archives/$(ARCHIVE_NAME)
ARCHIVE_CONFIG:=$(EPRINTS_ROOT)/archives/$(ARCHIVE_NAME).xml


.PHONY: deploy generate_apacheconf import_subjects generate_static \
	generate_abstracts generate_views restart_apache index stats


deploy: $(ARCHIVE_NAME).xml $(ARCHIVE_NAME)/cfg/apachevhost.conf
	@announce "Copying files..."
	@sudo rsync --verbose --cvs-exclude --exclude=Makefile \
		--exclude='*.make' --exclude='*_src.*' \
		--recursive --times . $(EPRINTS_ROOT)/archives > .del-rsync-output
	@-grep $(ARCHIVE_NAME) .del-rsync-output
	@announce "Correcting ownership..."
	sudo chown -R www:www $(ARCHIVE_CONFIG) $(ARCHIVE_ROOT)
	@-grep --quiet "$(ARCHIVE_NAME)\\.xml" .del-rsync-output && $(MAKE) generate_apacheconf
	@-grep --quiet "$(ARCHIVE_NAME)/cfg/subjects" .del-rsync-output && $(MAKE) import_subjects
	@-grep --quiet "\\(otago_eprints/cfg/static/\\)\\|\\(\\.xml\\)" .del-rsync-output && $(MAKE) generate_static
	@-grep --quiet "\\(\\.pm\\)\\|\\(\\.xml\\)\|\($(ARCHIVE_NAME)/cfg/subjects\)" .del-rsync-output && $(MAKE) generate_views
	@-grep --quiet "\\($(ARCHIVE_NAME)/cfg/ArchiveRenderConfig.pm\\)\\|\\(\\.xml\\)" .del-rsync-output && $(MAKE) generate_abstracts
	@-grep --quiet "\\(\\.conf\\)\\|\\(\\.pm\\)\\|\\(\\.xml\\)" .del-rsync-output && $(MAKE) restart_apache
	@rm -f .del-rsync-output


$(ARCHIVE_NAME).xml: $(ARCHIVE_NAME)_src.xml
	@announce "Creating $@"
	perl -p $(foreach SUB,$(SUBSTITUTIONS),-e "s/##$(SUB)##/$($(SUB))/;") $< > $@


$(ARCHIVE_NAME)/cfg/apachevhost.conf: $(ARCHIVE_NAME)/cfg/apachevhost_src.conf
	@announce "Creating $@"
	perl -p -e "s|##EPRINTS_ALLOWED_DOMAINS##|$(EPRINTS_ALLOWED_DOMAINS)|;"  $< > $@


generate_apacheconf:
	@announce "generate_apacheconf"
	@sudo -u www touch -r $(ARCHIVE_NAME).xml $(ARCHIVE_CONFIG)
	@sudo -u www $(BINDIR)/$@


import_subjects generate_static generate_abstracts generate_views:
	@announce "$@ $(ARCHIVE_NAME)"
	@sudo -u www $(BINDIR)/$@ $(ARCHIVE_NAME)


restart_apache:
	@announce "Waiting for Apache to shut down..."
	@sudo /sw/sbin/apachectl stop
	@sudo -u www touch -r $(ARCHIVE_NAME)/cfg/apachevhost.conf $(ARCHIVE_ROOT)/cfg/apachevhost.conf
	@sleep 10
	@announce "Waiting for Apache to start up..."
	@sudo /sw/sbin/apachectl start
	@while [ ! -f /sw/var/apache2/logs/httpd.pid ]; do echo > /dev/null; done


index:
	@announce "Rebuilding indexes..."
	@sudo -u www $(BINDIR)/indexer start --once --notdaemon


stats:
	@announce "Generating statistics..."
	@sudo -u www php $(EPRINTS_ROOT)/ePrintsStats/scripts/eprints-usage.php
#	@sudo -u www perl $(EPRINTS_ROOT)/ePrintsStats/scripts/add_country.pl


debug:
	@echo "ARCHIVE_NAME = [$(ARCHIVE_NAME)]"
	@echo "EPRINTS = [$(EPRINTS)]"
	@echo "ARCHIVE_ROOT = [$(ARCHIVE_ROOT)]"
	@echo "ARCHIVE_CONFIG = [$(ARCHIVE_CONFIG)]"