at 23.05-pre 6.5 kB view raw
1{ lib 2, stdenv 3, buildPythonPackage 4, pythonOlder 5, fetchPypi 6, fetchpatch 7, python 8, appdirs 9, attrs 10, automat 11, bcrypt 12, constantly 13, contextvars 14, cryptography 15, git 16, glibcLocales 17, h2 18, hyperlink 19, idna 20, incremental 21, priority 22, pyasn1 23, pyhamcrest 24, pynacl 25, pyopenssl 26, pyserial 27, service-identity 28, setuptools 29, typing-extensions 30, zope_interface 31 32 # for passthru.tests 33, cassandra-driver 34, klein 35, magic-wormhole 36, scrapy 37, treq 38, txaio 39, txamqp 40, txrequests 41, txtorcon 42, thrift 43, nixosTests 44}: 45 46buildPythonPackage rec { 47 pname = "twisted"; 48 version = "22.8.0"; 49 format = "setuptools"; 50 51 disabled = pythonOlder "3.6"; 52 53 src = fetchPypi { 54 pname = "Twisted"; 55 inherit version; 56 extension = "tar.gz"; 57 hash = "sha256-5bYN458tHaFT++GHTYhf4/y9sh/MRG+nWaU+j8NRO+0="; 58 }; 59 60 patches = [ 61 (fetchpatch { 62 name = "fix-test_openFileDescriptors.patch"; 63 url = "https://github.com/twisted/twisted/commit/47f47634940141466177261b20bb43c300531e38.patch"; 64 hash = "sha256-wacnF166PnZHXJEqTlPZUdDILJIVHOcnC2a34SQumvs="; 65 }) 66 ]; 67 68 __darwinAllowLocalNetworking = true; 69 70 propagatedBuildInputs = [ 71 attrs 72 automat 73 constantly 74 hyperlink 75 incremental 76 setuptools 77 typing-extensions 78 zope_interface 79 ]; 80 81 postPatch = '' 82 echo 'ListingTests.test_localeIndependent.skip = "Timezone issue"'>> src/twisted/conch/test/test_cftp.py 83 echo 'ListingTests.test_newFile.skip = "Timezone issue"'>> src/twisted/conch/test/test_cftp.py 84 echo 'ListingTests.test_newSingleDigitDayOfMonth.skip = "Timezone issue"'>> src/twisted/conch/test/test_cftp.py 85 echo 'ListingTests.test_oldFile.skip = "Timezone issue"'>> src/twisted/conch/test/test_cftp.py 86 echo 'ListingTests.test_oldSingleDigitDayOfMonth.skip = "Timezone issue"'>> src/twisted/conch/test/test_cftp.py 87 88 echo 'UNIXTestsBuilder_AsyncioSelectorReactorTests.test_sendFileDescriptorTriggersPauseProducing.skip = "sendFileDescriptor producer was not paused"'>> src/twisted/internet/test/test_unix.py 89 echo 'UNIXTestsBuilder_SelectReactorTests.test_sendFileDescriptorTriggersPauseProducing.skip = "sendFileDescriptor producer was not paused"'>> src/twisted/internet/test/test_unix.py 90 91 echo 'FileObserverTests.test_getTimezoneOffsetEastOfUTC.skip = "mktime argument out of range"'>> src/twisted/test/test_log.py 92 echo 'FileObserverTests.test_getTimezoneOffsetWestOfUTC.skip = "mktime argument out of range"'>> src/twisted/test/test_log.py 93 echo 'FileObserverTests.test_getTimezoneOffsetWithoutDaylightSavingTime.skip = "tuple differs, values not"'>> src/twisted/test/test_log.py 94 95 echo 'MulticastTests.test_joinLeave.skip = "No such device"'>> src/twisted/test/test_udp.py 96 echo 'MulticastTests.test_loopback.skip = "No such device"'>> src/twisted/test/test_udp.py 97 echo 'MulticastTests.test_multicast.skip = "Reactor was unclean"'>> src/twisted/test/test_udp.py 98 echo 'MulticastTests.test_multiListen.skip = "No such device"'>> src/twisted/test/test_udp.py 99 100 # fails since migrating to libxcrypt 101 echo 'HelperTests.test_refuteCryptedPassword.skip = "OSError: Invalid argument"' >> src/twisted/conch/test/test_checkers.py 102 103 # not packaged 104 substituteInPlace src/twisted/test/test_failure.py \ 105 --replace "from cython_test_exception_raiser import raiser # type: ignore[import]" "raiser = None" 106 '' + lib.optionalString stdenv.isLinux '' 107 echo 'PTYProcessTestsBuilder_EPollReactorTests.test_openFileDescriptors.skip = "invalid syntax"'>> src/twisted/internet/test/test_process.py 108 echo 'PTYProcessTestsBuilder_PollReactorTests.test_openFileDescriptors.skip = "invalid syntax"'>> src/twisted/internet/test/test_process.py 109 echo 'UNIXTestsBuilder_EPollReactorTests.test_sendFileDescriptorTriggersPauseProducing.skip = "sendFileDescriptor producer was not paused"'>> src/twisted/internet/test/test_unix.py 110 echo 'UNIXTestsBuilder_PollReactorTests.test_sendFileDescriptorTriggersPauseProducing.skip = "sendFileDescriptor producer was not paused"'>> src/twisted/internet/test/test_unix.py 111 112 # Patch t.p._inotify to point to libc. Without this, 113 # twisted.python.runtime.platform.supportsINotify() == False 114 substituteInPlace src/twisted/python/_inotify.py --replace \ 115 "ctypes.util.find_library(\"c\")" "'${stdenv.cc.libc}/lib/libc.so.6'" 116 '' + lib.optionalString (stdenv.isAarch64 && stdenv.isDarwin) '' 117 echo 'AbortConnectionTests_AsyncioSelectorReactorTests.test_fullWriteBufferAfterByteExchange.skip = "Timeout after 120 seconds"' >> src/twisted/internet/test/test_tcp.py 118 echo 'AbortConnectionTests_AsyncioSelectorReactorTests.test_resumeProducingAbort.skip = "Timeout after 120 seconds"' >> src/twisted/internet/test/test_tcp.py 119 ''; 120 121 # Generate Twisted's plug-in cache. Twisted users must do it as well. See 122 # http://twistedmatrix.com/documents/current/core/howto/plugin.html#auto3 123 # and http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=477103 for details. 124 postFixup = '' 125 $out/bin/twistd --help > /dev/null 126 ''; 127 128 checkInputs = [ 129 git 130 glibcLocales 131 pyhamcrest 132 ] 133 ++ passthru.optional-dependencies.conch 134 # not supported on aarch64-darwin: https://github.com/pyca/pyopenssl/issues/873 135 ++ lib.optionals (!(stdenv.isDarwin && stdenv.isAarch64)) passthru.optional-dependencies.tls; 136 137 checkPhase = '' 138 export SOURCE_DATE_EPOCH=315532800 139 export PATH=$out/bin:$PATH 140 # race conditions when running in paralell 141 ${python.interpreter} -m twisted.trial twisted 142 ''; 143 144 passthru = { 145 optional-dependencies = rec { 146 conch = [ appdirs bcrypt cryptography pyasn1 ]; 147 conch_nacl = conch ++ [ pynacl ]; 148 contextvars = lib.optionals (pythonOlder "3.7") [ contextvars ]; 149 http2 = [ h2 priority ]; 150 serial = [ pyserial ]; 151 tls = [ idna pyopenssl service-identity ]; 152 }; 153 154 tests = { 155 inherit 156 cassandra-driver 157 klein 158 magic-wormhole 159 scrapy 160 treq 161 txaio 162 txamqp 163 txrequests 164 txtorcon 165 thrift; 166 inherit (nixosTests) buildbot matrix-synapse; 167 }; 168 }; 169 170 meta = with lib; { 171 homepage = "https://github.com/twisted/twisted"; 172 description = "Twisted, an event-driven networking engine written in Python"; 173 longDescription = '' 174 Twisted is an event-driven networking engine written in Python 175 and licensed under the MIT license. 176 ''; 177 license = licenses.mit; 178 maintainers = with maintainers; [ SuperSandro2000 ]; 179 }; 180}