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