diff options
Diffstat (limited to 'meta/recipes-devtools/python')
161 files changed, 3172 insertions, 6763 deletions
diff --git a/meta/recipes-devtools/python/python-2.7-manifest.inc b/meta/recipes-devtools/python/python-2.7-manifest.inc index 12f775efeb..7ed254bbd6 100644 --- a/meta/recipes-devtools/python/python-2.7-manifest.inc +++ b/meta/recipes-devtools/python/python-2.7-manifest.inc @@ -1,13 +1,12 @@ # 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 " +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}-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}-plistlib ${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" +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}-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}-plistlib ${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" @@ -47,7 +46,7 @@ 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 " +FILES_${PN}-core="${libdir}/python2.7/__future__.* ${libdir}/python2.7/_abcoll.* ${libdir}/python2.7/abc.* ${libdir}/python2.7/ast.* ${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.* ${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" @@ -75,14 +74,14 @@ 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 " +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 ${libdir}/python2.7/config/Makefile " 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" +RDEPENDS_${PN}-distutils="${PN}-core ${PN}-email" FILES_${PN}-distutils="${libdir}/python2.7/config ${libdir}/python2.7/distutils " SUMMARY_${PN}-distutils-staticdev="Python distribution utilities (static libraries)" @@ -93,10 +92,6 @@ 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 " @@ -130,7 +125,7 @@ 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" +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" @@ -170,12 +165,12 @@ RDEPENDS_${PN}-netclient="${PN}-core ${PN}-crypt ${PN}-datetime ${PN}-io ${PN}-l 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" +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/numbers.* " +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" @@ -185,6 +180,10 @@ SUMMARY_${PN}-pkgutil="Python package extension utility support" RDEPENDS_${PN}-pkgutil="${PN}-core" FILES_${PN}-pkgutil="${libdir}/python2.7/pkgutil.* " +SUMMARY_${PN}-plistlib="Generate and parse Mac OS X .plist files" +RDEPENDS_${PN}-plistlib="${PN}-core ${PN}-datetime ${PN}-io" +FILES_${PN}-plistlib="${libdir}/python2.7/plistlib.* " + SUMMARY_${PN}-pprint="Python pretty-print support" RDEPENDS_${PN}-pprint="${PN}-core ${PN}-io" FILES_${PN}-pprint="${libdir}/python2.7/pprint.* " @@ -246,7 +245,7 @@ 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" +RDEPENDS_${PN}-tests="${PN}-core ${PN}-modules" FILES_${PN}-tests="${libdir}/python2.7/test " SUMMARY_${PN}-textutils="Python option parsing, text wrapping and CSV support" @@ -270,8 +269,8 @@ 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.* " +RDEPENDS_${PN}-xml="${PN}-core ${PN}-re" +FILES_${PN}-xml="${libdir}/python2.7/lib-dynload/_elementtree.so ${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" @@ -282,7 +281,7 @@ 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 " +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}-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}-plistlib ${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/meta/recipes-devtools/python/python-3.3-manifest.inc b/meta/recipes-devtools/python/python-3.3-manifest.inc deleted file mode 100644 index 61119c687c..0000000000 --- a/meta/recipes-devtools/python/python-3.3-manifest.inc +++ /dev/null @@ -1,268 +0,0 @@ - -# WARNING: This file is AUTO GENERATED: Manual edits will be lost next time I regenerate the file. -# Generator: '../../../scripts/contrib/python/generate-manifest-3.3.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}-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}-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 " - -PACKAGES="${PN}-dbg ${PN}-2to3 ${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}-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}-modules" - -SUMMARY_${PN}-2to3="Python automated Python 2 to 3 code translator" -RDEPENDS_${PN}-2to3="${PN}-core" -FILES_${PN}-2to3="${bindir}/2to3 ${libdir}/python3.3/lib2to3 " - -SUMMARY_${PN}-audio="Python Audio Handling" -RDEPENDS_${PN}-audio="${PN}-core" -FILES_${PN}-audio="${libdir}/python3.3/wave.* ${libdir}/python3.3/chunk.* ${libdir}/python3.3/sndhdr.* ${libdir}/python3.3/lib-dynload/ossaudiodev.*.so ${libdir}/python3.3/lib-dynload/audioop.*.so ${libdir}/python3.3/audiodev.* ${libdir}/python3.3/sunaudio.* ${libdir}/python3.3/sunau.* ${libdir}/python3.3/toaiff.* " - -SUMMARY_${PN}-codecs="Python codecs, encodings & i18n support" -RDEPENDS_${PN}-codecs="${PN}-core ${PN}-lang" -FILES_${PN}-codecs="${libdir}/python3.3/codecs.* ${libdir}/python3.3/encodings ${libdir}/python3.3/gettext.* ${libdir}/python3.3/locale.* ${libdir}/python3.3/lib-dynload/_locale.*.so ${libdir}/python3.3/lib-dynload/_codecs* ${libdir}/python3.3/lib-dynload/_multibytecodec.*.so ${libdir}/python3.3/lib-dynload/unicodedata.*.so ${libdir}/python3.3/stringprep.* ${libdir}/python3.3/xdrlib.* " - -SUMMARY_${PN}-compile="Python bytecode compilation support" -RDEPENDS_${PN}-compile="${PN}-core" -FILES_${PN}-compile="${libdir}/python3.3/py_compile.* ${libdir}/python3.3/compileall.* " - -SUMMARY_${PN}-compression="Python high-level compression support" -RDEPENDS_${PN}-compression="${PN}-core ${PN}-codecs" -FILES_${PN}-compression="${libdir}/python3.3/gzip.* ${libdir}/python3.3/zipfile.* ${libdir}/python3.3/tarfile.* ${libdir}/python3.3/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.3/__future__.* ${libdir}/python3.3/_abcoll.* ${libdir}/python3.3/abc.* ${libdir}/python3.3/copy.* ${libdir}/python3.3/copyreg.* ${libdir}/python3.3/ConfigParser.* ${libdir}/python3.3/genericpath.* ${libdir}/python3.3/getopt.* ${libdir}/python3.3/linecache.* ${libdir}/python3.3/new.* ${libdir}/python3.3/os.* ${libdir}/python3.3/posixpath.* ${libdir}/python3.3/struct.* ${libdir}/python3.3/warnings.* ${libdir}/python3.3/site.* ${libdir}/python3.3/stat.* ${libdir}/python3.3/UserDict.* ${libdir}/python3.3/UserList.* ${libdir}/python3.3/UserString.* ${libdir}/python3.3/lib-dynload/binascii.*.so ${libdir}/python3.3/lib-dynload/_struct.*.so ${libdir}/python3.3/lib-dynload/time.*.so ${libdir}/python3.3/lib-dynload/xreadlines.*.so ${libdir}/python3.3/types.* ${libdir}/python3.3/platform.* ${bindir}/python* ${libdir}/python3.3/_weakrefset.* ${libdir}/python3.3/sysconfig.* ${libdir}/python3.3/_sysconfigdata.* ${libdir}/python3.3/config/Makefile ${includedir}/python${PYTHON_MAJMIN}/pyconfig*.h ${libdir}/python${PYTHON_MAJMIN}/collections ${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.3/hashlib.* ${libdir}/python3.3/md5.* ${libdir}/python3.3/sha.* ${libdir}/python3.3/lib-dynload/crypt.*.so ${libdir}/python3.3/lib-dynload/_hashlib.*.so ${libdir}/python3.3/lib-dynload/_sha256.*.so ${libdir}/python3.3/lib-dynload/_sha512.*.so " - -SUMMARY_${PN}-ctypes="Python C types support" -RDEPENDS_${PN}-ctypes="${PN}-core" -FILES_${PN}-ctypes="${libdir}/python3.3/ctypes ${libdir}/python3.3/lib-dynload/_ctypes.*.so ${libdir}/python3.3/lib-dynload/_ctypes_test.*.so " - -SUMMARY_${PN}-curses="Python curses support" -RDEPENDS_${PN}-curses="${PN}-core" -FILES_${PN}-curses="${libdir}/python3.3/curses ${libdir}/python3.3/lib-dynload/_curses.*.so ${libdir}/python3.3/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.3/_strptime.* ${libdir}/python3.3/calendar.* ${libdir}/python3.3/lib-dynload/datetime.*.so " - -SUMMARY_${PN}-db="Python file-based database support" -RDEPENDS_${PN}-db="${PN}-core" -FILES_${PN}-db="${libdir}/python3.3/anydbm.* ${libdir}/python3.3/dumbdbm.* ${libdir}/python3.3/whichdb.* ${libdir}/python3.3/dbm ${libdir}/python3.3/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.3/bdb.* ${libdir}/python3.3/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.3/difflib.* " - -SUMMARY_${PN}-distutils="Python Distribution Utilities" -RDEPENDS_${PN}-distutils="${PN}-core" -FILES_${PN}-distutils="${libdir}/python3.3/config ${libdir}/python3.3/distutils " - -SUMMARY_${PN}-distutils-staticdev="Python distribution utilities (static libraries)" -RDEPENDS_${PN}-distutils-staticdev="${PN}-distutils" -FILES_${PN}-distutils-staticdev="${libdir}/python3.3/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.3/doctest.* " - -SUMMARY_${PN}-elementtree="Python elementree" -RDEPENDS_${PN}-elementtree="${PN}-core" -FILES_${PN}-elementtree="${libdir}/python3.3/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.3/imaplib.* ${libdir}/python3.3/email " - -SUMMARY_${PN}-fcntl="Python's fcntl interface" -RDEPENDS_${PN}-fcntl="${PN}-core" -FILES_${PN}-fcntl="${libdir}/python3.3/lib-dynload/fcntl.*.so " - -SUMMARY_${PN}-gdbm="Python GNU database support" -RDEPENDS_${PN}-gdbm="${PN}-core" -FILES_${PN}-gdbm="${libdir}/python3.3/lib-dynload/_gdbm.*.so " - -SUMMARY_${PN}-html="Python HTML processing support" -RDEPENDS_${PN}-html="${PN}-core" -FILES_${PN}-html="${libdir}/python3.3/formatter.* ${libdir}/python3.3/htmlentitydefs.* ${libdir}/python3.3/htmllib.* ${libdir}/python3.3/markupbase.* ${libdir}/python3.3/sgmllib.* ${libdir}/python3.3/HTMLParser.* " - -SUMMARY_${PN}-idle="Python Integrated Development Environment" -RDEPENDS_${PN}-idle="${PN}-core ${PN}-tkinter" -FILES_${PN}-idle="${bindir}/idle ${libdir}/python3.3/idlelib " - -SUMMARY_${PN}-image="Python graphical image handling" -RDEPENDS_${PN}-image="${PN}-core" -FILES_${PN}-image="${libdir}/python3.3/colorsys.* ${libdir}/python3.3/imghdr.* ${libdir}/python3.3/lib-dynload/imageop.*.so ${libdir}/python3.3/lib-dynload/rgbimg.*.so " - -SUMMARY_${PN}-importlib="Python import implementation library" -RDEPENDS_${PN}-importlib="${PN}-core" -FILES_${PN}-importlib="${libdir}/python3.3/importlib " - -SUMMARY_${PN}-io="Python low-level I/O" -RDEPENDS_${PN}-io="${PN}-core ${PN}-math" -FILES_${PN}-io="${libdir}/python3.3/lib-dynload/_socket.*.so ${libdir}/python3.3/lib-dynload/_io.*.so ${libdir}/python3.3/lib-dynload/_ssl.*.so ${libdir}/python3.3/lib-dynload/select.*.so ${libdir}/python3.3/lib-dynload/termios.*.so ${libdir}/python3.3/lib-dynload/cStringIO.*.so ${libdir}/python3.3/pipes.* ${libdir}/python3.3/socket.* ${libdir}/python3.3/ssl.* ${libdir}/python3.3/tempfile.* ${libdir}/python3.3/StringIO.* ${libdir}/python3.3/io.* ${libdir}/python3.3/_pyio.* " - -SUMMARY_${PN}-json="Python JSON support" -RDEPENDS_${PN}-json="${PN}-core ${PN}-math ${PN}-re" -FILES_${PN}-json="${libdir}/python3.3/json ${libdir}/python3.3/lib-dynload/_json.*.so " - -SUMMARY_${PN}-lang="Python low-level language support" -RDEPENDS_${PN}-lang="${PN}-core" -FILES_${PN}-lang="${libdir}/python3.3/lib-dynload/_bisect.*.so ${libdir}/python3.3/lib-dynload/_collections.*.so ${libdir}/python3.3/lib-dynload/_heapq.*.so ${libdir}/python3.3/lib-dynload/_weakref.*.so ${libdir}/python3.3/lib-dynload/_functools.*.so ${libdir}/python3.3/lib-dynload/array.*.so ${libdir}/python3.3/lib-dynload/itertools.*.so ${libdir}/python3.3/lib-dynload/operator.*.so ${libdir}/python3.3/lib-dynload/parser.*.so ${libdir}/python3.3/atexit.* ${libdir}/python3.3/bisect.* ${libdir}/python3.3/code.* ${libdir}/python3.3/codeop.* ${libdir}/python3.3/collections.* ${libdir}/python3.3/dis.* ${libdir}/python3.3/functools.* ${libdir}/python3.3/heapq.* ${libdir}/python3.3/inspect.* ${libdir}/python3.3/keyword.* ${libdir}/python3.3/opcode.* ${libdir}/python3.3/symbol.* ${libdir}/python3.3/repr.* ${libdir}/python3.3/token.* ${libdir}/python3.3/tokenize.* ${libdir}/python3.3/traceback.* ${libdir}/python3.3/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.3/logging " - -SUMMARY_${PN}-mailbox="Python mailbox format support" -RDEPENDS_${PN}-mailbox="${PN}-core ${PN}-mime" -FILES_${PN}-mailbox="${libdir}/python3.3/mailbox.* " - -SUMMARY_${PN}-math="Python math support" -RDEPENDS_${PN}-math="${PN}-core" -FILES_${PN}-math="${libdir}/python3.3/lib-dynload/cmath.*.so ${libdir}/python3.3/lib-dynload/math.*.so ${libdir}/python3.3/lib-dynload/_random.*.so ${libdir}/python3.3/random.* ${libdir}/python3.3/sets.* " - -SUMMARY_${PN}-mime="Python MIME handling APIs" -RDEPENDS_${PN}-mime="${PN}-core ${PN}-io" -FILES_${PN}-mime="${libdir}/python3.3/mimetools.* ${libdir}/python3.3/uu.* ${libdir}/python3.3/quopri.* ${libdir}/python3.3/rfc822.* ${libdir}/python3.3/MimeWriter.* " - -SUMMARY_${PN}-mmap="Python memory-mapped file support" -RDEPENDS_${PN}-mmap="${PN}-core ${PN}-io" -FILES_${PN}-mmap="${libdir}/python3.3/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.3/lib-dynload/_multiprocessing.*.so ${libdir}/python3.3/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.3/*Cookie*.* ${libdir}/python3.3/base64.* ${libdir}/python3.3/cookielib.* ${libdir}/python3.3/ftplib.* ${libdir}/python3.3/gopherlib.* ${libdir}/python3.3/hmac.* ${libdir}/python3.3/httplib.* ${libdir}/python3.3/mimetypes.* ${libdir}/python3.3/nntplib.* ${libdir}/python3.3/poplib.* ${libdir}/python3.3/smtplib.* ${libdir}/python3.3/telnetlib.* ${libdir}/python3.3/urllib.* ${libdir}/python3.3/urllib2.* ${libdir}/python3.3/urlparse.* ${libdir}/python3.3/uuid.* ${libdir}/python3.3/rfc822.* ${libdir}/python3.3/mimetools.* " - -SUMMARY_${PN}-netserver="Python Internet Protocol servers" -RDEPENDS_${PN}-netserver="${PN}-core ${PN}-netclient" -FILES_${PN}-netserver="${libdir}/python3.3/cgi.* ${libdir}/python3.3/*HTTPServer.* ${libdir}/python3.3/SocketServer.* " - -SUMMARY_${PN}-numbers="Python number APIs" -RDEPENDS_${PN}-numbers="${PN}-core ${PN}-lang ${PN}-re" -FILES_${PN}-numbers="${libdir}/python3.3/decimal.* ${libdir}/python3.3/numbers.* " - -SUMMARY_${PN}-pickle="Python serialisation/persistence support" -RDEPENDS_${PN}-pickle="${PN}-core ${PN}-codecs ${PN}-io ${PN}-re" -FILES_${PN}-pickle="${libdir}/python3.3/pickle.* ${libdir}/python3.3/shelve.* ${libdir}/python3.3/lib-dynload/cPickle.*.so ${libdir}/python3.3/pickletools.* " - -SUMMARY_${PN}-pkgutil="Python package extension utility support" -RDEPENDS_${PN}-pkgutil="${PN}-core" -FILES_${PN}-pkgutil="${libdir}/python3.3/pkgutil.* " - -SUMMARY_${PN}-pprint="Python pretty-print support" -RDEPENDS_${PN}-pprint="${PN}-core ${PN}-io" -FILES_${PN}-pprint="${libdir}/python3.3/pprint.* " - -SUMMARY_${PN}-profile="Python basic performance profiling support" -RDEPENDS_${PN}-profile="${PN}-core ${PN}-textutils" -FILES_${PN}-profile="${libdir}/python3.3/profile.* ${libdir}/python3.3/pstats.* ${libdir}/python3.3/cProfile.* ${libdir}/python3.3/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.3/pydoc.* ${libdir}/python3.3/pydoc_data " - -SUMMARY_${PN}-re="Python Regular Expression APIs" -RDEPENDS_${PN}-re="${PN}-core" -FILES_${PN}-re="${libdir}/python3.3/re.* ${libdir}/python3.3/sre.* ${libdir}/python3.3/sre_compile.* ${libdir}/python3.3/sre_constants* ${libdir}/python3.3/sre_parse.* " - -SUMMARY_${PN}-readline="Python readline support" -RDEPENDS_${PN}-readline="${PN}-core" -FILES_${PN}-readline="${libdir}/python3.3/lib-dynload/readline.*.so ${libdir}/python3.3/rlcompleter.* " - -SUMMARY_${PN}-reprlib="Python alternate repr() implementation" -RDEPENDS_${PN}-reprlib="${PN}-core" -FILES_${PN}-reprlib="${libdir}/python3.3/reprlib.py " - -SUMMARY_${PN}-resource="Python resource control interface" -RDEPENDS_${PN}-resource="${PN}-core" -FILES_${PN}-resource="${libdir}/python3.3/lib-dynload/resource.*.so " - -SUMMARY_${PN}-robotparser="Python robots.txt parser" -RDEPENDS_${PN}-robotparser="${PN}-core ${PN}-netclient" -FILES_${PN}-robotparser="${libdir}/python3.3/urllib/robotparser.* " - -SUMMARY_${PN}-shell="Python shell-like functionality" -RDEPENDS_${PN}-shell="${PN}-core ${PN}-re" -FILES_${PN}-shell="${libdir}/python3.3/cmd.* ${libdir}/python3.3/commands.* ${libdir}/python3.3/dircache.* ${libdir}/python3.3/fnmatch.* ${libdir}/python3.3/glob.* ${libdir}/python3.3/popen2.* ${libdir}/python3.3/shlex.* ${libdir}/python3.3/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.3/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.3/lib-dynload/_sqlite3.*.so ${libdir}/python3.3/sqlite3/dbapi2.* ${libdir}/python3.3/sqlite3/__init__.* ${libdir}/python3.3/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.3/sqlite3/test " - -SUMMARY_${PN}-stringold="Python string APIs [deprecated]" -RDEPENDS_${PN}-stringold="${PN}-core ${PN}-re" -FILES_${PN}-stringold="${libdir}/python3.3/lib-dynload/strop.*.so ${libdir}/python3.3/string.* ${libdir}/python3.3/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.3/subprocess.* " - -SUMMARY_${PN}-syslog="Python syslog interface" -RDEPENDS_${PN}-syslog="${PN}-core" -FILES_${PN}-syslog="${libdir}/python3.3/lib-dynload/syslog.*.so " - -SUMMARY_${PN}-terminal="Python terminal controlling support" -RDEPENDS_${PN}-terminal="${PN}-core ${PN}-io" -FILES_${PN}-terminal="${libdir}/python3.3/pty.* ${libdir}/python3.3/tty.* " - -SUMMARY_${PN}-tests="Python tests" -RDEPENDS_${PN}-tests="${PN}-core" -FILES_${PN}-tests="${libdir}/python3.3/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.3/lib-dynload/_csv.*.so ${libdir}/python3.3/csv.* ${libdir}/python3.3/optparse.* ${libdir}/python3.3/textwrap.* " - -SUMMARY_${PN}-threading="Python threading & synchronization support" -RDEPENDS_${PN}-threading="${PN}-core ${PN}-lang" -FILES_${PN}-threading="${libdir}/python3.3/_threading_local.* ${libdir}/python3.3/dummy_thread.* ${libdir}/python3.3/dummy_threading.* ${libdir}/python3.3/mutex.* ${libdir}/python3.3/threading.* ${libdir}/python3.3/Queue.* " - -SUMMARY_${PN}-tkinter="Python Tcl/Tk bindings" -RDEPENDS_${PN}-tkinter="${PN}-core" -FILES_${PN}-tkinter="${libdir}/python3.3/lib-dynload/_tkinter.*.so ${libdir}/python3.3/lib-tk ${libdir}/python3.3/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.3/unittest/ " - -SUMMARY_${PN}-unixadmin="Python Unix administration support" -RDEPENDS_${PN}-unixadmin="${PN}-core" -FILES_${PN}-unixadmin="${libdir}/python3.3/lib-dynload/nis.*.so ${libdir}/python3.3/lib-dynload/grp.*.so ${libdir}/python3.3/lib-dynload/pwd.*.so ${libdir}/python3.3/getpass.* " - -SUMMARY_${PN}-xml="Python basic XML support" -RDEPENDS_${PN}-xml="${PN}-core ${PN}-elementtree ${PN}-re" -FILES_${PN}-xml="${libdir}/python3.3/lib-dynload/pyexpat.*.so ${libdir}/python3.3/xml ${libdir}/python3.3/xmllib.* " - -SUMMARY_${PN}-xmlrpc="Python XML-RPC support" -RDEPENDS_${PN}-xmlrpc="${PN}-core ${PN}-xml ${PN}-netserver ${PN}-lang" -FILES_${PN}-xmlrpc="${libdir}/python3.3/xmlrpclib.* ${libdir}/python3.3/SimpleXMLRPCServer.* ${libdir}/python3.3/DocXMLRPCServer.* ${libdir}/python3.3/xmlrpc " - -SUMMARY_${PN}-modules="All Python modules" -RDEPENDS_${PN}-modules="${PN}-2to3 ${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}-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 " -ALLOW_EMPTY_${PN}-modules = "1" - - diff --git a/meta/recipes-devtools/python/python-3.5-manifest.inc b/meta/recipes-devtools/python/python-3.5-manifest.inc new file mode 100644 index 0000000000..1e20f00c64 --- /dev/null +++ b/meta/recipes-devtools/python/python-3.5-manifest.inc @@ -0,0 +1,283 @@ + +# WARNING: This file is AUTO GENERATED: Manual edits will be lost next time I regenerate the file. +# Generator: '../../../scripts/contrib/python/generate-manifest-3.5.py' Version 20140131 (C) 2002-2010 Michael 'Mickey' Lauer <mlauer@vanille-media.de> + + + +PROVIDES+="${PN}-2to3 ${PN}-argparse ${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}-email ${PN}-enum ${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}-selectors ${PN}-shell ${PN}-signal ${PN}-smtpd ${PN}-sqlite3 ${PN}-sqlite3-tests ${PN}-stringold ${PN}-subprocess ${PN}-syslog ${PN}-terminal ${PN}-tests ${PN}-textutils ${PN}-threading ${PN}-tkinter ${PN}-typing ${PN}-unittest ${PN}-unixadmin ${PN}-xml ${PN}-xmlrpc " + +PACKAGES="${PN}-dbg ${PN}-2to3 ${PN}-argparse ${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}-email ${PN}-enum ${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}-selectors ${PN}-shell ${PN}-signal ${PN}-smtpd ${PN}-sqlite3 ${PN}-sqlite3-tests ${PN}-stringold ${PN}-subprocess ${PN}-syslog ${PN}-terminal ${PN}-tests ${PN}-textutils ${PN}-threading ${PN}-tkinter ${PN}-typing ${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.5/lib2to3 ${libdir}/python3.5/lib2to3/__pycache__ " + +SUMMARY_${PN}-argparse="Python command line argument parser" +RDEPENDS_${PN}-argparse="${PN}-core ${PN}-codecs ${PN}-textutils" +FILES_${PN}-argparse="${libdir}/python3.5/argparse.* ${libdir}/python3.5/__pycache__/argparse.* " + +SUMMARY_${PN}-asyncio="Python Asynchronous I/O, event loop, coroutines and tasks" +RDEPENDS_${PN}-asyncio="${PN}-core" +FILES_${PN}-asyncio="${libdir}/python3.5/asyncio ${libdir}/python3.5/asyncio/__pycache__ " + +SUMMARY_${PN}-audio="Python Audio Handling" +RDEPENDS_${PN}-audio="${PN}-core" +FILES_${PN}-audio="${libdir}/python3.5/wave.* ${libdir}/python3.5/__pycache__/wave.* ${libdir}/python3.5/chunk.* ${libdir}/python3.5/__pycache__/chunk.* ${libdir}/python3.5/sndhdr.* ${libdir}/python3.5/__pycache__/sndhdr.* ${libdir}/python3.5/lib-dynload/ossaudiodev.*.so ${libdir}/python3.5/lib-dynload/__pycache__/ossaudiodev.*.so ${libdir}/python3.5/lib-dynload/audioop.*.so ${libdir}/python3.5/lib-dynload/__pycache__/audioop.*.so ${libdir}/python3.5/audiodev.* ${libdir}/python3.5/__pycache__/audiodev.* ${libdir}/python3.5/sunaudio.* ${libdir}/python3.5/__pycache__/sunaudio.* ${libdir}/python3.5/sunau.* ${libdir}/python3.5/__pycache__/sunau.* ${libdir}/python3.5/toaiff.* ${libdir}/python3.5/__pycache__/toaiff.* " + +SUMMARY_${PN}-codecs="Python codecs, encodings & i18n support" +RDEPENDS_${PN}-codecs="${PN}-core ${PN}-lang" +FILES_${PN}-codecs="${libdir}/python3.5/codecs.* ${libdir}/python3.5/__pycache__/codecs.* ${libdir}/python3.5/encodings ${libdir}/python3.5/encodings/__pycache__ ${libdir}/python3.5/gettext.* ${libdir}/python3.5/__pycache__/gettext.* ${libdir}/python3.5/locale.* ${libdir}/python3.5/__pycache__/locale.* ${libdir}/python3.5/lib-dynload/_locale.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_locale.*.so ${libdir}/python3.5/lib-dynload/_codecs* ${libdir}/python3.5/lib-dynload/_codecs*/__pycache__ ${libdir}/python3.5/lib-dynload/_multibytecodec.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_multibytecodec.*.so ${libdir}/python3.5/lib-dynload/unicodedata.*.so ${libdir}/python3.5/lib-dynload/__pycache__/unicodedata.*.so ${libdir}/python3.5/stringprep.* ${libdir}/python3.5/__pycache__/stringprep.* ${libdir}/python3.5/xdrlib.* ${libdir}/python3.5/__pycache__/xdrlib.* " + +SUMMARY_${PN}-compile="Python bytecode compilation support" +RDEPENDS_${PN}-compile="${PN}-core" +FILES_${PN}-compile="${libdir}/python3.5/py_compile.* ${libdir}/python3.5/__pycache__/py_compile.* ${libdir}/python3.5/compileall.* ${libdir}/python3.5/__pycache__/compileall.* " + +SUMMARY_${PN}-compression="Python high-level compression support" +RDEPENDS_${PN}-compression="${PN}-core ${PN}-codecs ${PN}-importlib ${PN}-threading ${PN}-shell" +FILES_${PN}-compression="${libdir}/python3.5/gzip.* ${libdir}/python3.5/__pycache__/gzip.* ${libdir}/python3.5/zipfile.* ${libdir}/python3.5/__pycache__/zipfile.* ${libdir}/python3.5/tarfile.* ${libdir}/python3.5/__pycache__/tarfile.* ${libdir}/python3.5/lib-dynload/bz2.*.so ${libdir}/python3.5/lib-dynload/__pycache__/bz2.*.so ${libdir}/python3.5/lib-dynload/zlib.*.so ${libdir}/python3.5/lib-dynload/__pycache__/zlib.*.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.5/__future__.* ${libdir}/python3.5/__pycache__/__future__.* ${libdir}/python3.5/_abcoll.* ${libdir}/python3.5/__pycache__/_abcoll.* ${libdir}/python3.5/abc.* ${libdir}/python3.5/__pycache__/abc.* ${libdir}/python3.5/ast.* ${libdir}/python3.5/__pycache__/ast.* ${libdir}/python3.5/copy.* ${libdir}/python3.5/__pycache__/copy.* ${libdir}/python3.5/copyreg.* ${libdir}/python3.5/__pycache__/copyreg.* ${libdir}/python3.5/configparser.* ${libdir}/python3.5/__pycache__/configparser.* ${libdir}/python3.5/genericpath.* ${libdir}/python3.5/__pycache__/genericpath.* ${libdir}/python3.5/getopt.* ${libdir}/python3.5/__pycache__/getopt.* ${libdir}/python3.5/linecache.* ${libdir}/python3.5/__pycache__/linecache.* ${libdir}/python3.5/new.* ${libdir}/python3.5/__pycache__/new.* ${libdir}/python3.5/os.* ${libdir}/python3.5/__pycache__/os.* ${libdir}/python3.5/posixpath.* ${libdir}/python3.5/__pycache__/posixpath.* ${libdir}/python3.5/struct.* ${libdir}/python3.5/__pycache__/struct.* ${libdir}/python3.5/warnings.* ${libdir}/python3.5/__pycache__/warnings.* ${libdir}/python3.5/site.* ${libdir}/python3.5/__pycache__/site.* ${libdir}/python3.5/stat.* ${libdir}/python3.5/__pycache__/stat.* ${libdir}/python3.5/UserDict.* ${libdir}/python3.5/__pycache__/UserDict.* ${libdir}/python3.5/UserList.* ${libdir}/python3.5/__pycache__/UserList.* ${libdir}/python3.5/UserString.* ${libdir}/python3.5/__pycache__/UserString.* ${libdir}/python3.5/lib-dynload/binascii.*.so ${libdir}/python3.5/lib-dynload/__pycache__/binascii.*.so ${libdir}/python3.5/lib-dynload/_struct.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_struct.*.so ${libdir}/python3.5/lib-dynload/time.*.so ${libdir}/python3.5/lib-dynload/__pycache__/time.*.so ${libdir}/python3.5/lib-dynload/xreadlines.*.so ${libdir}/python3.5/lib-dynload/__pycache__/xreadlines.*.so ${libdir}/python3.5/types.* ${libdir}/python3.5/__pycache__/types.* ${libdir}/python3.5/platform.* ${libdir}/python3.5/__pycache__/platform.* ${bindir}/python* ${libdir}/python3.5/_weakrefset.* ${libdir}/python3.5/__pycache__/_weakrefset.* ${libdir}/python3.5/sysconfig.* ${libdir}/python3.5/__pycache__/sysconfig.* ${libdir}/python3.5/_sysconfigdata.* ${libdir}/python3.5/__pycache__/_sysconfigdata.* ${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.5/hashlib.* ${libdir}/python3.5/__pycache__/hashlib.* ${libdir}/python3.5/md5.* ${libdir}/python3.5/__pycache__/md5.* ${libdir}/python3.5/sha.* ${libdir}/python3.5/__pycache__/sha.* ${libdir}/python3.5/lib-dynload/crypt.*.so ${libdir}/python3.5/lib-dynload/__pycache__/crypt.*.so ${libdir}/python3.5/lib-dynload/_hashlib.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_hashlib.*.so ${libdir}/python3.5/lib-dynload/_sha256.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_sha256.*.so ${libdir}/python3.5/lib-dynload/_sha512.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_sha512.*.so " + +SUMMARY_${PN}-ctypes="Python C types support" +RDEPENDS_${PN}-ctypes="${PN}-core ${PN}-subprocess" +FILES_${PN}-ctypes="${libdir}/python3.5/ctypes ${libdir}/python3.5/ctypes/__pycache__ ${libdir}/python3.5/lib-dynload/_ctypes.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_ctypes.*.so ${libdir}/python3.5/lib-dynload/_ctypes_test.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_ctypes_test.*.so " + +SUMMARY_${PN}-curses="Python curses support" +RDEPENDS_${PN}-curses="${PN}-core" +FILES_${PN}-curses="${libdir}/python3.5/curses ${libdir}/python3.5/curses/__pycache__ ${libdir}/python3.5/lib-dynload/_curses.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_curses.*.so ${libdir}/python3.5/lib-dynload/_curses_panel.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_curses_panel.*.so " + +SUMMARY_${PN}-datetime="Python calendar and time support" +RDEPENDS_${PN}-datetime="${PN}-core ${PN}-codecs" +FILES_${PN}-datetime="${libdir}/python3.5/_strptime.* ${libdir}/python3.5/__pycache__/_strptime.* ${libdir}/python3.5/calendar.* ${libdir}/python3.5/__pycache__/calendar.* ${libdir}/python3.5/datetime.* ${libdir}/python3.5/__pycache__/datetime.* ${libdir}/python3.5/lib-dynload/_datetime.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_datetime.*.so " + +SUMMARY_${PN}-db="Python file-based database support" +RDEPENDS_${PN}-db="${PN}-core" +FILES_${PN}-db="${libdir}/python3.5/anydbm.* ${libdir}/python3.5/__pycache__/anydbm.* ${libdir}/python3.5/dumbdbm.* ${libdir}/python3.5/__pycache__/dumbdbm.* ${libdir}/python3.5/whichdb.* ${libdir}/python3.5/__pycache__/whichdb.* ${libdir}/python3.5/dbm ${libdir}/python3.5/dbm/__pycache__ ${libdir}/python3.5/lib-dynload/_dbm.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_dbm.*.so " + +SUMMARY_${PN}-debugger="Python debugger" +RDEPENDS_${PN}-debugger="${PN}-core ${PN}-io ${PN}-lang ${PN}-re ${PN}-stringold ${PN}-shell ${PN}-pprint ${PN}-importlib ${PN}-pkgutil" +FILES_${PN}-debugger="${libdir}/python3.5/bdb.* ${libdir}/python3.5/__pycache__/bdb.* ${libdir}/python3.5/pdb.* ${libdir}/python3.5/__pycache__/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 ${libdir}/python3.5/config/Makefile ${libdir}/python3.5/config/Makefile/__pycache__ " + +SUMMARY_${PN}-difflib="Python helpers for computing deltas between objects" +RDEPENDS_${PN}-difflib="${PN}-lang ${PN}-re" +FILES_${PN}-difflib="${libdir}/python3.5/difflib.* ${libdir}/python3.5/__pycache__/difflib.* " + +SUMMARY_${PN}-distutils="Python Distribution Utilities" +RDEPENDS_${PN}-distutils="${PN}-core ${PN}-email" +FILES_${PN}-distutils="${libdir}/python3.5/config ${libdir}/python3.5/config/__pycache__ ${libdir}/python3.5/distutils ${libdir}/python3.5/distutils/__pycache__ " + +SUMMARY_${PN}-distutils-staticdev="Python distribution utilities (static libraries)" +RDEPENDS_${PN}-distutils-staticdev="${PN}-distutils" +FILES_${PN}-distutils-staticdev="${libdir}/python3.5/config/lib*.a ${libdir}/python3.5/config/__pycache__/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.5/doctest.* ${libdir}/python3.5/__pycache__/doctest.* " + +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.5/imaplib.* ${libdir}/python3.5/__pycache__/imaplib.* ${libdir}/python3.5/email ${libdir}/python3.5/email/__pycache__ " + +SUMMARY_${PN}-enum="Python support for enumerations" +RDEPENDS_${PN}-enum="${PN}-core" +FILES_${PN}-enum="${libdir}/python3.5/enum.* ${libdir}/python3.5/__pycache__/enum.* " + +SUMMARY_${PN}-fcntl="Python's fcntl interface" +RDEPENDS_${PN}-fcntl="${PN}-core" +FILES_${PN}-fcntl="${libdir}/python3.5/lib-dynload/fcntl.*.so ${libdir}/python3.5/lib-dynload/__pycache__/fcntl.*.so " + +SUMMARY_${PN}-gdbm="Python GNU database support" +RDEPENDS_${PN}-gdbm="${PN}-core" +FILES_${PN}-gdbm="${libdir}/python3.5/lib-dynload/_gdbm.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_gdbm.*.so " + +SUMMARY_${PN}-html="Python HTML processing support" +RDEPENDS_${PN}-html="${PN}-core" +FILES_${PN}-html="${libdir}/python3.5/formatter.* ${libdir}/python3.5/__pycache__/formatter.* ${libdir}/python3.5/htmlentitydefs.* ${libdir}/python3.5/__pycache__/htmlentitydefs.* ${libdir}/python3.5/html ${libdir}/python3.5/html/__pycache__ ${libdir}/python3.5/htmllib.* ${libdir}/python3.5/__pycache__/htmllib.* ${libdir}/python3.5/markupbase.* ${libdir}/python3.5/__pycache__/markupbase.* ${libdir}/python3.5/sgmllib.* ${libdir}/python3.5/__pycache__/sgmllib.* ${libdir}/python3.5/HTMLParser.* ${libdir}/python3.5/__pycache__/HTMLParser.* " + +SUMMARY_${PN}-idle="Python Integrated Development Environment" +RDEPENDS_${PN}-idle="${PN}-core ${PN}-tkinter" +FILES_${PN}-idle="${bindir}/idle ${libdir}/python3.5/idlelib ${libdir}/python3.5/idlelib/__pycache__ " + +SUMMARY_${PN}-image="Python graphical image handling" +RDEPENDS_${PN}-image="${PN}-core" +FILES_${PN}-image="${libdir}/python3.5/colorsys.* ${libdir}/python3.5/__pycache__/colorsys.* ${libdir}/python3.5/imghdr.* ${libdir}/python3.5/__pycache__/imghdr.* ${libdir}/python3.5/lib-dynload/imageop.*.so ${libdir}/python3.5/lib-dynload/__pycache__/imageop.*.so ${libdir}/python3.5/lib-dynload/rgbimg.*.so ${libdir}/python3.5/lib-dynload/__pycache__/rgbimg.*.so " + +SUMMARY_${PN}-importlib="Python import implementation library" +RDEPENDS_${PN}-importlib="${PN}-core ${PN}-lang" +FILES_${PN}-importlib="${libdir}/python3.5/importlib ${libdir}/python3.5/importlib/__pycache__ ${libdir}/python3.5/imp.* ${libdir}/python3.5/__pycache__/imp.* " + +SUMMARY_${PN}-io="Python low-level I/O" +RDEPENDS_${PN}-io="${PN}-core ${PN}-math" +FILES_${PN}-io="${libdir}/python3.5/lib-dynload/_socket.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_socket.*.so ${libdir}/python3.5/lib-dynload/_io.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_io.*.so ${libdir}/python3.5/lib-dynload/_ssl.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_ssl.*.so ${libdir}/python3.5/lib-dynload/select.*.so ${libdir}/python3.5/lib-dynload/__pycache__/select.*.so ${libdir}/python3.5/lib-dynload/termios.*.so ${libdir}/python3.5/lib-dynload/__pycache__/termios.*.so ${libdir}/python3.5/lib-dynload/cStringIO.*.so ${libdir}/python3.5/lib-dynload/__pycache__/cStringIO.*.so ${libdir}/python3.5/ipaddress.* ${libdir}/python3.5/__pycache__/ipaddress.* ${libdir}/python3.5/pipes.* ${libdir}/python3.5/__pycache__/pipes.* ${libdir}/python3.5/socket.* ${libdir}/python3.5/__pycache__/socket.* ${libdir}/python3.5/ssl.* ${libdir}/python3.5/__pycache__/ssl.* ${libdir}/python3.5/tempfile.* ${libdir}/python3.5/__pycache__/tempfile.* ${libdir}/python3.5/StringIO.* ${libdir}/python3.5/__pycache__/StringIO.* ${libdir}/python3.5/io.* ${libdir}/python3.5/__pycache__/io.* ${libdir}/python3.5/_pyio.* ${libdir}/python3.5/__pycache__/_pyio.* " + +SUMMARY_${PN}-json="Python JSON support" +RDEPENDS_${PN}-json="${PN}-core ${PN}-math ${PN}-re" +FILES_${PN}-json="${libdir}/python3.5/json ${libdir}/python3.5/json/__pycache__ ${libdir}/python3.5/lib-dynload/_json.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_json.*.so " + +SUMMARY_${PN}-lang="Python low-level language support" +RDEPENDS_${PN}-lang="${PN}-core ${PN}-importlib" +FILES_${PN}-lang="${libdir}/python3.5/lib-dynload/_bisect.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_bisect.*.so ${libdir}/python3.5/lib-dynload/_collections.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_collections.*.so ${libdir}/python3.5/lib-dynload/_heapq.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_heapq.*.so ${libdir}/python3.5/lib-dynload/_weakref.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_weakref.*.so ${libdir}/python3.5/lib-dynload/_functools.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_functools.*.so ${libdir}/python3.5/lib-dynload/array.*.so ${libdir}/python3.5/lib-dynload/__pycache__/array.*.so ${libdir}/python3.5/lib-dynload/itertools.*.so ${libdir}/python3.5/lib-dynload/__pycache__/itertools.*.so ${libdir}/python3.5/lib-dynload/operator.*.so ${libdir}/python3.5/lib-dynload/__pycache__/operator.*.so ${libdir}/python3.5/lib-dynload/parser.*.so ${libdir}/python3.5/lib-dynload/__pycache__/parser.*.so ${libdir}/python3.5/atexit.* ${libdir}/python3.5/__pycache__/atexit.* ${libdir}/python3.5/bisect.* ${libdir}/python3.5/__pycache__/bisect.* ${libdir}/python3.5/code.* ${libdir}/python3.5/__pycache__/code.* ${libdir}/python3.5/codeop.* ${libdir}/python3.5/__pycache__/codeop.* ${libdir}/python3.5/collections.* ${libdir}/python3.5/__pycache__/collections.* ${libdir}/python3.5/_collections_abc.* ${libdir}/python3.5/__pycache__/_collections_abc.* ${libdir}/python3.5/contextlib.* ${libdir}/python3.5/__pycache__/contextlib.* ${libdir}/python3.5/dis.* ${libdir}/python3.5/__pycache__/dis.* ${libdir}/python3.5/functools.* ${libdir}/python3.5/__pycache__/functools.* ${libdir}/python3.5/heapq.* ${libdir}/python3.5/__pycache__/heapq.* ${libdir}/python3.5/inspect.* ${libdir}/python3.5/__pycache__/inspect.* ${libdir}/python3.5/keyword.* ${libdir}/python3.5/__pycache__/keyword.* ${libdir}/python3.5/opcode.* ${libdir}/python3.5/__pycache__/opcode.* ${libdir}/python3.5/operator.* ${libdir}/python3.5/__pycache__/operator.* ${libdir}/python3.5/symbol.* ${libdir}/python3.5/__pycache__/symbol.* ${libdir}/python3.5/repr.* ${libdir}/python3.5/__pycache__/repr.* ${libdir}/python3.5/token.* ${libdir}/python3.5/__pycache__/token.* ${libdir}/python3.5/tokenize.* ${libdir}/python3.5/__pycache__/tokenize.* ${libdir}/python3.5/traceback.* ${libdir}/python3.5/__pycache__/traceback.* ${libdir}/python3.5/weakref.* ${libdir}/python3.5/__pycache__/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.5/logging ${libdir}/python3.5/logging/__pycache__ " + +SUMMARY_${PN}-mailbox="Python mailbox format support" +RDEPENDS_${PN}-mailbox="${PN}-core ${PN}-mime" +FILES_${PN}-mailbox="${libdir}/python3.5/mailbox.* ${libdir}/python3.5/__pycache__/mailbox.* " + +SUMMARY_${PN}-math="Python math support" +RDEPENDS_${PN}-math="${PN}-core ${PN}-crypt" +FILES_${PN}-math="${libdir}/python3.5/lib-dynload/cmath.*.so ${libdir}/python3.5/lib-dynload/__pycache__/cmath.*.so ${libdir}/python3.5/lib-dynload/math.*.so ${libdir}/python3.5/lib-dynload/__pycache__/math.*.so ${libdir}/python3.5/lib-dynload/_random.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_random.*.so ${libdir}/python3.5/random.* ${libdir}/python3.5/__pycache__/random.* ${libdir}/python3.5/sets.* ${libdir}/python3.5/__pycache__/sets.* " + +SUMMARY_${PN}-mime="Python MIME handling APIs" +RDEPENDS_${PN}-mime="${PN}-core ${PN}-io" +FILES_${PN}-mime="${libdir}/python3.5/mimetools.* ${libdir}/python3.5/__pycache__/mimetools.* ${libdir}/python3.5/uu.* ${libdir}/python3.5/__pycache__/uu.* ${libdir}/python3.5/quopri.* ${libdir}/python3.5/__pycache__/quopri.* ${libdir}/python3.5/rfc822.* ${libdir}/python3.5/__pycache__/rfc822.* ${libdir}/python3.5/MimeWriter.* ${libdir}/python3.5/__pycache__/MimeWriter.* " + +SUMMARY_${PN}-mmap="Python memory-mapped file support" +RDEPENDS_${PN}-mmap="${PN}-core ${PN}-io" +FILES_${PN}-mmap="${libdir}/python3.5/lib-dynload/mmap.*.so ${libdir}/python3.5/lib-dynload/__pycache__/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.5/lib-dynload/_multiprocessing.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_multiprocessing.*.so ${libdir}/python3.5/multiprocessing ${libdir}/python3.5/multiprocessing/__pycache__ " + +SUMMARY_${PN}-netclient="Python Internet Protocol clients" +RDEPENDS_${PN}-netclient="${PN}-argparse ${PN}-core ${PN}-crypt ${PN}-datetime ${PN}-io ${PN}-lang ${PN}-logging ${PN}-mime ${PN}-html" +FILES_${PN}-netclient="${libdir}/python3.5/*Cookie*.* ${libdir}/python3.5/__pycache__/*Cookie*.* ${libdir}/python3.5/base64.* ${libdir}/python3.5/__pycache__/base64.* ${libdir}/python3.5/cookielib.* ${libdir}/python3.5/__pycache__/cookielib.* ${libdir}/python3.5/ftplib.* ${libdir}/python3.5/__pycache__/ftplib.* ${libdir}/python3.5/gopherlib.* ${libdir}/python3.5/__pycache__/gopherlib.* ${libdir}/python3.5/hmac.* ${libdir}/python3.5/__pycache__/hmac.* ${libdir}/python3.5/http* ${libdir}/python3.5/http*/__pycache__ ${libdir}/python3.5/httplib.* ${libdir}/python3.5/__pycache__/httplib.* ${libdir}/python3.5/mimetypes.* ${libdir}/python3.5/__pycache__/mimetypes.* ${libdir}/python3.5/nntplib.* ${libdir}/python3.5/__pycache__/nntplib.* ${libdir}/python3.5/poplib.* ${libdir}/python3.5/__pycache__/poplib.* ${libdir}/python3.5/smtplib.* ${libdir}/python3.5/__pycache__/smtplib.* ${libdir}/python3.5/telnetlib.* ${libdir}/python3.5/__pycache__/telnetlib.* ${libdir}/python3.5/urllib ${libdir}/python3.5/urllib/__pycache__ ${libdir}/python3.5/uuid.* ${libdir}/python3.5/__pycache__/uuid.* ${libdir}/python3.5/rfc822.* ${libdir}/python3.5/__pycache__/rfc822.* ${libdir}/python3.5/mimetools.* ${libdir}/python3.5/__pycache__/mimetools.* " + +SUMMARY_${PN}-netserver="Python Internet Protocol servers" +RDEPENDS_${PN}-netserver="${PN}-core ${PN}-netclient ${PN}-shell ${PN}-threading" +FILES_${PN}-netserver="${libdir}/python3.5/cgi.* ${libdir}/python3.5/__pycache__/cgi.* ${libdir}/python3.5/socketserver.* ${libdir}/python3.5/__pycache__/socketserver.* ${libdir}/python3.5/*HTTPServer.* ${libdir}/python3.5/__pycache__/*HTTPServer.* ${libdir}/python3.5/SocketServer.* ${libdir}/python3.5/__pycache__/SocketServer.* " + +SUMMARY_${PN}-numbers="Python number APIs" +RDEPENDS_${PN}-numbers="${PN}-core ${PN}-lang ${PN}-re" +FILES_${PN}-numbers="${libdir}/python3.5/decimal.* ${libdir}/python3.5/__pycache__/decimal.* ${libdir}/python3.5/fractions.* ${libdir}/python3.5/__pycache__/fractions.* ${libdir}/python3.5/numbers.* ${libdir}/python3.5/__pycache__/numbers.* " + +SUMMARY_${PN}-pickle="Python serialisation/persistence support" +RDEPENDS_${PN}-pickle="${PN}-core ${PN}-codecs ${PN}-io ${PN}-re" +FILES_${PN}-pickle="${libdir}/python3.5/_compat_pickle.* ${libdir}/python3.5/__pycache__/_compat_pickle.* ${libdir}/python3.5/pickle.* ${libdir}/python3.5/__pycache__/pickle.* ${libdir}/python3.5/shelve.* ${libdir}/python3.5/__pycache__/shelve.* ${libdir}/python3.5/lib-dynload/cPickle.*.so ${libdir}/python3.5/lib-dynload/__pycache__/cPickle.*.so ${libdir}/python3.5/pickletools.* ${libdir}/python3.5/__pycache__/pickletools.* " + +SUMMARY_${PN}-pkgutil="Python package extension utility support" +RDEPENDS_${PN}-pkgutil="${PN}-core" +FILES_${PN}-pkgutil="${libdir}/python3.5/pkgutil.* ${libdir}/python3.5/__pycache__/pkgutil.* " + +SUMMARY_${PN}-pprint="Python pretty-print support" +RDEPENDS_${PN}-pprint="${PN}-core ${PN}-io" +FILES_${PN}-pprint="${libdir}/python3.5/pprint.* ${libdir}/python3.5/__pycache__/pprint.* " + +SUMMARY_${PN}-profile="Python basic performance profiling support" +RDEPENDS_${PN}-profile="${PN}-core ${PN}-textutils" +FILES_${PN}-profile="${libdir}/python3.5/profile.* ${libdir}/python3.5/__pycache__/profile.* ${libdir}/python3.5/pstats.* ${libdir}/python3.5/__pycache__/pstats.* ${libdir}/python3.5/cProfile.* ${libdir}/python3.5/__pycache__/cProfile.* ${libdir}/python3.5/lib-dynload/_lsprof.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_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.5/pydoc.* ${libdir}/python3.5/__pycache__/pydoc.* ${libdir}/python3.5/pydoc_data ${libdir}/python3.5/pydoc_data/__pycache__ " + +SUMMARY_${PN}-re="Python Regular Expression APIs" +RDEPENDS_${PN}-re="${PN}-core" +FILES_${PN}-re="${libdir}/python3.5/re.* ${libdir}/python3.5/__pycache__/re.* ${libdir}/python3.5/sre.* ${libdir}/python3.5/__pycache__/sre.* ${libdir}/python3.5/sre_compile.* ${libdir}/python3.5/__pycache__/sre_compile.* ${libdir}/python3.5/sre_constants* ${libdir}/python3.5/sre_constants*/__pycache__ ${libdir}/python3.5/sre_parse.* ${libdir}/python3.5/__pycache__/sre_parse.* " + +SUMMARY_${PN}-readline="Python readline support" +RDEPENDS_${PN}-readline="${PN}-core" +FILES_${PN}-readline="${libdir}/python3.5/lib-dynload/readline.*.so ${libdir}/python3.5/lib-dynload/__pycache__/readline.*.so ${libdir}/python3.5/rlcompleter.* ${libdir}/python3.5/__pycache__/rlcompleter.* " + +SUMMARY_${PN}-reprlib="Python alternate repr() implementation" +RDEPENDS_${PN}-reprlib="${PN}-core" +FILES_${PN}-reprlib="${libdir}/python3.5/reprlib.py ${libdir}/python3.5/__pycache__/reprlib.py " + +SUMMARY_${PN}-resource="Python resource control interface" +RDEPENDS_${PN}-resource="${PN}-core" +FILES_${PN}-resource="${libdir}/python3.5/lib-dynload/resource.*.so ${libdir}/python3.5/lib-dynload/__pycache__/resource.*.so " + +SUMMARY_${PN}-selectors="Python High-level I/O multiplexing" +RDEPENDS_${PN}-selectors="${PN}-core" +FILES_${PN}-selectors="${libdir}/python3.5/selectors.* ${libdir}/python3.5/__pycache__/selectors.* " + +SUMMARY_${PN}-shell="Python shell-like functionality" +RDEPENDS_${PN}-shell="${PN}-core ${PN}-re ${PN}-compression" +FILES_${PN}-shell="${libdir}/python3.5/cmd.* ${libdir}/python3.5/__pycache__/cmd.* ${libdir}/python3.5/commands.* ${libdir}/python3.5/__pycache__/commands.* ${libdir}/python3.5/dircache.* ${libdir}/python3.5/__pycache__/dircache.* ${libdir}/python3.5/fnmatch.* ${libdir}/python3.5/__pycache__/fnmatch.* ${libdir}/python3.5/glob.* ${libdir}/python3.5/__pycache__/glob.* ${libdir}/python3.5/popen2.* ${libdir}/python3.5/__pycache__/popen2.* ${libdir}/python3.5/shlex.* ${libdir}/python3.5/__pycache__/shlex.* ${libdir}/python3.5/shutil.* ${libdir}/python3.5/__pycache__/shutil.* " + +SUMMARY_${PN}-signal="Python set handlers for asynchronous events support" +RDEPENDS_${PN}-signal="${PN}-core ${PN}-enum" +FILES_${PN}-signal="${libdir}/python3.5/signal.* ${libdir}/python3.5/__pycache__/signal.* " + +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.5/smtpd.* ${libdir}/python3.5/__pycache__/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.5/lib-dynload/_sqlite3.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_sqlite3.*.so ${libdir}/python3.5/sqlite3/dbapi2.* ${libdir}/python3.5/sqlite3/__pycache__/dbapi2.* ${libdir}/python3.5/sqlite3/__init__.* ${libdir}/python3.5/sqlite3/__pycache__/__init__.* ${libdir}/python3.5/sqlite3/dump.* ${libdir}/python3.5/sqlite3/__pycache__/dump.* " + +SUMMARY_${PN}-sqlite3-tests="Python Sqlite3 database support tests" +RDEPENDS_${PN}-sqlite3-tests="${PN}-core ${PN}-sqlite3" +FILES_${PN}-sqlite3-tests="${libdir}/python3.5/sqlite3/test ${libdir}/python3.5/sqlite3/test/__pycache__ " + +SUMMARY_${PN}-stringold="Python string APIs [deprecated]" +RDEPENDS_${PN}-stringold="${PN}-core ${PN}-re" +FILES_${PN}-stringold="${libdir}/python3.5/lib-dynload/strop.*.so ${libdir}/python3.5/lib-dynload/__pycache__/strop.*.so ${libdir}/python3.5/string.* ${libdir}/python3.5/__pycache__/string.* ${libdir}/python3.5/stringold.* ${libdir}/python3.5/__pycache__/stringold.* " + +SUMMARY_${PN}-subprocess="Python subprocess support" +RDEPENDS_${PN}-subprocess="${PN}-core ${PN}-io ${PN}-re ${PN}-fcntl ${PN}-pickle ${PN}-threading ${PN}-signal ${PN}-selectors" +FILES_${PN}-subprocess="${libdir}/python3.5/subprocess.* ${libdir}/python3.5/__pycache__/subprocess.* ${libdir}/python3.5/lib-dynload/_posixsubprocess.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_posixsubprocess.*.so " + +SUMMARY_${PN}-syslog="Python syslog interface" +RDEPENDS_${PN}-syslog="${PN}-core" +FILES_${PN}-syslog="${libdir}/python3.5/lib-dynload/syslog.*.so ${libdir}/python3.5/lib-dynload/__pycache__/syslog.*.so " + +SUMMARY_${PN}-terminal="Python terminal controlling support" +RDEPENDS_${PN}-terminal="${PN}-core ${PN}-io" +FILES_${PN}-terminal="${libdir}/python3.5/pty.* ${libdir}/python3.5/__pycache__/pty.* ${libdir}/python3.5/tty.* ${libdir}/python3.5/__pycache__/tty.* " + +SUMMARY_${PN}-tests="Python tests" +RDEPENDS_${PN}-tests="${PN}-core" +FILES_${PN}-tests="${libdir}/python3.5/test ${libdir}/python3.5/test/__pycache__ " + +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.5/lib-dynload/_csv.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_csv.*.so ${libdir}/python3.5/csv.* ${libdir}/python3.5/__pycache__/csv.* ${libdir}/python3.5/optparse.* ${libdir}/python3.5/__pycache__/optparse.* ${libdir}/python3.5/textwrap.* ${libdir}/python3.5/__pycache__/textwrap.* " + +SUMMARY_${PN}-threading="Python threading & synchronization support" +RDEPENDS_${PN}-threading="${PN}-core ${PN}-lang" +FILES_${PN}-threading="${libdir}/python3.5/_threading_local.* ${libdir}/python3.5/__pycache__/_threading_local.* ${libdir}/python3.5/dummy_thread.* ${libdir}/python3.5/__pycache__/dummy_thread.* ${libdir}/python3.5/dummy_threading.* ${libdir}/python3.5/__pycache__/dummy_threading.* ${libdir}/python3.5/mutex.* ${libdir}/python3.5/__pycache__/mutex.* ${libdir}/python3.5/threading.* ${libdir}/python3.5/__pycache__/threading.* ${libdir}/python3.5/queue.* ${libdir}/python3.5/__pycache__/queue.* " + +SUMMARY_${PN}-tkinter="Python Tcl/Tk bindings" +RDEPENDS_${PN}-tkinter="${PN}-core" +FILES_${PN}-tkinter="${libdir}/python3.5/lib-dynload/_tkinter.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_tkinter.*.so ${libdir}/python3.5/lib-tk ${libdir}/python3.5/lib-tk/__pycache__ ${libdir}/python3.5/tkinter ${libdir}/python3.5/tkinter/__pycache__ " + +SUMMARY_${PN}-typing="Python typing support" +RDEPENDS_${PN}-typing="${PN}-core" +FILES_${PN}-typing="${libdir}/python3.5/typing.* ${libdir}/python3.5/__pycache__/typing.* " + +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.5/unittest/ ${libdir}/python3.5/unittest/__pycache__ " + +SUMMARY_${PN}-unixadmin="Python Unix administration support" +RDEPENDS_${PN}-unixadmin="${PN}-core" +FILES_${PN}-unixadmin="${libdir}/python3.5/lib-dynload/nis.*.so ${libdir}/python3.5/lib-dynload/__pycache__/nis.*.so ${libdir}/python3.5/lib-dynload/grp.*.so ${libdir}/python3.5/lib-dynload/__pycache__/grp.*.so ${libdir}/python3.5/lib-dynload/pwd.*.so ${libdir}/python3.5/lib-dynload/__pycache__/pwd.*.so ${libdir}/python3.5/getpass.* ${libdir}/python3.5/__pycache__/getpass.* " + +SUMMARY_${PN}-xml="Python basic XML support" +RDEPENDS_${PN}-xml="${PN}-core ${PN}-re" +FILES_${PN}-xml="${libdir}/python3.5/lib-dynload/_elementtree.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_elementtree.*.so ${libdir}/python3.5/lib-dynload/pyexpat.*.so ${libdir}/python3.5/lib-dynload/__pycache__/pyexpat.*.so ${libdir}/python3.5/xml ${libdir}/python3.5/xml/__pycache__ ${libdir}/python3.5/xmllib.* ${libdir}/python3.5/__pycache__/xmllib.* " + +SUMMARY_${PN}-xmlrpc="Python XML-RPC support" +RDEPENDS_${PN}-xmlrpc="${PN}-core ${PN}-xml ${PN}-netserver ${PN}-lang ${PN}-pydoc" +FILES_${PN}-xmlrpc="${libdir}/python3.5/xmlrpclib.* ${libdir}/python3.5/__pycache__/xmlrpclib.* ${libdir}/python3.5/SimpleXMLRPCServer.* ${libdir}/python3.5/__pycache__/SimpleXMLRPCServer.* ${libdir}/python3.5/DocXMLRPCServer.* ${libdir}/python3.5/__pycache__/DocXMLRPCServer.* ${libdir}/python3.5/xmlrpc ${libdir}/python3.5/xmlrpc/__pycache__ " + +SUMMARY_${PN}-modules="All Python modules" +RDEPENDS_${PN}-modules="${PN}-2to3 ${PN}-argparse ${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}-email ${PN}-enum ${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}-selectors ${PN}-shell ${PN}-signal ${PN}-smtpd ${PN}-sqlite3 ${PN}-sqlite3-tests ${PN}-stringold ${PN}-subprocess ${PN}-syslog ${PN}-terminal ${PN}-tests ${PN}-textutils ${PN}-threading ${PN}-tkinter ${PN}-typing ${PN}-unittest ${PN}-unixadmin ${PN}-xml ${PN}-xmlrpc " +ALLOW_EMPTY_${PN}-modules = "1" + + diff --git a/meta/recipes-devtools/python/python-async_0.6.1.bb b/meta/recipes-devtools/python/python-async.inc index 17948200e5..2c5cb4d191 100644 --- a/meta/recipes-devtools/python/python-async_0.6.1.bb +++ b/meta/recipes-devtools/python/python-async.inc @@ -4,14 +4,12 @@ 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] = "6f0e2ced1fe85f8410b9bde11be08587" -SRC_URI[sha256sum] = "41d14cc0456e03f34d13af284f65821d07d05c20e621bcaebd38f9ab5095d5d1" +SRC_URI = "https://files.pythonhosted.org/packages/source/a/async/async-${PV}.tar.gz" +SRC_URI[md5sum] = "9b06b5997de2154f3bc0273f80bcef6b" +SRC_URI[sha256sum] = "ac6894d876e45878faae493b0cf61d0e28ec417334448ac0a6ea2229d8343051" -S = "${WORKDIR}/async-${PV}" - -inherit distutils +UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/async/" -RDEPENDS_${PN} += "python-threading python-lang" +S = "${WORKDIR}/async-${PV}" BBCLASSEXTEND = "nativesdk" diff --git a/meta/recipes-devtools/python/python-async_0.6.2.bb b/meta/recipes-devtools/python/python-async_0.6.2.bb new file mode 100644 index 0000000000..d855e42a79 --- /dev/null +++ b/meta/recipes-devtools/python/python-async_0.6.2.bb @@ -0,0 +1,5 @@ +require python-async.inc + +inherit setuptools + +RDEPENDS_${PN} += "python-threading python-lang" diff --git a/meta/recipes-devtools/python/python-distribute_0.6.32.bb b/meta/recipes-devtools/python/python-distribute_0.6.32.bb deleted file mode 100644 index 70001457e0..0000000000 --- a/meta/recipes-devtools/python/python-distribute_0.6.32.bb +++ /dev/null @@ -1,55 +0,0 @@ -SUMMARY = "Download, build, install, upgrade, and uninstall Python packages" -HOMEPAGE = "http://packages.python.org/distribute" -SECTION = "devel/python" -LICENSE = "PSF" -LIC_FILES_CHKSUM = "file://setup.py;beginline=234;endline=234;md5=26f6b02022b737126d3c88838782dddb" - -SRCNAME = "distribute" -PR = "ml5" -DEPENDS += "python" -DEPENDS_class-native += "python-native" - -SRC_URI = " \ - http://pypi.python.org/packages/source/d/distribute/${SRCNAME}-${PV}.tar.gz \ -" -SRC_URI[md5sum] = "acb7a2da81e3612bfb1608abe4f0e568" -SRC_URI[sha256sum] = "8970cd1e148b5d1fea9430584aea66c45ea22d80e0933393ec49ebc388f718df" - -S = "${WORKDIR}/${SRCNAME}-${PV}" - -# http://python-distribute.org/distribute_setup.py - -# force the selection of python3 -#PYTHON_BASEVERSION = "3.3" -#PYTHON_MAJMIN = "3.3" - -inherit distutils - -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 - echo "./${SRCNAME}-${PV}-py${PYTHON_BASEVERSION}.egg" > ${D}${PYTHON_SITEPACKAGES_DIR}/setuptools.pth -} - -do_install_append_class-nativesdk() { - sed -i -e '1s|^#!.*|#!/usr/bin/env python|' ${D}${PYTHON_SITEPACKAGES_DIR}/distribute-${PV}-py${PYTHON_BASEVERSION}.egg/setuptools/tests/test_resources.py - sed -i -e '1s|^#!.*|#!/usr/bin/env python|' ${D}${bindir}/easy_install - sed -i -e '1s|^#!.*|#!/usr/bin/env python|' ${D}${bindir}/easy_install-${PYTHON_BASEVERSION} -} - -RDEPENDS_${PN} = "\ - python-distutils \ - python-compression \ -" - -RPROVIDES_${PN} += "python-setuptools" - -BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-devtools/python/python-git_0.3.6.bb b/meta/recipes-devtools/python/python-git.inc index 80cdd7cde0..feddf275b9 100644 --- a/meta/recipes-devtools/python/python-git_0.3.6.bb +++ b/meta/recipes-devtools/python/python-git.inc @@ -7,17 +7,15 @@ 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 = "https://files.pythonhosted.org/packages/source/G/GitPython/GitPython-${PV}.tar.gz" -SRC_URI[md5sum] = "87404ab9e0fcee81e660e932b3d9f2c6" -SRC_URI[sha256sum] = "f3f42ca085eedbd3a9956b5e639de58bbe77a119f6b3d5c3af27669a2322c4a9" +SRC_URI[md5sum] = "77f8339e68dedb6d7c4e26371a588ed9" +SRC_URI[sha256sum] = "e96f8e953cf9fee0a7599fc587667591328760b6341a0081ef311a942fc96204" -S = "${WORKDIR}/GitPython-${PV}" - -inherit setuptools +UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/GitPython/" +UPSTREAM_CHECK_REGEX = "/GitPython/(?P<pver>(\d+[\.\-_]*)+)" -RDEPENDS_${PN} += "python-gitdb python-lang python-io python-shell python-math python-re python-subprocess python-stringold" +S = "${WORKDIR}/GitPython-${PV}" BBCLASSEXTEND = "nativesdk" diff --git a/meta/recipes-devtools/python/python-git_2.1.1.bb b/meta/recipes-devtools/python/python-git_2.1.1.bb new file mode 100644 index 0000000000..e49dbea544 --- /dev/null +++ b/meta/recipes-devtools/python/python-git_2.1.1.bb @@ -0,0 +1,7 @@ +require python-git.inc + +DEPENDS = "python-gitdb" + +inherit setuptools + +RDEPENDS_${PN} += "python-gitdb python-lang python-io python-shell python-math python-re python-subprocess python-stringold python-unixadmin" diff --git a/meta/recipes-devtools/python/python-gitdb.inc b/meta/recipes-devtools/python/python-gitdb.inc new file mode 100644 index 0000000000..08193fbf25 --- /dev/null +++ b/meta/recipes-devtools/python/python-gitdb.inc @@ -0,0 +1,16 @@ +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" + +SRC_URI = "https://files.pythonhosted.org/packages/source/g/gitdb/gitdb-${PV}.tar.gz" + +SRC_URI[md5sum] = "44e4366b8bdfd306b075c3a52c96ae1a" +SRC_URI[sha256sum] = "a3ebbc27be035a2e874ed904df516e35f4a29a778a764385de09de9e0f139658" + +UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/gitdb/" + +S = "${WORKDIR}/gitdb-${PV}" + +BBCLASSEXTEND = "nativesdk" diff --git a/meta/recipes-devtools/python/python-gitdb_0.6.4.bb b/meta/recipes-devtools/python/python-gitdb_0.6.4.bb index f0083bdb1a..1777395793 100644 --- a/meta/recipes-devtools/python/python-gitdb_0.6.4.bb +++ b/meta/recipes-devtools/python/python-gitdb_0.6.4.bb @@ -1,19 +1,7 @@ -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" +require python-gitdb.inc -S = "${WORKDIR}/gitdb-${PV}" +DEPENDS = "python-async python-smmap" inherit distutils RDEPENDS_${PN} += "python-smmap python-async python-mmap python-lang python-zlib python-io python-shell" - -BBCLASSEXTEND = "nativesdk" diff --git a/meta/recipes-devtools/python/python-gst/python-path.patch b/meta/recipes-devtools/python/python-gst/python-path.patch deleted file mode 100644 index 21b5bbfcfc..0000000000 --- a/meta/recipes-devtools/python/python-gst/python-path.patch +++ /dev/null @@ -1,28 +0,0 @@ -Upstream-Status:Pending - -Index: gst-python-0.10.19/acinclude.m4 -=================================================================== ---- gst-python-0.10.19.orig/acinclude.m4 2010-04-21 15:23:44.000000000 -0700 -+++ gst-python-0.10.19/acinclude.m4 2010-11-15 14:43:00.642994001 -0800 -@@ -43,6 +43,13 @@ - [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}" -+py_prefix="${py_exec_prefix}" -+else - py_prefix=`$PYTHON -c "import sys; print sys.prefix"` - py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"` - if $PYTHON-config --help 2>/dev/null; then -@@ -53,6 +60,7 @@ - PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}" - fi - fi -+fi - AC_SUBST(PYTHON_INCLUDES) - dnl check if the headers exist: - save_CPPFLAGS="$CPPFLAGS" diff --git a/meta/recipes-devtools/python/python-gst_0.10.22.bb b/meta/recipes-devtools/python/python-gst_0.10.22.bb deleted file mode 100644 index 2a5f2b3239..0000000000 --- a/meta/recipes-devtools/python/python-gst_0.10.22.bb +++ /dev/null @@ -1,29 +0,0 @@ -SUMMARY = "Python bindings for the GStreamer multimedia framework" -SECTION = "devel/python" -LICENSE = "LGPLv2.1" -DEPENDS = "gstreamer gst-plugins-base python-pygobject" -RDEPENDS_${PN} += "python-pygtk" -PR = "r2" - -SRC_URI = "http://gstreamer.freedesktop.org/src/gst-python/gst-python-${PV}.tar.bz2 \ - file://python-path.patch" - -SRC_URI[md5sum] = "937152fe896241f827689f4b53e79b22" -SRC_URI[sha256sum] = "8f26f519a5bccd770864317e098e5e307fc5ad1201eb96329634b6508b253178" -S = "${WORKDIR}/gst-python-${PV}" - -LIC_FILES_CHKSUM = "file://COPYING;md5=39ff67e932b7bdfa9b78bad67151690b" - -inherit autotools distutils-base pkgconfig - -EXTRA_OECONF += "--with-python-includes=${STAGING_INCDIR}/../" - -FILES_${PN} += "${datadir}/gst-python" -FILES_${PN}-dev += "${datadir}/gst-python/0.10/defs" -FILES_${PN}-dbg += "${libdir}/${PYTHON_DIR}/site-packages/gst-0.10/gst/.debug/ ${libdir}/gstreamer-0.10/.debug/" - -do_configure_prepend() { - if [ `find ${STAGING_LIBDIR} -name libpython*.so` ]; then - ln -sf ${STAGING_LIBDIR}/libpython*.so `find ${STAGING_LIBDIR} -name libpython*.a -exec dirname {} \;` - fi -} diff --git a/meta/recipes-devtools/python/python-imaging/0001-python-imaging-setup.py-force-paths-for-zlib-freetyp.patch b/meta/recipes-devtools/python/python-imaging/0001-python-imaging-setup.py-force-paths-for-zlib-freetyp.patch deleted file mode 100644 index 2575306bec..0000000000 --- a/meta/recipes-devtools/python/python-imaging/0001-python-imaging-setup.py-force-paths-for-zlib-freetyp.patch +++ /dev/null @@ -1,55 +0,0 @@ -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/meta/recipes-devtools/python/python-imaging/allow.to.disable.some.features.patch b/meta/recipes-devtools/python/python-imaging/allow.to.disable.some.features.patch deleted file mode 100644 index 4960ed4661..0000000000 --- a/meta/recipes-devtools/python/python-imaging/allow.to.disable.some.features.patch +++ /dev/null @@ -1,65 +0,0 @@ -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/meta/recipes-devtools/python/python-imaging/fix-freetype-includes.patch b/meta/recipes-devtools/python/python-imaging/fix-freetype-includes.patch deleted file mode 100644 index 9ecc63a0d6..0000000000 --- a/meta/recipes-devtools/python/python-imaging/fix-freetype-includes.patch +++ /dev/null @@ -1,30 +0,0 @@ -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/meta/recipes-devtools/python/python-imaging_1.1.7.bb b/meta/recipes-devtools/python/python-imaging_1.1.7.bb deleted file mode 100644 index a678328275..0000000000 --- a/meta/recipes-devtools/python/python-imaging_1.1.7.bb +++ /dev/null @@ -1,45 +0,0 @@ -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/meta/recipes-devtools/python/python-mako.inc b/meta/recipes-devtools/python/python-mako.inc new file mode 100644 index 0000000000..10364db97c --- /dev/null +++ b/meta/recipes-devtools/python/python-mako.inc @@ -0,0 +1,15 @@ +SUMMARY = "Templating library for Python" +SECTION = "devel/python" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=1bb21fa2d2f7a534c884b990430a6863" + +SRC_URI = "https://files.pythonhosted.org/packages/source/M/Mako/Mako-${PV}.tar.gz" + +SRC_URI[md5sum] = "a28e22a339080316b2acc352b9ee631c" +SRC_URI[sha256sum] = "48559ebd872a8e77f92005884b3d88ffae552812cdf17db6768e5c3be5ebbe0d" + +UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/mako/" +UPSTREAM_CHECK_REGEX = "/Mako/(?P<pver>(\d+[\.\-_]*)+)" + +S = "${WORKDIR}/Mako-${PV}" + diff --git a/meta/recipes-devtools/python/python-mako_0.9.1.bb b/meta/recipes-devtools/python/python-mako_0.9.1.bb deleted file mode 100644 index 57d4220477..0000000000 --- a/meta/recipes-devtools/python/python-mako_0.9.1.bb +++ /dev/null @@ -1,20 +0,0 @@ -SUMMARY = "Templating library for Python" -SECTION = "devel/python" -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://LICENSE;md5=da2a9d126b93cab0996a8287dacc480b" - -SRC_URI = "https://pypi.python.org/packages/source/M/Mako/Mako-${PV}.tar.gz" -SRC_URI[md5sum] = "fe3f394ef714776d09ec6133923736a7" -SRC_URI[sha256sum] = "ed74d72b720a97a51590dfa839f2048ceeb76cc80d1d9ea5731a5262384316ae" - -S = "${WORKDIR}/Mako-${PV}" - -inherit setuptools - -RDEPENDS_${PN} = "python-threading \ - python-netclient \ - python-html \ -" -RDEPENDS_${PN}_class-native = "" - -BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-devtools/python/python-mako_1.0.6.bb b/meta/recipes-devtools/python/python-mako_1.0.6.bb new file mode 100644 index 0000000000..230044e1a2 --- /dev/null +++ b/meta/recipes-devtools/python/python-mako_1.0.6.bb @@ -0,0 +1,17 @@ +require python-mako.inc + +inherit setuptools + +RDEPENDS_${PN} = "python-threading \ + python-netclient \ + python-html \ +" +RDEPENDS_${PN}_class-native = "" + +BBCLASSEXTEND = "native nativesdk" + +# The same utility is packaged in python3-mako, so it would conflict +do_install_append() { + rm -f ${D}${bindir}/mako-render + rmdir ${D}${bindir} +} diff --git a/meta/recipes-devtools/python/python-native-2.7-manifest.inc b/meta/recipes-devtools/python/python-native-2.7-manifest.inc new file mode 100644 index 0000000000..581a37ab14 --- /dev/null +++ b/meta/recipes-devtools/python/python-native-2.7-manifest.inc @@ -0,0 +1,10 @@ + +# 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 --native' Version 20110222.2 (C) 2002-2010 Michael 'Mickey' Lauer <mlauer@vanille-media.de> + + + +RPROVIDES+="python-2to3-native python-argparse-native python-audio-native python-bsddb-native python-codecs-native python-compile-native python-compiler-native python-compression-native python-contextlib-native python-core-native python-crypt-native python-ctypes-native python-curses-native python-datetime-native python-db-native python-debugger-native python-dev-native python-difflib-native python-distutils-native python-distutils-staticdev-native python-doctest-native python-email-native python-fcntl-native python-gdbm-native python-hotshot-native python-html-native python-idle-native python-image-native python-importlib-native python-io-native python-json-native python-lang-native python-logging-native python-mailbox-native python-math-native python-mime-native python-mmap-native python-multiprocessing-native python-netclient-native python-netserver-native python-numbers-native python-pickle-native python-pkgutil-native python-plistlib-native python-pprint-native python-profile-native python-pydoc-native python-re-native python-readline-native python-resource-native python-robotparser-native python-shell-native python-smtpd-native python-sqlite3-native python-sqlite3-tests-native python-stringold-native python-subprocess-native python-syslog-native python-terminal-native python-tests-native python-textutils-native python-threading-native python-tkinter-native python-unittest-native python-unixadmin-native python-xml-native python-xmlrpc-native python-zlib-native " + + + diff --git a/meta/recipes-devtools/python/python-native-3.5-manifest.inc b/meta/recipes-devtools/python/python-native-3.5-manifest.inc new file mode 100644 index 0000000000..10be3e9bb8 --- /dev/null +++ b/meta/recipes-devtools/python/python-native-3.5-manifest.inc @@ -0,0 +1,10 @@ + +# WARNING: This file is AUTO GENERATED: Manual edits will be lost next time I regenerate the file. +# Generator: '../../../scripts/contrib/python/generate-manifest-3.5.py --native' Version 20140131 (C) 2002-2010 Michael 'Mickey' Lauer <mlauer@vanille-media.de> + + + +RPROVIDES+="python3-2to3-native python3-argparse-native python3-asyncio-native python3-audio-native python3-codecs-native python3-compile-native python3-compression-native python3-core-native python3-crypt-native python3-ctypes-native python3-curses-native python3-datetime-native python3-db-native python3-debugger-native python3-dev-native python3-difflib-native python3-distutils-native python3-distutils-staticdev-native python3-doctest-native python3-email-native python3-enum-native python3-fcntl-native python3-gdbm-native python3-html-native python3-idle-native python3-image-native python3-importlib-native python3-io-native python3-json-native python3-lang-native python3-logging-native python3-mailbox-native python3-math-native python3-mime-native python3-mmap-native python3-multiprocessing-native python3-netclient-native python3-netserver-native python3-numbers-native python3-pickle-native python3-pkgutil-native python3-pprint-native python3-profile-native python3-pydoc-native python3-re-native python3-readline-native python3-reprlib-native python3-resource-native python3-selectors-native python3-shell-native python3-signal-native python3-smtpd-native python3-sqlite3-native python3-sqlite3-tests-native python3-stringold-native python3-subprocess-native python3-syslog-native python3-terminal-native python3-tests-native python3-textutils-native python3-threading-native python3-tkinter-native python3-typing-native python3-unittest-native python3-unixadmin-native python3-xml-native python3-xmlrpc-native " + + + diff --git a/meta/recipes-devtools/python/python-native/12-distutils-prefix-is-inside-staging-area.patch b/meta/recipes-devtools/python/python-native/12-distutils-prefix-is-inside-staging-area.patch deleted file mode 100644 index f89aaff7b1..0000000000 --- a/meta/recipes-devtools/python/python-native/12-distutils-prefix-is-inside-staging-area.patch +++ /dev/null @@ -1,65 +0,0 @@ -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/meta/recipes-devtools/python/python-native/avoid_parallel_make_races_on_pgen.patch b/meta/recipes-devtools/python/python-native/avoid_parallel_make_races_on_pgen.patch deleted file mode 100644 index 1a8f68ebf3..0000000000 --- a/meta/recipes-devtools/python/python-native/avoid_parallel_make_races_on_pgen.patch +++ /dev/null @@ -1,27 +0,0 @@ -Upstream-Status: Inappropriate [embedded specific] - -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/meta/recipes-devtools/python/python-native/debug.patch b/meta/recipes-devtools/python/python-native/debug.patch index 5ec10d6b20..3617882640 100644 --- a/meta/recipes-devtools/python/python-native/debug.patch +++ b/meta/recipes-devtools/python/python-native/debug.patch @@ -1,24 +1,27 @@ Upstream-Status: Pending -Index: Python-2.6.1/Lib/distutils/unixccompiler.py +Index: Python-2.7.12/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') +--- Python-2.7.12.orig/Lib/distutils/unixccompiler.py ++++ Python-2.7.12/Lib/distutils/unixccompiler.py +@@ -278,6 +278,8 @@ class UnixCCompiler(CCompiler): + + + 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 @@ +@@ -298,12 +300,16 @@ class UnixCCompiler(CCompiler): # 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(xcode_stub): ++ print "Found %s" % (xcode_stub) + return xcode_stub elif os.path.exists(shared): + print "Found %s" % (shared) return shared diff --git a/meta/recipes-devtools/python/python-native/multilib.patch b/meta/recipes-devtools/python/python-native/multilib.patch index 8ca89e7c51..ad46085094 100644 --- a/meta/recipes-devtools/python/python-native/multilib.patch +++ b/meta/recipes-devtools/python/python-native/multilib.patch @@ -1,6 +1,6 @@ Rebased for Python 2.7.9 -Signed-Off-By: Alejandro Hernandez <alejandro.hernandez@linux.intel.com> +Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com> 2011/09/29 The python recipe building was failing because python-native @@ -10,12 +10,12 @@ recipe. Upstream-Status: Inappropriate [oe-specific] -Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com> +Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com> -Index: Python-2.7.9/Include/pythonrun.h +Index: Python-2.7.13/Include/pythonrun.h =================================================================== ---- Python-2.7.9.orig/Include/pythonrun.h -+++ Python-2.7.9/Include/pythonrun.h +--- Python-2.7.13.orig/Include/pythonrun.h ++++ Python-2.7.13/Include/pythonrun.h @@ -108,6 +108,7 @@ PyAPI_FUNC(char *) Py_GetPath(void); /* In their own files */ PyAPI_FUNC(const char *) Py_GetVersion(void); @@ -24,10 +24,10 @@ Index: Python-2.7.9/Include/pythonrun.h 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 +Index: Python-2.7.13/Lib/distutils/command/install.py =================================================================== ---- Python-2.7.9.orig/Lib/distutils/command/install.py -+++ Python-2.7.9/Lib/distutils/command/install.py +--- Python-2.7.13.orig/Lib/distutils/command/install.py ++++ Python-2.7.13/Lib/distutils/command/install.py @@ -22,6 +22,8 @@ from site import USER_BASE from site import USER_SITE @@ -46,23 +46,23 @@ Index: Python-2.7.9/Lib/distutils/command/install.py 'headers': '$base/include/python$py_version_short/$dist_name', 'scripts': '$base/bin', 'data' : '$base', -Index: Python-2.7.9/Lib/pydoc.py +Index: Python-2.7.13/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.13.orig/Lib/pydoc.py ++++ Python-2.7.13/Lib/pydoc.py +@@ -375,7 +375,7 @@ class Doc: + docmodule = docclass = docroutine = docother = docproperty = docdata = fail + + def getdocloc(self, object, +- basedir=os.path.join(sys.exec_prefix, "lib", ++ basedir=os.path.join(sys.exec_prefix, "sys.lib", + "python"+sys.version[0:3])): + """Return the location of module docs or None""" + +Index: Python-2.7.13/Lib/site.py =================================================================== ---- Python-2.7.9.orig/Lib/site.py -+++ Python-2.7.9/Lib/site.py +--- Python-2.7.13.orig/Lib/site.py ++++ Python-2.7.13/Lib/site.py @@ -288,13 +288,19 @@ def getsitepackages(): if sys.platform in ('os2emx', 'riscos'): sitepackages.append(os.path.join(prefix, "Lib", "site-packages")) @@ -83,13 +83,13 @@ Index: Python-2.7.9/Lib/site.py 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 + return sitepackages + + def addsitepackages(known_paths): +Index: Python-2.7.13/Lib/test/test_dl.py =================================================================== ---- Python-2.7.9.orig/Lib/test/test_dl.py -+++ Python-2.7.9/Lib/test/test_dl.py +--- Python-2.7.13.orig/Lib/test/test_dl.py ++++ Python-2.7.13/Lib/test/test_dl.py @@ -4,10 +4,11 @@ import unittest from test.test_support import verbose, import_module @@ -104,10 +104,10 @@ Index: Python-2.7.9/Lib/test/test_dl.py ('/usr/bin/cygwin1.dll', 'getpid'), ('/usr/lib/libc.dylib', 'getpid'), ] -Index: Python-2.7.9/Lib/trace.py +Index: Python-2.7.13/Lib/trace.py =================================================================== ---- Python-2.7.9.orig/Lib/trace.py -+++ Python-2.7.9/Lib/trace.py +--- Python-2.7.13.orig/Lib/trace.py ++++ Python-2.7.13/Lib/trace.py @@ -754,10 +754,10 @@ def main(argv=None): # should I also call expanduser? (after all, could use $HOME) @@ -121,11 +121,11 @@ Index: Python-2.7.9/Lib/trace.py "python" + sys.version[:3])) s = os.path.normpath(s) ignore_dirs.append(s) -Index: Python-2.7.9/Makefile.pre.in +Index: Python-2.7.13/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 +--- Python-2.7.13.orig/Makefile.pre.in ++++ Python-2.7.13/Makefile.pre.in +@@ -92,6 +92,7 @@ PY_CFLAGS= $(CFLAGS) $(CPPFLAGS) $(CFLAG # Machine-dependent subdirectories MACHDEP= @MACHDEP@ @@ -133,7 +133,7 @@ Index: Python-2.7.9/Makefile.pre.in # Multiarch directory (may be empty) MULTIARCH= @MULTIARCH@ -@@ -106,7 +107,7 @@ LIBDIR= @libdir@ +@@ -111,7 +112,7 @@ LIBDIR= @libdir@ MANDIR= @mandir@ INCLUDEDIR= @includedir@ CONFINCLUDEDIR= $(exec_prefix)/include @@ -142,7 +142,7 @@ Index: Python-2.7.9/Makefile.pre.in # Detailed destination directories BINLIBDEST= $(LIBDIR)/python$(VERSION) -@@ -597,6 +598,7 @@ Modules/getpath.o: $(srcdir)/Modules/get +@@ -668,6 +669,7 @@ Modules/getpath.o: $(srcdir)/Modules/get -DEXEC_PREFIX='"$(exec_prefix)"' \ -DVERSION='"$(VERSION)"' \ -DVPATH='"$(VPATH)"' \ @@ -150,7 +150,7 @@ Index: Python-2.7.9/Makefile.pre.in -o $@ $(srcdir)/Modules/getpath.c Modules/python.o: $(srcdir)/Modules/python.c -@@ -639,7 +641,7 @@ $(AST_C): $(AST_ASDL) $(ASDLGEN_FILES) +@@ -708,7 +710,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 @@ -159,25 +159,25 @@ Index: Python-2.7.9/Makefile.pre.in 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 +Index: Python-2.7.13/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 +--- Python-2.7.13.orig/Modules/getpath.c ++++ Python-2.7.13/Modules/getpath.c +@@ -100,6 +100,13 @@ + #error "PREFIX, EXEC_PREFIX, VERSION, and VPATH must be constant defined" #endif +#define LIB_PYTHON LIB "/python" VERSION + - #ifndef PYTHONPATH --#define PYTHONPATH PREFIX "/lib/python" VERSION ":" \ -- EXEC_PREFIX "/lib/python" VERSION "/lib-dynload" ++#ifndef PYTHONPATH +#define PYTHONPATH PREFIX "/" LIB_PYTHON ":" \ -+ EXEC_PREFIX "/" LIB_PYTHON "/lib-dynload" - #endif - ++ EXEC_PREFIX "/" LIB_PYTHON "/lib-dynload" ++#endif ++ #ifndef LANDMARK -@@ -129,7 +131,7 @@ static char prefix[MAXPATHLEN+1]; + #define LANDMARK "os.py" + #endif +@@ -108,7 +115,7 @@ static char prefix[MAXPATHLEN+1]; static char exec_prefix[MAXPATHLEN+1]; static char progpath[MAXPATHLEN+1]; static char *module_search_path = NULL; @@ -186,10 +186,10 @@ Index: Python-2.7.9/Modules/getpath.c static void reduce(char *dir) -Index: Python-2.7.9/Python/getplatform.c +Index: Python-2.7.13/Python/getplatform.c =================================================================== ---- Python-2.7.9.orig/Python/getplatform.c -+++ Python-2.7.9/Python/getplatform.c +--- Python-2.7.13.orig/Python/getplatform.c ++++ Python-2.7.13/Python/getplatform.c @@ -10,3 +10,13 @@ Py_GetPlatform(void) { return PLATFORM; @@ -204,10 +204,10 @@ Index: Python-2.7.9/Python/getplatform.c +{ + return LIB; +} -Index: Python-2.7.9/Python/sysmodule.c +Index: Python-2.7.13/Python/sysmodule.c =================================================================== ---- Python-2.7.9.orig/Python/sysmodule.c -+++ Python-2.7.9/Python/sysmodule.c +--- Python-2.7.13.orig/Python/sysmodule.c ++++ Python-2.7.13/Python/sysmodule.c @@ -1437,6 +1437,8 @@ _PySys_Init(void) PyString_FromString(Py_GetCopyright())); SET_SYS_FROM_STRING("platform", @@ -217,11 +217,11 @@ Index: Python-2.7.9/Python/sysmodule.c SET_SYS_FROM_STRING("executable", PyString_FromString(Py_GetProgramFullPath())); SET_SYS_FROM_STRING("prefix", -Index: Python-2.7.9/configure.ac +Index: Python-2.7.13/configure.ac =================================================================== ---- Python-2.7.9.orig/configure.ac -+++ Python-2.7.9/configure.ac -@@ -736,6 +736,11 @@ SunOS*) +--- Python-2.7.13.orig/configure.ac ++++ Python-2.7.13/configure.ac +@@ -759,6 +759,11 @@ SunOS*) ;; esac diff --git a/meta/recipes-devtools/python/python-native/nohostlibs.patch b/meta/recipes-devtools/python/python-native/nohostlibs.patch index 8a452e94dc..078060b49e 100644 --- a/meta/recipes-devtools/python/python-native/nohostlibs.patch +++ b/meta/recipes-devtools/python/python-native/nohostlibs.patch @@ -2,8 +2,8 @@ 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> +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 =================================================================== diff --git a/meta/recipes-devtools/python/python-native_2.7.9.bb b/meta/recipes-devtools/python/python-native_2.7.13.bb index 34f5c2914e..7edf153489 100644 --- a/meta/recipes-devtools/python/python-native_2.7.9.bb +++ b/meta/recipes-devtools/python/python-native_2.7.13.bb @@ -1,14 +1,14 @@ require python.inc EXTRANATIVEPATH += "bzip2-native" -DEPENDS = "openssl-native bzip2-replacement-native zlib-native readline-native sqlite3-native" +DEPENDS = "openssl-native bzip2-replacement-native zlib-native readline-native sqlite3-native expat-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://0001-distutils-set-the-prefix-to-be-inside-staging-direct.patch \ file://debug.patch \ file://unixccompiler.patch \ file://nohostlibs.patch \ @@ -17,21 +17,19 @@ SRC_URI += "\ 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" +require python-native-${PYTHON_MAJMIN}-manifest.inc -EXTRA_OECONF_append = " --bindir=${bindir}/${PN}" +EXTRA_OECONF_append = " --bindir=${bindir}/${PN} --with-system-expat=${STAGING_DIR_HOST}" EXTRA_OEMAKE = '\ - BUILD_SYS="" \ - HOST_SYS="" \ LIBC="" \ STAGING_LIBDIR=${STAGING_LIBDIR_NATIVE} \ STAGING_INCDIR=${STAGING_INCDIR_NATIVE} \ diff --git a/meta/recipes-devtools/python/python-nose_1.2.1.bb b/meta/recipes-devtools/python/python-nose_1.2.1.bb deleted file mode 100644 index f55461d047..0000000000 --- a/meta/recipes-devtools/python/python-nose_1.2.1.bb +++ /dev/null @@ -1,16 +0,0 @@ -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] = "735e3f1ce8b07e70ee1b742a8a53585a" -SRC_URI[sha256sum] = "2171e9202d118d302d5db1decb52dd862b79e2a626ca19653a6914574a6ca7d9" - -S = "${WORKDIR}/nose-${PV}" - -inherit setuptools - -BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-devtools/python/python-nose_1.3.7.bb b/meta/recipes-devtools/python/python-nose_1.3.7.bb new file mode 100644 index 0000000000..3757f3a8b7 --- /dev/null +++ b/meta/recipes-devtools/python/python-nose_1.3.7.bb @@ -0,0 +1,24 @@ +SUMMARY = "Extends Python unittest to make testing easier" +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 = "https://files.pythonhosted.org/packages/source/n/nose/nose-${PV}.tar.gz" + +SRC_URI[md5sum] = "4d3ad0ff07b61373d2cefc89c5d0b20b" +SRC_URI[sha256sum] = "f1bffef9cbc82628f6e7d7b40d7e255aefaa1adb6a1b1d26c69a8b79e6208a98" + +UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/nose/" +UPSTREAM_CHECK_REGEX = "/nose/(?P<pver>(\d+[\.\-_]*)+)" + +S = "${WORKDIR}/nose-${PV}" + +inherit setuptools + +RDEPENDS_${PN} = "\ + python-unittest \ + " + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-devtools/python/python-numpy/aarch64/_numpyconfig.h b/meta/recipes-devtools/python/python-numpy/aarch64/_numpyconfig.h deleted file mode 100644 index be57ac27bf..0000000000 --- a/meta/recipes-devtools/python/python-numpy/aarch64/_numpyconfig.h +++ /dev/null @@ -1,30 +0,0 @@ -#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/meta/recipes-devtools/python/python-numpy/aarch64/config.h b/meta/recipes-devtools/python/python-numpy/aarch64/config.h deleted file mode 100644 index c30b868f2f..0000000000 --- a/meta/recipes-devtools/python/python-numpy/aarch64/config.h +++ /dev/null @@ -1,139 +0,0 @@ -#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/meta/recipes-devtools/python/python-numpy/arm/config.h b/meta/recipes-devtools/python/python-numpy/arm/config.h deleted file mode 100644 index 17ef186d56..0000000000 --- a/meta/recipes-devtools/python/python-numpy/arm/config.h +++ /dev/null @@ -1,21 +0,0 @@ -/* ./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/meta/recipes-devtools/python/python-numpy/arm/numpyconfig.h b/meta/recipes-devtools/python/python-numpy/arm/numpyconfig.h deleted file mode 100644 index c4bf6547f0..0000000000 --- a/meta/recipes-devtools/python/python-numpy/arm/numpyconfig.h +++ /dev/null @@ -1,17 +0,0 @@ -/* 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/meta/recipes-devtools/python/python-numpy/armeb/config.h b/meta/recipes-devtools/python/python-numpy/armeb/config.h deleted file mode 100644 index 17ef186d56..0000000000 --- a/meta/recipes-devtools/python/python-numpy/armeb/config.h +++ /dev/null @@ -1,21 +0,0 @@ -/* ./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/meta/recipes-devtools/python/python-numpy/armeb/numpyconfig.h b/meta/recipes-devtools/python/python-numpy/armeb/numpyconfig.h deleted file mode 100644 index c4bf6547f0..0000000000 --- a/meta/recipes-devtools/python/python-numpy/armeb/numpyconfig.h +++ /dev/null @@ -1,17 +0,0 @@ -/* 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/meta/recipes-devtools/python/python-numpy/i586/config.h b/meta/recipes-devtools/python/python-numpy/i586/config.h deleted file mode 100644 index 08e41e3d99..0000000000 --- a/meta/recipes-devtools/python/python-numpy/i586/config.h +++ /dev/null @@ -1,108 +0,0 @@ -#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/meta/recipes-devtools/python/python-numpy/i586/numpyconfig.h b/meta/recipes-devtools/python/python-numpy/i586/numpyconfig.h deleted file mode 100644 index ff7938cd96..0000000000 --- a/meta/recipes-devtools/python/python-numpy/i586/numpyconfig.h +++ /dev/null @@ -1,24 +0,0 @@ -#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/meta/recipes-devtools/python/python-numpy/mips/_numpyconfig.h b/meta/recipes-devtools/python/python-numpy/mips/_numpyconfig.h deleted file mode 100644 index c0c42851ba..0000000000 --- a/meta/recipes-devtools/python/python-numpy/mips/_numpyconfig.h +++ /dev/null @@ -1,30 +0,0 @@ -#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/meta/recipes-devtools/python/python-numpy/mips/config.h b/meta/recipes-devtools/python/python-numpy/mips/config.h deleted file mode 100644 index 2f6135adce..0000000000 --- a/meta/recipes-devtools/python/python-numpy/mips/config.h +++ /dev/null @@ -1,139 +0,0 @@ -#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/meta/recipes-devtools/python/python-numpy/mips64/_numpyconfig.h b/meta/recipes-devtools/python/python-numpy/mips64/_numpyconfig.h deleted file mode 100644 index be57ac27bf..0000000000 --- a/meta/recipes-devtools/python/python-numpy/mips64/_numpyconfig.h +++ /dev/null @@ -1,30 +0,0 @@ -#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/meta/recipes-devtools/python/python-numpy/mips64/config.h b/meta/recipes-devtools/python/python-numpy/mips64/config.h deleted file mode 100644 index c30b868f2f..0000000000 --- a/meta/recipes-devtools/python/python-numpy/mips64/config.h +++ /dev/null @@ -1,139 +0,0 @@ -#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/meta/recipes-devtools/python/python-numpy/mips64n32/_numpyconfig.h b/meta/recipes-devtools/python/python-numpy/mips64n32/_numpyconfig.h deleted file mode 100644 index be57ac27bf..0000000000 --- a/meta/recipes-devtools/python/python-numpy/mips64n32/_numpyconfig.h +++ /dev/null @@ -1,30 +0,0 @@ -#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/meta/recipes-devtools/python/python-numpy/mips64n32/config.h b/meta/recipes-devtools/python/python-numpy/mips64n32/config.h deleted file mode 100644 index c30b868f2f..0000000000 --- a/meta/recipes-devtools/python/python-numpy/mips64n32/config.h +++ /dev/null @@ -1,139 +0,0 @@ -#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/meta/recipes-devtools/python/python-numpy/mipsel/config.h b/meta/recipes-devtools/python/python-numpy/mipsel/config.h deleted file mode 100644 index 17ef186d56..0000000000 --- a/meta/recipes-devtools/python/python-numpy/mipsel/config.h +++ /dev/null @@ -1,21 +0,0 @@ -/* ./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/meta/recipes-devtools/python/python-numpy/mipsel/numpyconfig.h b/meta/recipes-devtools/python/python-numpy/mipsel/numpyconfig.h deleted file mode 100644 index c4bf6547f0..0000000000 --- a/meta/recipes-devtools/python/python-numpy/mipsel/numpyconfig.h +++ /dev/null @@ -1,17 +0,0 @@ -/* 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/meta/recipes-devtools/python/python-numpy/no-host-paths.patch b/meta/recipes-devtools/python/python-numpy/no-host-paths.patch deleted file mode 100644 index 0efb01a6bb..0000000000 --- a/meta/recipes-devtools/python/python-numpy/no-host-paths.patch +++ /dev/null @@ -1,57 +0,0 @@ -Don't search /usr and so on for libraries by default to avoid host contamination. - -Upstream-Status: Inapproprite (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/meta/recipes-devtools/python/python-numpy/powerpc/_numpyconfig.h b/meta/recipes-devtools/python/python-numpy/powerpc/_numpyconfig.h deleted file mode 100644 index 73cbfb1baa..0000000000 --- a/meta/recipes-devtools/python/python-numpy/powerpc/_numpyconfig.h +++ /dev/null @@ -1,30 +0,0 @@ -#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/meta/recipes-devtools/python/python-numpy/powerpc/config.h b/meta/recipes-devtools/python/python-numpy/powerpc/config.h deleted file mode 100644 index f65d39d5de..0000000000 --- a/meta/recipes-devtools/python/python-numpy/powerpc/config.h +++ /dev/null @@ -1,139 +0,0 @@ -#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/meta/recipes-devtools/python/python-numpy/powerpc64/_numpyconfig.h b/meta/recipes-devtools/python/python-numpy/powerpc64/_numpyconfig.h deleted file mode 100644 index be57ac27bf..0000000000 --- a/meta/recipes-devtools/python/python-numpy/powerpc64/_numpyconfig.h +++ /dev/null @@ -1,30 +0,0 @@ -#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/meta/recipes-devtools/python/python-numpy/powerpc64/config.h b/meta/recipes-devtools/python/python-numpy/powerpc64/config.h deleted file mode 100644 index c30b868f2f..0000000000 --- a/meta/recipes-devtools/python/python-numpy/powerpc64/config.h +++ /dev/null @@ -1,139 +0,0 @@ -#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/meta/recipes-devtools/python/python-numpy/trycompile.diff b/meta/recipes-devtools/python/python-numpy/trycompile.diff deleted file mode 100644 index 6824227cff..0000000000 --- a/meta/recipes-devtools/python/python-numpy/trycompile.diff +++ /dev/null @@ -1,36 +0,0 @@ -Upstream-Status: Pending -Signed-off-by: Koen Kooi <koen@dominion.thruhere.net> - ---- /tmp/setup.py 2008-09-01 10:37:44.000000000 +0200 -+++ numpy-1.1.1/numpy/core/setup.py 2008-09-01 10:38:20.373198000 +0200 -@@ -80,8 +80,7 @@ - raise SystemError,\ - "Non-existing %s. Perhaps you need to install"\ - " python-dev|python-devel." % (python_h) -- result = config_cmd.try_run(tc,include_dirs=[python_include], -- library_dirs = default_lib_dirs) -+ result = config_cmd.try_compile(tc) - if not result: - raise SystemError,"Failed to test configuration. "\ - "See previous error messages for more information." -@@ -95,7 +94,7 @@ - if mathlib: - mathlibs_choices.insert(0,mathlib.split(',')) - for libs in mathlibs_choices: -- if config_cmd.try_run(tc,libraries=libs): -+ if config_cmd.try_compile(tc): - mathlibs = libs - break - else: -@@ -180,10 +179,7 @@ - " python-dev|python-devel." % (python_h) - - config.numpy_include_dirs -- result = config_cmd.try_run(testcode, -- include_dirs = [python_include] + \ -- config.numpy_include_dirs, -- library_dirs = default_lib_dirs) -+ result = config_cmd.try_compile(testcode) - - if not result: - raise SystemError,"Failed to generate numpy configuration. "\ diff --git a/meta/recipes-devtools/python/python-numpy/unbreak-assumptions.diff b/meta/recipes-devtools/python/python-numpy/unbreak-assumptions.diff deleted file mode 100644 index 20ec6fdbc7..0000000000 --- a/meta/recipes-devtools/python/python-numpy/unbreak-assumptions.diff +++ /dev/null @@ -1,19 +0,0 @@ -Upstream-Status: Inappropriate -Signed-off-by: Koen Kooi <koen@dominion.thruhere.net> - ---- /tmp/system_info.py 2008-08-22 00:38:16.000000000 +0200 -+++ numpy-1.1.1/numpy/distutils/system_info.py 2008-08-22 00:40:33.013198000 +0200 -@@ -137,11 +137,8 @@ - default_x11_lib_dirs = [] - default_x11_include_dirs = [] - else: -- default_lib_dirs = ['/usr/local/lib', '/opt/lib', '/usr/lib', -- '/opt/local/lib', '/sw/lib'] -- default_include_dirs = ['/usr/local/include', -- '/opt/include', '/usr/include', -- '/opt/local/include', '/sw/include'] -+ default_lib_dirs = ['/non-existant-dir'] -+ default_include_dirs = ['non-existant-dir'] - default_src_dirs = ['.','/usr/local/src', '/opt/src','/sw/src'] - - try: diff --git a/meta/recipes-devtools/python/python-numpy/x86-64/_numpyconfig.h b/meta/recipes-devtools/python/python-numpy/x86-64/_numpyconfig.h deleted file mode 100644 index be57ac27bf..0000000000 --- a/meta/recipes-devtools/python/python-numpy/x86-64/_numpyconfig.h +++ /dev/null @@ -1,30 +0,0 @@ -#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/meta/recipes-devtools/python/python-numpy/x86-64/config.h b/meta/recipes-devtools/python/python-numpy/x86-64/config.h deleted file mode 100644 index 0ce63b7d22..0000000000 --- a/meta/recipes-devtools/python/python-numpy/x86-64/config.h +++ /dev/null @@ -1,139 +0,0 @@ -#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/meta/recipes-devtools/python/python-numpy_1.7.0.bb b/meta/recipes-devtools/python/python-numpy_1.7.0.bb deleted file mode 100644 index d4fd279230..0000000000 --- a/meta/recipes-devtools/python/python-numpy_1.7.0.bb +++ /dev/null @@ -1,99 +0,0 @@ -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_i586 = " \ - 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/meta/recipes-devtools/python/python-pexpect_4.2.1.bb b/meta/recipes-devtools/python/python-pexpect_4.2.1.bb new file mode 100644 index 0000000000..1321797ef9 --- /dev/null +++ b/meta/recipes-devtools/python/python-pexpect_4.2.1.bb @@ -0,0 +1,28 @@ +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=1c7a725251880af8c6a148181665385b" + +SRCNAME = "pexpect" + +SRC_URI = "https://files.pythonhosted.org/packages/source/p/${SRCNAME}/${SRCNAME}-${PV}.tar.gz" +SRC_URI[md5sum] = "3694410001a99dff83f0b500a1ca1c95" +SRC_URI[sha256sum] = "3d132465a75b57aa818341c6521392a06cc660feb3988d7f1074f39bd23c9a92" + +UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/pexpect" + +S = "${WORKDIR}/pexpect-${PV}" + +inherit setuptools + +RDEPENDS_${PN} = "\ + python-core \ + python-io \ + python-terminal \ + python-resource \ + python-fcntl \ + python-ptyprocess \ +" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-devtools/python/python-ptyprocess_0.5.1.bb b/meta/recipes-devtools/python/python-ptyprocess_0.5.1.bb new file mode 100644 index 0000000000..eed24ad2ec --- /dev/null +++ b/meta/recipes-devtools/python/python-ptyprocess_0.5.1.bb @@ -0,0 +1,23 @@ +SUMMARY = "Run a subprocess in a pseudo terminal" +HOMEPAGE = "http://ptyprocess.readthedocs.io/en/latest/" +SECTION = "devel/python" +LICENSE = "ISC" +LIC_FILES_CHKSUM = "file://LICENSE;md5=cfdcd51fa7d5808da4e74346ee394490" + +SRCNAME = "ptyprocess" + +SRC_URI = "https://files.pythonhosted.org/packages/source/p/${SRCNAME}/${SRCNAME}-${PV}.tar.gz" +SRC_URI[md5sum] = "94e537122914cc9ec9c1eadcd36e73a1" +SRC_URI[sha256sum] = "0530ce63a9295bfae7bd06edc02b6aa935619f486f0f1dc0972f516265ee81a6" + +UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/ptyprocess" + +S = "${WORKDIR}/${SRCNAME}-${PV}" + +inherit setuptools + +RDEPENDS_${PN} = "\ + python-core \ +" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-devtools/python/python-pycairo_1.10.0.bb b/meta/recipes-devtools/python/python-pycairo_1.10.0.bb deleted file mode 100644 index 70fe25c1a1..0000000000 --- a/meta/recipes-devtools/python/python-pycairo_1.10.0.bb +++ /dev/null @@ -1,41 +0,0 @@ -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/meta/recipes-devtools/python/python-pycurl_7.19.5.1.bb b/meta/recipes-devtools/python/python-pycurl.inc index 0d0effef60..d26318b6d2 100644 --- a/meta/recipes-devtools/python/python-pycurl_7.19.5.1.bb +++ b/meta/recipes-devtools/python/python-pycurl.inc @@ -2,12 +2,12 @@ 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 \ +LIC_FILES_CHKSUM = "file://README.rst;beginline=166;endline=182;md5=a84a1caa65b89d4584b693d3680062fb \ file://COPYING-LGPL;md5=3579a9fd0221d49a237aaa33492f988c \ - file://COPYING-MIT;md5=e8200955c773b2a0fd6cea36ea5e87be" + file://COPYING-MIT;md5=b7e434aeb228ed731c00bcf177e79b19" -DEPENDS = "curl python" -RDEPENDS_${PN} = "python-core curl" +DEPENDS = "curl ${PYTHON_PN}" +RDEPENDS_${PN} = "${PYTHON_PN}-core curl" SRCNAME = "pycurl" SRC_URI = "\ @@ -15,18 +15,10 @@ SRC_URI = "\ file://no-static-link.patch \ " -SRC_URI[archive.md5sum] = "f44cd54256d7a643ab7b16e3f409b26b" -SRC_URI[archive.sha256sum] = "6e9770f80459757f73bd71af82fbb29cd398b38388cdf1beab31ea91a331bc6c" +SRC_URI[archive.md5sum] = "bca7bf47320082588db544ced2ba8717" +SRC_URI[archive.sha256sum] = "8a1e0eb55573388275a1d6c2534ca4cfca5d7fa772b99b505c08fa149b27aed0" 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 diff --git a/meta/recipes-devtools/python/python-pycurl/no-static-link.patch b/meta/recipes-devtools/python/python-pycurl/no-static-link.patch index c5349ee578..212779ca37 100644 --- a/meta/recipes-devtools/python/python-pycurl/no-static-link.patch +++ b/meta/recipes-devtools/python/python-pycurl/no-static-link.patch @@ -1,12 +1,12 @@ 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 @@ +Signed-off-by: Maxin B. John <maxin.john@intel.com> +--- +diff -Naur pycurl-7.19.5.2-orig/setup.py pycurl-7.19.5.2/setup.py +--- pycurl-7.19.5.2-orig/setup.py 2015-11-02 15:42:24.000000000 +0200 ++++ pycurl-7.19.5.2/setup.py 2015-11-02 17:59:36.121527273 +0200 +@@ -154,7 +154,7 @@ optbuf = '' sslhintbuf = '' errtext = '' diff --git a/meta/recipes-devtools/python/python-pycurl_7.21.5.bb b/meta/recipes-devtools/python/python-pycurl_7.21.5.bb new file mode 100644 index 0000000000..eb70cea663 --- /dev/null +++ b/meta/recipes-devtools/python/python-pycurl_7.21.5.bb @@ -0,0 +1,3 @@ +require python-pycurl.inc + +inherit distutils diff --git a/meta/recipes-devtools/python/python-pygobject/obsolete_automake_macros.patch b/meta/recipes-devtools/python/python-pygobject/obsolete_automake_macros.patch deleted file mode 100644 index c2591123b3..0000000000 --- a/meta/recipes-devtools/python/python-pygobject/obsolete_automake_macros.patch +++ /dev/null @@ -1,23 +0,0 @@ -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/meta/recipes-devtools/python/python-pygobject_2.28.3.bb b/meta/recipes-devtools/python/python-pygobject_2.28.3.bb deleted file mode 100644 index e7f17ff689..0000000000 --- a/meta/recipes-devtools/python/python-pygobject_2.28.3.bb +++ /dev/null @@ -1,37 +0,0 @@ -SUMMARY = "Python GObject bindings" -SECTION = "devel/python" -LICENSE = "LGPLv2.1" -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 \ -" - -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/meta/recipes-devtools/python/python-pygtk/acinclude.m4 b/meta/recipes-devtools/python/python-pygtk/acinclude.m4 deleted file mode 100644 index 53518fb2eb..0000000000 --- a/meta/recipes-devtools/python/python-pygtk/acinclude.m4 +++ /dev/null @@ -1,90 +0,0 @@ -## 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/meta/recipes-devtools/python/python-pygtk/add-gtk-types.defs-into-gdk.c-dependence.patch b/meta/recipes-devtools/python/python-pygtk/add-gtk-types.defs-into-gdk.c-dependence.patch deleted file mode 100644 index df0f9cd6c0..0000000000 --- a/meta/recipes-devtools/python/python-pygtk/add-gtk-types.defs-into-gdk.c-dependence.patch +++ /dev/null @@ -1,32 +0,0 @@ -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/meta/recipes-devtools/python/python-pygtk/fix-gtkunixprint.patch b/meta/recipes-devtools/python/python-pygtk/fix-gtkunixprint.patch deleted file mode 100644 index 16c0e8e770..0000000000 --- a/meta/recipes-devtools/python/python-pygtk/fix-gtkunixprint.patch +++ /dev/null @@ -1,20 +0,0 @@ -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/meta/recipes-devtools/python/python-pygtk/fix-pygtk-2.0.pc.patch b/meta/recipes-devtools/python/python-pygtk/fix-pygtk-2.0.pc.patch deleted file mode 100644 index b6156540bd..0000000000 --- a/meta/recipes-devtools/python/python-pygtk/fix-pygtk-2.0.pc.patch +++ /dev/null @@ -1,13 +0,0 @@ -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/meta/recipes-devtools/python/python-pygtk/nodocs.patch b/meta/recipes-devtools/python/python-pygtk/nodocs.patch deleted file mode 100644 index f07309a7ba..0000000000 --- a/meta/recipes-devtools/python/python-pygtk/nodocs.patch +++ /dev/null @@ -1,15 +0,0 @@ -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/meta/recipes-devtools/python/python-pygtk/prevent_to_get_display_during_import.patch b/meta/recipes-devtools/python/python-pygtk/prevent_to_get_display_during_import.patch deleted file mode 100644 index 833038e7f8..0000000000 --- a/meta/recipes-devtools/python/python-pygtk/prevent_to_get_display_during_import.patch +++ /dev/null @@ -1,16 +0,0 @@ -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/meta/recipes-devtools/python/python-pygtk/python-pygtk2/acinclude.m4 b/meta/recipes-devtools/python/python-pygtk/python-pygtk2/acinclude.m4 deleted file mode 100644 index 53518fb2eb..0000000000 --- a/meta/recipes-devtools/python/python-pygtk/python-pygtk2/acinclude.m4 +++ /dev/null @@ -1,90 +0,0 @@ -## 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/meta/recipes-devtools/python/python-pygtk/update-dependences-of-defs.c.patch b/meta/recipes-devtools/python/python-pygtk/update-dependences-of-defs.c.patch deleted file mode 100644 index 3ed954eee5..0000000000 --- a/meta/recipes-devtools/python/python-pygtk/update-dependences-of-defs.c.patch +++ /dev/null @@ -1,38 +0,0 @@ -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/meta/recipes-devtools/python/python-pygtk_2.24.0.bb b/meta/recipes-devtools/python/python-pygtk_2.24.0.bb deleted file mode 100644 index 053f37fcbe..0000000000 --- a/meta/recipes-devtools/python/python-pygtk_2.24.0.bb +++ /dev/null @@ -1,74 +0,0 @@ -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 - sed -i 's:tests docs:tests:' ${S}/Makefile.am -} - -# dirty fix #2: fix build system paths leaking in -do_install_append() { - for i in `find ${D} -name "*.py"` ; do \ - sed -i -e s:${D}::g $i - done - - for i in `find ${D} -name "*.la"` ; do \ - sed -i -e s:${STAGING_LIBDIR}:${libdir}:g $i - done - - if test -e ${D}${bindir} ; then - for i in ${D}${bindir}/* ; do \ - sed -i -e s:${STAGING_BINDIR_NATIVE}:${bindir}:g $i - done - fi - - if test -e ${D}${sbindir} ; then - for i in ${D}${sbindir}/* ; do \ - sed -i -e s:${STAGING_BINDIR_NATIVE}:${bindir}:g $i - done - fi - - 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/meta/recipes-devtools/python/python-pyrex-native_0.9.9.bb b/meta/recipes-devtools/python/python-pyrex-native_0.9.9.bb deleted file mode 100644 index e8ef1aa12b..0000000000 --- a/meta/recipes-devtools/python/python-pyrex-native_0.9.9.bb +++ /dev/null @@ -1,5 +0,0 @@ -require python-pyrex_${PV}.bb -inherit native pythonnative -DEPENDS = "python-native" -RDEPENDS_${PN} = "" -PR = "r3" diff --git a/meta/recipes-devtools/python/python-pyrex/pyrex-fix-optimized-mode.patch b/meta/recipes-devtools/python/python-pyrex/pyrex-fix-optimized-mode.patch deleted file mode 100644 index c58c3280e2..0000000000 --- a/meta/recipes-devtools/python/python-pyrex/pyrex-fix-optimized-mode.patch +++ /dev/null @@ -1,15 +0,0 @@ -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/meta/recipes-devtools/python/python-pyrex_0.9.9.bb b/meta/recipes-devtools/python/python-pyrex_0.9.9.bb deleted file mode 100644 index c4dd2e69b0..0000000000 --- a/meta/recipes-devtools/python/python-pyrex_0.9.9.bb +++ /dev/null @@ -1,22 +0,0 @@ -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/meta/recipes-devtools/python/python-scons-native_2.3.4.bb b/meta/recipes-devtools/python/python-scons-native_2.5.1.bb index dae89ab5d2..dae89ab5d2 100644 --- a/meta/recipes-devtools/python/python-scons-native_2.3.4.bb +++ b/meta/recipes-devtools/python/python-scons-native_2.5.1.bb diff --git a/meta/recipes-devtools/python/python-scons_2.3.4.bb b/meta/recipes-devtools/python/python-scons_2.3.4.bb deleted file mode 100644 index 9b828fac9d..0000000000 --- a/meta/recipes-devtools/python/python-scons_2.3.4.bb +++ /dev/null @@ -1,14 +0,0 @@ -SUMMARY = "Software Construction tool (make/autotools replacement)" -SECTION = "devel/python" -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=f0ad8a74a10870caa5e08a3e45d719e2" -SRCNAME = "scons" - -SRC_URI = "${SOURCEFORGE_MIRROR}/scons/scons-${PV}.tar.gz" - -SRC_URI[md5sum] = "91fbbb67c2c65b03c746601baac4a6a5" -SRC_URI[sha256sum] = "4b57d72066fed3b6ff65a7dd9f73633c9b1c09f87520e9b3aae84b3e4864b441" - -S = "${WORKDIR}/${SRCNAME}-${PV}" - -inherit distutils diff --git a/meta/recipes-devtools/python/python-scons_2.5.1.bb b/meta/recipes-devtools/python/python-scons_2.5.1.bb new file mode 100644 index 0000000000..3f43856199 --- /dev/null +++ b/meta/recipes-devtools/python/python-scons_2.5.1.bb @@ -0,0 +1,23 @@ +SUMMARY = "Software Construction tool (make/autotools replacement)" +SECTION = "devel/python" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3a885dff6d14e4cd876d9008a09a42de" +SRCNAME = "scons" + +SRC_URI = "https://files.pythonhosted.org/packages/source/s/${SRCNAME}/${SRCNAME}-${PV}.tar.gz" + +SRC_URI[md5sum] = "3eac81e5e8206304a9b4683c57665aa4" +SRC_URI[sha256sum] = "c8de85fc02ed1a687b1f2ac791eaa0c1707b4382a204f17d782b5b111b9fdf07" + +UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/SCons/" + +S = "${WORKDIR}/${SRCNAME}-${PV}" + +inherit setuptools + +RDEPENDS_${PN} = "\ + python-fcntl \ + python-io \ + python-json \ + python-subprocess \ + " diff --git a/meta/recipes-devtools/python/python-setuptools.inc b/meta/recipes-devtools/python/python-setuptools.inc new file mode 100644 index 0000000000..40f47d4bcd --- /dev/null +++ b/meta/recipes-devtools/python/python-setuptools.inc @@ -0,0 +1,21 @@ +SUMMARY = "Download, build, install, upgrade, and uninstall Python packages" +HOMEPAGE = "https://pypi.python.org/pypi/setuptools" +SECTION = "devel/python" +LICENSE = "MIT" + +LIC_FILES_CHKSUM = "file://setup.py;beginline=146;endline=146;md5=3e8df024d6c1442d18e84acf8fbbc475" + +SRCNAME = "setuptools" + +SRC_URI = "https://files.pythonhosted.org/packages/source/s/${SRCNAME}/${SRCNAME}-${PV}.tar.gz" + +SRC_URI[md5sum] = "8b67868c3430e978833ebd0d1b766694" +SRC_URI[sha256sum] = "8303fb24306385f09bf8b0e5a385c1548e42e8efc08558d64049bc0d55ea012d" + +UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/setuptools" + +S = "${WORKDIR}/${SRCNAME}-${PV}" + +do_install_prepend() { + install -d ${D}${PYTHON_SITEPACKAGES_DIR} +} diff --git a/meta/recipes-devtools/python/python-setuptools_32.1.1.bb b/meta/recipes-devtools/python/python-setuptools_32.1.1.bb new file mode 100644 index 0000000000..526474c7ea --- /dev/null +++ b/meta/recipes-devtools/python/python-setuptools_32.1.1.bb @@ -0,0 +1,38 @@ +require python-setuptools.inc + +PROVIDES = "python-distribute" + +DEPENDS += "python" +DEPENDS_class-native += "python-native" + +inherit distutils + +DISTUTILS_INSTALL_ARGS += "--install-lib=${D}${PYTHON_SITEPACKAGES_DIR}" + +RDEPENDS_${PN} = "\ + python-stringold \ + python-email \ + python-shell \ + python-distutils \ + python-compression \ + python-pkgutil \ + python-plistlib \ + python-numbers \ + python-html \ + python-netserver \ + python-ctypes \ + python-subprocess \ + python-unittest \ + python-compile \ +" + +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/meta/recipes-devtools/python/python-six.inc b/meta/recipes-devtools/python/python-six.inc new file mode 100644 index 0000000000..bd12fa94a1 --- /dev/null +++ b/meta/recipes-devtools/python/python-six.inc @@ -0,0 +1,16 @@ +SUMMARY = "Python 2 and 3 compatibility library" +HOMEPAGE = "https://pypi.python.org/pypi/six/" +SECTION = "devel/python" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=6f00d4a50713fa859858dd9abaa35b21" + +SRC_URI = "https://files.pythonhosted.org/packages/source/s/six/six-${PV}.tar.gz" +SRC_URI[md5sum] = "34eed507548117b2ab523ab14b2f8b55" +SRC_URI[sha256sum] = "105f8d68616f8248e24bf0e9372ef04d3cc10104f1980f54d57b2ce73a5ad56a" + +UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/six/" +UPSTREAM_CHECK_REGEX = "/six/(?P<pver>(\d+[\.\-_]*)+)" + +BBCLASSEXTEND = "native nativesdk" + +S = "${WORKDIR}/six-${PV}" diff --git a/meta/recipes-devtools/python/python-six_1.10.0.bb b/meta/recipes-devtools/python/python-six_1.10.0.bb new file mode 100644 index 0000000000..4350485f73 --- /dev/null +++ b/meta/recipes-devtools/python/python-six_1.10.0.bb @@ -0,0 +1,4 @@ +inherit setuptools +require python-six.inc + +RDEPENDS_${PN} += "python-io" diff --git a/meta/recipes-devtools/python/python-smartpm/smart-add-for-rpm-ignoresize-check.patch b/meta/recipes-devtools/python/python-smartpm/smart-add-for-rpm-ignoresize-check.patch deleted file mode 100644 index 8a27f2583a..0000000000 --- a/meta/recipes-devtools/python/python-smartpm/smart-add-for-rpm-ignoresize-check.patch +++ /dev/null @@ -1,37 +0,0 @@ -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/meta/recipes-devtools/python/python-smartpm/smart-attempt.patch b/meta/recipes-devtools/python/python-smartpm/smart-attempt.patch deleted file mode 100644 index 82d2e6cf31..0000000000 --- a/meta/recipes-devtools/python/python-smartpm/smart-attempt.patch +++ /dev/null @@ -1,223 +0,0 @@ -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> ---- - smart.py | 5 +++- - smart/commands/install.py | 5 ++++ - smart/transaction.py | 65 +++++++++++++++++++++++++++++++++++------------ - 3 files changed, 58 insertions(+), 17 deletions(-) - -Index: smart-1.4.1/smart/commands/install.py -=================================================================== ---- smart-1.4.1.orig/smart/commands/install.py -+++ smart-1.4.1/smart/commands/install.py -@@ -50,6 +50,8 @@ def option_parser(): - parser = OptionParser(usage=USAGE, - description=DESCRIPTION, - examples=EXAMPLES) -+ parser.add_option("--attempt", action="store_true", -+ help=_("attempt to install packages, ignore failures")) - parser.add_option("--stepped", action="store_true", - help=_("split operation in steps")) - parser.add_option("--urls", action="store_true", -@@ -80,6 +82,9 @@ def main(ctrl, opts): - if not opts.args: - raise Error, _("no package(s) given") - -+ if opts.attempt: -+ sysconf.set("attempt-install", True, soft=True) -+ - if opts.explain: - sysconf.set("explain-changesets", True, soft=True) - -Index: smart-1.4.1/smart/transaction.py -=================================================================== ---- smart-1.4.1.orig/smart/transaction.py -+++ smart-1.4.1/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: -@@ -1216,9 +1240,18 @@ class Transaction(object): - else: - op = REMOVE - if op is INSTALL or op is REINSTALL: -- self._install(pkg, changeset, locked, pending) -- if pkg in changeset: -- changeset.setRequested(pkg, True) -+ try: -+ self._install(pkg, changeset, locked, pending) -+ if pkg in changeset: -+ changeset.setRequested(pkg, True) -+ except Failed, e: -+ if attempt: -+ iface.warning(_("Can't install %s: %s") % (pkg, e)) -+ if pkg in changeset: -+ del changeset[pkg] -+ continue -+ else: -+ raise Failed, e - elif op is REMOVE: - self._remove(pkg, changeset, locked, pending) - elif op is UPGRADE: -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 -@@ -243,15 +253,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/meta/recipes-devtools/python/python-smartpm/smart-channelsdir.patch b/meta/recipes-devtools/python/python-smartpm/smart-channelsdir.patch deleted file mode 100644 index e621b33875..0000000000 --- a/meta/recipes-devtools/python/python-smartpm/smart-channelsdir.patch +++ /dev/null @@ -1,24 +0,0 @@ -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/meta/recipes-devtools/python/python-smartpm/smart-config-ignore-all-recommends.patch b/meta/recipes-devtools/python/python-smartpm/smart-config-ignore-all-recommends.patch deleted file mode 100644 index df9d7799e8..0000000000 --- a/meta/recipes-devtools/python/python-smartpm/smart-config-ignore-all-recommends.patch +++ /dev/null @@ -1,24 +0,0 @@ -Add a simple method to disable the install of recommended packages - -Upstream-Status: Pending - -Usage: - smart config --set ignore-all-recommends=1 - -Signed-off-by: Mark Hatle <mark.hatle@windriver.com> - -Index: smart-1.4.1/smart/transaction.py -=================================================================== ---- smart-1.4.1.orig/smart/transaction.py -+++ smart-1.4.1/smart/transaction.py -@@ -611,7 +611,9 @@ class Transaction(object): - for prv in req.providedby: - for prvpkg in prv.packages: - if not reqrequired: -- if pkgconf.testFlag("ignore-recommends", prvpkg): -+ if sysconf.get("ignore-all-recommends", 0) == 1: -+ continue -+ elif pkgconf.testFlag("ignore-recommends", prvpkg): - continue - if isinst(prvpkg): - found = True diff --git a/meta/recipes-devtools/python/python-smartpm/smart-conflict-provider.patch b/meta/recipes-devtools/python/python-smartpm/smart-conflict-provider.patch deleted file mode 100644 index 10a7447cb4..0000000000 --- a/meta/recipes-devtools/python/python-smartpm/smart-conflict-provider.patch +++ /dev/null @@ -1,196 +0,0 @@ -Report a reason when a dependency could not be installed because it is locked - -If a requirement of a package is conflicted, depending on how the -solution is reached, the transaction code may eliminate all providers -of the requirement and then error out because nothing provides them. To -work around this, store a reason in the locked dict and report that back -if we need to, so for example instead of: - - error: Can't install packagegroup-core-ssh-dropbear-1.0-r1@all: no package provides dropbear - -we now get: - - error: Can't install packagegroup-core-ssh-dropbear-1.0-r1@all: unable to install provider for dropbear: - error: dropbear-2013.58-r1.0@armv5te is conflicted by openssh-sshd-6.2p2-r0@armv5te - -Upstream-Status: Pending - -Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> ---- - smart/const.py | 7 +++++++ - smart/transaction.py | 58 +++++++++++++++++++++++++++++++++++++++++----------- - 2 files changed, 53 insertions(+), 12 deletions(-) - -diff --git a/smart/const.py b/smart/const.py -index 4d8e5cb..67c1ac5 100644 ---- a/smart/const.py -+++ b/smart/const.py -@@ -70,4 +70,11 @@ DATADIR = "/var/lib/smart/" - USERDATADIR = "~/.smart/" - CONFFILE = "config" - -+LOCKED_INSTALL = Enum('LOCKED_INSTALL') -+LOCKED_REMOVE = Enum('LOCKED_REMOVE') -+LOCKED_CONFLICT = Enum('LOCKED_CONFLICT') -+LOCKED_CONFLICT_BY = Enum('LOCKED_CONFLICT_BY') -+LOCKED_NO_COEXIST = Enum('LOCKED_NO_COEXIST') -+LOCKED_SYSCONF = Enum('LOCKED_SYSCONF') -+ - # vim:ts=4:sw=4:et -diff --git a/smart/transaction.py b/smart/transaction.py -index 300b9cc..dd9aa38 100644 ---- a/smart/transaction.py -+++ b/smart/transaction.py -@@ -19,10 +19,31 @@ - # along with Smart Package Manager; if not, write to the Free Software - # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - # --from smart.const import INSTALL, REMOVE, UPGRADE, FIX, REINSTALL, KEEP -+from smart.const import INSTALL, REMOVE, UPGRADE, FIX, REINSTALL, KEEP, LOCKED_INSTALL, LOCKED_CONFLICT, LOCKED_CONFLICT_BY, LOCKED_NO_COEXIST, LOCKED_SYSCONF, LOCKED_REMOVE - from smart.cache import PreRequires, Package - from smart import * - -+def lock_reason(pkg, lockvalue): -+ try: -+ (reason, otherpkg) = lockvalue -+ except TypeError: -+ reason = None -+ lockvalue = None -+ if reason == LOCKED_INSTALL: -+ return _("%s is to be installed") % pkg -+ elif reason == LOCKED_CONFLICT: -+ return _("%s conflicts with %s") % (pkg, otherpkg) -+ elif reason == LOCKED_CONFLICT_BY: -+ return _("%s is conflicted by %s") % (pkg, otherpkg) -+ elif reason == LOCKED_NO_COEXIST: -+ return _("%s cannot coexist with %s") % (pkg, otherpkg) -+ elif reason == LOCKED_SYSCONF: -+ return _("%s is locked in system configuration") % pkg -+ elif reason == LOCKED_REMOVE: -+ return _("%s is to be removed") % pkg -+ else: -+ return _("%s is locked (unknown reason)") % pkg -+ - class ChangeSet(dict): - - def __init__(self, cache, state=None, requested=None): -@@ -187,7 +208,7 @@ class Policy(object): - for pkg in pkgconf.filterByFlag("lock", cache.getPackages()): - if pkg not in self._locked: - self._sysconflocked.append(pkg) -- self._locked[pkg] = True -+ self._locked[pkg] = (LOCKED_SYSCONF, None) - - def runFinished(self): - self._priorities.clear() -@@ -524,7 +545,7 @@ class Transaction(object): - if ownpending: - pending = [] - -- locked[pkg] = True -+ locked[pkg] = (LOCKED_INSTALL, None) - changeset.set(pkg, INSTALL) - isinst = changeset.installed - -@@ -535,7 +556,7 @@ class Transaction(object): - if prvpkg is pkg: - continue - if not isinst(prvpkg): -- locked[prvpkg] = True -+ locked[prvpkg] = (LOCKED_CONFLICT_BY, pkg) - continue - if prvpkg in locked: - raise Failed, _("Can't install %s: conflicted package " -@@ -550,7 +571,7 @@ class Transaction(object): - if cnfpkg is pkg: - continue - if not isinst(cnfpkg): -- locked[cnfpkg] = True -+ locked[cnfpkg] = (LOCKED_CONFLICT, pkg) - continue - if cnfpkg in locked: - raise Failed, _("Can't install %s: it's conflicted by " -@@ -565,7 +586,7 @@ class Transaction(object): - for namepkg in namepkgs: - if namepkg is not pkg and not pkg.coexists(namepkg): - if not isinst(namepkg): -- locked[namepkg] = True -+ locked[namepkg] = (LOCKED_NO_COEXIST, pkg) - continue - if namepkg in locked: - raise Failed, _("Can't install %s: it can't coexist " -@@ -577,6 +598,7 @@ class Transaction(object): - - # Check if someone is already providing it. - prvpkgs = {} -+ lockedpkgs = {} - found = False - for prv in req.providedby: - for prvpkg in prv.packages: -@@ -585,6 +607,8 @@ class Transaction(object): - break - if prvpkg not in locked: - prvpkgs[prvpkg] = True -+ else: -+ lockedpkgs[prvpkg] = locked[prvpkg] - else: - continue - break -@@ -597,7 +621,17 @@ class Transaction(object): - if not prvpkgs: - # No packages provide it at all. Give up. - if req in pkg.requires: -- raise Failed, _("Can't install %s: no package provides %s") % \ -+ 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)) -+ else: -+ raise Failed, _("Can't install %s: no package provides %s") % \ - (pkg, req) - else: - # It's only a recommend, skip -@@ -627,7 +661,7 @@ class Transaction(object): - if ownpending: - pending = [] - -- locked[pkg] = True -+ locked[pkg] = (LOCKED_REMOVE, None) - changeset.set(pkg, REMOVE) - isinst = changeset.installed - -@@ -1140,22 +1174,22 @@ class Transaction(object): - if op is KEEP: - if pkg in changeset: - del changeset[pkg] -- locked[pkg] = True -+ 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 - changeset.set(pkg, INSTALL) -- locked[pkg] = True -+ locked[pkg] = (LOCKED_INSTALL, None) - elif op is REMOVE: - if isinst(pkg) and pkg in locked: - raise Failed, _("Can't remove %s: it's locked") % pkg - changeset.set(pkg, REMOVE) -- locked[pkg] = True -+ locked[pkg] = (LOCKED_REMOVE, None) - elif op is REINSTALL: - if pkg in locked: - raise Failed, _("Can't reinstall %s: it's locked")%pkg - changeset.set(pkg, INSTALL, force=True) -- locked[pkg] = True -+ locked[pkg] = (LOCKED_INSTALL, None) - elif op is UPGRADE: - pass - --- -1.8.1.2 - diff --git a/meta/recipes-devtools/python/python-smartpm/smart-dflags.patch b/meta/recipes-devtools/python/python-smartpm/smart-dflags.patch deleted file mode 100644 index 531ea51cad..0000000000 --- a/meta/recipes-devtools/python/python-smartpm/smart-dflags.patch +++ /dev/null @@ -1,45 +0,0 @@ -backends/rpm: add support for setting dependency flags - -This is useful for OpenEmbedded so that we can do the equivalent of -the --nolinktos and --noparentdirs rpm command line options. - -Upstream-Status: Pending - -Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> - -[sgw - Added try/catch for rpm4 since it does not have setDFlags() API] - -Signed-off-by: Saul Wold <sgw@linux.intel.com> - - -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 -@@ -106,6 +106,26 @@ class RPMPackageManager(PackageManager): - flags |= rpm.RPMTRANS_FLAG_TEST - ts.setFlags(flags) - -+ try: -+ dflags = ts.setDFlags(0) -+ if sysconf.get("rpm-noupgrade", False): -+ dflags |= rpm.RPMDEPS_FLAG_NOUPGRADE -+ if sysconf.get("rpm-norequires", False): -+ dflags |= rpm.RPMDEPS_FLAG_NOREQUIRES -+ if sysconf.get("rpm-noconflicts", False): -+ dflags |= rpm.RPMDEPS_FLAG_NOCONFLICTS -+ if sysconf.get("rpm-noobsoletes", False): -+ dflags |= rpm.RPMDEPS_FLAG_NOOBSOLETES -+ if sysconf.get("rpm-noparentdirs", False): -+ dflags |= rpm.RPMDEPS_FLAG_NOPARENTDIRS -+ if sysconf.get("rpm-nolinktos", False): -+ dflags |= rpm.RPMDEPS_FLAG_NOLINKTOS -+ if sysconf.get("rpm-nosuggest", False): -+ dflags |= rpm.RPMDEPS_FLAG_NOSUGGEST -+ ts.setDFlags(dflags) -+ except AttributeError, ae: -+ pass -+ - # Set rpm verbosity level. - levelname = sysconf.get('rpm-log-level') - level = { diff --git a/meta/recipes-devtools/python/python-smartpm/smart-filename-NAME_MAX.patch b/meta/recipes-devtools/python/python-smartpm/smart-filename-NAME_MAX.patch deleted file mode 100644 index 22794a7388..0000000000 --- a/meta/recipes-devtools/python/python-smartpm/smart-filename-NAME_MAX.patch +++ /dev/null @@ -1,35 +0,0 @@ -From a17998b6be3319ae476a64f366737bc267a53a8a Mon Sep 17 00:00:00 2001 -From: Robert Yang <liezhi.yang@windriver.com> -Date: Mon, 16 Sep 2013 05:54:13 -0400 -Subject: [PATCH] fetcher.py: truncate the filename to meet NAME_MAX - -The function getLocalPath() converts the filepath into the filename, -there would be a "File name too long" error when len(filename) > -NAME_MAX, truncate it to meet NAME_MAX will fix the problem. - -Signed-off-by: Robert Yang <liezhi.yang@windriver.com> ---- - smart/fetcher.py | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/smart/fetcher.py b/smart/fetcher.py ---- a/smart/fetcher.py -+++ b/smart/fetcher.py -@@ -139,6 +139,14 @@ class Fetcher(object): - filename = os.path.basename(path) - if self._localpathprefix: - filename = self._localpathprefix+filename -+ # pathconf requires the path existed -+ if not os.path.exists(self._localdir): -+ os.makedirs(self._localdir) -+ name_max = os.pathconf(self._localdir, 'PC_NAME_MAX') -+ # The length of the filename should be less than NAME_MAX -+ if len(filename) > name_max: -+ iface.debug(_("Truncate %s to %s") % (filename, filename[-name_max:])) -+ filename = filename[-name_max:] - return os.path.join(self._localdir, filename) - - def setForceCopy(self, value): --- -1.7.10.4 - diff --git a/meta/recipes-devtools/python/python-smartpm/smart-flag-exclude-packages.patch b/meta/recipes-devtools/python/python-smartpm/smart-flag-exclude-packages.patch deleted file mode 100644 index 21a28746a1..0000000000 --- a/meta/recipes-devtools/python/python-smartpm/smart-flag-exclude-packages.patch +++ /dev/null @@ -1,70 +0,0 @@ -Add exclude-packages flag support - -Allow configuring specific packages to be excluded. This will allow -users to specify things NOT to install, and if they are attempted an -error will be generated. - -Upstream-Status: Pending - -Signed-off-by: Mark Hatle <mark.hatle@windriver.com> - -Index: smart-1.4.1/smart/const.py -=================================================================== ---- smart-1.4.1.orig/smart/const.py -+++ smart-1.4.1/smart/const.py -@@ -70,6 +70,7 @@ DATADIR = "/var/lib/smart/" - USERDATADIR = "~/.smart/" - CONFFILE = "config" - -+LOCKED_EXCLUDE = Enum('LOCKED_EXCLUDE') - LOCKED_INSTALL = Enum('LOCKED_INSTALL') - LOCKED_REMOVE = Enum('LOCKED_REMOVE') - LOCKED_CONFLICT = Enum('LOCKED_CONFLICT') -Index: smart-1.4.1/smart/transaction.py -=================================================================== ---- smart-1.4.1.orig/smart/transaction.py -+++ smart-1.4.1/smart/transaction.py -@@ -19,7 +19,7 @@ - # along with Smart Package Manager; if not, write to the Free Software - # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - # --from smart.const import INSTALL, REMOVE, UPGRADE, FIX, REINSTALL, KEEP, LOCKED_INSTALL, LOCKED_CONFLICT, LOCKED_CONFLICT_BY, LOCKED_NO_COEXIST, LOCKED_SYSCONF, LOCKED_REMOVE -+from smart.const import INSTALL, REMOVE, UPGRADE, FIX, REINSTALL, KEEP, LOCKED_EXCLUDE, LOCKED_INSTALL, LOCKED_CONFLICT, LOCKED_CONFLICT_BY, LOCKED_NO_COEXIST, LOCKED_SYSCONF, LOCKED_REMOVE - from smart.cache import PreRequires, Package - from smart import * - -@@ -29,7 +29,9 @@ def lock_reason(pkg, lockvalue): - except TypeError: - reason = None - lockvalue = None -- if reason == LOCKED_INSTALL: -+ if reason == LOCKED_EXCLUDE: -+ return _("%s is to be excluded") % pkg -+ elif reason == LOCKED_INSTALL: - return _("%s is to be installed") % pkg - elif reason == LOCKED_CONFLICT: - return _("%s conflicts with %s") % (pkg, otherpkg) -@@ -210,6 +212,10 @@ class Policy(object): - self._sysconflocked.append(pkg) - self._locked[pkg] = (LOCKED_SYSCONF, None) - -+ for pkg in pkgconf.filterByFlag("exclude-packages", cache.getPackages()): -+ if pkg not in self._locked: -+ self._locked[pkg] = (LOCKED_EXCLUDE, None) -+ - def runFinished(self): - self._priorities.clear() - for pkg in self._sysconflocked: -Index: smart-1.4.1/smart/commands/flag.py -=================================================================== ---- smart-1.4.1.orig/smart/commands/flag.py -+++ smart-1.4.1/smart/commands/flag.py -@@ -47,6 +47,8 @@ Currently known flags are: - multi-version - Flagged packages may have more than one version - installed in the system at the same time - (backend dependent). -+ exclude-packages - Flagged packages will be excluded, if they are -+ required, an error will be generated. - ignore-recommends - Flagged packages will not be installed, if - they are only recommended by a package to be - installed rather than required. diff --git a/meta/recipes-devtools/python/python-smartpm/smart-flag-ignore-recommends.patch b/meta/recipes-devtools/python/python-smartpm/smart-flag-ignore-recommends.patch deleted file mode 100644 index 5d5c6f4346..0000000000 --- a/meta/recipes-devtools/python/python-smartpm/smart-flag-ignore-recommends.patch +++ /dev/null @@ -1,60 +0,0 @@ -Add ignore-recommends flag support - -Allow configuring recommends on specific packages to be ignored. - -Upstream-Status: Pending - -Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> ---- - smart/commands/flag.py | 3 +++ - smart/transaction.py | 7 ++++++- - 2 files changed, 9 insertions(+), 1 deletion(-) - -diff --git a/smart/commands/flag.py b/smart/commands/flag.py -index 8b90496..191bb11 100644 ---- a/smart/commands/flag.py -+++ b/smart/commands/flag.py -@@ -47,6 +47,9 @@ Currently known flags are: - multi-version - Flagged packages may have more than one version - installed in the system at the same time - (backend dependent). -+ ignore-recommends - Flagged packages will not be installed, if -+ they are only recommended by a package to be -+ installed rather than required. - - security - Flagged packages are updates for security errata. - bugfix - Flagged packages are updates for bugfix errata. -diff --git a/smart/transaction.py b/smart/transaction.py -index dd9aa38..38eabae 100644 ---- a/smart/transaction.py -+++ b/smart/transaction.py -@@ -596,12 +596,17 @@ class Transaction(object): - # Install packages required by this one. - for req in pkg.requires + pkg.recommends: - -+ reqrequired = req in pkg.requires -+ - # Check if someone is already providing it. - prvpkgs = {} - lockedpkgs = {} - found = False - for prv in req.providedby: - for prvpkg in prv.packages: -+ if not reqrequired: -+ if pkgconf.testFlag("ignore-recommends", prvpkg): -+ continue - if isinst(prvpkg): - found = True - break -@@ -620,7 +625,7 @@ class Transaction(object): - - if not prvpkgs: - # No packages provide it at all. Give up. -- if req in pkg.requires: -+ if reqrequired: - reasons = [] - for prv in req.providedby: - for prvpkg in prv.packages: --- -1.8.1.2 - diff --git a/meta/recipes-devtools/python/python-smartpm/smart-improve-error-reporting.patch b/meta/recipes-devtools/python/python-smartpm/smart-improve-error-reporting.patch deleted file mode 100644 index 2ca0f6d593..0000000000 --- a/meta/recipes-devtools/python/python-smartpm/smart-improve-error-reporting.patch +++ /dev/null @@ -1,253 +0,0 @@ -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/commands/channel.py b/smart/commands/channel.py -index aa76f91..63fbb35 100644 ---- a/smart/commands/channel.py -+++ b/smart/commands/channel.py -@@ -157,7 +157,17 @@ def main(ctrl, opts): - opts.show is None and opts.yaml is None): - iface.warning(_("Can't edit channels information.")) - raise Error, _("Configuration is in readonly mode.") -- -+ -+ # Argument check -+ opts.check_args_of_option("set", -1) -+ opts.check_args_of_option("remove", -1) -+ opts.check_args_of_option("edit", 0) -+ opts.check_args_of_option("enable", -1) -+ opts.check_args_of_option("disable", -1) -+ opts.ensure_action("channel", ["add", "set", "remove", "remove_all", -+ "list", "show", "yaml", "enable", "disable"]) -+ opts.check_remaining_args() -+ - if opts.add is not None: - if not opts.add and opts.args == ["-"]: - newchannels = [] -diff --git a/smart/commands/check.py b/smart/commands/check.py -index b08608a..506e852 100644 ---- a/smart/commands/check.py -+++ b/smart/commands/check.py -@@ -72,6 +72,9 @@ def parse_options(argv): - - def main(ctrl, opts, reloadchannels=True): - -+ # Argument check -+ opts.check_args_of_option("channels", 1) -+ - if sysconf.get("auto-update"): - from smart.commands import update - updateopts = update.parse_options([]) -diff --git a/smart/commands/config.py b/smart/commands/config.py -index dd50dee..4fe4366 100644 ---- a/smart/commands/config.py -+++ b/smart/commands/config.py -@@ -80,6 +80,12 @@ def main(ctrl, opts): - globals["false"] = False - globals["no"] = False - -+ # Check arguments -+ opts.check_args_of_option("set", -1) -+ opts.check_args_of_option("remove", -1) -+ opts.ensure_action("config", ["set", "show", "yaml", "remove"]) -+ opts.check_remaining_args() -+ - if opts.set: - for opt in opts.set: - m = SETRE.match(opt) -diff --git a/smart/commands/download.py b/smart/commands/download.py -index 6837993..b853c61 100644 ---- a/smart/commands/download.py -+++ b/smart/commands/download.py -@@ -81,6 +81,14 @@ def parse_options(argv): - - def main(ctrl, opts): - -+ # Argument check -+ opts.check_args_of_option("target", 1) -+ opts.check_args_of_option("output", 1) -+ opts.check_args_of_option("from_urls", -1) -+ opts.check_args_of_option("from_metalink", -1) -+ if not opts.args and not opts.from_metalink and not opts.from_urls: -+ raise Error, _("no package(s) given") -+ - packages = [] - if opts.args: - if sysconf.get("auto-update"): -diff --git a/smart/commands/info.py b/smart/commands/info.py -index 12f74f0..59fbe98 100644 ---- a/smart/commands/info.py -+++ b/smart/commands/info.py -@@ -58,6 +58,10 @@ def parse_options(argv): - - def main(ctrl, opts, reloadchannels=True): - -+ # Argument check -+ if not opts.args: -+ raise Error, _("No package(s) given") -+ - if sysconf.get("auto-update"): - from smart.commands import update - updateopts = update.parse_options([]) -diff --git a/smart/commands/install.py b/smart/commands/install.py -index 8a45954..590222c 100644 ---- a/smart/commands/install.py -+++ b/smart/commands/install.py -@@ -76,6 +76,10 @@ def parse_options(argv): - - def main(ctrl, opts): - -+ # Argument check -+ if not opts.args: -+ raise Error, _("no package(s) given") -+ - if opts.explain: - sysconf.set("explain-changesets", True, soft=True) - -diff --git a/smart/commands/reinstall.py b/smart/commands/reinstall.py -index e59d896..32da3e6 100644 ---- a/smart/commands/reinstall.py -+++ b/smart/commands/reinstall.py -@@ -68,7 +68,11 @@ def parse_options(argv): - return opts - - def main(ctrl, opts): -- -+ -+ # Argument check -+ if not opts.args: -+ raise Error, _("no package(s) given") -+ - if opts.explain: - sysconf.set("explain-changesets", True, soft=True) - -diff --git a/smart/commands/remove.py b/smart/commands/remove.py -index b4823a6..acd3bbd 100644 ---- a/smart/commands/remove.py -+++ b/smart/commands/remove.py -@@ -74,6 +74,10 @@ def parse_options(argv): - - def main(ctrl, opts): - -+ # Argument check -+ if not opts.args: -+ raise Error, _("no package(s) given") -+ - if opts.explain: - sysconf.set("explain-changesets", True, soft=True) - -diff --git a/smart/commands/search.py b/smart/commands/search.py -index 0d0b573..44806b8 100644 ---- a/smart/commands/search.py -+++ b/smart/commands/search.py -@@ -44,6 +44,8 @@ def option_parser(): - def parse_options(argv): - opts = query.parse_options(argv, usage=USAGE, \ - description=DESCRIPTION, examples=EXAMPLES) -+ if not argv: -+ raise Error, _("Search expression not specified") - opts.name = opts.args - opts.summary = opts.args - opts.description = opts.args -diff --git a/smart/commands/upgrade.py b/smart/commands/upgrade.py -index ec86290..7e290d8 100644 ---- a/smart/commands/upgrade.py -+++ b/smart/commands/upgrade.py -@@ -91,6 +91,9 @@ def parse_options(argv): - - def main(ctrl, opts): - -+ # Argument check -+ opts.check_args_of_option("flag", 1) -+ - if opts.explain: - sysconf.set("explain-changesets", True, soft=True) - -diff --git a/smart/util/optparse.py b/smart/util/optparse.py -index 4a3d3a8..279b0bf 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) -@@ -708,6 +710,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": -@@ -819,6 +827,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/meta/recipes-devtools/python/python-smartpm/smart-metadata-match.patch b/meta/recipes-devtools/python/python-smartpm/smart-metadata-match.patch deleted file mode 100644 index d06f416605..0000000000 --- a/meta/recipes-devtools/python/python-smartpm/smart-metadata-match.patch +++ /dev/null @@ -1,28 +0,0 @@ -smart - backends/rmp/metadata.py: Fix incorrect call to the match function - -The match function should take three parameters, name, comparison, version... -The original code was passing it a reference to the object holding the data -instead, which caused the comparison in match to always fail. - -Upstream-Status: Pending - -Signed-off-by: Mark Hatle <mark.hatle@windriver.com> - ---- a/smart/backends/rpm/metadata.py -+++ b/smart/backends/rpm/metadata.py -@@ -332,13 +332,13 @@ - reqargs = [x for x in reqdict - if not ((x[2] is None or "=" in x[2]) and - (RPMProvides, x[1], x[3]) in prvdict or -- system_provides.match(*x[:3]))] -+ system_provides.match(x[1], x[2], x[3]))] - reqargs = collapse_libc_requires(reqargs) - - recargs = [x for x in recdict - if not ((x[2] is None or "=" in x[2]) and - (RPMProvides, x[1], x[3]) in prvdict or -- system_provides.match(*x[:3]))] -+ system_provides.match(x[1], x[2], x[3]))] - - prvargs = prvdict.keys() - cnfargs = cnfdict.keys() diff --git a/meta/recipes-devtools/python/python-smartpm/smart-multilib-fixes.patch b/meta/recipes-devtools/python/python-smartpm/smart-multilib-fixes.patch deleted file mode 100644 index 56fef79a5f..0000000000 --- a/meta/recipes-devtools/python/python-smartpm/smart-multilib-fixes.patch +++ /dev/null @@ -1,22 +0,0 @@ -To fix some multilib issues, change the way the RPM backend decides -if two packages can coexist: if they have a different architecture, -automatically assume that they can coexist (which is fundamental for -multilib). - -Upstream-Status: Pending - -Signed-off-by: Bogdan Marinescu <bogdan.a.marinescu@intel.com> - -diff --git a/smart/backends/rpm/base.py b/smart/backends/rpm/base.py -index 6e83d40..7140c1b 100644 ---- a/smart/backends/rpm/base.py -+++ b/smart/backends/rpm/base.py -@@ -228,6 +228,8 @@ class RPMPackage(Package): - return False - selfver, selfarch = splitarch(self.version) - otherver, otherarch = splitarch(other.version) -+ if selfarch != otherarch: -+ return True - selfcolor = getArchColor(selfarch) - othercolor = getArchColor(otherarch) - if (selfcolor and othercolor and selfcolor != othercolor and diff --git a/meta/recipes-devtools/python/python-smartpm/smart-recommends.patch b/meta/recipes-devtools/python/python-smartpm/smart-recommends.patch deleted file mode 100644 index a41b1beaa9..0000000000 --- a/meta/recipes-devtools/python/python-smartpm/smart-recommends.patch +++ /dev/null @@ -1,1362 +0,0 @@ -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 0489e11..b9e9cb2 100644 ---- a/smart/backends/rpm/base.py -+++ b/smart/backends/rpm/base.py -@@ -198,6 +198,29 @@ 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 - return True - - def coexists(self, other): -diff --git a/smart/backends/rpm/header.py b/smart/backends/rpm/header.py -index 31786cc..4880f43 100644 ---- a/smart/backends/rpm/header.py -+++ b/smart/backends/rpm/header.py -@@ -292,6 +292,7 @@ class RPMHeaderLoader(Loader): - f = [0] - elif type(f) != list: - f = [f] -+ recdict = {} - reqdict = {} - for i in range(len(n)): - ni = n[i] -@@ -308,10 +309,16 @@ class RPMHeaderLoader(Loader): - # RPMSENSE_SCRIPT_PREUN | - # RPMSENSE_SCRIPT_POST | - # RPMSENSE_SCRIPT_POSTUN == 7744 -- reqdict[(f[i]&7744 and PreReq or Req, -- intern(ni), r, vi)] = True -+ if (f[i]&rpm.RPMSENSE_MISSINGOK): -+ recdict[(f[i]&7744 and PreReq or Req, -+ intern(ni), r, vi)] = True -+ else: -+ reqdict[(f[i]&7744 and PreReq or Req, -+ intern(ni), r, vi)] = True -+ recargs = collapse_libc_requires(recdict.keys()) - reqargs = collapse_libc_requires(reqdict.keys()) - else: -+ recargs = None - reqargs = None - - n = h[1054] # RPMTAG_CONFLICTNAME -@@ -365,7 +372,7 @@ class RPMHeaderLoader(Loader): - versionarch = "%s@%s" % (distversion, arch) - - pkg = self.buildPackage((Pkg, name, versionarch), -- prvargs, reqargs, upgargs, cnfargs) -+ prvargs, reqargs, upgargs, cnfargs, recargs) - pkg.loaders[self] = offset - self._offsets[offset] = pkg - self._groups[pkg] = intern(h[rpm.RPMTAG_GROUP]) -@@ -583,8 +590,8 @@ class URPMILoader(RPMHeaderListLoader): - def setErrataFlags(self, flagdict): - self._flagdict = flagdict - -- def buildPackage(self, pkgargs, prvargs, reqargs, upgargs, cnfargs): -- pkg = Loader.buildPackage(self, pkgargs, prvargs, reqargs, upgargs, cnfargs) -+ def buildPackage(self, pkgargs, prvargs, reqargs, upgargs, cnfargs, recargs): -+ pkg = Loader.buildPackage(self, pkgargs, prvargs, reqargs, upgargs, cnfargs, recargs) - name = pkgargs[1] - if hasattr(self, '_flagdict') and self._flagdict and name in self._flagdict: - if sysconf.getReadOnly(): -diff --git a/smart/backends/rpm/metadata.py b/smart/backends/rpm/metadata.py -index 2c54f39..568fe06 100644 ---- a/smart/backends/rpm/metadata.py -+++ b/smart/backends/rpm/metadata.py -@@ -165,6 +165,7 @@ class RPMMetaDataLoader(Loader): - distepoch = None - info = {} - reqdict = {} -+ recdict = {} - prvdict = {} - upgdict = {} - cnfdict = {} -@@ -287,12 +288,16 @@ class RPMMetaDataLoader(Loader): - - lasttag = queue[-1].tag - if lasttag == REQUIRES: -- if elem.get("pre") == "1": -- reqdict[(RPMPreRequires, -- ename, erelation, eversion)] = True -+ if elem.get("missingok") == "1": -+ recdict[(RPMRequires, -+ ename, erelation, eversion)] = True - else: -- reqdict[(RPMRequires, -- ename, erelation, eversion)] = True -+ if elem.get("pre") == "1": -+ reqdict[(RPMPreRequires, -+ ename, erelation, eversion)] = True -+ else: -+ reqdict[(RPMRequires, -+ ename, erelation, eversion)] = True - - elif lasttag == PROVIDES: - if ename[0] == "/": -@@ -328,6 +333,12 @@ class RPMMetaDataLoader(Loader): - (RPMProvides, x[1], x[3]) in prvdict or - system_provides.match(*x[:3]))] - reqargs = collapse_libc_requires(reqargs) -+ -+ recargs = [x for x in recdict -+ if not ((x[2] is None or "=" in x[2]) and -+ (RPMProvides, x[1], x[3]) in prvdict or -+ system_provides.match(*x[:3]))] -+ - prvargs = prvdict.keys() - cnfargs = cnfdict.keys() - upgargs = upgdict.keys() -@@ -339,7 +350,7 @@ class RPMMetaDataLoader(Loader): - versionarch = "%s@%s" % (distversion, arch) - - pkg = self.buildPackage((RPMPackage, name, versionarch), -- prvargs, reqargs, upgargs, cnfargs) -+ prvargs, reqargs, upgargs, cnfargs, recargs) - pkg.loaders[self] = info - - # Store the provided files for future usage. -@@ -362,6 +373,7 @@ class RPMMetaDataLoader(Loader): - distepoch = None - pkgid = None - reqdict.clear() -+ recdict.clear() - prvdict.clear() - upgdict.clear() - cnfdict.clear() -diff --git a/smart/cache.py b/smart/cache.py -index b829825..cec8bb3 100644 ---- a/smart/cache.py -+++ b/smart/cache.py -@@ -32,7 +32,8 @@ class Package(object): - self.name = name - self.version = version - self.provides = () -- self.requires = () -+ self.requires = [] -+ self.recommends = [] - self.upgrades = () - self.conflicts = () - self.installed = False -@@ -55,7 +56,9 @@ class Package(object): - fk([x for x in self.provides if x.name[0] != "/"]) != - fk([x for x in other.provides if x.name[0] != "/"]) or - fk([x for x in self.requires if x.name[0] != "/"]) != -- fk([x for x in other.requires if x.name[0] != "/"])): -+ fk([x for x in other.requires if x.name[0] != "/"]) or -+ fk([x for x in self.recommends if x.name[0] != "/"]) != -+ fk([x for x in other.recommends if x.name[0] != "/"])): - return False - return True - -@@ -110,6 +113,7 @@ class Package(object): - self.version, - self.provides, - self.requires, -+ self.recommends, - self.upgrades, - self.conflicts, - self.installed, -@@ -122,6 +126,7 @@ class Package(object): - self.version, - self.provides, - self.requires, -+ self.recommends, - self.upgrades, - self.conflicts, - self.installed, -@@ -274,6 +279,7 @@ class Provides(object): - self.version = version - self.packages = [] - self.requiredby = () -+ self.recommendedby = () - self.upgradedby = () - self.conflictedby = () - -@@ -401,7 +407,7 @@ class Loader(object): - def loadFileProvides(self, fndict): - pass - -- def buildPackage(self, pkgargs, prvargs, reqargs, upgargs, cnfargs): -+ def buildPackage(self, pkgargs, prvargs, reqargs, upgargs, cnfargs, recargs = None): - cache = self._cache - pkg = pkgargs[0](*pkgargs[1:]) - relpkgs = [] -@@ -427,6 +433,17 @@ class Loader(object): - relpkgs.append(req.packages) - pkg.requires.append(req) - -+ if recargs: -+ pkg.recommends = [] -+ for args in recargs: -+ rec = cache._objmap.get(args) -+ if not rec: -+ rec = args[0](*args[1:]) -+ cache._objmap[args] = rec -+ cache._recommends.append(rec) -+ relpkgs.append(rec.packages) -+ pkg.recommends.append(rec) -+ - if upgargs: - pkg.upgrades = [] - for args in upgargs: -@@ -572,6 +589,7 @@ class Cache(object): - self._packages = [] - self._provides = [] - self._requires = [] -+ self._recommends = [] - self._upgrades = [] - self._conflicts = [] - self._objmap = {} -@@ -581,6 +599,8 @@ class Cache(object): - del prv.packages[:] - if prv.requiredby: - del prv.requiredby[:] -+ if prv.recommendedby: -+ del prv.recommendedby[:] - if prv.upgradedby: - del prv.upgradedby[:] - if prv.conflictedby: -@@ -589,6 +609,10 @@ class Cache(object): - del req.packages[:] - if req.providedby: - del req.providedby[:] -+ for rec in self._recommends: -+ del rec.packages[:] -+ if rec.providedby: -+ del rec.providedby[:] - for upg in self._upgrades: - del upg.packages[:] - if upg.providedby: -@@ -600,6 +624,7 @@ class Cache(object): - del self._packages[:] - del self._provides[:] - del self._requires[:] -+ del self._recommends[:] - del self._upgrades[:] - del self._conflicts[:] - self._objmap.clear() -@@ -621,6 +646,7 @@ class Cache(object): - packages = {} - provides = {} - requires = {} -+ recommends = {} - upgrades = {} - conflicts = {} - objmap = self._objmap -@@ -646,6 +672,11 @@ class Cache(object): - if req not in requires: - objmap[req.getInitArgs()] = req - requires[req] = True -+ for rec in pkg.recommends[:]: -+ rec.packages.append(pkg) -+ if rec not in recommends: -+ objmap[rec.getInitArgs()] = rec -+ recommends[rec] = True - for upg in pkg.upgrades: - upg.packages.append(pkg) - if upg not in upgrades: -@@ -659,6 +690,7 @@ class Cache(object): - self._packages[:] = packages.keys() - self._provides[:] = provides.keys() - self._requires[:] = requires.keys() -+ self._recommends[:] = recommends.keys() - self._upgrades[:] = upgrades.keys() - self._conflicts[:] = conflicts.keys() - -@@ -710,6 +742,14 @@ class Cache(object): - lst.append(req) - else: - reqnames[name] = [req] -+ recnames = {} -+ for rec in self._recommends: -+ for name in rec.getMatchNames(): -+ lst = recnames.get(name) -+ if lst: -+ lst.append(rec) -+ else: -+ recnames[name] = [rec] - upgnames = {} - for upg in self._upgrades: - for name in upg.getMatchNames(): -@@ -739,6 +779,18 @@ class Cache(object): - prv.requiredby.append(req) - else: - prv.requiredby = [req] -+ lst = recnames.get(prv.name) -+ if lst: -+ for rec in lst: -+ if rec.matches(prv): -+ if rec.providedby: -+ rec.providedby.append(prv) -+ else: -+ rec.providedby = [prv] -+ if prv.recommendedby: -+ prv.recommendedby.append(rec) -+ else: -+ prv.recommendedby = [rec] - lst = upgnames.get(prv.name) - if lst: - for upg in lst: -@@ -782,6 +834,12 @@ class Cache(object): - else: - return [x for x in self._requires if x.name == name] - -+ def getRecommends(self, name=None): -+ if not name: -+ return self._recommends -+ else: -+ return [x for x in self._recommends if x.name == name] -+ - def getUpgrades(self, name=None): - if not name: - return self._upgrades -@@ -807,6 +865,12 @@ class Cache(object): - for req in self._requires: - if prvname in req.getMatchNames() and req.matches(prv): - searcher.addResult(req) -+ if searcher.recommends: -+ for prv in searcher.recommends: -+ prvname = prv.name -+ for req in self._recommends: -+ if prvname in req.getMatchNames() and req.matches(prv): -+ searcher.addResult(req) - if searcher.upgrades: - for prv in searcher.upgrades: - prvname = prv.name -@@ -839,6 +903,7 @@ class Cache(object): - self._packages = state["_packages"] - provides = {} - requires = {} -+ recommends = {} - upgrades = {} - conflicts = {} - for pkg in self._packages: -@@ -848,6 +913,9 @@ class Cache(object): - for req in pkg.requires: - req.packages.append(pkg) - requires[req] = True -+ for rec in pkg.recommends: -+ rec.packages.append(pkg) -+ recommends[rec] = True - for upg in pkg.upgrades: - upg.packages.append(pkg) - upgrades[upg] = True -@@ -856,6 +924,7 @@ class Cache(object): - conflicts[cnf] = True - self._provides = provides.keys() - self._requires = requires.keys() -+ self._recommends = recommends.keys() - self._upgrades = upgrades.keys() - self._conflicts = conflicts.keys() - self._objmap = {} -diff --git a/smart/ccache.c b/smart/ccache.c -index 7541e26..7193185 100644 ---- a/smart/ccache.c -+++ b/smart/ccache.c -@@ -82,6 +82,7 @@ typedef struct { - PyObject *version; - PyObject *provides; - PyObject *requires; -+ PyObject *recommends; - PyObject *upgrades; - PyObject *conflicts; - PyObject *installed; -@@ -96,6 +97,7 @@ typedef struct { - PyObject *version; - PyObject *packages; - PyObject *requiredby; -+ PyObject *recommendedby; - PyObject *upgradedby; - PyObject *conflictedby; - } ProvidesObject; -@@ -123,6 +125,7 @@ typedef struct { - PyObject *_packages; - PyObject *_provides; - PyObject *_requires; -+ PyObject *_recommends; - PyObject *_upgrades; - PyObject *_conflicts; - PyObject *_objmap; -@@ -211,7 +214,8 @@ Package_init(PackageObject *self, PyObject *args) - Py_INCREF(self->name); - Py_INCREF(self->version); - self->provides = PyTuple_New(0); -- self->requires = PyTuple_New(0); -+ self->requires = PyList_New(0); -+ self->recommends = PyList_New(0); - self->upgrades = PyTuple_New(0); - self->conflicts = PyTuple_New(0); - Py_INCREF(Py_False); -@@ -228,6 +232,7 @@ Package_traverse(PackageObject *self, visitproc visit, void *arg) - { - Py_VISIT(self->provides); - Py_VISIT(self->requires); -+ Py_VISIT(self->recommends); - Py_VISIT(self->upgrades); - Py_VISIT(self->conflicts); - Py_VISIT(self->loaders); -@@ -239,6 +244,7 @@ Package_clear(PackageObject *self) - { - Py_CLEAR(self->provides); - Py_CLEAR(self->requires); -+ Py_CLEAR(self->recommends); - Py_CLEAR(self->upgrades); - Py_CLEAR(self->conflicts); - Py_CLEAR(self->loaders); -@@ -252,6 +258,7 @@ Package_dealloc(PackageObject *self) - Py_XDECREF(self->version); - Py_XDECREF(self->provides); - Py_XDECREF(self->requires); -+ Py_XDECREF(self->recommends); - Py_XDECREF(self->upgrades); - Py_XDECREF(self->conflicts); - Py_XDECREF(self->installed); -@@ -453,6 +460,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; -@@ -606,13 +653,14 @@ Package_getPriority(PackageObject *self, PyObject *args) - static PyObject * - Package__getstate__(PackageObject *self, PyObject *args) - { -- PyObject *state = PyTuple_New(10); -+ PyObject *state = PyTuple_New(11); - if (!state) return NULL; - - Py_INCREF(self->name); - Py_INCREF(self->version); - Py_INCREF(self->provides); - Py_INCREF(self->requires); -+ Py_INCREF(self->recommends); - Py_INCREF(self->upgrades); - Py_INCREF(self->conflicts); - Py_INCREF(self->installed); -@@ -620,16 +668,17 @@ Package__getstate__(PackageObject *self, PyObject *args) - Py_INCREF(self->priority); - Py_INCREF(self->loaders); - -- PyTuple_SET_ITEM(state, 0, self->name); -- PyTuple_SET_ITEM(state, 1, self->version); -- PyTuple_SET_ITEM(state, 2, self->provides); -- PyTuple_SET_ITEM(state, 3, self->requires); -- PyTuple_SET_ITEM(state, 4, self->upgrades); -- PyTuple_SET_ITEM(state, 5, self->conflicts); -- PyTuple_SET_ITEM(state, 6, self->installed); -- PyTuple_SET_ITEM(state, 7, self->essential); -- PyTuple_SET_ITEM(state, 8, self->priority); -- PyTuple_SET_ITEM(state, 9, self->loaders); -+ PyTuple_SET_ITEM(state, 0, self->name); -+ PyTuple_SET_ITEM(state, 1, self->version); -+ PyTuple_SET_ITEM(state, 2, self->provides); -+ PyTuple_SET_ITEM(state, 3, self->requires); -+ PyTuple_SET_ITEM(state, 4, self->recommends); -+ PyTuple_SET_ITEM(state, 5, self->upgrades); -+ PyTuple_SET_ITEM(state, 6, self->conflicts); -+ PyTuple_SET_ITEM(state, 7, self->installed); -+ PyTuple_SET_ITEM(state, 8, self->essential); -+ PyTuple_SET_ITEM(state, 9, self->priority); -+ PyTuple_SET_ITEM(state, 10, self->loaders); - - return state; - } -@@ -637,7 +686,7 @@ Package__getstate__(PackageObject *self, PyObject *args) - static PyObject * - Package__setstate__(PackageObject *self, PyObject *state) - { -- if (!PyTuple_Check(state) || PyTuple_GET_SIZE(state) != 10) { -+ if (!PyTuple_Check(state) || PyTuple_GET_SIZE(state) != 11) { - PyErr_SetString(StateVersionError, ""); - return NULL; - } -@@ -645,18 +694,20 @@ Package__setstate__(PackageObject *self, PyObject *state) - self->version = PyTuple_GET_ITEM(state, 1); - self->provides = PyTuple_GET_ITEM(state, 2); - self->requires = PyTuple_GET_ITEM(state, 3); -- self->upgrades = PyTuple_GET_ITEM(state, 4); -- self->conflicts = PyTuple_GET_ITEM(state, 5); -- self->installed = PyTuple_GET_ITEM(state, 6); -- self->essential = PyTuple_GET_ITEM(state, 7); -- self->priority = PyTuple_GET_ITEM(state, 8); -- self->loaders = PyTuple_GET_ITEM(state, 9); -+ self->recommends = PyTuple_GET_ITEM(state, 4); -+ self->upgrades = PyTuple_GET_ITEM(state, 5); -+ self->conflicts = PyTuple_GET_ITEM(state, 6); -+ self->installed = PyTuple_GET_ITEM(state, 7); -+ self->essential = PyTuple_GET_ITEM(state, 8); -+ self->priority = PyTuple_GET_ITEM(state, 9); -+ self->loaders = PyTuple_GET_ITEM(state, 10); - - - Py_INCREF(self->name); - Py_INCREF(self->version); - Py_INCREF(self->provides); - Py_INCREF(self->requires); -+ Py_INCREF(self->recommends); - Py_INCREF(self->upgrades); - Py_INCREF(self->conflicts); - Py_INCREF(self->installed); -@@ -686,6 +737,7 @@ static PyMemberDef Package_members[] = { - {"version", T_OBJECT, OFF(version), 0, 0}, - {"provides", T_OBJECT, OFF(provides), 0, 0}, - {"requires", T_OBJECT, OFF(requires), 0, 0}, -+ {"recommends", T_OBJECT, OFF(recommends), 0, 0}, - {"upgrades", T_OBJECT, OFF(upgrades), 0, 0}, - {"conflicts", T_OBJECT, OFF(conflicts), 0, 0}, - {"installed", T_OBJECT, OFF(installed), 0, 0}, -@@ -750,6 +802,7 @@ Provides_init(ProvidesObject *self, PyObject *args) - Py_INCREF(self->version); - self->packages = PyList_New(0); - self->requiredby = PyTuple_New(0); -+ self->recommendedby = PyTuple_New(0); - self->upgradedby = PyTuple_New(0); - self->conflictedby = PyTuple_New(0); - return 0; -@@ -760,6 +813,7 @@ Provides_traverse(ProvidesObject *self, visitproc visit, void *arg) - { - Py_VISIT(self->packages); - Py_VISIT(self->requiredby); -+ Py_VISIT(self->recommendedby); - Py_VISIT(self->upgradedby); - Py_VISIT(self->conflictedby); - return 0; -@@ -770,6 +824,7 @@ Provides_clear(ProvidesObject *self) - { - Py_CLEAR(self->packages); - Py_CLEAR(self->requiredby); -+ Py_CLEAR(self->recommendedby); - Py_CLEAR(self->upgradedby); - Py_CLEAR(self->conflictedby); - return 0; -@@ -782,6 +837,7 @@ Provides_dealloc(ProvidesObject *self) - Py_XDECREF(self->version); - Py_XDECREF(self->packages); - Py_XDECREF(self->requiredby); -+ Py_XDECREF(self->recommendedby); - Py_XDECREF(self->upgradedby); - Py_XDECREF(self->conflictedby); - self->ob_type->tp_free((PyObject *)self); -@@ -960,6 +1016,7 @@ static PyMemberDef Provides_members[] = { - {"version", T_OBJECT, OFF(version), 0, 0}, - {"packages", T_OBJECT, OFF(packages), 0, 0}, - {"requiredby", T_OBJECT, OFF(requiredby), 0, 0}, -+ {"recommendedby", T_OBJECT, OFF(recommendedby), 0, 0}, - {"upgradedby", T_OBJECT, OFF(upgradedby), 0, 0}, - {"conflictedby", T_OBJECT, OFF(conflictedby), 0, 0}, - {NULL} -@@ -1555,6 +1612,7 @@ Loader_buildPackage(LoaderObject *self, PyObject *args) - PyObject *reqargs; - PyObject *upgargs; - PyObject *cnfargs; -+ PyObject *recargs = NULL; - PyObject *callargs; - - PyObject *pkg; -@@ -1574,9 +1632,10 @@ Loader_buildPackage(LoaderObject *self, PyObject *args) - - cache = (CacheObject *)self->_cache; - -- if (!PyArg_ParseTuple(args, "O!O&O&O&O&", &PyTuple_Type, &pkgargs, -+ if (!PyArg_ParseTuple(args, "O!O&O&O&O&|O&", &PyTuple_Type, &pkgargs, - mylist, &prvargs, mylist, &reqargs, -- mylist, &upgargs, mylist, &cnfargs)) -+ mylist, &upgargs, mylist, &cnfargs, -+ mylist, &recargs)) - return NULL; - - if (PyTuple_GET_SIZE(pkgargs) < 2) { -@@ -1701,6 +1760,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; -@@ -2391,6 +2503,7 @@ Cache_init(CacheObject *self, PyObject *args) - self->_packages = PyList_New(0); - self->_provides = PyList_New(0); - self->_requires = PyList_New(0); -+ self->_recommends = PyList_New(0); - self->_upgrades = PyList_New(0); - self->_conflicts = PyList_New(0); - self->_objmap = PyDict_New(); -@@ -2404,6 +2517,7 @@ Cache_traverse(CacheObject *self, visitproc visit, void *arg) - Py_VISIT(self->_packages); - Py_VISIT(self->_provides); - Py_VISIT(self->_requires); -+ Py_VISIT(self->_recommends); - Py_VISIT(self->_upgrades); - Py_VISIT(self->_conflicts); - Py_VISIT(self->_objmap); -@@ -2417,6 +2531,7 @@ Cache_clear(CacheObject *self) - Py_CLEAR(self->_packages); - Py_CLEAR(self->_provides); - Py_CLEAR(self->_requires); -+ Py_CLEAR(self->_recommends); - Py_CLEAR(self->_upgrades); - Py_CLEAR(self->_conflicts); - Py_CLEAR(self->_objmap); -@@ -2430,6 +2545,7 @@ Cache_dealloc(CacheObject *self) - Py_XDECREF(self->_packages); - Py_XDECREF(self->_provides); - Py_XDECREF(self->_requires); -+ Py_XDECREF(self->_recommends); - Py_XDECREF(self->_upgrades); - Py_XDECREF(self->_conflicts); - Py_XDECREF(self->_objmap); -@@ -2449,6 +2565,8 @@ Cache_reset(CacheObject *self, PyObject *args) - LIST_CLEAR(prvobj->packages); - if (PyList_Check(prvobj->requiredby)) - LIST_CLEAR(prvobj->requiredby); -+ if (PyList_Check(prvobj->recommendedby)) -+ LIST_CLEAR(prvobj->recommendedby); - if (PyList_Check(prvobj->upgradedby)) - LIST_CLEAR(prvobj->upgradedby); - if (PyList_Check(prvobj->conflictedby)) -@@ -2464,6 +2582,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; -@@ -2487,6 +2615,7 @@ Cache_reset(CacheObject *self, PyObject *args) - LIST_CLEAR(self->_packages); - LIST_CLEAR(self->_provides); - LIST_CLEAR(self->_requires); -+ LIST_CLEAR(self->_recommends); - LIST_CLEAR(self->_upgrades); - LIST_CLEAR(self->_conflicts); - PyDict_Clear(self->_objmap); -@@ -2534,6 +2663,7 @@ Cache__reload(CacheObject *self, PyObject *args) - packages = {} - provides = {} - requires = {} -+ recommends = {} - upgrades = {} - conflicts = {} - objmap = self._objmap -@@ -2541,11 +2671,12 @@ Cache__reload(CacheObject *self, PyObject *args) - PyObject *packages = PyDict_New(); - PyObject *provides = PyDict_New(); - PyObject *requires = PyDict_New(); -+ PyObject *recommends = PyDict_New(); - PyObject *upgrades = PyDict_New(); - PyObject *conflicts = PyDict_New(); - PyObject *objmap = self->_objmap; - int i, ilen; -- if (!packages || !provides || !requires || !conflicts) -+ if (!packages || !provides || !requires || !recommends || !conflicts ) - return NULL; - - /* for loader in loaders: */ -@@ -2679,6 +2810,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: -@@ -2747,6 +2902,11 @@ Cache__reload(CacheObject *self, PyObject *args) - self->_requires = PyDict_Keys(requires); - Py_DECREF(requires); - -+ /* self._recommends[:] = recommends.keys() */ -+ Py_DECREF(self->_recommends); -+ self->_recommends = PyDict_Keys(recommends); -+ Py_DECREF(recommends); -+ - /* self._upgrades[:] = upgrades.keys() */ - Py_DECREF(self->_upgrades); - self->_upgrades = PyDict_Keys(upgrades); -@@ -2852,7 +3012,7 @@ PyObject * - Cache_linkDeps(CacheObject *self, PyObject *args) - { - int i, j, len; -- PyObject *reqnames, *upgnames, *cnfnames; -+ PyObject *reqnames, *recnames, *upgnames, *cnfnames; - PyObject *lst; - - /* reqnames = {} */ -@@ -2896,6 +3056,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: */ -@@ -3035,6 +3236,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); - -@@ -3139,6 +3390,7 @@ Cache_linkDeps(CacheObject *self, PyObject *args) - } - - Py_DECREF(reqnames); -+ Py_DECREF(recnames); - Py_DECREF(upgnames); - Py_DECREF(cnfnames); - -@@ -3215,6 +3467,29 @@ Cache_getRequires(CacheObject *self, PyObject *args) - } - - PyObject * -+Cache_getRecommends(CacheObject *self, PyObject *args) -+{ -+ const char *name = NULL; -+ PyObject *lst; -+ int i, len; -+ if (!PyArg_ParseTuple(args, "|s", &name)) -+ return NULL; -+ if (!name) { -+ Py_INCREF(self->_recommends); -+ return self->_recommends; -+ } -+ lst = PyList_New(0); -+ len = PyList_GET_SIZE(self->_recommends); -+ for (i = 0; i != len; i++) { -+ DependsObject *rec = -+ (DependsObject*)PyList_GET_ITEM(self->_recommends, i); -+ if (strcmp(STR(rec->name), name) == 0) -+ PyList_Append(lst, (PyObject *)rec); -+ } -+ return lst; -+} -+ -+PyObject * - Cache_getUpgrades(CacheObject *self, PyObject *args) - { - const char *name = NULL; -@@ -3324,6 +3599,38 @@ Cache_search(CacheObject *self, PyObject *searcher) - } - Py_DECREF(lst); - -+ lst = PyObject_GetAttrString(searcher, "recommends"); -+ if (lst == NULL || !PyList_Check(lst)) { -+ PyErr_SetString(PyExc_TypeError, "Invalid recommends attribute"); -+ return NULL; -+ } -+ for (i = 0; i != PyList_GET_SIZE(lst); i++) { -+ ProvidesObject *prv = (ProvidesObject *)PyList_GET_ITEM(lst, i); -+ for (j = 0; j != PyList_GET_SIZE(self->_recommends); j++) { -+ PyObject *rec = PyList_GET_ITEM(self->_recommends, j); -+ PyObject *names = PyObject_CallMethod(rec, "getMatchNames", NULL); -+ PyObject *seq = PySequence_Fast(names, "getMatchNames() returned " -+ "non-sequence object"); -+ if (seq == NULL) return NULL; -+ for (k = 0; k != PySequence_Fast_GET_SIZE(seq); k++) { -+ if (strcmp(PyString_AS_STRING(PySequence_Fast_GET_ITEM(seq, k)), -+ PyString_AS_STRING(prv->name)) == 0) { -+ res = PyObject_CallMethod(rec, "matches", "O", prv); -+ if (res == NULL) -+ return NULL; -+ if (PyObject_IsTrue(res)) -+ CALLMETHOD(searcher, "addResult", "O", rec); -+ Py_DECREF(res); -+ break; -+ } -+ } -+ -+ Py_DECREF(names); -+ Py_DECREF(seq); -+ } -+ } -+ Py_DECREF(lst); -+ - lst = PyObject_GetAttrString(searcher, "upgrades"); - if (lst == NULL || !PyList_Check(lst)) { - PyErr_SetString(PyExc_TypeError, "Invalid upgrades attribute"); -@@ -3420,7 +3727,7 @@ Cache__getstate__(CacheObject *self, PyObject *args) - static PyObject * - Cache__setstate__(CacheObject *self, PyObject *state) - { -- PyObject *provides, *requires, *upgrades, *conflicts; -+ PyObject *provides, *requires, *recommends, *upgrades, *conflicts; - int i, ilen; - int j, jlen; - -@@ -3452,11 +3759,13 @@ Cache__setstate__(CacheObject *self, PyObject *state) - /* - provides = {} - requires = {} -+ recommends = {} - upgrades = {} - conflicts = {} - */ - provides = PyDict_New(); - requires = PyDict_New(); -+ recommends = PyDict_New(); - upgrades = PyDict_New(); - conflicts = PyDict_New(); - -@@ -3497,6 +3806,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 -@@ -3525,6 +3849,7 @@ Cache__setstate__(CacheObject *self, PyObject *state) - PyDict_SetItem(conflicts, cnf, Py_True); - } - } -+ - } - - /* self._provides = provides.keys() */ -@@ -3535,6 +3860,10 @@ Cache__setstate__(CacheObject *self, PyObject *state) - self->_requires = PyDict_Keys(requires); - Py_DECREF(requires); - -+ /* self._recommends = recommends.keys() */ -+ self->_recommends = PyDict_Keys(recommends); -+ Py_DECREF(recommends); -+ - /* self._upgrades = upgrades.keys() */ - self->_upgrades = PyDict_Keys(upgrades); - Py_DECREF(upgrades); -@@ -3562,6 +3891,7 @@ static PyMethodDef Cache_methods[] = { - {"getPackages", (PyCFunction)Cache_getPackages, METH_VARARGS, NULL}, - {"getProvides", (PyCFunction)Cache_getProvides, METH_VARARGS, NULL}, - {"getRequires", (PyCFunction)Cache_getRequires, METH_VARARGS, NULL}, -+ {"getRecommends", (PyCFunction)Cache_getRecommends, METH_VARARGS, NULL}, - {"getUpgrades", (PyCFunction)Cache_getUpgrades, METH_VARARGS, NULL}, - {"getConflicts", (PyCFunction)Cache_getConflicts, METH_VARARGS, NULL}, - {"search", (PyCFunction)Cache_search, METH_O, NULL}, -@@ -3576,6 +3906,7 @@ static PyMemberDef Cache_members[] = { - {"_packages", T_OBJECT, OFF(_packages), RO, 0}, - {"_provides", T_OBJECT, OFF(_provides), RO, 0}, - {"_requires", T_OBJECT, OFF(_requires), RO, 0}, -+ {"_recommends", T_OBJECT, OFF(_recommends), RO, 0}, - {"_upgrades", T_OBJECT, OFF(_upgrades), RO, 0}, - {"_conflicts", T_OBJECT, OFF(_conflicts), RO, 0}, - {"_objmap", T_OBJECT, OFF(_objmap), RO, 0}, -diff --git a/smart/commands/query.py b/smart/commands/query.py -index 808e53a..9265cd9 100644 ---- a/smart/commands/query.py -+++ b/smart/commands/query.py -@@ -107,6 +107,8 @@ def option_parser(**kwargs): - help=_("show requires for the given packages")) - parser.add_option("--show-prerequires", action="store_true", - help=_("show requires selecting only pre-dependencies")) -+ parser.add_option("--show-recommends", action="store_true", -+ help=_("show recommends for the given packages")) - parser.add_option("--show-upgrades", action="store_true", - help=_("show upgrades for the given packages")) - parser.add_option("--show-conflicts", action="store_true", -@@ -488,6 +490,19 @@ def main(ctrl, opts, reloadchannels=True): - continue - output.showRequiresProvidedBy(pkg, req, - prv, prvpkg) -+ if pkg.recommends and (opts.show_recommends): -+ pkg.recommends.sort() -+ first = True -+ for req in pkg.recommends: -+ output.showRecommends(pkg, req) -+ if opts.show_providedby and req.providedby: -+ for prv in req.providedby: -+ prv.packages.sort() -+ for prvpkg in prv.packages: -+ if opts.installed and not prvpkg.installed: -+ continue -+ output.showRecommendsProvidedBy(pkg, req, -+ prv, prvpkg) - if pkg.upgrades and (opts.show_upgrades or whoupgrades): - pkg.upgrades.sort() - first = True -@@ -594,6 +609,12 @@ class NullOutput(object): - def showRequiresProvidedBy(self, pkg, req, prv, prvpkg): - pass - -+ def showRecommends(self, pkg, req): -+ pass -+ -+ def showRecommendsProvidedBy(self, pkg, req, prv, prvpkg): -+ pass -+ - def showUpgrades(self, pkg, upg): - pass - -@@ -619,6 +640,8 @@ class TextOutput(NullOutput): - self._firstconflictedby = True - self._firstrequires = True - self._firstrequiresprovidedby = True -+ self._firstrecommends = True -+ self._firstrecommendsprovidedby = True - self._firstupgrades = True - self._firstupgradesprovidedby = True - self._firstconflicts = True -@@ -711,6 +734,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 -@@ -797,6 +836,18 @@ class GraphVizOutput(NullOutput): - self._shown[req, prv] = True - print ' "Requires: %s" -> "Provides: %s";' % (req, prv) - -+ def showRecommends(self, pkg, req): -+ if (pkg, req) not in self._shown: -+ self._shown[pkg, req] = True -+ print ' "%s" -> "Recommends: %s";' % (pkg, req) -+ -+ def showRecommendsProvidedBy(self, pkg, req, prv, prvpkg): -+ self.showPackage(prvpkg) -+ self.showProvides(prvpkg, prv) -+ if (req, prv) not in self._shown: -+ self._shown[req, prv] = True -+ print ' "Recommends: %s" -> "Provides: %s";' % (req, prv) -+ - def showUpgrades(self, pkg, upg): - if (pkg, upg) not in self._shown: - self._shown[pkg, upg] = True -diff --git a/smart/control.py b/smart/control.py -index fd7083a..d44abe7 100644 ---- a/smart/control.py -+++ b/smart/control.py -@@ -447,7 +447,7 @@ class Control(object): - queue = marked.keys() - while queue: - pkg = queue.pop(0) -- for req in pkg.requires: -+ for req in pkg.requires + pkg.recommends: - for prv in req.providedby: - for prvpkg in prv.packages: - if (prvpkg.installed and -@@ -794,7 +794,7 @@ class Control(object): - pkglst = [] - for pkg in changeset: - n = 0 -- for req in pkg.requires: -+ for req in pkg.requires + pkg.recommends: - for prv in req.providedby: - for prvpkg in prv.packages: - if changeset.get(prvpkg) is INSTALL: -diff --git a/smart/searcher.py b/smart/searcher.py -index 216f4ce..32eb825 100644 ---- a/smart/searcher.py -+++ b/smart/searcher.py -@@ -45,9 +45,9 @@ class Searcher(object): - - - provides is matched in Provides.search(), for the same reason. - -- - requires, upgrades, and conflicts don't have special searching -- methods. Instead, their usual match() method is given an instance -- of the Provides type. -+ - requires, recommends, upgrades, and conflicts don't have special -+ searching methods. Instead, their usual match() method is given -+ an instance of the Provides type. - - - group, path, url, and other information which is found by - PackageInfo, is searched by the Loader.search() method and -@@ -62,6 +62,7 @@ class Searcher(object): - self.nameversion = [] - self.provides = [] - self.requires = [] -+ self.recommends = [] - self.upgrades = [] - self.conflicts = [] - self.path = [] -@@ -76,6 +77,7 @@ class Searcher(object): - del self.nameversion[:] - del self.provides[:] - del self.requires[:] -+ del self.recommends[:] - del self.upgrades[:] - del self.conflicts[:] - del self.path[:] -@@ -122,6 +124,8 @@ class Searcher(object): - self.addProvides(s[9:], cutoff) - elif s.startswith("requires:"): - self.addRequires(s[9:]) -+ elif s.startswith("recommends:"): -+ self.addRecommends(s[11:]) - elif s.startswith("upgrades:"): - self.addUpgrades(s[9:]) - elif s.startswith("conflicts:"): -@@ -151,6 +155,7 @@ class Searcher(object): - return s and ( - s.startswith("provides:") or - s.startswith("requires:") or -+ s.startswith("recommends:") or - s.startswith("upgrades:") or - s.startswith("conflicts:") or - s.startswith("url:") or -@@ -182,6 +187,9 @@ class Searcher(object): - def addRequires(self, s): - self.requires.append(self._buildProvides(s)) - -+ def addRecommends(self, s): -+ self.recommends.append(self._buildProvides(s)) -+ - def addUpgrades(self, s): - self.upgrades.append(self._buildProvides(s)) - -diff --git a/smart/transaction.py b/smart/transaction.py -index eb320d2..300b9cc 100644 ---- a/smart/transaction.py -+++ b/smart/transaction.py -@@ -573,7 +573,7 @@ class Transaction(object): - self._remove(namepkg, changeset, locked, pending, depth) - - # Install packages required by this one. -- for req in pkg.requires: -+ for req in pkg.requires + pkg.recommends: - - # Check if someone is already providing it. - prvpkgs = {} -@@ -596,8 +596,12 @@ 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) -+ if req in pkg.requires: -+ raise Failed, _("Can't install %s: no package provides %s") % \ -+ (pkg, req) -+ else: -+ # It's only a recommend, skip -+ continue - - if len(prvpkgs) == 1: - # Don't check locked here. prvpkgs was -@@ -1359,7 +1363,7 @@ class ChangeSetSplitter(object): - set = self._changeset - - # Check all dependencies needed by this package. -- for req in pkg.requires: -+ for req in pkg.requires + pkg.recommends: - - # Check if any already installed or to be installed - # package will solve the problem. -@@ -1424,8 +1428,9 @@ class ChangeSetSplitter(object): - - # There are no solutions for the problem. - # Should we really care about it? -- if (self._forcerequires or -- isinstance(req, PreRequires)): -+ if ((self._forcerequires or -+ isinstance(req, PreRequires)) -+ and req in pkg.requires): - raise Error, _("No providers for '%s', " - "required by '%s'") % (req, pkg) - -@@ -1625,7 +1630,7 @@ def recursiveInternalRequires(pkgmap, pkg, numrel, done=None): - return n - - def forwardRequires(pkg, map): -- for req in pkg.requires: -+ for req in pkg.requires + pkg.recommends: - if req not in map: - map[req] = True - for prv in req.providedby: -@@ -1794,6 +1799,15 @@ def checkPackages(cache, checkset, relateset, report=False): - iface.info(_("Unsatisfied dependency: %s requires %s") % - (pkg, req)) - -+ for req in pkg.recommends: -+ for prv in req.providedby: -+ for prvpkg in prv.packages: -+ if prvpkg in relateset: -+ break -+ else: -+ continue -+ break -+ - if not pkg.installed: - continue - --- -1.7.9.5 - diff --git a/meta/recipes-devtools/python/python-smartpm/smart-rpm-extra-macros.patch b/meta/recipes-devtools/python/python-smartpm/smart-rpm-extra-macros.patch deleted file mode 100644 index 30cb1767dd..0000000000 --- a/meta/recipes-devtools/python/python-smartpm/smart-rpm-extra-macros.patch +++ /dev/null @@ -1,27 +0,0 @@ -backends/rpm: implement rpm-extra-macros option - -Allow defining extra macros in the smart configuration to be passed -to rpm before opening the database. - -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 b9e9cb2..234c844 100644 ---- a/smart/backends/rpm/base.py -+++ b/smart/backends/rpm/base.py -@@ -53,6 +53,10 @@ def rpm_join_dbpath(root, dbpath): - return os.path.join(root, dbpath) - - def getTS(new=False): -+ if sysconf.get("rpm-extra-macros"): -+ for key, value in sysconf.get("rpm-extra-macros").items(): -+ rpm.addMacro(key, str(value)) -+ - rpm_root = os.path.abspath(sysconf.get("rpm-root", "/")) - if not hasattr(getTS, "ts") or getTS.root != rpm_root: - getTS.root = rpm_root --- -1.7.9.5 - diff --git a/meta/recipes-devtools/python/python-smartpm/smart-rpm-md-parse.patch b/meta/recipes-devtools/python/python-smartpm/smart-rpm-md-parse.patch deleted file mode 100644 index 97cecc124d..0000000000 --- a/meta/recipes-devtools/python/python-smartpm/smart-rpm-md-parse.patch +++ /dev/null @@ -1,26 +0,0 @@ -backends/rpm: fix parsing of rpm-md metadata - -If assertions are disabled then the queue.pop() wasn't being executed, -leading to requires, recommends etc. not being read properly. - -Upstream-Status: Pending - -Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> - -diff --git a/smart/backends/rpm/metadata.py b/smart/backends/rpm/metadata.py -index 2c54f39..dc9df22 100644 ---- a/smart/backends/rpm/metadata.py -+++ b/smart/backends/rpm/metadata.py -@@ -188,7 +188,8 @@ class RPMMetaDataLoader(Loader): - - elif event == "end": - -- assert queue.pop() is elem -+ popped = queue.pop() -+ assert popped is elem - - if skip: - if tag == skip: --- -1.7.9.5 - diff --git a/meta/recipes-devtools/python/python-smartpm/smart-rpm-root.patch b/meta/recipes-devtools/python/python-smartpm/smart-rpm-root.patch deleted file mode 100644 index b2629ef051..0000000000 --- a/meta/recipes-devtools/python/python-smartpm/smart-rpm-root.patch +++ /dev/null @@ -1,80 +0,0 @@ -Fix smart RPM backend to handle rpm-dbpath/rpm-root properly - -Don't assume that if the dbpath starts with / that it is an absolute -path. This matches the behaviour of rpm itself. (If the root path is -specified and does not start with /, rpm will prepend the root path -twice and fail). - -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 7092332..0489e11 100644 ---- a/smart/backends/rpm/base.py -+++ b/smart/backends/rpm/base.py -@@ -46,6 +46,12 @@ __all__ = ["RPMPackage", "RPMProvides", "RPMNameProvides", "RPMPreRequires", - "rpm", "getTS", "getArchScore", "getArchColor", "system_provides", - "collapse_libc_requires"] - -+def rpm_join_dbpath(root, dbpath): -+ if dbpath.startswith('/') and root: -+ return os.path.join(root, dbpath[1:]) -+ else: -+ return os.path.join(root, dbpath) -+ - def getTS(new=False): - rpm_root = os.path.abspath(sysconf.get("rpm-root", "/")) - if not hasattr(getTS, "ts") or getTS.root != rpm_root: -@@ -56,7 +62,7 @@ def getTS(new=False): - #if not sysconf.get("rpm-check-signatures", False): - # getTS.ts.setVSFlags(rpm._RPMVSF_NOSIGNATURES) - rpm_dbpath = sysconf.get("rpm-dbpath", "var/lib/rpm") -- dbdir = os.path.join(getTS.root, rpm_dbpath) -+ dbdir = rpm_join_dbpath(getTS.root, rpm_dbpath) - if not os.path.isdir(dbdir): - try: - os.makedirs(dbdir) -diff --git a/smart/channels/rpm_sys.py b/smart/channels/rpm_sys.py -index efcb10e..b9fda27 100644 ---- a/smart/channels/rpm_sys.py -+++ b/smart/channels/rpm_sys.py -@@ -20,7 +20,7 @@ - # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - # - from smart.backends.rpm.header import RPMDBLoader --from smart.backends.rpm.base import getTS -+from smart.backends.rpm.base import getTS, rpm_join_dbpath - from smart.channel import PackageChannel - from smart import * - import os -@@ -32,9 +32,9 @@ class RPMSysChannel(PackageChannel): - - def fetch(self, fetcher, progress): - getTS() # Make sure the db exists. -- path = os.path.join(sysconf.get("rpm-root", "/"), -- sysconf.get("rpm-dbpath", "var/lib/rpm"), -- "Packages") -+ dbdir = rpm_join_dbpath(sysconf.get("rpm-root", "/"), -+ sysconf.get("rpm-dbpath", "var/lib/rpm")) -+ path = os.path.join(dbdir, "Packages") - digest = os.path.getmtime(path) - if digest == self._digest: - return True -diff --git a/smart/plugins/detectsys.py b/smart/plugins/detectsys.py -index 2cd49ad..3959d07 100644 ---- a/smart/plugins/detectsys.py -+++ b/smart/plugins/detectsys.py -@@ -20,10 +20,11 @@ - # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - # - from smart import * -+from smart.backends.rpm.base import rpm_join_dbpath - import os - - def detectRPMSystem(): -- dir = os.path.join(sysconf.get("rpm-root", "/"), -+ dir = rpm_join_dbpath(sysconf.get("rpm-root", "/"), - sysconf.get("rpm-dbpath", "var/lib/rpm")) - file = os.path.join(dir, "Packages") - if os.path.exists(file): diff --git a/meta/recipes-devtools/python/python-smartpm/smart-rpm4-fixes.patch b/meta/recipes-devtools/python/python-smartpm/smart-rpm4-fixes.patch deleted file mode 100644 index 708ffe67d3..0000000000 --- a/meta/recipes-devtools/python/python-smartpm/smart-rpm4-fixes.patch +++ /dev/null @@ -1,49 +0,0 @@ - -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/meta/recipes-devtools/python/python-smartpm/smart-tmpdir.patch b/meta/recipes-devtools/python/python-smartpm/smart-tmpdir.patch deleted file mode 100644 index 2f09ce9248..0000000000 --- a/meta/recipes-devtools/python/python-smartpm/smart-tmpdir.patch +++ /dev/null @@ -1,30 +0,0 @@ -backends/rpm: remove creation of /var/tmp - -This doesn't appear to be needed, and breaks installation of base-files -in OpenEmbedded (since that is a symlink installed as part of the -package). - -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 234c844..127354d 100644 ---- a/smart/backends/rpm/base.py -+++ b/smart/backends/rpm/base.py -@@ -82,12 +82,6 @@ def getTS(new=False): - else: - iface.warning(_("Initialized new rpm database at %s") - % getTS.root) -- tmpdir = os.path.join(getTS.root, "var/tmp") -- if not os.path.isdir(tmpdir): -- try: -- os.makedirs(tmpdir) -- except OSError: -- pass - if new: - if sysconf.get("rpm-dbpath"): - rpm.addMacro('_dbpath', "/" + sysconf.get("rpm-dbpath")) --- -1.7.9.5 - diff --git a/meta/recipes-devtools/python/python-smartpm/smart-yaml-error.patch b/meta/recipes-devtools/python/python-smartpm/smart-yaml-error.patch deleted file mode 100644 index e16c5c12aa..0000000000 --- a/meta/recipes-devtools/python/python-smartpm/smart-yaml-error.patch +++ /dev/null @@ -1,86 +0,0 @@ -Print a more friendly error if YAML output is requested without PyYAML - -Upstream-Status: Pending - -Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> - -diff --git a/smart/commands/channel.py b/smart/commands/channel.py -index 63fbb35..108f3f1 100644 ---- a/smart/commands/channel.py -+++ b/smart/commands/channel.py -@@ -339,7 +339,10 @@ def main(ctrl, opts): - print - - if opts.yaml is not None: -- import yaml -+ try: -+ import yaml -+ except ImportError: -+ raise Error, _("Please install PyYAML in order to use this function") - yamlchannels = {} - for alias in (opts.yaml or sysconf.get("channels", ())): - channel = sysconf.get(("channels", alias)) -diff --git a/smart/commands/config.py b/smart/commands/config.py -index 4fe4366..aa1db78 100644 ---- a/smart/commands/config.py -+++ b/smart/commands/config.py -@@ -137,7 +137,10 @@ def main(ctrl, opts): - pprint.pprint(sysconf.get((), hard=True)) - - if opts.yaml is not None: -- import yaml -+ try: -+ import yaml -+ except ImportError: -+ raise Error, _("Please install PyYAML in order to use this function") - if opts.yaml: - marker = object() - for opt in opts.yaml: -diff --git a/smart/commands/flag.py b/smart/commands/flag.py -index ed18999..8b90496 100644 ---- a/smart/commands/flag.py -+++ b/smart/commands/flag.py -@@ -138,7 +138,10 @@ def main(ctrl, opts): - print - - if opts.yaml is not None: -- import yaml -+ try: -+ import yaml -+ except ImportError: -+ raise Error, _("Please install PyYAML in order to use this function") - yamlflags = {} - for flag in opts.yaml or pkgconf.getFlagNames(): - flag = flag.strip() -diff --git a/smart/commands/mirror.py b/smart/commands/mirror.py -index ca50a95..f7b019d 100644 ---- a/smart/commands/mirror.py -+++ b/smart/commands/mirror.py -@@ -218,7 +218,10 @@ def main(ctrl, opts): - print - - if opts.yaml: -- import yaml -+ try: -+ import yaml -+ except ImportError: -+ raise Error, _("Please install PyYAML in order to use this function") - yamlmirrors = {} - mirrors = sysconf.get("mirrors", ()) - for origin in mirrors: -diff --git a/smart/commands/priority.py b/smart/commands/priority.py -index d850d29..441ea32 100644 ---- a/smart/commands/priority.py -+++ b/smart/commands/priority.py -@@ -117,7 +117,10 @@ def main(ctrl, opts): - print - - elif opts.yaml: -- import yaml -+ try: -+ import yaml -+ except ImportError: -+ raise Error, _("Please install PyYAML in order to use this function") - yamlpriorities = {} - priorities = sysconf.get("package-priorities", {}) - for name in opts.args or priorities: diff --git a/meta/recipes-devtools/python/python-smartpm/smartpm-rpm5-nodig.patch b/meta/recipes-devtools/python/python-smartpm/smartpm-rpm5-nodig.patch deleted file mode 100644 index 9919a941bc..0000000000 --- a/meta/recipes-devtools/python/python-smartpm/smartpm-rpm5-nodig.patch +++ /dev/null @@ -1,46 +0,0 @@ -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 -ur smart-1.4.1.orig/smart/backends/rpm/base.py smart-1.4.1/smart/backends/rpm/base.py ---- smart-1.4.1.orig/smart/backends/rpm/base.py 2012-10-04 11:22:11.229351164 -0500 -+++ smart-1.4.1/smart/backends/rpm/base.py 2012-10-04 11:22:44.820170786 -0500 -@@ -53,8 +53,8 @@ - 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): -- getTS.ts.setVSFlags(rpm._RPMVSF_NOSIGNATURES) -+ #if not sysconf.get("rpm-check-signatures", False): -+ # getTS.ts.setVSFlags(rpm._RPMVSF_NOSIGNATURES) - rpm_dbpath = sysconf.get("rpm-dbpath", "var/lib/rpm") - dbdir = os.path.join(getTS.root, rpm_dbpath) - if not os.path.isdir(dbdir): -@@ -82,8 +82,8 @@ - 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): -- ts.setVSFlags(rpm._RPMVSF_NOSIGNATURES) -+ #if not sysconf.get("rpm-check-signatures", False): -+ # ts.setVSFlags(rpm._RPMVSF_NOSIGNATURES) - return ts - else: - return getTS.ts -diff -ur smart-1.4.1.orig/smart/plugins/yumchannelsync.py smart-1.4.1/smart/plugins/yumchannelsync.py ---- smart-1.4.1.orig/smart/plugins/yumchannelsync.py 2010-12-06 03:11:05.000000000 -0600 -+++ smart-1.4.1/smart/plugins/yumchannelsync.py 2012-10-04 11:23:09.799350924 -0500 -@@ -56,7 +56,8 @@ - - rpmroot = sysconf.get("rpm-root", "/") - ts = rpmUtils.transaction.initReadOnlyTransaction(root=rpmroot) -- ts.pushVSFlags(~(rpm._RPMVSF_NOSIGNATURES|rpm._RPMVSF_NODIGESTS)) -+ #ts.pushVSFlags(~(rpm._RPMVSF_NOSIGNATURES|rpm._RPMVSF_NODIGESTS)) -+ ts.pushVSFlags(~(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/meta/recipes-devtools/python/python-smartpm_1.4.1.bb b/meta/recipes-devtools/python/python-smartpm_1.4.1.bb deleted file mode 100644 index c75f10fbf3..0000000000 --- a/meta/recipes-devtools/python/python-smartpm_1.4.1.bb +++ /dev/null @@ -1,148 +0,0 @@ -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" -PR = "r9" -SRCNAME = "smart" - -SRC_URI = "\ - http://launchpad.net/smart/trunk/${PV}/+download/${SRCNAME}-${PV}.tar.bz2 \ - file://smartpm-rpm5-nodig.patch \ - file://smart-rpm-root.patch \ - file://smart-recommends.patch \ - file://smart-rpm-extra-macros.patch \ - file://smart-dflags.patch \ - file://smart-rpm-md-parse.patch \ - file://smart-tmpdir.patch \ - file://smart-metadata-match.patch \ - file://smart-improve-error-reporting.patch \ - file://smart-multilib-fixes.patch \ - file://smart-yaml-error.patch \ - file://smart-channelsdir.patch \ - file://smart-conflict-provider.patch \ - file://smart-flag-ignore-recommends.patch \ - file://smart-flag-exclude-packages.patch \ - file://smart-config-ignore-all-recommends.patch \ - file://smart-attempt.patch \ - file://smart-filename-NAME_MAX.patch \ - file://smart-rpm4-fixes.patch \ - file://smart-add-for-rpm-ignoresize-check.patch \ - " - -SRC_URI[md5sum] = "573ef32ba177a6b3c4bf7ef04873fcb6" -SRC_URI[sha256sum] = "b1d519ddb43d60f293b065c28870a5d9e8b591cd49e8c68caea48ace91085eba" -S = "${WORKDIR}/${SRCNAME}-${PV}" - -# 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() { - 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/meta/recipes-devtools/python/python-smmap_0.8.2.bb b/meta/recipes-devtools/python/python-smmap.inc index 64f812de00..d67e6b5412 100644 --- a/meta/recipes-devtools/python/python-smmap_0.8.2.bb +++ b/meta/recipes-devtools/python/python-smmap.inc @@ -7,14 +7,13 @@ 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] = "f5426b7626ddcf5e447253fae0396b0c" -SRC_URI[sha256sum] = "dea2955cc045ec5527da6b762f7e95a5be7f645c683b54ccce52d56b4d7e2d6f" +SRC_URI = "https://files.pythonhosted.org/packages/source/s/smmap/smmap-${PV}.tar.gz" +SRC_URI[md5sum] = "d7932d5ace206bf4ae15198cf36fb6ab" +SRC_URI[sha256sum] = "0e2b62b497bd5f0afebc002eda4d90df9d209c30ef257e8673c90a6b5c119d62" -S = "${WORKDIR}/smmap-${PV}" - -inherit setuptools +UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/smmap/" +UPSTREAM_CHECK_REGEX = "/smmap/(?P<pver>(\d+[\.\-_]*)+)" -RDEPENDS_${PN} += "python-codecs python-mmap python-lang" +S = "${WORKDIR}/smmap-${PV}" BBCLASSEXTEND = "nativesdk" diff --git a/meta/recipes-devtools/python/python-smmap_0.9.0.bb b/meta/recipes-devtools/python/python-smmap_0.9.0.bb new file mode 100644 index 0000000000..c118dd8d63 --- /dev/null +++ b/meta/recipes-devtools/python/python-smmap_0.9.0.bb @@ -0,0 +1,5 @@ +require python-smmap.inc + +inherit setuptools + +RDEPENDS_${PN} += "python-codecs python-mmap python-lang" diff --git a/meta/recipes-devtools/python/python.inc b/meta/recipes-devtools/python/python.inc index e18ab8e99a..b9ec69275a 100644 --- a/meta/recipes-devtools/python/python.inc +++ b/meta/recipes-devtools/python/python.inc @@ -5,19 +5,20 @@ 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" +LIC_FILES_CHKSUM = "file://LICENSE;md5=6b60258130e4ed10d3101517eb5b9385" SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz" -SRC_URI[md5sum] = "38d530f7efc373d64a8fb1637e3baaa7" -SRC_URI[sha256sum] = "90d27e14ea7e03570026850e2e50ba71ad20b7eb31035aada1cf3def8f8d4916" +SRC_URI[md5sum] = "53b43534153bb2a0363f08bae8b9d990" +SRC_URI[sha256sum] = "35d543986882f78261f97787fd3e06274bfa6df29fac9b4a94f73930ff98f731" -PYTHON_MAJMIN = "2.7" +# python recipe is actually python 2.x +# also, exclude pre-releases for both python 2.x and 3.x +UPSTREAM_CHECK_REGEX = "[Pp]ython-(?P<pver>2(\.\d+)+).tar" -inherit autotools +PYTHON_MAJMIN = "2.7" -PYTHONLSBOPTS = "--with-wctype-functions" -PYTHONLSBOPTS_linuxstdbase = "ac_cv_sizeof_off_t=8" +inherit autotools pkgconfig EXTRA_OECONF = "\ --with-threads \ diff --git a/meta/recipes-devtools/python/python/0001-distutils-set-the-prefix-to-be-inside-staging-direct.patch b/meta/recipes-devtools/python/python/0001-distutils-set-the-prefix-to-be-inside-staging-direct.patch new file mode 100644 index 0000000000..502f849804 --- /dev/null +++ b/meta/recipes-devtools/python/python/0001-distutils-set-the-prefix-to-be-inside-staging-direct.patch @@ -0,0 +1,51 @@ +From 4cdf2e9df13c6327fcc94d53e4953005543aef3d Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex.kanavin@gmail.com> +Date: Wed, 6 Apr 2016 17:43:02 +0300 +Subject: [PATCH 01/10] distutils: set the prefix to be inside staging + directory + +The proper prefix is inside our staging area. + +Upstream-Status: Inappropriate [embedded specific] +Signed-off-by: Michael 'Mickey' Lauer <mickey@vanille-media.de> +Signed-off-by: Phil Blundell <philb@gnu.org> +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> +--- + Lib/distutils/sysconfig.py | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py +index de7da1d..f3aacf7 100644 +--- a/Lib/distutils/sysconfig.py ++++ b/Lib/distutils/sysconfig.py +@@ -75,7 +75,7 @@ def get_python_inc(plat_specific=0, prefix=None): + 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 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None): + 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: +-- +2.8.0.rc3 + diff --git a/meta/recipes-devtools/python/python/01-use-proper-tools-for-cross-build.patch b/meta/recipes-devtools/python/python/01-use-proper-tools-for-cross-build.patch index 1257ca6557..366ce3e400 100644 --- a/meta/recipes-devtools/python/python/01-use-proper-tools-for-cross-build.patch +++ b/meta/recipes-devtools/python/python/01-use-proper-tools-for-cross-build.patch @@ -7,13 +7,13 @@ 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> +Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com> -Index: Python-2.7.9/Makefile.pre.in +Index: Python-2.7.13/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@ +--- Python-2.7.13.orig/Makefile.pre.in ++++ Python-2.7.13/Makefile.pre.in +@@ -245,6 +245,7 @@ LIBFFI_INCLUDEDIR= @LIBFFI_INCLUDEDIR@ ########################################################################## # Parser PGEN= Parser/pgen$(EXE) @@ -21,7 +21,7 @@ Index: Python-2.7.9/Makefile.pre.in PSRCS= \ Parser/acceler.c \ -@@ -445,7 +446,7 @@ $(BUILDPYTHON): Modules/python.o $(LIBRA +@@ -512,7 +513,7 @@ $(BUILDPYTHON): Modules/python.o $(LIBRA $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST) platform: $(BUILDPYTHON) pybuilddir.txt @@ -30,16 +30,16 @@ Index: Python-2.7.9/Makefile.pre.in # 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 +@@ -681,7 +682,7 @@ Modules/pwdmodule.o: $(srcdir)/Modules/p + + $(GRAMMAR_H): @GENERATED_COMMENT@ $(GRAMMAR_INPUT) $(PGEN) + @$(MKDIR_P) Include +- $(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C) ++ $(HOSTPGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C) + $(GRAMMAR_C): @GENERATED_COMMENT@ $(GRAMMAR_H) + touch $(GRAMMAR_C) + +@@ -1121,27 +1122,27 @@ libinstall: build_all $(srcdir)/Lib/$(PL $(DESTDIR)$(LIBDEST)/distutils/tests ; \ fi PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ @@ -73,11 +73,11 @@ Index: Python-2.7.9/Makefile.pre.in # Create the PLATDIR source directory, if one wasn't distributed.. $(srcdir)/Lib/$(PLATDIR): -Index: Python-2.7.9/setup.py +Index: Python-2.7.13/setup.py =================================================================== ---- Python-2.7.9.orig/setup.py -+++ Python-2.7.9/setup.py -@@ -334,6 +334,7 @@ class PyBuildExt(build_ext): +--- Python-2.7.13.orig/setup.py ++++ Python-2.7.13/setup.py +@@ -350,6 +350,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) @@ -85,7 +85,7 @@ Index: Python-2.7.9/setup.py assert not self.inplace basename, tail = os.path.splitext(ext_filename) newname = basename + "_failed" + tail -@@ -558,6 +559,9 @@ class PyBuildExt(build_ext): +@@ -574,6 +575,9 @@ class PyBuildExt(build_ext): # XXX Omitted modules: gl, pure, dl, SGI-specific modules diff --git a/meta/recipes-devtools/python/python/06-avoid_usr_lib_termcap_path_in_linking.patch b/meta/recipes-devtools/python/python/06-avoid_usr_lib_termcap_path_in_linking.patch index e452cb6ac4..435b319013 100644 --- a/meta/recipes-devtools/python/python/06-avoid_usr_lib_termcap_path_in_linking.patch +++ b/meta/recipes-devtools/python/python/06-avoid_usr_lib_termcap_path_in_linking.patch @@ -11,7 +11,7 @@ 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: Nitin A Kamble <nitin.a.kamble@intel.com> Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> diff --git a/meta/recipes-devtools/python/python/Don-t-use-getentropy-on-Linux.patch b/meta/recipes-devtools/python/python/Don-t-use-getentropy-on-Linux.patch new file mode 100644 index 0000000000..38e53778dc --- /dev/null +++ b/meta/recipes-devtools/python/python/Don-t-use-getentropy-on-Linux.patch @@ -0,0 +1,41 @@ +Upstream-Status: Backport + +Signed-off-by: Andreas Oberritter <obi@opendreambox.org> + +From 905d1b30ac7cb0e31c57cec0533825c8f170b942 Mon Sep 17 00:00:00 2001 +From: Victor Stinner <victor.stinner@gmail.com> +Date: Mon, 9 Jan 2017 11:10:41 +0100 +Subject: [PATCH] Don't use getentropy() on Linux + +Issue #29188: Support glibc 2.24 on Linux: don't use getentropy() function but +read from /dev/urandom to get random bytes, for example in os.urandom(). On +Linux, getentropy() is implemented which getrandom() is blocking mode, whereas +os.urandom() should not block. + +(cherry picked from commit 2687486756721e39164fa9f597e468c35d495227) +--- + Python/random.c | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +diff --git a/Python/random.c b/Python/random.c +index b4bc1f3..f3f5d14 100644 +--- a/Python/random.c ++++ b/Python/random.c +@@ -94,8 +94,15 @@ win32_urandom(unsigned char *buffer, Py_ssize_t size, int raise) + } + + /* Issue #25003: Don't use getentropy() on Solaris (available since +- * Solaris 11.3), it is blocking whereas os.urandom() should not block. */ +-#elif defined(HAVE_GETENTROPY) && !defined(sun) ++ Solaris 11.3), it is blocking whereas os.urandom() should not block. ++ ++ Issue #29188: Don't use getentropy() on Linux since the glibc 2.24 ++ implements it with the getrandom() syscall which can fail with ENOSYS, ++ and this error is not supported in py_getentropy() and getrandom() is called ++ with flags=0 which blocks until system urandom is initialized, which is not ++ the desired behaviour to seed the Python hash secret nor for os.urandom(): ++ see the PEP 524 which was only implemented in Python 3.6. */ ++#elif defined(HAVE_GETENTROPY) && !defined(sun) && !defined(linux) + #define PY_GETENTROPY 1 + + /* Fill buffer with size pseudo-random bytes generated by getentropy(). diff --git a/meta/recipes-devtools/python/python/add-CROSSPYTHONPATH-for-PYTHON_FOR_BUILD.patch b/meta/recipes-devtools/python/python/add-CROSSPYTHONPATH-for-PYTHON_FOR_BUILD.patch new file mode 100644 index 0000000000..a97ff6b250 --- /dev/null +++ b/meta/recipes-devtools/python/python/add-CROSSPYTHONPATH-for-PYTHON_FOR_BUILD.patch @@ -0,0 +1,28 @@ +configure.ac: add CROSSPYTHONPATH into PYTHONPATH for PYTHON_FOR_BUILD + +When building x86->x86 the system will try to execute .so and related items +from the default PYTHONPATH. This will fail if the target CPU contains +instructions that the host CPU does not have, add CROSSPYTHONPATH +into PYTHONPATH so we can prepend the list to find correct libs. + +Upstream-Status: Inappropriate [OE-Core integration specific] + +Signed-off-by: Mark Hatle <mark.hatle@windriver.com> +Signed-off-by: Jackie Huang <jackie.huang@windriver.com> +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: Python-2.7.11/configure.ac +=================================================================== +--- Python-2.7.11.orig/configure.ac ++++ Python-2.7.11/configure.ac +@@ -33,7 +33,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):$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib:$(srcdir)/Lib/plat-$(MACHDEP) '$interp + fi + elif test "$cross_compiling" = maybe; then + AC_MSG_ERROR([Cross compiling required --host=HOST-TUPLE and --build=ARCH]) diff --git a/meta/recipes-devtools/python/python/avoid_warning_about_tkinter.patch b/meta/recipes-devtools/python/python/avoid_warning_about_tkinter.patch index 208c57c822..3347321fde 100644 --- a/meta/recipes-devtools/python/python/avoid_warning_about_tkinter.patch +++ b/meta/recipes-devtools/python/python/avoid_warning_about_tkinter.patch @@ -4,6 +4,7 @@ Avoid a warning by not adding this module to missing variable. Upstream-Status: Inappropriate [distribution] +Also simply disable the tk module since its not in DEPENDS. Signed-off-by: Andrei Gherzan <andrei@gherzan.ro> Index: Python-2.7.2/setup.py @@ -23,3 +24,16 @@ Index: Python-2.7.2/setup.py return missing +diff --git Python-3.5.1.orig/setup.py Python-3.5.1/setup.py +index b4633b9..d7588c0 100644 +--- Python-3.5.1.orig/setup.py ++++ Python-3.5.1/setup.py +@@ -1536,7 +1536,7 @@ class PyBuildExt(build_ext): + self.extensions.extend(exts) + + # Call the method for detecting whether _tkinter can be compiled +- self.detect_tkinter(inc_dirs, lib_dirs) ++ # self.detect_tkinter(inc_dirs, lib_dirs) + + # tkinter module will not be avalaible as yocto + # doesn't have tk integrated (yet) diff --git a/meta/recipes-devtools/python/python/check-if-target-is-64b-not-host.patch b/meta/recipes-devtools/python/python/check-if-target-is-64b-not-host.patch index 2b62db3826..e6d6c65bbe 100644 --- a/meta/recipes-devtools/python/python/check-if-target-is-64b-not-host.patch +++ b/meta/recipes-devtools/python/python/check-if-target-is-64b-not-host.patch @@ -11,11 +11,11 @@ Signed-off-by: Andrei Gherzan <andrei@gherzan.ro> Upstream-Status: Pending -Index: Python-2.7.2/setup.py +Index: Python-2.7.11/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 @@ +--- Python-2.7.11.orig/setup.py ++++ Python-2.7.11/setup.py +@@ -35,6 +35,21 @@ COMPILED_WITH_PYDEBUG = ('--with-pydebug # This global variable is used to hold the list of modules to be disabled. disabled_module_list = [] @@ -37,16 +37,16 @@ Index: Python-2.7.2/setup.py 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 @@ +@@ -716,7 +731,7 @@ class PyBuildExt(build_ext): exts.append( Extension('audioop', ['audioop.c']) ) # Disabled on 64-bit platforms -- if sys.maxint != 9223372036854775807L: +- if sys.maxsize != 9223372036854775807L: + if not target_is_64bit_platform(): # Operations on images exts.append( Extension('imageop', ['imageop.c']) ) else: -@@ -1418,7 +1433,7 @@ +@@ -1545,7 +1560,7 @@ class PyBuildExt(build_ext): missing.append('_codecs_%s' % loc) # Dynamic loading module @@ -54,4 +54,4 @@ Index: Python-2.7.2/setup.py + 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']): + if (dl_inc is not None) and (host_platform not in ['atheos']): diff --git a/meta/recipes-devtools/python/python/fix_for_using_different_libdir.patch b/meta/recipes-devtools/python/python/fix_for_using_different_libdir.patch index e4262d9ef0..5f7309367c 100644 --- a/meta/recipes-devtools/python/python/fix_for_using_different_libdir.patch +++ b/meta/recipes-devtools/python/python/fix_for_using_different_libdir.patch @@ -4,15 +4,15 @@ 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> +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> +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> +Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com> Index: Python-2.7.9/Lib/sysconfig.py diff --git a/meta/recipes-devtools/python/python/multilib.patch b/meta/recipes-devtools/python/python/multilib.patch index 0bfa0d2cf4..50cc5911aa 100644 --- a/meta/recipes-devtools/python/python/multilib.patch +++ b/meta/recipes-devtools/python/python/multilib.patch @@ -1,11 +1,11 @@ Rebased for python-2.7.9 -Signed-Off-By: Alejandro Hernandez <alejandro.hernandez@linux.intel.com> +Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com> -Index: Python-2.7.9/configure.ac +Index: Python-2.7.13/configure.ac =================================================================== ---- Python-2.7.9.orig/configure.ac -+++ Python-2.7.9/configure.ac -@@ -736,6 +736,10 @@ SunOS*) +--- Python-2.7.13.orig/configure.ac ++++ Python-2.7.13/configure.ac +@@ -759,6 +759,10 @@ SunOS*) ;; esac @@ -16,10 +16,10 @@ Index: Python-2.7.9/configure.ac AC_SUBST(LIBRARY) AC_MSG_CHECKING(LIBRARY) -Index: Python-2.7.9/Include/pythonrun.h +Index: Python-2.7.13/Include/pythonrun.h =================================================================== ---- Python-2.7.9.orig/Include/pythonrun.h -+++ Python-2.7.9/Include/pythonrun.h +--- Python-2.7.13.orig/Include/pythonrun.h ++++ Python-2.7.13/Include/pythonrun.h @@ -108,6 +108,7 @@ PyAPI_FUNC(char *) Py_GetPath(void); /* In their own files */ PyAPI_FUNC(const char *) Py_GetVersion(void); @@ -28,10 +28,10 @@ Index: Python-2.7.9/Include/pythonrun.h 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 +Index: Python-2.7.13/Lib/distutils/command/install.py =================================================================== ---- Python-2.7.9.orig/Lib/distutils/command/install.py -+++ Python-2.7.9/Lib/distutils/command/install.py +--- Python-2.7.13.orig/Lib/distutils/command/install.py ++++ Python-2.7.13/Lib/distutils/command/install.py @@ -22,6 +22,8 @@ from site import USER_BASE from site import USER_SITE @@ -50,10 +50,10 @@ Index: Python-2.7.9/Lib/distutils/command/install.py 'headers': '$base/include/python$py_version_short/$dist_name', 'scripts': '$base/bin', 'data' : '$base', -Index: Python-2.7.9/Lib/distutils/sysconfig.py +Index: Python-2.7.13/Lib/distutils/sysconfig.py =================================================================== ---- Python-2.7.9.orig/Lib/distutils/sysconfig.py -+++ Python-2.7.9/Lib/distutils/sysconfig.py +--- Python-2.7.13.orig/Lib/distutils/sysconfig.py ++++ Python-2.7.13/Lib/distutils/sysconfig.py @@ -119,8 +119,11 @@ def get_python_lib(plat_specific=0, stan prefix = plat_specific and EXEC_PREFIX or PREFIX @@ -68,23 +68,23 @@ Index: Python-2.7.9/Lib/distutils/sysconfig.py if standard_lib: return libpython else: -Index: Python-2.7.9/Lib/pydoc.py +Index: Python-2.7.13/Lib/pydoc.py =================================================================== ---- Python-2.7.9.orig/Lib/pydoc.py -+++ Python-2.7.9/Lib/pydoc.py -@@ -383,7 +383,7 @@ class Doc: +--- Python-2.7.13.orig/Lib/pydoc.py ++++ Python-2.7.13/Lib/pydoc.py +@@ -375,7 +375,7 @@ class Doc: + docmodule = docclass = docroutine = docother = docproperty = docdata = fail - 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 + def getdocloc(self, object, +- basedir=os.path.join(sys.exec_prefix, "lib", ++ basedir=os.path.join(sys.exec_prefix, "sys.lib", + "python"+sys.version[0:3])): + """Return the location of module docs or None""" + +Index: Python-2.7.13/Lib/site.py =================================================================== ---- Python-2.7.9.orig/Lib/site.py -+++ Python-2.7.9/Lib/site.py +--- Python-2.7.13.orig/Lib/site.py ++++ Python-2.7.13/Lib/site.py @@ -288,13 +288,18 @@ def getsitepackages(): if sys.platform in ('os2emx', 'riscos'): sitepackages.append(os.path.join(prefix, "Lib", "site-packages")) @@ -104,13 +104,13 @@ Index: Python-2.7.9/Lib/site.py 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 + return sitepackages + + def addsitepackages(known_paths): +Index: Python-2.7.13/Lib/sysconfig.py =================================================================== ---- Python-2.7.9.orig/Lib/sysconfig.py -+++ Python-2.7.9/Lib/sysconfig.py +--- Python-2.7.13.orig/Lib/sysconfig.py ++++ Python-2.7.13/Lib/sysconfig.py @@ -7,10 +7,10 @@ from os.path import pardir, realpath _INSTALL_SCHEMES = { @@ -139,10 +139,10 @@ Index: Python-2.7.9/Lib/sysconfig.py 'include': '{userbase}/include/python{py_version_short}', 'scripts': '{userbase}/bin', 'data' : '{userbase}', -Index: Python-2.7.9/Lib/test/test_dl.py +Index: Python-2.7.13/Lib/test/test_dl.py =================================================================== ---- Python-2.7.9.orig/Lib/test/test_dl.py -+++ Python-2.7.9/Lib/test/test_dl.py +--- Python-2.7.13.orig/Lib/test/test_dl.py ++++ Python-2.7.13/Lib/test/test_dl.py @@ -4,10 +4,11 @@ import unittest from test.test_support import verbose, import_module @@ -157,14 +157,14 @@ Index: Python-2.7.9/Lib/test/test_dl.py ('/usr/bin/cygwin1.dll', 'getpid'), ('/usr/lib/libc.dylib', 'getpid'), ] -Index: Python-2.7.9/Lib/test/test_site.py +Index: Python-2.7.13/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) +--- Python-2.7.13.orig/Lib/test/test_site.py ++++ Python-2.7.13/Lib/test/test_site.py +@@ -235,12 +235,16 @@ class HelperFunctionsTests(unittest.Test + self.assertEqual(dirs[0], wanted) elif os.sep == '/': - # OS X non-framwework builds, Linux, FreeBSD, etc + # OS X, Linux, FreeBSD, etc - self.assertEqual(len(dirs), 2) wanted = os.path.join('xoxo', 'lib', 'python' + sys.version[:3], 'site-packages') @@ -181,10 +181,10 @@ Index: Python-2.7.9/Lib/test/test_site.py else: # other platforms self.assertEqual(len(dirs), 2) -Index: Python-2.7.9/Lib/trace.py +Index: Python-2.7.13/Lib/trace.py =================================================================== ---- Python-2.7.9.orig/Lib/trace.py -+++ Python-2.7.9/Lib/trace.py +--- Python-2.7.13.orig/Lib/trace.py ++++ Python-2.7.13/Lib/trace.py @@ -754,10 +754,10 @@ def main(argv=None): # should I also call expanduser? (after all, could use $HOME) @@ -198,11 +198,11 @@ Index: Python-2.7.9/Lib/trace.py "python" + sys.version[:3])) s = os.path.normpath(s) ignore_dirs.append(s) -Index: Python-2.7.9/Makefile.pre.in +Index: Python-2.7.13/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 +--- Python-2.7.13.orig/Makefile.pre.in ++++ Python-2.7.13/Makefile.pre.in +@@ -92,6 +92,7 @@ PY_CFLAGS= $(CFLAGS) $(CPPFLAGS) $(CFLAG # Machine-dependent subdirectories MACHDEP= @MACHDEP@ @@ -210,7 +210,7 @@ Index: Python-2.7.9/Makefile.pre.in # Multiarch directory (may be empty) MULTIARCH= @MULTIARCH@ -@@ -106,7 +107,7 @@ LIBDIR= @libdir@ +@@ -111,7 +112,7 @@ LIBDIR= @libdir@ MANDIR= @mandir@ INCLUDEDIR= @includedir@ CONFINCLUDEDIR= $(exec_prefix)/include @@ -219,7 +219,7 @@ Index: Python-2.7.9/Makefile.pre.in # Detailed destination directories BINLIBDEST= $(LIBDIR)/python$(VERSION) -@@ -598,6 +599,7 @@ Modules/getpath.o: $(srcdir)/Modules/get +@@ -669,6 +670,7 @@ Modules/getpath.o: $(srcdir)/Modules/get -DEXEC_PREFIX='"$(exec_prefix)"' \ -DVERSION='"$(VERSION)"' \ -DVPATH='"$(VPATH)"' \ @@ -227,7 +227,7 @@ Index: Python-2.7.9/Makefile.pre.in -o $@ $(srcdir)/Modules/getpath.c Modules/python.o: $(srcdir)/Modules/python.c -@@ -640,7 +642,7 @@ $(AST_C): $(AST_ASDL) $(ASDLGEN_FILES) +@@ -709,7 +711,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 @@ -236,25 +236,25 @@ Index: Python-2.7.9/Makefile.pre.in 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 +Index: Python-2.7.13/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 +--- Python-2.7.13.orig/Modules/getpath.c ++++ Python-2.7.13/Modules/getpath.c +@@ -100,6 +100,13 @@ + #error "PREFIX, EXEC_PREFIX, VERSION, and VPATH must be constant defined" #endif +#define LIB_PYTHON LIB "/python" VERSION + - #ifndef PYTHONPATH --#define PYTHONPATH PREFIX "/lib/python" VERSION ":" \ -- EXEC_PREFIX "/lib/python" VERSION "/lib-dynload" ++#ifndef PYTHONPATH +#define PYTHONPATH PREFIX "/" LIB_PYTHON ":" \ + EXEC_PREFIX "/" LIB_PYTHON "/lib-dynload" - #endif - ++#endif ++ #ifndef LANDMARK -@@ -129,7 +131,7 @@ static char prefix[MAXPATHLEN+1]; + #define LANDMARK "os.py" + #endif +@@ -108,7 +115,7 @@ static char prefix[MAXPATHLEN+1]; static char exec_prefix[MAXPATHLEN+1]; static char progpath[MAXPATHLEN+1]; static char *module_search_path = NULL; @@ -263,10 +263,10 @@ Index: Python-2.7.9/Modules/getpath.c static void reduce(char *dir) -Index: Python-2.7.9/Python/getplatform.c +Index: Python-2.7.13/Python/getplatform.c =================================================================== ---- Python-2.7.9.orig/Python/getplatform.c -+++ Python-2.7.9/Python/getplatform.c +--- Python-2.7.13.orig/Python/getplatform.c ++++ Python-2.7.13/Python/getplatform.c @@ -10,3 +10,13 @@ Py_GetPlatform(void) { return PLATFORM; @@ -281,10 +281,10 @@ Index: Python-2.7.9/Python/getplatform.c +{ + return LIB; +} -Index: Python-2.7.9/Python/sysmodule.c +Index: Python-2.7.13/Python/sysmodule.c =================================================================== ---- Python-2.7.9.orig/Python/sysmodule.c -+++ Python-2.7.9/Python/sysmodule.c +--- Python-2.7.13.orig/Python/sysmodule.c ++++ Python-2.7.13/Python/sysmodule.c @@ -1437,6 +1437,8 @@ _PySys_Init(void) PyString_FromString(Py_GetCopyright())); SET_SYS_FROM_STRING("platform", diff --git a/meta/recipes-devtools/python/python/setuptweaks.patch b/meta/recipes-devtools/python/python/setuptweaks.patch index c34ef160d3..3a91b1916c 100644 --- a/meta/recipes-devtools/python/python/setuptweaks.patch +++ b/meta/recipes-devtools/python/python/setuptweaks.patch @@ -1,7 +1,7 @@ This patch removes various ways native system options can pass into the python compilation and somehow break C modules. -Upstream-Status: Configuration [OE Specific] +Upstream-Status: Inappropriate [OE Specific] RP 2012/04/23 diff --git a/meta/recipes-devtools/python/python3-async_0.6.2.bb b/meta/recipes-devtools/python/python3-async_0.6.2.bb new file mode 100644 index 0000000000..54a30f5498 --- /dev/null +++ b/meta/recipes-devtools/python/python3-async_0.6.2.bb @@ -0,0 +1,6 @@ +require python-async.inc + +inherit setuptools3 + +RDEPENDS_${PN} += "python3-threading python3-lang" + diff --git a/meta/recipes-devtools/python/python-dbus_1.2.0.bb b/meta/recipes-devtools/python/python3-dbus_1.2.4.bb index b314dce1c7..de5a01c7f2 100644 --- a/meta/recipes-devtools/python/python-dbus_1.2.0.bb +++ b/meta/recipes-devtools/python/python3-dbus_1.2.4.bb @@ -3,27 +3,21 @@ 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" +DEPENDS = "expat dbus dbus-glib virtual/libintl" SRC_URI = "http://dbus.freedesktop.org/releases/dbus-python/dbus-python-${PV}.tar.gz \ " -SRC_URI[md5sum] = "b09cd2d1a057cc432ce944de3fc06bf7" -SRC_URI[sha256sum] = "e12c6c8b2bf3a9302f75166952cbe41d6b38c3441bbc6767dbd498942316c6df" +SRC_URI[md5sum] = "7372a588c83a7232b4e08159bfd48fe5" +SRC_URI[sha256sum] = "e2f1d6871f74fba23652e51d10873e54f71adab0525833c19bad9e99b1b2f9cc" S = "${WORKDIR}/dbus-python-${PV}" -inherit distutils-base autotools pkgconfig +inherit distutils3-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" +PACKAGECONFIG[docs] = "--enable-html-docs,--disable-html-docs,python3-docutils-native" +PACKAGECONFIG[api-docs] = "--enable-api-docs,--disable-api-docs,python3-docutils-native python3-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" +RDEPENDS_${PN} = "python3-io python3-logging python3-stringold python3-threading python3-xml" FILES_${PN}-dev += "${libdir}/pkgconfig" diff --git a/meta/recipes-devtools/python/python3-distribute_0.6.32.bb b/meta/recipes-devtools/python/python3-distribute_0.6.32.bb deleted file mode 100644 index 0ef3a8762f..0000000000 --- a/meta/recipes-devtools/python/python3-distribute_0.6.32.bb +++ /dev/null @@ -1,51 +0,0 @@ -SUMMARY = "Download, build, install, upgrade, and uninstall Python packages" -HOMEPAGE = "http://packages.python.org/distribute" -SECTION = "devel/python" -LICENSE = "PSF" -LIC_FILES_CHKSUM = "file://setup.py;beginline=234;endline=234;md5=26f6b02022b737126d3c88838782dddb" - -SRCNAME = "distribute" -PR = "ml5" -DEPENDS += "python3" -DEPENDS_class-native += "python3-native" - -SRC_URI = " \ - http://pypi.python.org/packages/source/d/${SRCNAME}/${SRCNAME}-${PV}.tar.gz \ -" -SRC_URI[md5sum] = "acb7a2da81e3612bfb1608abe4f0e568" -SRC_URI[sha256sum] = "8970cd1e148b5d1fea9430584aea66c45ea22d80e0933393ec49ebc388f718df" - -S = "${WORKDIR}/${SRCNAME}-${PV}" - -# http://python-distribute.org/distribute_setup.py - -# force the selection of python3 -#PYTHON_BASEVERSION = "3.3" -#PYTHON_MAJMIN = "3.3" - -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 - sed -i -e '1s|^#!.*python|#!/usr/bin/env python3|' \ - ${D}${PYTHON_SITEPACKAGES_DIR}/distribute-${PV}-py${PYTHON_BASEVERSION}.egg/setuptools/tests/test_resources.py -} - -RDEPENDS_${PN} = "\ - python3-distutils \ - python3-compression \ -" - -RPROVIDES_${PN} += "python3-setuptools" - -BBCLASSEXTEND = "native" diff --git a/meta/recipes-devtools/python/python-docutils_0.12.bb b/meta/recipes-devtools/python/python3-docutils_0.13.1.bb index 8cda88d277..e36388c6fd 100644 --- a/meta/recipes-devtools/python/python-docutils_0.12.bb +++ b/meta/recipes-devtools/python/python3-docutils_0.13.1.bb @@ -2,17 +2,17 @@ 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" +LIC_FILES_CHKSUM = "file://COPYING.txt;md5=7a4646907ab9083c826280b19e103106" -DEPENDS = "python" +DEPENDS = "python3" SRC_URI = "${SOURCEFORGE_MIRROR}/docutils/docutils-${PV}.tar.gz" -SRC_URI[md5sum] = "4622263b62c5c771c03502afa3157768" -SRC_URI[sha256sum] = "c7db717810ab6965f66c8cf0398a98c9d8df982da39b4cd7f162911eb89596fa" +SRC_URI[md5sum] = "ea4a893c633c788be9b8078b6b305d53" +SRC_URI[sha256sum] = "718c0f5fb677be0f34b781e04241c4067cbd9327b66bdd8e763201130f5175be" S = "${WORKDIR}/docutils-${PV}" -inherit distutils +inherit distutils3 BBCLASSEXTEND = "native" diff --git a/meta/recipes-devtools/python/python3-git_2.1.1.bb b/meta/recipes-devtools/python/python3-git_2.1.1.bb new file mode 100644 index 0000000000..7a2d452a24 --- /dev/null +++ b/meta/recipes-devtools/python/python3-git_2.1.1.bb @@ -0,0 +1,7 @@ +require python-git.inc + +DEPENDS = "python3-gitdb" + +inherit setuptools3 + +RDEPENDS_${PN} += "python3-gitdb python3-lang python3-io python3-shell python3-math python3-re python3-subprocess python3-stringold python3-unixadmin python3-enum python3-logging python3-datetime python3-netclient python3-unittest python3-argparse" diff --git a/meta/recipes-devtools/python/python3-gitdb_0.6.4.bb b/meta/recipes-devtools/python/python3-gitdb_0.6.4.bb new file mode 100644 index 0000000000..80d9d469af --- /dev/null +++ b/meta/recipes-devtools/python/python3-gitdb_0.6.4.bb @@ -0,0 +1,7 @@ +require python-gitdb.inc + +DEPENDS = "python3-async python3-smmap" + +inherit distutils3 + +RDEPENDS_${PN} += "python3-smmap python3-async python3-mmap python3-lang python3-io python3-shell python3-crypt python3-compression" diff --git a/meta/recipes-devtools/python/python3-iniparse/0001-Add-python-3-compatibility.patch b/meta/recipes-devtools/python/python3-iniparse/0001-Add-python-3-compatibility.patch new file mode 100644 index 0000000000..44090a20d0 --- /dev/null +++ b/meta/recipes-devtools/python/python3-iniparse/0001-Add-python-3-compatibility.patch @@ -0,0 +1,552 @@ +From 8a98e4d44a5e59439a4b6bd95368cc362412c995 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex.kanavin@gmail.com> +Date: Fri, 24 Mar 2017 18:06:08 +0200 +Subject: [PATCH] Add python 3 compatibility. + +Taken from +http://pkgs.fedoraproject.org/cgit/rpms/python-iniparse.git/tree/python-iniparse-python3-compat.patch + +Upstream-Status: Inappropriate [upstream is defunct] +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> +--- + iniparse/__init__.py | 20 ++++++++++---------- + iniparse/compat.py | 30 ++++++++++++++++-------------- + iniparse/config.py | 16 ++++++++-------- + iniparse/configparser.py | 7 +++++++ + iniparse/ini.py | 20 ++++++++++++-------- + iniparse/utils.py | 4 ++-- + tests/__init__.py | 14 +++++++------- + tests/test_compat.py | 23 +++++++++++++++-------- + tests/test_fuzz.py | 18 +++++++++--------- + tests/test_ini.py | 8 ++++---- + tests/test_misc.py | 4 ++-- + tests/test_tidy.py | 2 +- + tests/test_unicode.py | 10 +++++----- + 13 files changed, 98 insertions(+), 78 deletions(-) + create mode 100644 iniparse/configparser.py + +diff --git a/iniparse/__init__.py b/iniparse/__init__.py +index 8de756f..7193f92 100644 +--- a/iniparse/__init__.py ++++ b/iniparse/__init__.py +@@ -3,17 +3,17 @@ + # Copyright (c) 2007 Tim Lauridsen <tla@rasmil.dk> + # All Rights Reserved. See LICENSE-PSF & LICENSE for details. + +-from ini import INIConfig, change_comment_syntax +-from config import BasicConfig, ConfigNamespace +-from compat import RawConfigParser, ConfigParser, SafeConfigParser +-from utils import tidy ++from .ini import INIConfig, change_comment_syntax ++from .config import BasicConfig, ConfigNamespace ++from .compat import RawConfigParser, ConfigParser, SafeConfigParser ++from .utils import tidy + +-from ConfigParser import DuplicateSectionError, \ +- NoSectionError, NoOptionError, \ +- InterpolationMissingOptionError, \ +- InterpolationDepthError, \ +- InterpolationSyntaxError, \ +- DEFAULTSECT, MAX_INTERPOLATION_DEPTH ++from .configparser import DuplicateSectionError, \ ++ NoSectionError, NoOptionError, \ ++ InterpolationMissingOptionError, \ ++ InterpolationDepthError, \ ++ InterpolationSyntaxError, \ ++ DEFAULTSECT, MAX_INTERPOLATION_DEPTH + + __all__ = [ + 'BasicConfig', 'ConfigNamespace', +diff --git a/iniparse/compat.py b/iniparse/compat.py +index db89ed8..f95c25c 100644 +--- a/iniparse/compat.py ++++ b/iniparse/compat.py +@@ -12,19 +12,21 @@ The underlying INIConfig object can be accessed as cfg.data + """ + + import re +-from ConfigParser import DuplicateSectionError, \ +- NoSectionError, NoOptionError, \ +- InterpolationMissingOptionError, \ +- InterpolationDepthError, \ +- InterpolationSyntaxError, \ +- DEFAULTSECT, MAX_INTERPOLATION_DEPTH ++from .configparser import DuplicateSectionError, \ ++ NoSectionError, NoOptionError, \ ++ InterpolationMissingOptionError, \ ++ InterpolationDepthError, \ ++ InterpolationSyntaxError, \ ++ DEFAULTSECT, MAX_INTERPOLATION_DEPTH + + # These are imported only for compatiability. + # The code below does not reference them directly. +-from ConfigParser import Error, InterpolationError, \ +- MissingSectionHeaderError, ParsingError ++from .configparser import Error, InterpolationError, \ ++ MissingSectionHeaderError, ParsingError + +-import ini ++import six ++ ++from . import ini + + class RawConfigParser(object): + def __init__(self, defaults=None, dict_type=dict): +@@ -56,7 +58,7 @@ class RawConfigParser(object): + # The default section is the only one that gets the case-insensitive + # treatment - so it is special-cased here. + if section.lower() == "default": +- raise ValueError, 'Invalid section name: %s' % section ++ raise ValueError('Invalid section name: %s' % section) + + if self.has_section(section): + raise DuplicateSectionError(section) +@@ -88,7 +90,7 @@ class RawConfigParser(object): + filename may also be given. + """ + files_read = [] +- if isinstance(filenames, basestring): ++ if isinstance(filenames, six.string_types): + filenames = [filenames] + for filename in filenames: + try: +@@ -143,7 +145,7 @@ class RawConfigParser(object): + def getboolean(self, section, option): + v = self.get(section, option) + if v.lower() not in self._boolean_states: +- raise ValueError, 'Not a boolean: %s' % v ++ raise ValueError('Not a boolean: %s' % v) + return self._boolean_states[v.lower()] + + def has_option(self, section, option): +@@ -234,7 +236,7 @@ class ConfigParser(RawConfigParser): + if "%(" in value: + try: + value = value % vars +- except KeyError, e: ++ except KeyError as e: + raise InterpolationMissingOptionError( + option, section, rawval, e.args[0]) + else: +@@ -283,7 +285,7 @@ class SafeConfigParser(ConfigParser): + _badpercent_re = re.compile(r"%[^%]|%$") + + def set(self, section, option, value): +- if not isinstance(value, basestring): ++ if not isinstance(value, six.string_types): + raise TypeError("option values must be strings") + # check for bad percent signs: + # first, replace all "good" interpolations +diff --git a/iniparse/config.py b/iniparse/config.py +index 5cfa2ea..3b28549 100644 +--- a/iniparse/config.py ++++ b/iniparse/config.py +@@ -143,7 +143,7 @@ class BasicConfig(ConfigNamespace): + + >>> n.aaa = 42 + >>> del n.x +- >>> print n ++ >>> print(n) + aaa = 42 + name.first = paramjit + name.last = oberoi +@@ -152,7 +152,7 @@ class BasicConfig(ConfigNamespace): + + >>> isinstance(n.name, ConfigNamespace) + True +- >>> print n.name ++ >>> print(n.name) + first = paramjit + last = oberoi + >>> sorted(list(n.name)) +@@ -160,7 +160,7 @@ class BasicConfig(ConfigNamespace): + + Finally, values can be read from a file as follows: + +- >>> from StringIO import StringIO ++ >>> from six import StringIO + >>> sio = StringIO(''' + ... # comment + ... ui.height = 100 +@@ -171,7 +171,7 @@ class BasicConfig(ConfigNamespace): + ... ''') + >>> n = BasicConfig() + >>> n._readfp(sio) +- >>> print n ++ >>> print(n) + complexity = medium + data.secret.password = goodness=gracious me + have_python +@@ -199,7 +199,7 @@ class BasicConfig(ConfigNamespace): + + def __str__(self, prefix=''): + lines = [] +- keys = self._data.keys() ++ keys = list(self._data.keys()) + keys.sort() + for name in keys: + value = self._data[name] +@@ -258,7 +258,7 @@ def update_config(target, source): + >>> n.ui.display_clock = True + >>> n.ui.display_qlength = True + >>> n.ui.width = 150 +- >>> print n ++ >>> print(n) + playlist.expand_playlist = True + ui.display_clock = True + ui.display_qlength = True +@@ -267,7 +267,7 @@ def update_config(target, source): + >>> from iniparse import ini + >>> i = ini.INIConfig() + >>> update_config(i, n) +- >>> print i ++ >>> print(i) + [playlist] + expand_playlist = True + <BLANKLINE> +@@ -277,7 +277,7 @@ def update_config(target, source): + width = 150 + + """ +- for name in source: ++ for name in sorted(source): + value = source[name] + if isinstance(value, ConfigNamespace): + if name in target: +diff --git a/iniparse/configparser.py b/iniparse/configparser.py +new file mode 100644 +index 0000000..c543d50 +--- /dev/null ++++ b/iniparse/configparser.py +@@ -0,0 +1,7 @@ ++try: ++ from ConfigParser import * ++ # not all objects get imported with __all__ ++ from ConfigParser import Error, InterpolationMissingOptionError ++except ImportError: ++ from configparser import * ++ from configparser import Error, InterpolationMissingOptionError +diff --git a/iniparse/ini.py b/iniparse/ini.py +index 408354d..052d9e9 100644 +--- a/iniparse/ini.py ++++ b/iniparse/ini.py +@@ -7,7 +7,7 @@ + + Example: + +- >>> from StringIO import StringIO ++ >>> from six import StringIO + >>> sio = StringIO('''# configure foo-application + ... [foo] + ... bar1 = qualia +@@ -16,14 +16,14 @@ Example: + ... special = 1''') + + >>> cfg = INIConfig(sio) +- >>> print cfg.foo.bar1 ++ >>> print(cfg.foo.bar1) + qualia +- >>> print cfg['foo-ext'].special ++ >>> print(cfg['foo-ext'].special) + 1 + >>> cfg.foo.newopt = 'hi!' + >>> cfg.baz.enabled = 0 + +- >>> print cfg ++ >>> print(cfg) + # configure foo-application + [foo] + bar1 = qualia +@@ -42,9 +42,11 @@ Example: + # Backward-compatiable with ConfigParser + + import re +-from ConfigParser import DEFAULTSECT, ParsingError, MissingSectionHeaderError ++from .configparser import DEFAULTSECT, ParsingError, MissingSectionHeaderError + +-import config ++import six ++ ++from . import config + + class LineType(object): + line = None +@@ -278,6 +280,8 @@ class LineContainer(object): + value = property(get_value, set_value) + + def __str__(self): ++ for c in self.contents: ++ pass#print(c.__str__()) + s = [x.__str__() for x in self.contents] + return '\n'.join(s) + +@@ -465,7 +469,7 @@ class INIConfig(config.ConfigNamespace): + self._sections = {} + if defaults is None: defaults = {} + self._defaults = INISection(LineContainer(), optionxformsource=self) +- for name, value in defaults.iteritems(): ++ for name, value in defaults.items(): + self._defaults[name] = value + if fp is not None: + self._readfp(fp) +@@ -551,7 +555,7 @@ class INIConfig(config.ConfigNamespace): + + for line in readline_iterator(fp): + # Check for BOM on first line +- if linecount == 0 and isinstance(line, unicode): ++ if linecount == 0 and isinstance(line, six.text_type): + if line[0] == u'\ufeff': + line = line[1:] + self._bom = True +diff --git a/iniparse/utils.py b/iniparse/utils.py +index 829fc28..f8b773a 100644 +--- a/iniparse/utils.py ++++ b/iniparse/utils.py +@@ -1,5 +1,5 @@ +-import compat +-from ini import LineContainer, EmptyLine ++from . import compat ++from .ini import LineContainer, EmptyLine + + def tidy(cfg): + """Clean up blank lines. +diff --git a/tests/__init__.py b/tests/__init__.py +index f1fa321..88689fb 100644 +--- a/tests/__init__.py ++++ b/tests/__init__.py +@@ -1,12 +1,12 @@ + import unittest, doctest + +-import test_ini +-import test_misc +-import test_fuzz +-import test_compat +-import test_unicode +-import test_tidy +-import test_multiprocessing ++from . import test_ini ++from . import test_misc ++from . import test_fuzz ++from . import test_compat ++from . import test_unicode ++from . import test_tidy ++from . import test_multiprocessing + from iniparse import config + from iniparse import ini + +diff --git a/tests/test_compat.py b/tests/test_compat.py +index b8da3d5..b6dfb5c 100644 +--- a/tests/test_compat.py ++++ b/tests/test_compat.py +@@ -1,9 +1,16 @@ + from iniparse import compat as ConfigParser +-import StringIO ++from six import StringIO ++try: ++ import UserDict ++except ImportError: ++ import collections as UserDict + import unittest +-import UserDict + +-from test import test_support ++import sys ++if sys.version_info[0] < 3: ++ from test import test_support ++else: ++ from test import support as test_support + + class SortedDict(UserDict.UserDict): + def items(self): +@@ -35,7 +42,7 @@ class TestCaseBase(unittest.TestCase): + + def fromstring(self, string, defaults=None): + cf = self.newconfig(defaults) +- sio = StringIO.StringIO(string) ++ sio = StringIO(string) + cf.readfp(sio) + return cf + +@@ -161,7 +168,7 @@ class TestCaseBase(unittest.TestCase): + "No Section!\n") + + def parse_error(self, exc, src): +- sio = StringIO.StringIO(src) ++ sio = StringIO(src) + self.assertRaises(exc, self.cf.readfp, sio) + + def test_query_errors(self): +@@ -181,7 +188,7 @@ class TestCaseBase(unittest.TestCase): + def get_error(self, exc, section, option): + try: + self.cf.get(section, option) +- except exc, e: ++ except exc as e: + return e + else: + self.fail("expected exception type %s.%s" +@@ -227,7 +234,7 @@ class TestCaseBase(unittest.TestCase): + "foo: another very\n" + " long line" + ) +- output = StringIO.StringIO() ++ output = StringIO() + cf.write(output) + self.assertEqual( + output.getvalue(), +@@ -465,7 +472,7 @@ class SortedTestCase(RawConfigParserTestCase): + "o1=4\n" + "[a]\n" + "k=v\n") +- output = StringIO.StringIO() ++ output = StringIO() + self.cf.write(output) + self.assertEquals(output.getvalue(), + "[a]\n" +diff --git a/tests/test_fuzz.py b/tests/test_fuzz.py +index 5420dcc..b219500 100644 +--- a/tests/test_fuzz.py ++++ b/tests/test_fuzz.py +@@ -1,9 +1,10 @@ + import re + import os + import random ++import sys + import unittest +-import ConfigParser +-from StringIO import StringIO ++from six import StringIO ++from six.moves import configparser + from iniparse import compat, ini, tidy + + # TODO: +@@ -96,24 +97,25 @@ class test_fuzz(unittest.TestCase): + s = '\n'.join(good_lines) + cc = compat.RawConfigParser() + cc.readfp(StringIO(s)) +- cc_py = ConfigParser.RawConfigParser() ++ cc_py = configparser.RawConfigParser() + cc_py.readfp(StringIO(s)) + # compare the two configparsers + self.assertEqualConfig(cc_py, cc) + # check that tidy does not change semantics + tidy(cc) +- cc_tidy = ConfigParser.RawConfigParser() ++ cc_tidy = configparser.RawConfigParser() + cc_tidy.readfp(StringIO(str(cc.data))) + self.assertEqualConfig(cc_py, cc_tidy) + except AssertionError: + fname = 'fuzz-test-iter-%d.ini' % fuzz_iter +- print 'Fuzz test failed at iteration', fuzz_iter +- print 'Writing out failing INI file as', fname ++ print('Fuzz test failed at iteration', fuzz_iter) ++ print('Writing out failing INI file as', fname) + f = open(fname, 'w') + f.write(s) + f.close() + raise + ++ @unittest.skipIf(sys.version_info[0] > 2, 'http://code.google.com/p/iniparse/issues/detail?id=22#c9') + def assertEqualConfig(self, c1, c2): + self.assertEqualSorted(c1.sections(), c2.sections()) + self.assertEqualSorted(c1.defaults().items(), c2.defaults().items()) +@@ -123,9 +125,7 @@ class test_fuzz(unittest.TestCase): + self.assertEqual(c1.get(sec, opt), c2.get(sec, opt)) + + def assertEqualSorted(self, l1, l2): +- l1.sort() +- l2.sort() +- self.assertEqual(l1, l2) ++ self.assertEqual(sorted(l1), sorted(l2)) + + class suite(unittest.TestSuite): + def __init__(self): +diff --git a/tests/test_ini.py b/tests/test_ini.py +index 6a76edb..07d4f4e 100644 +--- a/tests/test_ini.py ++++ b/tests/test_ini.py +@@ -1,5 +1,5 @@ + import unittest +-from StringIO import StringIO ++from six import StringIO + + from iniparse import ini + from iniparse import compat +@@ -196,13 +196,13 @@ but = also me + self.assertEqual(p._data.find('section2').find('just').value, 'kidding') + + itr = p._data.finditer('section1') +- v = itr.next() ++ v = next(itr) + self.assertEqual(v.find('help').value, 'yourself') + self.assertEqual(v.find('but').value, 'also me') +- v = itr.next() ++ v = next(itr) + self.assertEqual(v.find('help').value, 'me') + self.assertEqual(v.find('I\'m').value, 'desperate') +- self.assertRaises(StopIteration, itr.next) ++ self.assertRaises(StopIteration, next, itr) + + self.assertRaises(KeyError, p._data.find, 'section') + self.assertRaises(KeyError, p._data.find('section2').find, 'ahem') +diff --git a/tests/test_misc.py b/tests/test_misc.py +index 31cf4da..96ef035 100644 +--- a/tests/test_misc.py ++++ b/tests/test_misc.py +@@ -1,9 +1,9 @@ + import re + import unittest + import pickle +-import ConfigParser ++from six.moves import configparser ++from six import StringIO + from textwrap import dedent +-from StringIO import StringIO + from iniparse import compat, ini + + class CaseSensitiveConfigParser(compat.ConfigParser): +diff --git a/tests/test_tidy.py b/tests/test_tidy.py +index 7304747..26b6cde 100644 +--- a/tests/test_tidy.py ++++ b/tests/test_tidy.py +@@ -1,6 +1,6 @@ + import unittest + from textwrap import dedent +-from StringIO import StringIO ++from six import StringIO + + from iniparse import tidy,INIConfig + from iniparse.ini import EmptyLine +diff --git a/tests/test_unicode.py b/tests/test_unicode.py +index a56fcab..14d4fbd 100644 +--- a/tests/test_unicode.py ++++ b/tests/test_unicode.py +@@ -1,5 +1,5 @@ + import unittest +-from StringIO import StringIO ++import six + from iniparse import compat, ini + + class test_unicode(unittest.TestCase): +@@ -17,14 +17,14 @@ baz = Marc-Andr\202 + """ + + def basic_tests(self, s, strable): +- f = StringIO(s) ++ f = six.StringIO(s) + i = ini.INIConfig(f) +- self.assertEqual(unicode(i), s) +- self.assertEqual(type(i.foo.bar), unicode) ++ self.assertEqual(six.text_type(i), s) ++ self.assertEqual(type(i.foo.bar), six.text_type) + if strable: + self.assertEqual(str(i), str(s)) + else: +- self.assertRaises(UnicodeEncodeError, lambda: str(i)) ++ self.assertRaises(UnicodeEncodeError, lambda: six.text_type(i).encode('ascii')) + return i + + def test_ascii(self): +-- +2.11.0 + diff --git a/meta/recipes-devtools/python/python3-iniparse_0.4.bb b/meta/recipes-devtools/python/python3-iniparse_0.4.bb new file mode 100644 index 0000000000..f51ce647c9 --- /dev/null +++ b/meta/recipes-devtools/python/python3-iniparse_0.4.bb @@ -0,0 +1,20 @@ +SUMMARY = "Accessing and Modifying INI files" +HOMEPAGE = "https://pypi.python.org/pypi/iniparse/" +LICENSE = "MIT & PSF" +LIC_FILES_CHKSUM = "file://LICENSE-PSF;md5=1c78a5bb3584b353496d5f6f34edb4b2 \ + file://LICENSE;md5=52f28065af11d69382693b45b5a8eb54" + +SRC_URI = "https://files.pythonhosted.org/packages/source/i/iniparse/iniparse-${PV}.tar.gz \ + file://0001-Add-python-3-compatibility.patch " +SRC_URI[md5sum] = "5e573e9e9733d97623881ce9bbe5eca6" +SRC_URI[sha256sum] = "abc1ee12d2cfb2506109072d6c21e40b6c75a3fe90a9c924327d80bc0d99c054" +UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/iniparse/" + +inherit distutils3 + +RDEPENDS_${PN} += "python3-core python3-six" +DEPENDS += "python3-six" + +BBCLASSEXTEND = "native nativesdk" + +S = "${WORKDIR}/iniparse-${PV}" diff --git a/meta/recipes-devtools/python/python3-mako_1.0.6.bb b/meta/recipes-devtools/python/python3-mako_1.0.6.bb new file mode 100644 index 0000000000..2b50ffd08a --- /dev/null +++ b/meta/recipes-devtools/python/python3-mako_1.0.6.bb @@ -0,0 +1,11 @@ +require python-mako.inc + +inherit setuptools3 + +RDEPENDS_${PN} = "python3-threading \ + python3-netclient \ + python3-html \ +" +RDEPENDS_${PN}_class-native = "" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-devtools/python/python3-native_3.3.3.bb b/meta/recipes-devtools/python/python3-native_3.5.2.bb index 73ce0952bd..edcf2244f5 100644 --- a/meta/recipes-devtools/python/python3-native_3.3.3.bb +++ b/meta/recipes-devtools/python/python3-native_3.5.2.bb @@ -1,39 +1,38 @@ require recipes-devtools/python/python.inc PR = "${INC_PR}.0" -PYTHON_MAJMIN = "3.3" +PYTHON_MAJMIN = "3.5" DISTRO_SRC_URI ?= "file://sitecustomize.py" DISTRO_SRC_URI_linuxstdbase = "" -SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.bz2 \ +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://06-ctypes-libffi-fix-configure.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://fix-ast.h-dependency.patch \ -file://makerace.patch \ ${DISTRO_SRC_URI} \ -file://python3-fix-build-error-with-Readline-6.3.patch \ file://sysconfig.py-add-_PYTHON_PROJECT_SRC.patch \ file://setup.py-check-cross_compiling-when-get-FLAGS.patch \ +file://0001-Do-not-use-the-shell-version-of-python-config-that-w.patch \ " -SRC_URI[md5sum] = "f3ebe34d4d8695bf889279b54673e10c" -SRC_URI[sha256sum] = "e526e9b612f623888364d30cc9f3dfc34dcef39065c713bdbcddf47df84d8dcb" -LIC_FILES_CHKSUM = "file://LICENSE;md5=4eaea08eaaf6875189b0c49f26fa2005" +SRC_URI[md5sum] = "8906efbacfcdc7c3c9198aeefafd159e" +SRC_URI[sha256sum] = "0010f56100b9b74259ebcd5d4b295a32324b58b517403a10d1a2aa7cb22bca40" + +LIC_FILES_CHKSUM = "file://LICENSE;md5=6b60258130e4ed10d3101517eb5b9385" + +# exclude pre-releases for both python 2.x and 3.x +UPSTREAM_CHECK_REGEX = "[Pp]ython-(?P<pver>\d+(\.\d+)+).tar" S = "${WORKDIR}/Python-${PV}" @@ -42,13 +41,11 @@ DEPENDS = "openssl-native bzip2-replacement-native zlib-native readline-native s inherit native -RPROVIDES += "python3-distutils-native python3-compression-native python3-textutils-native python3-core-native" +require python-native-${PYTHON_MAJMIN}-manifest.inc -EXTRA_OECONF_append = " --bindir=${bindir}/${PN}" +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} \ @@ -59,8 +56,8 @@ EXTRA_OEMAKE = '\ # No ctypes option for python 3 PYTHONLSBOPTS = "" -do_configure_prepend() { - autoreconf --verbose --install --force --exclude=autopoint Modules/_ctypes/libffi || bbnote "_ctypes failed to autoreconf" +do_configure_append() { + autoreconf --verbose --install --force --exclude=autopoint ../Python-${PV}/Modules/_ctypes/libffi } do_install() { @@ -76,4 +73,7 @@ do_install() { for PYTHSCRIPT in `grep -rIl ${bindir}/${PN}/python ${D}${bindir}/${PN}`; do sed -i -e '1s|^#!.*|#!/usr/bin/env python3|' $PYTHSCRIPT done + + # Tests are large and we don't need them in the native sysroot + rm ${D}${libdir}/python${PYTHON_MAJMIN}/test -rf } diff --git a/meta/recipes-devtools/python/python3-nose_1.3.7.bb b/meta/recipes-devtools/python/python3-nose_1.3.7.bb new file mode 100644 index 0000000000..99bba4403f --- /dev/null +++ b/meta/recipes-devtools/python/python3-nose_1.3.7.bb @@ -0,0 +1,24 @@ +SUMMARY = "Extends Python unittest to make testing easier" +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 = "https://files.pythonhosted.org/packages/source/n/nose/nose-${PV}.tar.gz" + +SRC_URI[md5sum] = "4d3ad0ff07b61373d2cefc89c5d0b20b" +SRC_URI[sha256sum] = "f1bffef9cbc82628f6e7d7b40d7e255aefaa1adb6a1b1d26c69a8b79e6208a98" + +UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/nose/" +UPSTREAM_CHECK_REGEX = "/nose/(?P<pver>(\d+[\.\-_]*)+)" + +S = "${WORKDIR}/nose-${PV}" + +inherit setuptools3 + +RDEPENDS_${PN}_class-target = "\ + python3-unittest \ + " + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-devtools/python/python3-pip_9.0.1.bb b/meta/recipes-devtools/python/python3-pip_9.0.1.bb new file mode 100644 index 0000000000..4456b9b1b1 --- /dev/null +++ b/meta/recipes-devtools/python/python3-pip_9.0.1.bb @@ -0,0 +1,56 @@ +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=25fba45109565f87de20bae85bc39452" + +SRCNAME = "pip" +DEPENDS += "python3 python3-setuptools-native" + +SRC_URI = "https://files.pythonhosted.org/packages/source/p/${SRCNAME}/${SRCNAME}-${PV}.tar.gz" + +SRC_URI[md5sum] = "35f01da33009719497f01a4ba69d63c9" +SRC_URI[sha256sum] = "09f243e1a7b461f654c26a725fa373211bb7ff17a9300058b205c61658ca940d" + +UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/pip" + +S = "${WORKDIR}/${SRCNAME}-${PV}" + +inherit distutils3 + +DISTUTILS_INSTALL_ARGS += "--install-lib=${D}${PYTHON_SITEPACKAGES_DIR}" + +do_install_prepend() { + install -d ${D}${PYTHON_SITEPACKAGES_DIR} +} + +# Use setuptools site.py instead, avoid shared state issue +do_install_append() { + rm ${D}${PYTHON_SITEPACKAGES_DIR}/site.py + rm ${D}${PYTHON_SITEPACKAGES_DIR}/__pycache__/site.cpython-*.pyc + + # Install as pip3 and leave pip2 as default + rm ${D}/${bindir}/pip + + # Installed eggs need to be passed directly to the interpreter via a pth file + echo "./${SRCNAME}-${PV}-py${PYTHON_BASEVERSION}.egg" > ${D}${PYTHON_SITEPACKAGES_DIR}/${SRCNAME}-${PV}.pth + + # Make sure we use /usr/bin/env python3 + for PYTHSCRIPT in `grep -rIl ${bindir} ${D}${bindir}/pip3*`; do + sed -i -e '1s|^#!.*|#!/usr/bin/env python3|' $PYTHSCRIPT + done +} + +RDEPENDS_${PN} = "\ + python3-compile \ + python3-io \ + python3-enum \ + python3-html \ + python3-json \ + python3-netserver \ + python3-setuptools \ + python3-unixadmin \ + python3-xmlrpc \ +" + +BBCLASSEXTEND = "native" diff --git a/meta/recipes-devtools/python/python3-pycairo_1.10.0.bb b/meta/recipes-devtools/python/python3-pycairo_1.10.0.bb new file mode 100644 index 0000000000..f9031b3bca --- /dev/null +++ b/meta/recipes-devtools/python/python3-pycairo_1.10.0.bb @@ -0,0 +1,40 @@ +SUMMARY = "Python bindings for the Cairo canvas library" +HOMEPAGE = "http://cairographics.org/pycairo" +BUGTRACKER = "http://bugs.freedesktop.org" +SECTION = "python-devel" +LICENSE = "LGPLv3" +LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \ + file://COPYING.LESSER;md5=e6a600fd5e1d9cbde2d983680233ad02" + +# cairo >= 1.8.8 +DEPENDS = "cairo" +PR = "r2" + +SRC_URI = "http://cairographics.org/releases/pycairo-${PV}.tar.bz2" + +SRC_URI[md5sum] = "e6fd3f2f1e6a72e0db0868c4985669c5" +SRC_URI[sha256sum] = "9aa4078e7eb5be583aeabbe8d87172797717f95e8c4338f0d4a17b683a7253be" + +S = "${WORKDIR}/pycairo-${PV}" + +inherit distutils3 pkgconfig + +BBCLASSEXTEND = "native" + +do_configure() { + PYTHON=${PYTHON} ./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}:' \ + py3cairo.pc.in > py3cairo.pc + install -m 0644 py3cairo.pc ${D}${libdir}/pkgconfig/ +} diff --git a/meta/recipes-devtools/python/python3-pycurl_7.21.5.bb b/meta/recipes-devtools/python/python3-pycurl_7.21.5.bb new file mode 100644 index 0000000000..5d11192ab6 --- /dev/null +++ b/meta/recipes-devtools/python/python3-pycurl_7.21.5.bb @@ -0,0 +1,5 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/python-pycurl:" + +require python-pycurl.inc + +inherit distutils3 diff --git a/meta/recipes-devtools/python/python3-pygobject/0001-configure.ac-add-sysroot-path-to-GI_DATADIR-don-t-se.patch b/meta/recipes-devtools/python/python3-pygobject/0001-configure.ac-add-sysroot-path-to-GI_DATADIR-don-t-se.patch new file mode 100644 index 0000000000..a391f7e74e --- /dev/null +++ b/meta/recipes-devtools/python/python3-pygobject/0001-configure.ac-add-sysroot-path-to-GI_DATADIR-don-t-se.patch @@ -0,0 +1,41 @@ +From 5e5350d730f85957a42c6d846d347d080e7dd996 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex.kanavin@gmail.com> +Date: Fri, 23 Oct 2015 12:40:34 +0300 +Subject: [PATCH] configure.ac: add sysroot path to GI_DATADIR; don't set + introspection scanner and compiler paths + +Upstream-Status: Pending [review on oe-core maillist] +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> +--- + configure.ac | 8 +------- + 1 file changed, 1 insertion(+), 7 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 2c0cfbd..cfcb3bf 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -194,7 +194,7 @@ PKG_CHECK_MODULES(GI, + gobject-introspection-1.0 >= introspection_required_version + ) + +-GI_DATADIR=$($PKG_CONFIG --variable=gidatadir gobject-introspection-1.0) ++GI_DATADIR=$PKG_CONFIG_SYSROOT_DIR$($PKG_CONFIG --variable=gidatadir gobject-introspection-1.0) + AC_SUBST(GI_DATADIR) + + if test "$enable_cairo" != no; then +@@ -219,12 +219,6 @@ AC_ARG_WITH(common, + with_common=yes) + AM_CONDITIONAL(WITH_COMMON, test "$with_common" = "yes") + +-INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0` +-INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0` +- +-AC_SUBST(INTROSPECTION_SCANNER) +-AC_SUBST(INTROSPECTION_COMPILER) +- + # compiler warnings, errors, required cflags, and code coverage support + GNOME_COMPILE_WARNINGS([maximum]) + AC_MSG_CHECKING(for Gnome code coverage support) +-- +2.1.4 + diff --git a/meta/recipes-devtools/python/python3-pygobject_3.22.0.bb b/meta/recipes-devtools/python/python3-pygobject_3.22.0.bb new file mode 100644 index 0000000000..143048d9ef --- /dev/null +++ b/meta/recipes-devtools/python/python3-pygobject_3.22.0.bb @@ -0,0 +1,31 @@ +SUMMARY = "Python GObject bindings" +SECTION = "devel/python" +LICENSE = "LGPLv2.1" +LIC_FILES_CHKSUM = "file://COPYING;md5=a916467b91076e631dd8edb7424769c7" + +inherit autotools pkgconfig gnomebase distutils3-base gobject-introspection upstream-version-is-even + +DEPENDS += "gnome-common-native python3 glib-2.0" + +SRCNAME="pygobject" +SRC_URI = " \ + http://ftp.gnome.org/pub/GNOME/sources/${SRCNAME}/${@gnome_verdir("${PV}")}/${SRCNAME}-${PV}.tar.xz \ + file://0001-configure.ac-add-sysroot-path-to-GI_DATADIR-don-t-se.patch \ +" + +SRC_URI[md5sum] = "ed4117ed5d554d25fd7718807fbf819f" +SRC_URI[sha256sum] = "08b29cfb08efc80f7a8630a2734dec65a99c1b59f1e5771c671d2e4ed8a5cbe7" + +S = "${WORKDIR}/${SRCNAME}-${PV}" + + +PACKAGECONFIG ??= "${@bb.utils.contains_any('DISTRO_FEATURES', [ 'directfb', 'wayland', 'x11' ], 'cairo', '', d)}" + +# python3-pycairo is checked on configuration -> DEPENDS +# we don't link against python3-pycairo -> RDEPENDS +PACKAGECONFIG[cairo] = "--enable-cairo,--disable-cairo,cairo python3-pycairo, python3-pycairo" + +RDEPENDS_${PN} += "python3-setuptools python3-importlib" + +BBCLASSEXTEND = "native" +PACKAGECONFIG_class-native = "" diff --git a/meta/recipes-devtools/python/python3-pygpgme_0.3.bb b/meta/recipes-devtools/python/python3-pygpgme_0.3.bb new file mode 100644 index 0000000000..495f677cfa --- /dev/null +++ b/meta/recipes-devtools/python/python3-pygpgme_0.3.bb @@ -0,0 +1,18 @@ +SUMMARY = "A Python module for working with OpenPGP messages" +HOMEPAGE = "https://launchpad.net/pygpgme" +LICENSE = "LGPLv2.1" +LIC_FILES_CHKSUM = "file://README;md5=2dc15a76acf01e126188c8de634ae4b3" + +SRC_URI = "https://launchpad.net/pygpgme/trunk/${PV}/+download/pygpgme-${PV}.tar.gz" +SRC_URI[md5sum] = "d38355af73f0352cde3d410b25f34fd0" +SRC_URI[sha256sum] = "5fd887c407015296a8fd3f4b867fe0fcca3179de97ccde90449853a3dfb802e1" + +S = "${WORKDIR}/pygpgme-${PV}" + +inherit distutils3 + +DEPENDS = "gpgme python3" + +RDEPENDS_${PN} += "python3-core" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-devtools/python/python3-setuptools_32.1.1.bb b/meta/recipes-devtools/python/python3-setuptools_32.1.1.bb new file mode 100644 index 0000000000..65af6f0dad --- /dev/null +++ b/meta/recipes-devtools/python/python3-setuptools_32.1.1.bb @@ -0,0 +1,37 @@ +require python-setuptools.inc + +DEPENDS += "python3" +DEPENDS_class-native += "python3-native" + +inherit distutils3 + +DISTUTILS_INSTALL_ARGS += "--install-lib=${D}${PYTHON_SITEPACKAGES_DIR}" + +# 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/meta/recipes-devtools/python/python3-six_1.10.0.bb b/meta/recipes-devtools/python/python3-six_1.10.0.bb new file mode 100644 index 0000000000..38a47b77dd --- /dev/null +++ b/meta/recipes-devtools/python/python3-six_1.10.0.bb @@ -0,0 +1,4 @@ +inherit setuptools3 +require python-six.inc + +RDEPENDS_${PN} += "python3-io" diff --git a/meta/recipes-devtools/python/python3-smmap_0.9.0.bb b/meta/recipes-devtools/python/python3-smmap_0.9.0.bb new file mode 100644 index 0000000000..9f8a26d79e --- /dev/null +++ b/meta/recipes-devtools/python/python3-smmap_0.9.0.bb @@ -0,0 +1,5 @@ +require python-smmap.inc + +inherit setuptools3 + +RDEPENDS_${PN} += "python3-codecs python3-mmap python3-lang" diff --git a/meta/recipes-devtools/python/python3/000-cross-compile.patch b/meta/recipes-devtools/python/python3/000-cross-compile.patch index 2506a590c0..2d822218f4 100644 --- a/meta/recipes-devtools/python/python3/000-cross-compile.patch +++ b/meta/recipes-devtools/python/python3/000-cross-compile.patch @@ -9,17 +9,19 @@ 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@ +Index: Python-3.5.2/Makefile.pre.in +=================================================================== +--- Python-3.5.2.orig/Makefile.pre.in ++++ Python-3.5.2/Makefile.pre.in +@@ -220,6 +220,7 @@ LIBOBJS= @LIBOBJS@ PYTHON= python$(EXE) BUILDPYTHON= python$(BUILDEXE) +HOSTPYTHON= $(BUILDPYTHON) + cross_compiling=@cross_compiling@ PYTHON_FOR_BUILD=@PYTHON_FOR_BUILD@ - _PYTHON_HOST_PLATFORM=@_PYTHON_HOST_PLATFORM@ -@@ -239,6 +240,7 @@ LIBFFI_INCLUDEDIR= @LIBFFI_INCLUDEDIR@ +@@ -279,6 +280,7 @@ LIBFFI_INCLUDEDIR= @LIBFFI_INCLUDEDIR@ ########################################################################## # Parser PGEN= Parser/pgen$(EXE) @@ -27,25 +29,25 @@ Upstream-Status: Inappropriate[Configuration Specific] PSRCS= \ Parser/acceler.c \ -@@ -451,7 +453,7 @@ build_all_generate_profile: +@@ -509,7 +511,7 @@ build_all_generate_profile: run_profile_task: : # FIXME: can't run for a cross build -- $(RUNSHARED) ./$(BUILDPYTHON) $(PROFILE_TASK) -+ $(RUNSHARED) $(HOSTPYTHON) $(PROFILE_TASK) +- $(LLVM_PROF_FILE) $(RUNSHARED) ./$(BUILDPYTHON) $(PROFILE_TASK) || true ++ $(LLVM_PROF_FILE) $(RUNSHARED) $(HOSTPYTHON) $(PROFILE_TASK) || true - 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 + build_all_merge_profile: + $(LLVM_PROF_MERGER) +@@ -792,7 +794,7 @@ $(GRAMMAR_H): $(GRAMMAR_INPUT) $(PGEN) + @$(MKDIR_P) Include + # Avoid copying the file onto itself for an in-tree build + if test "$(cross_compiling)" != "yes"; then \ +- $(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C); \ ++ $(HOSTPGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C); \ + else \ + cp $(srcdir)/Include/graminit.h $(GRAMMAR_H).tmp; \ + mv $(GRAMMAR_H).tmp $(GRAMMAR_H); \ +@@ -990,7 +992,7 @@ $(LIBRARY_OBJS) $(MODOBJS) Programs/pyth ###################################################################### TESTOPTS= $(EXTRATESTOPTS) @@ -54,7 +56,7 @@ Upstream-Status: Inappropriate[Configuration Specific] TESTRUNNER= $(TESTPYTHON) $(srcdir)/Tools/scripts/run_tests.py TESTTIMEOUT= 3600 -@@ -1229,7 +1231,7 @@ frameworkinstallstructure: $(LDLIBRARY) +@@ -1481,7 +1483,7 @@ frameworkinstallstructure: $(LDLIBRARY) fi; \ done $(LN) -fsn include/python$(LDVERSION) $(DESTDIR)$(prefix)/Headers @@ -63,7 +65,7 @@ Upstream-Status: Inappropriate[Configuration Specific] $(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 +@@ -1547,7 +1549,7 @@ config.status: $(srcdir)/configure # Run reindent on the library reindent: @@ -72,12 +74,12 @@ Upstream-Status: Inappropriate[Configuration Specific] # Rerun configure with the same options as it was run last time, # provided the config.status script exists -@@ -1414,7 +1416,7 @@ funny: +@@ -1683,7 +1685,7 @@ funny: # Perform some verification checks on any modified files. - patchcheck: + patchcheck: all - $(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/scripts/patchcheck.py -+ $(RUNSHARED) $(HOSTPYTHON) $(srcdir)/Tools/scripts/patchcheck.py ++ $(RUNSHARED) ./$(HOSTPYTHON) $(srcdir)/Tools/scripts/patchcheck.py # Dependencies diff --git a/meta/recipes-devtools/python/python3/0001-Do-not-use-the-shell-version-of-python-config-that-w.patch b/meta/recipes-devtools/python/python3/0001-Do-not-use-the-shell-version-of-python-config-that-w.patch new file mode 100644 index 0000000000..b7e0ac6354 --- /dev/null +++ b/meta/recipes-devtools/python/python3/0001-Do-not-use-the-shell-version-of-python-config-that-w.patch @@ -0,0 +1,38 @@ +From 045c99b5f1eb6e4e0d8ad1ef9f0ba6574f738150 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex.kanavin@gmail.com> +Date: Fri, 23 Oct 2015 12:25:09 +0300 +Subject: [PATCH] Do not use the shell version of python-config that was + introduced in 3.4 + +Revert instead to the original python version: it has our tweaks and +outputs directories correctly. + +Upstream-Status: Inappropriate [oe-specific] +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> +--- + Makefile.pre.in | 9 +++------ + 1 file changed, 3 insertions(+), 6 deletions(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index d7fc9a0..47e60bc 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -1270,12 +1270,9 @@ python-config: $(srcdir)/Misc/python-config.in Misc/python-config.sh + sed -e "s,@EXENAME@,$(BINDIR)/python$(LDVERSION)$(EXE)," < $(srcdir)/Misc/python-config.in >python-config.py + # Replace makefile compat. variable references with shell script compat. ones; $(VAR) -> ${VAR} + sed -e 's,\$$(\([A-Za-z0-9_]*\)),\$$\{\1\},g' < Misc/python-config.sh >python-config +- # On Darwin, always use the python version of the script, the shell +- # version doesn't use the compiler customizations that are provided +- # in python (_osx_support.py). +- if test `uname -s` = Darwin; then \ +- cp python-config.py python-config; \ +- fi ++ # In OpenEmbedded, always use the python version of the script, the shell ++ # version is broken in multiple ways, and doesn't return correct directories ++ cp python-config.py python-config + + + # Install the include files +-- +2.1.4 + diff --git a/meta/recipes-devtools/python/python3/020-dont-compile-python-files.patch b/meta/recipes-devtools/python/python3/020-dont-compile-python-files.patch deleted file mode 100644 index 03ef286941..0000000000 --- a/meta/recipes-devtools/python/python3/020-dont-compile-python-files.patch +++ /dev/null @@ -1,37 +0,0 @@ -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/meta/recipes-devtools/python/python3/04-default-is-optimized.patch b/meta/recipes-devtools/python/python3/04-default-is-optimized.patch deleted file mode 100644 index d5afd40025..0000000000 --- a/meta/recipes-devtools/python/python3/04-default-is-optimized.patch +++ /dev/null @@ -1,58 +0,0 @@ -Upstream-Status: Inappropriate [embedded specific] - -Updated original patch for python 2.7.3 - -Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com> -2012/05/01 - - -# 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> - -Index: Python-3.2.3/Python/compile.c -=================================================================== ---- Python-3.2.3.orig/Python/compile.c 2012-04-10 23:54:08.000000000 -0700 -+++ Python-3.2.3/Python/compile.c 2012-09-19 15:58:46.649123998 -0700 -@@ -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.2.3/Modules/main.c -=================================================================== ---- Python-3.2.3.orig/Modules/main.c 2012-04-10 23:54:07.000000000 -0700 -+++ Python-3.2.3/Modules/main.c 2012-09-19 16:00:32.153124053 -0700 -@@ -46,7 +46,7 @@ - static int orig_argc; - - /* command line options */ --#define BASE_OPTS L"bBc:dEhiJm:OqRsStuvVW:xX:?" -+#define BASE_OPTS L"bBc:dEhiJm:NOqRsStuvVW:xX:?" - - #define PROGRAM_OPTS BASE_OPTS - -@@ -71,6 +71,7 @@ - -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\ - -R : use a pseudo-random salt to make hash() values of various types be\n\ - unpredictable between separate invocations of the interpreter, as\n\ -@@ -407,8 +408,8 @@ - - /* case 'J': reserved for Jython */ - -- case 'O': -- Py_OptimizeFlag++; -+ case 'N': -+ Py_OptimizeFlag=0; - break; - - case 'B': diff --git a/meta/recipes-devtools/python/python3/06-ctypes-libffi-fix-configure.patch b/meta/recipes-devtools/python/python3/06-ctypes-libffi-fix-configure.patch deleted file mode 100644 index abd63d2a96..0000000000 --- a/meta/recipes-devtools/python/python3/06-ctypes-libffi-fix-configure.patch +++ /dev/null @@ -1,44 +0,0 @@ -This fixes configure issues with recent autoconf, e.g: - autoreconf: Entering directory `Modules/_ctypes/libffi' - autoreconf: configure.ac: not using Gettext - autoreconf: running: aclocal --force - configure.ac:26: error: m4_copy: won't overwrite defined macro: _AC_ARG_VAR_PRECIOUS - configure.ac:26: the top level - -The problem is still present in python-2.6.5 but fixed in python-svn. - -Upstream-Status: Accepted [python-svn] - -Signed-off-by: Antonio Ospite <ospite@studenti.unina.it> -Acked-by: Martin Jansa <Martin.Jansa@gmail.com> -Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> -Signed-off-by: Saul Wold <sgw@linux.intel.com> - - -2011/09/29 -Rebased for python 2.7.2 -Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com> - - -Index: Python-2.7.2/Modules/_ctypes/libffi/Makefile.am -=================================================================== ---- Python-2.7.2.orig/Modules/_ctypes/libffi/Makefile.am -+++ Python-2.7.2/Modules/_ctypes/libffi/Makefile.am -@@ -2,7 +2,7 @@ - - AUTOMAKE_OPTIONS = foreign subdir-objects - --SUBDIRS = include testsuite man -+SUBDIRS = include - - EXTRA_DIST = LICENSE ChangeLog.v1 ChangeLog.libgcj configure.host \ - src/alpha/ffi.c src/alpha/osf.S src/alpha/ffitarget.h \ -@@ -34,8 +34,6 @@ EXTRA_DIST = LICENSE ChangeLog.v1 Change - libtool-version ChangeLog.libffi m4/libtool.m4 \ - m4/lt~obsolete.m4 m4/ltoptions.m4 m4/ltsugar.m4 m4/ltversion.m4 - --info_TEXINFOS = doc/libffi.texi -- - ## ################################################################ - - ## diff --git a/meta/recipes-devtools/python/python3/110-enable-zlib.patch b/meta/recipes-devtools/python/python3/110-enable-zlib.patch deleted file mode 100644 index fb92a19163..0000000000 --- a/meta/recipes-devtools/python/python3/110-enable-zlib.patch +++ /dev/null @@ -1,21 +0,0 @@ -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/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch b/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch index c5846a5af8..c53ec0cfc8 100644 --- a/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch +++ b/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch @@ -1,31 +1,27 @@ +From 7630ab22578746d3d790d0598c0d279cf7afed97 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Tue, 14 May 2013 15:00:26 -0700 +Subject: [PATCH 01/20] python3: Add target and native recipes + 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.3.2/Lib/distutils/sysconfig.py -=================================================================== ---- Python-3.3.2.orig/Lib/distutils/sysconfig.py 2013-07-30 00:00:52.769749805 -0700 -+++ Python-3.3.2/Lib/distutils/sysconfig.py 2013-07-30 00:16:22.545767248 -0700 -@@ -16,10 +16,11 @@ - 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 @@ +--- + Lib/distutils/sysconfig.py | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py +index 573724d..390c485 100644 +--- a/Lib/distutils/sysconfig.py ++++ b/Lib/distutils/sysconfig.py +@@ -84,7 +84,9 @@ def get_python_inc(plat_specific=0, prefix=None): If 'prefix' is supplied, use it instead of sys.base_prefix or sys.base_exec_prefix -- i.e., ignore 'plat_specific'. """ @@ -36,20 +32,18 @@ Index: Python-3.3.2/Lib/distutils/sysconfig.py prefix = plat_specific and BASE_EXEC_PREFIX or BASE_PREFIX if os.name == "posix": if python_build: -@@ -136,6 +139,12 @@ +@@ -125,6 +127,10 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None): If 'prefix' is supplied, use it instead of sys.base_prefix or sys.base_exec_prefix -- i.e., ignore 'plat_specific'. """ ++ lib_basename = os.environ['STAGING_LIBDIR'].split('/')[-1] + 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 -@@ -144,7 +153,7 @@ +@@ -133,7 +139,7 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None): if os.name == "posix": libpython = os.path.join(prefix, @@ -58,21 +52,6 @@ Index: Python-3.3.2/Lib/distutils/sysconfig.py if standard_lib: return libpython else: -@@ -249,7 +258,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(): -@@ -258,7 +267,7 @@ - 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): +-- +2.8.0.rc3 + diff --git a/meta/recipes-devtools/python/python3/avoid-ncursesw-include-path.patch b/meta/recipes-devtools/python/python3/avoid-ncursesw-include-path.patch index 054a13124c..f29ae53371 100644 --- a/meta/recipes-devtools/python/python3/avoid-ncursesw-include-path.patch +++ b/meta/recipes-devtools/python/python3/avoid-ncursesw-include-path.patch @@ -1,29 +1,21 @@ +Upstream-Status: Pending + We should make sure that sysroot is used by gcc instead of assuming hardcoded locations for include paths -Upstream-Status: Pending Signed-off-by: Khem Raj <raj.khem@gmail.com> -: -Index: Python-3.3.3/configure.ac + +Index: Python-3.4.2/configure.ac =================================================================== ---- Python-3.3.3.orig/configure.ac 2014-01-29 19:00:15.245312752 -0800 -+++ Python-3.3.3/configure.ac 2014-01-29 23:27:22.938526262 -0800 -@@ -1548,7 +1548,7 @@ - # checks for header files - AC_HEADER_STDC - ac_save_cppflags="$CPPFLAGS" --CPPFLAGS="$CPPFLAGS -I/usr/include/ncursesw" -+CPPFLAGS="$CPPFLAGS -I=/usr/include/ncursesw" - AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \ - fcntl.h grp.h \ - ieeefp.h io.h langinfo.h libintl.h ncurses.h process.h pthread.h \ -@@ -4308,7 +4308,7 @@ - fi +--- 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" - # On HP/UX 11.0, mvwdelch is a block with a return statement - AC_MSG_CHECKING(whether mvwdelch is an expression) - AC_CACHE_VAL(ac_cv_mvwdelch_is_expression, + + AC_CHECK_HEADERS(curses.h ncurses.h) + diff --git a/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch b/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch index 208c57c822..3347321fde 100644 --- a/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch +++ b/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch @@ -4,6 +4,7 @@ Avoid a warning by not adding this module to missing variable. Upstream-Status: Inappropriate [distribution] +Also simply disable the tk module since its not in DEPENDS. Signed-off-by: Andrei Gherzan <andrei@gherzan.ro> Index: Python-2.7.2/setup.py @@ -23,3 +24,16 @@ Index: Python-2.7.2/setup.py return missing +diff --git Python-3.5.1.orig/setup.py Python-3.5.1/setup.py +index b4633b9..d7588c0 100644 +--- Python-3.5.1.orig/setup.py ++++ Python-3.5.1/setup.py +@@ -1536,7 +1536,7 @@ class PyBuildExt(build_ext): + self.extensions.extend(exts) + + # Call the method for detecting whether _tkinter can be compiled +- self.detect_tkinter(inc_dirs, lib_dirs) ++ # self.detect_tkinter(inc_dirs, lib_dirs) + + # tkinter module will not be avalaible as yocto + # doesn't have tk integrated (yet) diff --git a/meta/recipes-devtools/python/python3/configure.ac-fix-LIBPL.patch b/meta/recipes-devtools/python/python3/configure.ac-fix-LIBPL.patch new file mode 100644 index 0000000000..97214f9aa4 --- /dev/null +++ b/meta/recipes-devtools/python/python3/configure.ac-fix-LIBPL.patch @@ -0,0 +1,30 @@ +From 7c4f8d87473d6238c120ec6031b58f83a17a39a5 Mon Sep 17 00:00:00 2001 +From: Robert Yang <liezhi.yang@windriver.com> +Date: Mon, 28 Dec 2015 22:52:06 -0800 +Subject: [PATCH] configure.ac: fix LIBPL + +Use LIBDIR rather than prefix/lib, so that it would work when lib64. + +Upstream-Status: Pending + +Signed-off-by: Robert Yang <liezhi.yang@windriver.com> +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 63aef8e..aefb27f 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -4366,7 +4366,7 @@ AC_MSG_RESULT($LDVERSION) + + dnl define LIBPL after ABIFLAGS and LDVERSION is defined. + AC_SUBST(PY_ENABLE_SHARED) +-LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}" ++LIBPL='$(LIBDIR)'"/python${VERSION}/config-${LDVERSION}" + AC_SUBST(LIBPL) + + # Check whether right shifting a negative integer extends the sign bit +-- +1.7.9.5 + diff --git a/meta/recipes-devtools/python/python3/fix-ast.h-dependency.patch b/meta/recipes-devtools/python/python3/fix-ast.h-dependency.patch deleted file mode 100644 index 77c220aa82..0000000000 --- a/meta/recipes-devtools/python/python3/fix-ast.h-dependency.patch +++ /dev/null @@ -1,26 +0,0 @@ -Fix a missed dependency on ast.h which can result in race condition -at high parallel build - -It fixed here - -http://hg.python.org/cpython/rev/cfe0a293551f - -[YOCTO #5884] - -Upstream-Status: Backport -Signed-off-by: Khem Raj <raj.khem@gmail.com> - -Index: Python-3.3.3/Makefile.pre.in -=================================================================== ---- Python-3.3.3.orig/Makefile.pre.in 2014-02-26 09:33:13.868288863 -0800 -+++ Python-3.3.3/Makefile.pre.in 2014-02-26 09:36:27.348292492 -0800 -@@ -853,7 +853,8 @@ - $(srcdir)/Include/warnings.h \ - $(srcdir)/Include/weakrefobject.h \ - pyconfig.h \ -- $(PARSER_HEADERS) -+ $(PARSER_HEADERS) \ -+ $(AST_H) - - $(LIBRARY_OBJS) $(MODOBJS) Modules/python.o: $(PYTHON_HEADERS) - diff --git a/meta/recipes-devtools/python/python3/fix_for_using_different_libdir.patch b/meta/recipes-devtools/python/python3/fix_for_using_different_libdir.patch index cd1a978eb3..0610565d3c 100644 --- a/meta/recipes-devtools/python/python3/fix_for_using_different_libdir.patch +++ b/meta/recipes-devtools/python/python3/fix_for_using_different_libdir.patch @@ -4,11 +4,11 @@ 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> +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> +Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com> Date: 2012/05/01 Index: Python-3.3.0rc2/Lib/sysconfig.py diff --git a/meta/recipes-devtools/python/python3/makerace.patch b/meta/recipes-devtools/python/python3/makerace.patch deleted file mode 100644 index d8a68923a8..0000000000 --- a/meta/recipes-devtools/python/python3/makerace.patch +++ /dev/null @@ -1,28 +0,0 @@ -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/meta/recipes-devtools/python/python3/python-3.3-multilib.patch b/meta/recipes-devtools/python/python3/python-3.3-multilib.patch index 7d66a0e00d..08c4403cbf 100644 --- a/meta/recipes-devtools/python/python3/python-3.3-multilib.patch +++ b/meta/recipes-devtools/python/python3/python-3.3-multilib.patch @@ -1,36 +1,58 @@ -get the sys.lib from python itself and do not use hardcoded value of 'lib' +From 51fe6f22d0ba113674fb358bd11d75fe659bd26e Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Tue, 14 May 2013 15:00:26 -0700 +Subject: [PATCH 01/13] get the sys.lib from python itself and do not use + hardcoded value of 'lib' --Khem +02/2015 Rebased for 3.4.2 Upstream-Status: Pending +Signed-off-by: Khem Raj <raj.khem@gmail.com> +Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com> -Index: Python-3.3.2/Include/pythonrun.h -=================================================================== ---- Python-3.3.2.orig/Include/pythonrun.h 2013-05-15 09:32:54.000000000 -0700 -+++ Python-3.3.2/Include/pythonrun.h 2013-07-27 16:19:54.099877246 -0700 -@@ -181,6 +181,8 @@ - /* In their own files */ - PyAPI_FUNC(const char *) Py_GetVersion(void); - PyAPI_FUNC(const char *) Py_GetPlatform(void); +--- + Include/pythonrun.h | 3 +++ + Lib/distutils/command/install.py | 4 +++- + Lib/pydoc.py | 2 +- + Lib/site.py | 4 ++-- + Lib/sysconfig.py | 18 +++++++++--------- + Lib/trace.py | 4 ++-- + Makefile.pre.in | 7 +++++-- + Modules/getpath.c | 10 +++++++++- + Python/getplatform.c | 20 ++++++++++++++++++++ + Python/sysmodule.c | 4 ++++ + configure.ac | 35 +++++++++++++++++++++++++++++++++++ + setup.py | 9 ++++----- + 12 files changed, 97 insertions(+), 23 deletions(-) + +diff --git a/Include/pythonrun.h b/Include/pythonrun.h +index 9c2e813..2f79cb6 100644 +--- a/Include/pythonrun.h ++++ b/Include/pythonrun.h +@@ -23,6 +23,9 @@ typedef struct { + } PyCompilerFlags; + #endif + +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.3.2/Lib/distutils/command/install.py -=================================================================== ---- Python-3.3.2.orig/Lib/distutils/command/install.py 2013-05-15 09:32:54.000000000 -0700 -+++ Python-3.3.2/Lib/distutils/command/install.py 2013-07-27 16:19:54.099877246 -0700 -@@ -25,6 +25,8 @@ - from site import USER_SITE - HAS_USER_SITE = True ++ + #ifndef Py_LIMITED_API + PyAPI_FUNC(int) PyRun_SimpleStringFlags(const char *, PyCompilerFlags *); + PyAPI_FUNC(int) PyRun_AnyFileFlags(FILE *, const char *, PyCompilerFlags *); +diff --git a/Lib/distutils/command/install.py b/Lib/distutils/command/install.py +index 67db007..b46b45b 100644 +--- a/Lib/distutils/command/install.py ++++ b/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 + - if sys.version < "2.2": - WINDOWS_SCHEME = { - 'purelib': '$base', -@@ -45,7 +47,7 @@ + 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', @@ -39,39 +61,31 @@ Index: Python-3.3.2/Lib/distutils/command/install.py 'headers': '$base/include/python$py_version_short$abiflags/$dist_name', 'scripts': '$base/bin', 'data' : '$base', -Index: Python-3.3.2/Lib/pydoc.py -=================================================================== ---- Python-3.3.2.orig/Lib/pydoc.py 2013-05-15 09:32:55.000000000 -0700 -+++ Python-3.3.2/Lib/pydoc.py 2013-07-27 16:19:54.103877246 -0700 -@@ -372,7 +372,7 @@ +diff --git a/Lib/pydoc.py b/Lib/pydoc.py +index 3ca08c9..6528730 100755 +--- a/Lib/pydoc.py ++++ b/Lib/pydoc.py +@@ -384,7 +384,7 @@ class Doc: + docmodule = docclass = docroutine = docother = docproperty = docdata = fail + + def getdocloc(self, object, +- 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])): + """Return the location of module docs or None""" - docloc = os.environ.get("PYTHONDOCS", self.PYTHONDOCS) +diff --git a/Lib/site.py b/Lib/site.py +index 3f78ef5..511931e 100644 +--- a/Lib/site.py ++++ b/Lib/site.py +@@ -303,12 +303,12 @@ def getsitepackages(prefixes=None): + seen.add(prefix) -- 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.3.2/Lib/site.py -=================================================================== ---- Python-3.3.2.orig/Lib/site.py 2013-05-15 09:32:55.000000000 -0700 -+++ Python-3.3.2/Lib/site.py 2013-07-27 16:19:54.103877246 -0700 -@@ -303,13 +303,19 @@ - if sys.platform in ('os2emx', 'riscos'): - sitepackages.append(os.path.join(prefix, "Lib", "site-packages")) - elif os.sep == '/': + 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, "lib", "site-python")) else: sitepackages.append(prefix) - sitepackages.append(os.path.join(prefix, "lib", "site-packages")) @@ -79,11 +93,57 @@ Index: Python-3.3.2/Lib/site.py if sys.platform == "darwin": # for framework builds *only* we add the standard Apple # locations. -Index: Python-3.3.2/Lib/trace.py -=================================================================== ---- Python-3.3.2.orig/Lib/trace.py 2013-05-15 09:32:56.000000000 -0700 -+++ Python-3.3.2/Lib/trace.py 2013-07-27 16:19:54.103877246 -0700 -@@ -751,10 +751,10 @@ +diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py +index 9c34be0..3d1181a 100644 +--- a/Lib/sysconfig.py ++++ b/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}', +diff --git a/Lib/trace.py b/Lib/trace.py +index f108266..7fd83f2 100755 +--- a/Lib/trace.py ++++ b/Lib/trace.py +@@ -749,10 +749,10 @@ def main(argv=None): # should I also call expanduser? (after all, could use $HOME) s = s.replace("$prefix", @@ -96,11 +156,11 @@ Index: Python-3.3.2/Lib/trace.py "python" + sys.version[:3])) s = os.path.normpath(s) ignore_dirs.append(s) -Index: Python-3.3.2/Makefile.pre.in -=================================================================== ---- Python-3.3.2.orig/Makefile.pre.in 2013-07-27 16:19:16.000000000 -0700 -+++ Python-3.3.2/Makefile.pre.in 2013-07-27 16:19:54.103877246 -0700 -@@ -96,6 +96,8 @@ +diff --git a/Makefile.pre.in b/Makefile.pre.in +index 109f402..61a41e2 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -106,6 +106,8 @@ PY_CORE_CFLAGS= $(PY_CFLAGS) $(PY_CFLAGS_NODIST) $(PY_CPPFLAGS) $(CFLAGSFORSHARE # Machine-dependent subdirectories MACHDEP= @MACHDEP@ @@ -109,7 +169,7 @@ Index: Python-3.3.2/Makefile.pre.in # Multiarch directory (may be empty) MULTIARCH= @MULTIARCH@ -@@ -115,7 +117,7 @@ +@@ -125,7 +127,7 @@ LIBDIR= @libdir@ MANDIR= @mandir@ INCLUDEDIR= @includedir@ CONFINCLUDEDIR= $(exec_prefix)/include @@ -118,15 +178,15 @@ Index: Python-3.3.2/Makefile.pre.in ABIFLAGS= @ABIFLAGS@ # Detailed destination directories -@@ -635,6 +637,7 @@ +@@ -755,6 +757,7 @@ Modules/getpath.o: $(srcdir)/Modules/getpath.c Makefile -DEXEC_PREFIX='"$(exec_prefix)"' \ -DVERSION='"$(VERSION)"' \ -DVPATH='"$(VPATH)"' \ + -DARCH='"$(ARCH)"' -DLIB='"$(LIB)"' \ -o $@ $(srcdir)/Modules/getpath.c - Modules/python.o: $(srcdir)/Modules/python.c -@@ -701,7 +704,7 @@ + Programs/python.o: $(srcdir)/Programs/python.c +@@ -835,7 +838,7 @@ $(OPCODE_H): $(srcdir)/Lib/opcode.py $(OPCODE_H_SCRIPT) Python/compile.o Python/symtable.o Python/ast.o: $(GRAMMAR_H) $(AST_H) Python/getplatform.o: $(srcdir)/Python/getplatform.c @@ -135,38 +195,46 @@ Index: Python-3.3.2/Makefile.pre.in Python/importdl.o: $(srcdir)/Python/importdl.c $(CC) -c $(PY_CORE_CFLAGS) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.c -Index: Python-3.3.2/Modules/getpath.c -=================================================================== ---- Python-3.3.2.orig/Modules/getpath.c 2013-05-15 09:32:59.000000000 -0700 -+++ Python-3.3.2/Modules/getpath.c 2013-07-27 16:19:54.107877246 -0700 -@@ -121,9 +121,11 @@ - #define EXEC_PREFIX PREFIX +diff --git a/Modules/getpath.c b/Modules/getpath.c +index 18deb60..a01c3f8 100644 +--- a/Modules/getpath.c ++++ b/Modules/getpath.c +@@ -105,6 +105,13 @@ + #error "PREFIX, EXEC_PREFIX, VERSION, and VPATH must be constant defined" #endif +#define LIB_PYTHON LIB "/python" VERSION + - #ifndef PYTHONPATH --#define PYTHONPATH PREFIX "/lib/python" VERSION ":" \ -- EXEC_PREFIX "/lib/python" VERSION "/lib-dynload" ++#ifndef PYTHONPATH +#define PYTHONPATH PREFIX "/" LIB_PYTHON ":" \ -+ EXEC_PREFIX "/" LIB_PYTHON "/lib-dynload" - #endif - ++ EXEC_PREFIX "/" LIB_PYTHON "/lib-dynload" ++#endif ++ #ifndef LANDMARK -@@ -135,7 +137,7 @@ + #define LANDMARK L"os.py" + #endif +@@ -113,6 +120,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 int module_search_path_malloced = 0; --static wchar_t *lib_python = L"lib/python" VERSION; +static wchar_t *lib_python = L"" LIB_PYTHON; - static void - reduce(wchar_t *dir) -Index: Python-3.3.2/Python/getplatform.c -=================================================================== ---- Python-3.3.2.orig/Python/getplatform.c 2013-05-15 09:33:00.000000000 -0700 -+++ Python-3.3.2/Python/getplatform.c 2013-07-27 16:19:54.107877246 -0700 -@@ -10,3 +10,23 @@ + /* Get file status. Encode the path to the locale encoding. */ + +@@ -494,7 +502,7 @@ calculate_path(void) + _pythonpath = Py_DecodeLocale(PYTHONPATH, NULL); + _prefix = Py_DecodeLocale(PREFIX, NULL); + _exec_prefix = Py_DecodeLocale(EXEC_PREFIX, NULL); +- lib_python = Py_DecodeLocale("lib/python" VERSION, NULL); ++ lib_python = Py_DecodeLocale(LIB_PYTHON, NULL); + + if (!_pythonpath || !_prefix || !_exec_prefix || !lib_python) { + Py_FatalError( +diff --git a/Python/getplatform.c b/Python/getplatform.c +index 6899140..66a49c6 100644 +--- a/Python/getplatform.c ++++ b/Python/getplatform.c +@@ -10,3 +10,23 @@ Py_GetPlatform(void) { return PLATFORM; } @@ -190,11 +258,11 @@ Index: Python-3.3.2/Python/getplatform.c +{ + return LIB; +} -Index: Python-3.3.2/Python/sysmodule.c -=================================================================== ---- Python-3.3.2.orig/Python/sysmodule.c 2013-05-15 09:33:00.000000000 -0700 -+++ Python-3.3.2/Python/sysmodule.c 2013-07-27 16:19:54.107877246 -0700 -@@ -1612,6 +1612,10 @@ +diff --git a/Python/sysmodule.c b/Python/sysmodule.c +index 8d7e05a..d9dee0f 100644 +--- a/Python/sysmodule.c ++++ b/Python/sysmodule.c +@@ -1790,6 +1790,10 @@ _PySys_Init(void) PyUnicode_FromString(Py_GetCopyright())); SET_SYS_FROM_STRING("platform", PyUnicode_FromString(Py_GetPlatform())); @@ -205,96 +273,13 @@ Index: Python-3.3.2/Python/sysmodule.c SET_SYS_FROM_STRING("executable", PyUnicode_FromWideChar( Py_GetProgramFullPath(), -1)); -Index: Python-3.3.2/setup.py -=================================================================== ---- Python-3.3.2.orig/setup.py 2013-07-27 16:19:17.000000000 -0700 -+++ Python-3.3.2/setup.py 2013-07-27 16:19:54.107877246 -0700 -@@ -439,7 +439,7 @@ - # 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: -@@ -497,8 +497,7 @@ - # 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: -@@ -675,11 +674,11 @@ - 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.3.2/Lib/sysconfig.py -=================================================================== ---- Python-3.3.2.orig/Lib/sysconfig.py 2013-05-15 09:32:55.000000000 -0700 -+++ Python-3.3.2/Lib/sysconfig.py 2013-07-27 16:19:54.111877246 -0700 -@@ -21,10 +21,10 @@ - - _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': -@@ -33,10 +33,10 @@ - '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', -@@ -81,10 +81,10 @@ - '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.3.2/configure.ac -=================================================================== ---- Python-3.3.2.orig/configure.ac 2013-05-15 09:33:00.000000000 -0700 -+++ Python-3.3.2/configure.ac 2013-07-27 16:19:54.111877246 -0700 -@@ -769,6 +769,41 @@ - MULTIARCH=$($CC --print-multiarch 2>/dev/null) - AC_SUBST(MULTIARCH) +diff --git a/configure.ac b/configure.ac +index 707324d..e8d59a3 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -883,6 +883,41 @@ PLATDIR=plat-$MACHDEP + AC_SUBST(PLATDIR) + AC_SUBST(PLATFORM_TRIPLET) +AC_SUBST(ARCH) +AC_MSG_CHECKING(ARCH) @@ -332,5 +317,45 @@ Index: Python-3.3.2/configure.ac +esac +AC_MSG_RESULT($LIB) - AC_SUBST(LIBRARY) - AC_MSG_CHECKING(LIBRARY) + AC_MSG_CHECKING([for -Wl,--no-as-needed]) + save_LDFLAGS="$LDFLAGS" +diff --git a/setup.py b/setup.py +index 6d26deb..7b14215 100644 +--- a/setup.py ++++ b/setup.py +@@ -495,7 +495,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: +@@ -553,8 +553,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: +@@ -746,11 +745,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: +-- +2.11.0 + diff --git a/meta/recipes-devtools/python/python3/python3-fix-CVE-2016-1000110.patch b/meta/recipes-devtools/python/python3/python3-fix-CVE-2016-1000110.patch new file mode 100644 index 0000000000..ab1b7230ea --- /dev/null +++ b/meta/recipes-devtools/python/python3/python3-fix-CVE-2016-1000110.patch @@ -0,0 +1,148 @@ +From aab3e8c432b90508ac14755128f5a687be2fdf43 Mon Sep 17 00:00:00 2001 +From: Mingli Yu <Mingli.Yu@windriver.com> +Date: Thu, 22 Sep 2016 16:39:49 +0800 +Subject: [PATCH] python3: fix CVE-2016-1000110 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Ignore the HTTP_PROXY variable when REQUEST_METHOD environment is set, which +indicates that the script is in CGI mode. + +Issue #27568 Reported and patch contributed by Rémi Rampin. [#27568] + +Backport patch from https://hg.python.org/cpython/rev/a0ac52ed8f79 + +Upstream-Status: Backport +CVE: CVE-2016-1000110 +Signed-off-by: Mingli Yu <Mingli.Yu@windriver.com> +--- + Doc/howto/urllib2.rst | 5 +++++ + Doc/library/urllib.request.rst | 17 ++++++++++++++++- + Lib/test/test_urllib.py | 14 +++++++++++++- + Lib/urllib/request.py | 6 ++++++ + Misc/NEWS | 4 ++++ + 5 files changed, 44 insertions(+), 2 deletions(-) + +diff --git a/Doc/howto/urllib2.rst b/Doc/howto/urllib2.rst +index 24a4156..d2c7991 100644 +--- a/Doc/howto/urllib2.rst ++++ b/Doc/howto/urllib2.rst +@@ -538,6 +538,11 @@ setting up a `Basic Authentication`_ handler: :: + through a proxy. However, this can be enabled by extending urllib.request as + shown in the recipe [#]_. + ++.. note:: ++ ++ ``HTTP_PROXY`` will be ignored if a variable ``REQUEST_METHOD`` is set; see ++ the documentation on :func:`~urllib.request.getproxies`. ++ + + Sockets and Layers + ================== +diff --git a/Doc/library/urllib.request.rst b/Doc/library/urllib.request.rst +index 1338906..1291aeb 100644 +--- a/Doc/library/urllib.request.rst ++++ b/Doc/library/urllib.request.rst +@@ -173,6 +173,16 @@ The :mod:`urllib.request` module defines the following functions: + If both lowercase and uppercase environment variables exist (and disagree), + lowercase is preferred. + ++ .. note:: ++ ++ If the environment variable ``REQUEST_METHOD`` is set, which usually ++ indicates your script is running in a CGI environment, the environment ++ variable ``HTTP_PROXY`` (uppercase ``_PROXY``) will be ignored. This is ++ because that variable can be injected by a client using the "Proxy:" HTTP ++ header. If you need to use an HTTP proxy in a CGI environment, either use ++ ``ProxyHandler`` explicitly, or make sure the variable name is in ++ lowercase (or at least the ``_proxy`` suffix). ++ + + The following classes are provided: + +@@ -280,6 +290,11 @@ The following classes are provided: + list of hostname suffixes, optionally with ``:port`` appended, for example + ``cern.ch,ncsa.uiuc.edu,some.host:8080``. + ++ .. note:: ++ ++ ``HTTP_PROXY`` will be ignored if a variable ``REQUEST_METHOD`` is set; ++ see the documentation on :func:`~urllib.request.getproxies`. ++ + + .. class:: HTTPPasswordMgr() + +@@ -1138,7 +1153,7 @@ the returned bytes object to string once it determines or guesses + the appropriate encoding. + + The following W3C document, https://www.w3.org/International/O-charset\ , lists +-the various ways in which a (X)HTML or a XML document could have specified its ++the various ways in which an (X)HTML or an XML document could have specified its + encoding information. + + As the python.org website uses *utf-8* encoding as specified in its meta tag, we +diff --git a/Lib/test/test_urllib.py b/Lib/test/test_urllib.py +index 5d05f8d..247598a 100644 +--- a/Lib/test/test_urllib.py ++++ b/Lib/test/test_urllib.py +@@ -1,4 +1,4 @@ +-"""Regresssion tests for what was in Python 2's "urllib" module""" ++"""Regression tests for what was in Python 2's "urllib" module""" + + import urllib.parse + import urllib.request +@@ -232,6 +232,18 @@ class ProxyTests(unittest.TestCase): + self.assertTrue(urllib.request.proxy_bypass_environment('anotherdomain.com:8888')) + self.assertTrue(urllib.request.proxy_bypass_environment('newdomain.com:1234')) + ++ def test_proxy_cgi_ignore(self): ++ try: ++ self.env.set('HTTP_PROXY', 'http://somewhere:3128') ++ proxies = urllib.request.getproxies_environment() ++ self.assertEqual('http://somewhere:3128', proxies['http']) ++ self.env.set('REQUEST_METHOD', 'GET') ++ proxies = urllib.request.getproxies_environment() ++ self.assertNotIn('http', proxies) ++ finally: ++ self.env.unset('REQUEST_METHOD') ++ self.env.unset('HTTP_PROXY') ++ + def test_proxy_bypass_environment_host_match(self): + bypass = urllib.request.proxy_bypass_environment + self.env.set('NO_PROXY', +diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py +index 1731fe3..3be327d 100644 +--- a/Lib/urllib/request.py ++++ b/Lib/urllib/request.py +@@ -2412,6 +2412,12 @@ def getproxies_environment(): + name = name.lower() + if value and name[-6:] == '_proxy': + proxies[name[:-6]] = value ++ # CVE-2016-1000110 - If we are running as CGI script, forget HTTP_PROXY ++ # (non-all-lowercase) as it may be set from the web server by a "Proxy:" ++ # header from the client ++ # If "proxy" is lowercase, it will still be used thanks to the next block ++ if 'REQUEST_METHOD' in os.environ: ++ proxies.pop('http', None) + for name, value in os.environ.items(): + if name[-6:] == '_proxy': + name = name.lower() +diff --git a/Misc/NEWS b/Misc/NEWS +index 4ad2551..2fcc95b 100644 +--- a/Misc/NEWS ++++ b/Misc/NEWS +@@ -329,6 +329,10 @@ Library + - Issue #26644: Raise ValueError rather than SystemError when a negative + length is passed to SSLSocket.recv() or read(). + ++- Issue #27568: Prevent HTTPoxy attack (CVE-2016-1000110). Ignore the ++ HTTP_PROXY variable when REQUEST_METHOD environment is set, which indicates ++ that the script is in CGI mode. ++ + - Issue #23804: Fix SSL recv(0) and read(0) methods to return zero bytes + instead of up to 1024. + +-- +2.8.1 + diff --git a/meta/recipes-devtools/python/python3/python3-fix-build-error-with-Readline-6.3.patch b/meta/recipes-devtools/python/python3/python3-fix-build-error-with-Readline-6.3.patch deleted file mode 100644 index 44e2b7e5f1..0000000000 --- a/meta/recipes-devtools/python/python3/python3-fix-build-error-with-Readline-6.3.patch +++ /dev/null @@ -1,62 +0,0 @@ -python3: fix build error with Readline 6.3 - -Backport two patches from upstream: - -use new readline function types (closes #20374) -Issue #20374: Avoid compiler warnings when compiling readline with libedit. - -Upstream-Status: Backport - -Signed-off-by: Chong Lu <Chong.Lu@windriver.com> ---- - Modules/readline.c | 15 ++++++++++++--- - 1 file changed, 12 insertions(+), 3 deletions(-) - -diff --git a/Modules/readline.c b/Modules/readline.c -index 096c6d1..1646ef8 100644 ---- a/Modules/readline.c -+++ b/Modules/readline.c -@@ -773,15 +773,24 @@ on_hook(PyObject *func) - return result; - } - -+ - static int -+#if defined(_RL_FUNCTION_TYPEDEF) - on_startup_hook(void) -+#else -+on_startup_hook() -+#endif - { - return on_hook(startup_hook); - } - - #ifdef HAVE_RL_PRE_INPUT_HOOK - static int -+#if defined(_RL_FUNCTION_TYPEDEF) - on_pre_input_hook(void) -+#else -+on_pre_input_hook() -+#endif - { - return on_hook(pre_input_hook); - } -@@ -936,12 +945,12 @@ setup_readline(void) - rl_bind_key_in_map ('\t', rl_complete, emacs_meta_keymap); - rl_bind_key_in_map ('\033', rl_complete, emacs_meta_keymap); - /* Set our hook functions */ -- rl_startup_hook = (Function *)on_startup_hook; -+ rl_startup_hook = (rl_hook_func_t *)on_startup_hook; - #ifdef HAVE_RL_PRE_INPUT_HOOK -- rl_pre_input_hook = (Function *)on_pre_input_hook; -+ rl_pre_input_hook = (rl_hook_func_t *)on_pre_input_hook; - #endif - /* Set our completion function */ -- rl_attempted_completion_function = (CPPFunction *)flex_complete; -+ rl_attempted_completion_function = (rl_completion_func_t *)flex_complete; - /* Set Python word break characters */ - completer_word_break_characters = - rl_completer_word_break_characters = --- -1.7.9.5 - diff --git a/meta/recipes-devtools/python/python3/remove_sqlite_rpath.patch b/meta/recipes-devtools/python/python3/remove_sqlite_rpath.patch deleted file mode 100644 index 4ec627ea51..0000000000 --- a/meta/recipes-devtools/python/python3/remove_sqlite_rpath.patch +++ /dev/null @@ -1,19 +0,0 @@ -This patch removes the RPATH setting which contains a pointer to -the target relocated sysroot, which is incorrect. - -Upstream-Status: Inappropriate [Embedded Specific] - -Signed-off-by: Saul Wold <sgw@linux.intel.com> - -Index: Python-2.6.6/setup.py -=================================================================== ---- Python-2.6.6.orig/setup.py 2011-09-28 14:22:57.000000000 -0700 -+++ Python-2.6.6/setup.py 2011-09-28 16:11:25.147279633 -0700 -@@ -1079,7 +1079,6 @@ - include_dirs=["Modules/_sqlite", - sqlite_incdir], - library_dirs=sqlite_libdir, -- runtime_library_dirs=sqlite_libdir, - extra_link_args=sqlite_extra_link_args, - libraries=["sqlite3",])) - else: diff --git a/meta/recipes-devtools/python/python3/setup.py-find-libraries-in-staging-dirs.patch b/meta/recipes-devtools/python/python3/setup.py-find-libraries-in-staging-dirs.patch new file mode 100644 index 0000000000..f26bd38b02 --- /dev/null +++ b/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/meta/recipes-devtools/python/python3/setuptweaks.patch b/meta/recipes-devtools/python/python3/setuptweaks.patch index c34ef160d3..3a91b1916c 100644 --- a/meta/recipes-devtools/python/python3/setuptweaks.patch +++ b/meta/recipes-devtools/python/python3/setuptweaks.patch @@ -1,7 +1,7 @@ This patch removes various ways native system options can pass into the python compilation and somehow break C modules. -Upstream-Status: Configuration [OE Specific] +Upstream-Status: Inappropriate [OE Specific] RP 2012/04/23 diff --git a/meta/recipes-devtools/python/python3/sys_platform_is_now_always_linux2.patch b/meta/recipes-devtools/python/python3/sys_platform_is_now_always_linux2.patch deleted file mode 100644 index 506210fa17..0000000000 --- a/meta/recipes-devtools/python/python3/sys_platform_is_now_always_linux2.patch +++ /dev/null @@ -1,29 +0,0 @@ -Upstream-Status: Accepted [http://hg.python.org/cpython/rev/c816479f6aaf/] -Bugtracker: http://bugs.python.org/issue12326 - -[Removed "Misc/NEWS" hunk] - -Signed-off-by: Andreas Oberritter <obi@opendreambox.org> - -# HG changeset patch -# User Victor Stinner <victor.stinner@haypocalc.com> -# Date 1313841758 -7200 -# Node ID c816479f6aaf71dbd3f3fe4b239186d60c55ce48 -# Parent 3e093590ac57fdda428c7da3f72ddf0c475ecf2b -Issue #12326: sys.platform is now always 'linux2' on Linux - -Even if Python is compiled on Linux 3. - -Index: Python-3.3.0rc2/configure.ac -=================================================================== ---- Python-3.3.0rc2.orig/configure.ac 2012-09-09 02:11:14.000000000 -0700 -+++ Python-3.3.0rc2/configure.ac 2012-09-20 00:44:03.317124001 -0700 -@@ -366,7 +366,7 @@ - MACHDEP="$ac_md_system$ac_md_release" - - case $MACHDEP in -- linux*) MACHDEP="linux";; -+ linux*) MACHDEP="linux2";; - cygwin*) MACHDEP="cygwin";; - darwin*) MACHDEP="darwin";; - irix646) MACHDEP="irix6";; diff --git a/meta/recipes-devtools/python/python3/tweak-MULTIARCH-for-powerpc-linux-gnuspe.patch b/meta/recipes-devtools/python/python3/tweak-MULTIARCH-for-powerpc-linux-gnuspe.patch new file mode 100644 index 0000000000..8d037278bd --- /dev/null +++ b/meta/recipes-devtools/python/python3/tweak-MULTIARCH-for-powerpc-linux-gnuspe.patch @@ -0,0 +1,52 @@ +From 5d6509313198ec9b686cad50b002212e4344004b Mon Sep 17 00:00:00 2001 +From: Hongxu Jia <hongxu.jia@windriver.com> +Date: Fri, 11 Mar 2016 01:15:45 -0500 +Subject: [PATCH] configure.ac: tweak MULTIARCH for powerpc-linux-gnuspe + +For p1022ds bsp, the MULTIARCH is powerpc-linux-gnuspev1 and +python3 did not recognize the extra 'v1' which caused python3 +configure error for the platform triplet. + +Q:Why Python3 check platform triplet? + +A:Under Linux, GNU/KFreeBSD and the Hurd, C extensions now include +the architecture triplet in the extension name, to make it easy to +test builds for different ABIs in the same working tree. + +Here is the generated C extensions which take platform triplet into account. +... +|image/usr/lib/python3.5/lib-dynload/_datetime.cpython-35m-powerpc-linux-gnuspe.so +... + +https://bugs.python.org/issue22980 +https://www.python.org/dev/peps/pep-3149/ +https://bugs.python.org/review/22980/patch/14593/54808 + +Upstream-Status: Pending + +Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> +--- + configure.ac | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 9eb3d22..c34a9a0 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -724,6 +724,13 @@ fi + + + MULTIARCH=$($CC --print-multiarch 2>/dev/null) ++ ++# Tweak MULTIARCH ++if test x$MULTIARCH = xpowerpc-linux-gnuspev1 ++then ++ MULTIARCH="powerpc-linux-gnuspe" ++fi ++ + AC_SUBST(MULTIARCH) + + AC_MSG_CHECKING([for the platform triplet based on compiler characteristics]) +-- +1.9.1 + diff --git a/meta/recipes-devtools/python/python3/unixccompiler.patch b/meta/recipes-devtools/python/python3/unixccompiler.patch index 7b90f13883..3e2b1d1c2e 100644 --- a/meta/recipes-devtools/python/python3/unixccompiler.patch +++ b/meta/recipes-devtools/python/python3/unixccompiler.patch @@ -18,9 +18,9 @@ Index: Python-3.3.2/Lib/distutils/unixccompiler.py def library_dir_option(self, dir): - return "-L" + dir -+ if dir.startswith("."): -+ return "-L" + 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 diff --git a/meta/recipes-devtools/python/python3/upstream-random-fixes.patch b/meta/recipes-devtools/python/python3/upstream-random-fixes.patch new file mode 100644 index 0000000000..0d9152ccd7 --- /dev/null +++ b/meta/recipes-devtools/python/python3/upstream-random-fixes.patch @@ -0,0 +1,721 @@ +This patch updates random.c to match upstream python's code at revision +8125d9a8152b. This addresses various issues around problems with glibc 2.24 +and 2.25 such that python would fail to start with: + +[rpurdie@centos7 ~]$ /tmp/t2/sysroots/x86_64-pokysdk-linux/usr/bin/python3 +Fatal Python error: getentropy() failed +Aborted + +(taken from our buildtools-tarball also breaks eSDK) + +Upstream-Status: Backport + +# HG changeset patch +# User Victor Stinner <victor.stinner@gmail.com> +# Date 1483957133 -3600 +# Node ID 8125d9a8152b79e712cb09c7094b9129b9bcea86 +# Parent 337461574c90281630751b6095c4e1baf380cf7d +Issue #29157: Prefer getrandom() over getentropy() + +Copy and then adapt Python/random.c from default branch. Difference between 3.5 +and default branches: + +* Python 3.5 only uses getrandom() in non-blocking mode: flags=GRND_NONBLOCK +* If getrandom() fails with EAGAIN: py_getrandom() immediately fails and + remembers that getrandom() doesn't work. +* Python 3.5 has no _PyOS_URandomNonblock() function: _PyOS_URandom() + works in non-blocking mode on Python 3.5 + +RP 2017/1/22 + +Index: Python-3.5.2/Python/random.c +=================================================================== +--- Python-3.5.2.orig/Python/random.c ++++ Python-3.5.2/Python/random.c +@@ -1,6 +1,9 @@ + #include "Python.h" + #ifdef MS_WINDOWS + # include <windows.h> ++/* All sample MSDN wincrypt programs include the header below. It is at least ++ * required with Min GW. */ ++# include <wincrypt.h> + #else + # include <fcntl.h> + # ifdef HAVE_SYS_STAT_H +@@ -36,10 +39,9 @@ win32_urandom_init(int raise) + return 0; + + error: +- if (raise) ++ if (raise) { + PyErr_SetFromWindowsErr(0); +- else +- Py_FatalError("Failed to initialize Windows random API (CryptoGen)"); ++ } + return -1; + } + +@@ -52,8 +54,9 @@ win32_urandom(unsigned char *buffer, Py_ + + if (hCryptProv == 0) + { +- if (win32_urandom_init(raise) == -1) ++ if (win32_urandom_init(raise) == -1) { + return -1; ++ } + } + + while (size > 0) +@@ -62,11 +65,9 @@ win32_urandom(unsigned char *buffer, Py_ + if (!CryptGenRandom(hCryptProv, (DWORD)chunk, buffer)) + { + /* CryptGenRandom() failed */ +- if (raise) ++ if (raise) { + PyErr_SetFromWindowsErr(0); +- else +- Py_FatalError("Failed to initialized the randomized hash " +- "secret using CryptoGen)"); ++ } + return -1; + } + buffer += chunk; +@@ -75,55 +76,29 @@ win32_urandom(unsigned char *buffer, Py_ + return 0; + } + +-/* Issue #25003: Don't use getentropy() on Solaris (available since +- * Solaris 11.3), it is blocking whereas os.urandom() should not block. */ +-#elif defined(HAVE_GETENTROPY) && !defined(sun) +-#define PY_GETENTROPY 1 +- +-/* Fill buffer with size pseudo-random bytes generated by getentropy(). +- Return 0 on success, or raise an exception and return -1 on error. +- +- If fatal is nonzero, call Py_FatalError() instead of raising an exception +- on error. */ +-static int +-py_getentropy(unsigned char *buffer, Py_ssize_t size, int fatal) +-{ +- while (size > 0) { +- Py_ssize_t len = Py_MIN(size, 256); +- int res; +- +- if (!fatal) { +- Py_BEGIN_ALLOW_THREADS +- res = getentropy(buffer, len); +- Py_END_ALLOW_THREADS +- +- if (res < 0) { +- PyErr_SetFromErrno(PyExc_OSError); +- return -1; +- } +- } +- else { +- res = getentropy(buffer, len); +- if (res < 0) +- Py_FatalError("getentropy() failed"); +- } +- +- buffer += len; +- size -= len; +- } +- return 0; +-} +- +-#else ++#else /* !MS_WINDOWS */ + + #if defined(HAVE_GETRANDOM) || defined(HAVE_GETRANDOM_SYSCALL) + #define PY_GETRANDOM 1 + ++/* Call getrandom() to get random bytes: ++ ++ - Return 1 on success ++ - Return 0 if getrandom() is not available (failed with ENOSYS or EPERM), ++ or if getrandom(GRND_NONBLOCK) failed with EAGAIN (system urandom not ++ initialized yet). ++ - Raise an exception (if raise is non-zero) and return -1 on error: ++ if getrandom() failed with EINTR, raise is non-zero and the Python signal ++ handler raised an exception, or if getrandom() failed with a different ++ error. ++ ++ getrandom() is retried if it failed with EINTR: interrupted by a signal. */ + static int + py_getrandom(void *buffer, Py_ssize_t size, int raise) + { +- /* Is getrandom() supported by the running kernel? +- * Need Linux kernel 3.17 or newer, or Solaris 11.3 or newer */ ++ /* Is getrandom() supported by the running kernel? Set to 0 if getrandom() ++ failed with ENOSYS or EPERM. Need Linux kernel 3.17 or newer, or Solaris ++ 11.3 or newer */ + static int getrandom_works = 1; + + /* getrandom() on Linux will block if called before the kernel has +@@ -132,84 +107,165 @@ py_getrandom(void *buffer, Py_ssize_t si + * see https://bugs.python.org/issue26839. To avoid this, use the + * GRND_NONBLOCK flag. */ + const int flags = GRND_NONBLOCK; +- int n; ++ char *dest; ++ long n; + +- if (!getrandom_works) ++ if (!getrandom_works) { + return 0; ++ } + ++ dest = buffer; + while (0 < size) { + #ifdef sun + /* Issue #26735: On Solaris, getrandom() is limited to returning up +- to 1024 bytes */ ++ to 1024 bytes. Call it multiple times if more bytes are ++ requested. */ + n = Py_MIN(size, 1024); + #else +- n = size; ++ n = Py_MIN(size, LONG_MAX); + #endif + + errno = 0; + #ifdef HAVE_GETRANDOM + if (raise) { + Py_BEGIN_ALLOW_THREADS +- n = getrandom(buffer, n, flags); ++ n = getrandom(dest, n, flags); + Py_END_ALLOW_THREADS + } + else { +- n = getrandom(buffer, n, flags); ++ n = getrandom(dest, n, flags); + } + #else + /* On Linux, use the syscall() function because the GNU libc doesn't +- * expose the Linux getrandom() syscall yet. See: +- * https://sourceware.org/bugzilla/show_bug.cgi?id=17252 */ ++ expose the Linux getrandom() syscall yet. See: ++ https://sourceware.org/bugzilla/show_bug.cgi?id=17252 */ + if (raise) { + Py_BEGIN_ALLOW_THREADS +- n = syscall(SYS_getrandom, buffer, n, flags); ++ n = syscall(SYS_getrandom, dest, n, flags); + Py_END_ALLOW_THREADS + } + else { +- n = syscall(SYS_getrandom, buffer, n, flags); ++ n = syscall(SYS_getrandom, dest, n, flags); + } + #endif + + if (n < 0) { +- if (errno == ENOSYS) { ++ /* ENOSYS: the syscall is not supported by the kernel. ++ EPERM: the syscall is blocked by a security policy (ex: SECCOMP) ++ or something else. */ ++ if (errno == ENOSYS || errno == EPERM) { + getrandom_works = 0; + return 0; + } ++ + if (errno == EAGAIN) { +- /* If we failed with EAGAIN, the entropy pool was +- * uninitialized. In this case, we return failure to fall +- * back to reading from /dev/urandom. +- * +- * Note: In this case the data read will not be random so +- * should not be used for cryptographic purposes. Retaining +- * the existing semantics for practical purposes. */ ++ /* getrandom(GRND_NONBLOCK) fails with EAGAIN if the system ++ urandom is not initialiazed yet. In this case, fall back on ++ reading from /dev/urandom. ++ ++ Note: In this case the data read will not be random so ++ should not be used for cryptographic purposes. Retaining ++ the existing semantics for practical purposes. */ + getrandom_works = 0; + return 0; + } + + if (errno == EINTR) { +- if (PyErr_CheckSignals()) { +- if (!raise) +- Py_FatalError("getrandom() interrupted by a signal"); +- return -1; ++ if (raise) { ++ if (PyErr_CheckSignals()) { ++ return -1; ++ } + } +- /* retry getrandom() */ ++ ++ /* retry getrandom() if it was interrupted by a signal */ + continue; + } + +- if (raise) ++ if (raise) { + PyErr_SetFromErrno(PyExc_OSError); +- else +- Py_FatalError("getrandom() failed"); ++ } + return -1; + } + +- buffer += n; ++ dest += n; + size -= n; + } + return 1; + } +-#endif ++ ++#elif defined(HAVE_GETENTROPY) ++#define PY_GETENTROPY 1 ++ ++/* Fill buffer with size pseudo-random bytes generated by getentropy(): ++ ++ - Return 1 on success ++ - Return 0 if getentropy() syscall is not available (failed with ENOSYS or ++ EPERM). ++ - Raise an exception (if raise is non-zero) and return -1 on error: ++ if getentropy() failed with EINTR, raise is non-zero and the Python signal ++ handler raised an exception, or if getentropy() failed with a different ++ error. ++ ++ getentropy() is retried if it failed with EINTR: interrupted by a signal. */ ++static int ++py_getentropy(char *buffer, Py_ssize_t size, int raise) ++{ ++ /* Is getentropy() supported by the running kernel? Set to 0 if ++ getentropy() failed with ENOSYS or EPERM. */ ++ static int getentropy_works = 1; ++ ++ if (!getentropy_works) { ++ return 0; ++ } ++ ++ while (size > 0) { ++ /* getentropy() is limited to returning up to 256 bytes. Call it ++ multiple times if more bytes are requested. */ ++ Py_ssize_t len = Py_MIN(size, 256); ++ int res; ++ ++ if (raise) { ++ Py_BEGIN_ALLOW_THREADS ++ res = getentropy(buffer, len); ++ Py_END_ALLOW_THREADS ++ } ++ else { ++ res = getentropy(buffer, len); ++ } ++ ++ if (res < 0) { ++ /* ENOSYS: the syscall is not supported by the running kernel. ++ EPERM: the syscall is blocked by a security policy (ex: SECCOMP) ++ or something else. */ ++ if (errno == ENOSYS || errno == EPERM) { ++ getentropy_works = 0; ++ return 0; ++ } ++ ++ if (errno == EINTR) { ++ if (raise) { ++ if (PyErr_CheckSignals()) { ++ return -1; ++ } ++ } ++ ++ /* retry getentropy() if it was interrupted by a signal */ ++ continue; ++ } ++ ++ if (raise) { ++ PyErr_SetFromErrno(PyExc_OSError); ++ } ++ return -1; ++ } ++ ++ buffer += len; ++ size -= len; ++ } ++ return 1; ++} ++#endif /* defined(HAVE_GETENTROPY) && !defined(sun) */ ++ + + static struct { + int fd; +@@ -217,127 +273,123 @@ static struct { + ino_t st_ino; + } urandom_cache = { -1 }; + ++/* Read random bytes from the /dev/urandom device: + +-/* Read size bytes from /dev/urandom into buffer. +- Call Py_FatalError() on error. */ +-static void +-dev_urandom_noraise(unsigned char *buffer, Py_ssize_t size) +-{ +- int fd; +- Py_ssize_t n; ++ - Return 0 on success ++ - Raise an exception (if raise is non-zero) and return -1 on error + +- assert (0 < size); ++ Possible causes of errors: + +-#ifdef PY_GETRANDOM +- if (py_getrandom(buffer, size, 0) == 1) +- return; +- /* getrandom() is not supported by the running kernel, fall back +- * on reading /dev/urandom */ +-#endif ++ - open() failed with ENOENT, ENXIO, ENODEV, EACCES: the /dev/urandom device ++ was not found. For example, it was removed manually or not exposed in a ++ chroot or container. ++ - open() failed with a different error ++ - fstat() failed ++ - read() failed or returned 0 + +- fd = _Py_open_noraise("/dev/urandom", O_RDONLY); +- if (fd < 0) +- Py_FatalError("Failed to open /dev/urandom"); ++ read() is retried if it failed with EINTR: interrupted by a signal. + +- while (0 < size) +- { +- do { +- n = read(fd, buffer, (size_t)size); +- } while (n < 0 && errno == EINTR); +- if (n <= 0) +- { +- /* stop on error or if read(size) returned 0 */ +- Py_FatalError("Failed to read bytes from /dev/urandom"); +- break; +- } +- buffer += n; +- size -= (Py_ssize_t)n; +- } +- close(fd); +-} ++ The file descriptor of the device is kept open between calls to avoid using ++ many file descriptors when run in parallel from multiple threads: ++ see the issue #18756. ++ ++ st_dev and st_ino fields of the file descriptor (from fstat()) are cached to ++ check if the file descriptor was replaced by a different file (which is ++ likely a bug in the application): see the issue #21207. + +-/* Read size bytes from /dev/urandom into buffer. +- Return 0 on success, raise an exception and return -1 on error. */ ++ If the file descriptor was closed or replaced, open a new file descriptor ++ but don't close the old file descriptor: it probably points to something ++ important for some third-party code. */ + static int +-dev_urandom_python(char *buffer, Py_ssize_t size) ++dev_urandom(char *buffer, Py_ssize_t size, int raise) + { + int fd; + Py_ssize_t n; +- struct _Py_stat_struct st; +-#ifdef PY_GETRANDOM +- int res; +-#endif + +- if (size <= 0) +- return 0; ++ if (raise) { ++ struct _Py_stat_struct st; + +-#ifdef PY_GETRANDOM +- res = py_getrandom(buffer, size, 1); +- if (res < 0) +- return -1; +- if (res == 1) +- return 0; +- /* getrandom() is not supported by the running kernel, fall back +- * on reading /dev/urandom */ +-#endif +- +- if (urandom_cache.fd >= 0) { +- /* Does the fd point to the same thing as before? (issue #21207) */ +- if (_Py_fstat_noraise(urandom_cache.fd, &st) +- || st.st_dev != urandom_cache.st_dev +- || st.st_ino != urandom_cache.st_ino) { +- /* Something changed: forget the cached fd (but don't close it, +- since it probably points to something important for some +- third-party code). */ +- urandom_cache.fd = -1; +- } +- } +- if (urandom_cache.fd >= 0) +- fd = urandom_cache.fd; +- else { +- fd = _Py_open("/dev/urandom", O_RDONLY); +- if (fd < 0) { +- if (errno == ENOENT || errno == ENXIO || +- errno == ENODEV || errno == EACCES) +- PyErr_SetString(PyExc_NotImplementedError, +- "/dev/urandom (or equivalent) not found"); +- /* otherwise, keep the OSError exception raised by _Py_open() */ +- return -1; +- } + if (urandom_cache.fd >= 0) { +- /* urandom_fd was initialized by another thread while we were +- not holding the GIL, keep it. */ +- close(fd); +- fd = urandom_cache.fd; ++ /* Does the fd point to the same thing as before? (issue #21207) */ ++ if (_Py_fstat_noraise(urandom_cache.fd, &st) ++ || st.st_dev != urandom_cache.st_dev ++ || st.st_ino != urandom_cache.st_ino) { ++ /* Something changed: forget the cached fd (but don't close it, ++ since it probably points to something important for some ++ third-party code). */ ++ urandom_cache.fd = -1; ++ } + } ++ if (urandom_cache.fd >= 0) ++ fd = urandom_cache.fd; + else { +- if (_Py_fstat(fd, &st)) { +- close(fd); ++ fd = _Py_open("/dev/urandom", O_RDONLY); ++ if (fd < 0) { ++ if (errno == ENOENT || errno == ENXIO || ++ errno == ENODEV || errno == EACCES) { ++ PyErr_SetString(PyExc_NotImplementedError, ++ "/dev/urandom (or equivalent) not found"); ++ } ++ /* otherwise, keep the OSError exception raised by _Py_open() */ + return -1; + } ++ if (urandom_cache.fd >= 0) { ++ /* urandom_fd was initialized by another thread while we were ++ not holding the GIL, keep it. */ ++ close(fd); ++ fd = urandom_cache.fd; ++ } + else { +- urandom_cache.fd = fd; +- urandom_cache.st_dev = st.st_dev; +- urandom_cache.st_ino = st.st_ino; ++ if (_Py_fstat(fd, &st)) { ++ close(fd); ++ return -1; ++ } ++ else { ++ urandom_cache.fd = fd; ++ urandom_cache.st_dev = st.st_dev; ++ urandom_cache.st_ino = st.st_ino; ++ } + } + } +- } + +- do { +- n = _Py_read(fd, buffer, (size_t)size); +- if (n == -1) +- return -1; +- if (n == 0) { +- PyErr_Format(PyExc_RuntimeError, +- "Failed to read %zi bytes from /dev/urandom", +- size); ++ do { ++ n = _Py_read(fd, buffer, (size_t)size); ++ if (n == -1) ++ return -1; ++ if (n == 0) { ++ PyErr_Format(PyExc_RuntimeError, ++ "Failed to read %zi bytes from /dev/urandom", ++ size); ++ return -1; ++ } ++ ++ buffer += n; ++ size -= n; ++ } while (0 < size); ++ } ++ else { ++ fd = _Py_open_noraise("/dev/urandom", O_RDONLY); ++ if (fd < 0) { + return -1; + } + +- buffer += n; +- size -= n; +- } while (0 < size); ++ while (0 < size) ++ { ++ do { ++ n = read(fd, buffer, (size_t)size); ++ } while (n < 0 && errno == EINTR); + ++ if (n <= 0) { ++ /* stop on error or if read(size) returned 0 */ ++ close(fd); ++ return -1; ++ } ++ ++ buffer += n; ++ size -= n; ++ } ++ close(fd); ++ } + return 0; + } + +@@ -349,8 +401,8 @@ dev_urandom_close(void) + urandom_cache.fd = -1; + } + } ++#endif /* !MS_WINDOWS */ + +-#endif + + /* Fill buffer with pseudo-random bytes generated by a linear congruent + generator (LCG): +@@ -373,29 +425,98 @@ lcg_urandom(unsigned int x0, unsigned ch + } + } + +-/* Fill buffer with size pseudo-random bytes from the operating system random +- number generator (RNG). It is suitable for most cryptographic purposes +- except long living private keys for asymmetric encryption. ++/* Read random bytes: + +- Return 0 on success, raise an exception and return -1 on error. */ +-int +-_PyOS_URandom(void *buffer, Py_ssize_t size) ++ - Return 0 on success ++ - Raise an exception (if raise is non-zero) and return -1 on error ++ ++ Used sources of entropy ordered by preference, preferred source first: ++ ++ - CryptGenRandom() on Windows ++ - getrandom() function (ex: Linux and Solaris): call py_getrandom() ++ - getentropy() function (ex: OpenBSD): call py_getentropy() ++ - /dev/urandom device ++ ++ Read from the /dev/urandom device if getrandom() or getentropy() function ++ is not available or does not work. ++ ++ Prefer getrandom() over getentropy() because getrandom() supports blocking ++ and non-blocking mode and Python requires non-blocking RNG at startup to ++ initialize its hash secret: see the PEP 524. ++ ++ Prefer getrandom() and getentropy() over reading directly /dev/urandom ++ because these functions don't need file descriptors and so avoid ENFILE or ++ EMFILE errors (too many open files): see the issue #18756. ++ ++ Only use RNG running in the kernel. They are more secure because it is ++ harder to get the internal state of a RNG running in the kernel land than a ++ RNG running in the user land. The kernel has a direct access to the hardware ++ and has access to hardware RNG, they are used as entropy sources. ++ ++ Note: the OpenSSL RAND_pseudo_bytes() function does not automatically reseed ++ its RNG on fork(), two child processes (with the same pid) generate the same ++ random numbers: see issue #18747. Kernel RNGs don't have this issue, ++ they have access to good quality entropy sources. ++ ++ If raise is zero: ++ ++ - Don't raise an exception on error ++ - Don't call the Python signal handler (don't call PyErr_CheckSignals()) if ++ a function fails with EINTR: retry directly the interrupted function ++ - Don't release the GIL to call functions. ++*/ ++static int ++pyurandom(void *buffer, Py_ssize_t size, int raise) + { ++#if defined(PY_GETRANDOM) || defined(PY_GETENTROPY) ++ int res; ++#endif ++ + if (size < 0) { +- PyErr_Format(PyExc_ValueError, +- "negative argument not allowed"); ++ if (raise) { ++ PyErr_Format(PyExc_ValueError, ++ "negative argument not allowed"); ++ } + return -1; + } +- if (size == 0) ++ ++ if (size == 0) { + return 0; ++ } + + #ifdef MS_WINDOWS +- return win32_urandom((unsigned char *)buffer, size, 1); +-#elif defined(PY_GETENTROPY) +- return py_getentropy(buffer, size, 0); ++ return win32_urandom((unsigned char *)buffer, size, raise); ++#else ++ ++#if defined(PY_GETRANDOM) || defined(PY_GETENTROPY) ++#ifdef PY_GETRANDOM ++ res = py_getrandom(buffer, size, raise); + #else +- return dev_urandom_python((char*)buffer, size); ++ res = py_getentropy(buffer, size, raise); + #endif ++ if (res < 0) { ++ return -1; ++ } ++ if (res == 1) { ++ return 0; ++ } ++ /* getrandom() or getentropy() function is not available: failed with ++ ENOSYS, EPERM or EAGAIN. Fall back on reading from /dev/urandom. */ ++#endif ++ ++ return dev_urandom(buffer, size, raise); ++#endif ++} ++ ++/* Fill buffer with size pseudo-random bytes from the operating system random ++ number generator (RNG). It is suitable for most cryptographic purposes ++ except long living private keys for asymmetric encryption. ++ ++ Return 0 on success. Raise an exception and return -1 on error. */ ++int ++_PyOS_URandom(void *buffer, Py_ssize_t size) ++{ ++ return pyurandom(buffer, size, 1); + } + + void +@@ -436,13 +557,14 @@ _PyRandom_Init(void) + } + } + else { +-#ifdef MS_WINDOWS +- (void)win32_urandom(secret, secret_size, 0); +-#elif defined(PY_GETENTROPY) +- (void)py_getentropy(secret, secret_size, 1); +-#else +- dev_urandom_noraise(secret, secret_size); +-#endif ++ int res; ++ ++ /* _PyRandom_Init() is called very early in the Python initialization ++ and so exceptions cannot be used (use raise=0). */ ++ res = pyurandom(secret, secret_size, 0); ++ if (res < 0) { ++ Py_FatalError("failed to get random numbers to initialize Python"); ++ } + } + } + +@@ -454,8 +576,6 @@ _PyRandom_Fini(void) + CryptReleaseContext(hCryptProv, 0); + hCryptProv = 0; + } +-#elif defined(PY_GETENTROPY) +- /* nothing to clean */ + #else + dev_urandom_close(); + #endif diff --git a/meta/recipes-devtools/python/python3_3.3.3.bb b/meta/recipes-devtools/python/python3_3.5.2.bb index 6147408937..2ff7c9e278 100644 --- a/meta/recipes-devtools/python/python3_3.3.3.bb +++ b/meta/recipes-devtools/python/python3_3.5.2.bb @@ -2,34 +2,26 @@ 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.3" +PYTHON_MAJMIN = "3.5" 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.bz2 \ -file://12-distutils-prefix-is-inside-staging-area.patch \ +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://fix-ast.h-dependency.patch \ -file://makerace.patch \ +file://tweak-MULTIARCH-for-powerpc-linux-gnuspe.patch \ ${DISTRO_SRC_URI} \ -file://python3-fix-build-error-with-Readline-6.3.patch \ " SRC_URI += "\ file://03-fix-tkinter-detection.patch \ - file://04-default-is-optimized.patch \ file://avoid_warning_about_tkinter.patch \ - file://06-ctypes-libffi-fix-configure.patch \ - file://remove_sqlite_rpath.patch \ file://cgi_py.patch \ file://host_include_contamination.patch \ file://python-3.3-multilib.patch \ @@ -41,11 +33,18 @@ SRC_URI += "\ 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 \ + file://configure.ac-fix-LIBPL.patch \ + file://python3-fix-CVE-2016-1000110.patch \ + file://upstream-random-fixes.patch \ " -SRC_URI[md5sum] = "f3ebe34d4d8695bf889279b54673e10c" -SRC_URI[sha256sum] = "e526e9b612f623888364d30cc9f3dfc34dcef39065c713bdbcddf47df84d8dcb" +SRC_URI[md5sum] = "8906efbacfcdc7c3c9198aeefafd159e" +SRC_URI[sha256sum] = "0010f56100b9b74259ebcd5d4b295a32324b58b517403a10d1a2aa7cb22bca40" -LIC_FILES_CHKSUM = "file://LICENSE;md5=4eaea08eaaf6875189b0c49f26fa2005" +LIC_FILES_CHKSUM = "file://LICENSE;md5=6b60258130e4ed10d3101517eb5b9385" + +# exclude pre-releases for both python 2.x and 3.x +UPSTREAM_CHECK_REGEX = "[Pp]ython-(?P<pver>\d+(\.\d+)+).tar" S = "${WORKDIR}/Python-${PV}" @@ -60,24 +59,26 @@ CACHED_CONFIGUREVARS = "ac_cv_have_chflags=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" +SDK_CC_ARCH += "-DNDEBUG -fno-inline" EXTRA_OEMAKE += "CROSS_COMPILE=yes" -EXTRA_OECONF += "CROSSPYTHONPATH=${STAGING_LIBDIR_NATIVE}/python${PYTHON_MAJMIN}/lib-dynload/" +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 cross compilation of different modules +export CROSSPYTHONPATH = "${STAGING_LIBDIR_NATIVE}/python${PYTHON_MAJMIN}/lib-dynload/:${B}/build/lib.linux-${TARGET_ARCH}-${PYTHON_MAJMIN}:${S}/Lib:${S}/Lib/plat-linux" # No ctypes option for python 3 PYTHONLSBOPTS = "" -do_configure_prepend() { +do_configure_append() { rm -f ${S}/Makefile.orig - autoreconf -Wcross --verbose --install --force --exclude=autopoint Modules/_ctypes/libffi || bbnote "_ctypes failed to autoreconf" + autoreconf -Wcross --verbose --install --force --exclude=autopoint ../Python-${PV}/Modules/_ctypes/libffi } do_compile() { @@ -92,8 +93,6 @@ do_compile() { sed -e 's,${STAGING_DIR_HOST},,g' -i *.py cd - - # remove hardcoded ccache, see http://bugs.openembedded.net/show_bug.cgi?id=4144 - sed -i -e s,ccache\ ,'$(CCACHE) ', Makefile # remove any bogus LD_LIBRARY_PATH sed -i -e s,RUNSHARED=.*,RUNSHARED=, Makefile @@ -118,7 +117,6 @@ do_compile() { 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 @@ -128,7 +126,6 @@ do_compile() { 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}" @@ -149,7 +146,6 @@ do_install() { 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} @@ -159,18 +155,21 @@ do_install() { 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 + install -m 0644 Makefile.sysroot ${D}/${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}${PYTHON_ABI}/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 + oe_multilib_header python${PYTHON_BINABI}/pyconfig.h } do_install_append_class-nativesdk () { @@ -182,9 +181,13 @@ PACKAGE_PREPROCESS_FUNCS += "py_package_preprocess" py_package_preprocess () { # copy back the old Makefile to fix target package - install -m 0644 Makefile.orig ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config/Makefile - # Remove references to buildmachine paths in target Makefile - 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 + install -m 0644 ${B}/Makefile.orig ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config/Makefile + install -m 0644 ${B}/Makefile.orig ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}${PYTHON_ABI}/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}/config-${PYTHON_MAJMIN}${PYTHON_ABI}/Makefile \ + ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata.py } require python-${PYTHON_MAJMIN}-manifest.inc @@ -206,12 +209,12 @@ FILES_${PN}-pyvenv += "${bindir}/pyvenv-${PYTHON_MAJMIN} ${bindir}/pyvenv" 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" +INSANE_SKIP_${PN}-dev += "dev-elf" # catch all the rest (unsorted) PACKAGES += "${PN}-misc" +RDEPENDS_${PN}-misc += "${PN}-core ${PN}-email ${PN}-codecs ${PN}-textutils ${PN}-argparse" +RDEPENDS_${PN}-modules += "${PN}-misc" FILES_${PN}-misc = "${libdir}/python${PYTHON_MAJMIN}" # catch manpage diff --git a/meta/recipes-devtools/python/python_2.7.9.bb b/meta/recipes-devtools/python/python_2.7.13.bb index 4087c2cb13..4ef99523e0 100644 --- a/meta/recipes-devtools/python/python_2.7.9.bb +++ b/meta/recipes-devtools/python/python_2.7.13.bb @@ -1,5 +1,5 @@ require python.inc -DEPENDS = "python-native bzip2 db gdbm openssl readline sqlite3 zlib" +DEPENDS = "python-native libffi bzip2 db gdbm openssl readline sqlite3 zlib" PR = "${INC_PR}" DISTRO_SRC_URI ?= "file://sitecustomize.py" @@ -25,19 +25,17 @@ SRC_URI += "\ file://run-ptest \ file://parallel-makeinst-create-bindir.patch \ file://use_sysroot_ncurses_instead_of_host.patch \ + file://add-CROSSPYTHONPATH-for-PYTHON_FOR_BUILD.patch \ + file://Don-t-use-getentropy-on-Linux.patch \ " S = "${WORKDIR}/Python-${PV}" inherit autotools multilib_header python-dir pythonnative -# 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__" +CONFIGUREOPTS += " --with-system-ffi " -# 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=no ac_cv_file__dev_ptc=no" +EXTRA_OECONF += "ac_cv_file__dev_ptmx=yes ac_cv_file__dev_ptc=no" do_configure_append() { rm -f ${S}/Makefile.orig @@ -56,9 +54,6 @@ do_compile() { sed -e 's,${STAGING_DIR_HOST},,g' -i *.py cd - - # remove hardcoded ccache, see http://bugs.openembedded.net/show_bug.cgi?id=4144 - sed -i -e s,ccache\ ,'$(CCACHE) ', Makefile - # remove any bogus LD_LIBRARY_PATH sed -i -e s,RUNSHARED=.*,RUNSHARED=, Makefile @@ -85,7 +80,6 @@ do_compile() { STAGING_LIBDIR=${STAGING_LIBDIR} \ STAGING_INCDIR=${STAGING_INCDIR} \ STAGING_BASELIBDIR=${STAGING_BASELIBDIR} \ - BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \ OPT="${CFLAGS}" } @@ -105,7 +99,6 @@ do_install() { 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 \ @@ -114,7 +107,6 @@ do_install() { 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 @@ -127,7 +119,7 @@ do_install() { } 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' + create_wrapper ${D}${bindir}/python2.7 PYTHONHOME='${prefix}' TERMINFO_DIRS='${sysconfdir}/terminfo:/etc/terminfo:/usr/share/terminfo:/usr/share/misc/terminfo:/lib/terminfo' } SSTATE_SCAN_FILES += "Makefile" @@ -135,10 +127,13 @@ PACKAGE_PREPROCESS_FUNCS += "py_package_preprocess" py_package_preprocess () { # copy back the old Makefile to fix target package - install -m 0644 Makefile.orig ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config/Makefile + install -m 0644 ${B}/Makefile.orig ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config/Makefile - # Remove references to buildmachine paths in target Makefile - 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 + # 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 + python -m py_compile ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata.py } require python-${PYTHON_MAJMIN}-manifest.inc @@ -153,13 +148,11 @@ RRECOMMENDS_${PN}-crypt = "openssl" 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" +RDEPENDS_${PN}-modules += "${PN}-misc" +RDEPENDS_${PN}-ptest = "${PN}-modules" #inherit ptest after "require python-${PYTHON_MAJMIN}-manifest.inc" so PACKAGES doesn't get overwritten inherit ptest |
