2 # Copyright (C) 2006-2009 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:=e81c2f0953aa60f8062c05a4673f2be0
18 PKG_BUILD_DIR:=$(BUILD_DIR)/Python-$(PKG_VERSION)
20 include $(INCLUDE_DIR)/package.mk
21 -include $(if $(DUMP),,./files/python-package.mk)
23 define Package/python/Default
27 TITLE:=Python $(PYTHON_VERSION) programming language
28 URL:=http://www.python.org/
31 define Package/python/Default/description
32 Python is a dynamic object-oriented programming language that can be used
33 for many kinds of software development. It offers strong support for
34 integration with other languages and tools, comes with extensive standard
35 libraries, and can be learned in a few days. Many Python programmers
36 report substantial productivity gains and feel the language encourages
37 the development of higher quality, more maintainable code.
41 $(call Package/python/Default)
43 DEPENDS:=+libpthread +zlib +PACKAGE_python:libffi +python-mini
46 define Package/python/description
47 $(call Package/python/Default/description)
49 This package contains the full Python install.
52 define Package/python-mini
53 $(call Package/python/Default)
55 DEPENDS:=+libpthread +zlib
58 define Package/python-mini/description
59 $(call Package/python/Default/description)
61 This package contains only a minimal Python install.
64 define Package/python-doc
65 $(call Package/python/Default)
66 TITLE:=Python interactive documentation
70 define Package/python-expat
71 $(call Package/python/Default)
72 TITLE:=Python support for expat
73 DEPENDS+=+python-mini +libexpat
76 define Package/python-openssl
77 $(call Package/python/Default)
78 TITLE:=Python support for OpenSSL
79 DEPENDS+=+python-mini +libopenssl
82 define Package/python-sqlite3
83 $(call Package/python/Default)
84 TITLE:=Python support for sqlite3
85 DEPENDS+=+python-mini +libsqlite3
89 PY_DISABLED_MODULES:= \
90 readline _curses _curses_panel _tkinter nis
93 $(TARGET_CONFIGURE_OPTS) \
94 PYTHON_DISABLE_MODULES="$(PY_DISABLED_MODULES)" \
95 PYTHON_MODULES_INCLUDE="$(STAGING_DIR)/usr/include" \
96 PYTHON_MODULES_LIB="$(STAGING_DIR)/usr/lib" \
98 CFLAGS="$(TARGET_CFLAGS) -fno-inline" \
99 LDFLAGS="$(TARGET_LDFLAGS)" \
101 HOSTPYTHON=./hostpython \
102 HOSTPGEN=./hostpgen \
104 define Build/Configure
108 -$(MAKE) -C $(PKG_BUILD_DIR) distclean
109 (cd $(PKG_BUILD_DIR); autoreconf --force --install || exit 0);
110 (cd $(PKG_BUILD_DIR); \
111 rm -rf config.cache; \
113 OPT="$(HOST_CFLAGS)" \
114 ./configure --without-cxx-main --without-threads --prefix=$(PKG_INSTALL_DIR)/host; \
116 $(MAKE) -C $(PKG_BUILD_DIR) \
118 $(MAKE) -C $(PKG_BUILD_DIR) \
119 HOSTPYTHON=$(PKG_BUILD_DIR)/python \
121 (cd $(PKG_BUILD_DIR);mv Parser/pgen hostpgen)
122 # The python executable needs to stay in the rootdir since its location will
123 # be used to compute the path of the config files.
124 $(CP) $(PKG_BUILD_DIR)/python $(PKG_BUILD_DIR)/hostpython
125 $(MAKE) -C $(PKG_BUILD_DIR) distclean
126 $(call Build/Configure/Default, \
132 ac_cv_lib_readline_readline=no \
133 ac_cv_have_chflags=no \
134 ac_cv_have_lchflags=no \
135 ac_cv_py_format_size_t=no \
136 OPT="$(TARGET_CFLAGS)" \
138 $(MAKE) -C $(PKG_BUILD_DIR) \
140 DESTDIR="$(PKG_INSTALL_DIR)" \
144 define Build/InstallDev
145 $(INSTALL_DIR) $(1)/mk $(2)/bin $(1)/usr/bin $(1)/usr/include $(1)/usr/lib
146 $(INSTALL_DATA) ./files/python-package.mk $(1)/mk/
148 $(PKG_INSTALL_DIR)/usr/include/python$(PYTHON_VERSION) \
151 $(PKG_INSTALL_DIR)/host/lib/python$(PYTHON_VERSION) \
152 $(PKG_BUILD_DIR)/libpython$(PYTHON_VERSION).a \
156 $(PKG_INSTALL_DIR)/usr/lib/python$(PYTHON_VERSION)/config \
157 $(1)/usr/lib/python$(PYTHON_VERSION)/
160 $(PKG_INSTALL_DIR)/host/bin/python \
161 $(1)/usr/bin/hostpython
163 ln -sf ../../usr/bin/hostpython python$(PYTHON_VERSION); \
164 ln -sf python$(PYTHON_VERSION) python)
167 $(PKG_INSTALL_DIR)/host/bin/python$(PYTHON_VERSION)-config \
169 $(SED) 's,^#!.*,#!/usr/bin/env python$(PYTHON_VERSION),g' $(2)/bin/python$(PYTHON_VERSION)-config
172 ln -sf python$(PYTHON_VERSION)-config python-config;)
175 define PyPackage/python/filespec
176 +|/usr/bin/python$(PYTHON_VERSION)
177 +|/usr/lib/python$(PYTHON_VERSION)
178 -|/usr/lib/python$(PYTHON_VERSION)/bsddb/test
179 -|/usr/lib/python$(PYTHON_VERSION)/config
180 +|/usr/lib/python$(PYTHON_VERSION)/config/Makefile
181 -|/usr/lib/python$(PYTHON_VERSION)/ctypes/test
182 -|/usr/lib/python$(PYTHON_VERSION)/distutils/command/wininst-*.exe
183 -|/usr/lib/python$(PYTHON_VERSION)/distutils/tests
184 -|/usr/lib/python$(PYTHON_VERSION)/email/test
185 -|/usr/lib/python$(PYTHON_VERSION)/idlelib
186 -|/usr/lib/python$(PYTHON_VERSION)/json/tests
187 -|/usr/lib/python$(PYTHON_VERSION)/lib-tk
188 -|/usr/lib/python$(PYTHON_VERSION)/sqlite3
189 -|/usr/lib/python$(PYTHON_VERSION)/test
190 -|/usr/lib/python$(PYTHON_VERSION)/lib2to3
191 -|/usr/lib/python$(PYTHON_VERSION)/lib-old
192 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_sqlite3.so
193 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_ssl.so
194 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/pyexpat.so
195 -|/usr/lib/python$(PYTHON_VERSION)/pydoc_topics.py
196 -|/usr/lib/python$(PYTHON_VERSION)/pydoc.py
197 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_ctypes_test.so
198 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_testcapi.so
199 -|/usr/lib/python$(PYTHON_VERSION)/__future__.py
200 -|/usr/lib/python$(PYTHON_VERSION)/_abcoll.py
201 -|/usr/lib/python$(PYTHON_VERSION)/abc.py
202 -|/usr/lib/python$(PYTHON_VERSION)/codecs.py
203 -|/usr/lib/python$(PYTHON_VERSION)/compileall.py
204 -|/usr/lib/python$(PYTHON_VERSION)/ConfigParser.py
205 -|/usr/lib/python$(PYTHON_VERSION)/copy.py
206 -|/usr/lib/python$(PYTHON_VERSION)/copy_reg.py
207 -|/usr/lib/python$(PYTHON_VERSION)/dis.py
208 -|/usr/lib/python$(PYTHON_VERSION)/encodings
209 -|/usr/lib/python$(PYTHON_VERSION)/fnmatch.py
210 -|/usr/lib/python$(PYTHON_VERSION)/genericpath.py
211 -|/usr/lib/python$(PYTHON_VERSION)/getopt.py
212 -|/usr/lib/python$(PYTHON_VERSION)/glob.py
213 -|/usr/lib/python$(PYTHON_VERSION)/hashlib.py
214 -|/usr/lib/python$(PYTHON_VERSION)/inspect.py
215 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/array.so
216 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/binascii.so
217 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/cStringIO.so
218 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/fcntl.so
219 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/grp.so
220 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/itertools.so
221 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/math.so
222 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/operator.so
223 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_random.so
224 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/select.so
225 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_socket.so
226 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/strop.so
227 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_struct.so
228 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/syslog.so
229 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/time.so
230 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/unicodedata.so
231 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/zlib.so
232 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_weakref.so
233 -|/usr/lib/python$(PYTHON_VERSION)/linecache.py
234 -|/usr/lib/python$(PYTHON_VERSION)/md5.py
235 -|/usr/lib/python$(PYTHON_VERSION)/new.py
236 -|/usr/lib/python$(PYTHON_VERSION)/opcode.py
237 -|/usr/lib/python$(PYTHON_VERSION)/optparse.py
238 -|/usr/lib/python$(PYTHON_VERSION)/os.py
239 -|/usr/lib/python$(PYTHON_VERSION)/pickle.py
240 -|/usr/lib/python$(PYTHON_VERSION)/pickle.py
241 -|/usr/lib/python$(PYTHON_VERSION)/pkgutil.py
242 -|/usr/lib/python$(PYTHON_VERSION)/popen2.py
243 -|/usr/lib/python$(PYTHON_VERSION)/posixpath.py
244 -|/usr/lib/python$(PYTHON_VERSION)/py_compile.py
245 -|/usr/lib/python$(PYTHON_VERSION)/random.py
246 -|/usr/lib/python$(PYTHON_VERSION)/repr.py
247 -|/usr/lib/python$(PYTHON_VERSION)/re.py
248 -|/usr/lib/python$(PYTHON_VERSION)/sha.py
249 -|/usr/lib/python$(PYTHON_VERSION)/site.py
250 -|/usr/lib/python$(PYTHON_VERSION)/socket.py
251 -|/usr/lib/python$(PYTHON_VERSION)/sre_compile.py
252 -|/usr/lib/python$(PYTHON_VERSION)/sre_constants.py
253 -|/usr/lib/python$(PYTHON_VERSION)/sre_parse.py
254 -|/usr/lib/python$(PYTHON_VERSION)/sre.py
255 -|/usr/lib/python$(PYTHON_VERSION)/stat.py
256 -|/usr/lib/python$(PYTHON_VERSION)/StringIO.py
257 -|/usr/lib/python$(PYTHON_VERSION)/stringprep.py
258 -|/usr/lib/python$(PYTHON_VERSION)/string.py
259 -|/usr/lib/python$(PYTHON_VERSION)/struct.py
260 -|/usr/lib/python$(PYTHON_VERSION)/subprocess.py
261 -|/usr/lib/python$(PYTHON_VERSION)/tempfile.py
262 -|/usr/lib/python$(PYTHON_VERSION)/textwrap.py
263 -|/usr/lib/python$(PYTHON_VERSION)/tokenize.py
264 -|/usr/lib/python$(PYTHON_VERSION)/token.py
265 -|/usr/lib/python$(PYTHON_VERSION)/traceback.py
266 -|/usr/lib/python$(PYTHON_VERSION)/types.py
267 -|/usr/lib/python$(PYTHON_VERSION)/UserDict.py
268 -|/usr/lib/python$(PYTHON_VERSION)/warnings.py
269 -|/usr/lib/python$(PYTHON_VERSION)/weakref.py
272 define PyPackage/python/install
273 ln -sf python$(PYTHON_VERSION) $(1)/usr/bin/python
276 define PyPackage/python-mini/filespec
277 +|/usr/bin/python$(PYTHON_VERSION)
278 +|/usr/lib/python$(PYTHON_VERSION)/__future__.py
279 +|/usr/lib/python$(PYTHON_VERSION)/_abcoll.py
280 +|/usr/lib/python$(PYTHON_VERSION)/abc.py
281 +|/usr/lib/python$(PYTHON_VERSION)/codecs.py
282 +|/usr/lib/python$(PYTHON_VERSION)/compileall.py
283 +|/usr/lib/python$(PYTHON_VERSION)/ConfigParser.py
284 +|/usr/lib/python$(PYTHON_VERSION)/copy.py
285 +|/usr/lib/python$(PYTHON_VERSION)/copy_reg.py
286 +|/usr/lib/python$(PYTHON_VERSION)/dis.py
287 +|/usr/lib/python$(PYTHON_VERSION)/encodings
288 +|/usr/lib/python$(PYTHON_VERSION)/fnmatch.py
289 +|/usr/lib/python$(PYTHON_VERSION)/genericpath.py
290 +|/usr/lib/python$(PYTHON_VERSION)/getopt.py
291 +|/usr/lib/python$(PYTHON_VERSION)/glob.py
292 +|/usr/lib/python$(PYTHON_VERSION)/hashlib.py
293 +|/usr/lib/python$(PYTHON_VERSION)/inspect.py
294 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/array.so
295 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/binascii.so
296 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/cStringIO.so
297 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/fcntl.so
298 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/grp.so
299 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/itertools.so
300 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/math.so
301 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/operator.so
302 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_random.so
303 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/select.so
304 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_socket.so
305 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/strop.so
306 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_struct.so
307 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/syslog.so
308 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/time.so
309 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/unicodedata.so
310 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/zlib.so
311 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_weakref.so
312 +|/usr/lib/python$(PYTHON_VERSION)/linecache.py
313 +|/usr/lib/python$(PYTHON_VERSION)/md5.py
314 +|/usr/lib/python$(PYTHON_VERSION)/new.py
315 +|/usr/lib/python$(PYTHON_VERSION)/opcode.py
316 +|/usr/lib/python$(PYTHON_VERSION)/optparse.py
317 +|/usr/lib/python$(PYTHON_VERSION)/os.py
318 +|/usr/lib/python$(PYTHON_VERSION)/pickle.py
319 +|/usr/lib/python$(PYTHON_VERSION)/pickle.py
320 +|/usr/lib/python$(PYTHON_VERSION)/pkgutil.py
321 +|/usr/lib/python$(PYTHON_VERSION)/popen2.py
322 +|/usr/lib/python$(PYTHON_VERSION)/posixpath.py
323 +|/usr/lib/python$(PYTHON_VERSION)/py_compile.py
324 +|/usr/lib/python$(PYTHON_VERSION)/random.py
325 +|/usr/lib/python$(PYTHON_VERSION)/repr.py
326 +|/usr/lib/python$(PYTHON_VERSION)/re.py
327 +|/usr/lib/python$(PYTHON_VERSION)/sha.py
328 +|/usr/lib/python$(PYTHON_VERSION)/site.py
329 +|/usr/lib/python$(PYTHON_VERSION)/socket.py
330 +|/usr/lib/python$(PYTHON_VERSION)/sre_compile.py
331 +|/usr/lib/python$(PYTHON_VERSION)/sre_constants.py
332 +|/usr/lib/python$(PYTHON_VERSION)/sre_parse.py
333 +|/usr/lib/python$(PYTHON_VERSION)/sre.py
334 +|/usr/lib/python$(PYTHON_VERSION)/stat.py
335 +|/usr/lib/python$(PYTHON_VERSION)/StringIO.py
336 +|/usr/lib/python$(PYTHON_VERSION)/stringprep.py
337 +|/usr/lib/python$(PYTHON_VERSION)/string.py
338 +|/usr/lib/python$(PYTHON_VERSION)/struct.py
339 +|/usr/lib/python$(PYTHON_VERSION)/subprocess.py
340 +|/usr/lib/python$(PYTHON_VERSION)/tempfile.py
341 +|/usr/lib/python$(PYTHON_VERSION)/textwrap.py
342 +|/usr/lib/python$(PYTHON_VERSION)/tokenize.py
343 +|/usr/lib/python$(PYTHON_VERSION)/token.py
344 +|/usr/lib/python$(PYTHON_VERSION)/traceback.py
345 +|/usr/lib/python$(PYTHON_VERSION)/types.py
346 +|/usr/lib/python$(PYTHON_VERSION)/UserDict.py
347 +|/usr/lib/python$(PYTHON_VERSION)/warnings.py
348 +|/usr/lib/python$(PYTHON_VERSION)/weakref.py
351 define PyPackage/python-mini/install
352 ln -sf python$(PYTHON_VERSION) $(1)/usr/bin/python
355 define PyPackage/python-doc/filespec
356 +|/usr/lib/python$(PYTHON_VERSION)/pydoc_topics.py
357 +|/usr/lib/python$(PYTHON_VERSION)/pydoc.py
360 define PyPackage/python-expat/filespec
361 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/pyexpat.so
364 define PyPackage/python-openssl/filespec
365 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_ssl.so
368 define PyPackage/python-sqlite3/filespec
369 +|/usr/lib/python$(PYTHON_VERSION)/sqlite3
370 +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_sqlite3.so
373 $(eval $(call PyPackage,python))
374 $(eval $(call PyPackage,python-mini))
375 $(eval $(call PyPackage,python-doc))
376 $(eval $(call PyPackage,python-expat))
377 $(eval $(call PyPackage,python-openssl))
378 $(eval $(call PyPackage,python-sqlite3))
380 $(eval $(call BuildPackage,python))
381 $(eval $(call BuildPackage,python-mini))
382 $(eval $(call BuildPackage,python-doc))
383 $(eval $(call BuildPackage,python-expat))
384 $(eval $(call BuildPackage,python-openssl))
385 $(eval $(call BuildPackage,python-sqlite3))