2 # Copyright (C) 2006-2010 OpenWrt.org
4 # This is free software, licensed under the GNU General Public License v2.
5 # See /LICENSE for more information.
8 include $(TOPDIR)/rules.mk
14 PKG_SOURCE:=Python-$(PKG_VERSION).tar.bz2
15 PKG_SOURCE_URL:=http://www.python.org/ftp/python/$(PKG_VERSION)/
16 PKG_MD5SUM:=fee5408634a54e721a93531aba37f8c1
20 HOST_BUILD_PARALLEL:=1
22 PKG_BUILD_DIR:=$(BUILD_DIR)/Python-$(PKG_VERSION)
23 HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/Python-$(PKG_VERSION)
25 PKG_BUILD_DEPENDS:=python/host
27 include $(INCLUDE_DIR)/host-build.mk
28 include $(INCLUDE_DIR)/package.mk
29 -include $(if $(DUMP),,./files/python-package.mk)
31 define Package/python/Default
35 TITLE:=Python $(PYTHON_VERSION) programming language
36 URL:=http://www.python.org/
39 define Package/python/Default/description
40 Python is a dynamic object-oriented programming language that can be used
41 for many kinds of software development. It offers strong support for
42 integration with other languages and tools, comes with extensive standard
43 libraries, and can be learned in a few days. Many Python programmers
44 report substantial productivity gains and feel the language encourages
45 the development of higher quality, more maintainable code.
49 $(call Package/python/Default)
51 DEPENDS:=+libpthread +zlib +libffi +python-mini
54 define Package/python/description
55 $(call Package/python/Default/description)
57 This package contains the full Python install.
60 define Package/python-mini
61 $(call Package/python/Default)
63 DEPENDS:=+libpthread +zlib
66 define Package/python-mini/description
67 $(call Package/python/Default/description)
69 This package contains only a minimal Python install.
72 define Package/python-doc
73 $(call Package/python/Default)
74 TITLE:=Python interactive documentation
78 define Package/python-expat
79 $(call Package/python/Default)
80 TITLE:=Python support for expat
81 DEPENDS+=+python-mini +libexpat
84 define Package/python-gzip
85 $(call Package/python/Default)
86 TITLE:=Python support for gzip
90 define Package/python-openssl
91 $(call Package/python/Default)
92 TITLE:=Python support for OpenSSL
93 DEPENDS+=+python-mini +libopenssl
96 define Package/python-shutil
97 $(call Package/python/Default)
98 TITLE:=Python support for shutil
102 define Package/python-sqlite3
103 $(call Package/python/Default)
104 TITLE:=Python support for sqlite3
105 DEPENDS+=+python-mini +libsqlite3
108 define Package/python-gdbm
109 $(call Package/python/Default)
110 TITLE:=Python support for gdbm
111 DEPENDS+=+python-mini +libgdbm
114 PY_DISABLED_MODULES:= \
115 readline _curses _curses_panel _tkinter nis
118 $(TARGET_CONFIGURE_OPTS) \
119 PYTHON_DISABLE_MODULES="$(PY_DISABLED_MODULES)" \
120 PYTHON_MODULES_INCLUDE="$(STAGING_DIR)/usr/include" \
121 PYTHON_MODULES_LIB="$(STAGING_DIR)/usr/lib" \
122 DESTDIR="$(PKG_INSTALL_DIR)" \
124 CFLAGS="$(TARGET_CFLAGS) -fno-inline" \
125 LDFLAGS="$(TARGET_LDFLAGS)" \
127 HOSTPYTHON=./hostpython \
130 define Build/Configure
131 -$(MAKE) -C $(PKG_BUILD_DIR) distclean
132 (cd $(PKG_BUILD_DIR); autoreconf --force --install || exit 0)
133 # The python executable needs to stay in the rootdir since its location will
134 # be used to compute the path of the config files.
135 $(CP) $(STAGING_DIR_HOST)/bin/pgen $(PKG_BUILD_DIR)/hostpgen
136 $(CP) $(STAGING_DIR_HOST)/bin/python $(PKG_BUILD_DIR)/hostpython
137 $(call Build/Configure/Default, \
143 ac_cv_lib_readline_readline=no \
144 ac_cv_have_chflags=no \
145 ac_cv_have_lchflags=no \
146 ac_cv_py_format_size_t=no \
147 OPT="$(TARGET_CFLAGS)" \
151 define Build/InstallDev
152 $(INSTALL_DIR) $(2)/bin $(1)/usr/bin $(1)/usr/include $(1)/usr/lib
154 $(PKG_INSTALL_DIR)/usr/include/python$(PYTHON_VERSION) \
157 $(STAGING_DIR_HOST)/lib/python$(PYTHON_VERSION) \
158 $(PKG_BUILD_DIR)/libpython$(PYTHON_VERSION).a \
161 $(PKG_INSTALL_DIR)/usr/lib/python$(PYTHON_VERSION)/config \
162 $(1)/usr/lib/python$(PYTHON_VERSION)/
165 $(STAGING_DIR_HOST)/bin/python \
166 $(1)/usr/bin/hostpython
168 ln -sf ../../usr/bin/hostpython python$(PYTHON_VERSION); \
169 ln -sf python$(PYTHON_VERSION) python)
172 $(STAGING_DIR_HOST)/bin/python$(PYTHON_VERSION)-config \
174 $(SED) 's,^#!.*,#!/usr/bin/env python$(PYTHON_VERSION),g' $(2)/bin/python$(PYTHON_VERSION)-config
177 ln -sf python$(PYTHON_VERSION)-config python-config;)
180 define PyPackage/python/filespec
181 +|/usr/lib/python$(PYTHON_VERSION)
182 -|/usr/lib/python$(PYTHON_VERSION)/bsddb/test
183 -|/usr/lib/python$(PYTHON_VERSION)/config
184 +|/usr/lib/python$(PYTHON_VERSION)/config/Makefile
185 -|/usr/lib/python$(PYTHON_VERSION)/ctypes/test
186 -|/usr/lib/python$(PYTHON_VERSION)/distutils/command/wininst-*.exe
187 -|/usr/lib/python$(PYTHON_VERSION)/distutils/tests
188 -|/usr/lib/python$(PYTHON_VERSION)/email/test
189 -|/usr/lib/python$(PYTHON_VERSION)/idlelib
190 -|/usr/lib/python$(PYTHON_VERSION)/json/tests
191 -|/usr/lib/python$(PYTHON_VERSION)/lib-tk
192 -|/usr/lib/python$(PYTHON_VERSION)/sqlite3
193 -|/usr/lib/python$(PYTHON_VERSION)/test
194 -|/usr/lib/python$(PYTHON_VERSION)/lib2to3
195 -|/usr/lib/python$(PYTHON_VERSION)/lib-old
196 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/gdbm.so
197 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_sqlite3.so
198 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_ssl.so
199 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/pyexpat.so
200 -|/usr/lib/python$(PYTHON_VERSION)/pydoc_topics.py
201 -|/usr/lib/python$(PYTHON_VERSION)/pydoc.py
202 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_ctypes_test.so
203 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_testcapi.so
204 -|/usr/lib/python$(PYTHON_VERSION)/__future__.py
205 -|/usr/lib/python$(PYTHON_VERSION)/_abcoll.py
206 -|/usr/lib/python$(PYTHON_VERSION)/abc.py
207 -|/usr/lib/python$(PYTHON_VERSION)/codecs.py
208 -|/usr/lib/python$(PYTHON_VERSION)/compileall.py
209 -|/usr/lib/python$(PYTHON_VERSION)/ConfigParser.py
210 -|/usr/lib/python$(PYTHON_VERSION)/copy.py
211 -|/usr/lib/python$(PYTHON_VERSION)/copy_reg.py
212 -|/usr/lib/python$(PYTHON_VERSION)/dis.py
213 -|/usr/lib/python$(PYTHON_VERSION)/encodings
214 -|/usr/lib/python$(PYTHON_VERSION)/fnmatch.py
215 -|/usr/lib/python$(PYTHON_VERSION)/genericpath.py
216 -|/usr/lib/python$(PYTHON_VERSION)/getopt.py
217 -|/usr/lib/python$(PYTHON_VERSION)/glob.py
218 -|/usr/lib/python$(PYTHON_VERSION)/hashlib.py
219 -|/usr/lib/python$(PYTHON_VERSION)/inspect.py
220 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/array.so
221 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/binascii.so
222 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/cStringIO.so
223 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/fcntl.so
224 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/grp.so
225 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/itertools.so
226 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/math.so
227 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_md5.so
228 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/operator.so
229 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_random.so
230 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/select.so
231 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_sha.so
232 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_sha256.so
233 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_sha512.so
234 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_socket.so
235 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/strop.so
236 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_struct.so
237 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/syslog.so
238 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/time.so
239 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/unicodedata.so
240 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/zlib.so
241 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_weakref.so
242 -|/usr/lib/python$(PYTHON_VERSION)/linecache.py
243 -|/usr/lib/python$(PYTHON_VERSION)/md5.py
244 -|/usr/lib/python$(PYTHON_VERSION)/new.py
245 -|/usr/lib/python$(PYTHON_VERSION)/opcode.py
246 -|/usr/lib/python$(PYTHON_VERSION)/optparse.py
247 -|/usr/lib/python$(PYTHON_VERSION)/os.py
248 -|/usr/lib/python$(PYTHON_VERSION)/pickle.py
249 -|/usr/lib/python$(PYTHON_VERSION)/pickle.py
250 -|/usr/lib/python$(PYTHON_VERSION)/pkgutil.py
251 -|/usr/lib/python$(PYTHON_VERSION)/popen2.py
252 -|/usr/lib/python$(PYTHON_VERSION)/posixpath.py
253 -|/usr/lib/python$(PYTHON_VERSION)/py_compile.py
254 -|/usr/lib/python$(PYTHON_VERSION)/random.py
255 -|/usr/lib/python$(PYTHON_VERSION)/repr.py
256 -|/usr/lib/python$(PYTHON_VERSION)/re.py
257 -|/usr/lib/python$(PYTHON_VERSION)/sha.py
258 -|/usr/lib/python$(PYTHON_VERSION)/site.py
259 -|/usr/lib/python$(PYTHON_VERSION)/socket.py
260 -|/usr/lib/python$(PYTHON_VERSION)/sre_compile.py
261 -|/usr/lib/python$(PYTHON_VERSION)/sre_constants.py
262 -|/usr/lib/python$(PYTHON_VERSION)/sre_parse.py
263 -|/usr/lib/python$(PYTHON_VERSION)/sre.py
264 -|/usr/lib/python$(PYTHON_VERSION)/stat.py
265 -|/usr/lib/python$(PYTHON_VERSION)/StringIO.py
266 -|/usr/lib/python$(PYTHON_VERSION)/stringprep.py
267 -|/usr/lib/python$(PYTHON_VERSION)/string.py
268 -|/usr/lib/python$(PYTHON_VERSION)/struct.py
269 -|/usr/lib/python$(PYTHON_VERSION)/subprocess.py
270 -|/usr/lib/python$(PYTHON_VERSION)/tempfile.py
271 -|/usr/lib/python$(PYTHON_VERSION)/textwrap.py
272 -|/usr/lib/python$(PYTHON_VERSION)/tokenize.py
273 -|/usr/lib/python$(PYTHON_VERSION)/token.py
274 -|/usr/lib/python$(PYTHON_VERSION)/traceback.py
275 -|/usr/lib/python$(PYTHON_VERSION)/types.py
276 -|/usr/lib/python$(PYTHON_VERSION)/UserDict.py
277 -|/usr/lib/python$(PYTHON_VERSION)/warnings.py
278 -|/usr/lib/python$(PYTHON_VERSION)/weakref.py
281 define PyPackage/python-mini/filespec
282 +|/usr/bin/python$(PYTHON_VERSION)
283 +|/usr/lib/python$(PYTHON_VERSION)/__future__.py
284 +|/usr/lib/python$(PYTHON_VERSION)/_abcoll.py
285 +|/usr/lib/python$(PYTHON_VERSION)/abc.py
286 +|/usr/lib/python$(PYTHON_VERSION)/codecs.py
287 +|/usr/lib/python$(PYTHON_VERSION)/compileall.py
288 +|/usr/lib/python$(PYTHON_VERSION)/ConfigParser.py
289 +|/usr/lib/python$(PYTHON_VERSION)/copy.py
290 +|/usr/lib/python$(PYTHON_VERSION)/copy_reg.py
291 +|/usr/lib/python$(PYTHON_VERSION)/dis.py
292 +|/usr/lib/python$(PYTHON_VERSION)/encodings
293 +|/usr/lib/python$(PYTHON_VERSION)/fnmatch.py
294 +|/usr/lib/python$(PYTHON_VERSION)/genericpath.py
295 +|/usr/lib/python$(PYTHON_VERSION)/getopt.py
296 +|/usr/lib/python$(PYTHON_VERSION)/glob.py
297 +|/usr/lib/python$(PYTHON_VERSION)/hashlib.py
298 +|/usr/lib/python$(PYTHON_VERSION)/inspect.py
299 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/array.so
300 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/binascii.so
301 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/cStringIO.so
302 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/fcntl.so
303 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/grp.so
304 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/itertools.so
305 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/math.so
306 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_md5.so
307 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/operator.so
308 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_random.so
309 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/select.so
310 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_sha.so
311 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_sha256.so
312 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_sha512.so
313 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_socket.so
314 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/strop.so
315 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_struct.so
316 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/syslog.so
317 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/time.so
318 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/unicodedata.so
319 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/zlib.so
320 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_weakref.so
321 +|/usr/lib/python$(PYTHON_VERSION)/linecache.py
322 +|/usr/lib/python$(PYTHON_VERSION)/md5.py
323 +|/usr/lib/python$(PYTHON_VERSION)/new.py
324 +|/usr/lib/python$(PYTHON_VERSION)/opcode.py
325 +|/usr/lib/python$(PYTHON_VERSION)/optparse.py
326 +|/usr/lib/python$(PYTHON_VERSION)/os.py
327 +|/usr/lib/python$(PYTHON_VERSION)/pickle.py
328 +|/usr/lib/python$(PYTHON_VERSION)/pickle.py
329 +|/usr/lib/python$(PYTHON_VERSION)/pkgutil.py
330 +|/usr/lib/python$(PYTHON_VERSION)/popen2.py
331 +|/usr/lib/python$(PYTHON_VERSION)/posixpath.py
332 +|/usr/lib/python$(PYTHON_VERSION)/py_compile.py
333 +|/usr/lib/python$(PYTHON_VERSION)/random.py
334 +|/usr/lib/python$(PYTHON_VERSION)/repr.py
335 +|/usr/lib/python$(PYTHON_VERSION)/re.py
336 +|/usr/lib/python$(PYTHON_VERSION)/sha.py
337 +|/usr/lib/python$(PYTHON_VERSION)/site.py
338 +|/usr/lib/python$(PYTHON_VERSION)/socket.py
339 +|/usr/lib/python$(PYTHON_VERSION)/sre_compile.py
340 +|/usr/lib/python$(PYTHON_VERSION)/sre_constants.py
341 +|/usr/lib/python$(PYTHON_VERSION)/sre_parse.py
342 +|/usr/lib/python$(PYTHON_VERSION)/sre.py
343 +|/usr/lib/python$(PYTHON_VERSION)/stat.py
344 +|/usr/lib/python$(PYTHON_VERSION)/StringIO.py
345 +|/usr/lib/python$(PYTHON_VERSION)/stringprep.py
346 +|/usr/lib/python$(PYTHON_VERSION)/string.py
347 +|/usr/lib/python$(PYTHON_VERSION)/struct.py
348 +|/usr/lib/python$(PYTHON_VERSION)/subprocess.py
349 +|/usr/lib/python$(PYTHON_VERSION)/tempfile.py
350 +|/usr/lib/python$(PYTHON_VERSION)/textwrap.py
351 +|/usr/lib/python$(PYTHON_VERSION)/tokenize.py
352 +|/usr/lib/python$(PYTHON_VERSION)/token.py
353 +|/usr/lib/python$(PYTHON_VERSION)/traceback.py
354 +|/usr/lib/python$(PYTHON_VERSION)/types.py
355 +|/usr/lib/python$(PYTHON_VERSION)/UserDict.py
356 +|/usr/lib/python$(PYTHON_VERSION)/warnings.py
357 +|/usr/lib/python$(PYTHON_VERSION)/weakref.py
358 +|/usr/include/python$(PYTHON_VERSION)/pyconfig.h
361 define PyPackage/python-mini/install
362 ln -sf python$(PYTHON_VERSION) $(1)/usr/bin/python
365 define PyPackage/python-doc/filespec
366 +|/usr/lib/python$(PYTHON_VERSION)/pydoc_topics.py
367 +|/usr/lib/python$(PYTHON_VERSION)/pydoc.py
370 define PyPackage/python-expat/filespec
371 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/pyexpat.so
374 define PyPackage/python-gzip/filespec
375 +|/usr/lib/python$(PYTHON_VERSION)/gzip.py
378 define PyPackage/python-openssl/filespec
379 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_ssl.so
382 define PyPackage/python-shutil/filespec
383 +|/usr/lib/python$(PYTHON_VERSION)/shutil.py
386 define PyPackage/python-sqlite3/filespec
387 +|/usr/lib/python$(PYTHON_VERSION)/sqlite3
388 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_sqlite3.so
391 define PyPackage/python-gdbm/filespec
392 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/gdbm.so
395 define Host/Configure
396 -$(MAKE) -C $(HOST_BUILD_DIR) distclean
397 (cd $(HOST_BUILD_DIR); autoreconf --force --install || exit 0)
398 (cd $(HOST_BUILD_DIR); \
399 rm -rf config.cache; \
401 OPT="$(HOST_CFLAGS)" \
402 ./configure --without-cxx-main --without-threads --prefix=$(STAGING_DIR_HOST); \
407 $(MAKE) $(HOST_JOBS) -C $(HOST_BUILD_DIR) \
409 $(MAKE) $(HOST_JOBS) -C $(HOST_BUILD_DIR) \
410 HOSTPYTHON=$(HOST_BUILD_DIR)/python \
415 $(INSTALL_DIR) $(STAGING_DIR)/mk/
416 $(INSTALL_DATA) ./files/python-package.mk $(STAGING_DIR)/mk/
417 $(INSTALL_DIR) $(STAGING_DIR_HOST)/bin/
418 $(MAKE) -C $(HOST_BUILD_DIR) \
419 HOSTPYTHON=$(HOST_BUILD_DIR)/python \
421 $(INSTALL_BIN) $(HOST_BUILD_DIR)/Parser/pgen $(STAGING_DIR_HOST)/bin/
425 $(eval $(call HostBuild))
427 $(eval $(call PyPackage,python))
428 $(eval $(call PyPackage,python-mini))
429 $(eval $(call PyPackage,python-doc))
430 $(eval $(call PyPackage,python-expat))
431 $(eval $(call PyPackage,python-gzip))
432 $(eval $(call PyPackage,python-openssl))
433 $(eval $(call PyPackage,python-shutil))
434 $(eval $(call PyPackage,python-sqlite3))
435 $(eval $(call PyPackage,python-gdbm))
437 $(eval $(call BuildPackage,python))
438 $(eval $(call BuildPackage,python-mini))
439 $(eval $(call BuildPackage,python-doc))
440 $(eval $(call BuildPackage,python-expat))
441 $(eval $(call BuildPackage,python-gzip))
442 $(eval $(call BuildPackage,python-openssl))
443 $(eval $(call BuildPackage,python-shutil))
444 $(eval $(call BuildPackage,python-sqlite3))
445 $(eval $(call BuildPackage,python-gdbm))