f1c092da8b
Some of the python2 patches were left behind when doing the python3 package. This was because the python build system can now autodetect what packages can be built in the system. However, some of these patches are actually useful to reduce drastically the size of the interpreter. This patch ports the relevant patches to the python3 package, and adds a new patch to remove the idle3 IDE as well from the interpreter. Fixes #5696 Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
195 lines
4.9 KiB
Makefile
195 lines
4.9 KiB
Makefile
################################################################################
|
|
#
|
|
# python3
|
|
#
|
|
################################################################################
|
|
|
|
PYTHON3_VERSION_MAJOR = 3.3
|
|
PYTHON3_VERSION = $(PYTHON3_VERSION_MAJOR).0
|
|
PYTHON3_SOURCE = Python-$(PYTHON3_VERSION).tar.bz2
|
|
PYTHON3_SITE = http://python.org/ftp/python/$(PYTHON3_VERSION)
|
|
|
|
# Python needs itself and a "pgen" program to build itself, both being
|
|
# provided in the Python sources. So in order to cross-compile Python,
|
|
# we need to build a host Python first. This host Python is also
|
|
# installed in $(HOST_DIR), as it is needed when cross-compiling
|
|
# third-party Python modules.
|
|
|
|
HOST_PYTHON3_CONF_OPT += \
|
|
--without-cxx-main \
|
|
--disable-sqlite3 \
|
|
--disable-tk \
|
|
--with-expat=system \
|
|
--disable-curses \
|
|
--disable-codecs-cjk \
|
|
--disable-nis \
|
|
--disable-unicodedata \
|
|
--disable-test-modules \
|
|
--disable-idle3
|
|
|
|
HOST_PYTHON3_MAKE_ENV = \
|
|
PYTHON_MODULES_INCLUDE=$(HOST_DIR)/usr/include \
|
|
PYTHON_MODULES_LIB="$(HOST_DIR)/lib $(HOST_DIR)/usr/lib"
|
|
|
|
HOST_PYTHON3_AUTORECONF = YES
|
|
|
|
define HOST_PYTHON3_CONFIGURE_CMDS
|
|
(cd $(@D) && rm -rf config.cache; \
|
|
$(HOST_CONFIGURE_OPTS) \
|
|
CFLAGS="$(HOST_CFLAGS)" \
|
|
LDFLAGS="$(HOST_LDFLAGS)" \
|
|
$(HOST_PYTHON3_CONF_ENV) \
|
|
./configure \
|
|
--prefix="$(HOST_DIR)/usr" \
|
|
--sysconfdir="$(HOST_DIR)/etc" \
|
|
$(HOST_PYTHON3_CONF_OPT) \
|
|
)
|
|
endef
|
|
|
|
PYTHON3_DEPENDENCIES = host-python3 libffi
|
|
|
|
HOST_PYTHON3_DEPENDENCIES = host-expat host-zlib
|
|
|
|
PYTHON3_INSTALL_STAGING = YES
|
|
|
|
ifeq ($(BR2_PACKAGE_PYTHON3_READLINE),y)
|
|
PYTHON3_DEPENDENCIES += readline
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_PYTHON3_CURSES),y)
|
|
PYTHON3_DEPENDENCIES += ncurses
|
|
else
|
|
PYTHON3_CONF_OPT += --disable-curses
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_PYTHON3_PYEXPAT),y)
|
|
PYTHON3_DEPENDENCIES += expat
|
|
PYTHON3_CONF_OPT += --with-expat=system
|
|
else
|
|
PYTHON3_CONF_OPT += --with-expat=none
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_PYTHON3_PYC_ONLY),y)
|
|
PYTHON3_CONF_OPT += --enable-old-stdlib-cache
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_PYTHON3_SQLITE),y)
|
|
PYTHON3_DEPENDENCIES += sqlite
|
|
else
|
|
PYTHON3_CONF_OPT += --disable-sqlite3
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_PYTHON3_SSL),y)
|
|
PYTHON3_DEPENDENCIES += openssl
|
|
endif
|
|
|
|
ifneq ($(BR2_PACKAGE_PYTHON3_CODECSCJK),y)
|
|
PYTHON3_CONF_OPT += --disable-codecs-cjk
|
|
endif
|
|
|
|
ifneq ($(BR2_PACKAGE_PYTHON3_UNICODEDATA),y)
|
|
PYTHON3_CONF_OPT += --disable-unicodedata
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_PYTHON3_BZIP2),y)
|
|
PYTHON3_DEPENDENCIES += bzip2
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_PYTHON3_ZLIB),y)
|
|
PYTHON3_DEPENDENCIES += zlib
|
|
endif
|
|
|
|
PYTHON3_CONF_ENV += \
|
|
_PROJECT_BASE=$(PYTHON3_DIR) \
|
|
_PYTHON_HOST_PLATFORM=$(BR2_HOSTARCH) \
|
|
PYTHON_FOR_BUILD=$(HOST_PYTHON3_DIR)/python \
|
|
PGEN_FOR_BUILD=$(HOST_PYTHON3_DIR)/Parser/pgen \
|
|
ac_cv_have_long_long_format=yes \
|
|
ac_cv_file__dev_ptmx=yes \
|
|
ac_cv_file__dev_ptc=yes \
|
|
|
|
PYTHON3_CONF_OPT += \
|
|
--without-cxx-main \
|
|
--with-system-ffi \
|
|
--disable-pydoc \
|
|
--disable-test-modules \
|
|
--disable-lib2to3 \
|
|
--disable-tk \
|
|
--disable-nis \
|
|
--disable-idle3
|
|
|
|
PYTHON3_MAKE_ENV = \
|
|
_PROJECT_BASE=$(PYTHON3_DIR) \
|
|
_PYTHON_HOST_PLATFORM=$(BR2_HOSTARCH) \
|
|
PYTHON_MODULES_INCLUDE=$(STAGING_DIR)/usr/include \
|
|
PYTHON_MODULES_LIB="$(STAGING_DIR)/lib $(STAGING_DIR)/usr/lib"
|
|
|
|
# python distutils adds -L$LIBDIR when linking binary extensions, causing
|
|
# trouble for cross compilation
|
|
define PYTHON3_FIXUP_LIBDIR
|
|
$(SED) 's|^LIBDIR=.*|LIBDIR= $(STAGING_DIR)/usr/lib|' \
|
|
$(STAGING_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/config-3.3m/Makefile
|
|
endef
|
|
|
|
PYTHON3_POST_INSTALL_STAGING_HOOKS += PYTHON3_FIXUP_LIBDIR
|
|
|
|
#
|
|
# Development files removal
|
|
#
|
|
define PYTHON3_REMOVE_DEVFILES
|
|
rm -f $(TARGET_DIR)/usr/bin/python$(PYTHON3_VERSION_MAJOR)-config
|
|
rm -f $(TARGET_DIR)/usr/bin/python$(PYTHON3_VERSION_MAJOR)m-config
|
|
rm -f $(TARGET_DIR)/usr/bin/python3-config
|
|
endef
|
|
|
|
ifneq ($(BR2_HAVE_DEVFILES),y)
|
|
PYTHON3_POST_INSTALL_TARGET_HOOKS += PYTHON3_REMOVE_DEVFILES
|
|
endif
|
|
|
|
#
|
|
# Remove useless files. In the config/ directory, only the Makefile
|
|
# and the pyconfig.h files are needed at runtime.
|
|
#
|
|
define PYTHON3_REMOVE_USELESS_FILES
|
|
for i in `find $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/config-3.3m/ \
|
|
-type f -not -name pyconfig.h -a -not -name Makefile` ; do \
|
|
rm -f $$i ; \
|
|
done
|
|
endef
|
|
|
|
PYTHON3_POST_INSTALL_TARGET_HOOKS += PYTHON3_REMOVE_USELESS_FILES
|
|
|
|
PYTHON3_AUTORECONF = YES
|
|
|
|
define PYTHON3_INSTALL_SYMLINK
|
|
ln -fs python3 $(TARGET_DIR)/usr/bin/python
|
|
endef
|
|
|
|
ifneq ($(BR2_PACKAGE_PYTHON),y)
|
|
PYTHON3_POST_INSTALL_TARGET_HOOKS += PYTHON3_INSTALL_SYMLINK
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_PYTHON3_PY_ONLY),y)
|
|
define PYTHON3_REMOVE_MODULES_FILES
|
|
for i in `find $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR) \
|
|
-name __pycache__` ; do \
|
|
rm -rf $$i ; \
|
|
done
|
|
endef
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_PYTHON3_PYC_ONLY),y)
|
|
define PYTHON3_REMOVE_MODULES_FILES
|
|
for i in `find $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR) \
|
|
-name *.py` ; do \
|
|
rm -f $$i ; \
|
|
done
|
|
endef
|
|
endif
|
|
|
|
PYTHON3_POST_INSTALL_TARGET_HOOKS += PYTHON3_REMOVE_MODULES_FILES
|
|
|
|
|
|
$(eval $(autotools-package))
|
|
$(eval $(host-autotools-package))
|