Python: Enable parallel build
[openwrt/svn-archive/archive.git] / lang / python / Makefile
1 #
2 # Copyright (C) 2006-2010 OpenWrt.org
3 #
4 # This is free software, licensed under the GNU General Public License v2.
5 # See /LICENSE for more information.
6 #
7
8 include $(TOPDIR)/rules.mk
9
10 PKG_NAME:=python
11 PKG_VERSION:=2.6.4
12 PKG_RELEASE:=3
13
14 PKG_SOURCE:=Python-$(PKG_VERSION).tar.bz2
15 PKG_SOURCE_URL:=http://www.python.org/ftp/python/$(PKG_VERSION)/
16 PKG_MD5SUM:=fee5408634a54e721a93531aba37f8c1
17 PKG_BUILD_PARALLEL:=1
18
19 PKG_BUILD_DIR:=$(BUILD_DIR)/Python-$(PKG_VERSION)
20
21 include $(INCLUDE_DIR)/package.mk
22 -include $(if $(DUMP),,./files/python-package.mk)
23
24 define Package/python/Default
25 SUBMENU:=Python
26 SECTION:=lang
27 CATEGORY:=Languages
28 TITLE:=Python $(PYTHON_VERSION) programming language
29 URL:=http://www.python.org/
30 endef
31
32 define Package/python/Default/description
33 Python is a dynamic object-oriented programming language that can be used
34 for many kinds of software development. It offers strong support for
35 integration with other languages and tools, comes with extensive standard
36 libraries, and can be learned in a few days. Many Python programmers
37 report substantial productivity gains and feel the language encourages
38 the development of higher quality, more maintainable code.
39 endef
40
41 define Package/python
42 $(call Package/python/Default)
43 TITLE+= (full)
44 DEPENDS:=+libpthread +zlib +libffi +python-mini
45 endef
46
47 define Package/python/description
48 $(call Package/python/Default/description)
49 .
50 This package contains the full Python install.
51 endef
52
53 define Package/python-mini
54 $(call Package/python/Default)
55 TITLE+= (minimal)
56 DEPENDS:=+libpthread +zlib
57 endef
58
59 define Package/python-mini/description
60 $(call Package/python/Default/description)
61 .
62 This package contains only a minimal Python install.
63 endef
64
65 define Package/python-doc
66 $(call Package/python/Default)
67 TITLE:=Python interactive documentation
68 DEPENDS+=+python-mini
69 endef
70
71 define Package/python-expat
72 $(call Package/python/Default)
73 TITLE:=Python support for expat
74 DEPENDS+=+python-mini +libexpat
75 endef
76
77 define Package/python-gzip
78 $(call Package/python/Default)
79 TITLE:=Python support for gzip
80 DEPENDS+=+python-mini
81 endef
82
83 define Package/python-openssl
84 $(call Package/python/Default)
85 TITLE:=Python support for OpenSSL
86 DEPENDS+=+python-mini +libopenssl
87 endef
88
89 define Package/python-shutil
90 $(call Package/python/Default)
91 TITLE:=Python support for shutil
92 DEPENDS+=+python-mini
93 endef
94
95 define Package/python-sqlite3
96 $(call Package/python/Default)
97 TITLE:=Python support for sqlite3
98 DEPENDS+=+python-mini +libsqlite3
99 endef
100
101 define Package/python-gdbm
102 $(call Package/python/Default)
103 TITLE:=Python support for gdbm
104 DEPENDS+=+python-mini +libgdbm
105 endef
106
107 PY_DISABLED_MODULES:= \
108 readline _curses _curses_panel _tkinter nis
109
110 MAKE_OPTS:=\
111 $(TARGET_CONFIGURE_OPTS) \
112 PYTHON_DISABLE_MODULES="$(PY_DISABLED_MODULES)" \
113 PYTHON_MODULES_INCLUDE="$(STAGING_DIR)/usr/include" \
114 PYTHON_MODULES_LIB="$(STAGING_DIR)/usr/lib" \
115 CROSS_COMPILE=yes \
116 CFLAGS="$(TARGET_CFLAGS) -fno-inline" \
117 LDFLAGS="$(TARGET_LDFLAGS)" \
118 LD="$(TARGET_CC)" \
119 HOSTPYTHON=./hostpython \
120 HOSTPGEN=./hostpgen \
121
122 define Build/Configure
123 endef
124
125 define Build/Compile
126 -$(MAKE) -C $(PKG_BUILD_DIR) distclean
127 (cd $(PKG_BUILD_DIR); autoreconf --force --install || exit 0);
128 (cd $(PKG_BUILD_DIR); \
129 rm -rf config.cache; \
130 CONFIG_SITE= \
131 OPT="$(HOST_CFLAGS)" \
132 ./configure --without-cxx-main --without-threads --prefix=$(PKG_INSTALL_DIR)/host; \
133 );
134 $(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
135 python Parser/pgen
136 $(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
137 HOSTPYTHON=$(PKG_BUILD_DIR)/python \
138 sharedmods
139 $(MAKE) -C $(PKG_BUILD_DIR) \
140 HOSTPYTHON=$(PKG_BUILD_DIR)/python \
141 install
142 (cd $(PKG_BUILD_DIR);mv Parser/pgen hostpgen)
143 # The python executable needs to stay in the rootdir since its location will
144 # be used to compute the path of the config files.
145 $(CP) $(PKG_BUILD_DIR)/python $(PKG_BUILD_DIR)/hostpython
146 $(MAKE) -C $(PKG_BUILD_DIR) distclean
147 $(call Build/Configure/Default, \
148 --sysconfdir=/etc \
149 --disable-shared \
150 --without-cxx-main \
151 --with-threads \
152 --with-system-ffi \
153 ac_cv_lib_readline_readline=no \
154 ac_cv_have_chflags=no \
155 ac_cv_have_lchflags=no \
156 ac_cv_py_format_size_t=no \
157 OPT="$(TARGET_CFLAGS)" \
158 )
159 $(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
160 $(MAKE_OPTS) \
161 DESTDIR="$(PKG_INSTALL_DIR)" \
162 all
163 $(MAKE) -C $(PKG_BUILD_DIR) \
164 $(MAKE_OPTS) \
165 DESTDIR="$(PKG_INSTALL_DIR)" \
166 install
167 endef
168
169 define Build/InstallDev
170 $(INSTALL_DIR) $(1)/mk $(2)/bin $(1)/usr/bin $(1)/usr/include $(1)/usr/lib
171 $(INSTALL_DATA) ./files/python-package.mk $(1)/mk/
172 $(CP) \
173 $(PKG_INSTALL_DIR)/usr/include/python$(PYTHON_VERSION) \
174 $(1)/usr/include/
175 $(CP) \
176 $(PKG_INSTALL_DIR)/host/lib/python$(PYTHON_VERSION) \
177 $(PKG_BUILD_DIR)/libpython$(PYTHON_VERSION).a \
178 $(1)/usr/lib/
179
180 $(CP) \
181 $(PKG_INSTALL_DIR)/usr/lib/python$(PYTHON_VERSION)/config \
182 $(1)/usr/lib/python$(PYTHON_VERSION)/
183
184 $(CP) \
185 $(PKG_INSTALL_DIR)/host/bin/python \
186 $(1)/usr/bin/hostpython
187 (cd $(2)/bin; \
188 ln -sf ../../usr/bin/hostpython python$(PYTHON_VERSION); \
189 ln -sf python$(PYTHON_VERSION) python)
190
191 $(CP) \
192 $(PKG_INSTALL_DIR)/host/bin/python$(PYTHON_VERSION)-config \
193 $(2)/bin/
194 $(SED) 's,^#!.*,#!/usr/bin/env python$(PYTHON_VERSION),g' $(2)/bin/python$(PYTHON_VERSION)-config
195
196 (cd $(2)/bin; \
197 ln -sf python$(PYTHON_VERSION)-config python-config;)
198 endef
199
200 define PyPackage/python/filespec
201 +|/usr/lib/python$(PYTHON_VERSION)
202 -|/usr/lib/python$(PYTHON_VERSION)/bsddb/test
203 -|/usr/lib/python$(PYTHON_VERSION)/config
204 +|/usr/lib/python$(PYTHON_VERSION)/config/Makefile
205 -|/usr/lib/python$(PYTHON_VERSION)/ctypes/test
206 -|/usr/lib/python$(PYTHON_VERSION)/distutils/command/wininst-*.exe
207 -|/usr/lib/python$(PYTHON_VERSION)/distutils/tests
208 -|/usr/lib/python$(PYTHON_VERSION)/email/test
209 -|/usr/lib/python$(PYTHON_VERSION)/idlelib
210 -|/usr/lib/python$(PYTHON_VERSION)/json/tests
211 -|/usr/lib/python$(PYTHON_VERSION)/lib-tk
212 -|/usr/lib/python$(PYTHON_VERSION)/sqlite3
213 -|/usr/lib/python$(PYTHON_VERSION)/test
214 -|/usr/lib/python$(PYTHON_VERSION)/lib2to3
215 -|/usr/lib/python$(PYTHON_VERSION)/lib-old
216 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/gdbm.so
217 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_sqlite3.so
218 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_ssl.so
219 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/pyexpat.so
220 -|/usr/lib/python$(PYTHON_VERSION)/pydoc_topics.py
221 -|/usr/lib/python$(PYTHON_VERSION)/pydoc.py
222 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_ctypes_test.so
223 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_testcapi.so
224 -|/usr/lib/python$(PYTHON_VERSION)/__future__.py
225 -|/usr/lib/python$(PYTHON_VERSION)/_abcoll.py
226 -|/usr/lib/python$(PYTHON_VERSION)/abc.py
227 -|/usr/lib/python$(PYTHON_VERSION)/codecs.py
228 -|/usr/lib/python$(PYTHON_VERSION)/compileall.py
229 -|/usr/lib/python$(PYTHON_VERSION)/ConfigParser.py
230 -|/usr/lib/python$(PYTHON_VERSION)/copy.py
231 -|/usr/lib/python$(PYTHON_VERSION)/copy_reg.py
232 -|/usr/lib/python$(PYTHON_VERSION)/dis.py
233 -|/usr/lib/python$(PYTHON_VERSION)/encodings
234 -|/usr/lib/python$(PYTHON_VERSION)/fnmatch.py
235 -|/usr/lib/python$(PYTHON_VERSION)/genericpath.py
236 -|/usr/lib/python$(PYTHON_VERSION)/getopt.py
237 -|/usr/lib/python$(PYTHON_VERSION)/glob.py
238 -|/usr/lib/python$(PYTHON_VERSION)/hashlib.py
239 -|/usr/lib/python$(PYTHON_VERSION)/inspect.py
240 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/array.so
241 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/binascii.so
242 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/cStringIO.so
243 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/fcntl.so
244 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/grp.so
245 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/itertools.so
246 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/math.so
247 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_md5.so
248 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/operator.so
249 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_random.so
250 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/select.so
251 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_sha.so
252 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_sha256.so
253 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_sha512.so
254 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_socket.so
255 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/strop.so
256 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_struct.so
257 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/syslog.so
258 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/time.so
259 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/unicodedata.so
260 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/zlib.so
261 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_weakref.so
262 -|/usr/lib/python$(PYTHON_VERSION)/linecache.py
263 -|/usr/lib/python$(PYTHON_VERSION)/md5.py
264 -|/usr/lib/python$(PYTHON_VERSION)/new.py
265 -|/usr/lib/python$(PYTHON_VERSION)/opcode.py
266 -|/usr/lib/python$(PYTHON_VERSION)/optparse.py
267 -|/usr/lib/python$(PYTHON_VERSION)/os.py
268 -|/usr/lib/python$(PYTHON_VERSION)/pickle.py
269 -|/usr/lib/python$(PYTHON_VERSION)/pickle.py
270 -|/usr/lib/python$(PYTHON_VERSION)/pkgutil.py
271 -|/usr/lib/python$(PYTHON_VERSION)/popen2.py
272 -|/usr/lib/python$(PYTHON_VERSION)/posixpath.py
273 -|/usr/lib/python$(PYTHON_VERSION)/py_compile.py
274 -|/usr/lib/python$(PYTHON_VERSION)/random.py
275 -|/usr/lib/python$(PYTHON_VERSION)/repr.py
276 -|/usr/lib/python$(PYTHON_VERSION)/re.py
277 -|/usr/lib/python$(PYTHON_VERSION)/sha.py
278 -|/usr/lib/python$(PYTHON_VERSION)/site.py
279 -|/usr/lib/python$(PYTHON_VERSION)/socket.py
280 -|/usr/lib/python$(PYTHON_VERSION)/sre_compile.py
281 -|/usr/lib/python$(PYTHON_VERSION)/sre_constants.py
282 -|/usr/lib/python$(PYTHON_VERSION)/sre_parse.py
283 -|/usr/lib/python$(PYTHON_VERSION)/sre.py
284 -|/usr/lib/python$(PYTHON_VERSION)/stat.py
285 -|/usr/lib/python$(PYTHON_VERSION)/StringIO.py
286 -|/usr/lib/python$(PYTHON_VERSION)/stringprep.py
287 -|/usr/lib/python$(PYTHON_VERSION)/string.py
288 -|/usr/lib/python$(PYTHON_VERSION)/struct.py
289 -|/usr/lib/python$(PYTHON_VERSION)/subprocess.py
290 -|/usr/lib/python$(PYTHON_VERSION)/tempfile.py
291 -|/usr/lib/python$(PYTHON_VERSION)/textwrap.py
292 -|/usr/lib/python$(PYTHON_VERSION)/tokenize.py
293 -|/usr/lib/python$(PYTHON_VERSION)/token.py
294 -|/usr/lib/python$(PYTHON_VERSION)/traceback.py
295 -|/usr/lib/python$(PYTHON_VERSION)/types.py
296 -|/usr/lib/python$(PYTHON_VERSION)/UserDict.py
297 -|/usr/lib/python$(PYTHON_VERSION)/warnings.py
298 -|/usr/lib/python$(PYTHON_VERSION)/weakref.py
299 endef
300
301 define PyPackage/python-mini/filespec
302 +|/usr/bin/python$(PYTHON_VERSION)
303 +|/usr/lib/python$(PYTHON_VERSION)/__future__.py
304 +|/usr/lib/python$(PYTHON_VERSION)/_abcoll.py
305 +|/usr/lib/python$(PYTHON_VERSION)/abc.py
306 +|/usr/lib/python$(PYTHON_VERSION)/codecs.py
307 +|/usr/lib/python$(PYTHON_VERSION)/compileall.py
308 +|/usr/lib/python$(PYTHON_VERSION)/ConfigParser.py
309 +|/usr/lib/python$(PYTHON_VERSION)/copy.py
310 +|/usr/lib/python$(PYTHON_VERSION)/copy_reg.py
311 +|/usr/lib/python$(PYTHON_VERSION)/dis.py
312 +|/usr/lib/python$(PYTHON_VERSION)/encodings
313 +|/usr/lib/python$(PYTHON_VERSION)/fnmatch.py
314 +|/usr/lib/python$(PYTHON_VERSION)/genericpath.py
315 +|/usr/lib/python$(PYTHON_VERSION)/getopt.py
316 +|/usr/lib/python$(PYTHON_VERSION)/glob.py
317 +|/usr/lib/python$(PYTHON_VERSION)/hashlib.py
318 +|/usr/lib/python$(PYTHON_VERSION)/inspect.py
319 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/array.so
320 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/binascii.so
321 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/cStringIO.so
322 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/fcntl.so
323 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/grp.so
324 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/itertools.so
325 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/math.so
326 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_md5.so
327 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/operator.so
328 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_random.so
329 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/select.so
330 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_sha.so
331 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_sha256.so
332 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_sha512.so
333 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_socket.so
334 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/strop.so
335 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_struct.so
336 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/syslog.so
337 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/time.so
338 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/unicodedata.so
339 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/zlib.so
340 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_weakref.so
341 +|/usr/lib/python$(PYTHON_VERSION)/linecache.py
342 +|/usr/lib/python$(PYTHON_VERSION)/md5.py
343 +|/usr/lib/python$(PYTHON_VERSION)/new.py
344 +|/usr/lib/python$(PYTHON_VERSION)/opcode.py
345 +|/usr/lib/python$(PYTHON_VERSION)/optparse.py
346 +|/usr/lib/python$(PYTHON_VERSION)/os.py
347 +|/usr/lib/python$(PYTHON_VERSION)/pickle.py
348 +|/usr/lib/python$(PYTHON_VERSION)/pickle.py
349 +|/usr/lib/python$(PYTHON_VERSION)/pkgutil.py
350 +|/usr/lib/python$(PYTHON_VERSION)/popen2.py
351 +|/usr/lib/python$(PYTHON_VERSION)/posixpath.py
352 +|/usr/lib/python$(PYTHON_VERSION)/py_compile.py
353 +|/usr/lib/python$(PYTHON_VERSION)/random.py
354 +|/usr/lib/python$(PYTHON_VERSION)/repr.py
355 +|/usr/lib/python$(PYTHON_VERSION)/re.py
356 +|/usr/lib/python$(PYTHON_VERSION)/sha.py
357 +|/usr/lib/python$(PYTHON_VERSION)/site.py
358 +|/usr/lib/python$(PYTHON_VERSION)/socket.py
359 +|/usr/lib/python$(PYTHON_VERSION)/sre_compile.py
360 +|/usr/lib/python$(PYTHON_VERSION)/sre_constants.py
361 +|/usr/lib/python$(PYTHON_VERSION)/sre_parse.py
362 +|/usr/lib/python$(PYTHON_VERSION)/sre.py
363 +|/usr/lib/python$(PYTHON_VERSION)/stat.py
364 +|/usr/lib/python$(PYTHON_VERSION)/StringIO.py
365 +|/usr/lib/python$(PYTHON_VERSION)/stringprep.py
366 +|/usr/lib/python$(PYTHON_VERSION)/string.py
367 +|/usr/lib/python$(PYTHON_VERSION)/struct.py
368 +|/usr/lib/python$(PYTHON_VERSION)/subprocess.py
369 +|/usr/lib/python$(PYTHON_VERSION)/tempfile.py
370 +|/usr/lib/python$(PYTHON_VERSION)/textwrap.py
371 +|/usr/lib/python$(PYTHON_VERSION)/tokenize.py
372 +|/usr/lib/python$(PYTHON_VERSION)/token.py
373 +|/usr/lib/python$(PYTHON_VERSION)/traceback.py
374 +|/usr/lib/python$(PYTHON_VERSION)/types.py
375 +|/usr/lib/python$(PYTHON_VERSION)/UserDict.py
376 +|/usr/lib/python$(PYTHON_VERSION)/warnings.py
377 +|/usr/lib/python$(PYTHON_VERSION)/weakref.py
378 endef
379
380 define PyPackage/python-mini/install
381 ln -sf python$(PYTHON_VERSION) $(1)/usr/bin/python
382 endef
383
384 define PyPackage/python-doc/filespec
385 +|/usr/lib/python$(PYTHON_VERSION)/pydoc_topics.py
386 +|/usr/lib/python$(PYTHON_VERSION)/pydoc.py
387 endef
388
389 define PyPackage/python-expat/filespec
390 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/pyexpat.so
391 endef
392
393 define PyPackage/python-gzip/filespec
394 +|/usr/lib/python$(PYTHON_VERSION)/gzip.py
395 endef
396
397 define PyPackage/python-openssl/filespec
398 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_ssl.so
399 endef
400
401 define PyPackage/python-shutil/filespec
402 +|/usr/lib/python$(PYTHON_VERSION)/shutil.py
403 endef
404
405 define PyPackage/python-sqlite3/filespec
406 +|/usr/lib/python$(PYTHON_VERSION)/sqlite3
407 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_sqlite3.so
408 endef
409
410 define PyPackage/python-gdbm/filespec
411 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/gdbm.so
412 endef
413
414 $(eval $(call PyPackage,python))
415 $(eval $(call PyPackage,python-mini))
416 $(eval $(call PyPackage,python-doc))
417 $(eval $(call PyPackage,python-expat))
418 $(eval $(call PyPackage,python-gzip))
419 $(eval $(call PyPackage,python-openssl))
420 $(eval $(call PyPackage,python-shutil))
421 $(eval $(call PyPackage,python-sqlite3))
422 $(eval $(call PyPackage,python-gdbm))
423
424 $(eval $(call BuildPackage,python))
425 $(eval $(call BuildPackage,python-mini))
426 $(eval $(call BuildPackage,python-doc))
427 $(eval $(call BuildPackage,python-expat))
428 $(eval $(call BuildPackage,python-gzip))
429 $(eval $(call BuildPackage,python-openssl))
430 $(eval $(call BuildPackage,python-shutil))
431 $(eval $(call BuildPackage,python-sqlite3))
432 $(eval $(call BuildPackage,python-gdbm))