SHELL = /bin/sh
PN ?= portage
PF ?= portage
HOMEPAGE ?= http://www.gentoo.org/proj/en/portage/index.xml
PWD ?= $(shell pwd)
S ?= $(PWD)
WORKDIR ?= $(PWD)
DESTDIR = $(PWD)/image/
srcdir = $(S)
prefix = /usr
sysconfdir = /etc
exec_prefix = $(prefix)
bindir = $(exec_prefix)/bin
sbindir = $(exec_prefix)/sbin
libdir = $(exec_prefix)/lib
datarootdir = $(prefix)/share
datadir = $(datarootdir)
mandir = $(datarootdir)/man
docdir = $(datarootdir)/doc/$(PF)
htmldir = $(docdir)/html
portage_datadir = $(datarootdir)/$(PN)
portage_confdir = $(portage_datadir)/config
portage_setsdir = $(portage_confdir)/sets
portage_base = $(libdir)/$(PN)
EPYDOC_OPTS = -qqqqq --no-frames --show-imports
INSMODE = 0644
EXEMODE = 0755
DIRMODE = 0755
SYSCONFDIR_FILES = etc-update.conf dispatch-conf.conf
PORTAGE_CONFDIR_FILES = make.conf.example make.globals repos.conf
LOGROTATE_FILES = elog-save-summary
BINDIR_FILES = ebuild egencache emerge emerge-webrsync \
	emirrordist portageq quickpkg repoman
SBINDIR_FILES = archive-conf dispatch-conf emaint \
	env-update etc-update fixpackages regenworld
DOCS = ChangeLog NEWS RELEASE-NOTES
LINGUAS ?= $(shell cd "$(srcdir)/man" && find -mindepth 1 -type d)

ifdef PYTHONPATH
	PYTHONPATH := $(srcdir)/pym:$(PYTHONPATH)
else
	PYTHONPATH := $(srcdir)/pym
endif

all: docbook epydoc

docbook:
	set -e; \
	touch "$(srcdir)/doc/fragment/date"; \
	$(MAKE) -C "$(srcdir)/doc" xhtml xhtml-nochunks

epydoc:
	set -e; \
	env PYTHONPATH="$(PYTHONPATH)" epydoc \
		-o "$(WORKDIR)/epydoc" \
		--name $(PN) \
		--url "$(HOMEPAGE)" \
		$(EPYDOC_OPTS) \
		$$(cd "$(srcdir)" && find pym -name '*.py' | sed \
		-e s:/__init__.py$$:: \
		-e s:\.py$$:: \
		-e s:^pym/:: \
		-e s:/:.:g \
		| sort); \
	rm -f "$(WORKDIR)/epydoc/api-objects.txt"; \

test:
	set -e; \
	"$(srcdir)/pym/portage/tests/runTests"; \

install:
	set -e; \
	cd "$(srcdir)/cnf"; \
	install -d -m$(DIRMODE) "$(DESTDIR)$(sysconfdir)"; \
	install -m$(INSMODE) $(SYSCONFDIR_FILES) "$(DESTDIR)$(sysconfdir)"; \
	\
	install -d -m$(DIRMODE) "$(DESTDIR)$(portage_confdir)"; \
	cd "$(srcdir)/cnf"; \
	install -m$(INSMODE) $(PORTAGE_CONFDIR_FILES) \
		"$(DESTDIR)$(portage_confdir)"; \
	install -d -m$(DIRMODE) "$(DESTDIR)$(portage_setsdir)"; \
	cd "$(S)/cnf/sets"; \
	install -m$(INSMODE) *.conf "$(DESTDIR)$(portage_setsdir)"; \
	\
	install -d -m$(DIRMODE) "$(DESTDIR)$(sysconfdir)/logrotate.d"; \
	cd "$(srcdir)/cnf/logrotate.d"; \
	install -m$(INSMODE) $(LOGROTATE_FILES) \
		"$(DESTDIR)$(sysconfdir)/logrotate.d"; \
	\
	for x in $$(cd "$(srcdir)" && find bin -type d) ; do \
		cd "$(srcdir)/$$x"; \
		install -d -m$(DIRMODE) "$(DESTDIR)$(portage_base)/$$x"; \
		files=$$(find . -mindepth 1 -maxdepth 1 -type f ! -type l); \
		if [ -n "$$files" ] ; then \
			install -m$(EXEMODE) $$files \
				"$(DESTDIR)$(portage_base)/$$x"; \
		fi; \
		symlinks=$$(find . -mindepth 1 -maxdepth 1 -type l); \
		if [ -n "$$symlinks" ] ; then \
			cp -P $$symlinks "$(DESTDIR)$(portage_base)/$$x"; \
		fi; \
	done; \
	\
	for x in $$(cd "$(srcdir)" && find pym/* -type d \
		! -path "pym/portage/tests*") ; do \
		cd "$(srcdir)/$$x"; \
		files=$$(echo *.py); \
		if [ -z "$$files" ] || [ "$$files" = "*.py" ]; then \
			# __pycache__ directories contain no py files \
			continue; \
		fi; \
		install -d -m$(DIRMODE) "$(DESTDIR)$(portage_base)/$$x"; \
		install -m$(INSMODE) $$files "$(DESTDIR)$(portage_base)/$$x"; \
	done; \
	\
	install -d -m$(DIRMODE) "$(DESTDIR)$(bindir)"; \
	relative_path=".."; \
	x=$(bindir) ; \
	y="$(portage_base)"; \
	if [ "$${x#$(prefix)}" != "$$x" ] && \
		[ "$${y#$(prefix)}" != "$$y" ]; then \
		x=$${x#$(prefix)}; \
		y=$${y#$(prefix)}; \
	fi; \
	x=$${x%/*}; \
	while [ -n "$$x" ] ; do \
		relative_path=$${relative_path}/..; \
		x=$${x%/*}; \
	done; \
	relative_path=$$relative_path$$y; \
	for x in $(BINDIR_FILES) ; do \
		ln -sf "$$relative_path/bin/$$x" \
			"$(DESTDIR)$(bindir)/$$x"; \
	done; \
	\
	install -d -m$(DIRMODE) "$(DESTDIR)$(sbindir)"; \
	relative_path=".."; \
	x=$(sbindir) ; \
	y="$(portage_base)"; \
	if [ "$${x#$(prefix)}" != "$$x" ] && \
		[ "$${y#$(prefix)}" != "$$y" ]; then \
		x=$${x#$(prefix)}; \
		y=$${y#$(prefix)}; \
	fi; \
	x=$${x%/*}; \
	while [ -n "$$x" ] ; do \
		relative_path=$${relative_path}/..; \
		x=$${x%/*}; \
	done; \
	relative_path=$$relative_path$$y; \
	for x in $(SBINDIR_FILES) ; do \
		ln -sf "$$relative_path/bin/$$x" \
			"$(DESTDIR)$(sbindir)/$$x"; \
	done; \
	\
	ln -sf "$$relative_path/bin/env-update" \
		"$(DESTDIR)$(sbindir)/update-env"; \
	ln -sf "$$relative_path/bin/etc-update" \
		"$(DESTDIR)$(sbindir)/update-etc"; \
	\
	# We install some minimal tests for use as a preinst sanity check. \
	# These tests must be able to run without a full source tree and \
	# without relying on a previous portage instance being installed. \
	install -d -m$(DIRMODE) \
		"$(DESTDIR)$(portage_base)/pym/portage/tests"; \
	install -m$(EXEMODE) "$(srcdir)/pym/portage/tests/runTests" \
		"$(DESTDIR)$(portage_base)/pym/portage/tests"; \
	cd "$(srcdir)/pym/portage/tests"; \
	install -m$(INSMODE) *.py \
		"$(DESTDIR)$(portage_base)/pym/portage/tests"; \
	install -d -m$(DIRMODE) \
		"$(DESTDIR)$(portage_base)/pym/portage/tests/lint"; \
	cd "$(srcdir)/pym/portage/tests/lint"; \
	install -m$(INSMODE) *.py __test__ \
		"$(DESTDIR)$(portage_base)/pym/portage/tests/lint"; \
	\
	install -d -m$(DIRMODE) "$(DESTDIR)$(docdir)"; \
	cd "$(srcdir)"; \
	install -m $(INSMODE) $(DOCS) "$(DESTDIR)$(docdir)"; \
	\
	for x in "" $(LINGUAS); do \
		for y in 1 5 ; do \
			if [ -d "$(srcdir)/man/$$x" ]; then \
				cd "$(srcdir)/man/$$x"; \
				files=$$(echo *.$$y); \
				if [ -z "$$files" ] || [ "$$files" = "*.$$y" ]; then \
					continue; \
				fi; \
				install -d -m$(DIRMODE) "$(DESTDIR)$(mandir)/$$x/man$$y"; \
				install -m$(INSMODE) *.$$y "$(DESTDIR)$(mandir)/$$x/man$$y"; \
			fi; \
		done; \
	done; \
	\
	if [ -f "$(srcdir)/doc/portage.html" ] ; then \
		install -d -m$(DIRMODE) "$(DESTDIR)$(htmldir)"; \
		cd "$(srcdir)/doc"; \
		install -m$(INSMODE) *.html "$(DESTDIR)$(htmldir)"; \
	fi; \
	\
	if [ -d "$(WORKDIR)/epydoc" ] ; then \
		install -d -m$(DIRMODE) "$(DESTDIR)$(htmldir)"; \
		cp -pPR "$(WORKDIR)/epydoc" \
			"$(DESTDIR)$(htmldir)/api"; \
		cd "$(DESTDIR)$(htmldir)/api"; \
		find . -type d | xargs chmod $(DIRMODE); \
		find . -type f | xargs chmod $(INSMODE); \
	fi; \

clean:
	set -e; \
	$(MAKE) -C "$(srcdir)/doc" clean; \
	rm -rf "$(WORKDIR)/epydoc"; \

.PHONY: all clean docbook epydoc install test
