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
19 PKG_BUILD_DIR:=$(BUILD_DIR)/Python-$(PKG_VERSION)
21 include $(INCLUDE_DIR)/package.mk
22 -include $(if $(DUMP),,./files/python-package.mk)
24 define Package/python/Default
28 TITLE:=Python $(PYTHON_VERSION) programming language
29 URL:=http://www.python.org/
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.
42 $(call Package/python/Default)
44 DEPENDS:=+libpthread +zlib +libffi +python-mini
47 define Package/python/description
48 $(call Package/python/Default/description)
50 This package contains the full Python install.
53 define Package/python-mini
54 $(call Package/python/Default)
56 DEPENDS:=+libpthread +zlib
59 define Package/python-mini/description
60 $(call Package/python/Default/description)
62 This package contains only a minimal Python install.
65 define Package/python-doc
66 $(call Package/python/Default)
67 TITLE:=Python interactive documentation
71 define Package/python-expat
72 $(call Package/python/Default)
73 TITLE:=Python support for expat
74 DEPENDS+=+python-mini +libexpat
77 define Package/python-gzip
78 $(call Package/python/Default)
79 TITLE:=Python support for gzip
83 define Package/python-openssl
84 $(call Package/python/Default)
85 TITLE:=Python support for OpenSSL
86 DEPENDS+=+python-mini +libopenssl
89 define Package/python-shutil
90 $(call Package/python/Default)
91 TITLE:=Python support for shutil
95 define Package/python-sqlite3
96 $(call Package/python/Default)
97 TITLE:=Python support for sqlite3
98 DEPENDS+=+python-mini +libsqlite3
101 define Package/python-gdbm
102 $(call Package/python/Default)
103 TITLE:=Python support for gdbm
104 DEPENDS+=+python-mini +libgdbm
107 PY_DISABLED_MODULES:= \
108 readline _curses _curses_panel _tkinter nis
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" \
116 CFLAGS="$(TARGET_CFLAGS) -fno-inline" \
117 LDFLAGS="$(TARGET_LDFLAGS)" \
119 HOSTPYTHON=./hostpython \
120 HOSTPGEN=./hostpgen \
122 define Build/Configure
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; \
131 OPT="$(HOST_CFLAGS)" \
132 ./configure --without-cxx-main --without-threads --prefix=$(PKG_INSTALL_DIR)/host; \
134 $(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
136 $(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
137 HOSTPYTHON=$(PKG_BUILD_DIR)/python \
139 $(MAKE) -C $(PKG_BUILD_DIR) \
140 HOSTPYTHON=$(PKG_BUILD_DIR)/python \
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, \
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)" \
159 $(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
161 DESTDIR="$(PKG_INSTALL_DIR)" \
163 $(MAKE) -C $(PKG_BUILD_DIR) \
165 DESTDIR="$(PKG_INSTALL_DIR)" \
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/
173 $(PKG_INSTALL_DIR)/usr/include/python$(PYTHON_VERSION) \
176 $(PKG_INSTALL_DIR)/host/lib/python$(PYTHON_VERSION) \
177 $(PKG_BUILD_DIR)/libpython$(PYTHON_VERSION).a \
181 $(PKG_INSTALL_DIR)/usr/lib/python$(PYTHON_VERSION)/config \
182 $(1)/usr/lib/python$(PYTHON_VERSION)/
185 $(PKG_INSTALL_DIR)/host/bin/python \
186 $(1)/usr/bin/hostpython
188 ln -sf ../../usr/bin/hostpython python$(PYTHON_VERSION); \
189 ln -sf python$(PYTHON_VERSION) python)
192 $(PKG_INSTALL_DIR)/host/bin/python$(PYTHON_VERSION)-config \
194 $(SED) 's,^#!.*,#!/usr/bin/env python$(PYTHON_VERSION),g' $(2)/bin/python$(PYTHON_VERSION)-config
197 ln -sf python$(PYTHON_VERSION)-config python-config;)
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
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
380 define PyPackage/python-mini/install
381 ln -sf python$(PYTHON_VERSION) $(1)/usr/bin/python
384 define PyPackage/python-doc/filespec
385 +|/usr/lib/python$(PYTHON_VERSION)/pydoc_topics.py
386 +|/usr/lib/python$(PYTHON_VERSION)/pydoc.py
389 define PyPackage/python-expat/filespec
390 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/pyexpat.so
393 define PyPackage/python-gzip/filespec
394 +|/usr/lib/python$(PYTHON_VERSION)/gzip.py
397 define PyPackage/python-openssl/filespec
398 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_ssl.so
401 define PyPackage/python-shutil/filespec
402 +|/usr/lib/python$(PYTHON_VERSION)/shutil.py
405 define PyPackage/python-sqlite3/filespec
406 +|/usr/lib/python$(PYTHON_VERSION)/sqlite3
407 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_sqlite3.so
410 define PyPackage/python-gdbm/filespec
411 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/gdbm.so
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))
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))