[Python-Dev] python3 k1om dissociation permanence

ƦOB COASTN robertpancoast77 at gmail.com
Fri Jan 22 14:56:37 EST 2016


Hello,

Enabling the build system for Intel MIC k1om is non-trivial using Python-3.4.4
Using Python2 for the k1om is very popular, but I require Python3
support on k1om.

The first requirement to complete this build involved the download and
extraction of pre-built MPSS RPM's.
Then built required host python bins using GCC.
Lastly, build MIC bins using ICC.
The exacts are appended to the end of this message.

I would like to discuss a few change requirements that trial and error
has revealed.

1.) libffi requires the University OF Cantabria patch because the k1om
is not binary compatible with x86_64. [attached]

These libffi changes could be implemented using the __MIC__ or __KNC__ macros.
*see https://software.intel.com/en-us/node/514528

2.) ./configure script halts during failure to locate readelf for the host.

I simply commented out these lines in the ./configure file:
 #if test "$cross_compiling" = yes; then
    #case "$READELF" in
    #readelf|:)
    #as_fn_error $? "readelf for the host is required for cross
builds" "$LINENO" 5
    #;;
    #esac
#fi

Ideally, ./configure would support ICC and k1om.
Am I missing something in the configure/make commands below?
Is it possible to bypass the readelf requirement when cross-compiling for k1om?

Additionally, are any of the command line parameters below unnecessary?
PKG_CONFIG_LIBDIR
PKG_CONFIG_PATH
PYTHON_FOR_BUILD
_PYTHON_HOST_PLATFORM
HOSTPGEN
HOSTARCH
BUILDARCH


Thanks,
Rob




#copy/unpack the k1om bins tarball
cd /home/
wget mpss-3.4.6-k1om.tar
tar xvf mpss-3.4.6-k1om.tar
cd /home/mpss-3.4.6/k1om/
for rpm in *.rpm; do rpm2cpio $rpm | cpio -idm; done

#vars
PythonVersion=Python-3.4.4
k1om_rpm=/home/mpss-3.4.6/k1om/
INSTALLPREFIX=/home/Python/release/$PythonVersion-mic
SRC=/home/Python/$PythonVersion

echo "Compiling host Python"
cd $SRC && make distclean
cd $SRC && ./configure
cd $SRC && make python Parser/pgen
rm -f $SRC/hostpython
mv $SRC/python $SRC/hostpython
rm -f $SRC/Parser/hostpgen
mv $SRC/Parser/pgen $SRC/Parser/hostpgen
cd $SRC && make distclean

echo "Configuring Python for MIC..."
cd $SRC && CONFIG_SITE=config.site \
./configure \
CC="icc -mmic" \
CFLAGS="-I$k1om_rpm/include -I$k1om_rpm/usr/include -wd10006" \
CXX="icpc -mmic" \
CPPFLAGS="-I$k1om_rpm/include -I$k1om_rpm/usr/include -wd10006" \
PKG_CONFIG_LIBDIR="$k1om_rpm/usr/lib64/pkgconfig" \
PKG_CONFIG_PATH="$k1om_rpm/usr/lib64/pkgconfig" \
--host=x86_64-k1om-linux \
--build=x86_64-linux-gnu \
--with-cxx-main="icpc -mmic" \
--disable-ipv6
echo "done"

echo "Compiling Python for MIC..."
cd $SRC && make \
PYTHON_FOR_BUILD=./hostpython \
_PYTHON_HOST_PLATFORM=x86_64-k1om-linux \
HOSTPGEN=./Parser/hostpgen \
HOSTARCH=x86_64-k1om-linux \
BUILDARCH=x86_64-linux-gnu \
EXTRA_CFLAGS="-fp-model precise -shared -fPIC" \
LDFLAGS="-L$k1om_rpm/lib64 -L$k1om_rpm/usr/lib64"
echo "done"

echo "Installing Python for MIC"
mkdir -p $INSTALLPREFIX
cd $SRC && make install \
PYTHON_FOR_BUILD=./hostpython \
_PYTHON_HOST_PLATFORM=x86_64-k1om-linux \
prefix=$INSTALLPREFIX
echo "done"
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-k1om-libffi.patch
Type: application/octet-stream
Size: 18705 bytes
Desc: not available
URL: <http://mail.python.org/pipermail/python-dev/attachments/20160122/693e9b7d/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0002-READELF.patch
Type: application/octet-stream
Size: 790 bytes
Desc: not available
URL: <http://mail.python.org/pipermail/python-dev/attachments/20160122/693e9b7d/attachment-0001.obj>


More information about the Python-Dev mailing list