| 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 |
| 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 |