1##
2# Makefile for Twisted
3##
4
5# Project info
6Project	    = Twisted
7ProjectName = Twisted
8UserType    = Developer
9ToolType    = Library
10
11# Include common makefile targets for B&I
12include $(MAKEFILEPATH)/CoreOS/ReleaseControl/Common.make
13
14PYTHON_VERSIONS = $(shell \
15  for python in /usr/bin/python2.*[6-9]; do \
16    "$${python}" -c 'import sys; print "%d.%d" % tuple(sys.version_info[0:2])'; \
17  done; \
18)
19
20PYTHON = /usr/bin/python
21EXTRAS := $(shell "$(PYTHON)" -c 'import sys; print sys.prefix')/Extras
22CORE_SCRIPTS = trial twistd
23
24build:: extract_source
25	$(_v) for version in $(PYTHON_VERSIONS); do \
26	        echo "Building for Python $${version}..."; \
27	        cd $(OBJROOT)/$(Project) && $(Environment) "$(PYTHON)$${version}" setup.py build; \
28	      done;
29
30install::
31	$(_v) for version in $(PYTHON_VERSIONS); do \
32	        extras="$$("$(PYTHON)$${version}" -c 'import sys; print sys.prefix')/Extras"; \
33	        echo "Installing for Python $${version}..."; \
34	        cd $(OBJROOT)/$(Project) && $(Environment) "$(PYTHON)$${version}" setup.py install --home="$${extras}" --root="$(DSTROOT)"; \
35	        for so in $$(find "$(DSTROOT)$${extras}" -type f -name '*.so'); do $(STRIP) -Sx "$${so}"; done; \
36	        echo "Removing turds for Python $${version}..."; \
37	        for turd in "$(DSTROOT)$${extras}/lib/python/twisted/python/zsh/"* "$(DSTROOT)$${extras}/lib/python/twisted/topfiles/"*.misc; do \
38	          if [ ! -s "$${turd}" ]; then rm -f "$${turd}"; fi; \
39	        done; \
40	        echo "Removing empty files for Python $${version}..."; \
41	        find "$(DSTROOT)$${extras}/lib/python" -name '*.py' -empty -exec cp "$(SRCROOT)/empty.py" '{}' ";" -print; \
42	        echo "Initializing dropin.cache for Python $${version}..."; \
43	        PYTHONPATH="$(DSTROOT)$${extras}/lib/python" "$(DSTROOT)$${extras}/bin/twistd" --help 2>&1 >/dev/null; \
44	      done;
45	$(_v) $(INSTALL_DIRECTORY) "$(DSTROOT)/$(USRBINDIR)";
46	$(_v) $(INSTALL_DIRECTORY) "$(DSTROOT)/$(MANDIR)/man1";
47	$(_v) for script in $(CORE_SCRIPTS); do \
48	    $(LN) -s "$(EXTRAS)/bin/$${script}" "$(DSTROOT)$(USRBINDIR)/$${script}"; \
49	    $(INSTALL_FILE) "$(OBJROOT)/$(Project)/doc/core/man/$${script}.1" "$(DSTROOT)$(MANDIR)/man1/"; \
50	done;
51
52#
53# Automatic Extract & Patch
54#
55
56AEP	       = YES
57AEP_ProjVers   = $(Project)-12.2.0
58AEP_Filename   = $(AEP_ProjVers).tar.bz2
59AEP_ExtractDir = $(AEP_ProjVers)
60AEP_Patches    = 
61
62extract_source::
63ifeq ($(AEP),YES)
64	@echo "Extracting source for $(Project)...";
65	$(_v) $(MKDIR) -p "$(OBJROOT)";
66	$(_v) $(TAR) -C "$(OBJROOT)" -xjf "$(SRCROOT)/$(AEP_Filename)";
67	$(_v) $(RMDIR) "$(OBJROOT)/$(Project)";
68	$(_v) $(MV) "$(OBJROOT)/$(AEP_ExtractDir)" "$(OBJROOT)/$(Project)";
69	$(_v) for patchfile in $(AEP_Patches); do \
70	   cd "$(OBJROOT)/$(Project)" && patch -lp0 < "$(SRCROOT)/patches/$${patchfile}"; \
71	done;
72endif
73
74#
75# Open Source Hooey
76#
77
78OSV = /usr/local/OpenSourceVersions
79OSL = /usr/local/OpenSourceLicenses
80
81install:: install-ossfiles
82
83install-ossfiles::
84	$(_v) $(INSTALL_DIRECTORY) "$(DSTROOT)/$(OSV)";
85	$(_v) $(INSTALL_FILE) "$(SRCROOT)/$(ProjectName).plist" "$(DSTROOT)/$(OSV)/$(ProjectName).plist";
86	$(_v) $(INSTALL_DIRECTORY) "$(DSTROOT)/$(OSL)";
87	$(_v) $(INSTALL_FILE) "$(OBJROOT)/$(Project)/LICENSE" "$(DSTROOT)/$(OSL)/$(ProjectName).txt";
88