diff options
-rw-r--r-- | Makefile | 214 | ||||
-rwxr-xr-x | mkrelease.sh | 2 |
2 files changed, 215 insertions, 1 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..697198ebf --- /dev/null +++ b/Makefile @@ -0,0 +1,214 @@ +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.globals +LOGROTATE_FILES = elog-save-summary +BINDIR_FILES = ebuild egencache emerge portageq quickpkg repoman +SBINDIR_FILES = archive-conf dispatch-conf emaint emerge-webrsync \ + env-update etc-update fixpackages regenworld +DOCS = ChangeLog NEWS RELEASE-NOTES + +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; \ + # workaround for bug 282760 \ + touch "$(srcdir)/pym/pysqlite2.py"; \ + 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 "$(srcdir)/pym/pysqlite2.py"* \ + "$(WORKDIR)/epydoc/pysqlite2-"* \ + "$(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)"; \ + ln -sf "..$(portage_confdir)/make.globals" "$(DESTDIR)$(sysconfdir)"; \ + install -m$(INSMODE) "$(srcdir)/cnf/make.conf" \ + "$(DESTDIR)$(portage_confdir)/make.conf.example"; \ + \ + 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 1 5 ; do \ + install -d -m$(DIRMODE) "$(DESTDIR)$(mandir)/man$$x"; \ + cd "$(srcdir)/man"; \ + install -m$(INSMODE) *.$$x "$(DESTDIR)$(mandir)/man$$x"; \ + 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 "$(srcdir)/pym/pysqlite2.py"* \ + "$(WORKDIR)/epydoc"; \ + +.PHONY: all clean docbook epydoc install test diff --git a/mkrelease.sh b/mkrelease.sh index bfd1d4bd2..87bb4bf50 100755 --- a/mkrelease.sh +++ b/mkrelease.sh @@ -66,7 +66,7 @@ git archive --format=tar $TREE_ISH | \ echo ">>> Building release tree" cp -a "${SOURCE_DIR}/"{bin,cnf,doc,man,pym} "${RELEASE_DIR}/" || die "directory copy failed" -cp "${SOURCE_DIR}/"{DEVELOPING,LICENSE,NEWS,RELEASE-NOTES,TEST-NOTES} \ +cp "${SOURCE_DIR}/"{DEVELOPING,LICENSE,Makefile,NEWS,RELEASE-NOTES,TEST-NOTES} \ "${RELEASE_DIR}/" || die "file copy failed" rm -rf "$SOURCE_DIR" || die "directory cleanup failed" |