Add a Makefile derived from the portage ebuild.
authorZac Medico <zmedico@gentoo.org>
Sat, 17 Mar 2012 00:08:59 +0000 (17:08 -0700)
committerZac Medico <zmedico@gentoo.org>
Sat, 17 Mar 2012 01:27:37 +0000 (18:27 -0700)
This will fix bug #335320.

Makefile [new file with mode: 0644]
mkrelease.sh

diff --git a/Makefile b/Makefile
new file mode 100644 (file)
index 0000000..697198e
--- /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
index bfd1d4bd243a42c8570a628def8749068051ae51..87bb4bf50069cfa108ee4fb50bf52080a9d2a3e0 100755 (executable)
@@ -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"