diff options
Diffstat (limited to 'yocto-poky/meta/recipes-devtools/python')
139 files changed, 8211 insertions, 0 deletions
diff --git a/yocto-poky/meta/recipes-devtools/python/python-2.7-manifest.inc b/yocto-poky/meta/recipes-devtools/python/python-2.7-manifest.inc new file mode 100644 index 000000000..dd8d82521 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-2.7-manifest.inc @@ -0,0 +1,288 @@ + +# WARNING: This file is AUTO GENERATED: Manual edits will be lost next time I regenerate the file. +# Generator: '../../../scripts/contrib/python/generate-manifest-2.7.py' Version 20110222.2 (C) 2002-2010 Michael 'Mickey' Lauer <mlauer@vanille-media.de> +# Visit the Python for Embedded Systems Site => http://www.Vanille.de/projects/python.spy + + + +PROVIDES+="${PN}-2to3 ${PN}-argparse ${PN}-audio ${PN}-bsddb ${PN}-codecs ${PN}-compile ${PN}-compiler ${PN}-compression ${PN}-contextlib ${PN}-core ${PN}-crypt ${PN}-ctypes ${PN}-curses ${PN}-datetime ${PN}-db ${PN}-debugger ${PN}-dev ${PN}-difflib ${PN}-distutils ${PN}-distutils-staticdev ${PN}-doctest ${PN}-elementtree ${PN}-email ${PN}-fcntl ${PN}-gdbm ${PN}-hotshot ${PN}-html ${PN}-idle ${PN}-image ${PN}-importlib ${PN}-io ${PN}-json ${PN}-lang ${PN}-logging ${PN}-mailbox ${PN}-math ${PN}-mime ${PN}-mmap ${PN}-multiprocessing ${PN}-netclient ${PN}-netserver ${PN}-numbers ${PN}-pickle ${PN}-pkgutil ${PN}-pprint ${PN}-profile ${PN}-pydoc ${PN}-re ${PN}-readline ${PN}-resource ${PN}-robotparser ${PN}-shell ${PN}-smtpd ${PN}-sqlite3 ${PN}-sqlite3-tests ${PN}-stringold ${PN}-subprocess ${PN}-syslog ${PN}-terminal ${PN}-tests ${PN}-textutils ${PN}-threading ${PN}-tkinter ${PN}-unittest ${PN}-unixadmin ${PN}-xml ${PN}-xmlrpc ${PN}-zlib " + +PACKAGES="${PN}-dbg ${PN}-2to3 ${PN}-argparse ${PN}-audio ${PN}-bsddb ${PN}-codecs ${PN}-compile ${PN}-compiler ${PN}-compression ${PN}-contextlib ${PN}-core ${PN}-crypt ${PN}-ctypes ${PN}-curses ${PN}-datetime ${PN}-db ${PN}-debugger ${PN}-dev ${PN}-difflib ${PN}-distutils-staticdev ${PN}-distutils ${PN}-doctest ${PN}-elementtree ${PN}-email ${PN}-fcntl ${PN}-gdbm ${PN}-hotshot ${PN}-html ${PN}-idle ${PN}-image ${PN}-importlib ${PN}-io ${PN}-json ${PN}-lang ${PN}-logging ${PN}-mailbox ${PN}-math ${PN}-mime ${PN}-mmap ${PN}-multiprocessing ${PN}-netclient ${PN}-netserver ${PN}-numbers ${PN}-pickle ${PN}-pkgutil ${PN}-pprint ${PN}-profile ${PN}-pydoc ${PN}-re ${PN}-readline ${PN}-resource ${PN}-robotparser ${PN}-shell ${PN}-smtpd ${PN}-sqlite3 ${PN}-sqlite3-tests ${PN}-stringold ${PN}-subprocess ${PN}-syslog ${PN}-terminal ${PN}-tests ${PN}-textutils ${PN}-threading ${PN}-tkinter ${PN}-unittest ${PN}-unixadmin ${PN}-xml ${PN}-xmlrpc ${PN}-zlib ${PN}-modules" + +SUMMARY_${PN}-2to3="Python automated Python 2 to 3 code translator" +RDEPENDS_${PN}-2to3="${PN}-core" +FILES_${PN}-2to3="${bindir}/2to3 ${libdir}/python2.7/lib2to3 " + +SUMMARY_${PN}-argparse="Python command line argument parser" +RDEPENDS_${PN}-argparse="${PN}-core ${PN}-codecs ${PN}-textutils" +FILES_${PN}-argparse="${libdir}/python2.7/argparse.* " + +SUMMARY_${PN}-audio="Python Audio Handling" +RDEPENDS_${PN}-audio="${PN}-core" +FILES_${PN}-audio="${libdir}/python2.7/wave.* ${libdir}/python2.7/chunk.* ${libdir}/python2.7/sndhdr.* ${libdir}/python2.7/lib-dynload/ossaudiodev.so ${libdir}/python2.7/lib-dynload/audioop.so ${libdir}/python2.7/audiodev.* ${libdir}/python2.7/sunaudio.* ${libdir}/python2.7/sunau.* ${libdir}/python2.7/toaiff.* " + +SUMMARY_${PN}-bsddb="Python bindings for the Berkeley Database" +RDEPENDS_${PN}-bsddb="${PN}-core" +FILES_${PN}-bsddb="${libdir}/python2.7/bsddb ${libdir}/python2.7/lib-dynload/_bsddb.so " + +SUMMARY_${PN}-codecs="Python codecs, encodings & i18n support" +RDEPENDS_${PN}-codecs="${PN}-core ${PN}-lang" +FILES_${PN}-codecs="${libdir}/python2.7/codecs.* ${libdir}/python2.7/encodings ${libdir}/python2.7/gettext.* ${libdir}/python2.7/locale.* ${libdir}/python2.7/lib-dynload/_locale.so ${libdir}/python2.7/lib-dynload/_codecs* ${libdir}/python2.7/lib-dynload/_multibytecodec.so ${libdir}/python2.7/lib-dynload/unicodedata.so ${libdir}/python2.7/stringprep.* ${libdir}/python2.7/xdrlib.* " + +SUMMARY_${PN}-compile="Python bytecode compilation support" +RDEPENDS_${PN}-compile="${PN}-core" +FILES_${PN}-compile="${libdir}/python2.7/py_compile.* ${libdir}/python2.7/compileall.* " + +SUMMARY_${PN}-compiler="Python compiler support" +RDEPENDS_${PN}-compiler="${PN}-core" +FILES_${PN}-compiler="${libdir}/python2.7/compiler " + +SUMMARY_${PN}-compression="Python high-level compression support" +RDEPENDS_${PN}-compression="${PN}-core ${PN}-zlib" +FILES_${PN}-compression="${libdir}/python2.7/gzip.* ${libdir}/python2.7/zipfile.* ${libdir}/python2.7/tarfile.* ${libdir}/python2.7/lib-dynload/bz2.so " + +SUMMARY_${PN}-contextlib="Python utilities for with-statementcontexts." +RDEPENDS_${PN}-contextlib="${PN}-core" +FILES_${PN}-contextlib="${libdir}/python${PYTHON_MAJMIN}/contextlib.* " + +SUMMARY_${PN}-core="Python interpreter and core modules" +RDEPENDS_${PN}-core="${PN}-lang ${PN}-re" +FILES_${PN}-core="${libdir}/python2.7/__future__.* ${libdir}/python2.7/_abcoll.* ${libdir}/python2.7/abc.* ${libdir}/python2.7/copy.* ${libdir}/python2.7/copy_reg.* ${libdir}/python2.7/ConfigParser.* ${libdir}/python2.7/genericpath.* ${libdir}/python2.7/getopt.* ${libdir}/python2.7/linecache.* ${libdir}/python2.7/new.* ${libdir}/python2.7/os.* ${libdir}/python2.7/posixpath.* ${libdir}/python2.7/struct.* ${libdir}/python2.7/warnings.* ${libdir}/python2.7/site.* ${libdir}/python2.7/stat.* ${libdir}/python2.7/UserDict.* ${libdir}/python2.7/UserList.* ${libdir}/python2.7/UserString.* ${libdir}/python2.7/lib-dynload/binascii.so ${libdir}/python2.7/lib-dynload/_struct.so ${libdir}/python2.7/lib-dynload/time.so ${libdir}/python2.7/lib-dynload/xreadlines.so ${libdir}/python2.7/types.* ${libdir}/python2.7/platform.* ${bindir}/python* ${libdir}/python2.7/_weakrefset.* ${libdir}/python2.7/sysconfig.* ${libdir}/python2.7/_sysconfigdata.* ${libdir}/python2.7/config/Makefile ${includedir}/python${PYTHON_MAJMIN}/pyconfig*.h ${libdir}/python${PYTHON_MAJMIN}/sitecustomize.py " + +SUMMARY_${PN}-crypt="Python basic cryptographic and hashing support" +RDEPENDS_${PN}-crypt="${PN}-core" +FILES_${PN}-crypt="${libdir}/python2.7/hashlib.* ${libdir}/python2.7/md5.* ${libdir}/python2.7/sha.* ${libdir}/python2.7/lib-dynload/crypt.so ${libdir}/python2.7/lib-dynload/_hashlib.so ${libdir}/python2.7/lib-dynload/_sha256.so ${libdir}/python2.7/lib-dynload/_sha512.so " + +SUMMARY_${PN}-ctypes="Python C types support" +RDEPENDS_${PN}-ctypes="${PN}-core" +FILES_${PN}-ctypes="${libdir}/python2.7/ctypes ${libdir}/python2.7/lib-dynload/_ctypes.so ${libdir}/python2.7/lib-dynload/_ctypes_test.so " + +SUMMARY_${PN}-curses="Python curses support" +RDEPENDS_${PN}-curses="${PN}-core" +FILES_${PN}-curses="${libdir}/python2.7/curses ${libdir}/python2.7/lib-dynload/_curses.so ${libdir}/python2.7/lib-dynload/_curses_panel.so " + +SUMMARY_${PN}-datetime="Python calendar and time support" +RDEPENDS_${PN}-datetime="${PN}-core ${PN}-codecs" +FILES_${PN}-datetime="${libdir}/python2.7/_strptime.* ${libdir}/python2.7/calendar.* ${libdir}/python2.7/lib-dynload/datetime.so " + +SUMMARY_${PN}-db="Python file-based database support" +RDEPENDS_${PN}-db="${PN}-core" +FILES_${PN}-db="${libdir}/python2.7/anydbm.* ${libdir}/python2.7/dumbdbm.* ${libdir}/python2.7/whichdb.* " + +SUMMARY_${PN}-debugger="Python debugger" +RDEPENDS_${PN}-debugger="${PN}-core ${PN}-io ${PN}-lang ${PN}-re ${PN}-stringold ${PN}-shell ${PN}-pprint" +FILES_${PN}-debugger="${libdir}/python2.7/bdb.* ${libdir}/python2.7/pdb.* " + +SUMMARY_${PN}-dev="Python development package" +RDEPENDS_${PN}-dev="${PN}-core" +FILES_${PN}-dev="${includedir} ${libdir}/lib*${SOLIBSDEV} ${libdir}/*.la ${libdir}/*.a ${libdir}/*.o ${libdir}/pkgconfig ${base_libdir}/*.a ${base_libdir}/*.o ${datadir}/aclocal ${datadir}/pkgconfig " + +SUMMARY_${PN}-difflib="Python helpers for computing deltas between objects" +RDEPENDS_${PN}-difflib="${PN}-lang ${PN}-re" +FILES_${PN}-difflib="${libdir}/python2.7/difflib.* " + +SUMMARY_${PN}-distutils="Python Distribution Utilities" +RDEPENDS_${PN}-distutils="${PN}-core" +FILES_${PN}-distutils="${libdir}/python2.7/config ${libdir}/python2.7/distutils " + +SUMMARY_${PN}-distutils-staticdev="Python distribution utilities (static libraries)" +RDEPENDS_${PN}-distutils-staticdev="${PN}-distutils" +FILES_${PN}-distutils-staticdev="${libdir}/python2.7/config/lib*.a " + +SUMMARY_${PN}-doctest="Python framework for running examples in docstrings" +RDEPENDS_${PN}-doctest="${PN}-core ${PN}-lang ${PN}-io ${PN}-re ${PN}-unittest ${PN}-debugger ${PN}-difflib" +FILES_${PN}-doctest="${libdir}/python2.7/doctest.* " + +SUMMARY_${PN}-elementtree="Python elementree" +RDEPENDS_${PN}-elementtree="${PN}-core" +FILES_${PN}-elementtree="${libdir}/python2.7/lib-dynload/_elementtree.so " + +SUMMARY_${PN}-email="Python email support" +RDEPENDS_${PN}-email="${PN}-core ${PN}-io ${PN}-re ${PN}-mime ${PN}-audio ${PN}-image ${PN}-netclient" +FILES_${PN}-email="${libdir}/python2.7/imaplib.* ${libdir}/python2.7/email " + +SUMMARY_${PN}-fcntl="Python's fcntl interface" +RDEPENDS_${PN}-fcntl="${PN}-core" +FILES_${PN}-fcntl="${libdir}/python2.7/lib-dynload/fcntl.so " + +SUMMARY_${PN}-gdbm="Python GNU database support" +RDEPENDS_${PN}-gdbm="${PN}-core" +FILES_${PN}-gdbm="${libdir}/python2.7/lib-dynload/gdbm.so " + +SUMMARY_${PN}-hotshot="Python hotshot performance profiler" +RDEPENDS_${PN}-hotshot="${PN}-core" +FILES_${PN}-hotshot="${libdir}/python2.7/hotshot ${libdir}/python2.7/lib-dynload/_hotshot.so " + +SUMMARY_${PN}-html="Python HTML processing support" +RDEPENDS_${PN}-html="${PN}-core" +FILES_${PN}-html="${libdir}/python2.7/formatter.* ${libdir}/python2.7/htmlentitydefs.* ${libdir}/python2.7/htmllib.* ${libdir}/python2.7/markupbase.* ${libdir}/python2.7/sgmllib.* ${libdir}/python2.7/HTMLParser.* " + +SUMMARY_${PN}-idle="Python Integrated Development Environment" +RDEPENDS_${PN}-idle="${PN}-core ${PN}-tkinter" +FILES_${PN}-idle="${bindir}/idle ${libdir}/python2.7/idlelib " + +SUMMARY_${PN}-image="Python graphical image handling" +RDEPENDS_${PN}-image="${PN}-core" +FILES_${PN}-image="${libdir}/python2.7/colorsys.* ${libdir}/python2.7/imghdr.* ${libdir}/python2.7/lib-dynload/imageop.so ${libdir}/python2.7/lib-dynload/rgbimg.so " + +SUMMARY_${PN}-importlib="Python import implementation library" +RDEPENDS_${PN}-importlib="${PN}-core" +FILES_${PN}-importlib="${libdir}/python2.7/importlib " + +SUMMARY_${PN}-io="Python low-level I/O" +RDEPENDS_${PN}-io="${PN}-core ${PN}-math ${PN}-textutils ${PN}-netclient ${PN}-contextlib" +FILES_${PN}-io="${libdir}/python2.7/lib-dynload/_socket.so ${libdir}/python2.7/lib-dynload/_io.so ${libdir}/python2.7/lib-dynload/_ssl.so ${libdir}/python2.7/lib-dynload/select.so ${libdir}/python2.7/lib-dynload/termios.so ${libdir}/python2.7/lib-dynload/cStringIO.so ${libdir}/python2.7/pipes.* ${libdir}/python2.7/socket.* ${libdir}/python2.7/ssl.* ${libdir}/python2.7/tempfile.* ${libdir}/python2.7/StringIO.* ${libdir}/python2.7/io.* ${libdir}/python2.7/_pyio.* " + +SUMMARY_${PN}-json="Python JSON support" +RDEPENDS_${PN}-json="${PN}-core ${PN}-math ${PN}-re ${PN}-codecs" +FILES_${PN}-json="${libdir}/python2.7/json ${libdir}/python2.7/lib-dynload/_json.so " + +SUMMARY_${PN}-lang="Python low-level language support" +RDEPENDS_${PN}-lang="${PN}-core" +FILES_${PN}-lang="${libdir}/python2.7/lib-dynload/_bisect.so ${libdir}/python2.7/lib-dynload/_collections.so ${libdir}/python2.7/lib-dynload/_heapq.so ${libdir}/python2.7/lib-dynload/_weakref.so ${libdir}/python2.7/lib-dynload/_functools.so ${libdir}/python2.7/lib-dynload/array.so ${libdir}/python2.7/lib-dynload/itertools.so ${libdir}/python2.7/lib-dynload/operator.so ${libdir}/python2.7/lib-dynload/parser.so ${libdir}/python2.7/atexit.* ${libdir}/python2.7/bisect.* ${libdir}/python2.7/code.* ${libdir}/python2.7/codeop.* ${libdir}/python2.7/collections.* ${libdir}/python2.7/dis.* ${libdir}/python2.7/functools.* ${libdir}/python2.7/heapq.* ${libdir}/python2.7/inspect.* ${libdir}/python2.7/keyword.* ${libdir}/python2.7/opcode.* ${libdir}/python2.7/symbol.* ${libdir}/python2.7/repr.* ${libdir}/python2.7/token.* ${libdir}/python2.7/tokenize.* ${libdir}/python2.7/traceback.* ${libdir}/python2.7/weakref.* " + +SUMMARY_${PN}-logging="Python logging support" +RDEPENDS_${PN}-logging="${PN}-core ${PN}-io ${PN}-lang ${PN}-pickle ${PN}-stringold" +FILES_${PN}-logging="${libdir}/python2.7/logging " + +SUMMARY_${PN}-mailbox="Python mailbox format support" +RDEPENDS_${PN}-mailbox="${PN}-core ${PN}-mime" +FILES_${PN}-mailbox="${libdir}/python2.7/mailbox.* " + +SUMMARY_${PN}-math="Python math support" +RDEPENDS_${PN}-math="${PN}-core ${PN}-crypt" +FILES_${PN}-math="${libdir}/python2.7/lib-dynload/cmath.so ${libdir}/python2.7/lib-dynload/math.so ${libdir}/python2.7/lib-dynload/_random.so ${libdir}/python2.7/random.* ${libdir}/python2.7/sets.* " + +SUMMARY_${PN}-mime="Python MIME handling APIs" +RDEPENDS_${PN}-mime="${PN}-core ${PN}-io" +FILES_${PN}-mime="${libdir}/python2.7/mimetools.* ${libdir}/python2.7/uu.* ${libdir}/python2.7/quopri.* ${libdir}/python2.7/rfc822.* ${libdir}/python2.7/MimeWriter.* " + +SUMMARY_${PN}-mmap="Python memory-mapped file support" +RDEPENDS_${PN}-mmap="${PN}-core ${PN}-io" +FILES_${PN}-mmap="${libdir}/python2.7/lib-dynload/mmap.so " + +SUMMARY_${PN}-multiprocessing="Python multiprocessing support" +RDEPENDS_${PN}-multiprocessing="${PN}-core ${PN}-io ${PN}-lang ${PN}-pickle ${PN}-threading ${PN}-ctypes ${PN}-mmap" +FILES_${PN}-multiprocessing="${libdir}/python2.7/lib-dynload/_multiprocessing.so ${libdir}/python2.7/multiprocessing " + +SUMMARY_${PN}-netclient="Python Internet Protocol clients" +RDEPENDS_${PN}-netclient="${PN}-core ${PN}-crypt ${PN}-datetime ${PN}-io ${PN}-lang ${PN}-logging ${PN}-mime" +FILES_${PN}-netclient="${libdir}/python2.7/*Cookie*.* ${libdir}/python2.7/base64.* ${libdir}/python2.7/cookielib.* ${libdir}/python2.7/ftplib.* ${libdir}/python2.7/gopherlib.* ${libdir}/python2.7/hmac.* ${libdir}/python2.7/httplib.* ${libdir}/python2.7/mimetypes.* ${libdir}/python2.7/nntplib.* ${libdir}/python2.7/poplib.* ${libdir}/python2.7/smtplib.* ${libdir}/python2.7/telnetlib.* ${libdir}/python2.7/urllib.* ${libdir}/python2.7/urllib2.* ${libdir}/python2.7/urlparse.* ${libdir}/python2.7/uuid.* ${libdir}/python2.7/rfc822.* ${libdir}/python2.7/mimetools.* " + +SUMMARY_${PN}-netserver="Python Internet Protocol servers" +RDEPENDS_${PN}-netserver="${PN}-core ${PN}-netclient ${PN}-shell ${PN}-threading" +FILES_${PN}-netserver="${libdir}/python2.7/cgi.* ${libdir}/python2.7/*HTTPServer.* ${libdir}/python2.7/SocketServer.* " + +SUMMARY_${PN}-numbers="Python number APIs" +RDEPENDS_${PN}-numbers="${PN}-core ${PN}-lang ${PN}-re" +FILES_${PN}-numbers="${libdir}/python2.7/decimal.* ${libdir}/python2.7/fractions.* ${libdir}/python2.7/numbers.* " + +SUMMARY_${PN}-pickle="Python serialisation/persistence support" +RDEPENDS_${PN}-pickle="${PN}-core ${PN}-codecs ${PN}-io ${PN}-re" +FILES_${PN}-pickle="${libdir}/python2.7/pickle.* ${libdir}/python2.7/shelve.* ${libdir}/python2.7/lib-dynload/cPickle.so ${libdir}/python2.7/pickletools.* " + +SUMMARY_${PN}-pkgutil="Python package extension utility support" +RDEPENDS_${PN}-pkgutil="${PN}-core" +FILES_${PN}-pkgutil="${libdir}/python2.7/pkgutil.* " + +SUMMARY_${PN}-pprint="Python pretty-print support" +RDEPENDS_${PN}-pprint="${PN}-core ${PN}-io" +FILES_${PN}-pprint="${libdir}/python2.7/pprint.* " + +SUMMARY_${PN}-profile="Python basic performance profiling support" +RDEPENDS_${PN}-profile="${PN}-core ${PN}-textutils" +FILES_${PN}-profile="${libdir}/python2.7/profile.* ${libdir}/python2.7/pstats.* ${libdir}/python2.7/cProfile.* ${libdir}/python2.7/lib-dynload/_lsprof.so " + +SUMMARY_${PN}-pydoc="Python interactive help support" +RDEPENDS_${PN}-pydoc="${PN}-core ${PN}-lang ${PN}-stringold ${PN}-re" +FILES_${PN}-pydoc="${bindir}/pydoc ${libdir}/python2.7/pydoc.* ${libdir}/python2.7/pydoc_data " + +SUMMARY_${PN}-re="Python Regular Expression APIs" +RDEPENDS_${PN}-re="${PN}-core" +FILES_${PN}-re="${libdir}/python2.7/re.* ${libdir}/python2.7/sre.* ${libdir}/python2.7/sre_compile.* ${libdir}/python2.7/sre_constants* ${libdir}/python2.7/sre_parse.* " + +SUMMARY_${PN}-readline="Python readline support" +RDEPENDS_${PN}-readline="${PN}-core" +FILES_${PN}-readline="${libdir}/python2.7/lib-dynload/readline.so ${libdir}/python2.7/rlcompleter.* " + +SUMMARY_${PN}-resource="Python resource control interface" +RDEPENDS_${PN}-resource="${PN}-core" +FILES_${PN}-resource="${libdir}/python2.7/lib-dynload/resource.so " + +SUMMARY_${PN}-robotparser="Python robots.txt parser" +RDEPENDS_${PN}-robotparser="${PN}-core ${PN}-netclient" +FILES_${PN}-robotparser="${libdir}/python2.7/robotparser.* " + +SUMMARY_${PN}-shell="Python shell-like functionality" +RDEPENDS_${PN}-shell="${PN}-core ${PN}-re" +FILES_${PN}-shell="${libdir}/python2.7/cmd.* ${libdir}/python2.7/commands.* ${libdir}/python2.7/dircache.* ${libdir}/python2.7/fnmatch.* ${libdir}/python2.7/glob.* ${libdir}/python2.7/popen2.* ${libdir}/python2.7/shlex.* ${libdir}/python2.7/shutil.* " + +SUMMARY_${PN}-smtpd="Python Simple Mail Transport Daemon" +RDEPENDS_${PN}-smtpd="${PN}-core ${PN}-netserver ${PN}-email ${PN}-mime" +FILES_${PN}-smtpd="${bindir}/smtpd.* ${libdir}/python2.7/smtpd.* " + +SUMMARY_${PN}-sqlite3="Python Sqlite3 database support" +RDEPENDS_${PN}-sqlite3="${PN}-core ${PN}-datetime ${PN}-lang ${PN}-crypt ${PN}-io ${PN}-threading ${PN}-zlib" +FILES_${PN}-sqlite3="${libdir}/python2.7/lib-dynload/_sqlite3.so ${libdir}/python2.7/sqlite3/dbapi2.* ${libdir}/python2.7/sqlite3/__init__.* ${libdir}/python2.7/sqlite3/dump.* " + +SUMMARY_${PN}-sqlite3-tests="Python Sqlite3 database support tests" +RDEPENDS_${PN}-sqlite3-tests="${PN}-core ${PN}-sqlite3" +FILES_${PN}-sqlite3-tests="${libdir}/python2.7/sqlite3/test " + +SUMMARY_${PN}-stringold="Python string APIs [deprecated]" +RDEPENDS_${PN}-stringold="${PN}-core ${PN}-re" +FILES_${PN}-stringold="${libdir}/python2.7/lib-dynload/strop.so ${libdir}/python2.7/string.* ${libdir}/python2.7/stringold.* " + +SUMMARY_${PN}-subprocess="Python subprocess support" +RDEPENDS_${PN}-subprocess="${PN}-core ${PN}-io ${PN}-re ${PN}-fcntl ${PN}-pickle" +FILES_${PN}-subprocess="${libdir}/python2.7/subprocess.* " + +SUMMARY_${PN}-syslog="Python syslog interface" +RDEPENDS_${PN}-syslog="${PN}-core" +FILES_${PN}-syslog="${libdir}/python2.7/lib-dynload/syslog.so " + +SUMMARY_${PN}-terminal="Python terminal controlling support" +RDEPENDS_${PN}-terminal="${PN}-core ${PN}-io" +FILES_${PN}-terminal="${libdir}/python2.7/pty.* ${libdir}/python2.7/tty.* " + +SUMMARY_${PN}-tests="Python tests" +RDEPENDS_${PN}-tests="${PN}-core" +FILES_${PN}-tests="${libdir}/python2.7/test " + +SUMMARY_${PN}-textutils="Python option parsing, text wrapping and CSV support" +RDEPENDS_${PN}-textutils="${PN}-core ${PN}-io ${PN}-re ${PN}-stringold" +FILES_${PN}-textutils="${libdir}/python2.7/lib-dynload/_csv.so ${libdir}/python2.7/csv.* ${libdir}/python2.7/optparse.* ${libdir}/python2.7/textwrap.* " + +SUMMARY_${PN}-threading="Python threading & synchronization support" +RDEPENDS_${PN}-threading="${PN}-core ${PN}-lang" +FILES_${PN}-threading="${libdir}/python2.7/_threading_local.* ${libdir}/python2.7/dummy_thread.* ${libdir}/python2.7/dummy_threading.* ${libdir}/python2.7/mutex.* ${libdir}/python2.7/threading.* ${libdir}/python2.7/Queue.* " + +SUMMARY_${PN}-tkinter="Python Tcl/Tk bindings" +RDEPENDS_${PN}-tkinter="${PN}-core" +FILES_${PN}-tkinter="${libdir}/python2.7/lib-dynload/_tkinter.so ${libdir}/python2.7/lib-tk " + +SUMMARY_${PN}-unittest="Python unit testing framework" +RDEPENDS_${PN}-unittest="${PN}-core ${PN}-stringold ${PN}-lang ${PN}-io ${PN}-difflib ${PN}-pprint ${PN}-shell" +FILES_${PN}-unittest="${libdir}/python2.7/unittest/ " + +SUMMARY_${PN}-unixadmin="Python Unix administration support" +RDEPENDS_${PN}-unixadmin="${PN}-core" +FILES_${PN}-unixadmin="${libdir}/python2.7/lib-dynload/nis.so ${libdir}/python2.7/lib-dynload/grp.so ${libdir}/python2.7/lib-dynload/pwd.so ${libdir}/python2.7/getpass.* " + +SUMMARY_${PN}-xml="Python basic XML support" +RDEPENDS_${PN}-xml="${PN}-core ${PN}-elementtree ${PN}-re" +FILES_${PN}-xml="${libdir}/python2.7/lib-dynload/pyexpat.so ${libdir}/python2.7/xml ${libdir}/python2.7/xmllib.* " + +SUMMARY_${PN}-xmlrpc="Python XML-RPC support" +RDEPENDS_${PN}-xmlrpc="${PN}-core ${PN}-xml ${PN}-netserver ${PN}-lang" +FILES_${PN}-xmlrpc="${libdir}/python2.7/xmlrpclib.* ${libdir}/python2.7/SimpleXMLRPCServer.* ${libdir}/python2.7/DocXMLRPCServer.* " + +SUMMARY_${PN}-zlib="Python zlib compression support" +RDEPENDS_${PN}-zlib="${PN}-core" +FILES_${PN}-zlib="${libdir}/python2.7/lib-dynload/zlib.so " + +SUMMARY_${PN}-modules="All Python modules" +RDEPENDS_${PN}-modules="${PN}-2to3 ${PN}-argparse ${PN}-audio ${PN}-bsddb ${PN}-codecs ${PN}-compile ${PN}-compiler ${PN}-compression ${PN}-contextlib ${PN}-core ${PN}-crypt ${PN}-ctypes ${PN}-curses ${PN}-datetime ${PN}-db ${PN}-debugger ${PN}-difflib ${PN}-distutils ${PN}-doctest ${PN}-elementtree ${PN}-email ${PN}-fcntl ${PN}-gdbm ${PN}-hotshot ${PN}-html ${PN}-idle ${PN}-image ${PN}-importlib ${PN}-io ${PN}-json ${PN}-lang ${PN}-logging ${PN}-mailbox ${PN}-math ${PN}-mime ${PN}-mmap ${PN}-multiprocessing ${PN}-netclient ${PN}-netserver ${PN}-numbers ${PN}-pickle ${PN}-pkgutil ${PN}-pprint ${PN}-profile ${PN}-pydoc ${PN}-re ${PN}-readline ${PN}-resource ${PN}-robotparser ${PN}-shell ${PN}-smtpd ${PN}-sqlite3 ${PN}-sqlite3-tests ${PN}-stringold ${PN}-subprocess ${PN}-syslog ${PN}-terminal ${PN}-tests ${PN}-textutils ${PN}-threading ${PN}-tkinter ${PN}-unittest ${PN}-unixadmin ${PN}-xml ${PN}-xmlrpc ${PN}-zlib " +ALLOW_EMPTY_${PN}-modules = "1" + + diff --git a/yocto-poky/meta/recipes-devtools/python/python-3.4-manifest.inc b/yocto-poky/meta/recipes-devtools/python/python-3.4-manifest.inc new file mode 100644 index 000000000..07e149027 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-3.4-manifest.inc @@ -0,0 +1,268 @@ + +# WARNING: This file is AUTO GENERATED: Manual edits will be lost next time I regenerate the file. +# Generator: '../../../scripts/contrib/python/generate-manifest-3.4.py' Version 20140131 (C) 2002-2010 Michael 'Mickey' Lauer <mlauer@vanille-media.de> +# Visit the Python for Embedded Systems Site => http://www.Vanille.de/projects/python.spy + + + +PROVIDES+="${PN}-2to3 ${PN}-asyncio ${PN}-audio ${PN}-codecs ${PN}-compile ${PN}-compression ${PN}-core ${PN}-crypt ${PN}-ctypes ${PN}-curses ${PN}-datetime ${PN}-db ${PN}-debugger ${PN}-dev ${PN}-difflib ${PN}-distutils ${PN}-distutils-staticdev ${PN}-doctest ${PN}-elementtree ${PN}-email ${PN}-fcntl ${PN}-gdbm ${PN}-html ${PN}-idle ${PN}-image ${PN}-importlib ${PN}-io ${PN}-json ${PN}-lang ${PN}-logging ${PN}-mailbox ${PN}-math ${PN}-mime ${PN}-mmap ${PN}-multiprocessing ${PN}-netclient ${PN}-netserver ${PN}-numbers ${PN}-pickle ${PN}-pkgutil ${PN}-pprint ${PN}-profile ${PN}-pydoc ${PN}-re ${PN}-readline ${PN}-reprlib ${PN}-resource ${PN}-shell ${PN}-smtpd ${PN}-sqlite3 ${PN}-sqlite3-tests ${PN}-stringold ${PN}-subprocess ${PN}-syslog ${PN}-terminal ${PN}-tests ${PN}-textutils ${PN}-threading ${PN}-tkinter ${PN}-unittest ${PN}-unixadmin ${PN}-xml ${PN}-xmlrpc " + +PACKAGES="${PN}-dbg ${PN}-2to3 ${PN}-asyncio ${PN}-audio ${PN}-codecs ${PN}-compile ${PN}-compression ${PN}-core ${PN}-crypt ${PN}-ctypes ${PN}-curses ${PN}-datetime ${PN}-db ${PN}-debugger ${PN}-dev ${PN}-difflib ${PN}-distutils-staticdev ${PN}-distutils ${PN}-doctest ${PN}-elementtree ${PN}-email ${PN}-fcntl ${PN}-gdbm ${PN}-html ${PN}-idle ${PN}-image ${PN}-importlib ${PN}-io ${PN}-json ${PN}-lang ${PN}-logging ${PN}-mailbox ${PN}-math ${PN}-mime ${PN}-mmap ${PN}-multiprocessing ${PN}-netclient ${PN}-netserver ${PN}-numbers ${PN}-pickle ${PN}-pkgutil ${PN}-pprint ${PN}-profile ${PN}-pydoc ${PN}-re ${PN}-readline ${PN}-reprlib ${PN}-resource ${PN}-shell ${PN}-smtpd ${PN}-sqlite3 ${PN}-sqlite3-tests ${PN}-stringold ${PN}-subprocess ${PN}-syslog ${PN}-terminal ${PN}-tests ${PN}-textutils ${PN}-threading ${PN}-tkinter ${PN}-unittest ${PN}-unixadmin ${PN}-xml ${PN}-xmlrpc ${PN}-modules" + +SUMMARY_${PN}-2to3="Python automated Python 2 to 3 code translator" +RDEPENDS_${PN}-2to3="${PN}-core" +FILES_${PN}-2to3="${libdir}/python3.4/lib2to3 " + +SUMMARY_${PN}-asyncio="Python Asynchronous I/O, event loop, coroutines and tasks" +RDEPENDS_${PN}-asyncio="${PN}-core" +FILES_${PN}-asyncio="${libdir}/python3.4/asyncio " + +SUMMARY_${PN}-audio="Python Audio Handling" +RDEPENDS_${PN}-audio="${PN}-core" +FILES_${PN}-audio="${libdir}/python3.4/wave.* ${libdir}/python3.4/chunk.* ${libdir}/python3.4/sndhdr.* ${libdir}/python3.4/lib-dynload/ossaudiodev.*.so ${libdir}/python3.4/lib-dynload/audioop.*.so ${libdir}/python3.4/audiodev.* ${libdir}/python3.4/sunaudio.* ${libdir}/python3.4/sunau.* ${libdir}/python3.4/toaiff.* " + +SUMMARY_${PN}-codecs="Python codecs, encodings & i18n support" +RDEPENDS_${PN}-codecs="${PN}-core ${PN}-lang" +FILES_${PN}-codecs="${libdir}/python3.4/codecs.* ${libdir}/python3.4/encodings ${libdir}/python3.4/gettext.* ${libdir}/python3.4/locale.* ${libdir}/python3.4/lib-dynload/_locale.*.so ${libdir}/python3.4/lib-dynload/_codecs* ${libdir}/python3.4/lib-dynload/_multibytecodec.*.so ${libdir}/python3.4/lib-dynload/unicodedata.*.so ${libdir}/python3.4/stringprep.* ${libdir}/python3.4/xdrlib.* " + +SUMMARY_${PN}-compile="Python bytecode compilation support" +RDEPENDS_${PN}-compile="${PN}-core" +FILES_${PN}-compile="${libdir}/python3.4/py_compile.* ${libdir}/python3.4/compileall.* " + +SUMMARY_${PN}-compression="Python high-level compression support" +RDEPENDS_${PN}-compression="${PN}-core ${PN}-codecs" +FILES_${PN}-compression="${libdir}/python3.4/gzip.* ${libdir}/python3.4/zipfile.* ${libdir}/python3.4/tarfile.* ${libdir}/python3.4/lib-dynload/bz2.*.so " + +SUMMARY_${PN}-core="Python interpreter and core modules" +RDEPENDS_${PN}-core="${PN}-lang ${PN}-re ${PN}-reprlib ${PN}-codecs ${PN}-io ${PN}-math" +FILES_${PN}-core="${libdir}/python3.4/__future__.* ${libdir}/python3.4/_abcoll.* ${libdir}/python3.4/abc.* ${libdir}/python3.4/copy.* ${libdir}/python3.4/copyreg.* ${libdir}/python3.4/ConfigParser.* ${libdir}/python3.4/genericpath.* ${libdir}/python3.4/getopt.* ${libdir}/python3.4/linecache.* ${libdir}/python3.4/new.* ${libdir}/python3.4/os.* ${libdir}/python3.4/posixpath.* ${libdir}/python3.4/struct.* ${libdir}/python3.4/warnings.* ${libdir}/python3.4/site.* ${libdir}/python3.4/stat.* ${libdir}/python3.4/UserDict.* ${libdir}/python3.4/UserList.* ${libdir}/python3.4/UserString.* ${libdir}/python3.4/lib-dynload/binascii.*.so ${libdir}/python3.4/lib-dynload/_struct.*.so ${libdir}/python3.4/lib-dynload/time.*.so ${libdir}/python3.4/lib-dynload/xreadlines.*.so ${libdir}/python3.4/types.* ${libdir}/python3.4/platform.* ${bindir}/python* ${libdir}/python3.4/_weakrefset.* ${libdir}/python3.4/sysconfig.* ${libdir}/python3.4/_sysconfigdata.* ${libdir}/python3.4/config/Makefile ${includedir}/python${PYTHON_BINABI}/pyconfig*.h ${libdir}/python${PYTHON_MAJMIN}/collections ${libdir}/python${PYTHON_MAJMIN}/_collections_abc.* ${libdir}/python${PYTHON_MAJMIN}/_sitebuiltins.* ${libdir}/python${PYTHON_MAJMIN}/sitecustomize.py " + +SUMMARY_${PN}-crypt="Python basic cryptographic and hashing support" +RDEPENDS_${PN}-crypt="${PN}-core" +FILES_${PN}-crypt="${libdir}/python3.4/hashlib.* ${libdir}/python3.4/md5.* ${libdir}/python3.4/sha.* ${libdir}/python3.4/lib-dynload/crypt.*.so ${libdir}/python3.4/lib-dynload/_hashlib.*.so ${libdir}/python3.4/lib-dynload/_sha256.*.so ${libdir}/python3.4/lib-dynload/_sha512.*.so " + +SUMMARY_${PN}-ctypes="Python C types support" +RDEPENDS_${PN}-ctypes="${PN}-core" +FILES_${PN}-ctypes="${libdir}/python3.4/ctypes ${libdir}/python3.4/lib-dynload/_ctypes.*.so ${libdir}/python3.4/lib-dynload/_ctypes_test.*.so " + +SUMMARY_${PN}-curses="Python curses support" +RDEPENDS_${PN}-curses="${PN}-core" +FILES_${PN}-curses="${libdir}/python3.4/curses ${libdir}/python3.4/lib-dynload/_curses.*.so ${libdir}/python3.4/lib-dynload/_curses_panel.*.so " + +SUMMARY_${PN}-datetime="Python calendar and time support" +RDEPENDS_${PN}-datetime="${PN}-core ${PN}-codecs" +FILES_${PN}-datetime="${libdir}/python3.4/_strptime.* ${libdir}/python3.4/calendar.* ${libdir}/python3.4/lib-dynload/datetime.*.so " + +SUMMARY_${PN}-db="Python file-based database support" +RDEPENDS_${PN}-db="${PN}-core" +FILES_${PN}-db="${libdir}/python3.4/anydbm.* ${libdir}/python3.4/dumbdbm.* ${libdir}/python3.4/whichdb.* ${libdir}/python3.4/dbm ${libdir}/python3.4/lib-dynload/_dbm.*.so " + +SUMMARY_${PN}-debugger="Python debugger" +RDEPENDS_${PN}-debugger="${PN}-core ${PN}-io ${PN}-lang ${PN}-re ${PN}-stringold ${PN}-shell ${PN}-pprint" +FILES_${PN}-debugger="${libdir}/python3.4/bdb.* ${libdir}/python3.4/pdb.* " + +SUMMARY_${PN}-dev="Python development package" +RDEPENDS_${PN}-dev="${PN}-core" +FILES_${PN}-dev="${includedir} ${libdir}/lib*${SOLIBSDEV} ${libdir}/*.la ${libdir}/*.a ${libdir}/*.o ${libdir}/pkgconfig ${base_libdir}/*.a ${base_libdir}/*.o ${datadir}/aclocal ${datadir}/pkgconfig " + +SUMMARY_${PN}-difflib="Python helpers for computing deltas between objects" +RDEPENDS_${PN}-difflib="${PN}-lang ${PN}-re" +FILES_${PN}-difflib="${libdir}/python3.4/difflib.* " + +SUMMARY_${PN}-distutils="Python Distribution Utilities" +RDEPENDS_${PN}-distutils="${PN}-core" +FILES_${PN}-distutils="${libdir}/python3.4/config ${libdir}/python3.4/distutils " + +SUMMARY_${PN}-distutils-staticdev="Python distribution utilities (static libraries)" +RDEPENDS_${PN}-distutils-staticdev="${PN}-distutils" +FILES_${PN}-distutils-staticdev="${libdir}/python3.4/config/lib*.a " + +SUMMARY_${PN}-doctest="Python framework for running examples in docstrings" +RDEPENDS_${PN}-doctest="${PN}-core ${PN}-lang ${PN}-io ${PN}-re ${PN}-unittest ${PN}-debugger ${PN}-difflib" +FILES_${PN}-doctest="${libdir}/python3.4/doctest.* " + +SUMMARY_${PN}-elementtree="Python elementree" +RDEPENDS_${PN}-elementtree="${PN}-core" +FILES_${PN}-elementtree="${libdir}/python3.4/lib-dynload/_elementtree.*.so " + +SUMMARY_${PN}-email="Python email support" +RDEPENDS_${PN}-email="${PN}-core ${PN}-io ${PN}-re ${PN}-mime ${PN}-audio ${PN}-image ${PN}-netclient" +FILES_${PN}-email="${libdir}/python3.4/imaplib.* ${libdir}/python3.4/email " + +SUMMARY_${PN}-fcntl="Python's fcntl interface" +RDEPENDS_${PN}-fcntl="${PN}-core" +FILES_${PN}-fcntl="${libdir}/python3.4/lib-dynload/fcntl.*.so " + +SUMMARY_${PN}-gdbm="Python GNU database support" +RDEPENDS_${PN}-gdbm="${PN}-core" +FILES_${PN}-gdbm="${libdir}/python3.4/lib-dynload/_gdbm.*.so " + +SUMMARY_${PN}-html="Python HTML processing support" +RDEPENDS_${PN}-html="${PN}-core" +FILES_${PN}-html="${libdir}/python3.4/formatter.* ${libdir}/python3.4/htmlentitydefs.* ${libdir}/python3.4/htmllib.* ${libdir}/python3.4/markupbase.* ${libdir}/python3.4/sgmllib.* ${libdir}/python3.4/HTMLParser.* " + +SUMMARY_${PN}-idle="Python Integrated Development Environment" +RDEPENDS_${PN}-idle="${PN}-core ${PN}-tkinter" +FILES_${PN}-idle="${bindir}/idle ${libdir}/python3.4/idlelib " + +SUMMARY_${PN}-image="Python graphical image handling" +RDEPENDS_${PN}-image="${PN}-core" +FILES_${PN}-image="${libdir}/python3.4/colorsys.* ${libdir}/python3.4/imghdr.* ${libdir}/python3.4/lib-dynload/imageop.*.so ${libdir}/python3.4/lib-dynload/rgbimg.*.so " + +SUMMARY_${PN}-importlib="Python import implementation library" +RDEPENDS_${PN}-importlib="${PN}-core" +FILES_${PN}-importlib="${libdir}/python3.4/importlib " + +SUMMARY_${PN}-io="Python low-level I/O" +RDEPENDS_${PN}-io="${PN}-core ${PN}-math" +FILES_${PN}-io="${libdir}/python3.4/lib-dynload/_socket.*.so ${libdir}/python3.4/lib-dynload/_io.*.so ${libdir}/python3.4/lib-dynload/_ssl.*.so ${libdir}/python3.4/lib-dynload/select.*.so ${libdir}/python3.4/lib-dynload/termios.*.so ${libdir}/python3.4/lib-dynload/cStringIO.*.so ${libdir}/python3.4/pipes.* ${libdir}/python3.4/socket.* ${libdir}/python3.4/ssl.* ${libdir}/python3.4/tempfile.* ${libdir}/python3.4/StringIO.* ${libdir}/python3.4/io.* ${libdir}/python3.4/_pyio.* " + +SUMMARY_${PN}-json="Python JSON support" +RDEPENDS_${PN}-json="${PN}-core ${PN}-math ${PN}-re" +FILES_${PN}-json="${libdir}/python3.4/json ${libdir}/python3.4/lib-dynload/_json.*.so " + +SUMMARY_${PN}-lang="Python low-level language support" +RDEPENDS_${PN}-lang="${PN}-core" +FILES_${PN}-lang="${libdir}/python3.4/lib-dynload/_bisect.*.so ${libdir}/python3.4/lib-dynload/_collections.*.so ${libdir}/python3.4/lib-dynload/_heapq.*.so ${libdir}/python3.4/lib-dynload/_weakref.*.so ${libdir}/python3.4/lib-dynload/_functools.*.so ${libdir}/python3.4/lib-dynload/array.*.so ${libdir}/python3.4/lib-dynload/itertools.*.so ${libdir}/python3.4/lib-dynload/operator.*.so ${libdir}/python3.4/lib-dynload/parser.*.so ${libdir}/python3.4/atexit.* ${libdir}/python3.4/bisect.* ${libdir}/python3.4/code.* ${libdir}/python3.4/codeop.* ${libdir}/python3.4/collections.* ${libdir}/python3.4/_collections_abc.* ${libdir}/python3.4/dis.* ${libdir}/python3.4/functools.* ${libdir}/python3.4/heapq.* ${libdir}/python3.4/inspect.* ${libdir}/python3.4/keyword.* ${libdir}/python3.4/opcode.* ${libdir}/python3.4/symbol.* ${libdir}/python3.4/repr.* ${libdir}/python3.4/token.* ${libdir}/python3.4/tokenize.* ${libdir}/python3.4/traceback.* ${libdir}/python3.4/weakref.* " + +SUMMARY_${PN}-logging="Python logging support" +RDEPENDS_${PN}-logging="${PN}-core ${PN}-io ${PN}-lang ${PN}-pickle ${PN}-stringold" +FILES_${PN}-logging="${libdir}/python3.4/logging " + +SUMMARY_${PN}-mailbox="Python mailbox format support" +RDEPENDS_${PN}-mailbox="${PN}-core ${PN}-mime" +FILES_${PN}-mailbox="${libdir}/python3.4/mailbox.* " + +SUMMARY_${PN}-math="Python math support" +RDEPENDS_${PN}-math="${PN}-core" +FILES_${PN}-math="${libdir}/python3.4/lib-dynload/cmath.*.so ${libdir}/python3.4/lib-dynload/math.*.so ${libdir}/python3.4/lib-dynload/_random.*.so ${libdir}/python3.4/random.* ${libdir}/python3.4/sets.* " + +SUMMARY_${PN}-mime="Python MIME handling APIs" +RDEPENDS_${PN}-mime="${PN}-core ${PN}-io" +FILES_${PN}-mime="${libdir}/python3.4/mimetools.* ${libdir}/python3.4/uu.* ${libdir}/python3.4/quopri.* ${libdir}/python3.4/rfc822.* ${libdir}/python3.4/MimeWriter.* " + +SUMMARY_${PN}-mmap="Python memory-mapped file support" +RDEPENDS_${PN}-mmap="${PN}-core ${PN}-io" +FILES_${PN}-mmap="${libdir}/python3.4/lib-dynload/mmap.*.so " + +SUMMARY_${PN}-multiprocessing="Python multiprocessing support" +RDEPENDS_${PN}-multiprocessing="${PN}-core ${PN}-io ${PN}-lang ${PN}-pickle ${PN}-threading ${PN}-ctypes ${PN}-mmap" +FILES_${PN}-multiprocessing="${libdir}/python3.4/lib-dynload/_multiprocessing.*.so ${libdir}/python3.4/multiprocessing " + +SUMMARY_${PN}-netclient="Python Internet Protocol clients" +RDEPENDS_${PN}-netclient="${PN}-core ${PN}-crypt ${PN}-datetime ${PN}-io ${PN}-lang ${PN}-logging ${PN}-mime" +FILES_${PN}-netclient="${libdir}/python3.4/*Cookie*.* ${libdir}/python3.4/base64.* ${libdir}/python3.4/cookielib.* ${libdir}/python3.4/ftplib.* ${libdir}/python3.4/gopherlib.* ${libdir}/python3.4/hmac.* ${libdir}/python3.4/httplib.* ${libdir}/python3.4/mimetypes.* ${libdir}/python3.4/nntplib.* ${libdir}/python3.4/poplib.* ${libdir}/python3.4/smtplib.* ${libdir}/python3.4/telnetlib.* ${libdir}/python3.4/urllib ${libdir}/python3.4/uuid.* ${libdir}/python3.4/rfc822.* ${libdir}/python3.4/mimetools.* " + +SUMMARY_${PN}-netserver="Python Internet Protocol servers" +RDEPENDS_${PN}-netserver="${PN}-core ${PN}-netclient ${PN}-shell ${PN}-threading" +FILES_${PN}-netserver="${libdir}/python3.4/cgi.* ${libdir}/python3.4/*HTTPServer.* ${libdir}/python3.4/SocketServer.* " + +SUMMARY_${PN}-numbers="Python number APIs" +RDEPENDS_${PN}-numbers="${PN}-core ${PN}-lang ${PN}-re" +FILES_${PN}-numbers="${libdir}/python3.4/decimal.* ${libdir}/python3.4/fractions.* ${libdir}/python3.4/numbers.* " + +SUMMARY_${PN}-pickle="Python serialisation/persistence support" +RDEPENDS_${PN}-pickle="${PN}-core ${PN}-codecs ${PN}-io ${PN}-re" +FILES_${PN}-pickle="${libdir}/python3.4/pickle.* ${libdir}/python3.4/shelve.* ${libdir}/python3.4/lib-dynload/cPickle.*.so ${libdir}/python3.4/pickletools.* " + +SUMMARY_${PN}-pkgutil="Python package extension utility support" +RDEPENDS_${PN}-pkgutil="${PN}-core" +FILES_${PN}-pkgutil="${libdir}/python3.4/pkgutil.* " + +SUMMARY_${PN}-pprint="Python pretty-print support" +RDEPENDS_${PN}-pprint="${PN}-core ${PN}-io" +FILES_${PN}-pprint="${libdir}/python3.4/pprint.* " + +SUMMARY_${PN}-profile="Python basic performance profiling support" +RDEPENDS_${PN}-profile="${PN}-core ${PN}-textutils" +FILES_${PN}-profile="${libdir}/python3.4/profile.* ${libdir}/python3.4/pstats.* ${libdir}/python3.4/cProfile.* ${libdir}/python3.4/lib-dynload/_lsprof.*.so " + +SUMMARY_${PN}-pydoc="Python interactive help support" +RDEPENDS_${PN}-pydoc="${PN}-core ${PN}-lang ${PN}-stringold ${PN}-re" +FILES_${PN}-pydoc="${bindir}/pydoc ${libdir}/python3.4/pydoc.* ${libdir}/python3.4/pydoc_data " + +SUMMARY_${PN}-re="Python Regular Expression APIs" +RDEPENDS_${PN}-re="${PN}-core" +FILES_${PN}-re="${libdir}/python3.4/re.* ${libdir}/python3.4/sre.* ${libdir}/python3.4/sre_compile.* ${libdir}/python3.4/sre_constants* ${libdir}/python3.4/sre_parse.* " + +SUMMARY_${PN}-readline="Python readline support" +RDEPENDS_${PN}-readline="${PN}-core" +FILES_${PN}-readline="${libdir}/python3.4/lib-dynload/readline.*.so ${libdir}/python3.4/rlcompleter.* " + +SUMMARY_${PN}-reprlib="Python alternate repr() implementation" +RDEPENDS_${PN}-reprlib="${PN}-core" +FILES_${PN}-reprlib="${libdir}/python3.4/reprlib.py " + +SUMMARY_${PN}-resource="Python resource control interface" +RDEPENDS_${PN}-resource="${PN}-core" +FILES_${PN}-resource="${libdir}/python3.4/lib-dynload/resource.*.so " + +SUMMARY_${PN}-shell="Python shell-like functionality" +RDEPENDS_${PN}-shell="${PN}-core ${PN}-re" +FILES_${PN}-shell="${libdir}/python3.4/cmd.* ${libdir}/python3.4/commands.* ${libdir}/python3.4/dircache.* ${libdir}/python3.4/fnmatch.* ${libdir}/python3.4/glob.* ${libdir}/python3.4/popen2.* ${libdir}/python3.4/shlex.* ${libdir}/python3.4/shutil.* " + +SUMMARY_${PN}-smtpd="Python Simple Mail Transport Daemon" +RDEPENDS_${PN}-smtpd="${PN}-core ${PN}-netserver ${PN}-email ${PN}-mime" +FILES_${PN}-smtpd="${bindir}/smtpd.* ${libdir}/python3.4/smtpd.* " + +SUMMARY_${PN}-sqlite3="Python Sqlite3 database support" +RDEPENDS_${PN}-sqlite3="${PN}-core ${PN}-datetime ${PN}-lang ${PN}-crypt ${PN}-io ${PN}-threading" +FILES_${PN}-sqlite3="${libdir}/python3.4/lib-dynload/_sqlite3.*.so ${libdir}/python3.4/sqlite3/dbapi2.* ${libdir}/python3.4/sqlite3/__init__.* ${libdir}/python3.4/sqlite3/dump.* " + +SUMMARY_${PN}-sqlite3-tests="Python Sqlite3 database support tests" +RDEPENDS_${PN}-sqlite3-tests="${PN}-core ${PN}-sqlite3" +FILES_${PN}-sqlite3-tests="${libdir}/python3.4/sqlite3/test " + +SUMMARY_${PN}-stringold="Python string APIs [deprecated]" +RDEPENDS_${PN}-stringold="${PN}-core ${PN}-re" +FILES_${PN}-stringold="${libdir}/python3.4/lib-dynload/strop.*.so ${libdir}/python3.4/string.* ${libdir}/python3.4/stringold.* " + +SUMMARY_${PN}-subprocess="Python subprocess support" +RDEPENDS_${PN}-subprocess="${PN}-core ${PN}-io ${PN}-re ${PN}-fcntl ${PN}-pickle" +FILES_${PN}-subprocess="${libdir}/python3.4/subprocess.* " + +SUMMARY_${PN}-syslog="Python syslog interface" +RDEPENDS_${PN}-syslog="${PN}-core" +FILES_${PN}-syslog="${libdir}/python3.4/lib-dynload/syslog.*.so " + +SUMMARY_${PN}-terminal="Python terminal controlling support" +RDEPENDS_${PN}-terminal="${PN}-core ${PN}-io" +FILES_${PN}-terminal="${libdir}/python3.4/pty.* ${libdir}/python3.4/tty.* " + +SUMMARY_${PN}-tests="Python tests" +RDEPENDS_${PN}-tests="${PN}-core" +FILES_${PN}-tests="${libdir}/python3.4/test " + +SUMMARY_${PN}-textutils="Python option parsing, text wrapping and CSV support" +RDEPENDS_${PN}-textutils="${PN}-core ${PN}-io ${PN}-re ${PN}-stringold" +FILES_${PN}-textutils="${libdir}/python3.4/lib-dynload/_csv.*.so ${libdir}/python3.4/csv.* ${libdir}/python3.4/optparse.* ${libdir}/python3.4/textwrap.* " + +SUMMARY_${PN}-threading="Python threading & synchronization support" +RDEPENDS_${PN}-threading="${PN}-core ${PN}-lang" +FILES_${PN}-threading="${libdir}/python3.4/_threading_local.* ${libdir}/python3.4/dummy_thread.* ${libdir}/python3.4/dummy_threading.* ${libdir}/python3.4/mutex.* ${libdir}/python3.4/threading.* ${libdir}/python3.4/Queue.* " + +SUMMARY_${PN}-tkinter="Python Tcl/Tk bindings" +RDEPENDS_${PN}-tkinter="${PN}-core" +FILES_${PN}-tkinter="${libdir}/python3.4/lib-dynload/_tkinter.*.so ${libdir}/python3.4/lib-tk ${libdir}/python3.4/tkinter " + +SUMMARY_${PN}-unittest="Python unit testing framework" +RDEPENDS_${PN}-unittest="${PN}-core ${PN}-stringold ${PN}-lang ${PN}-io ${PN}-difflib ${PN}-pprint ${PN}-shell" +FILES_${PN}-unittest="${libdir}/python3.4/unittest/ " + +SUMMARY_${PN}-unixadmin="Python Unix administration support" +RDEPENDS_${PN}-unixadmin="${PN}-core" +FILES_${PN}-unixadmin="${libdir}/python3.4/lib-dynload/nis.*.so ${libdir}/python3.4/lib-dynload/grp.*.so ${libdir}/python3.4/lib-dynload/pwd.*.so ${libdir}/python3.4/getpass.* " + +SUMMARY_${PN}-xml="Python basic XML support" +RDEPENDS_${PN}-xml="${PN}-core ${PN}-elementtree ${PN}-re" +FILES_${PN}-xml="${libdir}/python3.4/lib-dynload/pyexpat.*.so ${libdir}/python3.4/xml ${libdir}/python3.4/xmllib.* " + +SUMMARY_${PN}-xmlrpc="Python XML-RPC support" +RDEPENDS_${PN}-xmlrpc="${PN}-core ${PN}-xml ${PN}-netserver ${PN}-lang" +FILES_${PN}-xmlrpc="${libdir}/python3.4/xmlrpclib.* ${libdir}/python3.4/SimpleXMLRPCServer.* ${libdir}/python3.4/DocXMLRPCServer.* ${libdir}/python3.4/xmlrpc " + +SUMMARY_${PN}-modules="All Python modules" +RDEPENDS_${PN}-modules="${PN}-2to3 ${PN}-asyncio ${PN}-audio ${PN}-codecs ${PN}-compile ${PN}-compression ${PN}-core ${PN}-crypt ${PN}-ctypes ${PN}-curses ${PN}-datetime ${PN}-db ${PN}-debugger ${PN}-difflib ${PN}-distutils ${PN}-doctest ${PN}-elementtree ${PN}-email ${PN}-fcntl ${PN}-gdbm ${PN}-html ${PN}-idle ${PN}-image ${PN}-importlib ${PN}-io ${PN}-json ${PN}-lang ${PN}-logging ${PN}-mailbox ${PN}-math ${PN}-mime ${PN}-mmap ${PN}-multiprocessing ${PN}-netclient ${PN}-netserver ${PN}-numbers ${PN}-pickle ${PN}-pkgutil ${PN}-pprint ${PN}-profile ${PN}-pydoc ${PN}-re ${PN}-readline ${PN}-reprlib ${PN}-resource ${PN}-shell ${PN}-smtpd ${PN}-sqlite3 ${PN}-sqlite3-tests ${PN}-stringold ${PN}-subprocess ${PN}-syslog ${PN}-terminal ${PN}-tests ${PN}-textutils ${PN}-threading ${PN}-tkinter ${PN}-unittest ${PN}-unixadmin ${PN}-xml ${PN}-xmlrpc " +ALLOW_EMPTY_${PN}-modules = "1" + + diff --git a/yocto-poky/meta/recipes-devtools/python/python-async_0.6.2.bb b/yocto-poky/meta/recipes-devtools/python/python-async_0.6.2.bb new file mode 100644 index 000000000..8ed0b0393 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-async_0.6.2.bb @@ -0,0 +1,17 @@ +SUMMARY = "Python framework to process interdependent tasks in a pool of workers" +HOMEPAGE = "http://github.com/gitpython-developers/async" +SECTION = "devel/python" +LICENSE = "BSD" +LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=88df8e78b9edfd744953862179f2d14e" + +SRC_URI = "http://pypi.python.org/packages/source/a/async/async-${PV}.tar.gz" +SRC_URI[md5sum] = "9b06b5997de2154f3bc0273f80bcef6b" +SRC_URI[sha256sum] = "ac6894d876e45878faae493b0cf61d0e28ec417334448ac0a6ea2229d8343051" + +S = "${WORKDIR}/async-${PV}" + +inherit distutils + +RDEPENDS_${PN} += "python-threading python-lang" + +BBCLASSEXTEND = "nativesdk" diff --git a/yocto-poky/meta/recipes-devtools/python/python-dbus_1.2.0.bb b/yocto-poky/meta/recipes-devtools/python/python-dbus_1.2.0.bb new file mode 100644 index 000000000..b314dce1c --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-dbus_1.2.0.bb @@ -0,0 +1,29 @@ +SUMMARY = "Python bindings for the DBus inter-process communication system" +SECTION = "devel/python" +HOMEPAGE = "http://www.freedesktop.org/Software/dbus" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://COPYING;md5=0b83047ce9e948b67c0facc5f233476a" +DEPENDS = "expat dbus dbus-glib virtual/libintl python-pyrex-native" + +SRC_URI = "http://dbus.freedesktop.org/releases/dbus-python/dbus-python-${PV}.tar.gz \ +" + +SRC_URI[md5sum] = "b09cd2d1a057cc432ce944de3fc06bf7" +SRC_URI[sha256sum] = "e12c6c8b2bf3a9302f75166952cbe41d6b38c3441bbc6767dbd498942316c6df" +S = "${WORKDIR}/dbus-python-${PV}" + +inherit distutils-base autotools pkgconfig + +PACKAGECONFIG ?= "" +PACKAGECONFIG[docs] = "--enable-html-docs,--disable-html-docs,python-docutils-native" +PACKAGECONFIG[api-docs] = "--enable-api-docs,--disable-api-docs,python-docutils-native python-epydoc-native" + +export BUILD_SYS +export HOST_SYS + +export STAGING_LIBDIR +export STAGING_INCDIR + +RDEPENDS_${PN} = "python-io python-logging python-stringold python-threading python-xml" + +FILES_${PN}-dev += "${libdir}/pkgconfig" diff --git a/yocto-poky/meta/recipes-devtools/python/python-docutils_0.12.bb b/yocto-poky/meta/recipes-devtools/python/python-docutils_0.12.bb new file mode 100644 index 000000000..8cda88d27 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-docutils_0.12.bb @@ -0,0 +1,18 @@ +SUMMARY = "Text processing system for documentation" +HOMEPAGE = "http://docutils.sourceforge.net" +SECTION = "devel/python" +LICENSE = "PSF & BSD-2-Clause & GPLv3" +LIC_FILES_CHKSUM = "file://COPYING.txt;md5=a722fbdc20347db7b69223594dd54574" + +DEPENDS = "python" + +SRC_URI = "${SOURCEFORGE_MIRROR}/docutils/docutils-${PV}.tar.gz" +SRC_URI[md5sum] = "4622263b62c5c771c03502afa3157768" +SRC_URI[sha256sum] = "c7db717810ab6965f66c8cf0398a98c9d8df982da39b4cd7f162911eb89596fa" + +S = "${WORKDIR}/docutils-${PV}" + +inherit distutils + +BBCLASSEXTEND = "native" + diff --git a/yocto-poky/meta/recipes-devtools/python/python-git_1.0.1.bb b/yocto-poky/meta/recipes-devtools/python/python-git_1.0.1.bb new file mode 100644 index 000000000..a78d7c83c --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-git_1.0.1.bb @@ -0,0 +1,23 @@ +SUMMARY = "Python library used to interact with Git repositories" +DESCRIPTION = "GitPython provides object model read and write access to \ +a git repository. Access repository information conveniently, alter the \ +index directly, handle remotes, or go down to low-level object database \ +access with big-files support." +HOMEPAGE = "http://github.com/gitpython-developers/GitPython" +SECTION = "devel/python" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE;md5=8b8d26c37c1d5a04f9b0186edbebc183" +DEPENDS = "python-gitdb" + +SRC_URI = "http://pypi.python.org/packages/source/G/GitPython/GitPython-${PV}.tar.gz" + +SRC_URI[md5sum] = "4659644b42c41e5e5170c0cd83ed6422" +SRC_URI[sha256sum] = "9c88c17bbcae2a445ff64024ef13526224f70e35e38c33416be5ceb56ca7f760" + +S = "${WORKDIR}/GitPython-${PV}" + +inherit setuptools + +RDEPENDS_${PN} += "python-gitdb python-lang python-io python-shell python-math python-re python-subprocess python-stringold" + +BBCLASSEXTEND = "nativesdk" diff --git a/yocto-poky/meta/recipes-devtools/python/python-gitdb_0.6.4.bb b/yocto-poky/meta/recipes-devtools/python/python-gitdb_0.6.4.bb new file mode 100644 index 000000000..f0083bdb1 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-gitdb_0.6.4.bb @@ -0,0 +1,19 @@ +SUMMARY = "A pure-Python git object database" +HOMEPAGE = "http://github.com/gitpython-developers/gitdb" +SECTION = "devel/python" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE;md5=59e5ecb13339a936eedf83282eaf4528" +DEPENDS = "python-async python-smmap" + +SRC_URI = "https://pypi.python.org/packages/source/g/gitdb/gitdb-${PV}.tar.gz" + +SRC_URI[md5sum] = "44e4366b8bdfd306b075c3a52c96ae1a" +SRC_URI[sha256sum] = "a3ebbc27be035a2e874ed904df516e35f4a29a778a764385de09de9e0f139658" + +S = "${WORKDIR}/gitdb-${PV}" + +inherit distutils + +RDEPENDS_${PN} += "python-smmap python-async python-mmap python-lang python-zlib python-io python-shell" + +BBCLASSEXTEND = "nativesdk" diff --git a/yocto-poky/meta/recipes-devtools/python/python-imaging/0001-python-imaging-setup.py-force-paths-for-zlib-freetyp.patch b/yocto-poky/meta/recipes-devtools/python/python-imaging/0001-python-imaging-setup.py-force-paths-for-zlib-freetyp.patch new file mode 100644 index 000000000..2575306be --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-imaging/0001-python-imaging-setup.py-force-paths-for-zlib-freetyp.patch @@ -0,0 +1,55 @@ +From 07d4f095a9e22ae676a8d68073101131e65012dc Mon Sep 17 00:00:00 2001 +From: Koen Kooi <koen@dominion.thruhere.net> +Date: Tue, 15 Nov 2011 13:16:54 +0100 +Subject: [PATCH] python imaging setup.py: force paths for zlib, freetype and jpeg and don't add host paths + +Signed-off-by: Koen Kooi <koen@dominion.thruhere.net> + +Upstream-Status: Inappropriate [embedded specific] +--- + setup.py | 14 +++----------- + 1 files changed, 3 insertions(+), 11 deletions(-) + +diff --git a/setup.py b/setup.py +index 5d4d53a..b1a22ec 100644 +--- a/setup.py ++++ b/setup.py +@@ -34,10 +34,10 @@ def libinclude(root): + # TIFF_ROOT = libinclude("/opt/tiff") + + TCL_ROOT = None +-JPEG_ROOT = None +-ZLIB_ROOT = None ++JPEG_ROOT = os.environ['STAGING_LIBDIR'] ++ZLIB_ROOT = os.environ['STAGING_LIBDIR'] + TIFF_ROOT = None +-FREETYPE_ROOT = None ++FREETYPE_ROOT = os.environ['STAGING_LIBDIR'], os.environ['STAGING_INCDIR'] + LCMS_ROOT = None + + # FIXME: add mechanism to explicitly *disable* the use of a library +@@ -147,7 +147,6 @@ class pil_build_ext(build_ext): + add_directory(library_dirs, "/opt/local/lib") + add_directory(include_dirs, "/opt/local/include") + +- add_directory(library_dirs, "/usr/local/lib") + # FIXME: check /opt/stuff directories here? + + prefix = sysconfig.get_config_var("prefix") +@@ -207,13 +206,6 @@ class pil_build_ext(build_ext): + if os.path.isfile(os.path.join(tcl_dir, "tk.h")): + add_directory(include_dirs, tcl_dir) + +- # standard locations +- add_directory(library_dirs, "/usr/local/lib") +- add_directory(include_dirs, "/usr/local/include") +- +- add_directory(library_dirs, "/usr/lib") +- add_directory(include_dirs, "/usr/include") +- + # + # insert new dirs *before* default libs, to avoid conflicts + # between Python PYD stub libs and real libraries +-- +1.7.2.5 + diff --git a/yocto-poky/meta/recipes-devtools/python/python-imaging/allow.to.disable.some.features.patch b/yocto-poky/meta/recipes-devtools/python/python-imaging/allow.to.disable.some.features.patch new file mode 100644 index 000000000..4960ed466 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-imaging/allow.to.disable.some.features.patch @@ -0,0 +1,65 @@ +At least lcms wasn't deterministicly detected from sysroot. + +This will allow to export LCMS_ENABLED=False when lcms isn't in PACKAGECONFIG. + +Upstream-Status: Inappropriate [configuration] + +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> + +diff -uNr Imaging-1.1.7.orig/setup.py Imaging-1.1.7/setup.py +--- Imaging-1.1.7.orig/setup.py 2013-07-22 10:17:02.081457075 +0200 ++++ Imaging-1.1.7/setup.py 2013-07-22 13:10:09.029707492 +0200 +@@ -39,6 +39,12 @@ + TIFF_ROOT = None + FREETYPE_ROOT = os.environ['STAGING_LIBDIR'], os.environ['STAGING_INCDIR'] + LCMS_ROOT = None ++TCL_ENABLED = os.getenv('TCL_ENABLED', "True") ++JPEG_ENABLED = os.getenv('JPEG_ENABLED', "True") ++ZLIB_ENABLED = os.getenv('ZLIB_ENABLED', "True") ++TIFF_ENABLED = os.getenv('TIFF_ENABLED', "True") ++FREETYPE_ENABLED = os.getenv('FREETYPE_ENABLED', "True") ++LCMS_ENABLED = os.getenv('LCMS_ENABLED', "True") + + # FIXME: add mechanism to explicitly *disable* the use of a library + +@@ -220,22 +226,22 @@ + zlib = jpeg = tiff = freetype = tcl = tk = lcms = None + feature = feature() + +- if find_include_file(self, "zlib.h"): ++ if ZLIB_ENABLED == 'True' and find_include_file(self, "zlib.h"): + if find_library_file(self, "z"): + feature.zlib = "z" + elif sys.platform == "win32" and find_library_file(self, "zlib"): + feature.zlib = "zlib" # alternative name + +- if find_include_file(self, "jpeglib.h"): ++ if JPEG_ENABLED == 'True' and find_include_file(self, "jpeglib.h"): + if find_library_file(self, "jpeg"): + feature.jpeg = "jpeg" + elif sys.platform == "win32" and find_library_file(self, "libjpeg"): + feature.jpeg = "libjpeg" # alternative name + +- if find_library_file(self, "tiff"): ++ if TIFF_ENABLED == 'True' and find_library_file(self, "tiff"): + feature.tiff = "tiff" + +- if find_library_file(self, "freetype"): ++ if FREETYPE_ENABLED == 'True' and find_library_file(self, "freetype"): + # look for freetype2 include files + freetype_version = 0 + for dir in self.compiler.include_dirs: +@@ -256,11 +262,11 @@ + if dir: + add_directory(self.compiler.include_dirs, dir, 0) + +- if find_include_file(self, "lcms.h"): ++ if LCMS_ENABLED == 'True' and find_include_file(self, "lcms.h"): + if find_library_file(self, "lcms"): + feature.lcms = "lcms" + +- if _tkinter and find_include_file(self, "tk.h"): ++ if TCL_ENABLED == 'True' and _tkinter and find_include_file(self, "tk.h"): + # the library names may vary somewhat (e.g. tcl84 or tcl8.4) + version = TCL_VERSION[0] + TCL_VERSION[2] + if find_library_file(self, "tcl" + version): diff --git a/yocto-poky/meta/recipes-devtools/python/python-imaging/fix-freetype-includes.patch b/yocto-poky/meta/recipes-devtools/python/python-imaging/fix-freetype-includes.patch new file mode 100644 index 000000000..9ecc63a0d --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-imaging/fix-freetype-includes.patch @@ -0,0 +1,30 @@ +Upstream-Status: Backport +Signed-off-by: Ross Burton <ross.burton@intel.com> + +From c6040f618d8f2706a7b46d1cdf37d1a587f9701f Mon Sep 17 00:00:00 2001 +From: Andrew Stromnov <stromnov@gmail.com> +Date: Thu, 28 Nov 2013 16:58:43 +0400 +Subject: [PATCH] fix compiling with FreeType 2.5.1 + +--- + _imagingft.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/_imagingft.c b/_imagingft.c +index 47d50bd..f19555b 100644 +--- a/_imagingft.c ++++ b/_imagingft.c +@@ -59,7 +59,11 @@ struct { + const char* message; + } ft_errors[] = + ++#if defined(USE_FREETYPE_2_1) ++#include FT_ERRORS_H ++#else + #include <freetype/fterrors.h> ++#endif + + /* -------------------------------------------------------------------- */ + /* font objects */ +-- +1.8.5.1 diff --git a/yocto-poky/meta/recipes-devtools/python/python-imaging_1.1.7.bb b/yocto-poky/meta/recipes-devtools/python/python-imaging_1.1.7.bb new file mode 100644 index 000000000..a67832827 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-imaging_1.1.7.bb @@ -0,0 +1,45 @@ +SUMMARY = "Python Imaging Library (PIL)" +SECTION = "devel/python" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://README;beginline=92;endline=120;md5=c4371af4579f1e489cf881c1443dd4ec" +DEPENDS = "freetype jpeg tiff" +SRCNAME = "Imaging" +PR = "r5" + +SRC_URI = "http://effbot.org/downloads/Imaging-${PV}.tar.gz \ + file://0001-python-imaging-setup.py-force-paths-for-zlib-freetyp.patch \ + file://allow.to.disable.some.features.patch \ + file://fix-freetype-includes.patch" + +SRC_URI[md5sum] = "fc14a54e1ce02a0225be8854bfba478e" +SRC_URI[sha256sum] = "895bc7c2498c8e1f9b99938f1a40dc86b3f149741f105cf7c7bd2e0725405211" +S = "${WORKDIR}/${SRCNAME}-${PV}" + +# There isn't enable/disable option, and lcms is in meta-oe, at least make it explicit when enabled +# setup.py already has FIXME: add mechanism to explicitly *disable* the use of a library +PACKAGECONFIG ??= "" +PACKAGECONFIG[lcms] = ",,lcms" + +inherit distutils + +do_compile() { + export STAGING_LIBDIR=${STAGING_LIBDIR} + export STAGING_INCDIR=${STAGING_INCDIR} + export LCMS_ENABLED=${@bb.utils.contains('PACKAGECONFIG', 'lcms', 'True', 'False', d)} + distutils_do_compile +} + +do_install() { + export STAGING_LIBDIR=${STAGING_LIBDIR} + export STAGING_INCDIR=${STAGING_INCDIR} + export LCMS_ENABLED=${@bb.utils.contains('PACKAGECONFIG', 'lcms', 'True', 'False', d)} + distutils_do_install + install -d ${D}${datadir}/doc/${BPN}/html/ + install -m 0644 ${S}/README ${D}${datadir}/doc/${BPN}/ + install -m 0644 ${S}/Docs/* ${D}${datadir}/doc/${BPN}/html/ + + # get rid of #!/usr/local/bin/python + sed -i -e 's:/usr/local/bin/:${bindir}/env :g' ${D}${bindir}/* +} + +RDEPENDS_${PN} += "python-lang python-stringold" diff --git a/yocto-poky/meta/recipes-devtools/python/python-mako_1.0.1.bb b/yocto-poky/meta/recipes-devtools/python/python-mako_1.0.1.bb new file mode 100644 index 000000000..5d42b0ca3 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-mako_1.0.1.bb @@ -0,0 +1,21 @@ +SUMMARY = "Templating library for Python" +SECTION = "devel/python" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=deb3ff8e4c17aaf7b80889b6b2bf4c83" + +SRC_URI = "https://pypi.python.org/packages/source/M/Mako/Mako-${PV}.tar.gz" + +SRC_URI[md5sum] = "9f0aafd177b039ef67b90ea350497a54" +SRC_URI[sha256sum] = "45f0869febea59dab7efd256fb451c377cbb7947bef386ff0bb44627c31a8d1c" + +S = "${WORKDIR}/Mako-${PV}" + +inherit setuptools + +RDEPENDS_${PN} = "python-threading \ + python-netclient \ + python-html \ +" +RDEPENDS_${PN}_class-native = "" + +BBCLASSEXTEND = "native nativesdk" diff --git a/yocto-poky/meta/recipes-devtools/python/python-native/10-distutils-fix-swig-parameter.patch b/yocto-poky/meta/recipes-devtools/python/python-native/10-distutils-fix-swig-parameter.patch new file mode 100644 index 000000000..a39247ce7 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-native/10-distutils-fix-swig-parameter.patch @@ -0,0 +1,18 @@ +Upstream-Status: Pending + +# Some versions of SWIG do not use the extension parameter. +# Make it optional. +# Signed-Off: Michael 'Mickey' Lauer <mickey@vanille-media.de> +Index: Python-2.6.1/Lib/distutils/command/build_ext.py +=================================================================== +--- Python-2.6.1.orig/Lib/distutils/command/build_ext.py ++++ Python-2.6.1/Lib/distutils/command/build_ext.py +@@ -566,7 +566,7 @@ class build_ext (Command): + target_lang=language) + + +- def swig_sources (self, sources, extension): ++ def swig_sources (self, sources, extension=None): + + """Walk the list of source files in 'sources', looking for SWIG + interface (.i) files. Run SWIG on all that are found, and diff --git a/yocto-poky/meta/recipes-devtools/python/python-native/11-distutils-never-modify-shebang-line.patch b/yocto-poky/meta/recipes-devtools/python/python-native/11-distutils-never-modify-shebang-line.patch new file mode 100644 index 000000000..c92469b9b --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-native/11-distutils-never-modify-shebang-line.patch @@ -0,0 +1,20 @@ +Upstream-Status: Pending + +# Don't modify the she-bang line for a cross-build. +# Otherwise it points to our hostpython (which we do not want) +# +# Signed-Off: Michael 'Mickey' Lauer <mickey@vanille-media.de> + +Index: Python-2.6.1/Lib/distutils/command/build_scripts.py +=================================================================== +--- Python-2.6.1.orig/Lib/distutils/command/build_scripts.py ++++ Python-2.6.1/Lib/distutils/command/build_scripts.py +@@ -87,7 +87,7 @@ class build_scripts (Command): + continue + + match = first_line_re.match(first_line) +- if match: ++ if False: #match: + adjust = 1 + post_interp = match.group(1) or '' + diff --git a/yocto-poky/meta/recipes-devtools/python/python-native/12-distutils-prefix-is-inside-staging-area.patch b/yocto-poky/meta/recipes-devtools/python/python-native/12-distutils-prefix-is-inside-staging-area.patch new file mode 100644 index 000000000..f89aaff7b --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-native/12-distutils-prefix-is-inside-staging-area.patch @@ -0,0 +1,65 @@ +Upstream-Status: Inappropriate [embedded specific] + +# The proper prefix is inside our staging area. +# Signed-Off: Michael 'Mickey' Lauer <mickey@vanille-media.de> +# Signed-off-by: Phil Blundell <philb@gnu.org> + +--- Python-2.6.6/Lib/distutils/sysconfig.py.orig 2012-01-03 14:02:03.027005296 +0000 ++++ Python-2.6.6/Lib/distutils/sysconfig.py 2012-01-03 14:02:31.517601081 +0000 +@@ -19,8 +19,8 @@ + from distutils.errors import DistutilsPlatformError + + # These are needed in a couple of spots, so just compute them once. +-PREFIX = os.path.normpath(sys.prefix) +-EXEC_PREFIX = os.path.normpath(sys.exec_prefix) ++PREFIX = os.path.normpath(sys.prefix).replace( os.getenv("BUILD_SYS"), os.getenv("HOST_SYS") ) ++EXEC_PREFIX = os.path.normpath(sys.exec_prefix).replace( os.getenv("BUILD_SYS"), os.getenv("HOST_SYS") ) + + # Path to the base directory of the project. On Windows the binary may + # live in project/PCBuild9. If we're dealing with an x64 Windows build, +@@ -70,7 +70,7 @@ + sys.exec_prefix -- i.e., ignore 'plat_specific'. + """ + if prefix is None: +- prefix = plat_specific and EXEC_PREFIX or PREFIX ++ prefix = os.environ['STAGING_INCDIR'].rstrip('include') + + if os.name == "posix": + if python_build: +@@ -115,12 +115,16 @@ + If 'prefix' is supplied, use it instead of sys.prefix or + sys.exec_prefix -- i.e., ignore 'plat_specific'. + """ ++ lib_basename = os.environ['STAGING_LIBDIR'].split('/')[-1] + if prefix is None: +- prefix = plat_specific and EXEC_PREFIX or PREFIX ++ if plat_specific: ++ prefix = os.environ['STAGING_LIBDIR'].rstrip(lib_basename) ++ else: ++ prefix = PREFIX + + if os.name == "posix": + libpython = os.path.join(prefix, +- "lib", "python" + get_python_version()) ++ lib_basename, "python" + get_python_version()) + if standard_lib: + return libpython + else: +@@ -216,7 +220,7 @@ + else: + # The name of the config.h file changed in 2.2 + config_h = 'pyconfig.h' +- return os.path.join(inc_dir, config_h) ++ return os.path.join(inc_dir, config_h).replace( os.getenv("BUILD_SYS"), os.getenv("HOST_SYS") ) + + + def get_makefile_filename(): +@@ -225,7 +229,7 @@ + return os.path.join(os.path.dirname(os.path.realpath(sys.executable)), + "Makefile") + lib_dir = get_python_lib(plat_specific=1, standard_lib=1) +- return os.path.join(lib_dir, "config", "Makefile") ++ return os.path.join(lib_dir, "config", "Makefile").replace( os.getenv("BUILD_SYS"), os.getenv("HOST_SYS") ) + + + def parse_config_h(fp, g=None): diff --git a/yocto-poky/meta/recipes-devtools/python/python-native/avoid_parallel_make_races_on_pgen.patch b/yocto-poky/meta/recipes-devtools/python/python-native/avoid_parallel_make_races_on_pgen.patch new file mode 100644 index 000000000..5279e7c3b --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-native/avoid_parallel_make_races_on_pgen.patch @@ -0,0 +1,27 @@ +Upstream-Status: Pending + +Avoids parallel make races linking errors when making Parser/PGEN + +- Implements Richard Purdie's idea + +Signed-Off-By: Richard Purdie <richard.purdie@linuxfoundation.org> +Signed-Off-By: Alejandro Hernandez <alejandro.hernandez@linux.intel.com> + +Index: Python-2.7.9/Makefile.pre.in +=================================================================== +--- Python-2.7.9.orig/Makefile.pre.in ++++ Python-2.7.9/Makefile.pre.in +@@ -610,12 +610,10 @@ Modules/grpmodule.o: $(srcdir)/Modules/g + + Modules/pwdmodule.o: $(srcdir)/Modules/pwdmodule.c $(srcdir)/Modules/posixmodule.h + +-$(GRAMMAR_H): $(GRAMMAR_INPUT) $(PGENSRCS) ++$(GRAMMAR_H): $(GRAMMAR_INPUT) $(PGENSRCS) $(PGEN) + @$(MKDIR_P) Include +- $(MAKE) $(PGEN) + $(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C) + $(GRAMMAR_C): $(GRAMMAR_H) $(GRAMMAR_INPUT) $(PGENSRCS) +- $(MAKE) $(GRAMMAR_H) + touch $(GRAMMAR_C) + + $(PGEN): $(PGENOBJS) diff --git a/yocto-poky/meta/recipes-devtools/python/python-native/debug.patch b/yocto-poky/meta/recipes-devtools/python/python-native/debug.patch new file mode 100644 index 000000000..5ec10d6b2 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-native/debug.patch @@ -0,0 +1,29 @@ +Upstream-Status: Pending + +Index: Python-2.6.1/Lib/distutils/unixccompiler.py +=================================================================== +--- Python-2.6.1.orig/Lib/distutils/unixccompiler.py 2009-11-13 16:04:54.000000000 +0000 ++++ Python-2.6.1/Lib/distutils/unixccompiler.py 2009-11-13 16:06:27.000000000 +0000 +@@ -300,6 +300,8 @@ + dylib_f = self.library_filename(lib, lib_type='dylib') + static_f = self.library_filename(lib, lib_type='static') + ++ print "Looking in %s for %s" % (lib, dirs) ++ + for dir in dirs: + shared = os.path.join(dir, shared_f) + dylib = os.path.join(dir, dylib_f) +@@ -309,10 +311,13 @@ + # assuming that *all* Unix C compilers do. And of course I'm + # ignoring even GCC's "-static" option. So sue me. + if os.path.exists(dylib): ++ print "Found %s" % (dylib) + return dylib + elif os.path.exists(shared): ++ print "Found %s" % (shared) + return shared + elif os.path.exists(static): ++ print "Found %s" % (static) + return static + + # Oops, didn't find it in *any* of 'dirs' diff --git a/yocto-poky/meta/recipes-devtools/python/python-native/multilib.patch b/yocto-poky/meta/recipes-devtools/python/python-native/multilib.patch new file mode 100644 index 000000000..8ca89e7c5 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-native/multilib.patch @@ -0,0 +1,235 @@ +Rebased for Python 2.7.9 + +Signed-Off-By: Alejandro Hernandez <alejandro.hernandez@linux.intel.com> + +2011/09/29 +The python recipe building was failing because python-native +could not handle sys.lib var. sys.lib var is defined in the +multilib patch hence added this multilib.patch for python-native +recipe. + +Upstream-Status: Inappropriate [oe-specific] + +Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com> + +Index: Python-2.7.9/Include/pythonrun.h +=================================================================== +--- Python-2.7.9.orig/Include/pythonrun.h ++++ Python-2.7.9/Include/pythonrun.h +@@ -108,6 +108,7 @@ PyAPI_FUNC(char *) Py_GetPath(void); + /* In their own files */ + PyAPI_FUNC(const char *) Py_GetVersion(void); + PyAPI_FUNC(const char *) Py_GetPlatform(void); ++PyAPI_FUNC(const char *) Py_GetLib(void); + PyAPI_FUNC(const char *) Py_GetCopyright(void); + PyAPI_FUNC(const char *) Py_GetCompiler(void); + PyAPI_FUNC(const char *) Py_GetBuildInfo(void); +Index: Python-2.7.9/Lib/distutils/command/install.py +=================================================================== +--- Python-2.7.9.orig/Lib/distutils/command/install.py ++++ Python-2.7.9/Lib/distutils/command/install.py +@@ -22,6 +22,8 @@ from site import USER_BASE + from site import USER_SITE + + ++libname = sys.lib ++ + if sys.version < "2.2": + WINDOWS_SCHEME = { + 'purelib': '$base', +@@ -42,7 +44,7 @@ else: + INSTALL_SCHEMES = { + 'unix_prefix': { + 'purelib': '$base/lib/python$py_version_short/site-packages', +- 'platlib': '$platbase/lib/python$py_version_short/site-packages', ++ 'platlib': '$platbase/'+libname+'/python$py_version_short/site-packages', + 'headers': '$base/include/python$py_version_short/$dist_name', + 'scripts': '$base/bin', + 'data' : '$base', +Index: Python-2.7.9/Lib/pydoc.py +=================================================================== +--- Python-2.7.9.orig/Lib/pydoc.py ++++ Python-2.7.9/Lib/pydoc.py +@@ -383,7 +383,7 @@ class Doc: + + docloc = os.environ.get("PYTHONDOCS", + "http://docs.python.org/library") +- basedir = os.path.join(sys.exec_prefix, "lib", ++ basedir = os.path.join(sys.exec_prefix, sys.lib, + "python"+sys.version[0:3]) + if (isinstance(object, type(os)) and + (object.__name__ in ('errno', 'exceptions', 'gc', 'imp', +Index: Python-2.7.9/Lib/site.py +=================================================================== +--- Python-2.7.9.orig/Lib/site.py ++++ Python-2.7.9/Lib/site.py +@@ -288,13 +288,19 @@ def getsitepackages(): + if sys.platform in ('os2emx', 'riscos'): + sitepackages.append(os.path.join(prefix, "Lib", "site-packages")) + elif os.sep == '/': +- sitepackages.append(os.path.join(prefix, "lib", ++ sitepackages.append(os.path.join(prefix, sys.lib, + "python" + sys.version[:3], + "site-packages")) +- sitepackages.append(os.path.join(prefix, "lib", "site-python")) ++ if sys.lib != "lib": ++ sitepackages.append(os.path.join(prefix, "lib", ++ "python" + sys.version[:3], ++ "site-packages")) ++ sitepackages.append(os.path.join(prefix, sys.lib, "site-python")) ++ if sys.lib != "lib": ++ sitepackages.append(os.path.join(prefix, "lib", "site-python")) + else: + sitepackages.append(prefix) +- sitepackages.append(os.path.join(prefix, "lib", "site-packages")) ++ sitepackages.append(os.path.join(prefix, sys.lib, "site-packages")) + if sys.platform == "darwin": + # for framework builds *only* we add the standard Apple + # locations. +Index: Python-2.7.9/Lib/test/test_dl.py +=================================================================== +--- Python-2.7.9.orig/Lib/test/test_dl.py ++++ Python-2.7.9/Lib/test/test_dl.py +@@ -4,10 +4,11 @@ + import unittest + from test.test_support import verbose, import_module + dl = import_module('dl', deprecated=True) ++import sys + + sharedlibs = [ +- ('/usr/lib/libc.so', 'getpid'), +- ('/lib/libc.so.6', 'getpid'), ++ ('/usr/'+sys.lib+'/libc.so', 'getpid'), ++ ('/'+sys.lib+'/libc.so.6', 'getpid'), + ('/usr/bin/cygwin1.dll', 'getpid'), + ('/usr/lib/libc.dylib', 'getpid'), + ] +Index: Python-2.7.9/Lib/trace.py +=================================================================== +--- Python-2.7.9.orig/Lib/trace.py ++++ Python-2.7.9/Lib/trace.py +@@ -754,10 +754,10 @@ def main(argv=None): + # should I also call expanduser? (after all, could use $HOME) + + s = s.replace("$prefix", +- os.path.join(sys.prefix, "lib", ++ os.path.join(sys.prefix, sys.lib, + "python" + sys.version[:3])) + s = s.replace("$exec_prefix", +- os.path.join(sys.exec_prefix, "lib", ++ os.path.join(sys.exec_prefix, sys.lib, + "python" + sys.version[:3])) + s = os.path.normpath(s) + ignore_dirs.append(s) +Index: Python-2.7.9/Makefile.pre.in +=================================================================== +--- Python-2.7.9.orig/Makefile.pre.in ++++ Python-2.7.9/Makefile.pre.in +@@ -87,6 +87,7 @@ PY_CFLAGS= $(CFLAGS) $(CPPFLAGS) $(CFLAG + + # Machine-dependent subdirectories + MACHDEP= @MACHDEP@ ++LIB= @LIB@ + + # Multiarch directory (may be empty) + MULTIARCH= @MULTIARCH@ +@@ -106,7 +107,7 @@ LIBDIR= @libdir@ + MANDIR= @mandir@ + INCLUDEDIR= @includedir@ + CONFINCLUDEDIR= $(exec_prefix)/include +-SCRIPTDIR= $(prefix)/lib ++SCRIPTDIR= $(prefix)/@LIB@ + + # Detailed destination directories + BINLIBDEST= $(LIBDIR)/python$(VERSION) +@@ -597,6 +598,7 @@ Modules/getpath.o: $(srcdir)/Modules/get + -DEXEC_PREFIX='"$(exec_prefix)"' \ + -DVERSION='"$(VERSION)"' \ + -DVPATH='"$(VPATH)"' \ ++ -DLIB='"$(LIB)"' \ + -o $@ $(srcdir)/Modules/getpath.c + + Modules/python.o: $(srcdir)/Modules/python.c +@@ -639,7 +641,7 @@ $(AST_C): $(AST_ASDL) $(ASDLGEN_FILES) + Python/compile.o Python/symtable.o Python/ast.o: $(GRAMMAR_H) $(AST_H) + + Python/getplatform.o: $(srcdir)/Python/getplatform.c +- $(CC) -c $(PY_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -o $@ $(srcdir)/Python/getplatform.c ++ $(CC) -c $(PY_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -DLIB='"$(LIB)"' -o $@ $(srcdir)/Python/getplatform.c + + Python/importdl.o: $(srcdir)/Python/importdl.c + $(CC) -c $(PY_CFLAGS) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.c +Index: Python-2.7.9/Modules/getpath.c +=================================================================== +--- Python-2.7.9.orig/Modules/getpath.c ++++ Python-2.7.9/Modules/getpath.c +@@ -116,9 +116,11 @@ + #define EXEC_PREFIX PREFIX + #endif + ++#define LIB_PYTHON LIB "/python" VERSION ++ + #ifndef PYTHONPATH +-#define PYTHONPATH PREFIX "/lib/python" VERSION ":" \ +- EXEC_PREFIX "/lib/python" VERSION "/lib-dynload" ++#define PYTHONPATH PREFIX "/" LIB_PYTHON ":" \ ++ EXEC_PREFIX "/" LIB_PYTHON "/lib-dynload" + #endif + + #ifndef LANDMARK +@@ -129,7 +131,7 @@ static char prefix[MAXPATHLEN+1]; + static char exec_prefix[MAXPATHLEN+1]; + static char progpath[MAXPATHLEN+1]; + static char *module_search_path = NULL; +-static char lib_python[] = "lib/python" VERSION; ++static char lib_python[] = LIB_PYTHON; + + static void + reduce(char *dir) +Index: Python-2.7.9/Python/getplatform.c +=================================================================== +--- Python-2.7.9.orig/Python/getplatform.c ++++ Python-2.7.9/Python/getplatform.c +@@ -10,3 +10,13 @@ Py_GetPlatform(void) + { + return PLATFORM; + } ++ ++#ifndef LIB ++#define LIB "lib" ++#endif ++ ++const char * ++Py_GetLib(void) ++{ ++ return LIB; ++} +Index: Python-2.7.9/Python/sysmodule.c +=================================================================== +--- Python-2.7.9.orig/Python/sysmodule.c ++++ Python-2.7.9/Python/sysmodule.c +@@ -1437,6 +1437,8 @@ _PySys_Init(void) + PyString_FromString(Py_GetCopyright())); + SET_SYS_FROM_STRING("platform", + PyString_FromString(Py_GetPlatform())); ++ SET_SYS_FROM_STRING("lib", ++ PyString_FromString(Py_GetLib())); + SET_SYS_FROM_STRING("executable", + PyString_FromString(Py_GetProgramFullPath())); + SET_SYS_FROM_STRING("prefix", +Index: Python-2.7.9/configure.ac +=================================================================== +--- Python-2.7.9.orig/configure.ac ++++ Python-2.7.9/configure.ac +@@ -736,6 +736,11 @@ SunOS*) + ;; + esac + ++AC_SUBST(LIB) ++AC_MSG_CHECKING(LIB) ++LIB=`basename ${libdir}` ++AC_MSG_RESULT($LIB) ++ + + AC_SUBST(LIBRARY) + AC_MSG_CHECKING(LIBRARY) diff --git a/yocto-poky/meta/recipes-devtools/python/python-native/nohostlibs.patch b/yocto-poky/meta/recipes-devtools/python/python-native/nohostlibs.patch new file mode 100644 index 000000000..8a452e94d --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-native/nohostlibs.patch @@ -0,0 +1,54 @@ +Upstream-Status: Inappropriate [embedded specific] + +2014/12/15 +Rebased for python-2.7.9 +Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com> +Signed-Off-By: Alejandro Hernandez <alejandro.hernandez@linux.intel.com> + +Index: Python-2.7.9/setup.py +=================================================================== +--- Python-2.7.9.orig/setup.py ++++ Python-2.7.9/setup.py +@@ -439,9 +439,9 @@ class PyBuildExt(build_ext): + + def detect_modules(self): + # Ensure that /usr/local is always used +- if not cross_compiling: +- add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib') +- add_dir_to_list(self.compiler.include_dirs, '/usr/local/include') ++ # if not cross_compiling: ++ # add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib') ++ # add_dir_to_list(self.compiler.include_dirs, '/usr/local/include') + if cross_compiling: + self.add_gcc_paths() + self.add_multiarch_paths() +@@ -480,15 +480,15 @@ class PyBuildExt(build_ext): + for directory in reversed(options.dirs): + add_dir_to_list(dir_list, directory) + +- if os.path.normpath(sys.prefix) != '/usr' \ +- and not sysconfig.get_config_var('PYTHONFRAMEWORK'): ++ #if os.path.normpath(sys.prefix) != '/usr' \ ++ #and not sysconfig.get_config_var('PYTHONFRAMEWORK'): + # OSX note: Don't add LIBDIR and INCLUDEDIR to building a framework + # (PYTHONFRAMEWORK is set) to avoid # linking problems when + # building a framework with different architectures than + # the one that is currently installed (issue #7473) +- add_dir_to_list(self.compiler.library_dirs, ++ add_dir_to_list(self.compiler.library_dirs, + sysconfig.get_config_var("LIBDIR")) +- add_dir_to_list(self.compiler.include_dirs, ++ add_dir_to_list(self.compiler.include_dirs, + sysconfig.get_config_var("INCLUDEDIR")) + + try: +@@ -761,8 +761,7 @@ class PyBuildExt(build_ext): + pass # Issue 7384: Already linked against curses or tinfo. + elif curses_library: + readline_libs.append(curses_library) +- elif self.compiler.find_library_file(lib_dirs + +- ['/usr/lib/termcap'], ++ elif self.compiler.find_library_file(lib_dirs, + 'termcap'): + readline_libs.append('termcap') + exts.append( Extension('readline', ['readline.c'], diff --git a/yocto-poky/meta/recipes-devtools/python/python-native/revert_use_of_sysconfigdata.patch b/yocto-poky/meta/recipes-devtools/python/python-native/revert_use_of_sysconfigdata.patch new file mode 100644 index 000000000..202aaf106 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-native/revert_use_of_sysconfigdata.patch @@ -0,0 +1,86 @@ +On older versions of Python, sysconfig read the data from both the Makefile and +the Python.h file generated at build time, created dictionaries with their variables +and used those when using get_config_var(), now it uses _sysconfigdata.build_time_vars[] +which contains information from the HOST, erroneous in our case, this patch reverts this +behavior and uses Python.h and Makefile to get information. + +Upstream-Status: Inappropriate [oe-specific] + +Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com> + +Index: Python-2.7.9/Lib/distutils/sysconfig.py +=================================================================== +--- Python-2.7.9.orig/Lib/distutils/sysconfig.py ++++ Python-2.7.9/Lib/distutils/sysconfig.py +@@ -401,12 +401,66 @@ _config_vars = None + + def _init_posix(): + """Initialize the module as appropriate for POSIX systems.""" +- # _sysconfigdata is generated at build time, see the sysconfig module +- from _sysconfigdata import build_time_vars +- global _config_vars +- _config_vars = {} +- _config_vars.update(build_time_vars) ++ g = {} ++ # load the installed Makefile: ++ try: ++ filename = get_makefile_filename() ++ parse_makefile(filename, g) ++ except IOError, msg: ++ my_msg = "invalid Python installation: unable to open %s" % filename ++ if hasattr(msg, "strerror"): ++ my_msg = my_msg + " (%s)" % msg.strerror ++ ++ raise DistutilsPlatformError(my_msg) ++ ++ # load the installed pyconfig.h: ++ try: ++ filename = get_config_h_filename() ++ parse_config_h(file(filename), g) ++ except IOError, msg: ++ my_msg = "invalid Python installation: unable to open %s" % filename ++ if hasattr(msg, "strerror"): ++ my_msg = my_msg + " (%s)" % msg.strerror ++ ++ raise DistutilsPlatformError(my_msg) ++ ++ # On AIX, there are wrong paths to the linker scripts in the Makefile ++ # -- these paths are relative to the Python source, but when installed ++ # the scripts are in another directory. ++ if python_build: ++ g['LDSHARED'] = g['BLDSHARED'] + ++ elif get_python_version() < '2.1': ++ # The following two branches are for 1.5.2 compatibility. ++ if sys.platform == 'aix4': # what about AIX 3.x ? ++ # Linker script is in the config directory, not in Modules as the ++ # Makefile says. ++ python_lib = get_python_lib(standard_lib=1) ++ ld_so_aix = os.path.join(python_lib, 'config', 'ld_so_aix') ++ python_exp = os.path.join(python_lib, 'config', 'python.exp') ++ ++ g['LDSHARED'] = "%s %s -bI:%s" % (ld_so_aix, g['CC'], python_exp) ++ ++ elif sys.platform == 'beos': ++ # Linker script is in the config directory. In the Makefile it is ++ # relative to the srcdir, which after installation no longer makes ++ # sense. ++ python_lib = get_python_lib(standard_lib=1) ++ linkerscript_path = string.split(g['LDSHARED'])[0] ++ linkerscript_name = os.path.basename(linkerscript_path) ++ linkerscript = os.path.join(python_lib, 'config', ++ linkerscript_name) ++ ++ # XXX this isn't the right place to do this: adding the Python ++ # library to the link, if needed, should be in the "build_ext" ++ # command. (It's also needed for non-MS compilers on Windows, and ++ # it's taken care of for them by the 'build_ext.get_libraries()' ++ # method.) ++ g['LDSHARED'] = ("%s -L%s/lib -lpython%s" % ++ (linkerscript, PREFIX, get_python_version())) ++ ++ global _config_vars ++ _config_vars = g + + def _init_nt(): + """Initialize the module as appropriate for NT""" diff --git a/yocto-poky/meta/recipes-devtools/python/python-native/unixccompiler.patch b/yocto-poky/meta/recipes-devtools/python/python-native/unixccompiler.patch new file mode 100644 index 000000000..450282912 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-native/unixccompiler.patch @@ -0,0 +1,20 @@ +Upstream-Status: Pending + +The CC variable,sometimes like:"x86_64-poky-linux-gcc -m64 --sysroot=/${TMPDIR}/sysroots/qemux86-64", contains option information. +This will lead to wrong compiler name "qemux86-64" rather than "x86_64-poky-linux-gcc" when python finding the compiler name. + +Signed-off-by: Mei Lei <lei.mei@intel.com> +Signed-off-by: Khem Raj <raj.khem@gmail.com> +Index: Python-2.7.2/Lib/distutils/unixccompiler.py +=================================================================== +--- Python-2.7.2.orig/Lib/distutils/unixccompiler.py 2011-11-24 13:51:10.539998722 -0800 ++++ Python-2.7.2/Lib/distutils/unixccompiler.py 2011-11-24 15:54:36.872137766 -0800 +@@ -282,7 +282,7 @@ + # this time, there's no way to determine this information from + # the configuration data stored in the Python installation, so + # we use this hack. +- compiler = os.path.basename(sysconfig.get_config_var("CC")) ++ compiler = sysconfig.get_config_var("CC") + if sys.platform[:6] == "darwin": + # MacOSX's linker doesn't understand the -R flag at all + return "-L" + dir diff --git a/yocto-poky/meta/recipes-devtools/python/python-native_2.7.9.bb b/yocto-poky/meta/recipes-devtools/python/python-native_2.7.9.bb new file mode 100644 index 000000000..34f5c2914 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-native_2.7.9.bb @@ -0,0 +1,63 @@ +require python.inc + +EXTRANATIVEPATH += "bzip2-native" +DEPENDS = "openssl-native bzip2-replacement-native zlib-native readline-native sqlite3-native" +PR = "${INC_PR}.1" + +SRC_URI += "\ + file://05-enable-ctypes-cross-build.patch \ + file://10-distutils-fix-swig-parameter.patch \ + file://11-distutils-never-modify-shebang-line.patch \ + file://12-distutils-prefix-is-inside-staging-area.patch \ + file://debug.patch \ + file://unixccompiler.patch \ + file://nohostlibs.patch \ + file://multilib.patch \ + file://add-md5module-support.patch \ + file://builddir.patch \ + file://parallel-makeinst-create-bindir.patch \ + file://revert_use_of_sysconfigdata.patch \ + file://avoid_parallel_make_races_on_pgen.patch \ + " +S = "${WORKDIR}/Python-${PV}" + +FILESEXTRAPATHS =. "${FILE_DIRNAME}/${PN}:" + +inherit native + +RPROVIDES += "python-distutils-native python-compression-native python-textutils-native python-codecs-native python-core-native" + +EXTRA_OECONF_append = " --bindir=${bindir}/${PN}" + +EXTRA_OEMAKE = '\ + BUILD_SYS="" \ + HOST_SYS="" \ + LIBC="" \ + STAGING_LIBDIR=${STAGING_LIBDIR_NATIVE} \ + STAGING_INCDIR=${STAGING_INCDIR_NATIVE} \ +' + +do_configure_append() { + autoreconf --verbose --install --force --exclude=autopoint ../Python-${PV}/Modules/_ctypes/libffi +} + +do_install() { + oe_runmake 'DESTDIR=${D}' install + install -d ${D}${bindir}/${PN} + install -m 0755 Parser/pgen ${D}${bindir}/${PN} + + # Make sure we use /usr/bin/env python + for PYTHSCRIPT in `grep -rIl ${bindir}/${PN}/python ${D}${bindir}/${PN}`; do + sed -i -e '1s|^#!.*|#!/usr/bin/env python|' $PYTHSCRIPT + done + + # Add a symlink to the native Python so that scripts can just invoke + # "nativepython" and get the right one without needing absolute paths + # (these often end up too long for the #! parser in the kernel as the + # buffer is 128 bytes long). + ln -s python-native/python ${D}${bindir}/nativepython + + # We don't want modules in ~/.local being used in preference to those + # installed in the native sysroot, so disable user site support. + sed -i -e 's,^\(ENABLE_USER_SITE = \).*,\1False,' ${D}${libdir}/python${PYTHON_MAJMIN}/site.py +} diff --git a/yocto-poky/meta/recipes-devtools/python/python-nose_1.3.6.bb b/yocto-poky/meta/recipes-devtools/python/python-nose_1.3.6.bb new file mode 100644 index 000000000..d6e8fc1ed --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-nose_1.3.6.bb @@ -0,0 +1,16 @@ +DESCRIPTION = "nose extends the test loading and running features of unittest, \ +making it easier to write, find and run tests." +SECTION = "devel/python" +LICENSE = "LGPLv2.1" +LIC_FILES_CHKSUM = "file://lgpl.txt;md5=a6f89e2100d9b6cdffcea4f398e37343" + +SRC_URI = "http://pypi.python.org/packages/source/n/nose/nose-${PV}.tar.gz" + +SRC_URI[md5sum] = "0ca546d81ca8309080fc80cb389e7a16" +SRC_URI[sha256sum] = "f61e0909a743eed37b1207e38a8e7b4a2fe0a82185e36f2be252ef1b3f901758" + +S = "${WORKDIR}/nose-${PV}" + +inherit setuptools + +BBCLASSEXTEND = "native nativesdk" diff --git a/yocto-poky/meta/recipes-devtools/python/python-numpy/aarch64/_numpyconfig.h b/yocto-poky/meta/recipes-devtools/python/python-numpy/aarch64/_numpyconfig.h new file mode 100644 index 000000000..be57ac27b --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-numpy/aarch64/_numpyconfig.h @@ -0,0 +1,30 @@ +#define NPY_HAVE_ENDIAN_H 1 +#define NPY_SIZEOF_SHORT SIZEOF_SHORT +#define NPY_SIZEOF_INT SIZEOF_INT +#define NPY_SIZEOF_LONG SIZEOF_LONG +#define NPY_SIZEOF_FLOAT 4 +#define NPY_SIZEOF_COMPLEX_FLOAT 8 +#define NPY_SIZEOF_DOUBLE 8 +#define NPY_SIZEOF_COMPLEX_DOUBLE 16 +#define NPY_SIZEOF_LONGDOUBLE 16 +#define NPY_SIZEOF_COMPLEX_LONGDOUBLE 32 +#define NPY_SIZEOF_PY_INTPTR_T 8 +#define NPY_SIZEOF_PY_LONG_LONG 8 +#define NPY_SIZEOF_LONGLONG 8 +#define NPY_NO_SMP 0 +#define NPY_HAVE_DECL_ISNAN +#define NPY_HAVE_DECL_ISINF +#define NPY_HAVE_DECL_ISFINITE +#define NPY_HAVE_DECL_SIGNBIT +#define NPY_USE_C99_COMPLEX 1 +#define NPY_HAVE_COMPLEX_DOUBLE 1 +#define NPY_HAVE_COMPLEX_FLOAT 1 +#define NPY_HAVE_COMPLEX_LONG_DOUBLE 1 +#define NPY_USE_C99_FORMATS 1 +#define NPY_VISIBILITY_HIDDEN __attribute__((visibility("hidden"))) +#define NPY_ABI_VERSION 0x01000009 +#define NPY_API_VERSION 0x00000007 + +#ifndef __STDC_FORMAT_MACROS +#define __STDC_FORMAT_MACROS 1 +#endif diff --git a/yocto-poky/meta/recipes-devtools/python/python-numpy/aarch64/config.h b/yocto-poky/meta/recipes-devtools/python/python-numpy/aarch64/config.h new file mode 100644 index 000000000..c30b868f2 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-numpy/aarch64/config.h @@ -0,0 +1,139 @@ +#define HAVE_ENDIAN_H 1 +#define SIZEOF_PY_INTPTR_T 8 +#define SIZEOF_PY_LONG_LONG 8 +#define MATHLIB m +#define HAVE_SIN 1 +#define HAVE_COS 1 +#define HAVE_TAN 1 +#define HAVE_SINH 1 +#define HAVE_COSH 1 +#define HAVE_TANH 1 +#define HAVE_FABS 1 +#define HAVE_FLOOR 1 +#define HAVE_CEIL 1 +#define HAVE_SQRT 1 +#define HAVE_LOG10 1 +#define HAVE_LOG 1 +#define HAVE_EXP 1 +#define HAVE_ASIN 1 +#define HAVE_ACOS 1 +#define HAVE_ATAN 1 +#define HAVE_FMOD 1 +#define HAVE_MODF 1 +#define HAVE_FREXP 1 +#define HAVE_LDEXP 1 +#define HAVE_RINT 1 +#define HAVE_TRUNC 1 +#define HAVE_EXP2 1 +#define HAVE_LOG2 1 +#define HAVE_ATAN2 1 +#define HAVE_POW 1 +#define HAVE_NEXTAFTER 1 +#define HAVE_SINF 1 +#define HAVE_COSF 1 +#define HAVE_TANF 1 +#define HAVE_SINHF 1 +#define HAVE_COSHF 1 +#define HAVE_TANHF 1 +#define HAVE_FABSF 1 +#define HAVE_FLOORF 1 +#define HAVE_CEILF 1 +#define HAVE_RINTF 1 +#define HAVE_TRUNCF 1 +#define HAVE_SQRTF 1 +#define HAVE_LOG10F 1 +#define HAVE_LOGF 1 +#define HAVE_LOG1PF 1 +#define HAVE_EXPF 1 +#define HAVE_EXPM1F 1 +#define HAVE_ASINF 1 +#define HAVE_ACOSF 1 +#define HAVE_ATANF 1 +#define HAVE_ASINHF 1 +#define HAVE_ACOSHF 1 +#define HAVE_ATANHF 1 +#define HAVE_HYPOTF 1 +#define HAVE_ATAN2F 1 +#define HAVE_POWF 1 +#define HAVE_FMODF 1 +#define HAVE_MODFF 1 +#define HAVE_FREXPF 1 +#define HAVE_LDEXPF 1 +#define HAVE_EXP2F 1 +#define HAVE_LOG2F 1 +#define HAVE_COPYSIGNF 1 +#define HAVE_NEXTAFTERF 1 +#define HAVE_SINL 1 +#define HAVE_COSL 1 +#define HAVE_TANL 1 +#define HAVE_SINHL 1 +#define HAVE_COSHL 1 +#define HAVE_TANHL 1 +#define HAVE_FABSL 1 +#define HAVE_FLOORL 1 +#define HAVE_CEILL 1 +#define HAVE_RINTL 1 +#define HAVE_TRUNCL 1 +#define HAVE_SQRTL 1 +#define HAVE_LOG10L 1 +#define HAVE_LOGL 1 +#define HAVE_LOG1PL 1 +#define HAVE_EXPL 1 +#define HAVE_EXPM1L 1 +#define HAVE_ASINL 1 +#define HAVE_ACOSL 1 +#define HAVE_ATANL 1 +#define HAVE_ASINHL 1 +#define HAVE_ACOSHL 1 +#define HAVE_ATANHL 1 +#define HAVE_HYPOTL 1 +#define HAVE_ATAN2L 1 +#define HAVE_POWL 1 +#define HAVE_FMODL 1 +#define HAVE_MODFL 1 +#define HAVE_FREXPL 1 +#define HAVE_LDEXPL 1 +#define HAVE_EXP2L 1 +#define HAVE_LOG2L 1 +#define HAVE_COPYSIGNL 1 +#define HAVE_NEXTAFTERL 1 +#define HAVE_DECL_SIGNBIT +#define HAVE_COMPLEX_H 1 +#define HAVE_CREAL 1 +#define HAVE_CIMAG 1 +#define HAVE_CABS 1 +#define HAVE_CARG 1 +#define HAVE_CEXP 1 +#define HAVE_CSQRT 1 +#define HAVE_CLOG 1 +#define HAVE_CCOS 1 +#define HAVE_CSIN 1 +#define HAVE_CPOW 1 +#define HAVE_CREALF 1 +#define HAVE_CIMAGF 1 +#define HAVE_CABSF 1 +#define HAVE_CARGF 1 +#define HAVE_CEXPF 1 +#define HAVE_CSQRTF 1 +#define HAVE_CLOGF 1 +#define HAVE_CCOSF 1 +#define HAVE_CSINF 1 +#define HAVE_CPOWF 1 +#define HAVE_CREALL 1 +#define HAVE_CIMAGL 1 +#define HAVE_CABSL 1 +#define HAVE_CARGL 1 +#define HAVE_CEXPL 1 +#define HAVE_CSQRTL 1 +#define HAVE_CLOGL 1 +#define HAVE_CCOSL 1 +#define HAVE_CSINL 1 +#define HAVE_CPOWL 1 +#define HAVE_LDOUBLE_IEEE_QUAD_LE 1 +#ifndef __cplusplus +/* #undef inline */ +#endif + +#ifndef _NPY_NPY_CONFIG_H_ +#error config.h should never be included directly, include npy_config.h instead +#endif diff --git a/yocto-poky/meta/recipes-devtools/python/python-numpy/arm/config.h b/yocto-poky/meta/recipes-devtools/python/python-numpy/arm/config.h new file mode 100644 index 000000000..17ef186d5 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-numpy/arm/config.h @@ -0,0 +1,21 @@ +/* ./src.linux-i686-2.5/numpy/core/include/numpy/config.h */ +/* #define SIZEOF_SHORT 2 */ +/* #define SIZEOF_INT 4 */ +/* #define SIZEOF_LONG 4 */ +/* #define SIZEOF_FLOAT 4 */ +/* #define SIZEOF_DOUBLE 8 */ +#define SIZEOF_LONG_DOUBLE 12 +#define SIZEOF_PY_INTPTR_T 4 +/* #define SIZEOF_LONG_LONG 8 */ +#define SIZEOF_PY_LONG_LONG 8 +/* #define CHAR_BIT 8 */ +#define MATHLIB m +#define HAVE_FLOAT_FUNCS +#define HAVE_LOG1P +#define HAVE_EXPM1 +#define HAVE_INVERSE_HYPERBOLIC +#define HAVE_INVERSE_HYPERBOLIC_FLOAT +#define HAVE_ISNAN +#define HAVE_ISINF +#define HAVE_RINT + diff --git a/yocto-poky/meta/recipes-devtools/python/python-numpy/arm/numpyconfig.h b/yocto-poky/meta/recipes-devtools/python/python-numpy/arm/numpyconfig.h new file mode 100644 index 000000000..c4bf6547f --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-numpy/arm/numpyconfig.h @@ -0,0 +1,17 @@ +/* cat ./src.linux-i686-2.5/numpy/core/include/numpy/numpyconfig.h */ +/* + * * This file is generated by numpy/core/setup.pyc. DO NOT EDIT + * */ +#define NPY_SIZEOF_SHORT 2 +#define NPY_SIZEOF_INT 4 +#define NPY_SIZEOF_LONG 4 +#define NPY_SIZEOF_FLOAT 4 +#define NPY_SIZEOF_DOUBLE 8 +#define NPY_SIZEOF_LONGDOUBLE 12 +#define NPY_SIZEOF_PY_INTPTR_T 4 +#define NPY_NO_SMP 0 + +#define NPY_SIZEOF_LONGLONG 8 +#define NPY_SIZEOF_PY_LONG_LONG 8 +/* #define CHAR_BIT 8 */ + diff --git a/yocto-poky/meta/recipes-devtools/python/python-numpy/armeb/config.h b/yocto-poky/meta/recipes-devtools/python/python-numpy/armeb/config.h new file mode 100644 index 000000000..17ef186d5 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-numpy/armeb/config.h @@ -0,0 +1,21 @@ +/* ./src.linux-i686-2.5/numpy/core/include/numpy/config.h */ +/* #define SIZEOF_SHORT 2 */ +/* #define SIZEOF_INT 4 */ +/* #define SIZEOF_LONG 4 */ +/* #define SIZEOF_FLOAT 4 */ +/* #define SIZEOF_DOUBLE 8 */ +#define SIZEOF_LONG_DOUBLE 12 +#define SIZEOF_PY_INTPTR_T 4 +/* #define SIZEOF_LONG_LONG 8 */ +#define SIZEOF_PY_LONG_LONG 8 +/* #define CHAR_BIT 8 */ +#define MATHLIB m +#define HAVE_FLOAT_FUNCS +#define HAVE_LOG1P +#define HAVE_EXPM1 +#define HAVE_INVERSE_HYPERBOLIC +#define HAVE_INVERSE_HYPERBOLIC_FLOAT +#define HAVE_ISNAN +#define HAVE_ISINF +#define HAVE_RINT + diff --git a/yocto-poky/meta/recipes-devtools/python/python-numpy/armeb/numpyconfig.h b/yocto-poky/meta/recipes-devtools/python/python-numpy/armeb/numpyconfig.h new file mode 100644 index 000000000..c4bf6547f --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-numpy/armeb/numpyconfig.h @@ -0,0 +1,17 @@ +/* cat ./src.linux-i686-2.5/numpy/core/include/numpy/numpyconfig.h */ +/* + * * This file is generated by numpy/core/setup.pyc. DO NOT EDIT + * */ +#define NPY_SIZEOF_SHORT 2 +#define NPY_SIZEOF_INT 4 +#define NPY_SIZEOF_LONG 4 +#define NPY_SIZEOF_FLOAT 4 +#define NPY_SIZEOF_DOUBLE 8 +#define NPY_SIZEOF_LONGDOUBLE 12 +#define NPY_SIZEOF_PY_INTPTR_T 4 +#define NPY_NO_SMP 0 + +#define NPY_SIZEOF_LONGLONG 8 +#define NPY_SIZEOF_PY_LONG_LONG 8 +/* #define CHAR_BIT 8 */ + diff --git a/yocto-poky/meta/recipes-devtools/python/python-numpy/mips/_numpyconfig.h b/yocto-poky/meta/recipes-devtools/python/python-numpy/mips/_numpyconfig.h new file mode 100644 index 000000000..c0c42851b --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-numpy/mips/_numpyconfig.h @@ -0,0 +1,30 @@ +#define NPY_HAVE_ENDIAN_H 1 +#define NPY_SIZEOF_SHORT SIZEOF_SHORT +#define NPY_SIZEOF_INT SIZEOF_INT +#define NPY_SIZEOF_LONG SIZEOF_LONG +#define NPY_SIZEOF_FLOAT 4 +#define NPY_SIZEOF_COMPLEX_FLOAT 8 +#define NPY_SIZEOF_DOUBLE 8 +#define NPY_SIZEOF_COMPLEX_DOUBLE 16 +#define NPY_SIZEOF_LONGDOUBLE 8 +#define NPY_SIZEOF_COMPLEX_LONGDOUBLE 16 +#define NPY_SIZEOF_PY_INTPTR_T 4 +#define NPY_SIZEOF_PY_LONG_LONG 8 +#define NPY_SIZEOF_LONGLONG 8 +#define NPY_NO_SMP 0 +#define NPY_HAVE_DECL_ISNAN +#define NPY_HAVE_DECL_ISINF +#define NPY_HAVE_DECL_ISFINITE +#define NPY_HAVE_DECL_SIGNBIT +#define NPY_USE_C99_COMPLEX 1 +#define NPY_HAVE_COMPLEX_DOUBLE 1 +#define NPY_HAVE_COMPLEX_FLOAT 1 +#define NPY_HAVE_COMPLEX_LONG_DOUBLE 1 +#define NPY_USE_C99_FORMATS 1 +#define NPY_VISIBILITY_HIDDEN __attribute__((visibility("hidden"))) +#define NPY_ABI_VERSION 0x01000009 +#define NPY_API_VERSION 0x00000007 + +#ifndef __STDC_FORMAT_MACROS +#define __STDC_FORMAT_MACROS 1 +#endif diff --git a/yocto-poky/meta/recipes-devtools/python/python-numpy/mips/config.h b/yocto-poky/meta/recipes-devtools/python/python-numpy/mips/config.h new file mode 100644 index 000000000..2f6135adc --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-numpy/mips/config.h @@ -0,0 +1,139 @@ +#define HAVE_ENDIAN_H 1 +#define SIZEOF_PY_INTPTR_T 4 +#define SIZEOF_PY_LONG_LONG 8 +#define MATHLIB m +#define HAVE_SIN 1 +#define HAVE_COS 1 +#define HAVE_TAN 1 +#define HAVE_SINH 1 +#define HAVE_COSH 1 +#define HAVE_TANH 1 +#define HAVE_FABS 1 +#define HAVE_FLOOR 1 +#define HAVE_CEIL 1 +#define HAVE_SQRT 1 +#define HAVE_LOG10 1 +#define HAVE_LOG 1 +#define HAVE_EXP 1 +#define HAVE_ASIN 1 +#define HAVE_ACOS 1 +#define HAVE_ATAN 1 +#define HAVE_FMOD 1 +#define HAVE_MODF 1 +#define HAVE_FREXP 1 +#define HAVE_LDEXP 1 +#define HAVE_RINT 1 +#define HAVE_TRUNC 1 +#define HAVE_EXP2 1 +#define HAVE_LOG2 1 +#define HAVE_ATAN2 1 +#define HAVE_POW 1 +#define HAVE_NEXTAFTER 1 +#define HAVE_SINF 1 +#define HAVE_COSF 1 +#define HAVE_TANF 1 +#define HAVE_SINHF 1 +#define HAVE_COSHF 1 +#define HAVE_TANHF 1 +#define HAVE_FABSF 1 +#define HAVE_FLOORF 1 +#define HAVE_CEILF 1 +#define HAVE_RINTF 1 +#define HAVE_TRUNCF 1 +#define HAVE_SQRTF 1 +#define HAVE_LOG10F 1 +#define HAVE_LOGF 1 +#define HAVE_LOG1PF 1 +#define HAVE_EXPF 1 +#define HAVE_EXPM1F 1 +#define HAVE_ASINF 1 +#define HAVE_ACOSF 1 +#define HAVE_ATANF 1 +#define HAVE_ASINHF 1 +#define HAVE_ACOSHF 1 +#define HAVE_ATANHF 1 +#define HAVE_HYPOTF 1 +#define HAVE_ATAN2F 1 +#define HAVE_POWF 1 +#define HAVE_FMODF 1 +#define HAVE_MODFF 1 +#define HAVE_FREXPF 1 +#define HAVE_LDEXPF 1 +#define HAVE_EXP2F 1 +#define HAVE_LOG2F 1 +#define HAVE_COPYSIGNF 1 +#define HAVE_NEXTAFTERF 1 +#define HAVE_SINL 1 +#define HAVE_COSL 1 +#define HAVE_TANL 1 +#define HAVE_SINHL 1 +#define HAVE_COSHL 1 +#define HAVE_TANHL 1 +#define HAVE_FABSL 1 +#define HAVE_FLOORL 1 +#define HAVE_CEILL 1 +#define HAVE_RINTL 1 +#define HAVE_TRUNCL 1 +#define HAVE_SQRTL 1 +#define HAVE_LOG10L 1 +#define HAVE_LOGL 1 +#define HAVE_LOG1PL 1 +#define HAVE_EXPL 1 +#define HAVE_EXPM1L 1 +#define HAVE_ASINL 1 +#define HAVE_ACOSL 1 +#define HAVE_ATANL 1 +#define HAVE_ASINHL 1 +#define HAVE_ACOSHL 1 +#define HAVE_ATANHL 1 +#define HAVE_HYPOTL 1 +#define HAVE_ATAN2L 1 +#define HAVE_POWL 1 +#define HAVE_FMODL 1 +#define HAVE_MODFL 1 +#define HAVE_FREXPL 1 +#define HAVE_LDEXPL 1 +#define HAVE_EXP2L 1 +#define HAVE_LOG2L 1 +#define HAVE_COPYSIGNL 1 +#define HAVE_NEXTAFTERL 1 +#define HAVE_DECL_SIGNBIT +#define HAVE_COMPLEX_H 1 +#define HAVE_CREAL 1 +#define HAVE_CIMAG 1 +#define HAVE_CABS 1 +#define HAVE_CARG 1 +#define HAVE_CEXP 1 +#define HAVE_CSQRT 1 +#define HAVE_CLOG 1 +#define HAVE_CCOS 1 +#define HAVE_CSIN 1 +#define HAVE_CPOW 1 +#define HAVE_CREALF 1 +#define HAVE_CIMAGF 1 +#define HAVE_CABSF 1 +#define HAVE_CARGF 1 +#define HAVE_CEXPF 1 +#define HAVE_CSQRTF 1 +#define HAVE_CLOGF 1 +#define HAVE_CCOSF 1 +#define HAVE_CSINF 1 +#define HAVE_CPOWF 1 +#define HAVE_CREALL 1 +#define HAVE_CIMAGL 1 +#define HAVE_CABSL 1 +#define HAVE_CARGL 1 +#define HAVE_CEXPL 1 +#define HAVE_CSQRTL 1 +#define HAVE_CLOGL 1 +#define HAVE_CCOSL 1 +#define HAVE_CSINL 1 +#define HAVE_CPOWL 1 +#define HAVE_LDOUBLE_IEEE_DOUBLE_BE 1 +#ifndef __cplusplus +/* #undef inline */ +#endif + +#ifndef _NPY_NPY_CONFIG_H_ +#error config.h should never be included directly, include npy_config.h instead +#endif diff --git a/yocto-poky/meta/recipes-devtools/python/python-numpy/mips64/_numpyconfig.h b/yocto-poky/meta/recipes-devtools/python/python-numpy/mips64/_numpyconfig.h new file mode 100644 index 000000000..be57ac27b --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-numpy/mips64/_numpyconfig.h @@ -0,0 +1,30 @@ +#define NPY_HAVE_ENDIAN_H 1 +#define NPY_SIZEOF_SHORT SIZEOF_SHORT +#define NPY_SIZEOF_INT SIZEOF_INT +#define NPY_SIZEOF_LONG SIZEOF_LONG +#define NPY_SIZEOF_FLOAT 4 +#define NPY_SIZEOF_COMPLEX_FLOAT 8 +#define NPY_SIZEOF_DOUBLE 8 +#define NPY_SIZEOF_COMPLEX_DOUBLE 16 +#define NPY_SIZEOF_LONGDOUBLE 16 +#define NPY_SIZEOF_COMPLEX_LONGDOUBLE 32 +#define NPY_SIZEOF_PY_INTPTR_T 8 +#define NPY_SIZEOF_PY_LONG_LONG 8 +#define NPY_SIZEOF_LONGLONG 8 +#define NPY_NO_SMP 0 +#define NPY_HAVE_DECL_ISNAN +#define NPY_HAVE_DECL_ISINF +#define NPY_HAVE_DECL_ISFINITE +#define NPY_HAVE_DECL_SIGNBIT +#define NPY_USE_C99_COMPLEX 1 +#define NPY_HAVE_COMPLEX_DOUBLE 1 +#define NPY_HAVE_COMPLEX_FLOAT 1 +#define NPY_HAVE_COMPLEX_LONG_DOUBLE 1 +#define NPY_USE_C99_FORMATS 1 +#define NPY_VISIBILITY_HIDDEN __attribute__((visibility("hidden"))) +#define NPY_ABI_VERSION 0x01000009 +#define NPY_API_VERSION 0x00000007 + +#ifndef __STDC_FORMAT_MACROS +#define __STDC_FORMAT_MACROS 1 +#endif diff --git a/yocto-poky/meta/recipes-devtools/python/python-numpy/mips64/config.h b/yocto-poky/meta/recipes-devtools/python/python-numpy/mips64/config.h new file mode 100644 index 000000000..c30b868f2 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-numpy/mips64/config.h @@ -0,0 +1,139 @@ +#define HAVE_ENDIAN_H 1 +#define SIZEOF_PY_INTPTR_T 8 +#define SIZEOF_PY_LONG_LONG 8 +#define MATHLIB m +#define HAVE_SIN 1 +#define HAVE_COS 1 +#define HAVE_TAN 1 +#define HAVE_SINH 1 +#define HAVE_COSH 1 +#define HAVE_TANH 1 +#define HAVE_FABS 1 +#define HAVE_FLOOR 1 +#define HAVE_CEIL 1 +#define HAVE_SQRT 1 +#define HAVE_LOG10 1 +#define HAVE_LOG 1 +#define HAVE_EXP 1 +#define HAVE_ASIN 1 +#define HAVE_ACOS 1 +#define HAVE_ATAN 1 +#define HAVE_FMOD 1 +#define HAVE_MODF 1 +#define HAVE_FREXP 1 +#define HAVE_LDEXP 1 +#define HAVE_RINT 1 +#define HAVE_TRUNC 1 +#define HAVE_EXP2 1 +#define HAVE_LOG2 1 +#define HAVE_ATAN2 1 +#define HAVE_POW 1 +#define HAVE_NEXTAFTER 1 +#define HAVE_SINF 1 +#define HAVE_COSF 1 +#define HAVE_TANF 1 +#define HAVE_SINHF 1 +#define HAVE_COSHF 1 +#define HAVE_TANHF 1 +#define HAVE_FABSF 1 +#define HAVE_FLOORF 1 +#define HAVE_CEILF 1 +#define HAVE_RINTF 1 +#define HAVE_TRUNCF 1 +#define HAVE_SQRTF 1 +#define HAVE_LOG10F 1 +#define HAVE_LOGF 1 +#define HAVE_LOG1PF 1 +#define HAVE_EXPF 1 +#define HAVE_EXPM1F 1 +#define HAVE_ASINF 1 +#define HAVE_ACOSF 1 +#define HAVE_ATANF 1 +#define HAVE_ASINHF 1 +#define HAVE_ACOSHF 1 +#define HAVE_ATANHF 1 +#define HAVE_HYPOTF 1 +#define HAVE_ATAN2F 1 +#define HAVE_POWF 1 +#define HAVE_FMODF 1 +#define HAVE_MODFF 1 +#define HAVE_FREXPF 1 +#define HAVE_LDEXPF 1 +#define HAVE_EXP2F 1 +#define HAVE_LOG2F 1 +#define HAVE_COPYSIGNF 1 +#define HAVE_NEXTAFTERF 1 +#define HAVE_SINL 1 +#define HAVE_COSL 1 +#define HAVE_TANL 1 +#define HAVE_SINHL 1 +#define HAVE_COSHL 1 +#define HAVE_TANHL 1 +#define HAVE_FABSL 1 +#define HAVE_FLOORL 1 +#define HAVE_CEILL 1 +#define HAVE_RINTL 1 +#define HAVE_TRUNCL 1 +#define HAVE_SQRTL 1 +#define HAVE_LOG10L 1 +#define HAVE_LOGL 1 +#define HAVE_LOG1PL 1 +#define HAVE_EXPL 1 +#define HAVE_EXPM1L 1 +#define HAVE_ASINL 1 +#define HAVE_ACOSL 1 +#define HAVE_ATANL 1 +#define HAVE_ASINHL 1 +#define HAVE_ACOSHL 1 +#define HAVE_ATANHL 1 +#define HAVE_HYPOTL 1 +#define HAVE_ATAN2L 1 +#define HAVE_POWL 1 +#define HAVE_FMODL 1 +#define HAVE_MODFL 1 +#define HAVE_FREXPL 1 +#define HAVE_LDEXPL 1 +#define HAVE_EXP2L 1 +#define HAVE_LOG2L 1 +#define HAVE_COPYSIGNL 1 +#define HAVE_NEXTAFTERL 1 +#define HAVE_DECL_SIGNBIT +#define HAVE_COMPLEX_H 1 +#define HAVE_CREAL 1 +#define HAVE_CIMAG 1 +#define HAVE_CABS 1 +#define HAVE_CARG 1 +#define HAVE_CEXP 1 +#define HAVE_CSQRT 1 +#define HAVE_CLOG 1 +#define HAVE_CCOS 1 +#define HAVE_CSIN 1 +#define HAVE_CPOW 1 +#define HAVE_CREALF 1 +#define HAVE_CIMAGF 1 +#define HAVE_CABSF 1 +#define HAVE_CARGF 1 +#define HAVE_CEXPF 1 +#define HAVE_CSQRTF 1 +#define HAVE_CLOGF 1 +#define HAVE_CCOSF 1 +#define HAVE_CSINF 1 +#define HAVE_CPOWF 1 +#define HAVE_CREALL 1 +#define HAVE_CIMAGL 1 +#define HAVE_CABSL 1 +#define HAVE_CARGL 1 +#define HAVE_CEXPL 1 +#define HAVE_CSQRTL 1 +#define HAVE_CLOGL 1 +#define HAVE_CCOSL 1 +#define HAVE_CSINL 1 +#define HAVE_CPOWL 1 +#define HAVE_LDOUBLE_IEEE_QUAD_LE 1 +#ifndef __cplusplus +/* #undef inline */ +#endif + +#ifndef _NPY_NPY_CONFIG_H_ +#error config.h should never be included directly, include npy_config.h instead +#endif diff --git a/yocto-poky/meta/recipes-devtools/python/python-numpy/mips64n32/_numpyconfig.h b/yocto-poky/meta/recipes-devtools/python/python-numpy/mips64n32/_numpyconfig.h new file mode 100644 index 000000000..be57ac27b --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-numpy/mips64n32/_numpyconfig.h @@ -0,0 +1,30 @@ +#define NPY_HAVE_ENDIAN_H 1 +#define NPY_SIZEOF_SHORT SIZEOF_SHORT +#define NPY_SIZEOF_INT SIZEOF_INT +#define NPY_SIZEOF_LONG SIZEOF_LONG +#define NPY_SIZEOF_FLOAT 4 +#define NPY_SIZEOF_COMPLEX_FLOAT 8 +#define NPY_SIZEOF_DOUBLE 8 +#define NPY_SIZEOF_COMPLEX_DOUBLE 16 +#define NPY_SIZEOF_LONGDOUBLE 16 +#define NPY_SIZEOF_COMPLEX_LONGDOUBLE 32 +#define NPY_SIZEOF_PY_INTPTR_T 8 +#define NPY_SIZEOF_PY_LONG_LONG 8 +#define NPY_SIZEOF_LONGLONG 8 +#define NPY_NO_SMP 0 +#define NPY_HAVE_DECL_ISNAN +#define NPY_HAVE_DECL_ISINF +#define NPY_HAVE_DECL_ISFINITE +#define NPY_HAVE_DECL_SIGNBIT +#define NPY_USE_C99_COMPLEX 1 +#define NPY_HAVE_COMPLEX_DOUBLE 1 +#define NPY_HAVE_COMPLEX_FLOAT 1 +#define NPY_HAVE_COMPLEX_LONG_DOUBLE 1 +#define NPY_USE_C99_FORMATS 1 +#define NPY_VISIBILITY_HIDDEN __attribute__((visibility("hidden"))) +#define NPY_ABI_VERSION 0x01000009 +#define NPY_API_VERSION 0x00000007 + +#ifndef __STDC_FORMAT_MACROS +#define __STDC_FORMAT_MACROS 1 +#endif diff --git a/yocto-poky/meta/recipes-devtools/python/python-numpy/mips64n32/config.h b/yocto-poky/meta/recipes-devtools/python/python-numpy/mips64n32/config.h new file mode 100644 index 000000000..c30b868f2 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-numpy/mips64n32/config.h @@ -0,0 +1,139 @@ +#define HAVE_ENDIAN_H 1 +#define SIZEOF_PY_INTPTR_T 8 +#define SIZEOF_PY_LONG_LONG 8 +#define MATHLIB m +#define HAVE_SIN 1 +#define HAVE_COS 1 +#define HAVE_TAN 1 +#define HAVE_SINH 1 +#define HAVE_COSH 1 +#define HAVE_TANH 1 +#define HAVE_FABS 1 +#define HAVE_FLOOR 1 +#define HAVE_CEIL 1 +#define HAVE_SQRT 1 +#define HAVE_LOG10 1 +#define HAVE_LOG 1 +#define HAVE_EXP 1 +#define HAVE_ASIN 1 +#define HAVE_ACOS 1 +#define HAVE_ATAN 1 +#define HAVE_FMOD 1 +#define HAVE_MODF 1 +#define HAVE_FREXP 1 +#define HAVE_LDEXP 1 +#define HAVE_RINT 1 +#define HAVE_TRUNC 1 +#define HAVE_EXP2 1 +#define HAVE_LOG2 1 +#define HAVE_ATAN2 1 +#define HAVE_POW 1 +#define HAVE_NEXTAFTER 1 +#define HAVE_SINF 1 +#define HAVE_COSF 1 +#define HAVE_TANF 1 +#define HAVE_SINHF 1 +#define HAVE_COSHF 1 +#define HAVE_TANHF 1 +#define HAVE_FABSF 1 +#define HAVE_FLOORF 1 +#define HAVE_CEILF 1 +#define HAVE_RINTF 1 +#define HAVE_TRUNCF 1 +#define HAVE_SQRTF 1 +#define HAVE_LOG10F 1 +#define HAVE_LOGF 1 +#define HAVE_LOG1PF 1 +#define HAVE_EXPF 1 +#define HAVE_EXPM1F 1 +#define HAVE_ASINF 1 +#define HAVE_ACOSF 1 +#define HAVE_ATANF 1 +#define HAVE_ASINHF 1 +#define HAVE_ACOSHF 1 +#define HAVE_ATANHF 1 +#define HAVE_HYPOTF 1 +#define HAVE_ATAN2F 1 +#define HAVE_POWF 1 +#define HAVE_FMODF 1 +#define HAVE_MODFF 1 +#define HAVE_FREXPF 1 +#define HAVE_LDEXPF 1 +#define HAVE_EXP2F 1 +#define HAVE_LOG2F 1 +#define HAVE_COPYSIGNF 1 +#define HAVE_NEXTAFTERF 1 +#define HAVE_SINL 1 +#define HAVE_COSL 1 +#define HAVE_TANL 1 +#define HAVE_SINHL 1 +#define HAVE_COSHL 1 +#define HAVE_TANHL 1 +#define HAVE_FABSL 1 +#define HAVE_FLOORL 1 +#define HAVE_CEILL 1 +#define HAVE_RINTL 1 +#define HAVE_TRUNCL 1 +#define HAVE_SQRTL 1 +#define HAVE_LOG10L 1 +#define HAVE_LOGL 1 +#define HAVE_LOG1PL 1 +#define HAVE_EXPL 1 +#define HAVE_EXPM1L 1 +#define HAVE_ASINL 1 +#define HAVE_ACOSL 1 +#define HAVE_ATANL 1 +#define HAVE_ASINHL 1 +#define HAVE_ACOSHL 1 +#define HAVE_ATANHL 1 +#define HAVE_HYPOTL 1 +#define HAVE_ATAN2L 1 +#define HAVE_POWL 1 +#define HAVE_FMODL 1 +#define HAVE_MODFL 1 +#define HAVE_FREXPL 1 +#define HAVE_LDEXPL 1 +#define HAVE_EXP2L 1 +#define HAVE_LOG2L 1 +#define HAVE_COPYSIGNL 1 +#define HAVE_NEXTAFTERL 1 +#define HAVE_DECL_SIGNBIT +#define HAVE_COMPLEX_H 1 +#define HAVE_CREAL 1 +#define HAVE_CIMAG 1 +#define HAVE_CABS 1 +#define HAVE_CARG 1 +#define HAVE_CEXP 1 +#define HAVE_CSQRT 1 +#define HAVE_CLOG 1 +#define HAVE_CCOS 1 +#define HAVE_CSIN 1 +#define HAVE_CPOW 1 +#define HAVE_CREALF 1 +#define HAVE_CIMAGF 1 +#define HAVE_CABSF 1 +#define HAVE_CARGF 1 +#define HAVE_CEXPF 1 +#define HAVE_CSQRTF 1 +#define HAVE_CLOGF 1 +#define HAVE_CCOSF 1 +#define HAVE_CSINF 1 +#define HAVE_CPOWF 1 +#define HAVE_CREALL 1 +#define HAVE_CIMAGL 1 +#define HAVE_CABSL 1 +#define HAVE_CARGL 1 +#define HAVE_CEXPL 1 +#define HAVE_CSQRTL 1 +#define HAVE_CLOGL 1 +#define HAVE_CCOSL 1 +#define HAVE_CSINL 1 +#define HAVE_CPOWL 1 +#define HAVE_LDOUBLE_IEEE_QUAD_LE 1 +#ifndef __cplusplus +/* #undef inline */ +#endif + +#ifndef _NPY_NPY_CONFIG_H_ +#error config.h should never be included directly, include npy_config.h instead +#endif diff --git a/yocto-poky/meta/recipes-devtools/python/python-numpy/mipsel/config.h b/yocto-poky/meta/recipes-devtools/python/python-numpy/mipsel/config.h new file mode 100644 index 000000000..17ef186d5 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-numpy/mipsel/config.h @@ -0,0 +1,21 @@ +/* ./src.linux-i686-2.5/numpy/core/include/numpy/config.h */ +/* #define SIZEOF_SHORT 2 */ +/* #define SIZEOF_INT 4 */ +/* #define SIZEOF_LONG 4 */ +/* #define SIZEOF_FLOAT 4 */ +/* #define SIZEOF_DOUBLE 8 */ +#define SIZEOF_LONG_DOUBLE 12 +#define SIZEOF_PY_INTPTR_T 4 +/* #define SIZEOF_LONG_LONG 8 */ +#define SIZEOF_PY_LONG_LONG 8 +/* #define CHAR_BIT 8 */ +#define MATHLIB m +#define HAVE_FLOAT_FUNCS +#define HAVE_LOG1P +#define HAVE_EXPM1 +#define HAVE_INVERSE_HYPERBOLIC +#define HAVE_INVERSE_HYPERBOLIC_FLOAT +#define HAVE_ISNAN +#define HAVE_ISINF +#define HAVE_RINT + diff --git a/yocto-poky/meta/recipes-devtools/python/python-numpy/mipsel/numpyconfig.h b/yocto-poky/meta/recipes-devtools/python/python-numpy/mipsel/numpyconfig.h new file mode 100644 index 000000000..c4bf6547f --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-numpy/mipsel/numpyconfig.h @@ -0,0 +1,17 @@ +/* cat ./src.linux-i686-2.5/numpy/core/include/numpy/numpyconfig.h */ +/* + * * This file is generated by numpy/core/setup.pyc. DO NOT EDIT + * */ +#define NPY_SIZEOF_SHORT 2 +#define NPY_SIZEOF_INT 4 +#define NPY_SIZEOF_LONG 4 +#define NPY_SIZEOF_FLOAT 4 +#define NPY_SIZEOF_DOUBLE 8 +#define NPY_SIZEOF_LONGDOUBLE 12 +#define NPY_SIZEOF_PY_INTPTR_T 4 +#define NPY_NO_SMP 0 + +#define NPY_SIZEOF_LONGLONG 8 +#define NPY_SIZEOF_PY_LONG_LONG 8 +/* #define CHAR_BIT 8 */ + diff --git a/yocto-poky/meta/recipes-devtools/python/python-numpy/no-host-paths.patch b/yocto-poky/meta/recipes-devtools/python/python-numpy/no-host-paths.patch new file mode 100644 index 000000000..d74503680 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-numpy/no-host-paths.patch @@ -0,0 +1,57 @@ +Don't search /usr and so on for libraries by default to avoid host contamination. + +Upstream-Status: Inappropriate (As the code stands, this is a hack) +Signed-off-by: Ross Burton <ross.burton@intel.com> + +diff --git a/numpy/distutils/system_info.py b/numpy/distutils/system_info.py +index bac90fb..a63d796 100644 +--- a/numpy/distutils/system_info.py ++++ b/numpy/distutils/system_info.py +@@ -191,41 +191,12 @@ if sys.platform == 'win32': + default_x11_lib_dirs = [] + default_x11_include_dirs = [] + else: +- default_lib_dirs = libpaths(['/usr/local/lib', '/opt/lib', '/usr/lib', +- '/opt/local/lib', '/sw/lib'], platform_bits) +- default_include_dirs = ['/usr/local/include', +- '/opt/include', '/usr/include', +- # path of umfpack under macports +- '/opt/local/include/ufsparse', +- '/opt/local/include', '/sw/include', +- '/usr/include/suitesparse'] +- default_src_dirs = ['.', '/usr/local/src', '/opt/src', '/sw/src'] +- +- default_x11_lib_dirs = libpaths(['/usr/X11R6/lib', '/usr/X11/lib', +- '/usr/lib'], platform_bits) +- default_x11_include_dirs = ['/usr/X11R6/include', '/usr/X11/include', +- '/usr/include'] +- +- if os.path.exists('/usr/lib/X11'): +- globbed_x11_dir = glob('/usr/lib/*/libX11.so') +- if globbed_x11_dir: +- x11_so_dir = os.path.split(globbed_x11_dir[0])[0] +- default_x11_lib_dirs.extend([x11_so_dir, '/usr/lib/X11']) +- default_x11_include_dirs.extend(['/usr/lib/X11/include', +- '/usr/include/X11']) +- +- import subprocess as sp +- try: +- p = sp.Popen(["gcc", "-print-multiarch"], stdout=sp.PIPE, +- stderr=open(os.devnull, 'w')) +- except OSError: +- pass # gcc is not installed +- else: +- triplet = str(p.communicate()[0].decode().strip()) +- if p.returncode == 0: +- # gcc supports the "-print-multiarch" option +- default_x11_lib_dirs += [os.path.join("/usr/lib/", triplet)] +- default_lib_dirs += [os.path.join("/usr/lib/", triplet)] ++ default_lib_dirs = libpaths(['/deadir/lib'], platform_bits) ++ default_include_dirs = ['/deaddir/include'] ++ default_src_dirs = ['.', '/deaddir/src'] ++ ++ default_x11_lib_dirs = libpaths(['/deaddir/lib'], platform_bits) ++ default_x11_include_dirs = ['/deaddir/include'] + + if os.path.join(sys.prefix, 'lib') not in default_lib_dirs: + default_lib_dirs.insert(0, os.path.join(sys.prefix, 'lib')) diff --git a/yocto-poky/meta/recipes-devtools/python/python-numpy/powerpc/_numpyconfig.h b/yocto-poky/meta/recipes-devtools/python/python-numpy/powerpc/_numpyconfig.h new file mode 100644 index 000000000..73cbfb1ba --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-numpy/powerpc/_numpyconfig.h @@ -0,0 +1,30 @@ +#define NPY_HAVE_ENDIAN_H 1 +#define NPY_SIZEOF_SHORT SIZEOF_SHORT +#define NPY_SIZEOF_INT SIZEOF_INT +#define NPY_SIZEOF_LONG SIZEOF_LONG +#define NPY_SIZEOF_FLOAT 4 +#define NPY_SIZEOF_COMPLEX_FLOAT 8 +#define NPY_SIZEOF_DOUBLE 8 +#define NPY_SIZEOF_COMPLEX_DOUBLE 16 +#define NPY_SIZEOF_LONGDOUBLE 16 +#define NPY_SIZEOF_COMPLEX_LONGDOUBLE 32 +#define NPY_SIZEOF_PY_INTPTR_T 4 +#define NPY_SIZEOF_PY_LONG_LONG 8 +#define NPY_SIZEOF_LONGLONG 8 +#define NPY_NO_SMP 0 +#define NPY_HAVE_DECL_ISNAN +#define NPY_HAVE_DECL_ISINF +#define NPY_HAVE_DECL_ISFINITE +#define NPY_HAVE_DECL_SIGNBIT +#define NPY_USE_C99_COMPLEX 1 +#define NPY_HAVE_COMPLEX_DOUBLE 1 +#define NPY_HAVE_COMPLEX_FLOAT 1 +#define NPY_HAVE_COMPLEX_LONG_DOUBLE 1 +#define NPY_USE_C99_FORMATS 1 +#define NPY_VISIBILITY_HIDDEN __attribute__((visibility("hidden"))) +#define NPY_ABI_VERSION 0x01000009 +#define NPY_API_VERSION 0x00000007 + +#ifndef __STDC_FORMAT_MACROS +#define __STDC_FORMAT_MACROS 1 +#endif diff --git a/yocto-poky/meta/recipes-devtools/python/python-numpy/powerpc/config.h b/yocto-poky/meta/recipes-devtools/python/python-numpy/powerpc/config.h new file mode 100644 index 000000000..f65d39d5d --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-numpy/powerpc/config.h @@ -0,0 +1,139 @@ +#define HAVE_ENDIAN_H 1 +#define SIZEOF_PY_INTPTR_T 4 +#define SIZEOF_PY_LONG_LONG 8 +#define MATHLIB m +#define HAVE_SIN 1 +#define HAVE_COS 1 +#define HAVE_TAN 1 +#define HAVE_SINH 1 +#define HAVE_COSH 1 +#define HAVE_TANH 1 +#define HAVE_FABS 1 +#define HAVE_FLOOR 1 +#define HAVE_CEIL 1 +#define HAVE_SQRT 1 +#define HAVE_LOG10 1 +#define HAVE_LOG 1 +#define HAVE_EXP 1 +#define HAVE_ASIN 1 +#define HAVE_ACOS 1 +#define HAVE_ATAN 1 +#define HAVE_FMOD 1 +#define HAVE_MODF 1 +#define HAVE_FREXP 1 +#define HAVE_LDEXP 1 +#define HAVE_RINT 1 +#define HAVE_TRUNC 1 +#define HAVE_EXP2 1 +#define HAVE_LOG2 1 +#define HAVE_ATAN2 1 +#define HAVE_POW 1 +#define HAVE_NEXTAFTER 1 +#define HAVE_SINF 1 +#define HAVE_COSF 1 +#define HAVE_TANF 1 +#define HAVE_SINHF 1 +#define HAVE_COSHF 1 +#define HAVE_TANHF 1 +#define HAVE_FABSF 1 +#define HAVE_FLOORF 1 +#define HAVE_CEILF 1 +#define HAVE_RINTF 1 +#define HAVE_TRUNCF 1 +#define HAVE_SQRTF 1 +#define HAVE_LOG10F 1 +#define HAVE_LOGF 1 +#define HAVE_LOG1PF 1 +#define HAVE_EXPF 1 +#define HAVE_EXPM1F 1 +#define HAVE_ASINF 1 +#define HAVE_ACOSF 1 +#define HAVE_ATANF 1 +#define HAVE_ASINHF 1 +#define HAVE_ACOSHF 1 +#define HAVE_ATANHF 1 +#define HAVE_HYPOTF 1 +#define HAVE_ATAN2F 1 +#define HAVE_POWF 1 +#define HAVE_FMODF 1 +#define HAVE_MODFF 1 +#define HAVE_FREXPF 1 +#define HAVE_LDEXPF 1 +#define HAVE_EXP2F 1 +#define HAVE_LOG2F 1 +#define HAVE_COPYSIGNF 1 +#define HAVE_NEXTAFTERF 1 +#define HAVE_SINL 1 +#define HAVE_COSL 1 +#define HAVE_TANL 1 +#define HAVE_SINHL 1 +#define HAVE_COSHL 1 +#define HAVE_TANHL 1 +#define HAVE_FABSL 1 +#define HAVE_FLOORL 1 +#define HAVE_CEILL 1 +#define HAVE_RINTL 1 +#define HAVE_TRUNCL 1 +#define HAVE_SQRTL 1 +#define HAVE_LOG10L 1 +#define HAVE_LOGL 1 +#define HAVE_LOG1PL 1 +#define HAVE_EXPL 1 +#define HAVE_EXPM1L 1 +#define HAVE_ASINL 1 +#define HAVE_ACOSL 1 +#define HAVE_ATANL 1 +#define HAVE_ASINHL 1 +#define HAVE_ACOSHL 1 +#define HAVE_ATANHL 1 +#define HAVE_HYPOTL 1 +#define HAVE_ATAN2L 1 +#define HAVE_POWL 1 +#define HAVE_FMODL 1 +#define HAVE_MODFL 1 +#define HAVE_FREXPL 1 +#define HAVE_LDEXPL 1 +#define HAVE_EXP2L 1 +#define HAVE_LOG2L 1 +#define HAVE_COPYSIGNL 1 +#define HAVE_NEXTAFTERL 1 +#define HAVE_DECL_SIGNBIT +#define HAVE_COMPLEX_H 1 +#define HAVE_CREAL 1 +#define HAVE_CIMAG 1 +#define HAVE_CABS 1 +#define HAVE_CARG 1 +#define HAVE_CEXP 1 +#define HAVE_CSQRT 1 +#define HAVE_CLOG 1 +#define HAVE_CCOS 1 +#define HAVE_CSIN 1 +#define HAVE_CPOW 1 +#define HAVE_CREALF 1 +#define HAVE_CIMAGF 1 +#define HAVE_CABSF 1 +#define HAVE_CARGF 1 +#define HAVE_CEXPF 1 +#define HAVE_CSQRTF 1 +#define HAVE_CLOGF 1 +#define HAVE_CCOSF 1 +#define HAVE_CSINF 1 +#define HAVE_CPOWF 1 +#define HAVE_CREALL 1 +#define HAVE_CIMAGL 1 +#define HAVE_CABSL 1 +#define HAVE_CARGL 1 +#define HAVE_CEXPL 1 +#define HAVE_CSQRTL 1 +#define HAVE_CLOGL 1 +#define HAVE_CCOSL 1 +#define HAVE_CSINL 1 +#define HAVE_CPOWL 1 +#define HAVE_LDOUBLE_DOUBLE_DOUBLE_BE 1 +#ifndef __cplusplus +/* #undef inline */ +#endif + +#ifndef _NPY_NPY_CONFIG_H_ +#error config.h should never be included directly, include npy_config.h instead +#endif diff --git a/yocto-poky/meta/recipes-devtools/python/python-numpy/powerpc64/_numpyconfig.h b/yocto-poky/meta/recipes-devtools/python/python-numpy/powerpc64/_numpyconfig.h new file mode 100644 index 000000000..be57ac27b --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-numpy/powerpc64/_numpyconfig.h @@ -0,0 +1,30 @@ +#define NPY_HAVE_ENDIAN_H 1 +#define NPY_SIZEOF_SHORT SIZEOF_SHORT +#define NPY_SIZEOF_INT SIZEOF_INT +#define NPY_SIZEOF_LONG SIZEOF_LONG +#define NPY_SIZEOF_FLOAT 4 +#define NPY_SIZEOF_COMPLEX_FLOAT 8 +#define NPY_SIZEOF_DOUBLE 8 +#define NPY_SIZEOF_COMPLEX_DOUBLE 16 +#define NPY_SIZEOF_LONGDOUBLE 16 +#define NPY_SIZEOF_COMPLEX_LONGDOUBLE 32 +#define NPY_SIZEOF_PY_INTPTR_T 8 +#define NPY_SIZEOF_PY_LONG_LONG 8 +#define NPY_SIZEOF_LONGLONG 8 +#define NPY_NO_SMP 0 +#define NPY_HAVE_DECL_ISNAN +#define NPY_HAVE_DECL_ISINF +#define NPY_HAVE_DECL_ISFINITE +#define NPY_HAVE_DECL_SIGNBIT +#define NPY_USE_C99_COMPLEX 1 +#define NPY_HAVE_COMPLEX_DOUBLE 1 +#define NPY_HAVE_COMPLEX_FLOAT 1 +#define NPY_HAVE_COMPLEX_LONG_DOUBLE 1 +#define NPY_USE_C99_FORMATS 1 +#define NPY_VISIBILITY_HIDDEN __attribute__((visibility("hidden"))) +#define NPY_ABI_VERSION 0x01000009 +#define NPY_API_VERSION 0x00000007 + +#ifndef __STDC_FORMAT_MACROS +#define __STDC_FORMAT_MACROS 1 +#endif diff --git a/yocto-poky/meta/recipes-devtools/python/python-numpy/powerpc64/config.h b/yocto-poky/meta/recipes-devtools/python/python-numpy/powerpc64/config.h new file mode 100644 index 000000000..c30b868f2 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-numpy/powerpc64/config.h @@ -0,0 +1,139 @@ +#define HAVE_ENDIAN_H 1 +#define SIZEOF_PY_INTPTR_T 8 +#define SIZEOF_PY_LONG_LONG 8 +#define MATHLIB m +#define HAVE_SIN 1 +#define HAVE_COS 1 +#define HAVE_TAN 1 +#define HAVE_SINH 1 +#define HAVE_COSH 1 +#define HAVE_TANH 1 +#define HAVE_FABS 1 +#define HAVE_FLOOR 1 +#define HAVE_CEIL 1 +#define HAVE_SQRT 1 +#define HAVE_LOG10 1 +#define HAVE_LOG 1 +#define HAVE_EXP 1 +#define HAVE_ASIN 1 +#define HAVE_ACOS 1 +#define HAVE_ATAN 1 +#define HAVE_FMOD 1 +#define HAVE_MODF 1 +#define HAVE_FREXP 1 +#define HAVE_LDEXP 1 +#define HAVE_RINT 1 +#define HAVE_TRUNC 1 +#define HAVE_EXP2 1 +#define HAVE_LOG2 1 +#define HAVE_ATAN2 1 +#define HAVE_POW 1 +#define HAVE_NEXTAFTER 1 +#define HAVE_SINF 1 +#define HAVE_COSF 1 +#define HAVE_TANF 1 +#define HAVE_SINHF 1 +#define HAVE_COSHF 1 +#define HAVE_TANHF 1 +#define HAVE_FABSF 1 +#define HAVE_FLOORF 1 +#define HAVE_CEILF 1 +#define HAVE_RINTF 1 +#define HAVE_TRUNCF 1 +#define HAVE_SQRTF 1 +#define HAVE_LOG10F 1 +#define HAVE_LOGF 1 +#define HAVE_LOG1PF 1 +#define HAVE_EXPF 1 +#define HAVE_EXPM1F 1 +#define HAVE_ASINF 1 +#define HAVE_ACOSF 1 +#define HAVE_ATANF 1 +#define HAVE_ASINHF 1 +#define HAVE_ACOSHF 1 +#define HAVE_ATANHF 1 +#define HAVE_HYPOTF 1 +#define HAVE_ATAN2F 1 +#define HAVE_POWF 1 +#define HAVE_FMODF 1 +#define HAVE_MODFF 1 +#define HAVE_FREXPF 1 +#define HAVE_LDEXPF 1 +#define HAVE_EXP2F 1 +#define HAVE_LOG2F 1 +#define HAVE_COPYSIGNF 1 +#define HAVE_NEXTAFTERF 1 +#define HAVE_SINL 1 +#define HAVE_COSL 1 +#define HAVE_TANL 1 +#define HAVE_SINHL 1 +#define HAVE_COSHL 1 +#define HAVE_TANHL 1 +#define HAVE_FABSL 1 +#define HAVE_FLOORL 1 +#define HAVE_CEILL 1 +#define HAVE_RINTL 1 +#define HAVE_TRUNCL 1 +#define HAVE_SQRTL 1 +#define HAVE_LOG10L 1 +#define HAVE_LOGL 1 +#define HAVE_LOG1PL 1 +#define HAVE_EXPL 1 +#define HAVE_EXPM1L 1 +#define HAVE_ASINL 1 +#define HAVE_ACOSL 1 +#define HAVE_ATANL 1 +#define HAVE_ASINHL 1 +#define HAVE_ACOSHL 1 +#define HAVE_ATANHL 1 +#define HAVE_HYPOTL 1 +#define HAVE_ATAN2L 1 +#define HAVE_POWL 1 +#define HAVE_FMODL 1 +#define HAVE_MODFL 1 +#define HAVE_FREXPL 1 +#define HAVE_LDEXPL 1 +#define HAVE_EXP2L 1 +#define HAVE_LOG2L 1 +#define HAVE_COPYSIGNL 1 +#define HAVE_NEXTAFTERL 1 +#define HAVE_DECL_SIGNBIT +#define HAVE_COMPLEX_H 1 +#define HAVE_CREAL 1 +#define HAVE_CIMAG 1 +#define HAVE_CABS 1 +#define HAVE_CARG 1 +#define HAVE_CEXP 1 +#define HAVE_CSQRT 1 +#define HAVE_CLOG 1 +#define HAVE_CCOS 1 +#define HAVE_CSIN 1 +#define HAVE_CPOW 1 +#define HAVE_CREALF 1 +#define HAVE_CIMAGF 1 +#define HAVE_CABSF 1 +#define HAVE_CARGF 1 +#define HAVE_CEXPF 1 +#define HAVE_CSQRTF 1 +#define HAVE_CLOGF 1 +#define HAVE_CCOSF 1 +#define HAVE_CSINF 1 +#define HAVE_CPOWF 1 +#define HAVE_CREALL 1 +#define HAVE_CIMAGL 1 +#define HAVE_CABSL 1 +#define HAVE_CARGL 1 +#define HAVE_CEXPL 1 +#define HAVE_CSQRTL 1 +#define HAVE_CLOGL 1 +#define HAVE_CCOSL 1 +#define HAVE_CSINL 1 +#define HAVE_CPOWL 1 +#define HAVE_LDOUBLE_IEEE_QUAD_LE 1 +#ifndef __cplusplus +/* #undef inline */ +#endif + +#ifndef _NPY_NPY_CONFIG_H_ +#error config.h should never be included directly, include npy_config.h instead +#endif diff --git a/yocto-poky/meta/recipes-devtools/python/python-numpy/x86-64/_numpyconfig.h b/yocto-poky/meta/recipes-devtools/python/python-numpy/x86-64/_numpyconfig.h new file mode 100644 index 000000000..be57ac27b --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-numpy/x86-64/_numpyconfig.h @@ -0,0 +1,30 @@ +#define NPY_HAVE_ENDIAN_H 1 +#define NPY_SIZEOF_SHORT SIZEOF_SHORT +#define NPY_SIZEOF_INT SIZEOF_INT +#define NPY_SIZEOF_LONG SIZEOF_LONG +#define NPY_SIZEOF_FLOAT 4 +#define NPY_SIZEOF_COMPLEX_FLOAT 8 +#define NPY_SIZEOF_DOUBLE 8 +#define NPY_SIZEOF_COMPLEX_DOUBLE 16 +#define NPY_SIZEOF_LONGDOUBLE 16 +#define NPY_SIZEOF_COMPLEX_LONGDOUBLE 32 +#define NPY_SIZEOF_PY_INTPTR_T 8 +#define NPY_SIZEOF_PY_LONG_LONG 8 +#define NPY_SIZEOF_LONGLONG 8 +#define NPY_NO_SMP 0 +#define NPY_HAVE_DECL_ISNAN +#define NPY_HAVE_DECL_ISINF +#define NPY_HAVE_DECL_ISFINITE +#define NPY_HAVE_DECL_SIGNBIT +#define NPY_USE_C99_COMPLEX 1 +#define NPY_HAVE_COMPLEX_DOUBLE 1 +#define NPY_HAVE_COMPLEX_FLOAT 1 +#define NPY_HAVE_COMPLEX_LONG_DOUBLE 1 +#define NPY_USE_C99_FORMATS 1 +#define NPY_VISIBILITY_HIDDEN __attribute__((visibility("hidden"))) +#define NPY_ABI_VERSION 0x01000009 +#define NPY_API_VERSION 0x00000007 + +#ifndef __STDC_FORMAT_MACROS +#define __STDC_FORMAT_MACROS 1 +#endif diff --git a/yocto-poky/meta/recipes-devtools/python/python-numpy/x86-64/config.h b/yocto-poky/meta/recipes-devtools/python/python-numpy/x86-64/config.h new file mode 100644 index 000000000..0ce63b7d2 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-numpy/x86-64/config.h @@ -0,0 +1,139 @@ +#define HAVE_ENDIAN_H 1 +#define SIZEOF_PY_INTPTR_T 8 +#define SIZEOF_PY_LONG_LONG 8 +#define MATHLIB m +#define HAVE_SIN 1 +#define HAVE_COS 1 +#define HAVE_TAN 1 +#define HAVE_SINH 1 +#define HAVE_COSH 1 +#define HAVE_TANH 1 +#define HAVE_FABS 1 +#define HAVE_FLOOR 1 +#define HAVE_CEIL 1 +#define HAVE_SQRT 1 +#define HAVE_LOG10 1 +#define HAVE_LOG 1 +#define HAVE_EXP 1 +#define HAVE_ASIN 1 +#define HAVE_ACOS 1 +#define HAVE_ATAN 1 +#define HAVE_FMOD 1 +#define HAVE_MODF 1 +#define HAVE_FREXP 1 +#define HAVE_LDEXP 1 +#define HAVE_RINT 1 +#define HAVE_TRUNC 1 +#define HAVE_EXP2 1 +#define HAVE_LOG2 1 +#define HAVE_ATAN2 1 +#define HAVE_POW 1 +#define HAVE_NEXTAFTER 1 +#define HAVE_SINF 1 +#define HAVE_COSF 1 +#define HAVE_TANF 1 +#define HAVE_SINHF 1 +#define HAVE_COSHF 1 +#define HAVE_TANHF 1 +#define HAVE_FABSF 1 +#define HAVE_FLOORF 1 +#define HAVE_CEILF 1 +#define HAVE_RINTF 1 +#define HAVE_TRUNCF 1 +#define HAVE_SQRTF 1 +#define HAVE_LOG10F 1 +#define HAVE_LOGF 1 +#define HAVE_LOG1PF 1 +#define HAVE_EXPF 1 +#define HAVE_EXPM1F 1 +#define HAVE_ASINF 1 +#define HAVE_ACOSF 1 +#define HAVE_ATANF 1 +#define HAVE_ASINHF 1 +#define HAVE_ACOSHF 1 +#define HAVE_ATANHF 1 +#define HAVE_HYPOTF 1 +#define HAVE_ATAN2F 1 +#define HAVE_POWF 1 +#define HAVE_FMODF 1 +#define HAVE_MODFF 1 +#define HAVE_FREXPF 1 +#define HAVE_LDEXPF 1 +#define HAVE_EXP2F 1 +#define HAVE_LOG2F 1 +#define HAVE_COPYSIGNF 1 +#define HAVE_NEXTAFTERF 1 +#define HAVE_SINL 1 +#define HAVE_COSL 1 +#define HAVE_TANL 1 +#define HAVE_SINHL 1 +#define HAVE_COSHL 1 +#define HAVE_TANHL 1 +#define HAVE_FABSL 1 +#define HAVE_FLOORL 1 +#define HAVE_CEILL 1 +#define HAVE_RINTL 1 +#define HAVE_TRUNCL 1 +#define HAVE_SQRTL 1 +#define HAVE_LOG10L 1 +#define HAVE_LOGL 1 +#define HAVE_LOG1PL 1 +#define HAVE_EXPL 1 +#define HAVE_EXPM1L 1 +#define HAVE_ASINL 1 +#define HAVE_ACOSL 1 +#define HAVE_ATANL 1 +#define HAVE_ASINHL 1 +#define HAVE_ACOSHL 1 +#define HAVE_ATANHL 1 +#define HAVE_HYPOTL 1 +#define HAVE_ATAN2L 1 +#define HAVE_POWL 1 +#define HAVE_FMODL 1 +#define HAVE_MODFL 1 +#define HAVE_FREXPL 1 +#define HAVE_LDEXPL 1 +#define HAVE_EXP2L 1 +#define HAVE_LOG2L 1 +#define HAVE_COPYSIGNL 1 +#define HAVE_NEXTAFTERL 1 +#define HAVE_DECL_SIGNBIT +#define HAVE_COMPLEX_H 1 +#define HAVE_CREAL 1 +#define HAVE_CIMAG 1 +#define HAVE_CABS 1 +#define HAVE_CARG 1 +#define HAVE_CEXP 1 +#define HAVE_CSQRT 1 +#define HAVE_CLOG 1 +#define HAVE_CCOS 1 +#define HAVE_CSIN 1 +#define HAVE_CPOW 1 +#define HAVE_CREALF 1 +#define HAVE_CIMAGF 1 +#define HAVE_CABSF 1 +#define HAVE_CARGF 1 +#define HAVE_CEXPF 1 +#define HAVE_CSQRTF 1 +#define HAVE_CLOGF 1 +#define HAVE_CCOSF 1 +#define HAVE_CSINF 1 +#define HAVE_CPOWF 1 +#define HAVE_CREALL 1 +#define HAVE_CIMAGL 1 +#define HAVE_CABSL 1 +#define HAVE_CARGL 1 +#define HAVE_CEXPL 1 +#define HAVE_CSQRTL 1 +#define HAVE_CLOGL 1 +#define HAVE_CCOSL 1 +#define HAVE_CSINL 1 +#define HAVE_CPOWL 1 +#define HAVE_LDOUBLE_INTEL_EXTENDED_16_BYTES_LE 1 +#ifndef __cplusplus +/* #undef inline */ +#endif + +#ifndef _NPY_NPY_CONFIG_H_ +#error config.h should never be included directly, include npy_config.h instead +#endif diff --git a/yocto-poky/meta/recipes-devtools/python/python-numpy/x86/config.h b/yocto-poky/meta/recipes-devtools/python/python-numpy/x86/config.h new file mode 100644 index 000000000..08e41e3d9 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-numpy/x86/config.h @@ -0,0 +1,108 @@ +#define SIZEOF_PY_INTPTR_T 4 +#define SIZEOF_PY_LONG_LONG 8 +#define MATHLIB m +#define HAVE_SIN +#define HAVE_COS +#define HAVE_TAN +#define HAVE_SINH +#define HAVE_COSH +#define HAVE_TANH +#define HAVE_FABS +#define HAVE_FLOOR +#define HAVE_CEIL +#define HAVE_SQRT +#define HAVE_LOG10 +#define HAVE_LOG +#define HAVE_EXP +#define HAVE_ASIN +#define HAVE_ACOS +#define HAVE_ATAN +#define HAVE_FMOD +#define HAVE_MODF +#define HAVE_FREXP +#define HAVE_LDEXP +#define HAVE_RINT +#define HAVE_TRUNC +#define HAVE_EXP2 +#define HAVE_LOG2 +#define HAVE_ATAN2 +#define HAVE_POW +#define HAVE_NEXTAFTER +#define HAVE_SINF +#define HAVE_COSF +#define HAVE_TANF +#define HAVE_SINHF +#define HAVE_COSHF +#define HAVE_TANHF +#define HAVE_FABSF +#define HAVE_FLOORF +#define HAVE_CEILF +#define HAVE_RINTF +#define HAVE_TRUNCF +#define HAVE_SQRTF +#define HAVE_LOG10F +#define HAVE_LOGF +#define HAVE_LOG1PF +#define HAVE_EXPF +#define HAVE_EXPM1F +#define HAVE_ASINF +#define HAVE_ACOSF +#define HAVE_ATANF +#define HAVE_ASINHF +#define HAVE_ACOSHF +#define HAVE_ATANHF +#define HAVE_HYPOTF +#define HAVE_ATAN2F +#define HAVE_POWF +#define HAVE_FMODF +#define HAVE_MODFF +#define HAVE_FREXPF +#define HAVE_LDEXPF +#define HAVE_EXP2F +#define HAVE_LOG2F +#define HAVE_COPYSIGNF +#define HAVE_NEXTAFTERF +#define HAVE_SINL +#define HAVE_COSL +#define HAVE_TANL +#define HAVE_SINHL +#define HAVE_COSHL +#define HAVE_TANHL +#define HAVE_FABSL +#define HAVE_FLOORL +#define HAVE_CEILL +#define HAVE_RINTL +#define HAVE_TRUNCL +#define HAVE_SQRTL +#define HAVE_LOG10L +#define HAVE_LOGL +#define HAVE_LOG1PL +#define HAVE_EXPL +#define HAVE_EXPM1L +#define HAVE_ASINL +#define HAVE_ACOSL +#define HAVE_ATANL +#define HAVE_ASINHL +#define HAVE_ACOSHL +#define HAVE_ATANHL +#define HAVE_HYPOTL +#define HAVE_ATAN2L +#define HAVE_POWL +#define HAVE_FMODL +#define HAVE_MODFL +#define HAVE_FREXPL +#define HAVE_LDEXPL +#define HAVE_EXP2L +#define HAVE_LOG2L +#define HAVE_COPYSIGNL +#define HAVE_NEXTAFTERL +#define HAVE_DECL_SIGNBIT +#define HAVE_COMPLEX_H +#define HAVE_LDOUBLE_INTEL_EXTENDED_12_BYTES_LE 1 +#ifndef __cplusplus +/* #undef inline */ +#endif + +#ifndef _NPY_NPY_CONFIG_H_ +#error config.h should never be included directly, include npy_config.h instead +#endif diff --git a/yocto-poky/meta/recipes-devtools/python/python-numpy/x86/numpyconfig.h b/yocto-poky/meta/recipes-devtools/python/python-numpy/x86/numpyconfig.h new file mode 100644 index 000000000..ff7938cd9 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-numpy/x86/numpyconfig.h @@ -0,0 +1,24 @@ +#ifndef _NPY_NUMPYCONFIG_H_ +#define _NPY_NUMPYCONFIG_H_ + +#include "_numpyconfig.h" + +/* + * On Mac OS X, because there is only one configuration stage for all the archs + * in universal builds, any macro which depends on the arch needs to be + * harcoded + */ +#ifdef __APPLE__ + #undef NPY_SIZEOF_LONG + #undef NPY_SIZEOF_PY_INTPTR_T + + #ifdef __LP64__ + #define NPY_SIZEOF_LONG 8 + #define NPY_SIZEOF_PY_INTPTR_T 8 + #else + #define NPY_SIZEOF_LONG 4 + #define NPY_SIZEOF_PY_INTPTR_T 4 + #endif +#endif + +#endif diff --git a/yocto-poky/meta/recipes-devtools/python/python-numpy_1.7.0.bb b/yocto-poky/meta/recipes-devtools/python/python-numpy_1.7.0.bb new file mode 100644 index 000000000..81cdfde2b --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-numpy_1.7.0.bb @@ -0,0 +1,99 @@ +SUMMARY = "A sophisticated Numeric Processing Package for Python" +SECTION = "devel/python" +LICENSE = "PSF" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=f87832d854acbade6e9f5c601c8b30b1" +PR = "r1" + +SRC_URI = "${SOURCEFORGE_MIRROR}/numpy/numpy-${PV}.tar.gz \ + file://no-host-paths.patch \ + ${CONFIGFILESURI} " + +CONFIGFILESURI ?= "" + +CONFIGFILESURI_aarch64 = " \ + file://config.h \ + file://_numpyconfig.h \ +" +CONFIGFILESURI_arm = " \ + file://config.h \ + file://numpyconfig.h \ +" +CONFIGFILESURI_armeb = " \ + file://config.h \ + file://numpyconfig.h \ +" +CONFIGFILESURI_mipsel = " \ + file://config.h \ + file://numpyconfig.h \ +" +CONFIGFILESURI_x86 = " \ + file://config.h \ + file://numpyconfig.h \ +" +CONFIGFILESURI_x86-64 = " \ + file://config.h \ + file://_numpyconfig.h \ +" +CONFIGFILESURI_mips = " \ + file://config.h \ + file://_numpyconfig.h \ +" +CONFIGFILESURI_powerpc = " \ + file://config.h \ + file://_numpyconfig.h \ +" +CONFIGFILESURI_powerpc64 = " \ + file://config.h \ + file://_numpyconfig.h \ +" +CONFIGFILESURI_mips64 = " \ + file://config.h \ + file://_numpyconfig.h \ +" +CONFIGFILESURI_mips64n32 = " \ + file://config.h \ + file://_numpyconfig.h \ +" + +S = "${WORKDIR}/numpy-${PV}" + +inherit distutils + +# Make the build fail and replace *config.h with proper one +# This is a ugly, ugly hack - Koen +do_compile_prepend_class-target() { + BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \ + ${STAGING_BINDIR_NATIVE}/python-native/python setup.py build ${DISTUTILS_BUILD_ARGS} || \ + true + cp ${WORKDIR}/*config.h ${S}/build/$(ls ${S}/build | grep src)/numpy/core/include/numpy/ +} + +FILES_${PN}-staticdev += "${PYTHON_SITEPACKAGES_DIR}/numpy/core/lib/*.a" + +SRC_URI[md5sum] = "4fa54e40b6a243416f0248123b6ec332" +SRC_URI[sha256sum] = "f4fa70b7edbab65ee6432eb63743f5489f1919c614632b20b2fb45aa7e682ac6" + +# install what is needed for numpy.test() +RDEPENDS_${PN} = "python-unittest \ + python-difflib \ + python-pprint \ + python-pickle \ + python-shell \ + python-nose \ + python-doctest \ + python-datetime \ + python-distutils \ + python-misc \ + python-mmap \ + python-netclient \ + python-numbers \ + python-pydoc \ + python-pkgutil \ + python-email \ + python-subprocess \ + python-compression \ +" + +RDEPENDS_${PN}_class-native = "" + +BBCLASSEXTEND = "native nativesdk" diff --git a/yocto-poky/meta/recipes-devtools/python/python-pexpect_3.3.bb b/yocto-poky/meta/recipes-devtools/python/python-pexpect_3.3.bb new file mode 100644 index 000000000..cd80aeb2f --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-pexpect_3.3.bb @@ -0,0 +1,23 @@ +SUMMARY = "A Pure Python Expect like Module for Python" +HOMEPAGE = "http://pexpect.readthedocs.org/" +SECTION = "devel/python" +LICENSE = "ISC" +LIC_FILES_CHKSUM = "file://LICENSE;md5=c25d9a0770ba69a9965acc894e9f3644" + +SRC_URI = "https://pypi.python.org/packages/source/p/pexpect/pexpect-${PV}.tar.gz" +SRC_URI[md5sum] = "0de72541d3f1374b795472fed841dce8" +SRC_URI[sha256sum] = "dfea618d43e83cfff21504f18f98019ba520f330e4142e5185ef7c73527de5ba" + +S = "${WORKDIR}/pexpect-${PV}" + +inherit distutils + +RDEPENDS_${PN} = "\ + python-core \ + python-io \ + python-terminal \ + python-resource \ + python-fcntl \ +" + +BBCLASSEXTEND = "nativesdk" diff --git a/yocto-poky/meta/recipes-devtools/python/python-pycairo_1.10.0.bb b/yocto-poky/meta/recipes-devtools/python/python-pycairo_1.10.0.bb new file mode 100644 index 000000000..70fe25c1a --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-pycairo_1.10.0.bb @@ -0,0 +1,41 @@ +SUMMARY = "Python bindings for the Cairo canvas library" +HOMEPAGE = "http://cairographics.org/pycairo" +BUGTRACKER = "http://bugs.freedesktop.org" +SECTION = "python-devel" +LICENSE = "LGPLv2.1 & MPL-1.1" +LIC_FILES_CHKSUM = "file://COPYING;md5=f2e071ab72978431b294a0d696327421 \ + file://COPYING-LGPL-2.1;md5=fad9b3332be894bab9bc501572864b29 \ + file://COPYING-MPL-1.1;md5=bfe1f75d606912a4111c90743d6c7325" + +# cairo >= 1.8.8 +DEPENDS = "cairo" +PR = "r2" + +SRC_URI = "http://cairographics.org/releases/py2cairo-${PV}.tar.bz2" + +SRC_URI[md5sum] = "20337132c4ab06c1146ad384d55372c5" +SRC_URI[sha256sum] = "d30439f06c2ec1a39e27464c6c828b6eface3b22ee17b2de05dc409e429a7431" + +S = "${WORKDIR}/py2cairo-${PV}" + +inherit distutils pkgconfig + +BBCLASSEXTEND = "native" + +do_configure() { + BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} ./waf configure --prefix=${D}${prefix} --libdir=${D}${libdir} +} + +do_compile() { + ./waf build ${PARALLEL_MAKE} +} + +do_install() { + ./waf install + sed \ + -e 's:@prefix@:${prefix}:' \ + -e 's:@VERSION@:${PV}:' \ + -e 's:@includedir@:${includedir}:' \ + pycairo.pc.in > pycairo.pc + install -m 0644 pycairo.pc ${D}${libdir}/pkgconfig/ +} diff --git a/yocto-poky/meta/recipes-devtools/python/python-pycurl/no-static-link.patch b/yocto-poky/meta/recipes-devtools/python/python-pycurl/no-static-link.patch new file mode 100644 index 000000000..c5349ee57 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-pycurl/no-static-link.patch @@ -0,0 +1,17 @@ +Upstream-Status: Pending + +Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com> + +Index: pycurl-7.19.3.1/setup.py +=================================================================== +--- pycurl-7.19.3.1.orig/setup.py 2014-07-16 12:57:24.065346887 +0000 ++++ pycurl-7.19.3.1/setup.py 2014-07-16 12:57:53.057347678 +0000 +@@ -147,7 +147,7 @@ + optbuf = '' + sslhintbuf = '' + errtext = '' +- for option in ["--libs", "--static-libs"]: ++ for option in ["--libs"]: + p = subprocess.Popen((CURL_CONFIG, option), + stdout=subprocess.PIPE, stderr=subprocess.PIPE) + stdout, stderr = p.communicate() diff --git a/yocto-poky/meta/recipes-devtools/python/python-pycurl_7.19.5.1.bb b/yocto-poky/meta/recipes-devtools/python/python-pycurl_7.19.5.1.bb new file mode 100644 index 000000000..0d0effef6 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-pycurl_7.19.5.1.bb @@ -0,0 +1,39 @@ +SUMMARY = "Python bindings for libcurl" +HOMEPAGE = "http://pycurl.sourceforge.net/" +SECTION = "devel/python" +LICENSE = "LGPLv2.1+ | MIT" +LIC_FILES_CHKSUM = "file://README.rst;beginline=166;endline=181;md5=57e5ab0c0f964533fc59d93dec5695bb \ + file://COPYING-LGPL;md5=3579a9fd0221d49a237aaa33492f988c \ + file://COPYING-MIT;md5=e8200955c773b2a0fd6cea36ea5e87be" + +DEPENDS = "curl python" +RDEPENDS_${PN} = "python-core curl" +SRCNAME = "pycurl" + +SRC_URI = "\ + http://${SRCNAME}.sourceforge.net/download/${SRCNAME}-${PV}.tar.gz;name=archive \ + file://no-static-link.patch \ +" + +SRC_URI[archive.md5sum] = "f44cd54256d7a643ab7b16e3f409b26b" +SRC_URI[archive.sha256sum] = "6e9770f80459757f73bd71af82fbb29cd398b38388cdf1beab31ea91a331bc6c" +S = "${WORKDIR}/${SRCNAME}-${PV}" + +inherit distutils + +# need to export these variables for python-config to work +export BUILD_SYS +export HOST_SYS +export STAGING_INCDIR +export STAGING_LIBDIR + +BBCLASSEXTEND = "native" + +# Ensure the docstrings are generated as make clean will remove them +do_compile_prepend() { + ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py docstrings +} + +do_install_append() { + rm -rf ${D}${datadir}/share +} diff --git a/yocto-poky/meta/recipes-devtools/python/python-pygobject/obsolete_automake_macros.patch b/yocto-poky/meta/recipes-devtools/python/python-pygobject/obsolete_automake_macros.patch new file mode 100644 index 000000000..c2591123b --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-pygobject/obsolete_automake_macros.patch @@ -0,0 +1,23 @@ +Upstream-Status: Accepted [https://bugzilla.gnome.org/show_bug.cgi?id=691101] + +Signed-off-by: Marko Lindqvist <cazfi74@gmail.com> +diff -Nurd pygobject-2.27.91/configure.ac pygobject-2.27.91/configure.ac +--- pygobject-2.27.91/configure.ac 2011-02-23 22:14:37.000000000 +0200 ++++ pygobject-2.27.91/configure.ac 2013-01-03 05:13:44.034949954 +0200 +@@ -35,7 +35,7 @@ + AC_DEFINE(PYGOBJECT_MICRO_VERSION, pygobject_micro_version, [pygobject micro version]) + AC_SUBST(PYGOBJECT_MICRO_VERSION, pygobject_micro_version) + +-AM_CONFIG_HEADER(config.h) ++AC_CONFIG_HEADERS(config.h) + m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES(yes)]) + AM_INIT_AUTOMAKE(foreign) + AM_MAINTAINER_MODE +@@ -82,7 +82,6 @@ + m4_ifdef([LT_OUTPUT], [LT_OUTPUT]) + AC_ISC_POSIX + AC_PROG_CC +-AM_PROG_CC_STDC + AM_PROG_CC_C_O + + # check that we have the minimum version of python necisary to build diff --git a/yocto-poky/meta/recipes-devtools/python/python-pygobject_2.28.3.bb b/yocto-poky/meta/recipes-devtools/python/python-pygobject_2.28.3.bb new file mode 100644 index 000000000..81d37b49c --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-pygobject_2.28.3.bb @@ -0,0 +1,53 @@ +SUMMARY = "Python GObject bindings" +SECTION = "devel/python" +LICENSE = "LGPLv2.1" + +RECIPE_NO_UPDATE_REASON = "Newer versions of python-pygobject depend on gobject-introspection which doesn't cross-compile" + +LIC_FILES_CHKSUM = "file://COPYING;md5=a916467b91076e631dd8edb7424769c7" +DEPENDS = "python python-pygobject-native libffi glib-2.0" +DEPENDS_class-native = "python-native libffi-native glib-2.0-native" +RDEPENDS_class-native = "" + +MAJ_VER = "${@d.getVar('PV',1).split('.')[0]}.${@d.getVar('PV',1).split('.')[1]}" + +SRC_URI = "${GNOME_MIRROR}/pygobject/${MAJ_VER}/pygobject-${PV}.tar.bz2 \ + file://obsolete_automake_macros.patch \ +" + +# libtool-native doesn't have fixinstall.patch applied which means +# that libs get relinked at installation time. This triggers a +# relinking along the lines of: +# gcc -L/tmp/foo/media/build1/poky/build/tmp/sysroots/x86_64-linux/usr/lib -lpyglib-2.0-python -o .libs/_glib.so +# where /tmp/foo is DESTDIR and pyglib-2.0-python may be installed/reinstalled +# at the same time as the gcc command runs. +# If this happens between the handoff between gcc and ld, you can see: +# /bin/ld: cannot find -lpyglib-2.0-python +# Adding a dependency rule like install-pyglibLTLIBRARIES: install-libLTLIBRARIES +# would be ideal but automake can't cope with that without manually +# defining the whole function. Give up and disable parallel make in native builds. +PARALLEL_MAKEINST_class-native = "" + +SRC_URI[md5sum] = "aa64900b274c4661a5c32e52922977f9" +SRC_URI[sha256sum] = "7da88c169a56efccc516cebd9237da3fe518a343095a664607b368fe21df95b6" +S = "${WORKDIR}/pygobject-${PV}" + +EXTRA_OECONF += "--disable-introspection" + +inherit autotools distutils-base pkgconfig + +# necessary to let the call for python-config succeed +export BUILD_SYS +export HOST_SYS +export STAGING_INCDIR +export STAGING_LIBDIR + +PACKAGES += "${PN}-lib" + +RDEPENDS_${PN} += "python-textutils" + +FILES_${PN} = "${libdir}/python*" +FILES_${PN}-lib = "${libdir}/lib*.so.*" +FILES_${PN}-dev += "${bindir} ${datadir}" + +BBCLASSEXTEND = "native" diff --git a/yocto-poky/meta/recipes-devtools/python/python-pygtk/acinclude.m4 b/yocto-poky/meta/recipes-devtools/python/python-pygtk/acinclude.m4 new file mode 100644 index 000000000..53518fb2e --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-pygtk/acinclude.m4 @@ -0,0 +1,90 @@ +## this one is commonly used with AM_PATH_PYTHONDIR ... +dnl AM_CHECK_PYMOD(MODNAME [,SYMBOL [,ACTION-IF-FOUND [,ACTION-IF-NOT-FOUND]]]) +dnl Check if a module containing a given symbol is visible to python. +AC_DEFUN(AM_CHECK_PYMOD, +[AC_REQUIRE([AM_PATH_PYTHON]) +py_mod_var=`echo $1['_']$2 | sed 'y%./+-%__p_%'` +AC_MSG_CHECKING(for ifelse([$2],[],,[$2 in ])python module $1) +AC_CACHE_VAL(py_cv_mod_$py_mod_var, [ +ifelse([$2],[], [prog=" +import sys +try: + import $1 +except ImportError: + sys.exit(1) +except: + sys.exit(0) +sys.exit(0)"], [prog=" +import $1 +$1.$2"]) +if $PYTHON -c "$prog" 1>&AC_FD_CC 2>&AC_FD_CC + then + eval "py_cv_mod_$py_mod_var=yes" + else + eval "py_cv_mod_$py_mod_var=no" + fi +]) +py_val=`eval "echo \`echo '$py_cv_mod_'$py_mod_var\`"` +if test "x$py_val" != xno; then + AC_MSG_RESULT(yes) + ifelse([$3], [],, [$3 +])dnl +else + AC_MSG_RESULT(no) + ifelse([$4], [],, [$4 +])dnl +fi +]) + +dnl a macro to check for ability to create python extensions +dnl AM_CHECK_PYTHON_HEADERS([ACTION-IF-POSSIBLE], [ACTION-IF-NOT-POSSIBLE]) +dnl function also defines PYTHON_INCLUDES +AC_DEFUN([AM_CHECK_PYTHON_HEADERS], +[AC_REQUIRE([AM_PATH_PYTHON]) +AC_MSG_CHECKING(for headers required to compile python extensions) +dnl deduce PYTHON_INCLUDES +AC_ARG_WITH(python-includes, + [ --with-python-includes=DIR path to Python includes], py_exec_prefix=$withval) +if test x$py_exec_prefix != x; then +PYTHON_INCLUDES="-I${py_exec_prefix}/include/python${PYTHON_VERSION}" +else +py_prefix=`$PYTHON -c "import sys; print sys.prefix"` +py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"` +PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}" +if test "$py_prefix" != "$py_exec_prefix"; then + PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}" +fi +fi +AC_SUBST(PYTHON_INCLUDES) +dnl check if the headers exist: +save_CPPFLAGS="$CPPFLAGS" +CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES" +AC_TRY_CPP([#include <Python.h>],dnl +[AC_MSG_RESULT(found) +$1],dnl +[AC_MSG_RESULT(not found) +$2]) +CPPFLAGS="$save_CPPFLAGS" +]) + +dnl +dnl JH_ADD_CFLAG(FLAG) +dnl checks whether the C compiler supports the given flag, and if so, adds +dnl it to $CFLAGS. If the flag is already present in the list, then the +dnl check is not performed. +AC_DEFUN([JH_ADD_CFLAG], +[ +case " $CFLAGS " in +*@<:@\ \ @:>@$1@<:@\ \ @:>@*) + ;; +*) + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $1" + AC_MSG_CHECKING([whether [$]CC understands $1]) + AC_TRY_COMPILE([], [], [jh_has_option=yes], [jh_has_option=no]) + AC_MSG_RESULT($jh_has_option) + if test $jh_has_option = no; then + CFLAGS="$save_CFLAGS" + fi + ;; +esac]) diff --git a/yocto-poky/meta/recipes-devtools/python/python-pygtk/add-gtk-types.defs-into-gdk.c-dependence.patch b/yocto-poky/meta/recipes-devtools/python/python-pygtk/add-gtk-types.defs-into-gdk.c-dependence.patch new file mode 100644 index 000000000..df0f9cd6c --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-pygtk/add-gtk-types.defs-into-gdk.c-dependence.patch @@ -0,0 +1,32 @@ +Upstream-Status: Submitted + +add gtk-types.defs into gdk.c dependence + +gdk.c depends on gtk-types.defs but +gdk/Makefile.am miss this. This will cause +build error sometimes when built +with multi-jobbing, so add gtk-types.defs into +gdk.c dependence. + +Signed-off-by: Song.Li <Song.Li@windriver.com> +Signed-off-by: Jackie Huang <jackie.huang@windriver.com> +--- + gtk/Makefile.am | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/gtk/Makefile.am b/gtk/Makefile.am +index 7bb5d0c..4a88351 100644 +--- a/gtk/Makefile.am ++++ b/gtk/Makefile.am +@@ -214,7 +214,7 @@ gtkunixprint.defs: $(GTKUNIXPRINT_DEFS) Makefile + gtkunixprint-types.defs: $(GTKUNIXPRINT_TYPES_DEFS) Makefile + $(CREATEDEFS) $@ $(GTKUNIXPRINT_TYPES_DEFS) + +-gdk.c: gdk-types.defs gdk.defs $(GDK_OVERRIDES) ++gdk.c: gdk-types.defs gtk-types.defs gdk.defs $(GDK_OVERRIDES) + gtk.c: gdk-types.defs gtk-types.defs gtk.defs gdk-types.defs $(GTK_OVERRIDES) + _gtk_la_CFLAGS = $(PYCAIRO_CFLAGS) $(GTK_CFLAGS) + _gtk_la_LDFLAGS = $(common_ldflags) -export-symbols-regex init_gtk +-- +1.7.4 + diff --git a/yocto-poky/meta/recipes-devtools/python/python-pygtk/fix-gtkunixprint.patch b/yocto-poky/meta/recipes-devtools/python/python-pygtk/fix-gtkunixprint.patch new file mode 100644 index 000000000..16c0e8e77 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-pygtk/fix-gtkunixprint.patch @@ -0,0 +1,20 @@ +Upstream-Status: Inappropriate [configuration] + +Signed-off-by: Saul Wold <sgw@linux.intel.com> + +Index: pygtk-2.24.0/gtk/gtkunixprint.override +=================================================================== +--- pygtk-2.24.0.orig/gtk/gtkunixprint.override ++++ pygtk-2.24.0/gtk/gtkunixprint.override +@@ -102,11 +102,6 @@ _wrap_gtk_print_job_get_surface(PyGObjec + if (pyg_error_check(&error)) + return NULL; + +-#if PYCAIRO_VERSION_HEX >= 0x1010600 +- return PycairoSurface_FromSurface(cairo_surface_reference(surface), NULL); +-#else +- return PycairoSurface_FromSurface(cairo_surface_reference(surface), NULL, NULL); +-#endif + } + %% + override gtk_print_job_send kwargs diff --git a/yocto-poky/meta/recipes-devtools/python/python-pygtk/fix-pygtk-2.0.pc.patch b/yocto-poky/meta/recipes-devtools/python/python-pygtk/fix-pygtk-2.0.pc.patch new file mode 100644 index 000000000..b6156540b --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-pygtk/fix-pygtk-2.0.pc.patch @@ -0,0 +1,13 @@ +Upstream-Status: Inappropriate [configuration] + +Index: pygtk-2.24.0/pygtk-2.0.pc.in +=================================================================== +--- pygtk-2.24.0.orig/pygtk-2.0.pc.in ++++ pygtk-2.24.0/pygtk-2.0.pc.in +@@ -1,5 +1,6 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ ++libdir=@libdir@ + includedir=@includedir@ + datarootdir=@datarootdir@ + datadir=@datadir@ diff --git a/yocto-poky/meta/recipes-devtools/python/python-pygtk/nodocs.patch b/yocto-poky/meta/recipes-devtools/python/python-pygtk/nodocs.patch new file mode 100644 index 000000000..f07309a7b --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-pygtk/nodocs.patch @@ -0,0 +1,15 @@ +Upstream-Status: Inappropriate [configuration] + +Index: pygtk-2.17.0/Makefile.am +=================================================================== +--- pygtk-2.17.0.orig/Makefile.am ++++ pygtk-2.17.0/Makefile.am +@@ -4,7 +4,7 @@ if BUILD_GTK + GTK_SUBDIR = gtk + endif + +-SUBDIRS = . $(GTK_SUBDIR) examples tests docs ++SUBDIRS = . $(GTK_SUBDIR) examples tests + + PLATFORM_VERSION = 2.0 + diff --git a/yocto-poky/meta/recipes-devtools/python/python-pygtk/prevent_to_get_display_during_import.patch b/yocto-poky/meta/recipes-devtools/python/python-pygtk/prevent_to_get_display_during_import.patch new file mode 100644 index 000000000..833038e7f --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-pygtk/prevent_to_get_display_during_import.patch @@ -0,0 +1,16 @@ +Upstream-Status: Pending + +Index: pygtk-2.10.4/gtk/__init__.py +=================================================================== +--- pygtk-2.10.4.orig/gtk/__init__.py 2007-11-27 19:27:05.000000000 -0300 ++++ pygtk-2.10.4/gtk/__init__.py 2007-11-27 19:28:22.000000000 -0300 +@@ -78,7 +78,8 @@ + + keysyms = LazyModule('keysyms', locals()) + +-_init() ++if not hasattr(sys.modules['__main__'], 'python_launcher_enabled'): ++ _init() + + # CAPI + _PyGtk_API = _gtk._PyGtk_API diff --git a/yocto-poky/meta/recipes-devtools/python/python-pygtk/python-pygtk2/acinclude.m4 b/yocto-poky/meta/recipes-devtools/python/python-pygtk/python-pygtk2/acinclude.m4 new file mode 100644 index 000000000..53518fb2e --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-pygtk/python-pygtk2/acinclude.m4 @@ -0,0 +1,90 @@ +## this one is commonly used with AM_PATH_PYTHONDIR ... +dnl AM_CHECK_PYMOD(MODNAME [,SYMBOL [,ACTION-IF-FOUND [,ACTION-IF-NOT-FOUND]]]) +dnl Check if a module containing a given symbol is visible to python. +AC_DEFUN(AM_CHECK_PYMOD, +[AC_REQUIRE([AM_PATH_PYTHON]) +py_mod_var=`echo $1['_']$2 | sed 'y%./+-%__p_%'` +AC_MSG_CHECKING(for ifelse([$2],[],,[$2 in ])python module $1) +AC_CACHE_VAL(py_cv_mod_$py_mod_var, [ +ifelse([$2],[], [prog=" +import sys +try: + import $1 +except ImportError: + sys.exit(1) +except: + sys.exit(0) +sys.exit(0)"], [prog=" +import $1 +$1.$2"]) +if $PYTHON -c "$prog" 1>&AC_FD_CC 2>&AC_FD_CC + then + eval "py_cv_mod_$py_mod_var=yes" + else + eval "py_cv_mod_$py_mod_var=no" + fi +]) +py_val=`eval "echo \`echo '$py_cv_mod_'$py_mod_var\`"` +if test "x$py_val" != xno; then + AC_MSG_RESULT(yes) + ifelse([$3], [],, [$3 +])dnl +else + AC_MSG_RESULT(no) + ifelse([$4], [],, [$4 +])dnl +fi +]) + +dnl a macro to check for ability to create python extensions +dnl AM_CHECK_PYTHON_HEADERS([ACTION-IF-POSSIBLE], [ACTION-IF-NOT-POSSIBLE]) +dnl function also defines PYTHON_INCLUDES +AC_DEFUN([AM_CHECK_PYTHON_HEADERS], +[AC_REQUIRE([AM_PATH_PYTHON]) +AC_MSG_CHECKING(for headers required to compile python extensions) +dnl deduce PYTHON_INCLUDES +AC_ARG_WITH(python-includes, + [ --with-python-includes=DIR path to Python includes], py_exec_prefix=$withval) +if test x$py_exec_prefix != x; then +PYTHON_INCLUDES="-I${py_exec_prefix}/include/python${PYTHON_VERSION}" +else +py_prefix=`$PYTHON -c "import sys; print sys.prefix"` +py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"` +PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}" +if test "$py_prefix" != "$py_exec_prefix"; then + PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}" +fi +fi +AC_SUBST(PYTHON_INCLUDES) +dnl check if the headers exist: +save_CPPFLAGS="$CPPFLAGS" +CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES" +AC_TRY_CPP([#include <Python.h>],dnl +[AC_MSG_RESULT(found) +$1],dnl +[AC_MSG_RESULT(not found) +$2]) +CPPFLAGS="$save_CPPFLAGS" +]) + +dnl +dnl JH_ADD_CFLAG(FLAG) +dnl checks whether the C compiler supports the given flag, and if so, adds +dnl it to $CFLAGS. If the flag is already present in the list, then the +dnl check is not performed. +AC_DEFUN([JH_ADD_CFLAG], +[ +case " $CFLAGS " in +*@<:@\ \ @:>@$1@<:@\ \ @:>@*) + ;; +*) + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $1" + AC_MSG_CHECKING([whether [$]CC understands $1]) + AC_TRY_COMPILE([], [], [jh_has_option=yes], [jh_has_option=no]) + AC_MSG_RESULT($jh_has_option) + if test $jh_has_option = no; then + CFLAGS="$save_CFLAGS" + fi + ;; +esac]) diff --git a/yocto-poky/meta/recipes-devtools/python/python-pygtk/update-dependences-of-defs.c.patch b/yocto-poky/meta/recipes-devtools/python/python-pygtk/update-dependences-of-defs.c.patch new file mode 100644 index 000000000..3ed954eee --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-pygtk/update-dependences-of-defs.c.patch @@ -0,0 +1,38 @@ +From dc024e9079bbffbb44436ba3e70a758ebad5520f Mon Sep 17 00:00:00 2001 +From: "Song.Li" <Song.Li@windriver.com> +Date: Sat, 5 Jan 2013 14:55:59 +0800 +Subject: [PATCH] update dependences of defs.c in Makefile.am + +In gtk/Makefile.am, defs.c should dependes on gdk-types.defs and +gtk-types.defs, otherwise it fails occasionally when parallel compile. +The error message: +"IOError: [Errno 2] No such file or directory: 'gtk-types.defs'" + +Add them to dependences of defs.c to fix this issue. + +Upstream-Status: Submitted +https://bugzilla.gnome.org/show_bug.cgi?id=702706 + +Signed-off-by: Song.Li <Song.Li@windriver.com> +Signed-off-by: Kai Kang <kai.kang@windriver.com> + +--- + gtk/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gtk/Makefile.am b/gtk/Makefile.am +index 7bb5d0c..91826cb 100644 +--- a/gtk/Makefile.am ++++ b/gtk/Makefile.am +@@ -289,7 +289,7 @@ if HAVE_GIO_TYPES_DEFS + extra_codegen_args += --register $(PYGOBJECT_DEFSDIR)/gio-types.defs + endif + +-.defs.c: ++.defs.c: gdk-types.defs gtk-types.defs + ($(PYTHON) $(CODEGENDIR)/codegen.py \ + $(PYGTK_CODEGEN_DEFINES) \ + -I $(srcdir) \ +-- +1.7.9.5 + diff --git a/yocto-poky/meta/recipes-devtools/python/python-pygtk_2.24.0.bb b/yocto-poky/meta/recipes-devtools/python/python-pygtk_2.24.0.bb new file mode 100644 index 000000000..e4c33a803 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-pygtk_2.24.0.bb @@ -0,0 +1,53 @@ +SUMMARY = "Python bindings for the GTK+ UI toolkit" +SECTION = "devel/python" +# needs gtk+ 2.17.x +DEPENDS = "gtk+ libglade python-pycairo python-pygobject" +RDEPENDS_${PN} = "python-shell python-pycairo python-pygobject" +PROVIDES = "python-pygtk2" +SRCNAME = "pygtk" +LICENSE = "LGPLv2.1" +LIC_FILES_CHKSUM = "file://COPYING;md5=a916467b91076e631dd8edb7424769c7" + +PR = "r1" + +SRC_URI = "ftp://ftp.gnome.org/pub/gnome/sources/pygtk/2.24/${SRCNAME}-${PV}.tar.bz2 \ + file://add-gtk-types.defs-into-gdk.c-dependence.patch \ + file://fix-gtkunixprint.patch \ + file://prevent_to_get_display_during_import.patch \ + file://nodocs.patch \ + file://fix-pygtk-2.0.pc.patch \ + file://acinclude.m4 \ + file://update-dependences-of-defs.c.patch" + +SRC_URI[md5sum] = "a1051d5794fd7696d3c1af6422d17a49" +SRC_URI[sha256sum] = "cd1c1ea265bd63ff669e92a2d3c2a88eb26bcd9e5363e0f82c896e649f206912" + +S = "${WORKDIR}/${SRCNAME}-${PV}" + +EXTRA_OECONF = "--disable-docs --with-python-includes=${STAGING_INCDIR}/../" + +inherit autotools pkgconfig distutils-base + +do_configure_prepend() { + install -m 0644 ${WORKDIR}/acinclude.m4 ${S}/ + sed -i \ + -e s:'`$PKG_CONFIG --variable defsdir pygobject-2.0`':\"${STAGING_DATADIR}/pygobject/2.0/defs\":g \ + -e s:'`$PKG_CONFIG --variable=pygtkincludedir pygobject-2.0`':\"${STAGING_INCDIR}/pygtk-2.0\":g \ + -e s:'`$PKG_CONFIG --variable=datadir pygobject-2.0`':\"${STAGING_DATADIR}\":g \ + -e s:'`$PKG_CONFIG --variable codegendir pygobject-2.0`':\"${STAGING_DATADIR}/pygobject/2.0/codegen\":g \ + -e s:'`$PKG_CONFIG --variable=fixxref pygobject-2.0`':\"${STAGING_DATADIR}/pygobject/xsl/fixxref.py\":g \ + ${S}/configure.ac +} + +# dirty fix #2: fix build system paths leaking in +do_install_append() { + sed -i -e '1s|^#!.*python|#!/usr/bin/env python|' ${D}${bindir}/pygtk-demo +} + +PACKAGES =+ "${PN}-demo" +FILES_${PN}-demo = " ${bindir}/pygtk-demo ${libdir}/pygtk " +RDEPENDS_${PN}-demo = "python-pygtk python-stringold python-lang" + +# todo: revamp packaging, package demo seperatly +FILES_${PN}-dev += " ${libdir}/pygtk/2.0 ${bindir}/pygtk-* ${datadir}/pygtk/2.0" + diff --git a/yocto-poky/meta/recipes-devtools/python/python-pyrex-native_0.9.9.bb b/yocto-poky/meta/recipes-devtools/python/python-pyrex-native_0.9.9.bb new file mode 100644 index 000000000..e8ef1aa12 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-pyrex-native_0.9.9.bb @@ -0,0 +1,5 @@ +require python-pyrex_${PV}.bb +inherit native pythonnative +DEPENDS = "python-native" +RDEPENDS_${PN} = "" +PR = "r3" diff --git a/yocto-poky/meta/recipes-devtools/python/python-pyrex/pyrex-fix-optimized-mode.patch b/yocto-poky/meta/recipes-devtools/python/python-pyrex/pyrex-fix-optimized-mode.patch new file mode 100644 index 000000000..c58c3280e --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-pyrex/pyrex-fix-optimized-mode.patch @@ -0,0 +1,15 @@ +Upstream-Status: Pending + +Index: Pyrex-0.9.8.4/Pyrex/Distutils/extension.py +=================================================================== +--- Pyrex-0.9.8.4.orig/Pyrex/Distutils/extension.py ++++ Pyrex-0.9.8.4/Pyrex/Distutils/extension.py +@@ -15,7 +15,7 @@ except ImportError: + warnings = None + + class Extension(_Extension.Extension): +- _Extension.Extension.__doc__ + \ ++ _Extension.Extension.__doc__ or "" + \ + """pyrex_include_dirs : [string] + list of directories to search for Pyrex header files (.pxd) (in + Unix form for portability) diff --git a/yocto-poky/meta/recipes-devtools/python/python-pyrex_0.9.9.bb b/yocto-poky/meta/recipes-devtools/python/python-pyrex_0.9.9.bb new file mode 100644 index 000000000..c4dd2e69b --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-pyrex_0.9.9.bb @@ -0,0 +1,22 @@ +SUMMARY = "Language for writing Python extension modules" +DESCRIPTION = "Pyrex is a language specially designed for writing Python extension modules. \ +It's designed to bridge the gap between the nice, high-level, easy-to-use world of Python \ +and the messy, low-level world of C." +SECTION = "devel/python" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=771d472f53f933033f57eeee7808e5bd" +SRCNAME = "Pyrex" +PR = "r4" + +SRC_URI = "\ + http://www.cosc.canterbury.ac.nz/greg.ewing/python/${SRCNAME}/${SRCNAME}-${PV}.tar.gz \ + file://pyrex-fix-optimized-mode.patch \ +" + +SRC_URI[md5sum] = "515dee67d15d4393841e2d60e8341947" +SRC_URI[sha256sum] = "5f87df06831d0b3412eb4bc9d3fc2ee7bfae1b913d7da8c23ab2bf5699fb6b50" +S = "${WORKDIR}/${SRCNAME}-${PV}" + +inherit distutils + +FILES_${PN} += "${datadir}${base_libdir}/${PYTHON_DIR}/site-packages/Pyrex/Compiler/Lexicon.pickle" diff --git a/yocto-poky/meta/recipes-devtools/python/python-scons-native_2.3.6.bb b/yocto-poky/meta/recipes-devtools/python/python-scons-native_2.3.6.bb new file mode 100644 index 000000000..dae89ab5d --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-scons-native_2.3.6.bb @@ -0,0 +1,8 @@ +require python-scons_${PV}.bb +inherit native pythonnative +DEPENDS = "python-native" +RDEPENDS_${PN} = "" + +do_install_append() { + create_wrapper ${D}${bindir}/scons SCONS_LIB_DIR='${STAGING_DIR_HOST}/${PYTHON_SITEPACKAGES_DIR}' +} diff --git a/yocto-poky/meta/recipes-devtools/python/python-scons_2.3.6.bb b/yocto-poky/meta/recipes-devtools/python/python-scons_2.3.6.bb new file mode 100644 index 000000000..c4ad7d39b --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-scons_2.3.6.bb @@ -0,0 +1,14 @@ +SUMMARY = "Software Construction tool (make/autotools replacement)" +SECTION = "devel/python" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=23bc1530c55e9f0d1b709056bcea237d" +SRCNAME = "scons" + +SRC_URI = "${SOURCEFORGE_MIRROR}/scons/scons-${PV}.tar.gz" + +SRC_URI[md5sum] = "9c6a1c3c716cbe5f16515f163c91d928" +SRC_URI[sha256sum] = "98adaa351d8f4e4068a5bf1894bdd7f85b390c8c3f80d437cf8bb266012404df" + +S = "${WORKDIR}/${SRCNAME}-${PV}" + +inherit distutils diff --git a/yocto-poky/meta/recipes-devtools/python/python-setuptools_18.2.bb b/yocto-poky/meta/recipes-devtools/python/python-setuptools_18.2.bb new file mode 100644 index 000000000..1de2b2e92 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-setuptools_18.2.bb @@ -0,0 +1,46 @@ +SUMMARY = "Downloads, builds, installs, upgrades, and uninstalls Python packages" +HOMEPAGE = "https://pypi.python.org/pypi/setuptools" +SECTION = "devel/python" +LICENSE = "Python-2.0 | ZPL-2.0" +LIC_FILES_CHKSUM = "file://setup.py;beginline=78;endline=78;md5=8a314270dd7a8dbca741775415f1716e" + +SRCNAME = "setuptools" + +PROVIDES = "python-distribute" + +DEPENDS += "python" +DEPENDS_class-native += "python-native" + +inherit distutils + +SRC_URI = "https://pypi.python.org/packages/source/s/setuptools/setuptools-${PV}.tar.gz" +SRC_URI[md5sum] = "52b4e48939ef311d7204f8fe940764f4" +SRC_URI[sha256sum] = "0994a58df27ea5dc523782a601357a2198b7493dcc99a30d51827a23585b5b1d" + +S = "${WORKDIR}/${SRCNAME}-${PV}" + + +DISTUTILS_INSTALL_ARGS += "--install-lib=${D}${libdir}/${PYTHON_DIR}/site-packages" + +do_install_prepend() { + install -d ${D}/${libdir}/${PYTHON_DIR}/site-packages +} + +RDEPENDS_${PN} = "\ + python-stringold \ + python-email \ + python-shell \ + python-distutils \ + python-compression \ +" + +RDEPENDS_${PN}_class-native = "\ + python-distutils \ + python-compression \ +" + +RREPLACES_${PN} = "python-distribute" +RPROVIDES_${PN} = "python-distribute" +RCONFLICTS_${PN} = "python-distribute" + +BBCLASSEXTEND = "native nativesdk" diff --git a/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-add-for-rpm-ignoresize-check.patch b/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-add-for-rpm-ignoresize-check.patch new file mode 100644 index 000000000..8a27f2583 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-add-for-rpm-ignoresize-check.patch @@ -0,0 +1,37 @@ +python-smartpm: Add checking for "rpm-ignoresize" option + +The do_rootfs takes a very long time when build host has mounted many NFS +devices. syscall lstat() was being called on every filesystem mounted on the +build host during building. +The reason for the lstat() is that rpm is verifying that enough free disk space +is available to do the install. However, since the install is into the target +rootfs it should not matter how much free space there is in the host mounts. +Add checking for "rpm-ignoresize", by it, smart can make whether RPM skip +checking for diskspace when install a rpm package. + +Upstream-Status: Pending + +Signed-off-by: wenlin.kang <wenlin.kang@windriver.com> +Signed-off-by: Chong Lu <Chong.Lu@windriver.com> +--- + smart/backends/rpm/pm.py | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/smart/backends/rpm/pm.py b/smart/backends/rpm/pm.py +index 5da9ee6..f0488ec 100644 +--- a/smart/backends/rpm/pm.py ++++ b/smart/backends/rpm/pm.py +@@ -241,6 +241,10 @@ class RPMPackageManager(PackageManager): + except AttributeError: + probfilter |= rpm.RPMPROB_FILTER_IGNOREARCH + ++ if sysconf.get("rpm-ignoresize", False): ++ probfilter |= rpm.RPMPROB_FILTER_DISKNODES ++ probfilter |= rpm.RPMPROB_FILTER_DISKSPACE ++ + if force or reinstall: + probfilter |= rpm.RPMPROB_FILTER_REPLACEPKG + probfilter |= rpm.RPMPROB_FILTER_REPLACEOLDFILES +-- +1.9.1 + diff --git a/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-already-installed-message.patch b/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-already-installed-message.patch new file mode 100644 index 000000000..9055555cd --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-already-installed-message.patch @@ -0,0 +1,54 @@ +From a74a9a9eb9d75964a0e978950e8b191d7a18d763 Mon Sep 17 00:00:00 2001 +From: Paul Eggleton <paul.eggleton@linux.intel.com> +Date: Fri, 5 Jun 2015 17:07:16 +0100 +Subject: [PATCH] smart: change "is already installed" message from warning to + info + +This doesn't need to be a warning. + +Upstream-Status: Pending + +Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> +--- + smart/commands/install.py | 4 ++-- + smart/interfaces/text/interactive.py | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/smart/commands/install.py b/smart/commands/install.py +index 6ef9682..80d456b 100644 +--- a/smart/commands/install.py ++++ b/smart/commands/install.py +@@ -152,7 +152,7 @@ def main(ctrl, opts): + for obj in results: + for pkg in obj.packages: + if pkg.installed: +- iface.warning(_("%s (for %s) is already installed") ++ iface.info(_("%s (for %s) is already installed") + % (pkg, arg)) + installed = True + break +@@ -184,7 +184,7 @@ def main(ctrl, opts): + for name in names: + pkg = names[name][0] + if pkg.installed: +- iface.warning(_("%s is already installed") % pkg) ++ iface.info(_("%s is already installed") % pkg) + else: + trans.enqueue(pkg, INSTALL) + +diff --git a/smart/interfaces/text/interactive.py b/smart/interfaces/text/interactive.py +index 9865584..190867b 100644 +--- a/smart/interfaces/text/interactive.py ++++ b/smart/interfaces/text/interactive.py +@@ -278,7 +278,7 @@ class Interpreter(Cmd): + for name in names: + pkg = names[name][0] + if pkg.installed: +- iface.warning(_("%s is already installed") % pkg) ++ iface.info(_("%s is already installed") % pkg) + else: + found = True + transaction.enqueue(pkg, INSTALL) +-- +2.1.0 + diff --git a/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-attempt-fix.patch b/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-attempt-fix.patch new file mode 100644 index 000000000..6e672b332 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-attempt-fix.patch @@ -0,0 +1,158 @@ +Sadly, smart is not deterministic so the same build can go down multiple different +pathways. We'd expect to see the same warnings however depending on the pathway +taken, it may or may not warn, particularly with Recommends since they're optional. + +For example, where a Recommended package is available but has Conflicts, we'd expect +to see an warning that we couldn't install it. Some code paths silently hide this +(its a LOCKED_CONFLICT). We add printing of warnings for this case. + +Also, if there are two compatible feeds available (e.g. i586 and core2_32), this +changes the code path from direct _install() to _pending() since there are multiple +providers. This patch adds warning handling to _pending() so we don't hit hard +failures there. This is as seen with the mysterious libspeexdsp failures for x86-lsb +on the autobuilder. + +Upstream-Status: Pending +RP +2015/7/16 + +Index: git/smart/transaction.py +=================================================================== +--- git.orig/smart/transaction.py ++++ git/smart/transaction.py +@@ -651,13 +651,14 @@ class Transaction(object): + + if not prvpkgs: + # No packages provide it at all. Give up. ++ ++ reasons = [] ++ for prv in req.providedby: ++ for prvpkg in prv.packages: ++ lockedres = lockedpkgs.get(prvpkg, None) ++ if lockedres: ++ reasons.append(lock_reason(prvpkg, lockedres)) + if reqrequired: +- reasons = [] +- for prv in req.providedby: +- for prvpkg in prv.packages: +- lockedres = lockedpkgs.get(prvpkg, None) +- if lockedres: +- reasons.append(lock_reason(prvpkg, lockedres)) + if reasons: + raise Failed, _("Can't install %s: unable to install provider for %s:\n %s") % \ + (pkg, req, '\n '.join(reasons)) +@@ -665,7 +666,11 @@ class Transaction(object): + raise Failed, _("Can't install %s: no package provides %s") % \ + (pkg, req) + else: ++ if reasons: ++ iface.warning(_("Can't install %s: unable to install provider for %s:\n %s") % \ ++ (pkg, req, '\n '.join(reasons))) ++ + # It's only a recommend, skip + continue + + if len(prvpkgs) == 1: +@@ -846,6 +852,14 @@ class Transaction(object): + isinst = changeset.installed + getweight = self._policy.getWeight + ++ attempt = sysconf.has("attempt-install", soft=True) ++ ++ def handle_failure(msg): ++ if attempt: ++ iface.warning(msg) ++ else: ++ raise Failed, msg ++ + updown = [] + while pending: + item = pending.pop(0) +@@ -870,8 +884,9 @@ class Transaction(object): + + if not prvpkgs: + # No packages provide it at all. Give up. +- raise Failed, _("Can't install %s: no package " +- "provides %s") % (pkg, req) ++ handle_failure(_("Can't install %s: no package " ++ "provides %s") % (pkg, req)) ++ continue + + if len(prvpkgs) > 1: + # More than one package provide it. We use _pending here, +@@ -894,9 +909,10 @@ class Transaction(object): + keeporder, cs, lk)) + keeporder += 0.000001 + if not alternatives: +- raise Failed, _("Can't install %s: all packages " ++ handle_failure(_("Can't install %s: all packages " + "providing %s failed to install:\n%s")\ +- % (pkg, req, "\n".join(failures)) ++ % (pkg, req, "\n".join(failures))) ++ continue + alternatives.sort() + changeset.setState(alternatives[0][1]) + if len(alternatives) == 1: +@@ -954,18 +970,20 @@ class Transaction(object): + + for reqpkg in reqpkgs: + if reqpkg in locked and isinst(reqpkg): +- raise Failed, _("Can't remove %s: requiring " ++ handle_failure(_("Can't remove %s: requiring " + "package %s is locked") % \ +- (pkg, reqpkg) ++ (pkg, reqpkg)) ++ continue + for reqpkg in reqpkgs: + # We check again, since other actions may have + # changed their state. + if not isinst(reqpkg): + continue + if reqpkg in locked: +- raise Failed, _("Can't remove %s: requiring " ++ handle_failure(_("Can't remove %s: requiring " + "package %s is locked") % \ +- (pkg, reqpkg) ++ (pkg, reqpkg)) ++ continue + self._remove(reqpkg, changeset, locked, + pending, depth) + continue +@@ -978,12 +996,14 @@ class Transaction(object): + try: + for reqpkg in reqpkgs: + if reqpkg in locked and isinst(reqpkg): +- raise Failed, _("%s is locked") % reqpkg ++ handle_failure(_("%s is locked") % reqpkg) ++ continue + for reqpkg in reqpkgs: + if not cs.installed(reqpkg): + continue + if reqpkg in lk: +- raise Failed, _("%s is locked") % reqpkg ++ handle_failure(_("%s is locked") % reqpkg) ++ continue + self._remove(reqpkg, cs, lk, None, depth) + except Failed, e: + failures.append(unicode(e)) +@@ -991,9 +1011,10 @@ class Transaction(object): + alternatives.append((getweight(cs), cs, lk)) + + if not alternatives: +- raise Failed, _("Can't install %s: all packages providing " ++ handle_failure(_("Can't install %s: all packages providing " + "%s failed to install:\n%s") \ +- % (pkg, prv, "\n".join(failures)) ++ % (pkg, prv, "\n".join(failures))) ++ continue + + alternatives.sort() + changeset.setState(alternatives[0][1]) +@@ -1246,6 +1267,7 @@ class Transaction(object): + changeset.setRequested(pkg, True) + except Failed, e: + if sysconf.has("attempt-install", soft=True): ++ iface.warning(_("Can't install %s: %s") % (pkg, str(e))) + if pkg in changeset: + del changeset[pkg] + continue diff --git a/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-attempt.patch b/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-attempt.patch new file mode 100644 index 000000000..ec98e03c0 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-attempt.patch @@ -0,0 +1,177 @@ +From b105e7fe812da3ccaf7155c0fe14c8728b0d39a5 Mon Sep 17 00:00:00 2001 +From: Mark Hatle <mark.hatle@windriver.com> +Date: Mon, 20 Jan 2014 14:30:52 +0000 +Subject: [PATCH] Add mechanism to attempt install without failing + +In OpenEmbedded, for complementary and 'attemptonly' package processing, +we need a way to instruct smart to try to install, but ignore any +failures (usually conflicts). + +This option only works for the install operation. + +If a complementary install fails, an actual error occurred, one that +we can't ignore without losing the entire attempted transaction. Keep +this as an error so that we can catch these cases in the futre. + +Upstream-Status: Pending + +Signed-off-by: Mark Hatle <mark.hatle@windriver.com> +Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> +--- + backends/rpm/pm.py | 35 ++++++++++++++++++++++++++++++++++- + transaction.py | 50 +++++++++++++++++++++++++++++++++++++------------- + 2 files changed, 71 insertions(+), 14 deletions(-) + +diff --git a/smart/backends/rpm/pm.py b/smart/backends/rpm/pm.py +index 9bbd952..ba6405a 100644 +--- a/smart/backends/rpm/pm.py ++++ b/smart/backends/rpm/pm.py +@@ -241,15 +241,48 @@ class RPMPackageManager(PackageManager): + cb = RPMCallback(prog, upgradednames) + cb.grabOutput(True) + probs = None ++ retry = 0 + try: + probs = ts.run(cb, None) + finally: + del getTS.ts + cb.grabOutput(False) ++ if probs and sysconf.has("attempt-install", soft=True): ++ def remove_conflict(pkgNEVR): ++ for key in changeset.keys(): ++ if pkgNEVR == str(key): ++ del changeset[key] ++ del pkgpaths[key] ++ iface.warning("Removing %s due to file %s conflicting with %s" % (pkgNEVR, fname, altNEVR)) ++ break ++ ++ retry = 1 ++ for prob in probs: ++ if prob[1][0] == rpm.RPMPROB_NEW_FILE_CONFLICT: ++ msg = prob[0].split() ++ fname = msg[1] ++ pkgNEVR = msg[7] ++ altNEVR = msg[9] ++ pkgNEVR = pkgNEVR.rsplit('.', 1)[0] + '@' + pkgNEVR.rsplit('.', 1)[1] ++ altNEVR = altNEVR.rsplit('.', 1)[0] + '@' + altNEVR.rsplit('.', 1)[1] ++ remove_conflict(pkgNEVR) ++ elif prob[1][0] == rpm.RPMPROB_FILE_CONFLICT: ++ msg = prob[0].split() ++ fname = msg[1] ++ pkgNEVR = msg[5] ++ altNEVR = msg[11] ++ pkgNEVR = pkgNEVR.rsplit('.', 1)[0] + '@' + pkgNEVR.rsplit('.', 1)[1] ++ altNEVR = altNEVR.rsplit('.', 1)[0] + '@' + altNEVR.rsplit('.', 1)[1] ++ remove_conflict(pkgNEVR) ++ else: ++ retry = 0 ++ + prog.setDone() +- if probs: ++ if probs and (not retry): + raise Error, "\n".join([x[0] for x in probs]) + prog.stop() ++ if retry and len(changeset): ++ self.commit(changeset, pkgpaths) + + class RPMCallback: + def __init__(self, prog, upgradednames): +diff --git a/smart/transaction.py b/smart/transaction.py +index 4b90cb7..3e043e9 100644 +--- a/smart/transaction.py ++++ b/smart/transaction.py +@@ -555,6 +555,8 @@ class Transaction(object): + changeset.set(pkg, INSTALL) + isinst = changeset.installed + ++ attempt = sysconf.has("attempt-install", soft=True) ++ + # Remove packages conflicted by this one. + for cnf in pkg.conflicts: + for prv in cnf.providedby: +@@ -564,11 +566,16 @@ class Transaction(object): + if not isinst(prvpkg): + locked[prvpkg] = (LOCKED_CONFLICT_BY, pkg) + continue +- if prvpkg in locked: +- raise Failed, _("Can't install %s: conflicted package " +- "%s is locked") % (pkg, prvpkg) +- self._remove(prvpkg, changeset, locked, pending, depth) +- pending.append((PENDING_UPDOWN, prvpkg)) ++ if attempt: ++ del changeset[pkg] ++ raise Failed, _("Can't install %s: it conflicts with package " ++ "%s") % (pkg, prvpkg) ++ else: ++ if prvpkg in locked: ++ raise Failed, _("Can't install %s: conflicted package " ++ "%s is locked") % (pkg, prvpkg) ++ self._remove(prvpkg, changeset, locked, pending, depth) ++ pending.append((PENDING_UPDOWN, prvpkg)) + + # Remove packages conflicting with this one. + for prv in pkg.provides: +@@ -579,12 +586,18 @@ class Transaction(object): + if not isinst(cnfpkg): + locked[cnfpkg] = (LOCKED_CONFLICT, pkg) + continue +- if cnfpkg in locked: ++ if attempt: ++ del changeset[pkg] + raise Failed, _("Can't install %s: it's conflicted by " +- "the locked package %s") \ +- % (pkg, cnfpkg) +- self._remove(cnfpkg, changeset, locked, pending, depth) +- pending.append((PENDING_UPDOWN, cnfpkg)) ++ "the package %s") \ ++ % (pkg, cnfpkg) ++ else: ++ if cnfpkg in locked: ++ raise Failed, _("Can't install %s: it's conflicted by " ++ "the locked package %s") \ ++ % (pkg, cnfpkg) ++ self._remove(cnfpkg, changeset, locked, pending, depth) ++ pending.append((PENDING_UPDOWN, cnfpkg)) + + # Remove packages with the same name that can't + # coexist with this one. +@@ -594,10 +607,15 @@ class Transaction(object): + if not isinst(namepkg): + locked[namepkg] = (LOCKED_NO_COEXIST, pkg) + continue +- if namepkg in locked: ++ if attempt: ++ del changeset[pkg] + raise Failed, _("Can't install %s: it can't coexist " + "with %s") % (pkg, namepkg) +- self._remove(namepkg, changeset, locked, pending, depth) ++ else: ++ if namepkg in locked: ++ raise Failed, _("Can't install %s: it can't coexist " ++ "with %s") % (pkg, namepkg) ++ self._remove(namepkg, changeset, locked, pending, depth) + + # Install packages required by this one. + for req in pkg.requires + pkg.recommends: +@@ -1176,6 +1194,8 @@ class Transaction(object): + + self._policy.runStarting() + ++ attempt = sysconf.has("attempt-install", soft=True) ++ + try: + changeset = self._changeset.copy() + isinst = changeset.installed +@@ -1190,7 +1210,11 @@ class Transaction(object): + locked[pkg] = (LOCKED_KEEP, None) + elif op is INSTALL: + if not isinst(pkg) and pkg in locked: +- raise Failed, _("Can't install %s: it's locked") % pkg ++ if attempt: ++ iface.warning(_("Can't install %s: it's locked") % pkg) ++ del changeset[pkg] ++ else: ++ raise Failed, _("Can't install %s: it's locked") % pkg + changeset.set(pkg, INSTALL) + locked[pkg] = (LOCKED_INSTALL, None) + elif op is REMOVE: diff --git a/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-channelsdir.patch b/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-channelsdir.patch new file mode 100644 index 000000000..e621b3387 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-channelsdir.patch @@ -0,0 +1,24 @@ +Make CHANNELSDIR in smart empty, since this causes host contamination issues +on some RPM-based hosts on which smart is already installed. + +[YOCTO #3881] + +Upstream-Status: Inappropriate [embedded specific] + +diff --git a/smart/plugins/channelsync.py b/smart/plugins/channelsync.py +index 3ba95ff..646d696 100644 +--- a/smart/plugins/channelsync.py ++++ b/smart/plugins/channelsync.py +@@ -23,7 +23,11 @@ from smart.channel import * + from smart import * + import os + +-CHANNELSDIR = "/etc/smart/channels/" ++# For now, we leave the definition of CHANNELSDIR empty. This prevents smart ++# from erroneously consider the build host's channels while setting up its ++# channels [YOCTO #3881]. If this feature will be used in the future, CHANNELSDIR ++# should be set to a proper value. ++CHANNELSDIR = "" + + def syncChannels(channelsdir, force=None): + diff --git a/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-improve-error-reporting.patch b/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-improve-error-reporting.patch new file mode 100644 index 000000000..b82265b3f --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-improve-error-reporting.patch @@ -0,0 +1,91 @@ +Improve error reporting in smart + +Add code to check proper command line arguments for various +smart commands. Exit with error if erroneous/additional arguments +are given in the command line. + +Upstream-Status: Pending + +Signed-off-by: Bogdan Marinescu <bogdan.a.marinescu@intel.com> + +diff --git a/smart/util/optparse.py b/smart/util/optparse.py +index 6fff1bc..f445a3b 100644 +--- a/smart/util/optparse.py ++++ b/smart/util/optparse.py +@@ -70,6 +70,8 @@ import sys, os + import types + import textwrap + from gettext import gettext as _ ++from smart import Error ++import re + + def _repr(self): + return "<%s at 0x%x: %s>" % (self.__class__.__name__, id(self), self) +@@ -710,6 +712,12 @@ class Option: + self.action, self.dest, opt, value, values, parser) + + def take_action(self, action, dest, opt, value, values, parser): ++ # Keep all the options in the command line in the '_given_opts' array ++ # This will be used later to validate the command line ++ given_opts = getattr(parser.values, "_given_opts", []) ++ user_opt = re.sub(r"^\-*", "", opt).replace("-", "_") ++ given_opts.append(user_opt) ++ setattr(parser.values, "_given_opts", given_opts) + if action == "store": + setattr(values, dest, value) + elif action == "store_const": +@@ -821,6 +829,54 @@ class Values: + setattr(self, attr, value) + return getattr(self, attr) + ++ # Check if the given option has the specified number of arguments ++ # Raise an error if the option has an invalid number of arguments ++ # A negative number for 'nargs' means "at least |nargs| arguments are needed" ++ def check_args_of_option(self, opt, nargs, err=None): ++ given_opts = getattr(self, "_given_opts", []) ++ if not opt in given_opts: ++ return ++ values = getattr(self, opt, []) ++ if type(values) != type([]): ++ return ++ if nargs < 0: ++ nargs = -nargs ++ if len(values) >= nargs: ++ return ++ if not err: ++ if nargs == 1: ++ err = _("Option '%s' requires at least one argument") % opt ++ else: ++ err = _("Option '%s' requires at least %d arguments") % (opt, nargs) ++ raise Error, err ++ elif nargs == 0: ++ if len( values ) == 0: ++ return ++ raise Error, err ++ else: ++ if len(values) == nargs: ++ return ++ if not err: ++ if nargs == 1: ++ err = _("Option '%s' requires one argument") % opt ++ else: ++ err = _("Option '%s' requires %d arguments") % (opt, nargs) ++ raise Error, err ++ ++ # Check that at least one of the options in 'actlist' was given as an argument ++ # to the command 'cmdname' ++ def ensure_action(self, cmdname, actlist): ++ given_opts = getattr(self, "_given_opts", []) ++ for action in actlist: ++ if action in given_opts: ++ return ++ raise Error, _("No action specified for command '%s'") % cmdname ++ ++ # Check if there are any other arguments left after parsing the command line and ++ # raise an error if such arguments are found ++ def check_remaining_args(self): ++ if self.args: ++ raise Error, _("Invalid argument(s) '%s'" % str(self.args)) + + class OptionContainer: + diff --git a/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-recommends.patch b/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-recommends.patch new file mode 100644 index 000000000..d607fc475 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-recommends.patch @@ -0,0 +1,381 @@ +Handle recommended packages in core and rpm backends + +Identify and store recommended packages in the cache, add a query option +to read them and ignore them if they are not present when installing. + +Initial identification code from Mark Hatle <mark.hatle@windriver.com>. + +Upstream-Status: Pending + +Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> + +diff --git a/smart/backends/rpm/base.py b/smart/backends/rpm/base.py +index 9332ea0..4fcfbee 100644 +--- a/smart/backends/rpm/base.py ++++ b/smart/backends/rpm/base.py +@@ -225,6 +225,52 @@ class RPMPackage(Package): + break + else: + return False ++ srecs = fk(self.recommends) ++ orecs = fk(other.recommends) ++ if srecs != orecs: ++ for srec in srecs: ++ if srec.name[0] == "/" or srec in orecs: ++ continue ++ for orec in orecs: ++ if (srec.name == orec.name and ++ srec.relation == orec.relation and ++ checkver(srec.version, orec.version)): ++ break ++ else: ++ return False ++ for orec in orecs: ++ if orec.name[0] == "/" or orec in srecs: ++ continue ++ for srec in srecs: ++ if (srec.name == orec.name and ++ srec.relation == orec.relation and ++ checkver(srec.version, orec.version)): ++ break ++ else: ++ return False ++ srecs = fk(self.recommends) ++ orecs = fk(other.recommends) ++ if srecs != orecs: ++ for srec in srecs: ++ if srec.name[0] == "/" or srec in orecs: ++ continue ++ for orec in orecs: ++ if (srec.name == orec.name and ++ srec.relation == orec.relation and ++ checkver(srec.version, orec.version)): ++ break ++ else: ++ return False ++ for orec in orecs: ++ if orec.name[0] == "/" or orec in srecs: ++ continue ++ for srec in srecs: ++ if (srec.name == orec.name and ++ srec.relation == orec.relation and ++ checkver(srec.version, orec.version)): ++ break ++ else: ++ return False + return True + + def coexists(self, other): +diff --git a/smart/ccache.c b/smart/ccache.c +index 7193185..8b66515 100644 +--- a/smart/ccache.c ++++ b/smart/ccache.c +@@ -500,6 +500,46 @@ Package_equals(PackageObject *self, PackageObject *other) + } + } + ++ ilen = 0; ++ jlen = 0; ++ for (i = 0; i != PyList_GET_SIZE(self->recommends); i++) { ++ PyObject *item = PyList_GET_ITEM(self->recommends, i); ++ if (!PyObject_IsInstance(item, (PyObject *)&Depends_Type)) { ++ PyErr_SetString(PyExc_TypeError, "Depends instance expected"); ++ return NULL; ++ } ++ if (STR(((DependsObject *)item)->name)[0] != '/') ++ ilen += 1; ++ } ++ for (j = 0; j != PyList_GET_SIZE(other->recommends); j++) { ++ PyObject *item = PyList_GET_ITEM(other->recommends, j); ++ if (!PyObject_IsInstance(item, (PyObject *)&Depends_Type)) { ++ PyErr_SetString(PyExc_TypeError, "Depends instance expected"); ++ return NULL; ++ } ++ if (STR(((DependsObject *)item)->name)[0] != '/') ++ jlen += 1; ++ } ++ if (ilen != jlen) { ++ ret = Py_False; ++ goto exit; ++ } ++ ++ ilen = PyList_GET_SIZE(self->recommends); ++ jlen = PyList_GET_SIZE(other->recommends); ++ for (i = 0; i != ilen; i++) { ++ PyObject *item = PyList_GET_ITEM(self->recommends, i); ++ if (STR(((DependsObject *)item)->name)[0] != '/') { ++ for (j = 0; j != jlen; j++) ++ if (item == PyList_GET_ITEM(other->recommends, j)) ++ break; ++ if (j == jlen) { ++ ret = Py_False; ++ goto exit; ++ } ++ } ++ } ++ + exit: + Py_INCREF(ret); + return ret; +@@ -1813,6 +1853,59 @@ Loader_buildPackage(LoaderObject *self, PyObject *args) + } + } + ++ /* if recargs: */ ++ if (recargs) { ++ int i = 0; ++ int len = PyList_GET_SIZE(recargs); ++ /* pkg.recommends = [] */ ++ Py_DECREF(pkgobj->recommends); ++ pkgobj->recommends = PyList_New(len); ++ /* for args in recargs: */ ++ for (; i != len; i++) { ++ PyObject *args = PyList_GET_ITEM(recargs, i); ++ DependsObject *recobj; ++ PyObject *rec; ++ ++ if (!PyTuple_Check(args)) { ++ PyErr_SetString(PyExc_TypeError, ++ "Item in recargs is not a tuple"); ++ return NULL; ++ } ++ ++ /* rec = cache._objmap.get(args) */ ++ rec = PyDict_GetItem(cache->_objmap, args); ++ recobj = (DependsObject *)rec; ++ ++ /* if not rec: */ ++ if (!rec) { ++ if (!PyTuple_Check(args) || PyTuple_GET_SIZE(args) < 2) { ++ PyErr_SetString(PyExc_ValueError, "Invalid recargs tuple"); ++ return NULL; ++ } ++ /* rec = args[0](*args[1:]) */ ++ callargs = PyTuple_GetSlice(args, 1, PyTuple_GET_SIZE(args)); ++ rec = PyObject_CallObject(PyTuple_GET_ITEM(args, 0), callargs); ++ Py_DECREF(callargs); ++ if (!rec) return NULL; ++ recobj = (DependsObject *)rec; ++ ++ /* cache._objmap[args] = rec */ ++ PyDict_SetItem(cache->_objmap, args, rec); ++ Py_DECREF(rec); ++ ++ /* cache._recommends.append(rec) */ ++ PyList_Append(cache->_recommends, rec); ++ } ++ ++ /* relpkgs.append(rec.packages) */ ++ PyList_Append(relpkgs, recobj->packages); ++ ++ /* pkg.recommends.append(rec) */ ++ Py_INCREF(rec); ++ PyList_SET_ITEM(pkgobj->recommends, i, rec); ++ } ++ } ++ + /* if upgargs: */ + if (upgargs) { + int i = 0; +@@ -2592,6 +2685,16 @@ Cache_reset(CacheObject *self, PyObject *args) + if (PyList_Check(reqobj->providedby)) + LIST_CLEAR(reqobj->providedby); + } ++ len = PyList_GET_SIZE(self->_recommends); ++ for (i = 0; i != len; i++) { ++ DependsObject *reqobj; ++ PyObject *req; ++ req = PyList_GET_ITEM(self->_recommends, i); ++ reqobj = (DependsObject *)req; ++ LIST_CLEAR(reqobj->packages); ++ if (PyList_Check(reqobj->providedby)) ++ LIST_CLEAR(reqobj->providedby); ++ } + len = PyList_GET_SIZE(self->_upgrades); + for (i = 0; i != len; i++) { + DependsObject *upgobj; +@@ -2834,6 +2937,30 @@ Cache__reload(CacheObject *self, PyObject *args) + } + + /* ++ for rec in pkg.recommends: ++ rec.packages.append(pkg) ++ if rec not in recommends: ++ recommends[rec] = True ++ objmap[rec.getInitArgs()] = rec ++ */ ++ if (PyList_Check(pkg->recommends)) { ++ klen = PyList_GET_SIZE(pkg->recommends); ++ for (k = 0; k != klen; k++) { ++ PyObject *rec = PyList_GET_ITEM(pkg->recommends, k); ++ PyList_Append(((DependsObject *)rec)->packages, ++ (PyObject *)pkg); ++ if (!PyDict_GetItem(recommends, rec)) { ++ PyDict_SetItem(recommends, rec, Py_True); ++ args = PyObject_CallMethod(rec, "getInitArgs", ++ NULL); ++ if (!args) return NULL; ++ PyDict_SetItem(objmap, args, rec); ++ Py_DECREF(args); ++ } ++ } ++ } ++ ++ /* + for upg in pkg.upgrades: + upg.packages.append(pkg) + if upg not in upgrades: +@@ -3097,6 +3224,47 @@ Cache_linkDeps(CacheObject *self, PyObject *args) + Py_DECREF(seq); + } + ++ /* recnames = {} */ ++ recnames = PyDict_New(); ++ /* for rec in self._recommends: */ ++ len = PyList_GET_SIZE(self->_recommends); ++ for (i = 0; i != len; i++) { ++ PyObject *rec = PyList_GET_ITEM(self->_recommends, i); ++ ++ /* for name in rec.getMatchNames(): */ ++ PyObject *names = PyObject_CallMethod(rec, "getMatchNames", NULL); ++ PyObject *seq = PySequence_Fast(names, "getMatchNames() returned " ++ "non-sequence object"); ++ int nameslen; ++ if (!seq) return NULL; ++ nameslen = PySequence_Fast_GET_SIZE(seq); ++ for (j = 0; j != nameslen; j++) { ++ PyObject *name = PySequence_Fast_GET_ITEM(seq, j); ++ ++ /* lst = recnames.get(name) */ ++ lst = PyDict_GetItem(recnames, name); ++ ++ /* ++ if lst: ++ lst.append(rec) ++ else: ++ recnames[name] = [rec] ++ */ ++ if (lst) { ++ PyList_Append(lst, rec); ++ } else { ++ lst = PyList_New(1); ++ Py_INCREF(rec); ++ PyList_SET_ITEM(lst, 0, rec); ++ PyDict_SetItem(recnames, name, lst); ++ Py_DECREF(lst); ++ } ++ } ++ ++ Py_DECREF(names); ++ Py_DECREF(seq); ++ } ++ + /* upgnames = {} */ + upgnames = PyDict_New(); + /* for upg in self._upgrades: */ +@@ -3286,6 +3454,56 @@ Cache_linkDeps(CacheObject *self, PyObject *args) + } + } + ++ /* lst = recnames.get(prv.name) */ ++ lst = PyDict_GetItem(recnames, prv->name); ++ ++ /* if lst: */ ++ if (lst) { ++ /* for rec in lst: */ ++ int reclen = PyList_GET_SIZE(lst); ++ for (j = 0; j != reclen; j++) { ++ DependsObject *rec = (DependsObject *)PyList_GET_ITEM(lst, j); ++ /* if rec.matches(prv): */ ++ PyObject *ret = PyObject_CallMethod((PyObject *)rec, "matches", ++ "O", (PyObject *)prv); ++ if (!ret) return NULL; ++ if (PyObject_IsTrue(ret)) { ++ /* ++ if rec.providedby: ++ rec.providedby.append(prv) ++ else: ++ rec.providedby = [prv] ++ */ ++ if (PyList_Check(rec->providedby)) { ++ PyList_Append(rec->providedby, (PyObject *)prv); ++ } else { ++ PyObject *_lst = PyList_New(1); ++ Py_INCREF(prv); ++ PyList_SET_ITEM(_lst, 0, (PyObject *)prv); ++ Py_DECREF(rec->providedby); ++ rec->providedby = _lst; ++ } ++ ++ /* ++ if prv.recommendedby: ++ prv.recommendedby.append(prv) ++ else: ++ prv.recommendedby = [prv] ++ */ ++ if (PyList_Check(prv->recommendedby)) { ++ PyList_Append(prv->recommendedby, (PyObject *)rec); ++ } else { ++ PyObject *_lst = PyList_New(1); ++ Py_INCREF(rec); ++ PyList_SET_ITEM(_lst, 0, (PyObject *)rec); ++ Py_DECREF(prv->recommendedby); ++ prv->recommendedby = _lst; ++ } ++ } ++ Py_DECREF(ret); ++ } ++ } ++ + /* lst = upgnames.get(prv.name) */ + lst = PyDict_GetItem(upgnames, prv->name); + +@@ -3821,6 +4094,21 @@ Cache__setstate__(CacheObject *self, PyObject *state) + } + + /* ++ for rec in pkg.recommends: ++ rec.packages.append(pkg) ++ recommends[rec] = True ++ */ ++ if (PyList_Check(pkgobj->recommends)) { ++ jlen = PyList_GET_SIZE(pkgobj->recommends); ++ for (j = 0; j != jlen; j++) { ++ PyObject *rec = PyList_GET_ITEM(pkgobj->recommends, j); ++ DependsObject *recobj = (DependsObject *)rec; ++ PyList_Append(recobj->packages, pkg); ++ PyDict_SetItem(recommends, rec, Py_True); ++ } ++ } ++ ++ /* + for upg in pkg.upgrades: + upg.packages.append(pkg) + upgrades[upg] = True +diff --git a/smart/commands/query.py b/smart/commands/query.py +index 9265cd9..b6f5697 100644 +--- a/smart/commands/query.py ++++ b/smart/commands/query.py +@@ -750,6 +750,22 @@ class TextOutput(NullOutput): + name = str(prvpkg) + print " ", "%s (%s)" % (name, prv) + ++ def showRecommends(self, pkg, rec): ++ if self._firstrecommends: ++ self._firstrecommends = False ++ print " ", _("Recommends:") ++ print " ", rec ++ ++ def showRecommendsProvidedBy(self, pkg, req, prv, prvpkg): ++ if self._firstrecommendsprovidedby: ++ self._firstrecommendsprovidedby = False ++ print " ", _("Provided By:") ++ if self.opts.hide_version: ++ name = prvpkg.name ++ else: ++ name = str(prvpkg) ++ print " ", "%s (%s)" % (name, prv) ++ + def showUpgrades(self, pkg, upg): + if self._firstupgrades: + self._firstupgrades = False diff --git a/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-rpm4-fixes.patch b/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-rpm4-fixes.patch new file mode 100644 index 000000000..708ffe67d --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-rpm4-fixes.patch @@ -0,0 +1,49 @@ + +This patch checks for rpm5 related functions in order to allow rpm4 +to work correctly. Currently the rpm4 archscore and filter work +differently enough that they need to be changed. + +Upstream-Status: Inappropriate [OE-Core Specific] + +Signed-off-by: Saul Wold <sgw@linux.intel.com> + +Index: smart-1.4.1/smart/backends/rpm/base.py +=================================================================== +--- smart-1.4.1.orig/smart/backends/rpm/base.py ++++ smart-1.4.1/smart/backends/rpm/base.py +@@ -338,10 +338,14 @@ class RPMObsoletes(Depends): + + _SCOREMAP = {} + def getArchScore(arch, _sm=_SCOREMAP): +- if arch not in _sm: +- score = rpm.archscore(arch) +- _sm[arch] = score +- return _sm.get(arch, 0) ++ try: ++ rpm.platformscore(arch) ++ if arch not in _sm: ++ score = rpm.archscore(arch) ++ _sm[arch] = score ++ return _sm.get(arch, 0) ++ except AttributeError: ++ return 1 + + # TODO: Embed color into nameprovides and obsoletes relations. + _COLORMAP = {"noarch": 0, "x86_64": 2, "ppc64": 2, "s390x": 2, "sparc64": 2} +Index: smart-1.4.1/smart/backends/rpm/pm.py +=================================================================== +--- smart-1.4.1.orig/smart/backends/rpm/pm.py ++++ smart-1.4.1/smart/backends/rpm/pm.py +@@ -235,6 +235,12 @@ class RPMPackageManager(PackageManager): + if sysconf.get("rpm-order"): + ts.order() + probfilter = rpm.RPMPROB_FILTER_OLDPACKAGE ++ try: ++ # Test for RPM5 function ++ rpm.platformscore("") ++ except AttributeError: ++ probfilter |= rpm.RPMPROB_FILTER_IGNOREARCH ++ + if force or reinstall: + probfilter |= rpm.RPMPROB_FILTER_REPLACEPKG + probfilter |= rpm.RPMPROB_FILTER_REPLACEOLDFILES diff --git a/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-set-noprogress-for-pycurl.patch b/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-set-noprogress-for-pycurl.patch new file mode 100644 index 000000000..2885998ac --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-smartpm/smart-set-noprogress-for-pycurl.patch @@ -0,0 +1,20 @@ +Set NOPROGRESS for pycurl just as same as default operation in pycurl module itself. +If set NOPROGRESS with 0 for pycurl, it causes dead lock issue of Python GIL when +call smart library by python gui just like pygtk. + +Upstream-Status: Pending + +Signed-off-by: Kai Kang <kai.kang@windriver.com> +--- +diff -u smart-1.4.1/smart.orig/fetcher.py smart-1.4.1/smart/fetcher.py +--- smart-1.4.1/smart.orig/fetcher.py 2014-07-15 16:42:19.240437080 +0800 ++++ smart-1.4.1/smart/fetcher.py 2014-07-15 17:02:37.812470289 +0800 +@@ -1720,7 +1720,7 @@ + handle.setopt(pycurl.OPT_FILETIME, 1) + handle.setopt(pycurl.LOW_SPEED_LIMIT, 1) + handle.setopt(pycurl.LOW_SPEED_TIME, SOCKETTIMEOUT) +- handle.setopt(pycurl.NOPROGRESS, 0) ++ handle.setopt(pycurl.NOPROGRESS, 1) + handle.setopt(pycurl.PROGRESSFUNCTION, progress) + handle.setopt(pycurl.WRITEDATA, local) + handle.setopt(pycurl.FOLLOWLOCATION, 1) diff --git a/yocto-poky/meta/recipes-devtools/python/python-smartpm/smartpm-rpm5-nodig.patch b/yocto-poky/meta/recipes-devtools/python/python-smartpm/smartpm-rpm5-nodig.patch new file mode 100644 index 000000000..fefb29a66 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-smartpm/smartpm-rpm5-nodig.patch @@ -0,0 +1,59 @@ +RPM5 has removed support for RPMVSF_NOSIGNATURES + +Patch smart to no longer use this flag + +Upstream-Status: Pending + +Signed-off-by: Mark Hatle <mark.hatle@windriver.com> + +diff --git a/smart/backends/rpm/base.py b/smart/backends/rpm/base.py +--- a/smart/backends/rpm/base.py ++++ b/smart/backends/rpm/base.py +@@ -63,11 +63,11 @@ def getTS(new=False): + if sysconf.get("rpm-dbpath"): + rpm.addMacro('_dbpath', "/" + sysconf.get("rpm-dbpath")) + getTS.ts = rpm.ts(getTS.root) +- if not sysconf.get("rpm-check-signatures", False): +- if hasattr(rpm, '_RPMVSF_NOSIGNATURES'): +- getTS.ts.setVSFlags(rpm._RPMVSF_NOSIGNATURES) +- else: +- raise Error, _("rpm requires checking signatures") ++ #if not sysconf.get("rpm-check-signatures", False): ++ # if hasattr(rpm, '_RPMVSF_NOSIGNATURES'): ++ # getTS.ts.setVSFlags(rpm._RPMVSF_NOSIGNATURES) ++ # else: ++ # raise Error, _("rpm requires checking signatures") + rpm_dbpath = sysconf.get("rpm-dbpath", "var/lib/rpm") + dbdir = rpm_join_dbpath(getTS.root, rpm_dbpath) + if not os.path.isdir(dbdir): +@@ -89,11 +89,11 @@ def getTS(new=False): + if sysconf.get("rpm-dbpath"): + rpm.addMacro('_dbpath', "/" + sysconf.get("rpm-dbpath")) + ts = rpm.ts(getTS.root) +- if not sysconf.get("rpm-check-signatures", False): +- if hasattr(rpm, '_RPMVSF_NOSIGNATURES'): +- ts.setVSFlags(rpm._RPMVSF_NOSIGNATURES) +- else: +- raise Error, _("rpm requires checking signatures") ++ #if not sysconf.get("rpm-check-signatures", False): ++ # if hasattr(rpm, '_RPMVSF_NOSIGNATURES'): ++ # ts.setVSFlags(rpm._RPMVSF_NOSIGNATURES) ++ # else: ++ # raise Error, _("rpm requires checking signatures") + return ts + else: + return getTS.ts +diff --git a/smart/plugins/yumchannelsync.py b/smart/plugins/yumchannelsync.py +--- a/smart/plugins/yumchannelsync.py ++++ b/smart/plugins/yumchannelsync.py +@@ -56,8 +56,8 @@ def _getreleasever(): + + rpmroot = sysconf.get("rpm-root", "/") + ts = rpmUtils.transaction.initReadOnlyTransaction(root=rpmroot) +- if hasattr(rpm, '_RPMVSF_NOSIGNATURES') and hasattr(rpm, '_RPMVSF_NODIGESTS'): +- ts.pushVSFlags(~(rpm._RPMVSF_NOSIGNATURES|rpm._RPMVSF_NODIGESTS)) ++ #if hasattr(rpm, '_RPMVSF_NOSIGNATURES') and hasattr(rpm, '_RPMVSF_NODIGESTS'): ++ # ts.pushVSFlags(~(rpm._RPMVSF_NOSIGNATURES|rpm._RPMVSF_NODIGESTS)) + releasever = None + # HACK: we're hard-coding the most used distros, will add more if needed + idx = ts.dbMatch('provides', 'fedora-release') diff --git a/yocto-poky/meta/recipes-devtools/python/python-smartpm_git.bb b/yocto-poky/meta/recipes-devtools/python/python-smartpm_git.bb new file mode 100644 index 000000000..8b974b0c3 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-smartpm_git.bb @@ -0,0 +1,139 @@ +SUMMARY = "The Smart Package Manager" +DESCRIPTION = "The Smart Package Manager project has the ambitious objective of creating \ +smart and portable algorithms for solving adequately the problem of managing software \ +upgrades and installation." + +HOMEPAGE = "http://labix.org/smart/" +SECTION = "devel/python" +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://LICENSE;md5=393a5ca445f6965873eca0259a17f833" + +DEPENDS = "python rpm gettext-native python-rpm" +SRCNAME = "smart" + +SRC_URI = "\ + git://github.com/smartpm/smart.git \ + file://smartpm-rpm5-nodig.patch \ + file://smart-recommends.patch \ + file://smart-improve-error-reporting.patch \ + file://smart-channelsdir.patch \ + file://smart-attempt.patch \ + file://smart-attempt-fix.patch \ + file://smart-rpm4-fixes.patch \ + file://smart-add-for-rpm-ignoresize-check.patch \ + file://smart-already-installed-message.patch \ + file://smart-set-noprogress-for-pycurl.patch \ + " + +SRCREV = "407a7eca766431257dcd1da15175cc36a1bb22d0" +PV = "1.5+git${SRCPV}" + +S = "${WORKDIR}/git" + +# Options - rpm, qt4, gtk +PACKAGECONFIG ??= "rpm" + +RPM_RDEP = "${PN}-backend-rpm" +QT_RDEP = "${PN}-interface-qt4" +GTK_RDEP = "${PN}-interface-gtk" + +RPM_RDEP_class-native = "" +QT_RDEP_class-native = "" +GTK_RDEP_class-native = "" + +RPM_RDEP_class-nativesdk = "" +QT_RDEP_class-nativesdk = "" +GTK_RDEP_class-nativesdk = "" + +PACKAGECONFIG[rpm] = ",,rpm,${RPM_RDEP}" +PACKAGECONFIG[qt4] = ",,qt4-x11,${QT_RDEP}" +PACKAGECONFIG[gtk] = ",,gtk+,${GTK_RDEP}" + +inherit distutils + +do_install_append() { + # We don't support the following items + rm -rf ${D}${libdir}/python*/site-packages/smart/backends/slack + rm -rf ${D}${libdir}/python*/site-packages/smart/backends/arch + rm -rf ${D}${libdir}/python*/site-packages/smart/interfaces/qt + + # Temporary, debian support in OE is missing the python module + rm -f ${D}${libdir}/python*/site-packages/smart/plugins/aptchannelsync.py* + rm -f ${D}${libdir}/python*/site-packages/smart/plugins/debdir.py* + rm -rf ${D}${libdir}/python*/site-packages/smart/backends/deb + + # Disable automatic channel detection + rm -f ${D}${libdir}/python*/site-packages/smart/plugins/detectsys.py* + + # Disable landscape support + rm -f ${D}${libdir}/python*/site-packages/smart/plugins/landscape.py* + + # Disable urpmi channel support + rm -f ${D}${libdir}/python*/site-packages/smart/plugins/urpmichannelsync.py* + + # Disable yum channel support + rm -f ${D}${libdir}/python*/site-packages/smart/plugins/yumchannelsync.py* + + # Disable zypper channel support + rm -f ${D}${libdir}/python*/site-packages/smart/plugins/zyppchannelsync.py* + + if [ -z "${@bb.utils.contains('PACKAGECONFIG', 'rpm', 'rpm', '', d)}" ]; then + rm -f ${D}${libdir}/python*/site-packages/smart/plugins/rpmdir.py* + rm -rf ${D}${libdir}/python*/site-packages/smart/backends/rpm + fi + + if [ -z "${@bb.utils.contains('PACKAGECONFIG', 'qt4', 'qt4', '', d)}" ]; then + rm -rf ${D}${libdir}/python*/site-packages/smart/interfaces/qt4 + fi + + if [ -z "${@bb.utils.contains('PACKAGECONFIG', 'gtk+', 'gtk', '', d)}" ]; then + rm -rf ${D}${libdir}/python*/site-packages/smart/interfaces/gtk + fi +} + +add_native_wrapper() { + create_wrapper ${D}/${bindir}/smart \ + RPM_USRLIBRPM='`dirname $''realpath`'/${@os.path.relpath(d.getVar('libdir', True), d.getVar('bindir', True))}/rpm \ + RPM_ETCRPM='$'{RPM_ETCRPM-'`dirname $''realpath`'/${@os.path.relpath(d.getVar('sysconfdir', True), d.getVar('bindir', True))}/rpm} \ + RPM_LOCALEDIRRPM='`dirname $''realpath`'/${@os.path.relpath(d.getVar('datadir', True), d.getVar('bindir', True))}/locale +} + +do_install_append_class-native() { + sed -i -e 's|^#!.*/usr/bin/env python|#! /usr/bin/env nativepython|' ${D}${bindir}/smart + add_native_wrapper +} + +do_install_append_class-nativesdk() { + add_native_wrapper +} + +PACKAGES = "${PN}-dev ${PN}-dbg ${PN}-doc smartpm \ + ${@bb.utils.contains('PACKAGECONFIG', 'rpm', '${PN}-backend-rpm', '', d)} \ + ${@bb.utils.contains('PACKAGECONFIG', 'qt4', '${PN}-interface-qt4', '', d)} \ + ${@bb.utils.contains('PACKAGECONFIG', 'gtk', '${PN}-interface-gtk', '', d)} \ + ${PN}-interface-images ${PN}" + +RDEPENDS_smartpm = "${PN}" + +RDEPENDS_${PN} += "${PN}-backend-rpm python-codecs python-textutils python-xml python-fcntl \ + python-pickle python-crypt python-compression python-shell \ + python-resource python-netclient python-threading python-unixadmin python-pprint" +RDEPENDS_${PN}_class-native = "" + +RDEPENDS_${PN}-backend-rpm = "python-rpm" + +RDEPENDS_${PN}-interface-qt4 = "qt4-x11 ${PN}-interface-images" +RDEPENDS_${PN}-interface-gtk = "gtk+ ${PN}-interface-images" + +FILES_smartpm = "${bindir}/smart" + +FILES_${PN}-dbg += "${libdir}/python*/site-packages/smart/backends/rpm/.debug" + +FILES_${PN}-backend-rpm = "${libdir}/python*/site-packages/smart/backends/rpm" + +FILES_${PN}-interface-qt4 = "${libdir}/python*/site-packages/smart/interfaces/qt4" +FILES_${PN}-interface-gtk = "${libdir}/python*/site-packages/smart/interfaces/gtk" +FILES_${PN}-interface-images = "${datadir}/${baselib}/python*/site-packages/smart/interfaces/images" + +BBCLASSEXTEND = "native nativesdk" + diff --git a/yocto-poky/meta/recipes-devtools/python/python-smmap_0.9.0.bb b/yocto-poky/meta/recipes-devtools/python/python-smmap_0.9.0.bb new file mode 100644 index 000000000..b658be84c --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python-smmap_0.9.0.bb @@ -0,0 +1,20 @@ +SUMMARY = "Python implementation of a sliding window memory map manager" +DESCRIPTION = "A pure Python implementation of a sliding memory map to \ +help unifying memory mapped access on 32 and 64 bit systems and to help \ +managing resources more efficiently." +HOMEPAGE = "http://github.com/gitpython-developers/GitPython" +SECTION = "devel/python" +LICENSE = "BSD" +LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=e910b35b0ef4e1f665b9a75d6afb7709" + +SRC_URI = "http://pypi.python.org/packages/source/s/smmap/smmap-${PV}.tar.gz" +SRC_URI[md5sum] = "d7932d5ace206bf4ae15198cf36fb6ab" +SRC_URI[sha256sum] = "0e2b62b497bd5f0afebc002eda4d90df9d209c30ef257e8673c90a6b5c119d62" + +S = "${WORKDIR}/smmap-${PV}" + +inherit setuptools + +RDEPENDS_${PN} += "python-codecs python-mmap python-lang" + +BBCLASSEXTEND = "nativesdk" diff --git a/yocto-poky/meta/recipes-devtools/python/python.inc b/yocto-poky/meta/recipes-devtools/python/python.inc new file mode 100644 index 000000000..e18ab8e99 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python.inc @@ -0,0 +1,31 @@ +SUMMARY = "The Python Programming Language" +HOMEPAGE = "http://www.python.org" +LICENSE = "PSFv2" +SECTION = "devel/python" +# bump this on every change in contrib/python/generate-manifest-2.7.py +INC_PR = "r1" + +LIC_FILES_CHKSUM = "file://LICENSE;md5=dff3d00f049545862992d2d097831a13" + +SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz" + +SRC_URI[md5sum] = "38d530f7efc373d64a8fb1637e3baaa7" +SRC_URI[sha256sum] = "90d27e14ea7e03570026850e2e50ba71ad20b7eb31035aada1cf3def8f8d4916" + +PYTHON_MAJMIN = "2.7" + +inherit autotools + +PYTHONLSBOPTS = "--with-wctype-functions" +PYTHONLSBOPTS_linuxstdbase = "ac_cv_sizeof_off_t=8" + +EXTRA_OECONF = "\ + --with-threads \ + --with-pymalloc \ + --without-cxx-main \ + --with-signal-module \ + --enable-shared \ + --enable-ipv6=${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'yes', 'no', d)} \ + ac_cv_header_bluetooth_bluetooth_h=no ac_cv_header_bluetooth_h=no \ + ${PYTHONLSBOPTS} \ +" diff --git a/yocto-poky/meta/recipes-devtools/python/python/01-use-proper-tools-for-cross-build.patch b/yocto-poky/meta/recipes-devtools/python/python/01-use-proper-tools-for-cross-build.patch new file mode 100644 index 000000000..1257ca655 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python/01-use-proper-tools-for-cross-build.patch @@ -0,0 +1,97 @@ +We need to ensure our host tools get run during build, not the freshly +built cross-tools (this will not work), so we introduce HOSTPYTHON and HOSTPGEN. + +Upstream-Status: Inappropriate [embedded specific] + +Signed-off-by: Michael 'Mickey' Lauer <mickey@vanille-media.de> +Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> + +Rebased for python-2.7.9 +Signed-Off-By: Alejandro Hernandez <alejandro.hernandez@linux.intel.com> + +Index: Python-2.7.9/Makefile.pre.in +=================================================================== +--- Python-2.7.9.orig/Makefile.pre.in ++++ Python-2.7.9/Makefile.pre.in +@@ -234,6 +234,7 @@ LIBFFI_INCLUDEDIR= @LIBFFI_INCLUDEDIR@ + ########################################################################## + # Parser + PGEN= Parser/pgen$(EXE) ++HOSTPGEN= $(PGEN)$(EXE) + + PSRCS= \ + Parser/acceler.c \ +@@ -445,7 +446,7 @@ $(BUILDPYTHON): Modules/python.o $(LIBRA + $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST) + + platform: $(BUILDPYTHON) pybuilddir.txt +- $(RUNSHARED) $(PYTHON_FOR_BUILD) -c 'import sys ; from sysconfig import get_platform ; print get_platform()+"-"+sys.version[0:3]' >platform ++ $(RUNSHARED) $(PYTHON_FOR_BUILD) -c 'import sys ; from distutils.util import get_platform ; print get_platform()+"-"+sys.version[0:3]' >platform + + # Create build directory and generate the sysconfig build-time data there. + # pybuilddir.txt contains the name of the build dir and is used for +@@ -611,7 +612,7 @@ Modules/pwdmodule.o: $(srcdir)/Modules/p + $(GRAMMAR_H): $(GRAMMAR_INPUT) $(PGENSRCS) + @$(MKDIR_P) Include + $(MAKE) $(PGEN) +- $(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C) ++ $(HOSTPGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C) + $(GRAMMAR_C): $(GRAMMAR_H) $(GRAMMAR_INPUT) $(PGENSRCS) + $(MAKE) $(GRAMMAR_H) + touch $(GRAMMAR_C) +@@ -1043,27 +1044,27 @@ libinstall: build_all $(srcdir)/Lib/$(PL + $(DESTDIR)$(LIBDEST)/distutils/tests ; \ + fi + PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ +- $(PYTHON_FOR_BUILD) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \ ++ $(HOSTPYTHON) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \ + -d $(LIBDEST) -f \ + -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \ + $(DESTDIR)$(LIBDEST) + PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ +- $(PYTHON_FOR_BUILD) -Wi -tt -O $(DESTDIR)$(LIBDEST)/compileall.py \ ++ $(HOSTPYTHON) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \ + -d $(LIBDEST) -f \ + -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \ + $(DESTDIR)$(LIBDEST) + -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ +- $(PYTHON_FOR_BUILD) -Wi -t $(DESTDIR)$(LIBDEST)/compileall.py \ ++ $(HOSTPYTHON) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \ + -d $(LIBDEST)/site-packages -f \ + -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages + -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ +- $(PYTHON_FOR_BUILD) -Wi -t -O $(DESTDIR)$(LIBDEST)/compileall.py \ ++ $(HOSTPYTHON) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \ + -d $(LIBDEST)/site-packages -f \ + -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages + -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ +- $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt ++ $(HOSTPYTHON) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt + -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ +- $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/PatternGrammar.txt ++ $(HOSTPYTHON) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/PatternGrammar.txt + + # Create the PLATDIR source directory, if one wasn't distributed.. + $(srcdir)/Lib/$(PLATDIR): +Index: Python-2.7.9/setup.py +=================================================================== +--- Python-2.7.9.orig/setup.py ++++ Python-2.7.9/setup.py +@@ -334,6 +334,7 @@ class PyBuildExt(build_ext): + self.failed.append(ext.name) + self.announce('*** WARNING: renaming "%s" since importing it' + ' failed: %s' % (ext.name, why), level=3) ++ return + assert not self.inplace + basename, tail = os.path.splitext(ext_filename) + newname = basename + "_failed" + tail +@@ -558,6 +559,9 @@ class PyBuildExt(build_ext): + + # XXX Omitted modules: gl, pure, dl, SGI-specific modules + ++ lib_dirs = [ os.getenv("STAGING_LIBDIR"), os.getenv("STAGING_BASELIBDIR") ] ++ inc_dirs = [ os.getenv("STAGING_INCDIR") ] ++ + # + # The following modules are all pretty straightforward, and compile + # on pretty much any POSIXish platform. diff --git a/yocto-poky/meta/recipes-devtools/python/python/03-fix-tkinter-detection.patch b/yocto-poky/meta/recipes-devtools/python/python/03-fix-tkinter-detection.patch new file mode 100644 index 000000000..650ceb595 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python/03-fix-tkinter-detection.patch @@ -0,0 +1,46 @@ +Upstream-Status: Inappropriate [embedded specific] + +We need to supply STAGING_INCDIR here, otherwise the Tk headers +will not be found. + +Signed-off-by: Michael 'Mickey' Lauer <mickey@vanille.de> +Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> + +Rebased for python-2.7.9 + +diff --git a/setup.py b/setup.py +index 8fe1fb8..67eda74 100644 +--- a/setup.py ++++ b/setup.py +@@ -1892,7 +1892,7 @@ class PyBuildExt(build_ext): + dotversion = dotversion[:-1] + '.' + dotversion[-1] + tcl_include_sub = [] + tk_include_sub = [] +- for dir in inc_dirs: ++ for dir in [os.getenv("STAGING_INCDIR")]: + tcl_include_sub += [dir + os.sep + "tcl" + dotversion] + tk_include_sub += [dir + os.sep + "tk" + dotversion] + tk_include_sub += tcl_include_sub +@@ -1911,22 +1911,6 @@ class PyBuildExt(build_ext): + if dir not in include_dirs: + include_dirs.append(dir) + +- # Check for various platform-specific directories +- if host_platform == 'sunos5': +- include_dirs.append('/usr/openwin/include') +- added_lib_dirs.append('/usr/openwin/lib') +- elif os.path.exists('/usr/X11R6/include'): +- include_dirs.append('/usr/X11R6/include') +- added_lib_dirs.append('/usr/X11R6/lib64') +- added_lib_dirs.append('/usr/X11R6/lib') +- elif os.path.exists('/usr/X11R5/include'): +- include_dirs.append('/usr/X11R5/include') +- added_lib_dirs.append('/usr/X11R5/lib') +- else: +- # Assume default location for X11 +- include_dirs.append('/usr/X11/include') +- added_lib_dirs.append('/usr/X11/lib') +- + # If Cygwin, then verify that X is installed before proceeding + if host_platform == 'cygwin': + x11_inc = find_file('X11/Xlib.h', [], include_dirs) diff --git a/yocto-poky/meta/recipes-devtools/python/python/05-enable-ctypes-cross-build.patch b/yocto-poky/meta/recipes-devtools/python/python/05-enable-ctypes-cross-build.patch new file mode 100644 index 000000000..5cc874246 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python/05-enable-ctypes-cross-build.patch @@ -0,0 +1,27 @@ +Rebased for python 2.7.9 + +Upstream-Status: Inappropriate [embedded specific] + +# CTypes need to know the actual host we are building on. +# Signed-Off: Michael Dietrich <mdt@emdete.de> + +Index: Python-2.7.9/setup.py +=================================================================== +--- Python-2.7.9.orig/setup.py ++++ Python-2.7.9/setup.py +@@ -2028,12 +2028,12 @@ class PyBuildExt(build_ext): + + # Pass empty CFLAGS because we'll just append the resulting + # CFLAGS to Python's; -g or -O2 is to be avoided. +- cmd = "cd %s && env CFLAGS='' '%s/configure' %s" \ +- % (ffi_builddir, ffi_srcdir, " ".join(config_args)) ++ cmd = "(cd %s && autoconf -W cross) && (cd %s && env CFLAGS='' '%s/configure' %s)" \ ++ % (ffi_srcdir, ffi_builddir, ffi_srcdir, " ".join(config_args)) + + res = os.system(cmd) + if res or not os.path.exists(ffi_configfile): +- print "Failed to configure _ctypes module" ++ print "Failed to configure _ctypes module (res=%d) or missing conffile=%s" % ( res, ffi_configfile ) + return False + + fficonfig = {} diff --git a/yocto-poky/meta/recipes-devtools/python/python/06-avoid_usr_lib_termcap_path_in_linking.patch b/yocto-poky/meta/recipes-devtools/python/python/06-avoid_usr_lib_termcap_path_in_linking.patch new file mode 100644 index 000000000..e452cb6ac --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python/06-avoid_usr_lib_termcap_path_in_linking.patch @@ -0,0 +1,35 @@ +Upstream-Status: Pending + +The poison directories patch has detected library path issue while +compiling the python in cross environment, as seen bellow. + +warning: library search path "/usr/lib/termcap" is unsafe for cross-compilation + +This Patch fixes this issue in the python build environment. +11 Oct 2010 +Nitin A Kamble <nitin.a.kamble@intel.com> + +2011/09/29 +Rebased for python 2.7.2 +Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com> + +Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> + +diff --git a/setup.py b/setup.py +index 67eda74..59c537e 100644 +--- a/setup.py ++++ b/setup.py +@@ -761,12 +761,10 @@ class PyBuildExt(build_ext): + pass # Issue 7384: Already linked against curses or tinfo. + elif curses_library: + readline_libs.append(curses_library) +- elif self.compiler.find_library_file(lib_dirs + +- ['/usr/lib/termcap'], ++ elif self.compiler.find_library_file(lib_dirs, + 'termcap'): + readline_libs.append('termcap') + exts.append( Extension('readline', ['readline.c'], +- library_dirs=['/usr/lib/termcap'], + extra_link_args=readline_extra_link_args, + libraries=readline_libs) ) + else: diff --git a/yocto-poky/meta/recipes-devtools/python/python/add-md5module-support.patch b/yocto-poky/meta/recipes-devtools/python/python/add-md5module-support.patch new file mode 100644 index 000000000..33fea7755 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python/add-md5module-support.patch @@ -0,0 +1,18 @@ + +Upstream-Status: Inappropriate [configuration] + +Signed-off-by: Saul Wold <sgw@linux.intel.com> + +Index: Python-2.7.2/Modules/Setup.dist +=================================================================== +--- Python-2.7.2.orig/Modules/Setup.dist 2011-06-11 08:46:26.000000000 -0700 ++++ Python-2.7.2/Modules/Setup.dist 2011-12-27 15:51:41.244623219 -0800 +@@ -248,7 +248,7 @@ + # Message-Digest Algorithm, described in RFC 1321. The necessary files + # md5.c and md5.h are included here. + +-#_md5 md5module.c md5.c ++_md5 md5module.c md5.c + + + # The _sha module implements the SHA checksum algorithms. diff --git a/yocto-poky/meta/recipes-devtools/python/python/avoid_parallel_make_races_on_pgen.patch b/yocto-poky/meta/recipes-devtools/python/python/avoid_parallel_make_races_on_pgen.patch new file mode 100644 index 000000000..e9bae324f --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python/avoid_parallel_make_races_on_pgen.patch @@ -0,0 +1,27 @@ +Upstream-Status: Pending + +Avoids parallel make races linking errors when making Parser/PGEN + +- Implements Richard Purdie's idea + +Signed-Off-By: Richard Purdie <richard.purdie@linuxfoundation.org> +Signed-Off-By: Alejandro Hernandez <alejandro.hernandez@linux.intel.com> + +Index: Python-2.7.9/Makefile.pre.in +=================================================================== +--- Python-2.7.9.orig/Makefile.pre.in ++++ Python-2.7.9/Makefile.pre.in +@@ -611,12 +611,10 @@ Modules/grpmodule.o: $(srcdir)/Modules/g + + Modules/pwdmodule.o: $(srcdir)/Modules/pwdmodule.c $(srcdir)/Modules/posixmodule.h + +-$(GRAMMAR_H): $(GRAMMAR_INPUT) $(PGENSRCS) ++$(GRAMMAR_H): $(GRAMMAR_INPUT) $(PGENSRCS) $(PGEN) + @$(MKDIR_P) Include +- $(MAKE) $(PGEN) + $(HOSTPGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C) + $(GRAMMAR_C): $(GRAMMAR_H) $(GRAMMAR_INPUT) $(PGENSRCS) +- $(MAKE) $(GRAMMAR_H) + touch $(GRAMMAR_C) + + $(PGEN): $(PGENOBJS) diff --git a/yocto-poky/meta/recipes-devtools/python/python/avoid_warning_about_tkinter.patch b/yocto-poky/meta/recipes-devtools/python/python/avoid_warning_about_tkinter.patch new file mode 100644 index 000000000..208c57c82 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python/avoid_warning_about_tkinter.patch @@ -0,0 +1,25 @@ +_tkinter module needs tk module along with tcl. tk is not yet integrated +in yocto so we skip the check for this module. +Avoid a warning by not adding this module to missing variable. + +Upstream-Status: Inappropriate [distribution] + +Signed-off-by: Andrei Gherzan <andrei@gherzan.ro> + +Index: Python-2.7.2/setup.py +=================================================================== +--- Python-2.7.2.orig/setup.py 2012-04-05 23:18:38.500136647 +0300 ++++ Python-2.7.2/setup.py 2012-04-05 23:19:35.888134969 +0300 +@@ -1634,8 +1634,10 @@ + # Call the method for detecting whether _tkinter can be compiled + self.detect_tkinter(inc_dirs, lib_dirs) + +- if '_tkinter' not in [e.name for e in self.extensions]: +- missing.append('_tkinter') ++ # tkinter module will not be avalaible as yocto ++ # doesn't have tk integrated (yet) ++ #if '_tkinter' not in [e.name for e in self.extensions]: ++ # missing.append('_tkinter') + + return missing + diff --git a/yocto-poky/meta/recipes-devtools/python/python/avoid_warning_for_sunos_specific_module.patch b/yocto-poky/meta/recipes-devtools/python/python/avoid_warning_for_sunos_specific_module.patch new file mode 100644 index 000000000..337e0e3e2 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python/avoid_warning_for_sunos_specific_module.patch @@ -0,0 +1,23 @@ +sunaudiodev module is sunos specific so we avoid a warning by not +adding this module to missing variable. + +Upstream-Status: Inappropriate [distribution] + +Signed-off-by: Andrei Gherzan <andrei@gherzan.ro> + +Index: Python-2.7.2/setup.py +=================================================================== +--- Python-2.7.2.orig/setup.py 2012-04-05 22:29:18.049196608 +0300 ++++ Python-2.7.2/setup.py 2012-04-05 22:29:57.505195453 +0300 +@@ -1522,8 +1522,9 @@ + if platform == 'sunos5': + # SunOS specific modules + exts.append( Extension('sunaudiodev', ['sunaudiodev.c']) ) +- else: +- missing.append('sunaudiodev') ++ # If platform is not sunos warning is useless ++ #else: ++ # missing.append('sunaudiodev') + + if platform == 'darwin': + # _scproxy diff --git a/yocto-poky/meta/recipes-devtools/python/python/builddir.patch b/yocto-poky/meta/recipes-devtools/python/python/builddir.patch new file mode 100644 index 000000000..ad629a022 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python/builddir.patch @@ -0,0 +1,46 @@ +When cross compiling python, we used to need to install the Makefile, pyconfig.h +and the python library to their final location before being able to compile the +rest of python. This change allows us to point python at its own source when +building, avoiding a variety of sysroot staging issues and simplifying the main +python recipe. + +Upstream-Status: Inappropriate +RP 2012/11/13 + +Index: Python-2.7.9/Lib/sysconfig.py +=================================================================== +--- Python-2.7.9.orig/Lib/sysconfig.py ++++ Python-2.7.9/Lib/sysconfig.py +@@ -93,6 +93,7 @@ _PREFIX = os.path.normpath(sys.prefix) + _EXEC_PREFIX = os.path.normpath(sys.exec_prefix) + _CONFIG_VARS = None + _USER_BASE = None ++_PYTHONBUILDDIR = os.environ.get("PYTHONBUILDDIR", None) + + def _safe_realpath(path): + try: +@@ -100,7 +101,9 @@ def _safe_realpath(path): + except OSError: + return path + +-if sys.executable: ++if _PYTHONBUILDDIR: ++ _PROJECT_BASE = _PYTHONBUILDDIR ++elif sys.executable: + _PROJECT_BASE = os.path.dirname(_safe_realpath(sys.executable)) + else: + # sys.executable can be empty if argv[0] has been changed and Python is +Index: Python-2.7.9/Lib/distutils/sysconfig.py +=================================================================== +--- Python-2.7.9.orig/Lib/distutils/sysconfig.py ++++ Python-2.7.9/Lib/distutils/sysconfig.py +@@ -26,6 +26,9 @@ EXEC_PREFIX = os.path.normpath(sys.exec_ + # live in project/PCBuild9. If we're dealing with an x64 Windows build, + # it'll live in project/PCbuild/amd64. + project_base = os.path.dirname(os.path.abspath(sys.executable)) ++_PYTHONBUILDDIR = os.environ.get("PYTHONBUILDDIR", None) ++if _PYTHONBUILDDIR: ++ project_base = _PYTHONBUILDDIR + if os.name == "nt" and "pcbuild" in project_base[-8:].lower(): + project_base = os.path.abspath(os.path.join(project_base, os.path.pardir)) + # PC/VS7.1 diff --git a/yocto-poky/meta/recipes-devtools/python/python/cgi_py.patch b/yocto-poky/meta/recipes-devtools/python/python/cgi_py.patch new file mode 100644 index 000000000..de504f9dc --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python/cgi_py.patch @@ -0,0 +1,23 @@ +Lib/cgi.py: Update the script as mentioned in the comment + +Upstream-Status: Inappropriate [distribution] + +Signed-off-by: Mark Hatle <mark.hatle@windriver.com> + +--- Python-2.6.6/Lib/cgi.py.orig 2010-08-01 22:14:27.000000000 -0500 ++++ Python-2.6.6/Lib/cgi.py 2011-09-21 15:28:40.478208631 -0500 +@@ -1,13 +1,4 @@ +-#! /usr/local/bin/python +- +-# NOTE: the above "/usr/local/bin/python" is NOT a mistake. It is +-# intentionally NOT "/usr/bin/env python". On many systems +-# (e.g. Solaris), /usr/local/bin is not in $PATH as passed to CGI +-# scripts, and /usr/local/bin is the default directory where Python is +-# installed, so /usr/bin/env would be unable to find python. Granted, +-# binary installations by Linux vendors often install Python in +-# /usr/bin. So let those vendors patch cgi.py to match their choice +-# of installation. ++#! /usr/bin/env python + + """Support module for CGI (Common Gateway Interface) scripts. + diff --git a/yocto-poky/meta/recipes-devtools/python/python/check-if-target-is-64b-not-host.patch b/yocto-poky/meta/recipes-devtools/python/python/check-if-target-is-64b-not-host.patch new file mode 100644 index 000000000..2b62db382 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python/check-if-target-is-64b-not-host.patch @@ -0,0 +1,57 @@ +Author: Andrei Gherzan <andrei@gherzan.ro> +Date: Sun Mar 25 02:02:27 2012 +0200 + +This patch was added for 64bit host machines. In the compile process python +is checking if platform is a 64bit platform using sys.maxint which is the host's +value. The patch fixes this issue so that python would check if TARGET machine +is 64bit not the HOST machine. In this way will have "dl" and "imageop" modules +built if HOST machine is 64bit but the target machine is 32bit. + +Signed-off-by: Andrei Gherzan <andrei@gherzan.ro> + +Upstream-Status: Pending + +Index: Python-2.7.2/setup.py +=================================================================== +--- Python-2.7.2.orig/setup.py 2012-03-25 01:10:41.540163187 +0200 ++++ Python-2.7.2/setup.py 2012-03-25 01:26:06.092539990 +0200 +@@ -23,6 +23,21 @@ + # This global variable is used to hold the list of modules to be disabled. + disabled_module_list = [] + ++def target_is_64bit_platform (): ++ """ ++ In case of cross-compile, some modules are not build as setup checks if HOST ++ is 64bit and not TARGET. ++ As python was built for TARGET we can check this in pyconfig.h in this way: ++ Sizeof LONG on a 32 bit platform is 4 bytes ++ Sizeof LONG on a 64 bit platform is 8 bytes ++ """ ++ pyconf = open("pyconfig.h").read() ++ aux = re.search(r"#s*define\s+SIZEOF_LONG\s+8\s*", pyconf) ++ if aux is not None: ++ return True ++ else: ++ return False ++ + def add_dir_to_list(dirlist, dir): + """Add the directory 'dir' to the list 'dirlist' (at the front) if + 1) 'dir' is not already in 'dirlist' +@@ -628,7 +643,7 @@ + exts.append( Extension('audioop', ['audioop.c']) ) + + # Disabled on 64-bit platforms +- if sys.maxint != 9223372036854775807L: ++ if not target_is_64bit_platform(): + # Operations on images + exts.append( Extension('imageop', ['imageop.c']) ) + else: +@@ -1418,7 +1433,7 @@ + missing.append('_codecs_%s' % loc) + + # Dynamic loading module +- if sys.maxint == 0x7fffffff: ++ if not target_is_64bit_platform(): + # This requires sizeof(int) == sizeof(long) == sizeof(char*) + dl_inc = find_file('dlfcn.h', [], inc_dirs) + if (dl_inc is not None) and (platform not in ['atheos']): diff --git a/yocto-poky/meta/recipes-devtools/python/python/fix-makefile-for-ptest.patch b/yocto-poky/meta/recipes-devtools/python/python/fix-makefile-for-ptest.patch new file mode 100644 index 000000000..669112dab --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python/fix-makefile-for-ptest.patch @@ -0,0 +1,33 @@ +Add 'build-test' and 'runtest-TESTS' targets to Makefile, to build and run tests +cross-compiled. + +Signed-off-by: Tudor Florea <tudor.florea@enea.com> +Upstream-Status: Pending +--- +diff -ruN a/Makefile.pre.in b/Makefile.pre.in +--- a/Makefile.pre.in 2013-06-27 10:44:11.033840532 +0200 ++++ b/Makefile.pre.in 2013-06-27 10:44:39.572635273 +0200 +@@ -709,14 +709,19 @@ + # generated bytecode. This is sometimes a very shy bug needing a lot of + # sample data. + +-TESTOPTS= -l $(EXTRATESTOPTS) ++TESTOPTS= -l -v $(EXTRATESTOPTS) + TESTPROG= $(srcdir)/Lib/test/regrtest.py +-TESTPYTHON= $(RUNSHARED) ./$(BUILDPYTHON) -Wd -3 -E -tt $(TESTPYTHONOPTS) +-test: all platform +- -find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f ++TESTPYTHON= $(RUNSHARED) $(BUILDPYTHON) -Wd -3 -E -tt $(TESTPYTHONOPTS) ++test: build-test ++ $(MAKE) runtest-TESTS ++ ++runtest-TESTS: ++ -find $(srcdir) -name '*.py[co]' -print | xargs rm -f + -$(TESTPYTHON) $(TESTPROG) $(TESTOPTS) + $(TESTPYTHON) $(TESTPROG) $(TESTOPTS) + ++build-test: all platform ++ + testall: all platform + -find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f + $(TESTPYTHON) $(srcdir)/Lib/compileall.py diff --git a/yocto-poky/meta/recipes-devtools/python/python/fix_for_using_different_libdir.patch b/yocto-poky/meta/recipes-devtools/python/python/fix_for_using_different_libdir.patch new file mode 100644 index 000000000..e4262d9ef --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python/fix_for_using_different_libdir.patch @@ -0,0 +1,77 @@ +Upstream-Status: Inappropriate [Embedded specific] + +This patch fixes issuing with different libdir like lib64. +This patch makes the native python binary modules findable +in the install process of the host python. + +Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com> +Date: 2012/03/14 + +Updated for python 2.7.3 +Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com> +Date: 2012/05/01 + +Rebased for python-2.7.9 +Signed-Off-By: Alejandro Hernandez <alejandro.hernandez@linux.intel.com> + + +Index: Python-2.7.9/Lib/sysconfig.py +=================================================================== +--- Python-2.7.9.orig/Lib/sysconfig.py ++++ Python-2.7.9/Lib/sysconfig.py +@@ -9,7 +9,7 @@ _INSTALL_SCHEMES = { + 'posix_prefix': { + 'stdlib': '{base}/'+sys.lib+'/python{py_version_short}', + 'platstdlib': '{platbase}/'+sys.lib+'/python{py_version_short}', +- 'purelib': '{base}/lib/python{py_version_short}/site-packages', ++ 'purelib': '{base}/'+sys.lib+'/python{py_version_short}/site-packages', + 'platlib': '{platbase}/'+sys.lib+'/python{py_version_short}/site-packages', + 'include': '{base}/include/python{py_version_short}', + 'platinclude': '{platbase}/include/python{py_version_short}', +@@ -67,7 +67,7 @@ _INSTALL_SCHEMES = { + 'posix_user': { + 'stdlib': '{userbase}/'+sys.lib+'/python{py_version_short}', + 'platstdlib': '{userbase}/'+sys.lib+'/python{py_version_short}', +- 'purelib': '{userbase}/lib/python{py_version_short}/site-packages', ++ 'purelib': '{userbase}/'+sys.lib+'/python{py_version_short}/site-packages', + 'platlib': '{userbase}/'+sys.lib+'/python{py_version_short}/site-packages', + 'include': '{userbase}/include/python{py_version_short}', + 'scripts': '{userbase}/bin', +Index: Python-2.7.9/Makefile.pre.in +=================================================================== +--- Python-2.7.9.orig/Makefile.pre.in ++++ Python-2.7.9/Makefile.pre.in +@@ -1046,27 +1046,27 @@ libinstall: build_all $(srcdir)/Lib/$(PL + $(INSTALL_DATA) $(srcdir)/Modules/xxmodule.c \ + $(DESTDIR)$(LIBDEST)/distutils/tests ; \ + fi +- PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ ++ PYTHONPATH=$(DESTDIR)$(LIBDEST):${CROSSPYTHONPATH} $(RUNSHARED) \ + $(HOSTPYTHON) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \ + -d $(LIBDEST) -f \ + -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \ + $(DESTDIR)$(LIBDEST) +- PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ ++ PYTHONPATH=$(DESTDIR)$(LIBDEST):${CROSSPYTHONPATH}$(RUNSHARED) \ + $(HOSTPYTHON) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \ + -d $(LIBDEST) -f \ + -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \ + $(DESTDIR)$(LIBDEST) +- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ ++ -PYTHONPATH=$(DESTDIR)$(LIBDEST):${CROSSPYTHONPATH} $(RUNSHARED) \ + $(HOSTPYTHON) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \ + -d $(LIBDEST)/site-packages -f \ + -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages +- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ ++ -PYTHONPATH=$(DESTDIR)$(LIBDEST):${CROSSPYTHONPATH} $(RUNSHARED) \ + $(HOSTPYTHON) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \ + -d $(LIBDEST)/site-packages -f \ + -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages +- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ ++ -PYTHONPATH=$(DESTDIR)$(LIBDEST):${CROSSPYTHONPATH} $(RUNSHARED) \ + $(HOSTPYTHON) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt +- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ ++ -PYTHONPATH=$(DESTDIR)$(LIBDEST):${CROSSPYTHONPATH} $(RUNSHARED) \ + $(HOSTPYTHON) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/PatternGrammar.txt + + # Create the PLATDIR source directory, if one wasn't distributed.. diff --git a/yocto-poky/meta/recipes-devtools/python/python/host_include_contamination.patch b/yocto-poky/meta/recipes-devtools/python/python/host_include_contamination.patch new file mode 100644 index 000000000..e0aafb218 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python/host_include_contamination.patch @@ -0,0 +1,28 @@ +when building python for qemux86-64 on ubuntu 11.10/64bit +it gropes into host includes and then mixes them with cross +includes and as a result some modules fail to compile and link +one of the modules is python-elementtree which is then not +found during image creation + +Proble is that setup.py tries to add native includes that newer +ubuntu has introduced for multiarch support. But that should +only happen for native builds and not cross building python +so we add a check here. + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +Upstream-Status: Pending + + +diff --git a/setup.py b/setup.py +index ba2d242..bf859be 100644 +--- a/setup.py ++++ b/setup.py +@@ -393,6 +393,8 @@ class PyBuildExt(build_ext): + + if not find_executable('dpkg-architecture'): + return ++ if os.environ.get('CROSS_COMPILE') is not None: ++ return + opt = '' + if cross_compiling: + opt = '-t' + sysconfig.get_config_var('HOST_GNU_TYPE') diff --git a/yocto-poky/meta/recipes-devtools/python/python/multilib.patch b/yocto-poky/meta/recipes-devtools/python/python/multilib.patch new file mode 100644 index 000000000..0bfa0d2cf --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python/multilib.patch @@ -0,0 +1,296 @@ +Rebased for python-2.7.9 +Signed-Off-By: Alejandro Hernandez <alejandro.hernandez@linux.intel.com> + +Index: Python-2.7.9/configure.ac +=================================================================== +--- Python-2.7.9.orig/configure.ac ++++ Python-2.7.9/configure.ac +@@ -736,6 +736,10 @@ SunOS*) + ;; + esac + ++AC_SUBST(LIB) ++AC_MSG_CHECKING(LIB) ++LIB=`basename ${libdir}` ++AC_MSG_RESULT($LIB) + + AC_SUBST(LIBRARY) + AC_MSG_CHECKING(LIBRARY) +Index: Python-2.7.9/Include/pythonrun.h +=================================================================== +--- Python-2.7.9.orig/Include/pythonrun.h ++++ Python-2.7.9/Include/pythonrun.h +@@ -108,6 +108,7 @@ PyAPI_FUNC(char *) Py_GetPath(void); + /* In their own files */ + PyAPI_FUNC(const char *) Py_GetVersion(void); + PyAPI_FUNC(const char *) Py_GetPlatform(void); ++PyAPI_FUNC(const char *) Py_GetLib(void); + PyAPI_FUNC(const char *) Py_GetCopyright(void); + PyAPI_FUNC(const char *) Py_GetCompiler(void); + PyAPI_FUNC(const char *) Py_GetBuildInfo(void); +Index: Python-2.7.9/Lib/distutils/command/install.py +=================================================================== +--- Python-2.7.9.orig/Lib/distutils/command/install.py ++++ Python-2.7.9/Lib/distutils/command/install.py +@@ -22,6 +22,8 @@ from site import USER_BASE + from site import USER_SITE + + ++libname = sys.lib ++ + if sys.version < "2.2": + WINDOWS_SCHEME = { + 'purelib': '$base', +@@ -42,7 +44,7 @@ else: + INSTALL_SCHEMES = { + 'unix_prefix': { + 'purelib': '$base/lib/python$py_version_short/site-packages', +- 'platlib': '$platbase/lib/python$py_version_short/site-packages', ++ 'platlib': '$platbase/'+libname+'/python$py_version_short/site-packages', + 'headers': '$base/include/python$py_version_short/$dist_name', + 'scripts': '$base/bin', + 'data' : '$base', +Index: Python-2.7.9/Lib/distutils/sysconfig.py +=================================================================== +--- Python-2.7.9.orig/Lib/distutils/sysconfig.py ++++ Python-2.7.9/Lib/distutils/sysconfig.py +@@ -119,8 +119,11 @@ def get_python_lib(plat_specific=0, stan + prefix = plat_specific and EXEC_PREFIX or PREFIX + + if os.name == "posix": +- libpython = os.path.join(prefix, +- "lib", "python" + get_python_version()) ++ if plat_specific or standard_lib: ++ lib = sys.lib ++ else: ++ lib = "lib" ++ libpython = os.path.join(prefix, lib, "python" + get_python_version()) + if standard_lib: + return libpython + else: +Index: Python-2.7.9/Lib/pydoc.py +=================================================================== +--- Python-2.7.9.orig/Lib/pydoc.py ++++ Python-2.7.9/Lib/pydoc.py +@@ -383,7 +383,7 @@ class Doc: + + docloc = os.environ.get("PYTHONDOCS", + "http://docs.python.org/library") +- basedir = os.path.join(sys.exec_prefix, "lib", ++ basedir = os.path.join(sys.exec_prefix, sys.lib, + "python"+sys.version[0:3]) + if (isinstance(object, type(os)) and + (object.__name__ in ('errno', 'exceptions', 'gc', 'imp', +Index: Python-2.7.9/Lib/site.py +=================================================================== +--- Python-2.7.9.orig/Lib/site.py ++++ Python-2.7.9/Lib/site.py +@@ -288,13 +288,18 @@ def getsitepackages(): + if sys.platform in ('os2emx', 'riscos'): + sitepackages.append(os.path.join(prefix, "Lib", "site-packages")) + elif os.sep == '/': +- sitepackages.append(os.path.join(prefix, "lib", ++ sitepackages.append(os.path.join(prefix, sys.lib, + "python" + sys.version[:3], + "site-packages")) +- sitepackages.append(os.path.join(prefix, "lib", "site-python")) ++ sitepackages.append(os.path.join(prefix, sys.lib, "site-python")) ++ if sys.lib != "lib": ++ sitepackages.append(os.path.join(prefix, "lib", ++ "python" + sys.version[:3], ++ "site-packages")) ++ sitepackages.append(os.path.join(prefix, "lib", "site-python")) + else: + sitepackages.append(prefix) +- sitepackages.append(os.path.join(prefix, "lib", "site-packages")) ++ sitepackages.append(os.path.join(prefix, sys.lib, "site-packages")) + if sys.platform == "darwin": + # for framework builds *only* we add the standard Apple + # locations. +Index: Python-2.7.9/Lib/sysconfig.py +=================================================================== +--- Python-2.7.9.orig/Lib/sysconfig.py ++++ Python-2.7.9/Lib/sysconfig.py +@@ -7,10 +7,10 @@ from os.path import pardir, realpath + + _INSTALL_SCHEMES = { + 'posix_prefix': { +- 'stdlib': '{base}/lib/python{py_version_short}', +- 'platstdlib': '{platbase}/lib/python{py_version_short}', ++ 'stdlib': '{base}/'+sys.lib+'/python{py_version_short}', ++ 'platstdlib': '{platbase}/'+sys.lib+'/python{py_version_short}', + 'purelib': '{base}/lib/python{py_version_short}/site-packages', +- 'platlib': '{platbase}/lib/python{py_version_short}/site-packages', ++ 'platlib': '{platbase}/'+sys.lib+'/python{py_version_short}/site-packages', + 'include': '{base}/include/python{py_version_short}', + 'platinclude': '{platbase}/include/python{py_version_short}', + 'scripts': '{base}/bin', +@@ -65,10 +65,10 @@ _INSTALL_SCHEMES = { + 'data' : '{userbase}', + }, + 'posix_user': { +- 'stdlib': '{userbase}/lib/python{py_version_short}', +- 'platstdlib': '{userbase}/lib/python{py_version_short}', ++ 'stdlib': '{userbase}/'+sys.lib+'/python{py_version_short}', ++ 'platstdlib': '{userbase}/'+sys.lib+'/python{py_version_short}', + 'purelib': '{userbase}/lib/python{py_version_short}/site-packages', +- 'platlib': '{userbase}/lib/python{py_version_short}/site-packages', ++ 'platlib': '{userbase}/'+sys.lib+'/python{py_version_short}/site-packages', + 'include': '{userbase}/include/python{py_version_short}', + 'scripts': '{userbase}/bin', + 'data' : '{userbase}', +Index: Python-2.7.9/Lib/test/test_dl.py +=================================================================== +--- Python-2.7.9.orig/Lib/test/test_dl.py ++++ Python-2.7.9/Lib/test/test_dl.py +@@ -4,10 +4,11 @@ + import unittest + from test.test_support import verbose, import_module + dl = import_module('dl', deprecated=True) ++import sys + + sharedlibs = [ +- ('/usr/lib/libc.so', 'getpid'), +- ('/lib/libc.so.6', 'getpid'), ++ ('/usr/'+sys.lib+'/libc.so', 'getpid'), ++ ('/'+sys.lib+'/libc.so.6', 'getpid'), + ('/usr/bin/cygwin1.dll', 'getpid'), + ('/usr/lib/libc.dylib', 'getpid'), + ] +Index: Python-2.7.9/Lib/test/test_site.py +=================================================================== +--- Python-2.7.9.orig/Lib/test/test_site.py ++++ Python-2.7.9/Lib/test/test_site.py +@@ -241,12 +241,16 @@ class HelperFunctionsTests(unittest.Test + self.assertEqual(dirs[2], wanted) + elif os.sep == '/': + # OS X non-framwework builds, Linux, FreeBSD, etc +- self.assertEqual(len(dirs), 2) + wanted = os.path.join('xoxo', 'lib', 'python' + sys.version[:3], + 'site-packages') +- self.assertEqual(dirs[0], wanted) ++ self.assertTrue(wanted in dirs) + wanted = os.path.join('xoxo', 'lib', 'site-python') +- self.assertEqual(dirs[1], wanted) ++ self.assertTrue(wanted in dirs) ++ wanted = os.path.join('xoxo', sys.lib, 'python' + sys.version[:3], ++ 'site-packages') ++ self.assertTrue(wanted in dirs) ++ wanted = os.path.join('xoxo', sys.lib, 'site-python') ++ self.assertTrue(wanted in dirs) + else: + # other platforms + self.assertEqual(len(dirs), 2) +Index: Python-2.7.9/Lib/trace.py +=================================================================== +--- Python-2.7.9.orig/Lib/trace.py ++++ Python-2.7.9/Lib/trace.py +@@ -754,10 +754,10 @@ def main(argv=None): + # should I also call expanduser? (after all, could use $HOME) + + s = s.replace("$prefix", +- os.path.join(sys.prefix, "lib", ++ os.path.join(sys.prefix, sys.lib, + "python" + sys.version[:3])) + s = s.replace("$exec_prefix", +- os.path.join(sys.exec_prefix, "lib", ++ os.path.join(sys.exec_prefix, sys.lib, + "python" + sys.version[:3])) + s = os.path.normpath(s) + ignore_dirs.append(s) +Index: Python-2.7.9/Makefile.pre.in +=================================================================== +--- Python-2.7.9.orig/Makefile.pre.in ++++ Python-2.7.9/Makefile.pre.in +@@ -87,6 +87,7 @@ PY_CFLAGS= $(CFLAGS) $(CPPFLAGS) $(CFLAG + + # Machine-dependent subdirectories + MACHDEP= @MACHDEP@ ++LIB= @LIB@ + + # Multiarch directory (may be empty) + MULTIARCH= @MULTIARCH@ +@@ -106,7 +107,7 @@ LIBDIR= @libdir@ + MANDIR= @mandir@ + INCLUDEDIR= @includedir@ + CONFINCLUDEDIR= $(exec_prefix)/include +-SCRIPTDIR= $(prefix)/lib ++SCRIPTDIR= $(prefix)/@LIB@ + + # Detailed destination directories + BINLIBDEST= $(LIBDIR)/python$(VERSION) +@@ -598,6 +599,7 @@ Modules/getpath.o: $(srcdir)/Modules/get + -DEXEC_PREFIX='"$(exec_prefix)"' \ + -DVERSION='"$(VERSION)"' \ + -DVPATH='"$(VPATH)"' \ ++ -DLIB='"$(LIB)"' \ + -o $@ $(srcdir)/Modules/getpath.c + + Modules/python.o: $(srcdir)/Modules/python.c +@@ -640,7 +642,7 @@ $(AST_C): $(AST_ASDL) $(ASDLGEN_FILES) + Python/compile.o Python/symtable.o Python/ast.o: $(GRAMMAR_H) $(AST_H) + + Python/getplatform.o: $(srcdir)/Python/getplatform.c +- $(CC) -c $(PY_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -o $@ $(srcdir)/Python/getplatform.c ++ $(CC) -c $(PY_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -DLIB='"$(LIB)"' -o $@ $(srcdir)/Python/getplatform.c + + Python/importdl.o: $(srcdir)/Python/importdl.c + $(CC) -c $(PY_CFLAGS) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.c +Index: Python-2.7.9/Modules/getpath.c +=================================================================== +--- Python-2.7.9.orig/Modules/getpath.c ++++ Python-2.7.9/Modules/getpath.c +@@ -116,9 +116,11 @@ + #define EXEC_PREFIX PREFIX + #endif + ++#define LIB_PYTHON LIB "/python" VERSION ++ + #ifndef PYTHONPATH +-#define PYTHONPATH PREFIX "/lib/python" VERSION ":" \ +- EXEC_PREFIX "/lib/python" VERSION "/lib-dynload" ++#define PYTHONPATH PREFIX "/" LIB_PYTHON ":" \ ++ EXEC_PREFIX "/" LIB_PYTHON "/lib-dynload" + #endif + + #ifndef LANDMARK +@@ -129,7 +131,7 @@ static char prefix[MAXPATHLEN+1]; + static char exec_prefix[MAXPATHLEN+1]; + static char progpath[MAXPATHLEN+1]; + static char *module_search_path = NULL; +-static char lib_python[] = "lib/python" VERSION; ++static char lib_python[] = LIB_PYTHON; + + static void + reduce(char *dir) +Index: Python-2.7.9/Python/getplatform.c +=================================================================== +--- Python-2.7.9.orig/Python/getplatform.c ++++ Python-2.7.9/Python/getplatform.c +@@ -10,3 +10,13 @@ Py_GetPlatform(void) + { + return PLATFORM; + } ++ ++#ifndef LIB ++#define LIB "lib" ++#endif ++ ++const char * ++Py_GetLib(void) ++{ ++ return LIB; ++} +Index: Python-2.7.9/Python/sysmodule.c +=================================================================== +--- Python-2.7.9.orig/Python/sysmodule.c ++++ Python-2.7.9/Python/sysmodule.c +@@ -1437,6 +1437,8 @@ _PySys_Init(void) + PyString_FromString(Py_GetCopyright())); + SET_SYS_FROM_STRING("platform", + PyString_FromString(Py_GetPlatform())); ++ SET_SYS_FROM_STRING("lib", ++ PyString_FromString(Py_GetLib())); + SET_SYS_FROM_STRING("executable", + PyString_FromString(Py_GetProgramFullPath())); + SET_SYS_FROM_STRING("prefix", diff --git a/yocto-poky/meta/recipes-devtools/python/python/parallel-makeinst-create-bindir.patch b/yocto-poky/meta/recipes-devtools/python/python/parallel-makeinst-create-bindir.patch new file mode 100644 index 000000000..951cb466f --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python/parallel-makeinst-create-bindir.patch @@ -0,0 +1,19 @@ +When using make -j with the 'install' target, it's possible for altbininstall +(which normally creates BINDIR) and libainstall (which doesn't, though it +installs python-config there) to race, resulting in a failure due to +attempting to install python-config into a nonexistent BINDIR. Ensure it also +exists in the libainstall target. + +Upstream-Status: Pending + +--- Python-2.7.3.orig/Makefile.pre.in ++++ Python-2.7.3/Makefile.pre.in +@@ -1008,7 +1008,7 @@ LIBPL= $(LIBP)/config + LIBPC= $(LIBDIR)/pkgconfig + + libainstall: all python-config +- @for i in $(LIBDIR) $(LIBP) $(LIBPL) $(LIBPC); \ ++ @for i in $(LIBDIR) $(LIBP) $(LIBPL) $(LIBPC) $(BINDIR); \ + do \ + if test ! -d $(DESTDIR)$$i; then \ + echo "Creating directory $$i"; \ diff --git a/yocto-poky/meta/recipes-devtools/python/python/python-2.7.3-remove-bsdb-rpath.patch b/yocto-poky/meta/recipes-devtools/python/python/python-2.7.3-remove-bsdb-rpath.patch new file mode 100644 index 000000000..216be0a44 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python/python-2.7.3-remove-bsdb-rpath.patch @@ -0,0 +1,28 @@ +Upstream-Status: Inappropriate [embedded specific] + +Remove the RPATH to avoid QA issue warning. + +RP: Added secondary unnecessary rpath to the list 2012/8/7 +Signed-off-by: Jackie Huang <jackie.huang@windriver.com> + + +Index: Python-2.7.3/setup.py +=================================================================== +--- Python-2.7.3.orig/setup.py 2012-08-07 10:41:58.560132529 +0000 ++++ Python-2.7.3/setup.py 2012-08-07 11:09:47.852094515 +0000 +@@ -1042,7 +1042,6 @@ + exts.append(Extension('_bsddb', ['_bsddb.c'], + depends = ['bsddb.h'], + library_dirs=dblib_dir, +- runtime_library_dirs=dblib_dir, + include_dirs=db_incs, + libraries=dblibs)) + else: +@@ -1252,7 +1251,6 @@ + print "building dbm using bdb" + dbmext = Extension('dbm', ['dbmmodule.c'], + library_dirs=dblib_dir, +- runtime_library_dirs=dblib_dir, + include_dirs=db_incs, + define_macros=[ + ('HAVE_BERKDB_H', None), diff --git a/yocto-poky/meta/recipes-devtools/python/python/run-ptest b/yocto-poky/meta/recipes-devtools/python/python/run-ptest new file mode 100644 index 000000000..a2f9eed44 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python/run-ptest @@ -0,0 +1,5 @@ +#!/bin/sh +# +#This script is used to run python test suites + +make -f LIBDIR/python/ptest/Makefile -k runtest-TESTS srcdir=LIBDIR/python2.7 TESTPROG=LIBDIR/python2.7/test/regrtest.py | sed -e '/\.\.\. ok/ s/^/PASS: /g' -e '/\.\.\. [ERROR|FAIL]/ s/^/FAIL: /g' -e '/\.\.\. skipped/ s/^/SKIP: /g' -e 's/ \.\.\. ok//g' -e 's/ \.\.\. ERROR//g' -e 's/ \.\.\. FAIL//g' -e 's/ \.\.\. skipped//g' diff --git a/yocto-poky/meta/recipes-devtools/python/python/search_db_h_in_inc_dirs_and_avoid_warning.patch b/yocto-poky/meta/recipes-devtools/python/python/search_db_h_in_inc_dirs_and_avoid_warning.patch new file mode 100644 index 000000000..dacb552ec --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python/search_db_h_in_inc_dirs_and_avoid_warning.patch @@ -0,0 +1,35 @@ +python should search for db.h in inc_dirs and not in a hardcoded path. +If db.h is found but HASHVERSION is not 2 we avoid a warning by not +adding this module to missing variable. + +Upstream-Status: Inappropriate [distribution] + +Signed-off-by: Andrei Gherzan <andrei@gherzan.ro> + + +diff --git a/setup.py b/setup.py +index b887808..ae51607 100644 +--- a/setup.py ++++ b/setup.py +@@ -1237,6 +1237,8 @@ class PyBuildExt(build_ext): + # the more recent berkeleydb's db.h file first in the include path + # when attempting to compile and it will fail. + f = "/usr/include/db.h" ++ if len(inc_dirs) != 0: ++ f = os.path.join(inc_dirs[0], "db.h") + + if host_platform == 'darwin': + if is_macosx_sdk_path(f): +@@ -1257,8 +1259,10 @@ class PyBuildExt(build_ext): + libraries=libraries)) + else: + exts.append(Extension('bsddb185', ['bsddbmodule.c'])) +- else: +- missing.append('bsddb185') ++ # If a newer version is detected don't report an useless ++ # warning ++ #else: ++ # missing.append('bsddb185') + else: + missing.append('bsddb185') + diff --git a/yocto-poky/meta/recipes-devtools/python/python/setup_py_skip_cross_import_check.patch b/yocto-poky/meta/recipes-devtools/python/python/setup_py_skip_cross_import_check.patch new file mode 100644 index 000000000..6ccdb948b --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python/setup_py_skip_cross_import_check.patch @@ -0,0 +1,27 @@ +This patch skips over the 'import check' setup.py does when building +extensions. This generally won't work when cross-compiling. + +Upstream-Status: Inappropriate [embedded-specific] + +Signed-off-by: Tom Zanussi <tom.zanussi@intel.com> + +Index: Python-2.7.2/setup.py +=================================================================== +--- Python-2.7.2.orig/setup.py 2011-11-04 16:46:34.553796410 -0500 ++++ Python-2.7.2/setup.py 2011-11-04 16:59:49.692802313 -0500 +@@ -287,6 +287,15 @@ + (ext.name, sys.exc_info()[1])) + self.failed.append(ext.name) + return ++ ++ # If we're cross-compiling, we want to skip the import check ++ # i.e. we shouldn't be dynamically loading target shared libs ++ if os.environ.get('CROSS_COMPILE') is not None: ++ self.announce( ++ 'WARNING: skipping import check for cross-compiled "%s"' % ++ ext.name) ++ return ++ + # Workaround for Mac OS X: The Carbon-based modules cannot be + # reliably imported into a command-line Python + if 'Carbon' in ext.extra_link_args: diff --git a/yocto-poky/meta/recipes-devtools/python/python/setuptweaks.patch b/yocto-poky/meta/recipes-devtools/python/python/setuptweaks.patch new file mode 100644 index 000000000..3a91b1916 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python/setuptweaks.patch @@ -0,0 +1,57 @@ +This patch removes various ways native system options can pass into the python +compilation and somehow break C modules. + +Upstream-Status: Inappropriate [OE Specific] + +RP 2012/04/23 + +Index: Python-2.7.2/setup.py +=================================================================== +--- Python-2.7.2.orig/setup.py 2012-04-23 20:03:47.295582553 +0000 ++++ Python-2.7.2/setup.py 2012-04-23 20:03:15.000000000 +0000 +@@ -231,7 +231,13 @@ + # compilers + if compiler is not None: + (ccshared,cflags) = sysconfig.get_config_vars('CCSHARED','CFLAGS') +- args['compiler_so'] = compiler + ' ' + ccshared + ' ' + cflags ++ # Need to filter out -isysroot from the flags. Ideally should ++ # figure out target flags here. ++ flags = [] ++ for f in cflags.split(): ++ if not f.startswith("-isystem"): ++ flags.append(f) ++ args['compiler_so'] = compiler + ' ' + ccshared + ' ' + ' '.join(flags) + self.compiler.set_executables(**args) + + build_ext.build_extensions(self) +@@ -393,7 +399,6 @@ + # into configure and stored in the Makefile (issue found on OS X 10.3). + for env_var, arg_name, dir_list in ( + ('LDFLAGS', '-R', self.compiler.runtime_library_dirs), +- ('LDFLAGS', '-L', self.compiler.library_dirs), + ('CPPFLAGS', '-I', self.compiler.include_dirs)): + env_val = sysconfig.get_config_var(env_var) + if env_val: +@@ -419,16 +424,16 @@ + for directory in reversed(options.dirs): + add_dir_to_list(dir_list, directory) + +- if os.path.normpath(sys.prefix) != '/usr' \ +- and not sysconfig.get_config_var('PYTHONFRAMEWORK'): ++# if os.path.normpath(sys.prefix) != '/usr' \ ++# and not sysconfig.get_config_var('PYTHONFRAMEWORK'): + # OSX note: Don't add LIBDIR and INCLUDEDIR to building a framework + # (PYTHONFRAMEWORK is set) to avoid # linking problems when + # building a framework with different architectures than + # the one that is currently installed (issue #7473) +- add_dir_to_list(self.compiler.library_dirs, +- sysconfig.get_config_var("LIBDIR")) +- add_dir_to_list(self.compiler.include_dirs, +- sysconfig.get_config_var("INCLUDEDIR")) ++# add_dir_to_list(self.compiler.library_dirs, ++# sysconfig.get_config_var("LIBDIR")) ++# add_dir_to_list(self.compiler.include_dirs, ++# sysconfig.get_config_var("INCLUDEDIR")) + + try: + have_unicode = unicode diff --git a/yocto-poky/meta/recipes-devtools/python/python/sitecustomize.py b/yocto-poky/meta/recipes-devtools/python/python/sitecustomize.py new file mode 100644 index 000000000..273901898 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python/sitecustomize.py @@ -0,0 +1,45 @@ +# OpenEmbedded sitecustomize.py (C) 2002-2008 Michael 'Mickey' Lauer <mlauer@vanille-media.de> +# GPLv2 or later +# Version: 20081123 +# Features: +# * set proper default encoding +# * enable readline completion in the interactive interpreter +# * load command line history on startup +# * save command line history on exit + +import os + +def __exithandler(): + try: + readline.write_history_file( "%s/.python-history" % os.getenv( "HOME", "/tmp" ) ) + except IOError: + pass + +def __registerExitHandler(): + import atexit + atexit.register( __exithandler ) + +def __enableReadlineSupport(): + readline.set_history_length( 1000 ) + readline.parse_and_bind( "tab: complete" ) + try: + readline.read_history_file( "%s/.python-history" % os.getenv( "HOME", "/tmp" ) ) + except IOError: + pass + +def __enableDefaultEncoding(): + import sys + try: + sys.setdefaultencoding( "utf8" ) + except LookupError: + pass + +import sys +try: + import rlcompleter, readline +except ImportError: + pass +else: + __enableDefaultEncoding() + __registerExitHandler() + __enableReadlineSupport() diff --git a/yocto-poky/meta/recipes-devtools/python/python/use_sysroot_ncurses_instead_of_host.patch b/yocto-poky/meta/recipes-devtools/python/python/use_sysroot_ncurses_instead_of_host.patch new file mode 100644 index 000000000..2c657861c --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python/use_sysroot_ncurses_instead_of_host.patch @@ -0,0 +1,20 @@ +Python tries to use ncursesw from the host, +if it is not found causes an error on configure, +we should use ncursesw from sysroot instead + + +Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com> + +Index: Python-2.7.9/configure.ac +=================================================================== +--- Python-2.7.9.orig/configure.ac ++++ Python-2.7.9/configure.ac +@@ -4311,7 +4311,7 @@ fi + + # first curses configure check + ac_save_cppflags="$CPPFLAGS" +-CPPFLAGS="$CPPFLAGS -I/usr/include/ncursesw" ++CPPFLAGS="$CPPFLAGS -I=/usr/include/ncursesw" + + AC_CHECK_HEADERS(curses.h ncurses.h) + diff --git a/yocto-poky/meta/recipes-devtools/python/python3-native_3.4.3.bb b/yocto-poky/meta/recipes-devtools/python/python3-native_3.4.3.bb new file mode 100644 index 000000000..464ff0580 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python3-native_3.4.3.bb @@ -0,0 +1,76 @@ +require recipes-devtools/python/python.inc + +PR = "${INC_PR}.0" +PYTHON_MAJMIN = "3.4" +DISTRO_SRC_URI ?= "file://sitecustomize.py" +DISTRO_SRC_URI_linuxstdbase = "" +SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz \ +file://12-distutils-prefix-is-inside-staging-area.patch \ +file://python-config.patch \ +file://000-cross-compile.patch \ +file://020-dont-compile-python-files.patch \ +file://030-fixup-include-dirs.patch \ +file://070-dont-clean-ipkg-install.patch \ +file://080-distutils-dont_adjust_files.patch \ +file://110-enable-zlib.patch \ +file://130-readline-setup.patch \ +file://150-fix-setupterm.patch \ +file://python-3.3-multilib.patch \ +file://03-fix-tkinter-detection.patch \ +file://avoid_warning_about_tkinter.patch \ +file://shutil-follow-symlink-fix.patch \ +file://0001-h2py-Fix-issue-13032-where-it-fails-with-UnicodeDeco.patch \ +file://sysroot-include-headers.patch \ +file://unixccompiler.patch \ +file://makerace.patch \ +${DISTRO_SRC_URI} \ +file://sysconfig.py-add-_PYTHON_PROJECT_SRC.patch \ +file://setup.py-check-cross_compiling-when-get-FLAGS.patch \ +" +SRC_URI[md5sum] = "7d092d1bba6e17f0d9bd21b49e441dd5" +SRC_URI[sha256sum] = "b5b3963533768d5fc325a4d7a6bd6f666726002d696f1d399ec06b043ea996b8" + +LIC_FILES_CHKSUM = "file://LICENSE;md5=dd98d01d471fac8d8dbdd975229dba03" + +S = "${WORKDIR}/Python-${PV}" + +EXTRANATIVEPATH += "bzip2-native" +DEPENDS = "openssl-native bzip2-replacement-native zlib-native readline-native sqlite3-native" + +inherit native + +RPROVIDES += "python3-distutils-native python3-compression-native python3-textutils-native python3-core-native" + +EXTRA_OECONF_append = " --bindir=${bindir}/${PN} --without-ensurepip" + +EXTRA_OEMAKE = '\ + BUILD_SYS="" \ + HOST_SYS="" \ + LIBC="" \ + STAGING_LIBDIR=${STAGING_LIBDIR_NATIVE} \ + STAGING_INCDIR=${STAGING_INCDIR_NATIVE} \ + LIB=${baselib} \ + ARCH=${TARGET_ARCH} \ +' + +# No ctypes option for python 3 +PYTHONLSBOPTS = "" + +do_configure_append() { + autoreconf --verbose --install --force --exclude=autopoint ../Python-${PV}/Modules/_ctypes/libffi +} + +do_install() { + install -d ${D}${libdir}/pkgconfig + oe_runmake 'DESTDIR=${D}' install + if [ -e ${WORKDIR}/sitecustomize.py ]; then + install -m 0644 ${WORKDIR}/sitecustomize.py ${D}/${libdir}/python${PYTHON_MAJMIN} + fi + install -d ${D}${bindir}/${PN} + install -m 0755 Parser/pgen ${D}${bindir}/${PN} + + # Make sure we use /usr/bin/env python + for PYTHSCRIPT in `grep -rIl ${bindir}/${PN}/python ${D}${bindir}/${PN}`; do + sed -i -e '1s|^#!.*|#!/usr/bin/env python3|' $PYTHSCRIPT + done +} diff --git a/yocto-poky/meta/recipes-devtools/python/python3-pip_6.1.1.bb b/yocto-poky/meta/recipes-devtools/python/python3-pip_6.1.1.bb new file mode 100644 index 000000000..7bfc30e2a --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python3-pip_6.1.1.bb @@ -0,0 +1,40 @@ +SUMMARY = "The PyPA recommended tool for installing Python packages" +sHOMEPAGEsss = "https://pypi.python.org/pypi/pip" +SECTION = "devel/python" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=45665b53032c02b35e29ddab8e61fa91" + +SRCNAME = "pip" +DEPENDS += "python3 python3-setuptools-native" + +SRC_URI = " \ + http://pypi.python.org/packages/source/p/${SRCNAME}/${SRCNAME}-${PV}.tar.gz \ +" +SRC_URI[md5sum] = "6b19e0a934d982a5a4b798e957cb6d45" +SRC_URI[sha256sum] = "89f3b626d225e08e7f20d85044afa40f612eb3284484169813dc2d0631f2a556" + +S = "${WORKDIR}/${SRCNAME}-${PV}" + +inherit distutils3 + +DISTUTILS_INSTALL_ARGS += "--install-lib=${D}${libdir}/${PYTHON_DIR}/site-packages" + +do_install_prepend() { + install -d ${D}/${libdir}/${PYTHON_DIR}/site-packages +} + +# Use setuptools site.py instead, avoid shared state issue +do_install_append() { + rm ${D}/${libdir}/${PYTHON_DIR}/site-packages/site.py + rm ${D}/${libdir}/${PYTHON_DIR}/site-packages/__pycache__/site.cpython-34.pyc +} + +RDEPENDS_${PN} = "\ + python3-compile \ + python3-io \ + python3-json \ + python3-netserver \ + python3-setuptools \ + python3-unixadmin \ + python3-xmlrpc \ +" diff --git a/yocto-poky/meta/recipes-devtools/python/python3-setuptools_18.2.bb b/yocto-poky/meta/recipes-devtools/python/python3-setuptools_18.2.bb new file mode 100644 index 000000000..dc0ac80d7 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python3-setuptools_18.2.bb @@ -0,0 +1,55 @@ +SUMMARY = "Download, build, install, upgrade, and uninstall Python packages" +HOMEPAGE = "http://packages.python.org/setuptools" +SECTION = "devel/python" +LICENSE = "PSF" +LIC_FILES_CHKSUM = "file://setup.py;beginline=78;endline=78;md5=8a314270dd7a8dbca741775415f1716e" + +SRCNAME = "setuptools" +DEPENDS += "python3" +DEPENDS_class-native += "python3-native" + +SRC_URI = " \ + http://pypi.python.org/packages/source/s/${SRCNAME}/${SRCNAME}-${PV}.tar.gz \ +" +SRC_URI[md5sum] = "52b4e48939ef311d7204f8fe940764f4" +SRC_URI[sha256sum] = "0994a58df27ea5dc523782a601357a2198b7493dcc99a30d51827a23585b5b1d" + +S = "${WORKDIR}/${SRCNAME}-${PV}" + +inherit distutils3 + +DISTUTILS_INSTALL_ARGS += "--install-lib=${D}${libdir}/${PYTHON_DIR}/site-packages" + +do_install_prepend() { + install -d ${D}/${libdir}/${PYTHON_DIR}/site-packages +} +# +# The installer puts the wrong path in the setuptools.pth file. Correct it. +# +do_install_append() { + rm ${D}${PYTHON_SITEPACKAGES_DIR}/setuptools.pth + mv ${D}${bindir}/easy_install ${D}${bindir}/easy3_install + echo "./${SRCNAME}-${PV}-py${PYTHON_BASEVERSION}.egg" > ${D}${PYTHON_SITEPACKAGES_DIR}/setuptools.pth +} + +RDEPENDS_${PN} = "\ + python3-distutils \ + python3-compression \ +" +RDEPENDS_${PN}_class-target = "\ + python3-ctypes \ + python3-distutils \ + python3-email \ + python3-importlib \ + python3-numbers \ + python3-compression \ + python3-shell \ + python3-subprocess \ + python3-textutils \ + python3-pkgutil \ + python3-threading \ + python3-misc \ + python3-unittest \ + python3-xml \ +" +BBCLASSEXTEND = "native" diff --git a/yocto-poky/meta/recipes-devtools/python/python3/000-cross-compile.patch b/yocto-poky/meta/recipes-devtools/python/python3/000-cross-compile.patch new file mode 100644 index 000000000..2506a590c --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python3/000-cross-compile.patch @@ -0,0 +1,83 @@ +We cross compile python. This patch uses tools from host/native +python instead of in-tree tools + +-Khem + +Upstream-Status: Inappropriate[Configuration Specific] + +--- + Makefile.pre.in | 25 +++++++++++++------------ + 1 file changed, 13 insertions(+), 12 deletions(-) + +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -193,6 +193,7 @@ LIBOBJS= @LIBOBJS@ + + PYTHON= python$(EXE) + BUILDPYTHON= python$(BUILDEXE) ++HOSTPYTHON= $(BUILDPYTHON) + + PYTHON_FOR_BUILD=@PYTHON_FOR_BUILD@ + _PYTHON_HOST_PLATFORM=@_PYTHON_HOST_PLATFORM@ +@@ -239,6 +240,7 @@ LIBFFI_INCLUDEDIR= @LIBFFI_INCLUDEDIR@ + ########################################################################## + # Parser + PGEN= Parser/pgen$(EXE) ++HOSTPGEN= $(PGEN)$(EXE) + + PSRCS= \ + Parser/acceler.c \ +@@ -451,7 +453,7 @@ build_all_generate_profile: + + run_profile_task: + : # FIXME: can't run for a cross build +- $(RUNSHARED) ./$(BUILDPYTHON) $(PROFILE_TASK) ++ $(RUNSHARED) $(HOSTPYTHON) $(PROFILE_TASK) + + build_all_use_profile: + $(MAKE) all CFLAGS="$(CFLAGS) -fprofile-use -fprofile-correction" +@@ -640,7 +642,7 @@ $(IO_OBJS): $(IO_H) + $(GRAMMAR_H): $(GRAMMAR_INPUT) $(PGENSRCS) + @$(MKDIR_P) Include + $(MAKE) $(PGEN) +- $(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C) ++ $(HOSTPGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C) + $(GRAMMAR_C): $(GRAMMAR_H) $(GRAMMAR_INPUT) $(PGENSRCS) + $(MAKE) $(GRAMMAR_H) + touch $(GRAMMAR_C) +@@ -820,7 +822,7 @@ $(LIBRARY_OBJS) $(MODOBJS) Modules/pytho + ###################################################################### + + TESTOPTS= $(EXTRATESTOPTS) +-TESTPYTHON= $(RUNSHARED) ./$(BUILDPYTHON) $(TESTPYTHONOPTS) ++TESTPYTHON= $(RUNSHARED) $(HOSTPYTHON) $(TESTPYTHONOPTS) + TESTRUNNER= $(TESTPYTHON) $(srcdir)/Tools/scripts/run_tests.py + TESTTIMEOUT= 3600 + +@@ -1229,7 +1231,7 @@ frameworkinstallstructure: $(LDLIBRARY) + fi; \ + done + $(LN) -fsn include/python$(LDVERSION) $(DESTDIR)$(prefix)/Headers +- sed 's/%VERSION%/'"`$(RUNSHARED) ./$(BUILDPYTHON) -c 'import platform; print(platform.python_version())'`"'/g' < $(RESSRCDIR)/Info.plist > $(DESTDIR)$(prefix)/Resources/Info.plist ++ sed 's/%VERSION%/'"`$(RUNSHARED) $(HOSTPYTHON) -c 'import platform; print(platform.python_version())'`"'/g' < $(RESSRCDIR)/Info.plist > $(DESTDIR)$(prefix)/Resources/Info.plist + $(LN) -fsn $(VERSION) $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Versions/Current + $(LN) -fsn Versions/Current/$(PYTHONFRAMEWORK) $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/$(PYTHONFRAMEWORK) + $(LN) -fsn Versions/Current/Headers $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Headers +@@ -1288,7 +1290,7 @@ config.status: $(srcdir)/configure + + # Run reindent on the library + reindent: +- ./$(BUILDPYTHON) $(srcdir)/Tools/scripts/reindent.py -r $(srcdir)/Lib ++ $(HOSTPYTHON) $(srcdir)/Tools/scripts/reindent.py -r $(srcdir)/Lib + + # Rerun configure with the same options as it was run last time, + # provided the config.status script exists +@@ -1414,7 +1416,7 @@ funny: + + # Perform some verification checks on any modified files. + patchcheck: +- $(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/scripts/patchcheck.py ++ $(RUNSHARED) $(HOSTPYTHON) $(srcdir)/Tools/scripts/patchcheck.py + + # Dependencies + diff --git a/yocto-poky/meta/recipes-devtools/python/python3/0001-h2py-Fix-issue-13032-where-it-fails-with-UnicodeDeco.patch b/yocto-poky/meta/recipes-devtools/python/python3/0001-h2py-Fix-issue-13032-where-it-fails-with-UnicodeDeco.patch new file mode 100644 index 000000000..dd6b24fe9 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python3/0001-h2py-Fix-issue-13032-where-it-fails-with-UnicodeDeco.patch @@ -0,0 +1,37 @@ +From 2f5a4c708d90fa8db21f446ae879cff79387448d Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Mon, 20 May 2013 21:03:16 -0700 +Subject: [PATCH] h2py: Fix issue 13032 where it fails with UnicodeDecodeError + +use utf-8 to open the files + +Signed-off-by: Khem Raj <raj.khem@gmail.com> + +Upstream-Status: Pending +--- + Tools/scripts/h2py.py | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Tools/scripts/h2py.py b/Tools/scripts/h2py.py +index 4f871d9..a53fbe0 100755 +--- a/Tools/scripts/h2py.py ++++ b/Tools/scripts/h2py.py +@@ -69,13 +69,13 @@ def main(): + sys.stdout.write('# Generated by h2py from stdin\n') + process(sys.stdin, sys.stdout) + else: +- fp = open(filename, 'r') ++ fp = open(filename, 'r', encoding='utf-8') + outfile = os.path.basename(filename) + i = outfile.rfind('.') + if i > 0: outfile = outfile[:i] + modname = outfile.upper() + outfile = modname + '.py' +- outfp = open(outfile, 'w') ++ outfp = open(outfile, 'w', encoding='utf-8') + outfp.write('# Generated by h2py from %s\n' % filename) + filedict = {} + for dir in searchdirs: +-- +1.8.1.2 + diff --git a/yocto-poky/meta/recipes-devtools/python/python3/020-dont-compile-python-files.patch b/yocto-poky/meta/recipes-devtools/python/python3/020-dont-compile-python-files.patch new file mode 100644 index 000000000..03ef28694 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python3/020-dont-compile-python-files.patch @@ -0,0 +1,37 @@ +Dont cross compile site packages + +-Khem + +Upstream-Status: Inappropriate[Embedded-Specific] + +--- + Makefile.pre.in | 16 ---------------- + 1 file changed, 16 deletions(-) + +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -1078,24 +1078,6 @@ libinstall: build_all $(srcdir)/Lib/$(PL + $(INSTALL_DATA) $(srcdir)/Modules/xxmodule.c \ + $(DESTDIR)$(LIBDEST)/distutils/tests ; \ + fi +- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ +- $(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \ +- -d $(LIBDEST) -f \ +- -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \ +- $(DESTDIR)$(LIBDEST) +- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ +- $(PYTHON_FOR_BUILD) -Wi -O $(DESTDIR)$(LIBDEST)/compileall.py \ +- -d $(LIBDEST) -f \ +- -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \ +- $(DESTDIR)$(LIBDEST) +- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ +- $(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \ +- -d $(LIBDEST)/site-packages -f \ +- -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages +- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ +- $(PYTHON_FOR_BUILD) -Wi -O $(DESTDIR)$(LIBDEST)/compileall.py \ +- -d $(LIBDEST)/site-packages -f \ +- -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages + -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ + $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt + -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ diff --git a/yocto-poky/meta/recipes-devtools/python/python3/03-fix-tkinter-detection.patch b/yocto-poky/meta/recipes-devtools/python/python3/03-fix-tkinter-detection.patch new file mode 100644 index 000000000..fddfd2b2f --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python3/03-fix-tkinter-detection.patch @@ -0,0 +1,42 @@ +Upstream-Status: Inappropriate [embedded specific] + +# We need to supply STAGING_INCDIR here, otherwise the Tk headers +# will not be found. +# Signed-Off: Michael 'Mickey' Lauer <mickey@vanille.de> + +Index: Python-3.3.0rc2/setup.py +=================================================================== +--- Python-3.3.0rc2.orig/setup.py 2012-09-20 15:24:14.009124003 -0700 ++++ Python-3.3.0rc2/setup.py 2012-09-20 15:25:08.449124963 -0700 +@@ -1620,7 +1620,7 @@ + dotversion = dotversion[:-1] + '.' + dotversion[-1] + tcl_include_sub = [] + tk_include_sub = [] +- for dir in inc_dirs: ++ for dir in [os.getenv("STAGING_INCDIR")]: + tcl_include_sub += [dir + os.sep + "tcl" + dotversion] + tk_include_sub += [dir + os.sep + "tk" + dotversion] + tk_include_sub += tcl_include_sub +@@ -1639,22 +1639,6 @@ + if dir not in include_dirs: + include_dirs.append(dir) + +- # Check for various platform-specific directories +- if host_platform == 'sunos5': +- include_dirs.append('/usr/openwin/include') +- added_lib_dirs.append('/usr/openwin/lib') +- elif os.path.exists('/usr/X11R6/include'): +- include_dirs.append('/usr/X11R6/include') +- added_lib_dirs.append('/usr/X11R6/lib64') +- added_lib_dirs.append('/usr/X11R6/lib') +- elif os.path.exists('/usr/X11R5/include'): +- include_dirs.append('/usr/X11R5/include') +- added_lib_dirs.append('/usr/X11R5/lib') +- else: +- # Assume default location for X11 +- include_dirs.append('/usr/X11/include') +- added_lib_dirs.append('/usr/X11/lib') +- + # If Cygwin, then verify that X is installed before proceeding + if host_platform == 'cygwin': + x11_inc = find_file('X11/Xlib.h', [], include_dirs) diff --git a/yocto-poky/meta/recipes-devtools/python/python3/030-fixup-include-dirs.patch b/yocto-poky/meta/recipes-devtools/python/python3/030-fixup-include-dirs.patch new file mode 100644 index 000000000..6beac7b80 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python3/030-fixup-include-dirs.patch @@ -0,0 +1,33 @@ +Do not hardcode /usr into include paths when cross compiling + +-Khem + +Upstream-Status: Pending + +--- + setup.py | 15 ++------------- + 1 file changed, 2 insertions(+), 13 deletions(-) + +Index: Python-3.3.2/setup.py +=================================================================== +--- Python-3.3.2.orig/setup.py ++++ Python-3.3.2/setup.py +@@ -444,7 +444,8 @@ class PyBuildExt(build_ext): + # only change this for cross builds for 3.3, issues on Mageia + if cross_compiling: + self.add_gcc_paths() +- self.add_multiarch_paths() ++ if not cross_compiling: ++ self.add_multiarch_paths() + + # Add paths specified in the environment variables LDFLAGS and + # CPPFLAGS for header and library files. +@@ -480,7 +481,7 @@ class PyBuildExt(build_ext): + for directory in reversed(options.dirs): + add_dir_to_list(dir_list, directory) + +- if os.path.normpath(sys.base_prefix) != '/usr' \ ++ if not cross_compiling and os.path.normpath(sys.base_prefix) != '/usr' \ + and not sysconfig.get_config_var('PYTHONFRAMEWORK'): + # OSX note: Don't add LIBDIR and INCLUDEDIR to building a framework + # (PYTHONFRAMEWORK is set) to avoid # linking problems when diff --git a/yocto-poky/meta/recipes-devtools/python/python3/04-default-is-optimized.patch b/yocto-poky/meta/recipes-devtools/python/python3/04-default-is-optimized.patch new file mode 100644 index 000000000..3b8f264a5 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python3/04-default-is-optimized.patch @@ -0,0 +1,59 @@ +Upstream-Status: Inappropriate [embedded specific] + +# when compiling for an embedded system, we need every bit of +# performance we can get. default to optimized with the option +# of opt-out. +# Signed-Off: Michael 'Mickey' Lauer <mickey@vanille-media.de> + + +2012/05/01 +Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com> + +Rebased for 3.4.2 02/2015 +Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com> + +Index: Python-3.4.2/Python/compile.c +=================================================================== +--- Python-3.4.2.orig/Python/compile.c ++++ Python-3.4.2/Python/compile.c +@@ -30,7 +30,7 @@ + #include "symtable.h" + #include "opcode.h" + +-int Py_OptimizeFlag = 0; ++int Py_OptimizeFlag = 1; + + #define DEFAULT_BLOCK_SIZE 16 + #define DEFAULT_BLOCKS 8 +Index: Python-3.4.2/Modules/main.c +=================================================================== +--- Python-3.4.2.orig/Modules/main.c ++++ Python-3.4.2/Modules/main.c +@@ -38,7 +38,7 @@ static wchar_t **orig_argv; + static int orig_argc; + + /* command line options */ +-#define BASE_OPTS L"bBc:dEhiIJm:OqRsStuvVW:xX:?" ++#define BASE_OPTS L"bBc:dEhiIJm:NOqRsStuvVW:xX:?" + + #define PROGRAM_OPTS BASE_OPTS + +@@ -64,6 +64,7 @@ static char *usage_2 = "\ + -m mod : run library module as a script (terminates option list)\n\ + -O : optimize generated bytecode slightly; also PYTHONOPTIMIZE=x\n\ + -OO : remove doc-strings in addition to the -O optimizations\n\ ++-N : do NOT optimize generated bytecode\n\ + -q : don't print version and copyright messages on interactive startup\n\ + -s : don't add user site directory to sys.path; also PYTHONNOUSERSITE\n\ + -S : don't imply 'import site' on initialization\n\ +@@ -418,8 +419,8 @@ Py_Main(int argc, wchar_t **argv) + + /* case 'J': reserved for Jython */ + +- case 'O': +- Py_OptimizeFlag++; ++ case 'N': ++ Py_OptimizeFlag=0; + break; + + case 'B': diff --git a/yocto-poky/meta/recipes-devtools/python/python3/070-dont-clean-ipkg-install.patch b/yocto-poky/meta/recipes-devtools/python/python3/070-dont-clean-ipkg-install.patch new file mode 100644 index 000000000..789929b71 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python3/070-dont-clean-ipkg-install.patch @@ -0,0 +1,36 @@ +consider opkg directories when cleaning up + +-Khem + +Upstream-Status: Inappropriate [OE specific] + +--- + Makefile.pre.in | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -1306,8 +1306,8 @@ touch: + # Sanitation targets -- clean leaves libraries, executables and tags + # files, which clobber removes as well + pycremoval: +- -find $(srcdir) -depth -name '__pycache__' -exec rm -rf {} ';' +- -find $(srcdir) -name '*.py[co]' -exec rm -f {} ';' ++ -find $(srcdir) ! -path './ipkg-install/*' -depth -name '__pycache__' -exec rm -rf {} ';' ++ -find $(srcdir) ! -path './ipkg-install/*' -name '*.py[co]' -exec rm -f {} ';' + + rmtestturds: + -rm -f *BAD *GOOD *SKIPPED +@@ -1321,9 +1321,9 @@ docclean: + -rm -rf Doc/tools/sphinx Doc/tools/pygments Doc/tools/docutils + + clean: pycremoval +- find . -name '*.[oa]' -exec rm -f {} ';' +- find . -name '*.s[ol]' -exec rm -f {} ';' +- find . -name '*.so.[0-9]*.[0-9]*' -exec rm -f {} ';' ++ find . ! -path './ipkg-install/*' -name '*.[oa]' -exec rm -f {} ';' ++ find . ! -path './ipkg-install/*' -name '*.s[ol]' -exec rm -f {} ';' ++ find . ! -path './ipkg-install/*' -name '*.so.[0-9]*.[0-9]*' -exec rm -f {} ';' + find build -name 'fficonfig.h' -exec rm -f {} ';' || true + find build -name 'fficonfig.py' -exec rm -f {} ';' || true + -rm -f Lib/lib2to3/*Grammar*.pickle diff --git a/yocto-poky/meta/recipes-devtools/python/python3/080-distutils-dont_adjust_files.patch b/yocto-poky/meta/recipes-devtools/python/python3/080-distutils-dont_adjust_files.patch new file mode 100644 index 000000000..b96419a63 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python3/080-distutils-dont_adjust_files.patch @@ -0,0 +1,92 @@ +do not "adjust" python files before copying + +-Khem + +Upstream-Status: Inappropriate [Embedded-Specific] + +--- + Lib/distutils/command/build_scripts.py | 43 +++------------------------------ + 1 file changed, 4 insertions(+), 39 deletions(-) + +--- a/Lib/distutils/command/build_scripts.py ++++ b/Lib/distutils/command/build_scripts.py +@@ -51,10 +51,7 @@ class build_scripts(Command): + + + def copy_scripts(self): +- """Copy each script listed in 'self.scripts'; if it's marked as a +- Python script in the Unix way (first line matches 'first_line_re', +- ie. starts with "\#!" and contains "python"), then adjust the first +- line to refer to the current Python interpreter as we copy. ++ """Copy each script listed in 'self.scripts' + """ + self.mkpath(self.build_dir) + outfiles = [] +@@ -78,64 +75,10 @@ class build_scripts(Command): + if not self.dry_run: + raise + f = None +- else: +- encoding, lines = tokenize.detect_encoding(f.readline) +- f.seek(0) +- first_line = f.readline() +- if not first_line: +- self.warn("%s is an empty file (skipping)" % script) +- continue +- +- match = first_line_re.match(first_line) +- if match: +- adjust = True +- post_interp = match.group(1) or b'' +- +- if adjust: +- log.info("copying and adjusting %s -> %s", script, +- self.build_dir) +- updated_files.append(outfile) +- if not self.dry_run: +- if not sysconfig.python_build: +- executable = self.executable +- else: +- executable = os.path.join( +- sysconfig.get_config_var("BINDIR"), +- "python%s%s" % (sysconfig.get_config_var("VERSION"), +- sysconfig.get_config_var("EXE"))) +- executable = os.fsencode(executable) +- shebang = b"#!" + executable + post_interp + b"\n" +- # Python parser starts to read a script using UTF-8 until +- # it gets a #coding:xxx cookie. The shebang has to be the +- # first line of a file, the #coding:xxx cookie cannot be +- # written before. So the shebang has to be decodable from +- # UTF-8. +- try: +- shebang.decode('utf-8') +- except UnicodeDecodeError: +- raise ValueError( +- "The shebang ({!r}) is not decodable " +- "from utf-8".format(shebang)) +- # If the script is encoded to a custom encoding (use a +- # #coding:xxx cookie), the shebang has to be decodable from +- # the script encoding too. +- try: +- shebang.decode(encoding) +- except UnicodeDecodeError: +- raise ValueError( +- "The shebang ({!r}) is not decodable " +- "from the script encoding ({})" +- .format(shebang, encoding)) +- with open(outfile, "wb") as outf: +- outf.write(shebang) +- outf.writelines(f.readlines()) +- if f: +- f.close() +- else: +- if f: ++ if f: + f.close() +- updated_files.append(outfile) +- self.copy_file(script, outfile) ++ updated_files.append(outfile) ++ self.copy_file(script, outfile) + + if os.name == 'posix': + for file in outfiles: diff --git a/yocto-poky/meta/recipes-devtools/python/python3/110-enable-zlib.patch b/yocto-poky/meta/recipes-devtools/python/python3/110-enable-zlib.patch new file mode 100644 index 000000000..fb92a1916 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python3/110-enable-zlib.patch @@ -0,0 +1,21 @@ +Enable zlib in python + +-Khem + +Upstream-Status: Inappropriate [OE-Specific] + +--- + Modules/Setup.dist | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/Modules/Setup.dist ++++ b/Modules/Setup.dist +@@ -354,7 +354,7 @@ _symtable symtablemodule.c + # Andrew Kuchling's zlib module. + # This require zlib 1.1.3 (or later). + # See http://www.gzip.org/zlib/ +-#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz ++zlib zlibmodule.c -lz + + # Interface to the Expat XML parser + # diff --git a/yocto-poky/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch b/yocto-poky/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch new file mode 100644 index 000000000..bf02df202 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch @@ -0,0 +1,81 @@ +Upstream-Status: Inappropriate [embedded specific] + +02/2015 Rebased for Python 3.4.2 + +# The proper prefix is inside our staging area. +# Signed-Off: Michael 'Mickey' Lauer <mickey@vanille-media.de> +# Signed-off-by: Phil Blundell <philb@gnu.org> +# Signed-off-by: Khem Raj <raj.khem@gmail.com> +# Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com> + +Index: Python-3.4.2/Lib/distutils/sysconfig.py +=================================================================== +--- Python-3.4.2.orig/Lib/distutils/sysconfig.py ++++ Python-3.4.2/Lib/distutils/sysconfig.py +@@ -16,10 +16,11 @@ import sys + from .errors import DistutilsPlatformError + + # These are needed in a couple of spots, so just compute them once. +-PREFIX = os.path.normpath(sys.prefix) +-EXEC_PREFIX = os.path.normpath(sys.exec_prefix) +-BASE_PREFIX = os.path.normpath(sys.base_prefix) +-BASE_EXEC_PREFIX = os.path.normpath(sys.base_exec_prefix) ++PREFIX = os.path.normpath(sys.prefix).replace( os.getenv("BUILD_SYS"), os.getenv("HOST_SYS") ) ++EXEC_PREFIX = os.path.normpath(sys.exec_prefix).replace( os.getenv("BUILD_SYS"), os.getenv("HOST_SYS") ) ++BASE_PREFIX = os.path.normpath(sys.base_prefix).replace( os.getenv("BUILD_SYS"), os.getenv("HOST_SYS") ) ++BASE_EXEC_PREFIX= os.path.normpath(sys.base_exec_prefix).replace( os.getenv("BUILD_SYS"), os.getenv("HOST_SYS") ) ++ + + # Path to the base directory of the project. On Windows the binary may + # live in project/PCBuild9. If we're dealing with an x64 Windows build, +@@ -93,7 +94,9 @@ def get_python_inc(plat_specific=0, pref + If 'prefix' is supplied, use it instead of sys.base_prefix or + sys.base_exec_prefix -- i.e., ignore 'plat_specific'. + """ +- if prefix is None: ++ if prefix is None and os.environ['STAGING_INCDIR'] != "": ++ prefix = os.environ['STAGING_INCDIR'].rstrip('include') ++ elif prefix is None: + prefix = plat_specific and BASE_EXEC_PREFIX or BASE_PREFIX + if os.name == "posix": + if python_build: +@@ -134,6 +137,12 @@ def get_python_lib(plat_specific=0, stan + If 'prefix' is supplied, use it instead of sys.base_prefix or + sys.base_exec_prefix -- i.e., ignore 'plat_specific'. + """ ++ if prefix is None and os.environ['STAGING_LIBDIR'] != "": ++ lib_basename = os.environ['STAGING_LIBDIR'].split('/')[-1] ++ prefix = os.environ['STAGING_LIBDIR'].rstrip(lib_basename) ++ else: ++ lib_basename = sys.lib ++ + if prefix is None: + if standard_lib: + prefix = plat_specific and BASE_EXEC_PREFIX or BASE_PREFIX +@@ -142,7 +151,7 @@ def get_python_lib(plat_specific=0, stan + + if os.name == "posix": + libpython = os.path.join(prefix, +- "lib", "python" + get_python_version()) ++ lib_basename, "python" + get_python_version()) + if standard_lib: + return libpython + else: +@@ -242,7 +251,7 @@ def get_config_h_filename(): + else: + inc_dir = get_python_inc(plat_specific=1) + +- return os.path.join(inc_dir, 'pyconfig.h') ++ return os.path.join(inc_dir, 'pyconfig.h'.replace( os.getenv("BUILD_SYS"), os.getenv("HOST_SYS") )) + + + def get_makefile_filename(): +@@ -251,7 +260,7 @@ def get_makefile_filename(): + return os.path.join(_sys_home or project_base, "Makefile") + lib_dir = get_python_lib(plat_specific=0, standard_lib=1) + config_file = 'config-{}{}'.format(get_python_version(), build_flags) +- return os.path.join(lib_dir, config_file, 'Makefile') ++ return os.path.join(lib_dir, config_file, 'Makefile').replace( os.getenv("BUILD_SYS"), os.getenv("HOST_SYS") ) + + + def parse_config_h(fp, g=None): diff --git a/yocto-poky/meta/recipes-devtools/python/python3/130-readline-setup.patch b/yocto-poky/meta/recipes-devtools/python/python3/130-readline-setup.patch new file mode 100644 index 000000000..c805652d6 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python3/130-readline-setup.patch @@ -0,0 +1,55 @@ +package python-readline + +-Khem + +Upstream-Status: Inappropriate [Embedded Specific] + +--- a/setup.py ++++ b/setup.py +@@ -666,45 +666,7 @@ class PyBuildExt(build_ext): + # readline + do_readline = self.compiler.find_library_file(lib_dirs, 'readline') + readline_termcap_library = "" +- curses_library = "" +- # Cannot use os.popen here in py3k. +- tmpfile = os.path.join(self.build_temp, 'readline_termcap_lib') +- if not os.path.exists(self.build_temp): +- os.makedirs(self.build_temp) +- # Determine if readline is already linked against curses or tinfo. +- if do_readline: +- if cross_compiling: +- ret = os.system("%s -d %s | grep '(NEEDED)' > %s" \ +- % (sysconfig.get_config_var('READELF'), +- do_readline, tmpfile)) +- elif find_executable('ldd'): +- ret = os.system("ldd %s > %s" % (do_readline, tmpfile)) +- else: +- ret = 256 +- if ret >> 8 == 0: +- with open(tmpfile) as fp: +- for ln in fp: +- if 'curses' in ln: +- readline_termcap_library = re.sub( +- r'.*lib(n?cursesw?)\.so.*', r'\1', ln +- ).rstrip() +- break +- # termcap interface split out from ncurses +- if 'tinfo' in ln: +- readline_termcap_library = 'tinfo' +- break +- if os.path.exists(tmpfile): +- os.unlink(tmpfile) +- # Issue 7384: If readline is already linked against curses, +- # use the same library for the readline and curses modules. +- if 'curses' in readline_termcap_library: +- curses_library = readline_termcap_library +- elif self.compiler.find_library_file(lib_dirs, 'ncursesw'): +- curses_library = 'ncursesw' +- elif self.compiler.find_library_file(lib_dirs, 'ncurses'): +- curses_library = 'ncurses' +- elif self.compiler.find_library_file(lib_dirs, 'curses'): +- curses_library = 'curses' ++ curses_library = "ncurses" + + if host_platform == 'darwin': + os_release = int(os.uname()[2].split('.')[0]) diff --git a/yocto-poky/meta/recipes-devtools/python/python3/150-fix-setupterm.patch b/yocto-poky/meta/recipes-devtools/python/python3/150-fix-setupterm.patch new file mode 100644 index 000000000..78d7c7867 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python3/150-fix-setupterm.patch @@ -0,0 +1,17 @@ +Fix warning with newer compiler + +-Khem + +Upstream-Status: Pending + +--- a/Modules/_cursesmodule.c ++++ b/Modules/_cursesmodule.c +@@ -116,7 +116,7 @@ char *PyCursesVersion = "2.2"; + #defines many common symbols (such as "lines") which breaks the + curses module in other ways. So the code will just specify + explicit prototypes here. */ +-extern int setupterm(char *,int,int *); ++//extern int setupterm(char *,int,int *); + #ifdef __sgi + #include <term.h> + #endif diff --git a/yocto-poky/meta/recipes-devtools/python/python3/avoid-ncursesw-include-path.patch b/yocto-poky/meta/recipes-devtools/python/python3/avoid-ncursesw-include-path.patch new file mode 100644 index 000000000..f29ae5337 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python3/avoid-ncursesw-include-path.patch @@ -0,0 +1,21 @@ +Upstream-Status: Pending + +We should make sure that sysroot is used by gcc instead of assuming +hardcoded locations for include paths + + +Signed-off-by: Khem Raj <raj.khem@gmail.com> + +Index: Python-3.4.2/configure.ac +=================================================================== +--- Python-3.4.2.orig/configure.ac ++++ Python-3.4.2/configure.ac +@@ -4434,7 +4434,7 @@ fi + + # first curses header check + ac_save_cppflags="$CPPFLAGS" +-CPPFLAGS="$CPPFLAGS -I/usr/include/ncursesw" ++CPPFLAGS="$CPPFLAGS -I=/usr/include/ncursesw" + + AC_CHECK_HEADERS(curses.h ncurses.h) + diff --git a/yocto-poky/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch b/yocto-poky/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch new file mode 100644 index 000000000..208c57c82 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch @@ -0,0 +1,25 @@ +_tkinter module needs tk module along with tcl. tk is not yet integrated +in yocto so we skip the check for this module. +Avoid a warning by not adding this module to missing variable. + +Upstream-Status: Inappropriate [distribution] + +Signed-off-by: Andrei Gherzan <andrei@gherzan.ro> + +Index: Python-2.7.2/setup.py +=================================================================== +--- Python-2.7.2.orig/setup.py 2012-04-05 23:18:38.500136647 +0300 ++++ Python-2.7.2/setup.py 2012-04-05 23:19:35.888134969 +0300 +@@ -1634,8 +1634,10 @@ + # Call the method for detecting whether _tkinter can be compiled + self.detect_tkinter(inc_dirs, lib_dirs) + +- if '_tkinter' not in [e.name for e in self.extensions]: +- missing.append('_tkinter') ++ # tkinter module will not be avalaible as yocto ++ # doesn't have tk integrated (yet) ++ #if '_tkinter' not in [e.name for e in self.extensions]: ++ # missing.append('_tkinter') + + return missing + diff --git a/yocto-poky/meta/recipes-devtools/python/python3/cgi_py.patch b/yocto-poky/meta/recipes-devtools/python/python3/cgi_py.patch new file mode 100644 index 000000000..de504f9dc --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python3/cgi_py.patch @@ -0,0 +1,23 @@ +Lib/cgi.py: Update the script as mentioned in the comment + +Upstream-Status: Inappropriate [distribution] + +Signed-off-by: Mark Hatle <mark.hatle@windriver.com> + +--- Python-2.6.6/Lib/cgi.py.orig 2010-08-01 22:14:27.000000000 -0500 ++++ Python-2.6.6/Lib/cgi.py 2011-09-21 15:28:40.478208631 -0500 +@@ -1,13 +1,4 @@ +-#! /usr/local/bin/python +- +-# NOTE: the above "/usr/local/bin/python" is NOT a mistake. It is +-# intentionally NOT "/usr/bin/env python". On many systems +-# (e.g. Solaris), /usr/local/bin is not in $PATH as passed to CGI +-# scripts, and /usr/local/bin is the default directory where Python is +-# installed, so /usr/bin/env would be unable to find python. Granted, +-# binary installations by Linux vendors often install Python in +-# /usr/bin. So let those vendors patch cgi.py to match their choice +-# of installation. ++#! /usr/bin/env python + + """Support module for CGI (Common Gateway Interface) scripts. + diff --git a/yocto-poky/meta/recipes-devtools/python/python3/fix_for_using_different_libdir.patch b/yocto-poky/meta/recipes-devtools/python/python3/fix_for_using_different_libdir.patch new file mode 100644 index 000000000..cd1a978eb --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python3/fix_for_using_different_libdir.patch @@ -0,0 +1,54 @@ +Upstream-Status: Inappropriate [Embedded specific] + +This patch fixes issuing with different libdir like lib64. +This patch makes the native python binary modules findable +in the install process of the host python. + +Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com> +Date: 2012/03/14 + +Updated for python 2.7.3 +Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com> +Date: 2012/05/01 + +Index: Python-3.3.0rc2/Lib/sysconfig.py +=================================================================== +--- Python-3.3.0rc2.orig/Lib/sysconfig.py 2012-09-20 22:50:11.000000000 -0700 ++++ Python-3.3.0rc2/Lib/sysconfig.py 2012-09-20 22:53:01.561123396 -0700 +@@ -21,9 +21,9 @@ + + _INSTALL_SCHEMES = { + 'posix_prefix': { +- 'stdlib': '{installed_base}/'+sys.lib+'/python{py_version_short}', ++ 'stdlib': '{base}/'+sys.lib+'/python{py_version_short}', + 'platstdlib': '{platbase}/'+sys.lib+'/python{py_version_short}', +- 'purelib': '{base}/lib/python{py_version_short}/site-packages', ++ 'purelib': '{base}/'+sys.lib+'/python{py_version_short}/site-packages', + 'platlib': '{platbase}/'+sys.lib+'/python{py_version_short}/site-packages', + 'include': + '{installed_base}/include/python{py_version_short}{abiflags}', +@@ -83,7 +83,7 @@ + 'posix_user': { + 'stdlib': '{userbase}/'+sys.lib+'/python{py_version_short}', + 'platstdlib': '{userbase}/'+sys.lib+'/python{py_version_short}', +- 'purelib': '{userbase}/lib/python{py_version_short}/site-packages', ++ 'purelib': '{userbase}/'+sys.lib+'/python{py_version_short}/site-packages', + 'platlib': '{userbase}/'+sys.lib+'/python{py_version_short}/site-packages', + 'include': '{userbase}/include/python{py_version_short}', + 'scripts': '{userbase}/bin', +Index: Python-3.3.0rc2/Makefile.pre.in +=================================================================== +--- Python-3.3.0rc2.orig/Makefile.pre.in 2012-09-20 22:50:11.000000000 -0700 ++++ Python-3.3.0rc2/Makefile.pre.in 2012-09-20 22:50:54.245123997 -0700 +@@ -1080,9 +1080,9 @@ + $(INSTALL_DATA) $(srcdir)/Modules/xxmodule.c \ + $(DESTDIR)$(LIBDEST)/distutils/tests ; \ + fi +- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ ++ -PYTHONPATH=$(DESTDIR)$(LIBDEST):${CROSSPYTHONPATH} $(RUNSHARED) \ + $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt +- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ ++ -PYTHONPATH=$(DESTDIR)$(LIBDEST):${CROSSPYTHONPATH} $(RUNSHARED) \ + $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/PatternGrammar.txt + + # Create the PLATDIR source directory, if one wasn't distributed.. diff --git a/yocto-poky/meta/recipes-devtools/python/python3/host_include_contamination.patch b/yocto-poky/meta/recipes-devtools/python/python3/host_include_contamination.patch new file mode 100644 index 000000000..ef2054d9a --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python3/host_include_contamination.patch @@ -0,0 +1,28 @@ +when building python for qemux86-64 on ubuntu 11.10/64bit +it gropes into host includes and then mixes them with cross +includes and as a result some modules fail to compile and link +one of the modules is python-elementtree which is then not +found during image creation + +Proble is that setup.py tries to add native includes that newer +ubuntu has introduced for multiarch support. But that should +only happen for native builds and not cross building python +so we add a check here. + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +Upstream-Status: Pending + +Index: Python-3.3.0rc2/setup.py +=================================================================== +--- Python-3.3.0rc2.orig/setup.py 2012-09-20 21:54:50.000000000 -0700 ++++ Python-3.3.0rc2/setup.py 2012-09-20 21:57:35.029123858 -0700 +@@ -402,6 +402,9 @@ + + if not find_executable('dpkg-architecture'): + return ++ if cross_compiling: ++ return ++ + opt = '' + if cross_compiling: + opt = '-t' + sysconfig.get_config_var('HOST_GNU_TYPE') diff --git a/yocto-poky/meta/recipes-devtools/python/python3/makerace.patch b/yocto-poky/meta/recipes-devtools/python/python3/makerace.patch new file mode 100644 index 000000000..d8a68923a --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python3/makerace.patch @@ -0,0 +1,28 @@ +There is a race due to the execution of make inside the makefile: + +| gcc -pthread -c -Wno-unused-result -DNDEBUG -g -O3 -Wall -Wstrict-prototypes -isystem/home/pokybuild/yocto-autobuilder-dev/yocto-slave/nightly-world/build/build/tmp/sysroots/x86_64-linux/usr/include -O2 -pipe -isystem/home/pokybuild/yocto-autobuilder-dev/yocto-slave/nightly-world/build/build/tmp/sysroots/x86_64-linux/usr/include -O2 -pipe -I. -IInclude -I./Include -isystem/home/pokybuild/yocto-autobuilder-dev/yocto-slave/nightly-world/build/build/tmp/sysroots/x86_64-linux/usr/include -isystem/home/pokybuild/yocto-autobuilder-dev/yocto-slave/nightly-world/build/build/tmp/sysroots/x86_64-linux/usr/include -fPIC -DPy_BUILD_CORE -o Objects/obmalloc.o Objects/obmalloc.c +| gcc -pthread -c -Wno-unused-result -DNDEBUG -g -O3 -Wall -Wstrict-prototypes -isystem/home/pokybuild/yocto-autobuilder-dev/yocto-slave/nightly-world/build/build/tmp/sysroots/x86_64-linux/usr/include -O2 -pipe -isystem/home/pokybuild/yocto-autobuilder-dev/yocto-slave/nightly-world/build/build/tmp/sysroots/x86_64-linux/usr/include -O2 -pipe -I. -IInclude -I./Include -isystem/home/pokybuild/yocto-autobuilder-dev/yocto-slave/nightly-world/build/build/tmp/sysroots/x86_64-linux/usr/include -isystem/home/pokybuild/yocto-autobuilder-dev/yocto-slave/nightly-world/build/build/tmp/sysroots/x86_64-linux/usr/include -fPIC -DPy_BUILD_CORE -o Parser/pgen.o Parser/pgen.c| gcc -pthread -c -Wno-unused-result -DNDEBUG -g -O3 -Wall -Wstrict-prototypes -isystem/home/pokybuild/yocto-autobuilder-dev/yocto-slave/nightly-world/build/build/tmp/sysroots/x86_64-linux/usr/include -O2 -pipe -isystem/home/pokybuild/yocto-autobuilder-dev/yocto-slave/nightly-world/build/build/tmp/sysroots/x86_64-linux/usr/include -O2 -pipe -I. -IInclude -I./Include -isystem/home/pokybuild/yocto-autobuilder-dev/yocto-slave/nightly-world/build/build/tmp/sysroots/x86_64-linux/usr/include -isystem/home/pokybuild/yocto-autobuilder-dev/yocto-slave/nightly-world/build/build/tmp/sysroots/x86_64-linux/usr/include -fPIC -DPy_BUILD_CORE -o Objects/obmalloc.o Objects/obmalloc.c +| gcc -pthread -c -Wno-unused-result -DNDEBUG -g -O3 -Wall -Wstrict-prototypes -isystem/home/pokybuild/yocto-autobuilder-dev/yocto-slave/nightly-world/build/build/tmp/sysroots/x86_64-linux/usr/include -O2 -pipe -isystem/home/pokybuild/yocto-autobuilder-dev/yocto-slave/nightly-world/build/build/tmp/sysroots/x86_64-linux/usr/include -O2 -pipe -I. -IInclude -I./Include -isystem/home/pokybuild/yocto-autobuilder-dev/yocto-slave/nightly-world/build/build/tmp/sysroots/x86_64-linux/usr/include -isystem/home/pokybuild/yocto-autobuilder-dev/yocto-slave/nightly-world/build/build/tmp/sysroots/x86_64-linux/usr/include -fPIC -DPy_BUILD_CORE -o Objects/obmalloc.o Objects/obmalloc.c +| Objects/obmalloc.o: file not recognized: File truncated +| collect2: error: ld returned 1 exit status +| make[1]: *** [Parser/pgen] Error 1 + +The easiest way to avoid this is to list the dependencies explictly. + +RP 28/2/2014 + +Upstream-Status: Pending + +Index: Python-3.3.3/Makefile.pre.in +=================================================================== +--- Python-3.3.3.orig/Makefile.pre.in 2014-02-27 14:04:38.268339533 +0000 ++++ Python-3.3.3/Makefile.pre.in 2014-02-28 10:40:59.166361125 +0000 +@@ -676,7 +676,7 @@ + + $(IO_OBJS): $(IO_H) + +-$(GRAMMAR_H): $(GRAMMAR_INPUT) $(PGENSRCS) ++$(GRAMMAR_H): $(GRAMMAR_INPUT) $(PGENSRCS) $(PGEN) + @$(MKDIR_P) Include + $(MAKE) $(PGEN) + $(HOSTPGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C) diff --git a/yocto-poky/meta/recipes-devtools/python/python3/python-3.3-multilib.patch b/yocto-poky/meta/recipes-devtools/python/python3/python-3.3-multilib.patch new file mode 100644 index 000000000..b3e986089 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python3/python-3.3-multilib.patch @@ -0,0 +1,338 @@ +Upstream-Status: Pending + +get the sys.lib from python itself and do not use hardcoded value of 'lib' + +02/2015 Rebased for 3.4.2 + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com> + +Index: Python-3.4.2/Include/pythonrun.h +=================================================================== +--- Python-3.4.2.orig/Include/pythonrun.h ++++ Python-3.4.2/Include/pythonrun.h +@@ -220,6 +220,8 @@ int _Py_CheckPython3(); + /* In their own files */ + PyAPI_FUNC(const char *) Py_GetVersion(void); + PyAPI_FUNC(const char *) Py_GetPlatform(void); ++PyAPI_FUNC(const char *) Py_GetArch(void); ++PyAPI_FUNC(const char *) Py_GetLib(void); + PyAPI_FUNC(const char *) Py_GetCopyright(void); + PyAPI_FUNC(const char *) Py_GetCompiler(void); + PyAPI_FUNC(const char *) Py_GetBuildInfo(void); +Index: Python-3.4.2/Lib/distutils/command/install.py +=================================================================== +--- Python-3.4.2.orig/Lib/distutils/command/install.py ++++ Python-3.4.2/Lib/distutils/command/install.py +@@ -19,6 +19,8 @@ from site import USER_BASE + from site import USER_SITE + HAS_USER_SITE = True + ++libname = sys.lib ++ + WINDOWS_SCHEME = { + 'purelib': '$base/Lib/site-packages', + 'platlib': '$base/Lib/site-packages', +@@ -30,7 +32,7 @@ WINDOWS_SCHEME = { + INSTALL_SCHEMES = { + 'unix_prefix': { + 'purelib': '$base/lib/python$py_version_short/site-packages', +- 'platlib': '$platbase/lib/python$py_version_short/site-packages', ++ 'platlib': '$platbase/'+libname+'/python$py_version_short/site-packages', + 'headers': '$base/include/python$py_version_short$abiflags/$dist_name', + 'scripts': '$base/bin', + 'data' : '$base', +Index: Python-3.4.2/Lib/pydoc.py +=================================================================== +--- Python-3.4.2.orig/Lib/pydoc.py ++++ Python-3.4.2/Lib/pydoc.py +@@ -394,7 +394,7 @@ class Doc: + + docloc = os.environ.get("PYTHONDOCS", self.PYTHONDOCS) + +- basedir = os.path.join(sys.base_exec_prefix, "lib", ++ basedir = os.path.join(sys.base_exec_prefix, sys.lib, + "python%d.%d" % sys.version_info[:2]) + if (isinstance(object, type(os)) and + (object.__name__ in ('errno', 'exceptions', 'gc', 'imp', +Index: Python-3.4.2/Lib/trace.py +=================================================================== +--- Python-3.4.2.orig/Lib/trace.py ++++ Python-3.4.2/Lib/trace.py +@@ -751,10 +751,10 @@ def main(argv=None): + # should I also call expanduser? (after all, could use $HOME) + + s = s.replace("$prefix", +- os.path.join(sys.base_prefix, "lib", ++ os.path.join(sys.base_prefix, sys.lib, + "python" + sys.version[:3])) + s = s.replace("$exec_prefix", +- os.path.join(sys.base_exec_prefix, "lib", ++ os.path.join(sys.base_exec_prefix, sys.lib, + "python" + sys.version[:3])) + s = os.path.normpath(s) + ignore_dirs.append(s) +Index: Python-3.4.2/Makefile.pre.in +=================================================================== +--- Python-3.4.2.orig/Makefile.pre.in ++++ Python-3.4.2/Makefile.pre.in +@@ -101,6 +101,8 @@ PY_CORE_CFLAGS= $(PY_CFLAGS) $(PY_CFLAGS + + # Machine-dependent subdirectories + MACHDEP= @MACHDEP@ ++LIB= @LIB@ ++ARCH= @ARCH@ + + # Multiarch directory (may be empty) + MULTIARCH= @MULTIARCH@ +@@ -120,7 +122,7 @@ LIBDIR= @libdir@ + MANDIR= @mandir@ + INCLUDEDIR= @includedir@ + CONFINCLUDEDIR= $(exec_prefix)/include +-SCRIPTDIR= $(prefix)/lib ++SCRIPTDIR= @libdir@ + ABIFLAGS= @ABIFLAGS@ + + # Detailed destination directories +@@ -712,6 +714,7 @@ Modules/getpath.o: $(srcdir)/Modules/get + -DEXEC_PREFIX='"$(exec_prefix)"' \ + -DVERSION='"$(VERSION)"' \ + -DVPATH='"$(VPATH)"' \ ++ -DARCH='"$(ARCH)"' -DLIB='"$(LIB)"' \ + -o $@ $(srcdir)/Modules/getpath.c + + Modules/python.o: $(srcdir)/Modules/python.c +@@ -780,7 +783,7 @@ $(AST_C): $(AST_H) $(AST_ASDL) $(ASDLGEN + Python/compile.o Python/symtable.o Python/ast.o: $(GRAMMAR_H) $(AST_H) + + Python/getplatform.o: $(srcdir)/Python/getplatform.c +- $(CC) -c $(PY_CORE_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -o $@ $(srcdir)/Python/getplatform.c ++ $(CC) -c $(PY_CORE_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -DARCH='"$(ARCH)"' -DLIB='"$(LIB)"' -o $@ $(srcdir)/Python/getplatform.c + + Python/importdl.o: $(srcdir)/Python/importdl.c + $(CC) -c $(PY_CORE_CFLAGS) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.c +Index: Python-3.4.2/Modules/getpath.c +=================================================================== +--- Python-3.4.2.orig/Modules/getpath.c ++++ Python-3.4.2/Modules/getpath.c +@@ -117,9 +117,11 @@ + #define EXEC_PREFIX PREFIX + #endif + ++#define LIB_PYTHON LIB "/python" VERSION ++ + #ifndef PYTHONPATH +-#define PYTHONPATH PREFIX "/lib/python" VERSION ":" \ +- EXEC_PREFIX "/lib/python" VERSION "/lib-dynload" ++#define PYTHONPATH PREFIX "/" LIB_PYTHON ":" \ ++ EXEC_PREFIX "/" LIB_PYTHON "/lib-dynload" + #endif + + #ifndef LANDMARK +@@ -130,6 +132,7 @@ static wchar_t prefix[MAXPATHLEN+1]; + static wchar_t exec_prefix[MAXPATHLEN+1]; + static wchar_t progpath[MAXPATHLEN+1]; + static wchar_t *module_search_path = NULL; ++static wchar_t *lib_python = L"" LIB_PYTHON; + + static void + reduce(wchar_t *dir) +Index: Python-3.4.2/Python/getplatform.c +=================================================================== +--- Python-3.4.2.orig/Python/getplatform.c ++++ Python-3.4.2/Python/getplatform.c +@@ -10,3 +10,23 @@ Py_GetPlatform(void) + { + return PLATFORM; + } ++ ++#ifndef ARCH ++#define ARCH "unknown" ++#endif ++ ++const char * ++Py_GetArch(void) ++{ ++ return ARCH; ++} ++ ++#ifndef LIB ++#define LIB "lib" ++#endif ++ ++const char * ++Py_GetLib(void) ++{ ++ return LIB; ++} +Index: Python-3.4.2/Python/sysmodule.c +=================================================================== +--- Python-3.4.2.orig/Python/sysmodule.c ++++ Python-3.4.2/Python/sysmodule.c +@@ -1697,6 +1697,10 @@ _PySys_Init(void) + PyUnicode_FromString(Py_GetCopyright())); + SET_SYS_FROM_STRING("platform", + PyUnicode_FromString(Py_GetPlatform())); ++ SET_SYS_FROM_STRING("arch", ++ PyUnicode_FromString(Py_GetArch())); ++ SET_SYS_FROM_STRING("lib", ++ PyUnicode_FromString(Py_GetLib())); + SET_SYS_FROM_STRING("executable", + PyUnicode_FromWideChar( + Py_GetProgramFullPath(), -1)); +Index: Python-3.4.2/setup.py +=================================================================== +--- Python-3.4.2.orig/setup.py ++++ Python-3.4.2/setup.py +@@ -454,7 +454,7 @@ class PyBuildExt(build_ext): + # directories (i.e. '.' and 'Include') must be first. See issue + # 10520. + if not cross_compiling: +- add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib') ++ add_dir_to_list(self.compiler.library_dirs, os.path.join('/usr/local', sys.lib)) + add_dir_to_list(self.compiler.include_dirs, '/usr/local/include') + # only change this for cross builds for 3.3, issues on Mageia + if cross_compiling: +@@ -512,8 +512,7 @@ class PyBuildExt(build_ext): + # be assumed that no additional -I,-L directives are needed. + if not cross_compiling: + lib_dirs = self.compiler.library_dirs + [ +- '/lib64', '/usr/lib64', +- '/lib', '/usr/lib', ++ '/' + sys.lib, '/usr/' + sys.lib, + ] + inc_dirs = self.compiler.include_dirs + ['/usr/include'] + else: +@@ -696,11 +695,11 @@ class PyBuildExt(build_ext): + elif curses_library: + readline_libs.append(curses_library) + elif self.compiler.find_library_file(lib_dirs + +- ['/usr/lib/termcap'], ++ ['/usr/'+sys.lib+'/termcap'], + 'termcap'): + readline_libs.append('termcap') + exts.append( Extension('readline', ['readline.c'], +- library_dirs=['/usr/lib/termcap'], ++ library_dirs=['/usr/'+sys.lib+'/termcap'], + extra_link_args=readline_extra_link_args, + libraries=readline_libs) ) + else: +Index: Python-3.4.2/Lib/sysconfig.py +=================================================================== +--- Python-3.4.2.orig/Lib/sysconfig.py ++++ Python-3.4.2/Lib/sysconfig.py +@@ -20,10 +20,10 @@ __all__ = [ + + _INSTALL_SCHEMES = { + 'posix_prefix': { +- 'stdlib': '{installed_base}/lib/python{py_version_short}', +- 'platstdlib': '{platbase}/lib/python{py_version_short}', ++ 'stdlib': '{installed_base}/'+sys.lib+'/python{py_version_short}', ++ 'platstdlib': '{platbase}/'+sys.lib+'/python{py_version_short}', + 'purelib': '{base}/lib/python{py_version_short}/site-packages', +- 'platlib': '{platbase}/lib/python{py_version_short}/site-packages', ++ 'platlib': '{platbase}/'+sys.lib+'/python{py_version_short}/site-packages', + 'include': + '{installed_base}/include/python{py_version_short}{abiflags}', + 'platinclude': +@@ -32,10 +32,10 @@ _INSTALL_SCHEMES = { + 'data': '{base}', + }, + 'posix_home': { +- 'stdlib': '{installed_base}/lib/python', +- 'platstdlib': '{base}/lib/python', ++ 'stdlib': '{installed_base}/'+sys.lib+'/python', ++ 'platstdlib': '{base}/'+sys.lib+'/python', + 'purelib': '{base}/lib/python', +- 'platlib': '{base}/lib/python', ++ 'platlib': '{base}/'+sys.lib+'/python', + 'include': '{installed_base}/include/python', + 'platinclude': '{installed_base}/include/python', + 'scripts': '{base}/bin', +@@ -61,10 +61,10 @@ _INSTALL_SCHEMES = { + 'data': '{userbase}', + }, + 'posix_user': { +- 'stdlib': '{userbase}/lib/python{py_version_short}', +- 'platstdlib': '{userbase}/lib/python{py_version_short}', ++ 'stdlib': '{userbase}/'+sys.lib+'/python{py_version_short}', ++ 'platstdlib': '{userbase}/'+sys.lib+'/python{py_version_short}', + 'purelib': '{userbase}/lib/python{py_version_short}/site-packages', +- 'platlib': '{userbase}/lib/python{py_version_short}/site-packages', ++ 'platlib': '{userbase}/'+sys.lib+'/python{py_version_short}/site-packages', + 'include': '{userbase}/include/python{py_version_short}', + 'scripts': '{userbase}/bin', + 'data': '{userbase}', +Index: Python-3.4.2/configure.ac +=================================================================== +--- Python-3.4.2.orig/configure.ac ++++ Python-3.4.2/configure.ac +@@ -791,6 +791,41 @@ esac + MULTIARCH=$($CC --print-multiarch 2>/dev/null) + AC_SUBST(MULTIARCH) + ++AC_SUBST(ARCH) ++AC_MSG_CHECKING(ARCH) ++ARCH=`uname -m` ++case $ARCH in ++i?86) ARCH=i386;; ++esac ++AC_MSG_RESULT($ARCH) ++ ++AC_SUBST(LIB) ++AC_MSG_CHECKING(LIB) ++case $ac_sys_system in ++Linux*) ++ # Test if the compiler is 64bit ++ echo 'int i;' > conftest.$ac_ext ++ python_cv_cc_64bit_output=no ++ if AC_TRY_EVAL(ac_compile); then ++ case `/usr/bin/file conftest.$ac_objext` in ++ *"ELF 64"*) ++ python_cv_cc_64bit_output=yes ++ ;; ++ esac ++ fi ++ rm -rf conftest* ++ ;; ++esac ++ ++case $ARCH:$python_cv_cc_64bit_output in ++ppc64:yes | powerpc64:yes | s390x:yes | sparc64:yes | x86_64:yes) ++ LIB="lib64" ++ ;; ++*:*) ++ LIB="lib" ++ ;; ++esac ++AC_MSG_RESULT($LIB) + + AC_SUBST(LIBRARY) + AC_MSG_CHECKING(LIBRARY) +Index: Python-3.4.2/Lib/site.py +=================================================================== +--- Python-3.4.2.orig/Lib/site.py ++++ Python-3.4.2/Lib/site.py +@@ -304,13 +304,19 @@ def getsitepackages(prefixes=None): + seen.add(prefix) + + if os.sep == '/': +- sitepackages.append(os.path.join(prefix, "lib", ++ sitepackages.append(os.path.join(prefix, sys.lib, + "python" + sys.version[:3], + "site-packages")) +- sitepackages.append(os.path.join(prefix, "lib", "site-python")) ++ if sys.lib != "lib": ++ sitepackages.append(os.path.join(prefix, "lib", ++ "python" + sys.version[:3], ++ "site-packages")) ++ sitepackages.append(os.path.join(prefix, sys.lib, "site-python")) ++ if sys.lib != "lib": ++ sitepackages.append(os.path.join(prefix, sys.lib, "site-python")) + else: + sitepackages.append(prefix) +- sitepackages.append(os.path.join(prefix, "lib", "site-packages")) ++ sitepackages.append(os.path.join(prefix, sys.lib, "site-packages")) + if sys.platform == "darwin": + # for framework builds *only* we add the standard Apple + # locations. diff --git a/yocto-poky/meta/recipes-devtools/python/python3/python-config.patch b/yocto-poky/meta/recipes-devtools/python/python3/python-config.patch new file mode 100644 index 000000000..f23b8b7df --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python3/python-config.patch @@ -0,0 +1,46 @@ +python-config: Revert to using distutils.sysconfig + +The newer sysconfig module shares some code with distutils.sysconfig, but the same modifications as in + +12-distutils-prefix-is-inside-staging-area.patch makes distutils.sysconfig + +affect the native runtime as well as cross building. Use the old, patched +implementation which returns paths in the staging directory and for the target, +as appropriate. + +Upstream-Status: Inappropriate [Embedded Specific] + +Signed-off-by: Tyler Hall <tylerwhall@gmail.com> +: +Index: Python-3.3.3/Misc/python-config.in +=================================================================== +--- Python-3.3.3.orig/Misc/python-config.in ++++ Python-3.3.3/Misc/python-config.in +@@ -4,7 +4,7 @@ + import getopt + import os + import sys +-import sysconfig ++from distutils import sysconfig + + valid_opts = ['prefix', 'exec-prefix', 'includes', 'libs', 'cflags', + 'ldflags', 'extension-suffix', 'help', 'abiflags', 'configdir'] +@@ -32,14 +32,14 @@ if '--help' in opt_flags: + + for opt in opt_flags: + if opt == '--prefix': +- print(sysconfig.get_config_var('prefix')) ++ print(sysconfig.PREFIX) + + elif opt == '--exec-prefix': +- print(sysconfig.get_config_var('exec_prefix')) ++ print(sysconfig.EXEC_PREFIX) + + elif opt in ('--includes', '--cflags'): +- flags = ['-I' + sysconfig.get_path('include'), +- '-I' + sysconfig.get_path('platinclude')] ++ flags = ['-I' + sysconfig.get_python_inc(), ++ '-I' + sysconfig.get_python_inc(plat_specific=True)] + if opt == '--cflags': + flags.extend(getvar('CFLAGS').split()) + print(' '.join(flags)) diff --git a/yocto-poky/meta/recipes-devtools/python/python3/python3-setup.py-no-host-headers-libs.patch b/yocto-poky/meta/recipes-devtools/python/python3/python3-setup.py-no-host-headers-libs.patch new file mode 100644 index 000000000..2bc8b8c46 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python3/python3-setup.py-no-host-headers-libs.patch @@ -0,0 +1,33 @@ +From 43238e1ac13e32984d015c92a5841f3de1fe1d15 Mon Sep 17 00:00:00 2001 +From: Jackie Huang <jackie.huang@windriver.com> +Date: Tue, 18 Nov 2014 00:07:07 -0500 +Subject: [PATCH] setup.py: no host headers libs + +When we are cross-compiling, setup.py should never look in /usr +or /usr/local to find headers or libraries. + +Upstream-Status: Inappropriate [Cross compile specific] + +Signed-off-by: Jackie Huang <jackie.huang@windriver.com> +--- + setup.py | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/setup.py b/setup.py +index f020b28..e8339cd 100644 +--- a/setup.py ++++ b/setup.py +@@ -444,10 +444,7 @@ class PyBuildExt(build_ext): + if not cross_compiling: + add_dir_to_list(self.compiler.library_dirs, os.path.join('/usr/local', sys.lib)) + add_dir_to_list(self.compiler.include_dirs, '/usr/local/include') +- # only change this for cross builds for 3.3, issues on Mageia +- if cross_compiling: + self.add_gcc_paths() +- if not cross_compiling: + self.add_multiarch_paths() + + # Add paths specified in the environment variables LDFLAGS and +-- +2.0.0 + diff --git a/yocto-poky/meta/recipes-devtools/python/python3/python3-use-CROSSPYTHONPATH-for-PYTHON_FOR_BUILD.patch b/yocto-poky/meta/recipes-devtools/python/python3/python3-use-CROSSPYTHONPATH-for-PYTHON_FOR_BUILD.patch new file mode 100644 index 000000000..74490d93a --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python3/python3-use-CROSSPYTHONPATH-for-PYTHON_FOR_BUILD.patch @@ -0,0 +1,28 @@ +From 53ed216d7bf70dd2a925432b6805a701e5fc3e0e Mon Sep 17 00:00:00 2001 +From: Jackie Huang <jackie.huang@windriver.com> +Date: Mon, 17 Nov 2014 06:44:47 +0000 +Subject: [PATCH] python3 use CROSSPYTHONPATH for PYTHON_FOR_BUILD + +Upstream-Status: Inappropriate [Cross compile specific] + +Signed-off-by: Jackie Huang <jackie.huang@windriver.com> +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 989baf9..2890c96 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -67,7 +67,7 @@ if test "$cross_compiling" = yes; then + AC_MSG_ERROR([python$PACKAGE_VERSION interpreter not found]) + fi + AC_MSG_RESULT($interp) +- PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib:$(srcdir)/Lib/$(PLATDIR) '$interp ++ PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(CROSSPYTHONPATH) '$interp + fi + elif test "$cross_compiling" = maybe; then + AC_MSG_ERROR([Cross compiling required --host=HOST-TUPLE and --build=ARCH]) +-- +2.0.1 + diff --git a/yocto-poky/meta/recipes-devtools/python/python3/setup.py-check-cross_compiling-when-get-FLAGS.patch b/yocto-poky/meta/recipes-devtools/python/python3/setup.py-check-cross_compiling-when-get-FLAGS.patch new file mode 100644 index 000000000..fc2e12dfe --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python3/setup.py-check-cross_compiling-when-get-FLAGS.patch @@ -0,0 +1,50 @@ +From 8dad810f3a3d073f09ad72e1a3ee0a895eab2ca1 Mon Sep 17 00:00:00 2001 +From: Robert Yang <liezhi.yang@windriver.com> +Date: Sun, 18 Jan 2015 19:05:36 -0800 +Subject: [PATCH] setup.py:check cross_compiling when get FLAGS + +Fixed when compile target pythnon3: +gcc -isystem/path/to/sysroots/x86_64-linux/usr/include \ + -L=/path/to/sysroots/x86_64-linux/usr/lib + +This is incorrect, the native sysroot should not be used by target +python3. + +Upstream-Status: Pending + +Signed-off-by: Robert Yang <liezhi.yang@windriver.com> +--- + setup.py | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/setup.py b/setup.py +index e8339cd..83fd31f 100644 +--- a/setup.py ++++ b/setup.py +@@ -238,7 +238,10 @@ class PyBuildExt(build_ext): + # unfortunately, distutils doesn't let us provide separate C and C++ + # compilers + if compiler is not None: +- (ccshared,cflags) = sysconfig.get_config_vars('CCSHARED','CFLAGS') ++ if cross_compiling: ++ (ccshared,cflags) = (os.environ.get('CCSHARED') or '', os.environ.get('CFLAGS') or '') ++ else: ++ (ccshared,cflags) = sysconfig.get_config_vars('CCSHARED','CFLAGS') + args['compiler_so'] = compiler + ' ' + ccshared + ' ' + cflags + self.compiler.set_executables(**args) + +@@ -457,7 +460,10 @@ class PyBuildExt(build_ext): + ('LDFLAGS', '-R', self.compiler.runtime_library_dirs), + ('LDFLAGS', '-L', self.compiler.library_dirs), + ('CPPFLAGS', '-I', self.compiler.include_dirs)): +- env_val = sysconfig.get_config_var(env_var) ++ if cross_compiling: ++ env_val = os.environ.get(env_var) ++ else: ++ env_val = sysconfig.get_config_var(env_var) + if env_val: + # To prevent optparse from raising an exception about any + # options in env_val that it doesn't know about we strip out +-- +1.7.9.5 + diff --git a/yocto-poky/meta/recipes-devtools/python/python3/setup.py-find-libraries-in-staging-dirs.patch b/yocto-poky/meta/recipes-devtools/python/python3/setup.py-find-libraries-in-staging-dirs.patch new file mode 100644 index 000000000..f26bd38b0 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python3/setup.py-find-libraries-in-staging-dirs.patch @@ -0,0 +1,30 @@ +Patch setup.py so that the detect_modules() function looks for required +libraries and headers in STAGING_LIBDIR / STAGING_INCDIR. + +Without this patch, several extension modules are not built, even though +their dependencies are present in the compiler's search paths. +The result is the following warning, and ultimately incomplete packages: + +| The necessary bits to build these optional modules were not found: +| _bz2 _curses_panel _dbm +| _gdbm _lzma _sqlite3 +| nis readline zlib +| To find the necessary bits, look in setup.py in detect_modules() for the module's name. + +Upstream-Status: Inappropriate [Cross compile specific] + +Signed-off-by: Dominic Sacré <dominic.sacre@gmx.de> + +Index: Python-3.4.3/setup.py +=================================================================== +--- Python-3.4.3.orig/setup.py ++++ Python-3.4.3/setup.py +@@ -521,6 +521,8 @@ class PyBuildExt(build_ext): + else: + lib_dirs = self.compiler.library_dirs[:] + inc_dirs = self.compiler.include_dirs[:] ++ lib_dirs.append(os.environ.get('STAGING_LIBDIR')) ++ inc_dirs.append(os.environ.get('STAGING_INCDIR')) + exts = [] + missing = [] + diff --git a/yocto-poky/meta/recipes-devtools/python/python3/setuptweaks.patch b/yocto-poky/meta/recipes-devtools/python/python3/setuptweaks.patch new file mode 100644 index 000000000..3a91b1916 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python3/setuptweaks.patch @@ -0,0 +1,57 @@ +This patch removes various ways native system options can pass into the python +compilation and somehow break C modules. + +Upstream-Status: Inappropriate [OE Specific] + +RP 2012/04/23 + +Index: Python-2.7.2/setup.py +=================================================================== +--- Python-2.7.2.orig/setup.py 2012-04-23 20:03:47.295582553 +0000 ++++ Python-2.7.2/setup.py 2012-04-23 20:03:15.000000000 +0000 +@@ -231,7 +231,13 @@ + # compilers + if compiler is not None: + (ccshared,cflags) = sysconfig.get_config_vars('CCSHARED','CFLAGS') +- args['compiler_so'] = compiler + ' ' + ccshared + ' ' + cflags ++ # Need to filter out -isysroot from the flags. Ideally should ++ # figure out target flags here. ++ flags = [] ++ for f in cflags.split(): ++ if not f.startswith("-isystem"): ++ flags.append(f) ++ args['compiler_so'] = compiler + ' ' + ccshared + ' ' + ' '.join(flags) + self.compiler.set_executables(**args) + + build_ext.build_extensions(self) +@@ -393,7 +399,6 @@ + # into configure and stored in the Makefile (issue found on OS X 10.3). + for env_var, arg_name, dir_list in ( + ('LDFLAGS', '-R', self.compiler.runtime_library_dirs), +- ('LDFLAGS', '-L', self.compiler.library_dirs), + ('CPPFLAGS', '-I', self.compiler.include_dirs)): + env_val = sysconfig.get_config_var(env_var) + if env_val: +@@ -419,16 +424,16 @@ + for directory in reversed(options.dirs): + add_dir_to_list(dir_list, directory) + +- if os.path.normpath(sys.prefix) != '/usr' \ +- and not sysconfig.get_config_var('PYTHONFRAMEWORK'): ++# if os.path.normpath(sys.prefix) != '/usr' \ ++# and not sysconfig.get_config_var('PYTHONFRAMEWORK'): + # OSX note: Don't add LIBDIR and INCLUDEDIR to building a framework + # (PYTHONFRAMEWORK is set) to avoid # linking problems when + # building a framework with different architectures than + # the one that is currently installed (issue #7473) +- add_dir_to_list(self.compiler.library_dirs, +- sysconfig.get_config_var("LIBDIR")) +- add_dir_to_list(self.compiler.include_dirs, +- sysconfig.get_config_var("INCLUDEDIR")) ++# add_dir_to_list(self.compiler.library_dirs, ++# sysconfig.get_config_var("LIBDIR")) ++# add_dir_to_list(self.compiler.include_dirs, ++# sysconfig.get_config_var("INCLUDEDIR")) + + try: + have_unicode = unicode diff --git a/yocto-poky/meta/recipes-devtools/python/python3/shutil-follow-symlink-fix.patch b/yocto-poky/meta/recipes-devtools/python/python3/shutil-follow-symlink-fix.patch new file mode 100644 index 000000000..802b1c720 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python3/shutil-follow-symlink-fix.patch @@ -0,0 +1,17 @@ +shutils should consider symlinks + +-Khem + +Upstream-Status: Pending + +--- a/Lib/shutil.py 2013-01-29 12:31:06.926555779 -0800 ++++ b/Lib/shutil.py 2013-01-29 16:31:39.097554182 -0800 +@@ -132,7 +132,7 @@ def copymode(src, dst, *, follow_symlink + st = stat_func(src) + chmod_func(dst, stat.S_IMODE(st.st_mode)) + +-if hasattr(os, 'listxattr'): ++if hasattr(os, 'listxattr') and os.listxattr in os.supports_follow_symlinks: + def _copyxattr(src, dst, *, follow_symlinks=True): + """Copy extended filesystem attributes from `src` to `dst`. + diff --git a/yocto-poky/meta/recipes-devtools/python/python3/sitecustomize.py b/yocto-poky/meta/recipes-devtools/python/python3/sitecustomize.py new file mode 100644 index 000000000..4c8b5e2ba --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python3/sitecustomize.py @@ -0,0 +1,37 @@ +# OpenEmbedded sitecustomize.py (C) 2002-2008 Michael 'Mickey' Lauer <mlauer@vanille-media.de> +# GPLv2 or later +# Version: 20081123 +# Features: +# * set proper default encoding +# * enable readline completion in the interactive interpreter +# * load command line history on startup +# * save command line history on exit + +import os + +def __exithandler(): + try: + readline.write_history_file( "%s/.python-history" % os.getenv( "HOME", "/tmp" ) ) + except IOError: + pass + +def __registerExitHandler(): + import atexit + atexit.register( __exithandler ) + +def __enableReadlineSupport(): + readline.set_history_length( 1000 ) + readline.parse_and_bind( "tab: complete" ) + try: + readline.read_history_file( "%s/.python-history" % os.getenv( "HOME", "/tmp" ) ) + except IOError: + pass + +import sys +try: + import rlcompleter, readline +except ImportError: + pass +else: + __registerExitHandler() + __enableReadlineSupport() diff --git a/yocto-poky/meta/recipes-devtools/python/python3/sysconfig.py-add-_PYTHON_PROJECT_SRC.patch b/yocto-poky/meta/recipes-devtools/python/python3/sysconfig.py-add-_PYTHON_PROJECT_SRC.patch new file mode 100644 index 000000000..de07643f2 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python3/sysconfig.py-add-_PYTHON_PROJECT_SRC.patch @@ -0,0 +1,54 @@ +From fc93b3cc23b4f9698ae92a42986dbb02b6f19588 Mon Sep 17 00:00:00 2001 +From: Robert Yang <liezhi.yang@windriver.com> +Date: Sun, 18 Jan 2015 06:29:50 -0800 +Subject: [PATCH] sysconfig.py: add _PYTHON_PROJECT_SRC + +python3 has introduced _PYTHON_PROJECT_BASE which is used for separate B +and S, but it doesn't work when compile Modules, the target python3 runs +python3-native's sysconfig to get srcdir which is the native's, there +would be errors when native's srcdir has been removed, add +_PYTHON_PROJECT_SRC to fix the problem. + +Upstream-Status: Pending + +Signed-off-by: Robert Yang <liezhi.yang@windriver.com> +--- + Lib/distutils/sysconfig.py | 5 ++++- + Lib/sysconfig.py | 5 ++++- + 2 files changed, 8 insertions(+), 2 deletions(-) + +diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py +index a545ab9..74317d1 100644 +--- a/Lib/distutils/sysconfig.py ++++ b/Lib/distutils/sysconfig.py +@@ -554,7 +554,10 @@ def get_config_vars(*args): + _config_vars['exec_prefix'] = EXEC_PREFIX + + # Always convert srcdir to an absolute path +- srcdir = _config_vars.get('srcdir', project_base) ++ if "_PYTHON_PROJECT_SRC" in os.environ: ++ srcdir = os.path.abspath(os.environ["_PYTHON_PROJECT_SRC"]) ++ else: ++ srcdir = _config_vars.get('srcdir', project_base) + if os.name == 'posix': + if python_build: + # If srcdir is a relative path (typically '.' or '..') +diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py +index 7287f11..cc92998 100644 +--- a/Lib/sysconfig.py ++++ b/Lib/sysconfig.py +@@ -562,7 +562,10 @@ def get_config_vars(*args): + _CONFIG_VARS['userbase'] = _getuserbase() + + # Always convert srcdir to an absolute path +- srcdir = _CONFIG_VARS.get('srcdir', _PROJECT_BASE) ++ if "_PYTHON_PROJECT_SRC" in os.environ: ++ srcdir = os.path.abspath(os.environ["_PYTHON_PROJECT_SRC"]) ++ else: ++ srcdir = _CONFIG_VARS.get('srcdir', _PROJECT_BASE) + if os.name == 'posix': + if _PYTHON_BUILD: + # If srcdir is a relative path (typically '.' or '..') +-- +1.7.9.5 + diff --git a/yocto-poky/meta/recipes-devtools/python/python3/sysroot-include-headers.patch b/yocto-poky/meta/recipes-devtools/python/python3/sysroot-include-headers.patch new file mode 100644 index 000000000..785b5567f --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python3/sysroot-include-headers.patch @@ -0,0 +1,35 @@ +Dont search hardcoded paths, we might be doing a cross-build +Use '=' in-front to let compiler append sysroot, if it can + +Should fix things like + +configure:6972: arm-angstrom-linux-gnueabi-gcc -march=armv7-a -mthumb-interwork -mfloat-abi=hard -mfpu=neon -mtune=cortex-a8 -DNDEBUG -fno-inline -D__SOFTFP__ --sysroot=/build/v2013.06/build/tmp-angstrom_v2013_06-eglibc/sysroots/beaglebone -c -O2 -pipe -g -feliminate-unused-debug-types -I/usr/include/ncursesw conftest.c >&5 +cc1: warning: include location "/usr/include/ncursesw" is unsafe for cross-compilation [-Wpoison-system-directories] + + +Signed-off-by: Khem Raj +Upstream-Status: Pending + + +Index: Python-3.3.2/setup.py +=================================================================== +--- Python-3.3.2.orig/setup.py 2013-07-30 01:30:48.000000000 -0700 ++++ Python-3.3.2/setup.py 2013-07-30 01:41:11.697862723 -0700 +@@ -1210,7 +1210,7 @@ + panel_library = 'panel' + if curses_library == 'ncursesw': + curses_defines.append(('HAVE_NCURSESW', '1')) +- curses_includes.append('/usr/include/ncursesw') ++ curses_includes.append('=/usr/include/ncursesw') + # Bug 1464056: If _curses.so links with ncursesw, + # _curses_panel.so must link with panelw. + panel_library = 'panelw' +@@ -1819,7 +1819,7 @@ + if host_platform == 'darwin': + # OS X 10.5 comes with libffi.dylib; the include files are + # in /usr/include/ffi +- inc_dirs.append('/usr/include/ffi') ++ inc_dirs.append('=/usr/include/ffi') + + ffi_inc = [sysconfig.get_config_var("LIBFFI_INCLUDEDIR")] + if not ffi_inc or ffi_inc[0] == '': diff --git a/yocto-poky/meta/recipes-devtools/python/python3/unixccompiler.patch b/yocto-poky/meta/recipes-devtools/python/python3/unixccompiler.patch new file mode 100644 index 000000000..7b90f1388 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python3/unixccompiler.patch @@ -0,0 +1,35 @@ +Upstream-Status: Pending + +The CC variable,sometimes like:"x86_64-poky-linux-gcc -m64 --sysroot=/${TMPDIR}/sysroots/qemux86-64", contains option information. +This will lead to wrong compiler name "qemux86-64" rather than "x86_64-poky-linux-gcc" when python finding the compiler name. + +Secondly add -L=<path> this way linker will be able to resolve /usr/lib w.r.t sysroot and not +use hardcoded /usr/lib to look for libs which is wrong in cross compile environment and this will work +ok on native systems too since sysroot for native compilers is / + +Signed-off-by: Mei Lei <lei.mei@intel.com> +Signed-off-by: Khem Raj <raj.khem@gmail.com> +Index: Python-3.3.2/Lib/distutils/unixccompiler.py +=================================================================== +--- Python-3.3.2.orig/Lib/distutils/unixccompiler.py 2013-05-15 09:32:54.000000000 -0700 ++++ Python-3.3.2/Lib/distutils/unixccompiler.py 2013-08-01 00:58:18.629056286 -0700 +@@ -202,7 +202,9 @@ + # ccompiler.py. + + def library_dir_option(self, dir): +- return "-L" + dir ++ if dir.startswith("."): ++ return "-L" + dir ++ return "-L=" + dir + + def _is_gcc(self, compiler_name): + return "gcc" in compiler_name or "g++" in compiler_name +@@ -221,7 +221,7 @@ + # this time, there's no way to determine this information from + # the configuration data stored in the Python installation, so + # we use this hack. +- compiler = os.path.basename(sysconfig.get_config_var("CC")) ++ compiler = sysconfig.get_config_var("CC") + if sys.platform[:6] == "darwin": + # MacOSX's linker doesn't understand the -R flag at all + return "-L" + dir diff --git a/yocto-poky/meta/recipes-devtools/python/python3_3.4.3.bb b/yocto-poky/meta/recipes-devtools/python/python3_3.4.3.bb new file mode 100644 index 000000000..f61d278d7 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python3_3.4.3.bb @@ -0,0 +1,225 @@ +require recipes-devtools/python/python.inc + +DEPENDS = "python3-native libffi bzip2 db gdbm openssl readline sqlite3 zlib virtual/libintl xz" +PR = "${INC_PR}.0" +PYTHON_MAJMIN = "3.4" +PYTHON_BINABI= "${PYTHON_MAJMIN}m" +DISTRO_SRC_URI ?= "file://sitecustomize.py" +DISTRO_SRC_URI_linuxstdbase = "" +SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz \ +file://python-config.patch \ +file://000-cross-compile.patch \ +file://020-dont-compile-python-files.patch \ +file://030-fixup-include-dirs.patch \ +file://070-dont-clean-ipkg-install.patch \ +file://080-distutils-dont_adjust_files.patch \ +file://110-enable-zlib.patch \ +file://130-readline-setup.patch \ +file://150-fix-setupterm.patch \ +file://0001-h2py-Fix-issue-13032-where-it-fails-with-UnicodeDeco.patch \ +file://makerace.patch \ +${DISTRO_SRC_URI} \ +" + +SRC_URI += "\ + file://03-fix-tkinter-detection.patch \ + file://04-default-is-optimized.patch \ + file://avoid_warning_about_tkinter.patch \ + file://cgi_py.patch \ + file://host_include_contamination.patch \ + file://python-3.3-multilib.patch \ + file://shutil-follow-symlink-fix.patch \ + file://sysroot-include-headers.patch \ + file://unixccompiler.patch \ + file://avoid-ncursesw-include-path.patch \ + file://python3-use-CROSSPYTHONPATH-for-PYTHON_FOR_BUILD.patch \ + file://python3-setup.py-no-host-headers-libs.patch \ + file://sysconfig.py-add-_PYTHON_PROJECT_SRC.patch \ + file://setup.py-check-cross_compiling-when-get-FLAGS.patch \ + file://setup.py-find-libraries-in-staging-dirs.patch \ + " +SRC_URI[md5sum] = "7d092d1bba6e17f0d9bd21b49e441dd5" +SRC_URI[sha256sum] = "b5b3963533768d5fc325a4d7a6bd6f666726002d696f1d399ec06b043ea996b8" + +LIC_FILES_CHKSUM = "file://LICENSE;md5=dd98d01d471fac8d8dbdd975229dba03" + +S = "${WORKDIR}/Python-${PV}" + +inherit autotools multilib_header python3native pkgconfig + +CONFIGUREOPTS += " --with-system-ffi " + +CACHED_CONFIGUREVARS = "ac_cv_have_chflags=no \ + ac_cv_have_lchflags=no \ + ac_cv_have_long_long_format=yes \ + ac_cv_buggy_getaddrinfo=no \ + ac_cv_file__dev_ptmx=yes \ + ac_cv_file__dev_ptc=no \ +" +# The 3 lines below are copied from the libffi recipe, ctypes ships its own copy of the libffi sources +#Somehow gcc doesn't set __SOFTFP__ when passing -mfloatabi=softp :( +TARGET_CC_ARCH_append_armv6 = " -D__SOFTFP__" +TARGET_CC_ARCH_append_armv7a = " -D__SOFTFP__" +TARGET_CC_ARCH += "-DNDEBUG -fno-inline" +EXTRA_OEMAKE += "CROSS_COMPILE=yes" +EXTRA_OECONF += "CROSSPYTHONPATH=${STAGING_LIBDIR_NATIVE}/python${PYTHON_MAJMIN}/lib-dynload/ --without-ensurepip" + +export CROSS_COMPILE = "${TARGET_PREFIX}" +export _PYTHON_PROJECT_BASE = "${B}" +export _PYTHON_PROJECT_SRC = "${S}" +export CCSHARED = "-fPIC" + +# Fix ctypes cross compilation +export CROSSPYTHONPATH = "${B}/build/lib.linux-${TARGET_ARCH}-${PYTHON_MAJMIN}:${S}/Lib:${S}/Lib/plat-linux" + +# No ctypes option for python 3 +PYTHONLSBOPTS = "" + +do_configure_append() { + rm -f ${S}/Makefile.orig + autoreconf -Wcross --verbose --install --force --exclude=autopoint ../Python-${PV}/Modules/_ctypes/libffi +} + +do_compile() { + # regenerate platform specific files, because they depend on system headers + cd ${S}/Lib/plat-linux* + include=${STAGING_INCDIR} ${STAGING_BINDIR_NATIVE}/python3-native/python3 \ + ${S}/Tools/scripts/h2py.py -i '(u_long)' \ + ${STAGING_INCDIR}/dlfcn.h \ + ${STAGING_INCDIR}/linux/cdrom.h \ + ${STAGING_INCDIR}/netinet/in.h \ + ${STAGING_INCDIR}/sys/types.h + sed -e 's,${STAGING_DIR_HOST},,g' -i *.py + cd - + + + # remove any bogus LD_LIBRARY_PATH + sed -i -e s,RUNSHARED=.*,RUNSHARED=, Makefile + + if [ ! -f Makefile.orig ]; then + install -m 0644 Makefile Makefile.orig + fi + sed -i -e 's,^CONFIGURE_LDFLAGS=.*,CONFIGURE_LDFLAGS=-L. -L${STAGING_LIBDIR},g' \ + -e 's,libdir=${libdir},libdir=${STAGING_LIBDIR},g' \ + -e 's,libexecdir=${libexecdir},libexecdir=${STAGING_DIR_HOST}${libexecdir},g' \ + -e 's,^LIBDIR=.*,LIBDIR=${STAGING_LIBDIR},g' \ + -e 's,includedir=${includedir},includedir=${STAGING_INCDIR},g' \ + -e 's,^INCLUDEDIR=.*,INCLUDE=${STAGING_INCDIR},g' \ + -e 's,^CONFINCLUDEDIR=.*,CONFINCLUDE=${STAGING_INCDIR},g' \ + Makefile + # save copy of it now, because if we do it in do_install and + # then call do_install twice we get Makefile.orig == Makefile.sysroot + install -m 0644 Makefile Makefile.sysroot + + oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python3-native/pgen \ + HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python3-native/python3 \ + STAGING_LIBDIR=${STAGING_LIBDIR} \ + STAGING_BASELIBDIR=${STAGING_BASELIBDIR} \ + STAGING_INCDIR=${STAGING_INCDIR} \ + BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \ + LIB=${baselib} \ + ARCH=${TARGET_ARCH} \ + OPT="${CFLAGS}" libpython3.so + + oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python3-native/pgen \ + HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python3-native/python3 \ + STAGING_LIBDIR=${STAGING_LIBDIR} \ + STAGING_INCDIR=${STAGING_INCDIR} \ + STAGING_BASELIBDIR=${STAGING_BASELIBDIR} \ + BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \ + LIB=${baselib} \ + ARCH=${TARGET_ARCH} \ + OPT="${CFLAGS}" +} + +do_install() { + # make install needs the original Makefile, or otherwise the inclues would + # go to ${D}${STAGING...}/... + install -m 0644 Makefile.orig Makefile + + install -d ${D}${libdir}/pkgconfig + install -d ${D}${libdir}/python${PYTHON_MAJMIN}/config + + # rerun the build once again with original makefile this time + # run install in a separate step to avoid compile/install race + oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python3-native/pgen \ + HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python3-native/python3 \ + STAGING_LIBDIR=${STAGING_LIBDIR} \ + STAGING_INCDIR=${STAGING_INCDIR} \ + STAGING_BASELIBDIR=${STAGING_BASELIBDIR} \ + BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \ + LIB=${baselib} \ + ARCH=${TARGET_ARCH} \ + DESTDIR=${D} LIBDIR=${libdir} + + oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python3-native/pgen \ + HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python3-native/python3 \ + STAGING_LIBDIR=${STAGING_LIBDIR} \ + STAGING_INCDIR=${STAGING_INCDIR} \ + STAGING_BASELIBDIR=${STAGING_BASELIBDIR} \ + BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \ + LIB=${baselib} \ + ARCH=${TARGET_ARCH} \ + DESTDIR=${D} LIBDIR=${libdir} install + + # avoid conflict with 2to3 from Python 2 + rm -f ${D}/${bindir}/2to3 + + install -m 0644 Makefile.sysroot ${D}/${libdir}/python${PYTHON_MAJMIN}/config/Makefile + + if [ -e ${WORKDIR}/sitecustomize.py ]; then + install -m 0644 ${WORKDIR}/sitecustomize.py ${D}/${libdir}/python${PYTHON_MAJMIN} + fi + + oe_multilib_header python${PYTHON_BINABI}/pyconfig.h +} + +do_install_append_class-nativesdk () { + create_wrapper ${D}${bindir}/python${PYTHON_MAJMIN} TERMINFO_DIRS='${sysconfdir}/terminfo:/etc/terminfo:/usr/share/terminfo:/usr/share/misc/terminfo:/lib/terminfo' +} + +SSTATE_SCAN_FILES += "Makefile" +PACKAGE_PREPROCESS_FUNCS += "py_package_preprocess" + +py_package_preprocess () { + # copy back the old Makefile to fix target package + install -m 0644 ${B}/Makefile.orig ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config/Makefile + # Remove references to buildmachine paths in target Makefile and _sysconfigdata + sed -i -e 's:--sysroot=${STAGING_DIR_TARGET}::g' -e s:'--with-libtool-sysroot=${STAGING_DIR_TARGET}'::g \ + ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config/Makefile \ + ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata.py +} + +require python-${PYTHON_MAJMIN}-manifest.inc + +# manual dependency additions +RPROVIDES_${PN}-core = "${PN}" +RRECOMMENDS_${PN}-core = "${PN}-readline" +RRECOMMENDS_${PN}-crypt = "openssl" +RRECOMMENDS_${PN}-crypt_class-nativesdk = "nativesdk-openssl" + +FILES_${PN}-2to3 += "${bindir}/2to3-${PYTHON_MAJMIN}" +FILES_${PN}-pydoc += "${bindir}/pydoc${PYTHON_MAJMIN} ${bindir}/pydoc3" +FILES_${PN}-idle += "${bindir}/idle3 ${bindir}/idle${PYTHON_MAJMIN}" + +PACKAGES =+ "${PN}-pyvenv" +FILES_${PN}-pyvenv += "${bindir}/pyvenv-${PYTHON_MAJMIN} ${bindir}/pyvenv" + +# package libpython3 +PACKAGES =+ "libpython3 libpython3-staticdev" +FILES_libpython3 = "${libdir}/libpython*.so.*" +FILES_libpython3-staticdev += "${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_BINABI}/libpython${PYTHON_BINABI}.a" + +# catch debug extensions (isn't that already in python-core-dbg?) +FILES_${PN}-dbg += "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/.debug" + +# catch all the rest (unsorted) +PACKAGES += "${PN}-misc" +RDEPENDS_${PN}-misc += "${PN}-core" +FILES_${PN}-misc = "${libdir}/python${PYTHON_MAJMIN}" + +# catch manpage +PACKAGES += "${PN}-man" +FILES_${PN}-man = "${datadir}/man" + +BBCLASSEXTEND = "nativesdk" diff --git a/yocto-poky/meta/recipes-devtools/python/python_2.7.9.bb b/yocto-poky/meta/recipes-devtools/python/python_2.7.9.bb new file mode 100644 index 000000000..ae4557716 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/python/python_2.7.9.bb @@ -0,0 +1,180 @@ +require python.inc +DEPENDS = "python-native libffi bzip2 db gdbm openssl readline sqlite3 zlib" +PR = "${INC_PR}" + +DISTRO_SRC_URI ?= "file://sitecustomize.py" +DISTRO_SRC_URI_linuxstdbase = "" +SRC_URI += "\ + file://01-use-proper-tools-for-cross-build.patch \ + file://03-fix-tkinter-detection.patch \ + file://06-avoid_usr_lib_termcap_path_in_linking.patch \ + ${DISTRO_SRC_URI} \ + file://multilib.patch \ + file://cgi_py.patch \ + file://setup_py_skip_cross_import_check.patch \ + file://add-md5module-support.patch \ + file://host_include_contamination.patch \ + file://fix_for_using_different_libdir.patch \ + file://setuptweaks.patch \ + file://check-if-target-is-64b-not-host.patch \ + file://search_db_h_in_inc_dirs_and_avoid_warning.patch \ + file://avoid_warning_about_tkinter.patch \ + file://avoid_warning_for_sunos_specific_module.patch \ + file://python-2.7.3-remove-bsdb-rpath.patch \ + file://fix-makefile-for-ptest.patch \ + file://run-ptest \ + file://parallel-makeinst-create-bindir.patch \ + file://use_sysroot_ncurses_instead_of_host.patch \ + file://avoid_parallel_make_races_on_pgen.patch \ +" + +S = "${WORKDIR}/Python-${PV}" + +inherit autotools multilib_header python-dir pythonnative + +CONFIGUREOPTS += " --with-system-ffi " + +# The 3 lines below are copied from the libffi recipe, ctypes ships its own copy of the libffi sources +#Somehow gcc doesn't set __SOFTFP__ when passing -mfloatabi=softp :( +TARGET_CC_ARCH_append_armv6 = " -D__SOFTFP__" +TARGET_CC_ARCH_append_armv7a = " -D__SOFTFP__" + +# The following is a hack until we drop ac_cv_sizeof_off_t from site files +EXTRA_OECONF += "${@bb.utils.contains('DISTRO_FEATURES', 'largefile', 'ac_cv_sizeof_off_t=8', '', d)} ac_cv_file__dev_ptmx=yes ac_cv_file__dev_ptc=no" + +do_configure_append() { + rm -f ${S}/Makefile.orig + autoreconf -Wcross --verbose --install --force --exclude=autopoint ../Python-${PV}/Modules/_ctypes/libffi +} + +do_compile() { + # regenerate platform specific files, because they depend on system headers + cd ${S}/Lib/plat-linux2 + include=${STAGING_INCDIR} ${STAGING_BINDIR_NATIVE}/python-native/python \ + ${S}/Tools/scripts/h2py.py -i '(u_long)' \ + ${STAGING_INCDIR}/dlfcn.h \ + ${STAGING_INCDIR}/linux/cdrom.h \ + ${STAGING_INCDIR}/netinet/in.h \ + ${STAGING_INCDIR}/sys/types.h + sed -e 's,${STAGING_DIR_HOST},,g' -i *.py + cd - + + # remove any bogus LD_LIBRARY_PATH + sed -i -e s,RUNSHARED=.*,RUNSHARED=, Makefile + + if [ ! -f Makefile.orig ]; then + install -m 0644 Makefile Makefile.orig + fi + sed -i -e 's#^LDFLAGS=.*#LDFLAGS=${LDFLAGS} -L. -L${STAGING_LIBDIR}#g' \ + -e 's,libdir=${libdir},libdir=${STAGING_LIBDIR},g' \ + -e 's,libexecdir=${libexecdir},libexecdir=${STAGING_DIR_HOST}${libexecdir},g' \ + -e 's,^LIBDIR=.*,LIBDIR=${STAGING_LIBDIR},g' \ + -e 's,includedir=${includedir},includedir=${STAGING_INCDIR},g' \ + -e 's,^INCLUDEDIR=.*,INCLUDE=${STAGING_INCDIR},g' \ + -e 's,^CONFINCLUDEDIR=.*,CONFINCLUDE=${STAGING_INCDIR},g' \ + Makefile + # save copy of it now, because if we do it in do_install and + # then call do_install twice we get Makefile.orig == Makefile.sysroot + install -m 0644 Makefile Makefile.sysroot + + export CROSS_COMPILE="${TARGET_PREFIX}" + export PYTHONBUILDDIR="${B}" + + oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python-native/pgen \ + HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python-native/python \ + STAGING_LIBDIR=${STAGING_LIBDIR} \ + STAGING_INCDIR=${STAGING_INCDIR} \ + STAGING_BASELIBDIR=${STAGING_BASELIBDIR} \ + BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \ + OPT="${CFLAGS}" +} + +do_install() { + # make install needs the original Makefile, or otherwise the inclues would + # go to ${D}${STAGING...}/... + install -m 0644 Makefile.orig Makefile + + export CROSS_COMPILE="${TARGET_PREFIX}" + export PYTHONBUILDDIR="${B}" + + # After swizzling the makefile, we need to run the build again. + # install can race with the build so we have to run this first, then install + oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python-native/pgen \ + HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python-native/python \ + CROSSPYTHONPATH=${STAGING_LIBDIR_NATIVE}/python${PYTHON_MAJMIN}/lib-dynload/ \ + STAGING_LIBDIR=${STAGING_LIBDIR} \ + STAGING_INCDIR=${STAGING_INCDIR} \ + STAGING_BASELIBDIR=${STAGING_BASELIBDIR} \ + BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \ + DESTDIR=${D} LIBDIR=${libdir} + + oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python-native/pgen \ + HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python-native/python \ + CROSSPYTHONPATH=${STAGING_LIBDIR_NATIVE}/python${PYTHON_MAJMIN}/lib-dynload/ \ + STAGING_LIBDIR=${STAGING_LIBDIR} \ + STAGING_INCDIR=${STAGING_INCDIR} \ + STAGING_BASELIBDIR=${STAGING_BASELIBDIR} \ + BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \ + DESTDIR=${D} LIBDIR=${libdir} install + + install -m 0644 Makefile.sysroot ${D}/${libdir}/python${PYTHON_MAJMIN}/config/Makefile + + if [ -e ${WORKDIR}/sitecustomize.py ]; then + install -m 0644 ${WORKDIR}/sitecustomize.py ${D}/${libdir}/python${PYTHON_MAJMIN} + fi + + oe_multilib_header python${PYTHON_MAJMIN}/pyconfig.h +} + +do_install_append_class-nativesdk () { + create_wrapper ${D}${bindir}/python2.7 TERMINFO_DIRS='${sysconfdir}/terminfo:/etc/terminfo:/usr/share/terminfo:/usr/share/misc/terminfo:/lib/terminfo' +} + +SSTATE_SCAN_FILES += "Makefile" +PACKAGE_PREPROCESS_FUNCS += "py_package_preprocess" + +py_package_preprocess () { + # copy back the old Makefile to fix target package + install -m 0644 ${B}/Makefile.orig ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config/Makefile + + # Remove references to buildmachine paths in target Makefile and _sysconfigdata + sed -i -e 's:--sysroot=${STAGING_DIR_TARGET}::g' -e s:'--with-libtool-sysroot=${STAGING_DIR_TARGET}'::g \ + ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config/Makefile \ + ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata.py +} + +require python-${PYTHON_MAJMIN}-manifest.inc + +# manual dependency additions +RPROVIDES_${PN}-core = "${PN}" +RRECOMMENDS_${PN}-core = "${PN}-readline" +RRECOMMENDS_${PN}-core_append_class-nativesdk = " nativesdk-python-modules" +RRECOMMENDS_${PN}-crypt = "openssl" + +# package libpython2 +PACKAGES =+ "lib${BPN}2" +FILES_lib${BPN}2 = "${libdir}/libpython*.so.*" + +# catch debug extensions (isn't that already in python-core-dbg?) +FILES_${PN}-dbg += "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/.debug" + +# catch all the rest (unsorted) +PACKAGES += "${PN}-misc" +FILES_${PN}-misc = "${libdir}/python${PYTHON_MAJMIN}" +RDEPENDS_${PN}-ptest = "${PN}-modules ${PN}-misc" +#inherit ptest after "require python-${PYTHON_MAJMIN}-manifest.inc" so PACKAGES doesn't get overwritten +inherit ptest + +# This must come after inherit ptest for the override to take effect +do_install_ptest() { + cp ${B}/Makefile ${D}${PTEST_PATH} + sed -e s:LIBDIR/python/ptest:${PTEST_PATH}:g \ + -e s:LIBDIR:${libdir}:g \ + -i ${D}${PTEST_PATH}/run-ptest +} + +# catch manpage +PACKAGES += "${PN}-man" +FILES_${PN}-man = "${datadir}/man" + +BBCLASSEXTEND = "nativesdk" |