diff options
author | wiz <wiz@pkgsrc.org> | 2016-08-31 09:10:02 +0000 |
---|---|---|
committer | wiz <wiz@pkgsrc.org> | 2016-08-31 09:10:02 +0000 |
commit | 63f688cb0a3ced451684317a4261c2410a7a63fb (patch) | |
tree | cfa40d81bd085baef38a83163b32cdf5ce8399c9 /net | |
parent | 41da738fb463accf2f903a9b06d8f6016055e478 (diff) | |
download | pkgsrc-63f688cb0a3ced451684317a4261c2410a7a63fb.tar.gz |
Updated py-twisted{,-docs} to 16.4.0.
Twisted Core 16.4.0 (2016-08-25)
================================
Features
--------
- Add twisted.application.twist, meant to eventually replace twistd
with a simpler interface. Add twisted.application.runner API,
currently private, which twist is built on. (#5705)
- The new interface IHandshakeListener that can be implemented by any
Protocol provides a callback that is called when the TLS handshake
has been completed, allowing Protocols to make decisions about the
TLS configuration before application data is sent. (#6024)
- twisted.python.syslog has been ported to Python 3. (#7957)
- twisted.internet.defer.ensureDeferred has been added, similar to
asyncio's ensure_future. Wrapping a coroutine (the result of a
function defined using async def, available only on Python 3.5+)
with it allows you to use the "await" keyword with Deferreds inside
the coroutine, similar to "yield" when using inlineCallbacks.
(#8088)
- twisted.internet.inotify have been ported to Python 3 (#8211)
- twisted.enterprise has been ported to Python 3. The third-party
pysqlite2 package has not been ported to Python 3, so any database
connector based on pysqlite2 cannot be used. Instead the sqlite3
module included with Python 3 should be used. (#8303)
- Scripts such as cftp, ckeygen, conch, mailmail, pyhtmlizer,
tkconch, twistd and trial have been updated to be setuptools
console scripts. (#8491)
- twisted.pair.raw and twisted.pair.rawudp have been ported to Python
3 (#8545)
- twisted.internet.baseprocess has been ported to Python 3. (#8546)
- twisted.python.dist has been ported to Python 3 (#8556)
- twisted.internet.interfaces.IOpenSSLContextFactory has been added,
which defines the interface provided both by the old-style
twisted.internet.ssl.ContextFactory class and the newer
twisted.interface.ssl.CertificateOptions class. This is a precursor
to formally deprecating the former class in favour of the latter.
(#8597)
- twisted.python.zipstream has been ported to Python 3 (#8607)
- Zip file entries returned by ChunkingZipFile.readfile() are now
context managers. (#8641)
- twisted.protocols.socks has been ported to Python 3 (#8665)
- twisted.spread.banana has been ported to Python 3 (#8667)
- Trial can now be invoked via "python -m twisted.trial". (#8712)
- twisted.protocols.postfix has been ported to Python 3 (#8713)
- twisted.protocols.wire and twisted.protocols.portforwarding have
been ported to Python 3 (#8717)
- twisted.protocols.stateful has been ported to Python 3 (#8718)
- twisted.protocols.memcache is now compatible with Python 3. (#8726)
- twisted.protocols.dict has been ported to Python 3 (#8732)
Bugfixes
--------
- pip install -e ".[dev]" now works on Python 3, but it will not
install twistedchecker or pydoctor, which have not yet been ported.
(#7807)
- twistd can now properly daemonize on Linux/Unix when run under
Python3 and will not hang indefinitely. (#8155)
- tox can now be used to run Twisted's tests on Windows (#8578)
- twisted.python.filepath.setContent() and
twisted.python.filepath.moveTo() now work on Windows with Python 3
(#8610)
- twisted.internet.win32eventreactor works on Python 3 in Windows
(#8626)
- The TLS payload buffer size was reduced in
twisted.protocols.tls.TLSMemoryBIOProtocol. This fixes writing of
very long strings using the TLSv1_1 method from the OpenSSL
library. (#8693)
- twisted.logger._flatten.flattenEvent() now does not crash if passed
a unicode string. (#8699)
- twisted.application.strports.service (and thus twistd) no longer
swallow asynchronous exceptions from IStreamServerEndpoint.listen.
(#8710)
- _twistd_unix now reports the name and encoded message of an
exception raised during daemonization on Python 2 and 3. (#8731)
- twisted.protocols.amp now handles floats on Python 3. Previously,
sending a float would raise a ValueError. (#8746)
Improved Documentation
----------------------
- Some broken links to xprogramming in the unit test documentation
have been fixed. (#8579)
- The Twisted Tutorial "The Evolution of Finger" has been updated to
use endpoints throughout. (#8588)
- Updated the mail examples to use endpoints and better TLS. (#8595)
- Changed the Twisted Web howto to use endpoints and modern TLS.
(#8596)
- Updated bug report URL in man pages. (#8600)
- In twisted.internet.udp.Port, write() takes a parameter of type
bytes. This is clarified in the docstring. (#8635)
- twisted.internet.interfaces.ITransport.write() and
twisted.internet.interfaces.ITransport.writeSequence() take bytes
parameters. (#8636)
- twisted.python.filepath.AbstractFilePath.getContent() returns
bytes. The docstring was updated to clarify this. (#8637)
- Updated release notes to reflect that 15.4 is the last version that
supported Python 2.6, not 15.5. (#8651)
- A missing space in defer.rst resulted in badly rendered output. The
space was added. (#8723)
Deprecations and Removals
-------------------------
- Dropped support for pyOpenSSL versions less than 16.0.0. (#8441)
Other
-----
- #4926, #7868, #8209, #8271, #8276, #8308, #8324, #8348, #8367,
#8377, #8378, #8379, #8380, #8381, #8383, #8385, #8386, #8387,
#8388, #8389, #8391, #8392, #8393, #8394, #8397, #8406, #8410,
#8412, #8413, #8414, #8421, #8425, #8426, #8428, #8429, #8430,
#8432, #8434, #8435, #8437, #8438, #8439, #8444, #8451, #8452,
#8453, #8454, #8456, #8457, #8459, #8462, #8463, #8465, #8468,
#8469, #8479, #8482, #8483, #8486, #8490, #8493, #8494, #8496,
#8497, #8498, #8499, #8501, #8503, #8504, #8507, #8508, #8510,
#8513, #8514, #8515, #8516, #8517, #8520, #8521, #8522, #8523,
#8524, #8527, #8528, #8529, #8531, #8532, #8534, #8536, #8537,
#8538, #8540, #8541, #8543, #8548, #8552, #8553, #8554, #8555,
#8557, #8560, #8563, #8565, #8568, #8569, #8572, #8573, #8574,
#8577, #8580, #8581, #8582, #8584, #8586, #8589, #8590, #8592,
#8593, #8598, #8603, #8604, #8606, #8609, #8615, #8616, #8617,
#8618, #8619, #8621, #8624, #8627, #8628, #8630, #8632, #8634,
#8640, #8644, #8645, #8646, #8647, #8648, #8662, #8664, #8666,
#8668, #8671, #8672, #8684, #8691, #8702, #8703, #8705, #8706,
#8716, #8719, #8724, #8725, #8727, #8733, #8734, #8741
Twisted Conch 16.4.0 (2016-08-25)
=================================
Features
--------
- twisted.conch.ssh.address is now ported to Python 3. (#8495)
- twisted.conch.ssh.transport is now ported to Python 3. (#8638)
- twisted.conch.ssh.channel is now ported to Python 3. (#8649)
- twisted.conch.ssh.userauth is now ported to Python 3. (#8654)
- twisted.conch.ssh.connection is now ported to Python 3. (#8660)
- twisted.conch.ssh.session is now ported to Python 3. (#8661)
- twisted.conch.ssh.filetransfer is now ported to Python 3. (#8675)
- twisted.conch.ssh.agent is now ported to Python 3. (#8686)
- twisted.conch.ssh is now ported to Python 3. (#8690)
- twisted.conch.openssh_compat.* is now ported to Python 3. (#8694)
- twisted.conch.client.knownhosts is now ported to Python 3. (#8697)
- twisted.conch.insults.insults has been ported to Python 3 (#8698)
- twisted.conch.client.default is now ported to Python 3. (#8700)
- twisted.conch.recvline has been ported to Python 3 (#8709)
- twisted.conch.endpoints is now ported to Python 3. (#8722)
Bugfixes
--------
- The SSHService is now a bytestring (#8653)
- The name field in SShChannel is now a bytestring (#8683)
Improved Documentation
----------------------
- Fixed syntax errors in cftp man page. (#8601)
Other
-----
- #8495, #8511, #8715
Twisted Mail 16.4.0 (2016-08-25)
================================
Deprecations and Removals
-------------------------
- twisted.mail.mail.DomainWithDefaultDict.has_key is now deprecated
in favor of the `in` keyword. (#8361)
- twisted.mail.protocols.SSLContextFactory, deprecated since Twisted
12.0, has been removed. (#8591)
Other
-----
- #8525
Twisted Names 16.4.0 (2016-08-25)
=================================
Features
--------
- twisted.names.srvconnect is now ported to Python 3. (#8262)
- twisted.names.resolve and twisted.names.tap have been ported to
Python 3 (#8550)
Other
-----
- #8625, #8663
Twisted Runner 16.4.0 (2016-08-25)
==================================
Features
--------
- twisted.runner has been ported to Python 3. (#8739)
Twisted Web 16.4.0 (2016-08-25)
===============================
Features
--------
- Twisted web HTTP/2 servers now time out HTTP/2 connections in the
same manner as HTTP/1.1 connections. (#8480)
Bugfixes
--------
- A bug in twisted.web.server.Site.makeSession which may lead to
predictable session IDs was fixed. Session IDs are now generated
securely using `os.urandom`. (#3460)
- twisted.web.server.Request.getSession will now, for a request sent
over HTTPS, set a "Secure" cookie, preventing the secure session
from being sent over plain-text HTTP. (#3461)
- If called multiple times, twisted.web.http.Request.setLastModified
now correctly observes the greatest supplied value. (#3807)
- The HTTP server now correctly times connections out. (broken in
16.2) (#8481)
- Twisted's HTTP/2 support no longer throws priority exceptions when
WINDOW_UDPATE frames are received after a response has been
completed. (#8558)
- twisted.web.twcgi.CGIScript will now not pass the "Proxy" header to
CGI scripts, as a mitigation to CVE-2016-1000111. (#8623)
- Twisted Web's HTTP/2 server can now tolerate streams being reset by
the client midway through a data upload without throwing
exceptions. (#8682)
- twisted.web.http.Request now swallows header writes on reset HTTP/2
streams, rather than erroring out. (#8685)
- twisted.web's HTTP/2 server now tolerates receiving WINDOW_UPDATE
frames for streams for which it has no outstanding data to send.
(#8695)
- twisted.web.http.HTTPChannel now resumes producing on finished,
non-persistent connections. This prevents HTTP/1 servers using TLS
from leaking a CLOSE_WAIT socket per request. (#8766)
Other
-----
- #8519, #8530, #8629, #8707
Twisted Words 16.4.0 (2016-08-25)
=================================
Features
--------
- twisted.words.xish is now ported to Python 3 (#8337)
- twisted.words.protocols.jabber is now ported to Python 3 (#8423)
- twisted.words.protocols.irc.ERR_TOOMANYMATCHES was introduced
according to the RFC 2812 errata. (#8585)
Bugfixes
--------
- twisted.words.protocols.irc.RPL_ADMINLOC was removed and replaced
with twisted.words.protocols.irc.RPL_ADMINLOC1 and
twisted.words.protocols.irc.RPL_ADMINLOC2 to match the admin
commands defined in RFC 2812. (#8585)
- twisted.words.protocols.jabber.sasl_mechanisms has been fixed for
Python 3.3 (#8738)
Improved Documentation
----------------------
- The XMPP client example now works on Python 3. (#8509)
Other
-----
- #8360, #8460
Diffstat (limited to 'net')
-rw-r--r-- | net/py-twisted/Makefile | 9 | ||||
-rw-r--r-- | net/py-twisted/Makefile.common | 4 | ||||
-rw-r--r-- | net/py-twisted/PLIST | 75 | ||||
-rw-r--r-- | net/py-twisted/distinfo | 10 |
4 files changed, 81 insertions, 17 deletions
diff --git a/net/py-twisted/Makefile b/net/py-twisted/Makefile index 2bc81a454a1..df4db206864 100644 --- a/net/py-twisted/Makefile +++ b/net/py-twisted/Makefile @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.24 2015/04/14 11:40:32 wiz Exp $ +# $NetBSD: Makefile,v 1.25 2016/08/31 09:10:02 wiz Exp $ PKGNAME= ${PYPKGPREFIX}-${DISTNAME:tl} COMMENT= Framework for writing networked applications @@ -24,6 +24,13 @@ CFLAGS.SunOS+= -D_XOPEN_SOURCE=1 -D_XOPEN_SOURCE_EXTENDED=1 -Du_int=uint32_t pre-install: rm -f ${WRKSRC}/twisted/runner/portmap.c.orig +post-install: + cd ${DESTDIR}${PREFIX}/bin && \ + for i in cftp ckeygen conch mailmail pyhtmlizer tkconch trial twist twistd; \ + do \ + ${MV} $$i $$i-${PYVERSSUFFIX}; \ + done + # Do not "make package" after running "make test"; this will result in files # being installed that should not be. do-test: diff --git a/net/py-twisted/Makefile.common b/net/py-twisted/Makefile.common index e02e52760c3..1cdd72290c2 100644 --- a/net/py-twisted/Makefile.common +++ b/net/py-twisted/Makefile.common @@ -1,9 +1,9 @@ -# $NetBSD: Makefile.common,v 1.30 2016/08/24 10:39:04 wiz Exp $ +# $NetBSD: Makefile.common,v 1.31 2016/08/31 09:10:02 wiz Exp $ # # used by net/py-twisted/Makefile # used by net/py-twisted-docs/Makefile -DISTNAME= Twisted-16.3.2 +DISTNAME= Twisted-16.4.0 CATEGORIES= net python MASTER_SITES= http://twistedmatrix.com/Releases/Twisted/${PKGVERSION_NOREV:R}/ EXTRACT_SUFX= .tar.bz2 diff --git a/net/py-twisted/PLIST b/net/py-twisted/PLIST index f23e830c997..5ae121403bc 100644 --- a/net/py-twisted/PLIST +++ b/net/py-twisted/PLIST @@ -1,15 +1,17 @@ -@comment $NetBSD: PLIST,v 1.23 2016/08/24 10:39:04 wiz Exp $ -bin/cftp -bin/ckeygen -bin/conch -bin/mailmail -bin/pyhtmlizer -bin/tkconch -bin/trial -bin/twistd +@comment $NetBSD: PLIST,v 1.24 2016/08/31 09:10:02 wiz Exp $ +bin/cftp-${PYVERSSUFFIX} +bin/ckeygen-${PYVERSSUFFIX} +bin/conch-${PYVERSSUFFIX} +bin/mailmail-${PYVERSSUFFIX} +bin/pyhtmlizer-${PYVERSSUFFIX} +bin/tkconch-${PYVERSSUFFIX} +bin/trial-${PYVERSSUFFIX} +bin/twist-${PYVERSSUFFIX} +bin/twistd-${PYVERSSUFFIX} ${PYSITELIB}/${EGG_INFODIR}/PKG-INFO ${PYSITELIB}/${EGG_INFODIR}/SOURCES.txt ${PYSITELIB}/${EGG_INFODIR}/dependency_links.txt +${PYSITELIB}/${EGG_INFODIR}/entry_points.txt ${PYSITELIB}/${EGG_INFODIR}/not-zip-safe ${PYSITELIB}/${EGG_INFODIR}/requires.txt ${PYSITELIB}/${EGG_INFODIR}/top_level.txt @@ -67,6 +69,24 @@ ${PYSITELIB}/twisted/application/internet.pyo ${PYSITELIB}/twisted/application/reactors.py ${PYSITELIB}/twisted/application/reactors.pyc ${PYSITELIB}/twisted/application/reactors.pyo +${PYSITELIB}/twisted/application/runner/__init__.py +${PYSITELIB}/twisted/application/runner/__init__.pyc +${PYSITELIB}/twisted/application/runner/__init__.pyo +${PYSITELIB}/twisted/application/runner/_exit.py +${PYSITELIB}/twisted/application/runner/_exit.pyc +${PYSITELIB}/twisted/application/runner/_exit.pyo +${PYSITELIB}/twisted/application/runner/_runner.py +${PYSITELIB}/twisted/application/runner/_runner.pyc +${PYSITELIB}/twisted/application/runner/_runner.pyo +${PYSITELIB}/twisted/application/runner/test/__init__.py +${PYSITELIB}/twisted/application/runner/test/__init__.pyc +${PYSITELIB}/twisted/application/runner/test/__init__.pyo +${PYSITELIB}/twisted/application/runner/test/test_exit.py +${PYSITELIB}/twisted/application/runner/test/test_exit.pyc +${PYSITELIB}/twisted/application/runner/test/test_exit.pyo +${PYSITELIB}/twisted/application/runner/test/test_runner.py +${PYSITELIB}/twisted/application/runner/test/test_runner.pyc +${PYSITELIB}/twisted/application/runner/test/test_runner.pyo ${PYSITELIB}/twisted/application/service.py ${PYSITELIB}/twisted/application/service.pyc ${PYSITELIB}/twisted/application/service.pyo @@ -82,6 +102,24 @@ ${PYSITELIB}/twisted/application/test/test_internet.pyo ${PYSITELIB}/twisted/application/test/test_service.py ${PYSITELIB}/twisted/application/test/test_service.pyc ${PYSITELIB}/twisted/application/test/test_service.pyo +${PYSITELIB}/twisted/application/twist/__init__.py +${PYSITELIB}/twisted/application/twist/__init__.pyc +${PYSITELIB}/twisted/application/twist/__init__.pyo +${PYSITELIB}/twisted/application/twist/_options.py +${PYSITELIB}/twisted/application/twist/_options.pyc +${PYSITELIB}/twisted/application/twist/_options.pyo +${PYSITELIB}/twisted/application/twist/_twist.py +${PYSITELIB}/twisted/application/twist/_twist.pyc +${PYSITELIB}/twisted/application/twist/_twist.pyo +${PYSITELIB}/twisted/application/twist/test/__init__.py +${PYSITELIB}/twisted/application/twist/test/__init__.pyc +${PYSITELIB}/twisted/application/twist/test/__init__.pyo +${PYSITELIB}/twisted/application/twist/test/test_options.py +${PYSITELIB}/twisted/application/twist/test/test_options.pyc +${PYSITELIB}/twisted/application/twist/test/test_options.pyo +${PYSITELIB}/twisted/application/twist/test/test_twist.py +${PYSITELIB}/twisted/application/twist/test/test_twist.pyc +${PYSITELIB}/twisted/application/twist/test/test_twist.pyo ${PYSITELIB}/twisted/conch/__init__.py ${PYSITELIB}/twisted/conch/__init__.pyc ${PYSITELIB}/twisted/conch/__init__.pyo @@ -250,6 +288,9 @@ ${PYSITELIB}/twisted/conch/test/__init__.pyo ${PYSITELIB}/twisted/conch/test/keydata.py ${PYSITELIB}/twisted/conch/test/keydata.pyc ${PYSITELIB}/twisted/conch/test/keydata.pyo +${PYSITELIB}/twisted/conch/test/loopback.py +${PYSITELIB}/twisted/conch/test/loopback.pyc +${PYSITELIB}/twisted/conch/test/loopback.pyo ${PYSITELIB}/twisted/conch/test/test_address.py ${PYSITELIB}/twisted/conch/test/test_address.pyc ${PYSITELIB}/twisted/conch/test/test_address.pyo @@ -575,6 +616,7 @@ ${PYSITELIB}/twisted/internet/tcp.pyo ${PYSITELIB}/twisted/internet/test/__init__.py ${PYSITELIB}/twisted/internet/test/__init__.pyc ${PYSITELIB}/twisted/internet/test/__init__.pyo +${PYSITELIB}/twisted/internet/test/_awaittests.py.3only ${PYSITELIB}/twisted/internet/test/_posixifaces.py ${PYSITELIB}/twisted/internet/test/_posixifaces.pyc ${PYSITELIB}/twisted/internet/test/_posixifaces.pyo @@ -616,6 +658,9 @@ ${PYSITELIB}/twisted/internet/test/test_abstract.pyo ${PYSITELIB}/twisted/internet/test/test_address.py ${PYSITELIB}/twisted/internet/test/test_address.pyc ${PYSITELIB}/twisted/internet/test/test_address.pyo +${PYSITELIB}/twisted/internet/test/test_await.py +${PYSITELIB}/twisted/internet/test/test_await.pyc +${PYSITELIB}/twisted/internet/test/test_await.pyo ${PYSITELIB}/twisted/internet/test/test_base.py ${PYSITELIB}/twisted/internet/test/test_base.pyc ${PYSITELIB}/twisted/internet/test/test_base.pyo @@ -1320,6 +1365,12 @@ ${PYSITELIB}/twisted/python/_inotify.pyo ${PYSITELIB}/twisted/python/_oldstyle.py ${PYSITELIB}/twisted/python/_oldstyle.pyc ${PYSITELIB}/twisted/python/_oldstyle.pyo +${PYSITELIB}/twisted/python/_pydoctor.py +${PYSITELIB}/twisted/python/_pydoctor.pyc +${PYSITELIB}/twisted/python/_pydoctor.pyo +${PYSITELIB}/twisted/python/_pydoctortemplates/common.html +${PYSITELIB}/twisted/python/_pydoctortemplates/index.html +${PYSITELIB}/twisted/python/_pydoctortemplates/summary.html ${PYSITELIB}/twisted/python/_release.py ${PYSITELIB}/twisted/python/_release.pyc ${PYSITELIB}/twisted/python/_release.pyo @@ -1469,6 +1520,9 @@ ${PYSITELIB}/twisted/python/test/test_htmlizer.pyo ${PYSITELIB}/twisted/python/test/test_inotify.py ${PYSITELIB}/twisted/python/test/test_inotify.pyc ${PYSITELIB}/twisted/python/test/test_inotify.pyo +${PYSITELIB}/twisted/python/test/test_pydoctor.py +${PYSITELIB}/twisted/python/test/test_pydoctor.pyc +${PYSITELIB}/twisted/python/test/test_pydoctor.pyo ${PYSITELIB}/twisted/python/test/test_release.py ${PYSITELIB}/twisted/python/test/test_release.pyc ${PYSITELIB}/twisted/python/test/test_release.pyo @@ -1977,6 +2031,9 @@ ${PYSITELIB}/twisted/test/testutils.pyo ${PYSITELIB}/twisted/trial/__init__.py ${PYSITELIB}/twisted/trial/__init__.pyc ${PYSITELIB}/twisted/trial/__init__.pyo +${PYSITELIB}/twisted/trial/__main__.py +${PYSITELIB}/twisted/trial/__main__.pyc +${PYSITELIB}/twisted/trial/__main__.pyo ${PYSITELIB}/twisted/trial/_asyncrunner.py ${PYSITELIB}/twisted/trial/_asyncrunner.pyc ${PYSITELIB}/twisted/trial/_asyncrunner.pyo diff --git a/net/py-twisted/distinfo b/net/py-twisted/distinfo index eed77d8dc2a..e9d9a8767a6 100644 --- a/net/py-twisted/distinfo +++ b/net/py-twisted/distinfo @@ -1,7 +1,7 @@ -$NetBSD: distinfo,v 1.27 2016/08/24 10:39:04 wiz Exp $ +$NetBSD: distinfo,v 1.28 2016/08/31 09:10:02 wiz Exp $ -SHA1 (Twisted-16.3.2.tar.bz2) = 49d75c11e96fb450e4fe8cd1510a60f04ec3f3a3 -RMD160 (Twisted-16.3.2.tar.bz2) = 7ee6ae5d61ce0aba11b231da167d2db91700e0b2 -SHA512 (Twisted-16.3.2.tar.bz2) = 6ddca880a06087717487d8a5cc128da81f1acbc97e5c372b1ba51eaeb87390ae7f91925e8e4cc90f29df21692bc11b6e0fe3772341b8488940895e57942e5149 -Size (Twisted-16.3.2.tar.bz2) = 2916410 bytes +SHA1 (Twisted-16.4.0.tar.bz2) = a8b812ea9fc2e4fa47b1f8d0396ea80ace42f36a +RMD160 (Twisted-16.4.0.tar.bz2) = a638ee8be774ce27ced0e1d73e6b292a9cf6ab7a +SHA512 (Twisted-16.4.0.tar.bz2) = 4bb8da16ea24c60f5626eb8e5b55f4dd40c14941ae3a3410d779614cfbb47be244f25f79d87bc2337a4c20c931133606b80354de4425ff95fbda376d52580cba +Size (Twisted-16.4.0.tar.bz2) = 2973945 bytes SHA1 (patch-ab) = 26495e5abd57025e915b923cc7089704bbd85629 |