I: pbuilder: network access will be disabled during build I: Current time: Sun Aug 30 02:39:18 -12 2026 I: pbuilder-time-stamp: 1788100758 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz] I: copying local configuration W: --override-config is not set; not updating apt.conf Read the manpage for details. I: mounting /proc filesystem I: mounting /sys filesystem I: creating /{dev,run}/shm I: mounting /dev/pts filesystem I: redirecting /dev/ptmx to /dev/pts/ptmx I: policy-rc.d already exists I: Copying source file I: copying [python-snitun_0.42.0-1.dsc] I: copying [./python-snitun_0.42.0.orig.tar.gz] I: copying [./python-snitun_0.42.0-1.debian.tar.xz] I: Extracting source dpkg-source: warning: cannot verify inline signature for ./python-snitun_0.42.0-1.dsc: no acceptable signature found dpkg-source: info: extracting python-snitun in python-snitun-0.42.0 dpkg-source: info: unpacking python-snitun_0.42.0.orig.tar.gz dpkg-source: info: unpacking python-snitun_0.42.0-1.debian.tar.xz I: Not using root during the build. I: Installing the build-deps I: user script /srv/workspace/pbuilder/3683708/tmp/hooks/D02_print_environment starting I: set BUILDDIR='/build/reproducible-path' BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' BUILDUSERNAME='pbuilder1' BUILD_ARCH='amd64' DEBIAN_FRONTEND='noninteractive' DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=42 ' DISTRIBUTION='unstable' HOME='/root' HOST_ARCH='amd64' IFS=' ' INVOCATION_ID='c5163d3ffb554e5ba5b08a5fdcf96828' LANG='C' LANGUAGE='en_US:en' LC_ALL='C' MAIL='/var/mail/root' OPTIND='1' PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' PBCURRENTCOMMANDLINEOPERATION='build' PBUILDER_OPERATION='build' PBUILDER_PKGDATADIR='/usr/share/pbuilder' PBUILDER_PKGLIBDIR='/usr/lib/pbuilder' PBUILDER_SYSCONFDIR='/etc' PPID='3683708' PS1='# ' PS2='> ' PS4='+ ' PWD='/' SHELL='/bin/bash' SHLVL='2' SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.VZWaXQ49/pbuilderrc_vY3E --distribution unstable --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.VZWaXQ49/b1 --logfile b1/build.log python-snitun_0.42.0-1.dsc' SUDO_GID='111' SUDO_UID='106' SUDO_USER='jenkins' TERM='unknown' TZ='/usr/share/zoneinfo/Etc/GMT+12' USER='root' _='/usr/bin/systemd-run' http_proxy='http://213.165.73.152:3128' I: uname -a Linux ionos15-amd64 6.12.33+deb12-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.33-1~bpo12+1 (2025-07-09) x86_64 GNU/Linux I: ls -l /bin lrwxrwxrwx 1 root root 7 May 12 2025 /bin -> usr/bin I: user script /srv/workspace/pbuilder/3683708/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy Version: 0.invalid.0 Architecture: amd64 Maintainer: Debian Pbuilder Team Description: Dummy package to satisfy dependencies with aptitude - created by pbuilder This package was created automatically by pbuilder to satisfy the build-dependencies of the package being currently built. Depends: debhelper-compat (= 13), dh-sequence-python3, pybuild-plugin-pyproject, python3-all, python3-setuptools, python3-aiohttp, python3-async-timeout, python3-attr, python3-cryptography, python3-pytest, python3-pytest-asyncio, python3-pytest-aiohttp, python3-pytest-timeout dpkg-deb: building package 'pbuilder-satisfydepends-dummy' in '/tmp/satisfydepends-aptitude/pbuilder-satisfydepends-dummy.deb'. Selecting previously unselected package pbuilder-satisfydepends-dummy. (Reading database ... 19849 files and directories currently installed.) Preparing to unpack .../pbuilder-satisfydepends-dummy.deb ... Unpacking pbuilder-satisfydepends-dummy (0.invalid.0) ... dpkg: pbuilder-satisfydepends-dummy: dependency problems, but configuring anyway as you requested: pbuilder-satisfydepends-dummy depends on debhelper-compat (= 13); however: Package debhelper-compat is not installed. pbuilder-satisfydepends-dummy depends on dh-sequence-python3; however: Package dh-sequence-python3 is not installed. pbuilder-satisfydepends-dummy depends on pybuild-plugin-pyproject; however: Package pybuild-plugin-pyproject is not installed. pbuilder-satisfydepends-dummy depends on python3-all; however: Package python3-all is not installed. pbuilder-satisfydepends-dummy depends on python3-setuptools; however: Package python3-setuptools is not installed. pbuilder-satisfydepends-dummy depends on python3-aiohttp; however: Package python3-aiohttp is not installed. pbuilder-satisfydepends-dummy depends on python3-async-timeout; however: Package python3-async-timeout is not installed. pbuilder-satisfydepends-dummy depends on python3-attr; however: Package python3-attr is not installed. pbuilder-satisfydepends-dummy depends on python3-cryptography; however: Package python3-cryptography is not installed. pbuilder-satisfydepends-dummy depends on python3-pytest; however: Package python3-pytest is not installed. pbuilder-satisfydepends-dummy depends on python3-pytest-asyncio; however: Package python3-pytest-asyncio is not installed. pbuilder-satisfydepends-dummy depends on python3-pytest-aiohttp; however: Package python3-pytest-aiohttp is not installed. pbuilder-satisfydepends-dummy depends on python3-pytest-timeout; however: Package python3-pytest-timeout is not installed. Setting up pbuilder-satisfydepends-dummy (0.invalid.0) ... Reading package lists... Building dependency tree... Reading state information... Initializing package states... Writing extended state information... Building tag database... pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) The following NEW packages will be installed: autoconf{a} automake{a} autopoint{a} autotools-dev{a} bsdextrautils{a} debhelper{a} dh-autoreconf{a} dh-python{a} dh-strip-nondeterminism{a} dwz{a} file{a} gettext{a} gettext-base{a} groff-base{a} intltool-debian{a} libarchive-zip-perl{a} libdebhelper-perl{a} libelf1t64{a} libexpat1{a} libffi8{a} libfile-stripnondeterminism-perl{a} libmagic-mgc{a} libmagic1t64{a} libpipeline1{a} libpython3-stdlib{a} libpython3.13-minimal{a} libpython3.13-stdlib{a} libreadline8t64{a} libtool{a} libuchardet0{a} libunistring5{a} libxml2{a} m4{a} man-db{a} media-types{a} netbase{a} po-debconf{a} pybuild-plugin-pyproject{a} python3{a} python3-aiohappyeyeballs{a} python3-aiohttp{a} python3-aiosignal{a} python3-all{a} python3-async-generator{a} python3-async-timeout{a} python3-attr{a} python3-autocommand{a} python3-bcrypt{a} python3-build{a} python3-cffi-backend{a} python3-cryptography{a} python3-frozenlist{a} python3-idna{a} python3-inflect{a} python3-iniconfig{a} python3-installer{a} python3-jaraco.context{a} python3-jaraco.functools{a} python3-jaraco.text{a} python3-minimal{a} python3-more-itertools{a} python3-multidict{a} python3-packaging{a} python3-pkg-resources{a} python3-pluggy{a} python3-propcache{a} python3-pyproject-hooks{a} python3-pytest{a} python3-pytest-aiohttp{a} python3-pytest-asyncio{a} python3-pytest-timeout{a} python3-setuptools{a} python3-typeguard{a} python3-typing-extensions{a} python3-wheel{a} python3-yarl{a} python3-zipp{a} python3.13{a} python3.13-minimal{a} readline-common{a} sensible-utils{a} tzdata{a} The following packages are RECOMMENDED but will NOT be installed: ca-certificates curl libarchive-cpio-perl libjs-jquery libltdl-dev libmail-sendmail-perl lynx python3-aiodns python3-pygments wget 0 packages upgraded, 82 newly installed, 0 to remove and 0 not upgraded. Need to get 21.7 MB of archives. After unpacking 85.5 MB will be used. Writing extended state information... Get: 1 http://deb.debian.org/debian unstable/main amd64 libexpat1 amd64 2.7.1-2 [108 kB] Get: 2 http://deb.debian.org/debian unstable/main amd64 libpython3.13-minimal amd64 3.13.5-2 [862 kB] Get: 3 http://deb.debian.org/debian unstable/main amd64 python3.13-minimal amd64 3.13.5-2 [2224 kB] Get: 4 http://deb.debian.org/debian unstable/main amd64 python3-minimal amd64 3.13.5-1 [27.2 kB] Get: 5 http://deb.debian.org/debian unstable/main amd64 media-types all 13.0.0 [29.3 kB] Get: 6 http://deb.debian.org/debian unstable/main amd64 netbase all 6.5 [12.4 kB] Get: 7 http://deb.debian.org/debian unstable/main amd64 tzdata all 2025b-4 [260 kB] Get: 8 http://deb.debian.org/debian unstable/main amd64 libffi8 amd64 3.4.8-2 [24.1 kB] Get: 9 http://deb.debian.org/debian unstable/main amd64 readline-common all 8.2-6 [69.4 kB] Get: 10 http://deb.debian.org/debian unstable/main amd64 libreadline8t64 amd64 8.2-6 [169 kB] Get: 11 http://deb.debian.org/debian unstable/main amd64 libpython3.13-stdlib amd64 3.13.5-2 [1956 kB] Get: 12 http://deb.debian.org/debian unstable/main amd64 python3.13 amd64 3.13.5-2 [757 kB] Get: 13 http://deb.debian.org/debian unstable/main amd64 libpython3-stdlib amd64 3.13.5-1 [10.2 kB] Get: 14 http://deb.debian.org/debian unstable/main amd64 python3 amd64 3.13.5-1 [28.2 kB] Get: 15 http://deb.debian.org/debian unstable/main amd64 sensible-utils all 0.0.25 [25.0 kB] Get: 16 http://deb.debian.org/debian unstable/main amd64 libmagic-mgc amd64 1:5.46-5 [338 kB] Get: 17 http://deb.debian.org/debian unstable/main amd64 libmagic1t64 amd64 1:5.46-5 [109 kB] Get: 18 http://deb.debian.org/debian unstable/main amd64 file amd64 1:5.46-5 [43.6 kB] Get: 19 http://deb.debian.org/debian unstable/main amd64 gettext-base amd64 0.23.1-2 [243 kB] Get: 20 http://deb.debian.org/debian unstable/main amd64 libuchardet0 amd64 0.0.8-1+b2 [68.9 kB] Get: 21 http://deb.debian.org/debian unstable/main amd64 groff-base amd64 1.23.0-9 [1187 kB] Get: 22 http://deb.debian.org/debian unstable/main amd64 bsdextrautils amd64 2.41-5 [94.6 kB] Get: 23 http://deb.debian.org/debian unstable/main amd64 libpipeline1 amd64 1.5.8-1 [42.0 kB] Get: 24 http://deb.debian.org/debian unstable/main amd64 man-db amd64 2.13.1-1 [1469 kB] Get: 25 http://deb.debian.org/debian unstable/main amd64 m4 amd64 1.4.19-8 [294 kB] Get: 26 http://deb.debian.org/debian unstable/main amd64 autoconf all 2.72-3.1 [494 kB] Get: 27 http://deb.debian.org/debian unstable/main amd64 autotools-dev all 20240727.1 [60.2 kB] Get: 28 http://deb.debian.org/debian unstable/main amd64 automake all 1:1.17-4 [862 kB] Get: 29 http://deb.debian.org/debian unstable/main amd64 autopoint all 0.23.1-2 [770 kB] Get: 30 http://deb.debian.org/debian unstable/main amd64 libdebhelper-perl all 13.24.2 [90.9 kB] Get: 31 http://deb.debian.org/debian unstable/main amd64 libtool all 2.5.4-4 [539 kB] Get: 32 http://deb.debian.org/debian unstable/main amd64 dh-autoreconf all 20 [17.1 kB] Get: 33 http://deb.debian.org/debian unstable/main amd64 libarchive-zip-perl all 1.68-1 [104 kB] Get: 34 http://deb.debian.org/debian unstable/main amd64 libfile-stripnondeterminism-perl all 1.14.1-2 [19.7 kB] Get: 35 http://deb.debian.org/debian unstable/main amd64 dh-strip-nondeterminism all 1.14.1-2 [8620 B] Get: 36 http://deb.debian.org/debian unstable/main amd64 libelf1t64 amd64 0.192-4 [189 kB] Get: 37 http://deb.debian.org/debian unstable/main amd64 dwz amd64 0.15-1+b1 [110 kB] Get: 38 http://deb.debian.org/debian unstable/main amd64 libunistring5 amd64 1.3-2 [477 kB] Get: 39 http://deb.debian.org/debian unstable/main amd64 libxml2 amd64 2.12.7+dfsg+really2.9.14-2 [698 kB] Get: 40 http://deb.debian.org/debian unstable/main amd64 gettext amd64 0.23.1-2 [1680 kB] Get: 41 http://deb.debian.org/debian unstable/main amd64 intltool-debian all 0.35.0+20060710.6 [22.9 kB] Get: 42 http://deb.debian.org/debian unstable/main amd64 po-debconf all 1.0.21+nmu1 [248 kB] Get: 43 http://deb.debian.org/debian unstable/main amd64 debhelper all 13.24.2 [919 kB] Get: 44 http://deb.debian.org/debian unstable/main amd64 dh-python all 6.20250414 [116 kB] Get: 45 http://deb.debian.org/debian unstable/main amd64 python3-packaging all 25.0-1 [56.6 kB] Get: 46 http://deb.debian.org/debian unstable/main amd64 python3-pyproject-hooks all 1.2.0-1 [11.7 kB] Get: 47 http://deb.debian.org/debian unstable/main amd64 python3-wheel all 0.46.1-2 [21.7 kB] Get: 48 http://deb.debian.org/debian unstable/main amd64 python3-build all 1.2.2-2 [36.1 kB] Get: 49 http://deb.debian.org/debian unstable/main amd64 python3-installer all 0.7.0+dfsg1-3 [18.6 kB] Get: 50 http://deb.debian.org/debian unstable/main amd64 pybuild-plugin-pyproject all 6.20250414 [11.8 kB] Get: 51 http://deb.debian.org/debian unstable/main amd64 python3-aiohappyeyeballs all 2.6.1-1 [14.4 kB] Get: 52 http://deb.debian.org/debian unstable/main amd64 python3-idna all 3.10-1 [42.0 kB] Get: 53 http://deb.debian.org/debian unstable/main amd64 python3-typing-extensions all 4.13.2-1 [90.5 kB] Get: 54 http://deb.debian.org/debian unstable/main amd64 python3-multidict amd64 6.4.3-1 [52.8 kB] Get: 55 http://deb.debian.org/debian unstable/main amd64 python3-propcache amd64 0.3.1-1 [40.5 kB] Get: 56 http://deb.debian.org/debian unstable/main amd64 python3-yarl amd64 1.19.0-1 [96.5 kB] Get: 57 http://deb.debian.org/debian unstable/main amd64 python3-async-timeout all 5.0.1-1 [8324 B] Get: 58 http://deb.debian.org/debian unstable/main amd64 python3-frozenlist amd64 1.6.0-1 [99.7 kB] Get: 59 http://deb.debian.org/debian unstable/main amd64 python3-aiosignal all 1.3.2-1 [6100 B] Get: 60 http://deb.debian.org/debian unstable/main amd64 python3-attr all 25.3.0-1 [69.5 kB] Get: 61 http://deb.debian.org/debian unstable/main amd64 python3-aiohttp amd64 3.11.16-1 [405 kB] Get: 62 http://deb.debian.org/debian unstable/main amd64 python3-all amd64 3.13.5-1 [1048 B] Get: 63 http://deb.debian.org/debian unstable/main amd64 python3-async-generator all 1.10-4 [17.4 kB] Get: 64 http://deb.debian.org/debian unstable/main amd64 python3-autocommand all 2.2.2-3 [13.6 kB] Get: 65 http://deb.debian.org/debian unstable/main amd64 python3-bcrypt amd64 4.2.0-2.1+b1 [211 kB] Get: 66 http://deb.debian.org/debian unstable/main amd64 python3-cffi-backend amd64 1.17.1-3 [93.4 kB] Get: 67 http://deb.debian.org/debian unstable/main amd64 python3-cryptography amd64 43.0.0-3 [941 kB] Get: 68 http://deb.debian.org/debian unstable/main amd64 python3-more-itertools all 10.7.0-1 [67.4 kB] Get: 69 http://deb.debian.org/debian unstable/main amd64 python3-typeguard all 4.4.2-1 [37.3 kB] Get: 70 http://deb.debian.org/debian unstable/main amd64 python3-inflect all 7.3.1-2 [32.4 kB] Get: 71 http://deb.debian.org/debian unstable/main amd64 python3-iniconfig all 1.1.1-2 [6396 B] Get: 72 http://deb.debian.org/debian unstable/main amd64 python3-jaraco.functools all 4.1.0-1 [12.0 kB] Get: 73 http://deb.debian.org/debian unstable/main amd64 python3-pkg-resources all 78.1.1-0.1 [224 kB] Get: 74 http://deb.debian.org/debian unstable/main amd64 python3-jaraco.text all 4.0.0-1 [11.4 kB] Get: 75 http://deb.debian.org/debian unstable/main amd64 python3-zipp all 3.21.0-1 [10.6 kB] Get: 76 http://deb.debian.org/debian unstable/main amd64 python3-setuptools all 78.1.1-0.1 [738 kB] Get: 77 http://deb.debian.org/debian unstable/main amd64 python3-jaraco.context all 6.0.1-1 [8276 B] Get: 78 http://deb.debian.org/debian unstable/main amd64 python3-pluggy all 1.5.0-1 [26.9 kB] Get: 79 http://deb.debian.org/debian unstable/main amd64 python3-pytest all 8.3.5-2 [250 kB] Get: 80 http://deb.debian.org/debian unstable/main amd64 python3-pytest-asyncio all 0.25.1-1 [16.7 kB] Get: 81 http://deb.debian.org/debian unstable/main amd64 python3-pytest-aiohttp all 1.1.0-1 [6192 B] Get: 82 http://deb.debian.org/debian unstable/main amd64 python3-pytest-timeout all 2.3.1-2 [22.0 kB] Fetched 21.7 MB in 7s (3002 kB/s) Preconfiguring packages ... Selecting previously unselected package libexpat1:amd64. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 19849 files and directories currently installed.) Preparing to unpack .../libexpat1_2.7.1-2_amd64.deb ... Unpacking libexpat1:amd64 (2.7.1-2) ... Selecting previously unselected package libpython3.13-minimal:amd64. Preparing to unpack .../libpython3.13-minimal_3.13.5-2_amd64.deb ... Unpacking libpython3.13-minimal:amd64 (3.13.5-2) ... Selecting previously unselected package python3.13-minimal. Preparing to unpack .../python3.13-minimal_3.13.5-2_amd64.deb ... Unpacking python3.13-minimal (3.13.5-2) ... Setting up libpython3.13-minimal:amd64 (3.13.5-2) ... Setting up libexpat1:amd64 (2.7.1-2) ... Setting up python3.13-minimal (3.13.5-2) ... Selecting previously unselected package python3-minimal. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 20183 files and directories currently installed.) Preparing to unpack .../0-python3-minimal_3.13.5-1_amd64.deb ... Unpacking python3-minimal (3.13.5-1) ... Selecting previously unselected package media-types. Preparing to unpack .../1-media-types_13.0.0_all.deb ... Unpacking media-types (13.0.0) ... Selecting previously unselected package netbase. Preparing to unpack .../2-netbase_6.5_all.deb ... Unpacking netbase (6.5) ... Selecting previously unselected package tzdata. Preparing to unpack .../3-tzdata_2025b-4_all.deb ... Unpacking tzdata (2025b-4) ... Selecting previously unselected package libffi8:amd64. Preparing to unpack .../4-libffi8_3.4.8-2_amd64.deb ... Unpacking libffi8:amd64 (3.4.8-2) ... Selecting previously unselected package readline-common. Preparing to unpack .../5-readline-common_8.2-6_all.deb ... Unpacking readline-common (8.2-6) ... Selecting previously unselected package libreadline8t64:amd64. Preparing to unpack .../6-libreadline8t64_8.2-6_amd64.deb ... Adding 'diversion of /lib/x86_64-linux-gnu/libhistory.so.8 to /lib/x86_64-linux-gnu/libhistory.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/x86_64-linux-gnu/libhistory.so.8.2 to /lib/x86_64-linux-gnu/libhistory.so.8.2.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/x86_64-linux-gnu/libreadline.so.8 to /lib/x86_64-linux-gnu/libreadline.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/x86_64-linux-gnu/libreadline.so.8.2 to /lib/x86_64-linux-gnu/libreadline.so.8.2.usr-is-merged by libreadline8t64' Unpacking libreadline8t64:amd64 (8.2-6) ... Selecting previously unselected package libpython3.13-stdlib:amd64. Preparing to unpack .../7-libpython3.13-stdlib_3.13.5-2_amd64.deb ... Unpacking libpython3.13-stdlib:amd64 (3.13.5-2) ... Selecting previously unselected package python3.13. Preparing to unpack .../8-python3.13_3.13.5-2_amd64.deb ... Unpacking python3.13 (3.13.5-2) ... Selecting previously unselected package libpython3-stdlib:amd64. Preparing to unpack .../9-libpython3-stdlib_3.13.5-1_amd64.deb ... Unpacking libpython3-stdlib:amd64 (3.13.5-1) ... Setting up python3-minimal (3.13.5-1) ... Selecting previously unselected package python3. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 21198 files and directories currently installed.) Preparing to unpack .../00-python3_3.13.5-1_amd64.deb ... Unpacking python3 (3.13.5-1) ... Selecting previously unselected package sensible-utils. Preparing to unpack .../01-sensible-utils_0.0.25_all.deb ... Unpacking sensible-utils (0.0.25) ... Selecting previously unselected package libmagic-mgc. Preparing to unpack .../02-libmagic-mgc_1%3a5.46-5_amd64.deb ... Unpacking libmagic-mgc (1:5.46-5) ... Selecting previously unselected package libmagic1t64:amd64. Preparing to unpack .../03-libmagic1t64_1%3a5.46-5_amd64.deb ... Unpacking libmagic1t64:amd64 (1:5.46-5) ... Selecting previously unselected package file. Preparing to unpack .../04-file_1%3a5.46-5_amd64.deb ... Unpacking file (1:5.46-5) ... Selecting previously unselected package gettext-base. Preparing to unpack .../05-gettext-base_0.23.1-2_amd64.deb ... Unpacking gettext-base (0.23.1-2) ... Selecting previously unselected package libuchardet0:amd64. Preparing to unpack .../06-libuchardet0_0.0.8-1+b2_amd64.deb ... Unpacking libuchardet0:amd64 (0.0.8-1+b2) ... Selecting previously unselected package groff-base. Preparing to unpack .../07-groff-base_1.23.0-9_amd64.deb ... Unpacking groff-base (1.23.0-9) ... Selecting previously unselected package bsdextrautils. Preparing to unpack .../08-bsdextrautils_2.41-5_amd64.deb ... Unpacking bsdextrautils (2.41-5) ... Selecting previously unselected package libpipeline1:amd64. Preparing to unpack .../09-libpipeline1_1.5.8-1_amd64.deb ... Unpacking libpipeline1:amd64 (1.5.8-1) ... Selecting previously unselected package man-db. Preparing to unpack .../10-man-db_2.13.1-1_amd64.deb ... Unpacking man-db (2.13.1-1) ... Selecting previously unselected package m4. Preparing to unpack .../11-m4_1.4.19-8_amd64.deb ... Unpacking m4 (1.4.19-8) ... Selecting previously unselected package autoconf. Preparing to unpack .../12-autoconf_2.72-3.1_all.deb ... Unpacking autoconf (2.72-3.1) ... Selecting previously unselected package autotools-dev. Preparing to unpack .../13-autotools-dev_20240727.1_all.deb ... Unpacking autotools-dev (20240727.1) ... Selecting previously unselected package automake. Preparing to unpack .../14-automake_1%3a1.17-4_all.deb ... Unpacking automake (1:1.17-4) ... Selecting previously unselected package autopoint. Preparing to unpack .../15-autopoint_0.23.1-2_all.deb ... Unpacking autopoint (0.23.1-2) ... Selecting previously unselected package libdebhelper-perl. Preparing to unpack .../16-libdebhelper-perl_13.24.2_all.deb ... Unpacking libdebhelper-perl (13.24.2) ... Selecting previously unselected package libtool. Preparing to unpack .../17-libtool_2.5.4-4_all.deb ... Unpacking libtool (2.5.4-4) ... Selecting previously unselected package dh-autoreconf. Preparing to unpack .../18-dh-autoreconf_20_all.deb ... Unpacking dh-autoreconf (20) ... Selecting previously unselected package libarchive-zip-perl. Preparing to unpack .../19-libarchive-zip-perl_1.68-1_all.deb ... Unpacking libarchive-zip-perl (1.68-1) ... Selecting previously unselected package libfile-stripnondeterminism-perl. Preparing to unpack .../20-libfile-stripnondeterminism-perl_1.14.1-2_all.deb ... Unpacking libfile-stripnondeterminism-perl (1.14.1-2) ... Selecting previously unselected package dh-strip-nondeterminism. Preparing to unpack .../21-dh-strip-nondeterminism_1.14.1-2_all.deb ... Unpacking dh-strip-nondeterminism (1.14.1-2) ... Selecting previously unselected package libelf1t64:amd64. Preparing to unpack .../22-libelf1t64_0.192-4_amd64.deb ... Unpacking libelf1t64:amd64 (0.192-4) ... Selecting previously unselected package dwz. Preparing to unpack .../23-dwz_0.15-1+b1_amd64.deb ... Unpacking dwz (0.15-1+b1) ... Selecting previously unselected package libunistring5:amd64. Preparing to unpack .../24-libunistring5_1.3-2_amd64.deb ... Unpacking libunistring5:amd64 (1.3-2) ... Selecting previously unselected package libxml2:amd64. Preparing to unpack .../25-libxml2_2.12.7+dfsg+really2.9.14-2_amd64.deb ... Unpacking libxml2:amd64 (2.12.7+dfsg+really2.9.14-2) ... Selecting previously unselected package gettext. Preparing to unpack .../26-gettext_0.23.1-2_amd64.deb ... Unpacking gettext (0.23.1-2) ... Selecting previously unselected package intltool-debian. Preparing to unpack .../27-intltool-debian_0.35.0+20060710.6_all.deb ... Unpacking intltool-debian (0.35.0+20060710.6) ... Selecting previously unselected package po-debconf. Preparing to unpack .../28-po-debconf_1.0.21+nmu1_all.deb ... Unpacking po-debconf (1.0.21+nmu1) ... Selecting previously unselected package debhelper. Preparing to unpack .../29-debhelper_13.24.2_all.deb ... Unpacking debhelper (13.24.2) ... Selecting previously unselected package dh-python. Preparing to unpack .../30-dh-python_6.20250414_all.deb ... Unpacking dh-python (6.20250414) ... Selecting previously unselected package python3-packaging. Preparing to unpack .../31-python3-packaging_25.0-1_all.deb ... Unpacking python3-packaging (25.0-1) ... Selecting previously unselected package python3-pyproject-hooks. Preparing to unpack .../32-python3-pyproject-hooks_1.2.0-1_all.deb ... Unpacking python3-pyproject-hooks (1.2.0-1) ... Selecting previously unselected package python3-wheel. Preparing to unpack .../33-python3-wheel_0.46.1-2_all.deb ... Unpacking python3-wheel (0.46.1-2) ... Selecting previously unselected package python3-build. Preparing to unpack .../34-python3-build_1.2.2-2_all.deb ... Unpacking python3-build (1.2.2-2) ... Selecting previously unselected package python3-installer. Preparing to unpack .../35-python3-installer_0.7.0+dfsg1-3_all.deb ... Unpacking python3-installer (0.7.0+dfsg1-3) ... Selecting previously unselected package pybuild-plugin-pyproject. Preparing to unpack .../36-pybuild-plugin-pyproject_6.20250414_all.deb ... Unpacking pybuild-plugin-pyproject (6.20250414) ... Selecting previously unselected package python3-aiohappyeyeballs. Preparing to unpack .../37-python3-aiohappyeyeballs_2.6.1-1_all.deb ... Unpacking python3-aiohappyeyeballs (2.6.1-1) ... Selecting previously unselected package python3-idna. Preparing to unpack .../38-python3-idna_3.10-1_all.deb ... Unpacking python3-idna (3.10-1) ... Selecting previously unselected package python3-typing-extensions. Preparing to unpack .../39-python3-typing-extensions_4.13.2-1_all.deb ... Unpacking python3-typing-extensions (4.13.2-1) ... Selecting previously unselected package python3-multidict. Preparing to unpack .../40-python3-multidict_6.4.3-1_amd64.deb ... Unpacking python3-multidict (6.4.3-1) ... Selecting previously unselected package python3-propcache. Preparing to unpack .../41-python3-propcache_0.3.1-1_amd64.deb ... Unpacking python3-propcache (0.3.1-1) ... Selecting previously unselected package python3-yarl. Preparing to unpack .../42-python3-yarl_1.19.0-1_amd64.deb ... Unpacking python3-yarl (1.19.0-1) ... Selecting previously unselected package python3-async-timeout. Preparing to unpack .../43-python3-async-timeout_5.0.1-1_all.deb ... Unpacking python3-async-timeout (5.0.1-1) ... Selecting previously unselected package python3-frozenlist. Preparing to unpack .../44-python3-frozenlist_1.6.0-1_amd64.deb ... Unpacking python3-frozenlist (1.6.0-1) ... Selecting previously unselected package python3-aiosignal. Preparing to unpack .../45-python3-aiosignal_1.3.2-1_all.deb ... Unpacking python3-aiosignal (1.3.2-1) ... Selecting previously unselected package python3-attr. Preparing to unpack .../46-python3-attr_25.3.0-1_all.deb ... Unpacking python3-attr (25.3.0-1) ... Selecting previously unselected package python3-aiohttp. Preparing to unpack .../47-python3-aiohttp_3.11.16-1_amd64.deb ... Unpacking python3-aiohttp (3.11.16-1) ... Selecting previously unselected package python3-all. Preparing to unpack .../48-python3-all_3.13.5-1_amd64.deb ... Unpacking python3-all (3.13.5-1) ... Selecting previously unselected package python3-async-generator. Preparing to unpack .../49-python3-async-generator_1.10-4_all.deb ... Unpacking python3-async-generator (1.10-4) ... Selecting previously unselected package python3-autocommand. Preparing to unpack .../50-python3-autocommand_2.2.2-3_all.deb ... Unpacking python3-autocommand (2.2.2-3) ... Selecting previously unselected package python3-bcrypt. Preparing to unpack .../51-python3-bcrypt_4.2.0-2.1+b1_amd64.deb ... Unpacking python3-bcrypt (4.2.0-2.1+b1) ... Selecting previously unselected package python3-cffi-backend:amd64. Preparing to unpack .../52-python3-cffi-backend_1.17.1-3_amd64.deb ... Unpacking python3-cffi-backend:amd64 (1.17.1-3) ... Selecting previously unselected package python3-cryptography. Preparing to unpack .../53-python3-cryptography_43.0.0-3_amd64.deb ... Unpacking python3-cryptography (43.0.0-3) ... Selecting previously unselected package python3-more-itertools. Preparing to unpack .../54-python3-more-itertools_10.7.0-1_all.deb ... Unpacking python3-more-itertools (10.7.0-1) ... Selecting previously unselected package python3-typeguard. Preparing to unpack .../55-python3-typeguard_4.4.2-1_all.deb ... Unpacking python3-typeguard (4.4.2-1) ... Selecting previously unselected package python3-inflect. Preparing to unpack .../56-python3-inflect_7.3.1-2_all.deb ... Unpacking python3-inflect (7.3.1-2) ... Selecting previously unselected package python3-iniconfig. Preparing to unpack .../57-python3-iniconfig_1.1.1-2_all.deb ... Unpacking python3-iniconfig (1.1.1-2) ... Selecting previously unselected package python3-jaraco.functools. Preparing to unpack .../58-python3-jaraco.functools_4.1.0-1_all.deb ... Unpacking python3-jaraco.functools (4.1.0-1) ... Selecting previously unselected package python3-pkg-resources. Preparing to unpack .../59-python3-pkg-resources_78.1.1-0.1_all.deb ... Unpacking python3-pkg-resources (78.1.1-0.1) ... Selecting previously unselected package python3-jaraco.text. Preparing to unpack .../60-python3-jaraco.text_4.0.0-1_all.deb ... Unpacking python3-jaraco.text (4.0.0-1) ... Selecting previously unselected package python3-zipp. Preparing to unpack .../61-python3-zipp_3.21.0-1_all.deb ... Unpacking python3-zipp (3.21.0-1) ... Selecting previously unselected package python3-setuptools. Preparing to unpack .../62-python3-setuptools_78.1.1-0.1_all.deb ... Unpacking python3-setuptools (78.1.1-0.1) ... Selecting previously unselected package python3-jaraco.context. Preparing to unpack .../63-python3-jaraco.context_6.0.1-1_all.deb ... Unpacking python3-jaraco.context (6.0.1-1) ... Selecting previously unselected package python3-pluggy. Preparing to unpack .../64-python3-pluggy_1.5.0-1_all.deb ... Unpacking python3-pluggy (1.5.0-1) ... Selecting previously unselected package python3-pytest. Preparing to unpack .../65-python3-pytest_8.3.5-2_all.deb ... Unpacking python3-pytest (8.3.5-2) ... Selecting previously unselected package python3-pytest-asyncio. Preparing to unpack .../66-python3-pytest-asyncio_0.25.1-1_all.deb ... Unpacking python3-pytest-asyncio (0.25.1-1) ... Selecting previously unselected package python3-pytest-aiohttp. Preparing to unpack .../67-python3-pytest-aiohttp_1.1.0-1_all.deb ... Unpacking python3-pytest-aiohttp (1.1.0-1) ... Selecting previously unselected package python3-pytest-timeout. Preparing to unpack .../68-python3-pytest-timeout_2.3.1-2_all.deb ... Unpacking python3-pytest-timeout (2.3.1-2) ... Setting up media-types (13.0.0) ... Setting up libpipeline1:amd64 (1.5.8-1) ... Setting up bsdextrautils (2.41-5) ... Setting up libmagic-mgc (1:5.46-5) ... Setting up libarchive-zip-perl (1.68-1) ... Setting up libdebhelper-perl (13.24.2) ... Setting up libmagic1t64:amd64 (1:5.46-5) ... Setting up gettext-base (0.23.1-2) ... Setting up m4 (1.4.19-8) ... Setting up file (1:5.46-5) ... Setting up libelf1t64:amd64 (0.192-4) ... Setting up tzdata (2025b-4) ... Current default time zone: 'Etc/UTC' Local time is now: Sun Aug 30 14:39:57 UTC 2026. Universal Time is now: Sun Aug 30 14:39:57 UTC 2026. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up autotools-dev (20240727.1) ... Setting up libunistring5:amd64 (1.3-2) ... Setting up autopoint (0.23.1-2) ... Setting up autoconf (2.72-3.1) ... Setting up libffi8:amd64 (3.4.8-2) ... Setting up dwz (0.15-1+b1) ... Setting up sensible-utils (0.0.25) ... Setting up libuchardet0:amd64 (0.0.8-1+b2) ... Setting up netbase (6.5) ... Setting up readline-common (8.2-6) ... Setting up libxml2:amd64 (2.12.7+dfsg+really2.9.14-2) ... Setting up automake (1:1.17-4) ... update-alternatives: using /usr/bin/automake-1.17 to provide /usr/bin/automake (automake) in auto mode Setting up libfile-stripnondeterminism-perl (1.14.1-2) ... Setting up gettext (0.23.1-2) ... Setting up libtool (2.5.4-4) ... Setting up intltool-debian (0.35.0+20060710.6) ... Setting up dh-autoreconf (20) ... Setting up libreadline8t64:amd64 (8.2-6) ... Setting up dh-strip-nondeterminism (1.14.1-2) ... Setting up groff-base (1.23.0-9) ... Setting up libpython3.13-stdlib:amd64 (3.13.5-2) ... Setting up libpython3-stdlib:amd64 (3.13.5-1) ... Setting up python3.13 (3.13.5-2) ... Setting up po-debconf (1.0.21+nmu1) ... Setting up python3 (3.13.5-1) ... Setting up python3-zipp (3.21.0-1) ... Setting up python3-autocommand (2.2.2-3) ... Setting up man-db (2.13.1-1) ... Not building database; man-db/auto-update is not 'true'. Setting up python3-multidict (6.4.3-1) ... Setting up python3-frozenlist (1.6.0-1) ... Setting up python3-aiosignal (1.3.2-1) ... Setting up python3-async-timeout (5.0.1-1) ... Setting up python3-packaging (25.0-1) ... Setting up python3-pyproject-hooks (1.2.0-1) ... Setting up python3-idna (3.10-1) ... Setting up python3-typing-extensions (4.13.2-1) ... Setting up python3-aiohappyeyeballs (2.6.1-1) ... Setting up python3-installer (0.7.0+dfsg1-3) ... Setting up python3-pluggy (1.5.0-1) ... Setting up python3-propcache (0.3.1-1) ... Setting up python3-yarl (1.19.0-1) ... Setting up python3-cffi-backend:amd64 (1.17.1-3) ... Setting up dh-python (6.20250414) ... Setting up python3-more-itertools (10.7.0-1) ... Setting up python3-iniconfig (1.1.1-2) ... Setting up python3-attr (25.3.0-1) ... Setting up python3-jaraco.functools (4.1.0-1) ... Setting up python3-async-generator (1.10-4) ... Setting up python3-jaraco.context (6.0.1-1) ... Setting up python3-pytest (8.3.5-2) ... Setting up python3-bcrypt (4.2.0-2.1+b1) ... Setting up python3-typeguard (4.4.2-1) ... Setting up python3-aiohttp (3.11.16-1) ... Setting up python3-all (3.13.5-1) ... Setting up debhelper (13.24.2) ... Setting up python3-wheel (0.46.1-2) ... Setting up python3-inflect (7.3.1-2) ... Setting up python3-jaraco.text (4.0.0-1) ... Setting up python3-cryptography (43.0.0-3) ... Setting up python3-pytest-asyncio (0.25.1-1) ... Setting up python3-build (1.2.2-2) ... Setting up python3-pkg-resources (78.1.1-0.1) ... Setting up python3-pytest-aiohttp (1.1.0-1) ... Setting up python3-setuptools (78.1.1-0.1) ... Setting up python3-pytest-timeout (2.3.1-2) ... Setting up pybuild-plugin-pyproject (6.20250414) ... Processing triggers for libc-bin (2.41-11) ... Reading package lists... Building dependency tree... Reading state information... Reading extended state information... Initializing package states... Writing extended state information... Building tag database... -> Finished parsing the build-deps I: Building the package I: Running cd /build/reproducible-path/python-snitun-0.42.0/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S > ../python-snitun_0.42.0-1_source.changes dpkg-buildpackage: info: source package python-snitun dpkg-buildpackage: info: source version 0.42.0-1 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by Edward Betts dpkg-source --before-build . dpkg-buildpackage: info: host architecture amd64 debian/rules clean dh clean --buildsystem=pybuild dh_auto_clean -O--buildsystem=pybuild dh_autoreconf_clean -O--buildsystem=pybuild dh_clean -O--buildsystem=pybuild debian/rules binary dh binary --buildsystem=pybuild dh_update_autotools_config -O--buildsystem=pybuild dh_autoreconf -O--buildsystem=pybuild dh_auto_configure -O--buildsystem=pybuild dh_auto_build -O--buildsystem=pybuild I: pybuild plugin_pyproject:129: Building wheel for python3.13 with "build" module I: pybuild base:311: python3.13 -m build --skip-dependency-check --no-isolation --wheel --outdir /build/reproducible-path/python-snitun-0.42.0/.pybuild/cpython3_3.13 * Building wheel... /usr/lib/python3/dist-packages/setuptools/config/_apply_pyprojecttoml.py:82: SetuptoolsDeprecationWarning: `project.license` as a TOML table is deprecated !! ******************************************************************************** Please use a simple string containing a SPDX expression for `project.license`. You can also use `project.license-files`. (Both options available on setuptools>=77.0.0). This deprecation is overdue, please update your project and remove deprecated calls to avoid build errors in the future. See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. ******************************************************************************** !! corresp(dist, value, root_dir) /usr/lib/python3/dist-packages/setuptools/config/_apply_pyprojecttoml.py:61: SetuptoolsDeprecationWarning: License classifiers are deprecated. !! ******************************************************************************** Please consider removing the following classifiers in favor of a SPDX license expression: License :: OSI Approved :: GNU General Public License v3 (GPLv3) See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. ******************************************************************************** !! dist._finalize_license_expression() /usr/lib/python3/dist-packages/setuptools/dist.py:759: SetuptoolsDeprecationWarning: License classifiers are deprecated. !! ******************************************************************************** Please consider removing the following classifiers in favor of a SPDX license expression: License :: OSI Approved :: GNU General Public License v3 (GPLv3) See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. ******************************************************************************** !! self._finalize_license_expression() running bdist_wheel running build running build_py creating build/lib/snitun copying snitun/__init__.py -> build/lib/snitun copying snitun/exceptions.py -> build/lib/snitun creating build/lib/snitun/utils copying snitun/utils/aiohttp_client.py -> build/lib/snitun/utils copying snitun/utils/server.py -> build/lib/snitun/utils copying snitun/utils/ipaddress.py -> build/lib/snitun/utils copying snitun/utils/__init__.py -> build/lib/snitun/utils copying snitun/utils/asyncio.py -> build/lib/snitun/utils copying snitun/utils/aes.py -> build/lib/snitun/utils creating build/lib/snitun/multiplexer copying snitun/multiplexer/message.py -> build/lib/snitun/multiplexer copying snitun/multiplexer/queue.py -> build/lib/snitun/multiplexer copying snitun/multiplexer/crypto.py -> build/lib/snitun/multiplexer copying snitun/multiplexer/core.py -> build/lib/snitun/multiplexer copying snitun/multiplexer/channel.py -> build/lib/snitun/multiplexer copying snitun/multiplexer/__init__.py -> build/lib/snitun/multiplexer copying snitun/multiplexer/const.py -> build/lib/snitun/multiplexer creating build/lib/snitun/client copying snitun/client/client_peer.py -> build/lib/snitun/client copying snitun/client/__init__.py -> build/lib/snitun/client copying snitun/client/connector.py -> build/lib/snitun/client creating build/lib/snitun/server copying snitun/server/peer_manager.py -> build/lib/snitun/server copying snitun/server/listener_peer.py -> build/lib/snitun/server copying snitun/server/worker.py -> build/lib/snitun/server copying snitun/server/run.py -> build/lib/snitun/server copying snitun/server/peer.py -> build/lib/snitun/server copying snitun/server/__init__.py -> build/lib/snitun/server copying snitun/server/sni.py -> build/lib/snitun/server copying snitun/server/listener_sni.py -> build/lib/snitun/server running egg_info creating snitun.egg-info writing snitun.egg-info/PKG-INFO writing dependency_links to snitun.egg-info/dependency_links.txt writing requirements to snitun.egg-info/requires.txt writing top-level names to snitun.egg-info/top_level.txt writing manifest file 'snitun.egg-info/SOURCES.txt' reading manifest file 'snitun.egg-info/SOURCES.txt' adding license file 'LICENSE' writing manifest file 'snitun.egg-info/SOURCES.txt' installing to build/bdist.linux-x86_64/wheel running install running install_lib creating build/bdist.linux-x86_64/wheel creating build/bdist.linux-x86_64/wheel/snitun creating build/bdist.linux-x86_64/wheel/snitun/utils copying build/lib/snitun/utils/aiohttp_client.py -> build/bdist.linux-x86_64/wheel/./snitun/utils copying build/lib/snitun/utils/server.py -> build/bdist.linux-x86_64/wheel/./snitun/utils copying build/lib/snitun/utils/ipaddress.py -> build/bdist.linux-x86_64/wheel/./snitun/utils copying build/lib/snitun/utils/__init__.py -> build/bdist.linux-x86_64/wheel/./snitun/utils copying build/lib/snitun/utils/asyncio.py -> build/bdist.linux-x86_64/wheel/./snitun/utils copying build/lib/snitun/utils/aes.py -> build/bdist.linux-x86_64/wheel/./snitun/utils creating build/bdist.linux-x86_64/wheel/snitun/multiplexer copying build/lib/snitun/multiplexer/message.py -> build/bdist.linux-x86_64/wheel/./snitun/multiplexer copying build/lib/snitun/multiplexer/queue.py -> build/bdist.linux-x86_64/wheel/./snitun/multiplexer copying build/lib/snitun/multiplexer/crypto.py -> build/bdist.linux-x86_64/wheel/./snitun/multiplexer copying build/lib/snitun/multiplexer/core.py -> build/bdist.linux-x86_64/wheel/./snitun/multiplexer copying build/lib/snitun/multiplexer/channel.py -> build/bdist.linux-x86_64/wheel/./snitun/multiplexer copying build/lib/snitun/multiplexer/__init__.py -> build/bdist.linux-x86_64/wheel/./snitun/multiplexer copying build/lib/snitun/multiplexer/const.py -> build/bdist.linux-x86_64/wheel/./snitun/multiplexer copying build/lib/snitun/__init__.py -> build/bdist.linux-x86_64/wheel/./snitun creating build/bdist.linux-x86_64/wheel/snitun/client copying build/lib/snitun/client/client_peer.py -> build/bdist.linux-x86_64/wheel/./snitun/client copying build/lib/snitun/client/__init__.py -> build/bdist.linux-x86_64/wheel/./snitun/client copying build/lib/snitun/client/connector.py -> build/bdist.linux-x86_64/wheel/./snitun/client creating build/bdist.linux-x86_64/wheel/snitun/server copying build/lib/snitun/server/peer_manager.py -> build/bdist.linux-x86_64/wheel/./snitun/server copying build/lib/snitun/server/listener_peer.py -> build/bdist.linux-x86_64/wheel/./snitun/server copying build/lib/snitun/server/worker.py -> build/bdist.linux-x86_64/wheel/./snitun/server copying build/lib/snitun/server/run.py -> build/bdist.linux-x86_64/wheel/./snitun/server copying build/lib/snitun/server/peer.py -> build/bdist.linux-x86_64/wheel/./snitun/server copying build/lib/snitun/server/__init__.py -> build/bdist.linux-x86_64/wheel/./snitun/server copying build/lib/snitun/server/sni.py -> build/bdist.linux-x86_64/wheel/./snitun/server copying build/lib/snitun/server/listener_sni.py -> build/bdist.linux-x86_64/wheel/./snitun/server copying build/lib/snitun/exceptions.py -> build/bdist.linux-x86_64/wheel/./snitun running install_egg_info Copying snitun.egg-info to build/bdist.linux-x86_64/wheel/./snitun-0.0.0.egg-info running install_scripts creating build/bdist.linux-x86_64/wheel/snitun-0.0.0.dist-info/WHEEL creating '/build/reproducible-path/python-snitun-0.42.0/.pybuild/cpython3_3.13/.tmp-_brxbvly/snitun-0.0.0-py3-none-any.whl' and adding 'build/bdist.linux-x86_64/wheel' to it adding 'snitun/__init__.py' adding 'snitun/exceptions.py' adding 'snitun/client/__init__.py' adding 'snitun/client/client_peer.py' adding 'snitun/client/connector.py' adding 'snitun/multiplexer/__init__.py' adding 'snitun/multiplexer/channel.py' adding 'snitun/multiplexer/const.py' adding 'snitun/multiplexer/core.py' adding 'snitun/multiplexer/crypto.py' adding 'snitun/multiplexer/message.py' adding 'snitun/multiplexer/queue.py' adding 'snitun/server/__init__.py' adding 'snitun/server/listener_peer.py' adding 'snitun/server/listener_sni.py' adding 'snitun/server/peer.py' adding 'snitun/server/peer_manager.py' adding 'snitun/server/run.py' adding 'snitun/server/sni.py' adding 'snitun/server/worker.py' adding 'snitun/utils/__init__.py' adding 'snitun/utils/aes.py' adding 'snitun/utils/aiohttp_client.py' adding 'snitun/utils/asyncio.py' adding 'snitun/utils/ipaddress.py' adding 'snitun/utils/server.py' adding 'snitun-0.0.0.dist-info/licenses/LICENSE' adding 'snitun-0.0.0.dist-info/METADATA' adding 'snitun-0.0.0.dist-info/WHEEL' adding 'snitun-0.0.0.dist-info/top_level.txt' adding 'snitun-0.0.0.dist-info/RECORD' removing build/bdist.linux-x86_64/wheel Successfully built snitun-0.0.0-py3-none-any.whl I: pybuild plugin_pyproject:144: Unpacking wheel built for python3.13 with "installer" module dh_auto_test -O--buildsystem=pybuild I: pybuild base:311: cd /build/reproducible-path/python-snitun-0.42.0/.pybuild/cpython3_3.13/build; python3.13 -m pytest --ignore=tests/benchmarks /usr/lib/python3/dist-packages/pytest_asyncio/plugin.py:207: PytestDeprecationWarning: The configuration option "asyncio_default_fixture_loop_scope" is unset. The event loop scope for asynchronous fixtures will default to the fixture caching scope. Future versions of pytest-asyncio will default the loop scope for asynchronous fixtures to function scope. Set the default fixture loop scope explicitly in order to avoid unexpected behavior in the future. Valid fixture loop scopes are: "function", "class", "module", "package", "session" warnings.warn(PytestDeprecationWarning(_DEFAULT_FIXTURE_LOOP_SCOPE_UNSET)) ============================= test session starts ============================== platform linux -- Python 3.13.5, pytest-8.3.5, pluggy-1.5.0 rootdir: /build/reproducible-path/python-snitun-0.42.0/.pybuild/cpython3_3.13/build configfile: pyproject.toml plugins: typeguard-4.4.2, timeout-2.3.1, asyncio-0.25.1, aiohttp-1.1.0 asyncio: mode=Mode.AUTO, asyncio_default_fixture_loop_scope=None collected 164 items tests/client/test_client_peer.py ........... [ 6%] tests/client/test_connector.py ......... [ 12%] tests/multiplexer/test_channel.py .............. [ 20%] tests/multiplexer/test_const.py . [ 21%] tests/multiplexer/test_core.py ......................... [ 36%] tests/multiplexer/test_crypto.py . [ 37%] tests/multiplexer/test_message.py ... [ 39%] tests/multiplexer/test_queue.py ....................... [ 53%] tests/server/test_all.py . [ 53%] tests/server/test_listener_peer.py ...... [ 57%] tests/server/test_listener_sni.py ..........FF [ 64%] tests/server/test_peer.py ...... [ 68%] tests/server/test_peer_manager.py .......... [ 74%] tests/server/test_run.py ........FFFFFF [ 82%] tests/server/test_sni.py .......... [ 89%] tests/server/test_worker.py .... [ 91%] tests/utils/test_aes.py .. [ 92%] tests/utils/test_aiohttp_client.py .. [ 93%] tests/utils/test_asyncio.py ...... [ 97%] tests/utils/test_ipaddress.py .. [ 98%] tests/utils/test_server.py .. [100%] =================================== FAILURES =================================== ______________________ test_proxy_peer_handler_can_pause _______________________ multiplexer_client = peer_manager = async def test_proxy_peer_handler_can_pause( multiplexer_client: Multiplexer, peer_manager: PeerManager, ) -> None: """Test proxy peer handler can pause.""" proxy_peer_handler: ProxyPeerHandler | None = None loop = asyncio.get_running_loop() def save_proxy_peer_handler( loop: asyncio.AbstractEventLoop, ip_address: ipaddress.IPv4Address, ) -> ProxyPeerHandler: nonlocal proxy_peer_handler proxy_peer_handler = ProxyPeerHandler(loop, ip_address) return proxy_peer_handler with patch("snitun.server.listener_sni.ProxyPeerHandler", save_proxy_peer_handler): proxy = SNIProxy(peer_manager, "127.0.0.1", "8863") await proxy.start() reader, writer = await asyncio.open_connection(host="127.0.0.1", port="8863") test_client_ssl = Client(reader, writer) test_client_ssl.writer.write(TLS_1_2) await test_client_ssl.writer.drain() await asyncio.sleep(0.1) assert isinstance(proxy_peer_handler, ProxyPeerHandler) handler = cast(ProxyPeerHandler, proxy_peer_handler) client_channel = handler._channel assert client_channel._pause_resume_reader_callback is not None assert ( client_channel._pause_resume_reader_callback == handler._pause_resume_reader_callback ) assert multiplexer_client._channels server_channel = next(iter(multiplexer_client._channels.values())) assert server_channel.ip_address == IP_ADDR client_hello = await server_channel.read() assert client_hello == TLS_1_2 test_client_ssl.writer.write(b"Very secret!") await test_client_ssl.writer.drain() data = await server_channel.read() assert data == b"Very secret!" # Now simulate that the remote input is under water client_channel.on_remote_input_under_water(True) assert handler._pause_future is not None assert not handler._pause_future.done() # This is an implementation detail that we might # change in the future, but for now we need to # to read one more message because we don't cancel # the current read when the reader pauses as the additional # complexity is not worth it. test_client_ssl.writer.write(b"one more in before we pause") await test_client_ssl.writer.drain() data = await server_channel.read() assert data == b"one more in before we pause" test_client_ssl.writer.write(b"now we are paused") await test_client_ssl.writer.drain() read_task = loop.create_task(server_channel.read()) await asyncio.sleep(0.1) # Make sure reader is actually paused assert not read_task.done() # Now simulate that the remote input is no longer under water assert handler._pause_future is not None assert not handler._pause_future.done() client_channel.on_remote_input_under_water(False) assert handler._pause_future is None > data = await read_task tests/server/test_listener_sni.py:277: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = async def read(self) -> bytes: """Read data from peer.""" if self._closing and self._input.empty(): message = None else: message = await self._input.get() # Send data if message is not None: return message.data _LOGGER.debug("Read a close message for channel %s", self._id) > raise MultiplexerTransportClose E snitun.exceptions.MultiplexerTransportClose snitun/multiplexer/channel.py:254: MultiplexerTransportClose ---------------------------- Captured stderr setup ----------------------------- DEBUG:asyncio:Using selector: EpollSelector ------------------------------ Captured log setup ------------------------------ DEBUG asyncio:selector_events.py:64 Using selector: EpollSelector ----------------------------- Captured stderr call ----------------------------- DEBUG:snitun.server.listener_sni:Processing for hostname localhost started DEBUG:snitun.multiplexer.queue:Queue creating channel ad4dcdae3392af00e24bb57476377a32 DEBUG:snitun.multiplexer.channel:Sending new channel ad4dcdae3392af00e24bb57476377a32 DEBUG:snitun.multiplexer.queue:Queue creating channel ad4dcdae3392af00e24bb57476377a32 DEBUG:snitun.multiplexer.channel:Remote input is under water: True for ad4dcdae3392af00e24bb57476377a32 DEBUG:snitun.multiplexer.channel:Pause reader for 127.0.0.1 (ad4dcdae3392af00e24bb57476377a32) DEBUG:snitun.multiplexer.channel:Remote input is under water: False for ad4dcdae3392af00e24bb57476377a32 DEBUG:snitun.multiplexer.channel:Resuming reader for 127.0.0.1 (ad4dcdae3392af00e24bb57476377a32) DEBUG:snitun.server.listener_sni:Close TCP session after timeout for ad4dcdae3392af00e24bb57476377a32 DEBUG:snitun.multiplexer.channel:Sending close channel ad4dcdae3392af00e24bb57476377a32 DEBUG:snitun.multiplexer.channel:Schedule close channel ad4dcdae3392af00e24bb57476377a32 DEBUG:snitun.multiplexer.channel:Read a close message for channel ad4dcdae3392af00e24bb57476377a32 ------------------------------ Captured log call ------------------------------- DEBUG snitun.server.listener_sni:listener_sni.py:101 Processing for hostname localhost started DEBUG snitun.multiplexer.queue:queue.py:133 Queue creating channel ad4dcdae3392af00e24bb57476377a32 DEBUG snitun.multiplexer.channel:channel.py:265 Sending new channel ad4dcdae3392af00e24bb57476377a32 DEBUG snitun.multiplexer.queue:queue.py:133 Queue creating channel ad4dcdae3392af00e24bb57476377a32 DEBUG snitun.multiplexer.channel:channel.py:167 Remote input is under water: True for ad4dcdae3392af00e24bb57476377a32 DEBUG snitun.multiplexer.channel:channel.py:62 Pause reader for 127.0.0.1 (ad4dcdae3392af00e24bb57476377a32) DEBUG snitun.multiplexer.channel:channel.py:167 Remote input is under water: False for ad4dcdae3392af00e24bb57476377a32 DEBUG snitun.multiplexer.channel:channel.py:54 Resuming reader for 127.0.0.1 (ad4dcdae3392af00e24bb57476377a32) DEBUG snitun.server.listener_sni:listener_sni.py:204 Close TCP session after timeout for ad4dcdae3392af00e24bb57476377a32 DEBUG snitun.multiplexer.channel:channel.py:259 Sending close channel ad4dcdae3392af00e24bb57476377a32 DEBUG snitun.multiplexer.channel:channel.py:208 Schedule close channel ad4dcdae3392af00e24bb57476377a32 DEBUG snitun.multiplexer.channel:channel.py:253 Read a close message for channel ad4dcdae3392af00e24bb57476377a32 --------------------------- Captured stderr teardown --------------------------- DEBUG:snitun.multiplexer.core:Cancel connection DEBUG:snitun.multiplexer.core:Receive canceling DEBUG:snitun.multiplexer.core:Multiplexer connection is closed DEBUG:snitun.multiplexer.core:Cancel connection DEBUG:snitun.multiplexer.core:Receive canceling DEBUG:snitun.multiplexer.core:Multiplexer connection is closed DEBUG:asyncio:Using selector: EpollSelector ---------------------------- Captured log teardown ----------------------------- DEBUG snitun.multiplexer.core:core.py:112 Cancel connection DEBUG snitun.multiplexer.core:core.py:195 Receive canceling DEBUG snitun.multiplexer.core:core.py:227 Multiplexer connection is closed DEBUG snitun.multiplexer.core:core.py:112 Cancel connection DEBUG snitun.multiplexer.core:core.py:195 Receive canceling DEBUG snitun.multiplexer.core:core.py:227 Multiplexer connection is closed DEBUG asyncio:selector_events.py:64 Using selector: EpollSelector ______________________ test_proxy_peer_os_error_on_write _______________________ multiplexer_client = peer_manager = caplog = <_pytest.logging.LogCaptureFixture object at 0x7ff37ece6330> async def test_proxy_peer_os_error_on_write( multiplexer_client: Multiplexer, peer_manager: PeerManager, caplog: pytest.LogCaptureFixture, ) -> None: """Test proxy peer handler handles oserror.""" proxy_peer_handler: ProxyPeerHandler | None = None class InstrumentedProxyPeerHandler(ProxyPeerHandler): """Instrumented Proxy Peer Handler. This class is used to test the ProxyPeerHandler class and save the reader and writer for testing. """ writer: asyncio.StreamWriter reader: asyncio.StreamReader async def start( self, multiplexer: Multiplexer, client_hello: bytes, reader: asyncio.StreamReader, writer: asyncio.StreamWriter, ) -> None: self.reader = reader self.writer = writer await super().start(multiplexer, client_hello, reader, writer) def save_proxy_peer_handler( loop: asyncio.AbstractEventLoop, ip_address: ipaddress.IPv4Address, ) -> ProxyPeerHandler: nonlocal proxy_peer_handler proxy_peer_handler = InstrumentedProxyPeerHandler(loop, ip_address) return proxy_peer_handler with patch("snitun.server.listener_sni.ProxyPeerHandler", save_proxy_peer_handler): proxy = SNIProxy(peer_manager, "127.0.0.1", "8863") > await proxy.start() tests/server/test_listener_sni.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ snitun/server/listener_sni.py:44: in start self._server = await asyncio.start_server( /usr/lib/python3.13/asyncio/streams.py:84: in start_server return await loop.create_server(factory, host, port, **kwds) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_UnixSelectorEventLoop running=False closed=False debug=False> protocol_factory = .factory at 0x7ff37cad0c20> host = '127.0.0.1', port = '8863' async def create_server( self, protocol_factory, host=None, port=None, *, family=socket.AF_UNSPEC, flags=socket.AI_PASSIVE, sock=None, backlog=100, ssl=None, reuse_address=None, reuse_port=None, keep_alive=None, ssl_handshake_timeout=None, ssl_shutdown_timeout=None, start_serving=True): """Create a TCP server. The host parameter can be a string, in that case the TCP server is bound to host and port. The host parameter can also be a sequence of strings and in that case the TCP server is bound to all hosts of the sequence. If a host appears multiple times (possibly indirectly e.g. when hostnames resolve to the same IP address), the server is only bound once to that host. Return a Server object which can be used to stop the service. This method is a coroutine. """ if isinstance(ssl, bool): raise TypeError('ssl argument must be an SSLContext or None') if ssl_handshake_timeout is not None and ssl is None: raise ValueError( 'ssl_handshake_timeout is only meaningful with ssl') if ssl_shutdown_timeout is not None and ssl is None: raise ValueError( 'ssl_shutdown_timeout is only meaningful with ssl') if sock is not None: _check_ssl_socket(sock) if host is not None or port is not None: if sock is not None: raise ValueError( 'host/port and sock can not be specified at the same time') if reuse_address is None: reuse_address = os.name == "posix" and sys.platform != "cygwin" sockets = [] if host == '': hosts = [None] elif (isinstance(host, str) or not isinstance(host, collections.abc.Iterable)): hosts = [host] else: hosts = host fs = [self._create_server_getaddrinfo(host, port, family=family, flags=flags) for host in hosts] infos = await tasks.gather(*fs) infos = set(itertools.chain.from_iterable(infos)) completed = False try: for res in infos: af, socktype, proto, canonname, sa = res try: sock = socket.socket(af, socktype, proto) except socket.error: # Assume it's a bad family/type/protocol combination. if self._debug: logger.warning('create_server() failed to create ' 'socket.socket(%r, %r, %r)', af, socktype, proto, exc_info=True) continue sockets.append(sock) if reuse_address: sock.setsockopt( socket.SOL_SOCKET, socket.SO_REUSEADDR, True) # Since Linux 6.12.9, SO_REUSEPORT is not allowed # on other address families than AF_INET/AF_INET6. if reuse_port and af in (socket.AF_INET, socket.AF_INET6): _set_reuseport(sock) if keep_alive: sock.setsockopt( socket.SOL_SOCKET, socket.SO_KEEPALIVE, True) # Disable IPv4/IPv6 dual stack support (enabled by # default on Linux) which makes a single socket # listen on both address families. if (_HAS_IPv6 and af == socket.AF_INET6 and hasattr(socket, 'IPPROTO_IPV6')): sock.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_V6ONLY, True) try: sock.bind(sa) except OSError as err: msg = ('error while attempting ' 'to bind on address %r: %s' % (sa, str(err).lower())) if err.errno == errno.EADDRNOTAVAIL: # Assume the family is not enabled (bpo-30945) sockets.pop() sock.close() if self._debug: logger.warning(msg) continue > raise OSError(err.errno, msg) from None E OSError: [Errno 98] error while attempting to bind on address ('127.0.0.1', 8863): [errno 98] address already in use /usr/lib/python3.13/asyncio/base_events.py:1622: OSError ---------------------------- Captured stderr setup ----------------------------- DEBUG:asyncio:Using selector: EpollSelector ------------------------------ Captured log setup ------------------------------ DEBUG asyncio:selector_events.py:64 Using selector: EpollSelector --------------------------- Captured stderr teardown --------------------------- DEBUG:snitun.multiplexer.core:Cancel connection DEBUG:snitun.multiplexer.core:Receive canceling DEBUG:snitun.multiplexer.core:Multiplexer connection is closed DEBUG:snitun.multiplexer.core:Cancel connection DEBUG:snitun.multiplexer.core:Receive canceling DEBUG:snitun.multiplexer.core:Multiplexer connection is closed DEBUG:asyncio:Using selector: EpollSelector ---------------------------- Captured log teardown ----------------------------- DEBUG snitun.multiplexer.core:core.py:112 Cancel connection DEBUG snitun.multiplexer.core:core.py:195 Receive canceling DEBUG snitun.multiplexer.core:core.py:227 Multiplexer connection is closed DEBUG snitun.multiplexer.core:core.py:112 Cancel connection DEBUG snitun.multiplexer.core:core.py:195 Receive canceling DEBUG snitun.multiplexer.core:core.py:227 Multiplexer connection is closed DEBUG asyncio:selector_events.py:64 Using selector: EpollSelector _____________________ test_snitun_worker_runner[payloads1] _____________________ event_loop = <_UnixSelectorEventLoop running=False closed=False debug=False> payloads = [b'\x16\x03\x01\x00H\x01', b'\x00\x00B\x03\x03\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff...ff\xff\xff\x00\x00\x04\x00\x01\x00\xff\x01\x00\x00\x17\x00\x00\x00\x0e\x00\x0c\x00\x00\tlocalhost\x00\x0f\x00\x01\x01'] @pytest.mark.parametrize( "payloads", [ [TLS_1_2], [TLS_1_2[:6], TLS_1_2[6:]], [TLS_1_2[:6], TLS_1_2[6:20], TLS_1_2[20:]], [TLS_1_2[:6], TLS_1_2[6:20], TLS_1_2[20:32], TLS_1_2[32:]], ], ) def test_snitun_worker_runner( event_loop: asyncio.AbstractEventLoop, payloads: list[bytes], ) -> None: """Test SniTunWorker Server runner object.""" loop = event_loop peer_messages = [] peer_address = [] server = SniTunServerWorker( FERNET_TOKENS, host="127.0.0.1", port=32001, worker_size=2, ) server.start() sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect(("127.0.0.1", 32001)) valid = datetime.now(tz=UTC) + timedelta(days=1) aes_key = os.urandom(32) aes_iv = os.urandom(16) hostname = "localhost" fernet_token = create_peer_config(valid.timestamp(), hostname, aes_key, aes_iv) crypto = CryptoTransport(aes_key, aes_iv) sock.sendall(fernet_token) token = sock.recv(32) token = hashlib.sha256(crypto.decrypt(token)).digest() sock.sendall(crypto.encrypt(token)) time.sleep(1) assert any(worker.is_responsible_peer(hostname) for worker in server._workers) assert server.peer_counter == 1 async def mock_new_channel( multiplexer: Multiplexer, channel: MultiplexerChannel, ) -> None: """Mock new channel.""" while True: message = await channel.read() peer_messages.append(message) peer_address.append(channel.ip_address) sock_ssl = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock_ssl.connect(("127.0.0.1", 32001)) async def _create_multiplexer() -> Multiplexer: """Create and return the peer multiplexer.""" reader_peer, writer_peer = await asyncio.open_connection(sock=sock) return Multiplexer( crypto, reader_peer, writer_peer, snitun.PROTOCOL_VERSION, mock_new_channel, ) multiplexer = loop.run_until_complete(_create_multiplexer()) for payload in payloads: sock_ssl.sendall(payload) loop.run_until_complete(asyncio.sleep(0.1)) > assert peer_messages E assert [] tests/server/test_run.py:366: AssertionError ---------------------------- Captured stderr setup ----------------------------- DEBUG:asyncio:Using selector: EpollSelector ------------------------------ Captured log setup ------------------------------ DEBUG asyncio:selector_events.py:64 Using selector: EpollSelector ----------------------------- Captured stderr call ----------------------------- INFO:snitun.server.run:Run SniTun with 2 worker INFO:snitun.server.worker:Start worker: ServerWorker-9 DEBUG:asyncio:Using selector: EpollSelector INFO:snitun.server.run:Server started, fd: 19 DEBUG:snitun.server.run:Handover new peer connection: b'gAAAAABqlEDhL7iWXal0uTEcWUNqVIGtp0M_Lo25g_f6ncikgYNVfBi0R1zU3jyqqPjfqVcqQletN54eFPsC4ACN1l4I5wYDcHKoHE_E8HXqxqPmAoDbk3B5PtRaSN-8g_vp4H8tvQRxc8MVkynx2NWf1TO6h1tnwM9EJdsQzTOsb7we8NR0IJhLVnwiDxQKTkhR3SEZh5NmLSGgthmPNRYj1CTiUD0KLcH_GBTgNuWnKTwsMLnJpqG5fg1jc3aqJEg-dSNvbVo4lQbXtAVblObSlLZ9IDW_gjPBy7k6idzztl0Mp9O--mWAzxb8IRw4pQoxQZrQXqA1uCfUrCA2kQ2zBX7txUO7Q-xL5gfYZHy7MjzFdRoUOhs=' INFO:snitun.server.worker:Start worker: ServerWorker-11 DEBUG:asyncio:Using selector: EpollSelector DEBUG:snitun.server.peer_manager:New peer connection: localhost DEBUG:snitun.server.sni:Can't calculate the TLS record size DEBUG:snitun.server.run:Handover localhost to ServerWorker-9 ------------------------------ Captured log call ------------------------------- INFO snitun.server.run:run.py:225 Run SniTun with 2 worker INFO snitun.server.run:run.py:266 Server started, fd: 19 DEBUG snitun.server.run:run.py:341 Handover new peer connection: b'gAAAAABqlEDhL7iWXal0uTEcWUNqVIGtp0M_Lo25g_f6ncikgYNVfBi0R1zU3jyqqPjfqVcqQletN54eFPsC4ACN1l4I5wYDcHKoHE_E8HXqxqPmAoDbk3B5PtRaSN-8g_vp4H8tvQRxc8MVkynx2NWf1TO6h1tnwM9EJdsQzTOsb7we8NR0IJhLVnwiDxQKTkhR3SEZh5NmLSGgthmPNRYj1CTiUD0KLcH_GBTgNuWnKTwsMLnJpqG5fg1jc3aqJEg-dSNvbVo4lQbXtAVblObSlLZ9IDW_gjPBy7k6idzztl0Mp9O--mWAzxb8IRw4pQoxQZrQXqA1uCfUrCA2kQ2zBX7txUO7Q-xL5gfYZHy7MjzFdRoUOhs=' DEBUG snitun.server.sni:sni.py:66 Can't calculate the TLS record size DEBUG snitun.server.run:run.py:371 Handover localhost to ServerWorker-9 --------------------------- Captured stderr teardown --------------------------- DEBUG:snitun.server.listener_sni:Processing for hostname localhost started DEBUG:snitun.multiplexer.queue:Queue creating channel 16227684ea770d904e65207d832ca0b7 DEBUG:snitun.multiplexer.channel:Sending new channel 16227684ea770d904e65207d832ca0b7 DEBUG:asyncio:Using selector: EpollSelector ---------------------------- Captured log teardown ----------------------------- DEBUG asyncio:selector_events.py:64 Using selector: EpollSelector _____________________ test_snitun_worker_runner[payloads2] _____________________ event_loop = <_UnixSelectorEventLoop running=False closed=False debug=False> payloads = [b'\x16\x03\x01\x00H\x01', b'\x00\x00B\x03\x03\xff\xff\xff\xff\xff\xff\xff\xff\xff', b'\xff\xff\xff\xff\xff\xff\xff\xf...ff\xff\xff\x00\x00\x04\x00\x01\x00\xff\x01\x00\x00\x17\x00\x00\x00\x0e\x00\x0c\x00\x00\tlocalhost\x00\x0f\x00\x01\x01'] @pytest.mark.parametrize( "payloads", [ [TLS_1_2], [TLS_1_2[:6], TLS_1_2[6:]], [TLS_1_2[:6], TLS_1_2[6:20], TLS_1_2[20:]], [TLS_1_2[:6], TLS_1_2[6:20], TLS_1_2[20:32], TLS_1_2[32:]], ], ) def test_snitun_worker_runner( event_loop: asyncio.AbstractEventLoop, payloads: list[bytes], ) -> None: """Test SniTunWorker Server runner object.""" loop = event_loop peer_messages = [] peer_address = [] server = SniTunServerWorker( FERNET_TOKENS, host="127.0.0.1", port=32001, worker_size=2, ) > server.start() tests/server/test_run.py:313: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def start(self) -> None: """Run server.""" # Init first all worker, we don't want the epoll on the childs _LOGGER.info("Run SniTun with %d worker", self._worker_size) for _ in range(self._worker_size): worker = ServerWorker(self._fernet_keys, throttling=self._throttling) worker.start() self._workers.append(worker) self._server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self._server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) > self._server.bind((self._host, self._port)) E OSError: [Errno 98] Address already in use snitun/server/run.py:233: OSError ---------------------------- Captured stderr setup ----------------------------- DEBUG:asyncio:Using selector: EpollSelector ------------------------------ Captured log setup ------------------------------ DEBUG asyncio:selector_events.py:64 Using selector: EpollSelector ----------------------------- Captured stderr call ----------------------------- INFO:snitun.server.run:Run SniTun with 2 worker INFO:snitun.server.worker:Start worker: ServerWorker-13 DEBUG:asyncio:Using selector: EpollSelector ------------------------------ Captured log call ------------------------------- INFO snitun.server.run:run.py:225 Run SniTun with 2 worker --------------------------- Captured stderr teardown --------------------------- INFO:snitun.server.worker:Start worker: ServerWorker-15 DEBUG:asyncio:Using selector: EpollSelector DEBUG:asyncio:Using selector: EpollSelector ---------------------------- Captured log teardown ----------------------------- DEBUG asyncio:selector_events.py:64 Using selector: EpollSelector _____________________ test_snitun_worker_runner[payloads3] _____________________ event_loop = <_UnixSelectorEventLoop running=False closed=False debug=False> payloads = [b'\x16\x03\x01\x00H\x01', b'\x00\x00B\x03\x03\xff\xff\xff\xff\xff\xff\xff\xff\xff', b'\xff\xff\xff\xff\xff\xff\xff\xf...ff\xff\xff\x00\x00\x04\x00\x01\x00\xff\x01\x00\x00\x17\x00\x00\x00\x0e\x00\x0c\x00\x00\tlocalhost\x00\x0f\x00\x01\x01'] @pytest.mark.parametrize( "payloads", [ [TLS_1_2], [TLS_1_2[:6], TLS_1_2[6:]], [TLS_1_2[:6], TLS_1_2[6:20], TLS_1_2[20:]], [TLS_1_2[:6], TLS_1_2[6:20], TLS_1_2[20:32], TLS_1_2[32:]], ], ) def test_snitun_worker_runner( event_loop: asyncio.AbstractEventLoop, payloads: list[bytes], ) -> None: """Test SniTunWorker Server runner object.""" loop = event_loop peer_messages = [] peer_address = [] server = SniTunServerWorker( FERNET_TOKENS, host="127.0.0.1", port=32001, worker_size=2, ) > server.start() tests/server/test_run.py:313: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def start(self) -> None: """Run server.""" # Init first all worker, we don't want the epoll on the childs _LOGGER.info("Run SniTun with %d worker", self._worker_size) for _ in range(self._worker_size): worker = ServerWorker(self._fernet_keys, throttling=self._throttling) worker.start() self._workers.append(worker) self._server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self._server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) > self._server.bind((self._host, self._port)) E OSError: [Errno 98] Address already in use snitun/server/run.py:233: OSError ---------------------------- Captured stderr setup ----------------------------- DEBUG:asyncio:Using selector: EpollSelector ------------------------------ Captured log setup ------------------------------ DEBUG asyncio:selector_events.py:64 Using selector: EpollSelector ----------------------------- Captured stderr call ----------------------------- INFO:snitun.server.run:Run SniTun with 2 worker INFO:snitun.server.worker:Start worker: ServerWorker-17 DEBUG:asyncio:Using selector: EpollSelector DEBUG:snitun.server.listener_sni:Close TCP session after timeout for 16227684ea770d904e65207d832ca0b7 DEBUG:snitun.multiplexer.channel:Sending close channel 16227684ea770d904e65207d832ca0b7 ------------------------------ Captured log call ------------------------------- INFO snitun.server.run:run.py:225 Run SniTun with 2 worker --------------------------- Captured stderr teardown --------------------------- INFO:snitun.server.worker:Start worker: ServerWorker-19 DEBUG:asyncio:Using selector: EpollSelector DEBUG:asyncio:Using selector: EpollSelector ---------------------------- Captured log teardown ----------------------------- DEBUG asyncio:selector_events.py:64 Using selector: EpollSelector __________________________ test_snitun_worker_timeout __________________________ event_loop = <_UnixSelectorEventLoop running=False closed=False debug=False> def test_snitun_worker_timeout(event_loop: asyncio.AbstractEventLoop) -> None: """Test SniTunWorker Server runner object timeout.""" from snitun.server import run run.WORKER_STALE_MAX = 1 server = SniTunServerWorker( FERNET_TOKENS, host="127.0.0.1", port=32001, worker_size=2, ) > server.start() tests/server/test_run.py:393: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def start(self) -> None: """Run server.""" # Init first all worker, we don't want the epoll on the childs _LOGGER.info("Run SniTun with %d worker", self._worker_size) for _ in range(self._worker_size): worker = ServerWorker(self._fernet_keys, throttling=self._throttling) worker.start() self._workers.append(worker) self._server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self._server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) > self._server.bind((self._host, self._port)) E OSError: [Errno 98] Address already in use snitun/server/run.py:233: OSError ---------------------------- Captured stderr setup ----------------------------- DEBUG:asyncio:Using selector: EpollSelector ------------------------------ Captured log setup ------------------------------ DEBUG asyncio:selector_events.py:64 Using selector: EpollSelector ----------------------------- Captured stderr call ----------------------------- INFO:snitun.server.run:Run SniTun with 2 worker INFO:snitun.server.worker:Start worker: ServerWorker-21 DEBUG:asyncio:Using selector: EpollSelector ------------------------------ Captured log call ------------------------------- INFO snitun.server.run:run.py:225 Run SniTun with 2 worker --------------------------- Captured stderr teardown --------------------------- INFO:snitun.server.worker:Start worker: ServerWorker-23 DEBUG:asyncio:Using selector: EpollSelector ---------------------------- Captured log teardown ----------------------------- DEBUG asyncio:selector_events.py:64 Using selector: EpollSelector __________________ test_snitun_worker_runner_invalid_payload ___________________ event_loop = <_UnixSelectorEventLoop running=False closed=False debug=False> def test_snitun_worker_runner_invalid_payload( event_loop: asyncio.AbstractEventLoop, ) -> None: """Test SniTunWorker Server runner invalid payload.""" server = SniTunServerWorker( FERNET_TOKENS, host="127.0.0.1", port=32001, worker_size=2, ) > server.start() tests/server/test_run.py:427: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def start(self) -> None: """Run server.""" # Init first all worker, we don't want the epoll on the childs _LOGGER.info("Run SniTun with %d worker", self._worker_size) for _ in range(self._worker_size): worker = ServerWorker(self._fernet_keys, throttling=self._throttling) worker.start() self._workers.append(worker) self._server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self._server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) > self._server.bind((self._host, self._port)) E OSError: [Errno 98] Address already in use snitun/server/run.py:233: OSError ---------------------------- Captured stderr setup ----------------------------- DEBUG:asyncio:Using selector: EpollSelector DEBUG:asyncio:Using selector: EpollSelector ------------------------------ Captured log setup ------------------------------ DEBUG asyncio:selector_events.py:64 Using selector: EpollSelector ----------------------------- Captured stderr call ----------------------------- INFO:snitun.server.run:Run SniTun with 2 worker INFO:snitun.server.worker:Start worker: ServerWorker-25 DEBUG:asyncio:Using selector: EpollSelector ------------------------------ Captured log call ------------------------------- INFO snitun.server.run:run.py:225 Run SniTun with 2 worker --------------------------- Captured stderr teardown --------------------------- DEBUG:asyncio:Using selector: EpollSelector ---------------------------- Captured log teardown ----------------------------- DEBUG asyncio:selector_events.py:64 Using selector: EpollSelector ___________________________ test_snitun_worker_crash ___________________________ kill = event_loop = <_UnixSelectorEventLoop running=False closed=False debug=False> @patch("snitun.server.run.os.kill") def test_snitun_worker_crash( kill: MagicMock, event_loop: asyncio.AbstractEventLoop, ) -> None: """Test SniTunWorker Server runner object with crashing worker.""" server = SniTunServerWorker( FERNET_TOKENS, host="127.0.0.1", port=32001, worker_size=2, ) > server.start() tests/server/test_run.py:460: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def start(self) -> None: """Run server.""" # Init first all worker, we don't want the epoll on the childs _LOGGER.info("Run SniTun with %d worker", self._worker_size) for _ in range(self._worker_size): worker = ServerWorker(self._fernet_keys, throttling=self._throttling) worker.start() self._workers.append(worker) self._server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self._server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) > self._server.bind((self._host, self._port)) E OSError: [Errno 98] Address already in use snitun/server/run.py:233: OSError ---------------------------- Captured stderr setup ----------------------------- DEBUG:asyncio:Using selector: EpollSelector ------------------------------ Captured log setup ------------------------------ DEBUG asyncio:selector_events.py:64 Using selector: EpollSelector ----------------------------- Captured stderr call ----------------------------- INFO:snitun.server.run:Run SniTun with 2 worker INFO:snitun.server.worker:Start worker: ServerWorker-27 DEBUG:asyncio:Using selector: EpollSelector INFO:snitun.server.worker:Start worker: ServerWorker-29 DEBUG:asyncio:Using selector: EpollSelector ------------------------------ Captured log call ------------------------------- INFO snitun.server.run:run.py:225 Run SniTun with 2 worker --------------------------- Captured stderr teardown --------------------------- DEBUG:asyncio:Using selector: EpollSelector ---------------------------- Captured log teardown ----------------------------- DEBUG asyncio:selector_events.py:64 Using selector: EpollSelector =============================== warnings summary =============================== tests/server/test_listener_sni.py:71 tests/server/test_listener_sni.py:71: PytestDeprecationWarning: test_sni_proxy_flow_close_by_client is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead. async def test_sni_proxy_flow_close_by_client( tests/server/test_peer.py:37 tests/server/test_peer.py:37: PytestDeprecationWarning: test_init_peer_multiplexer is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead. async def test_init_peer_multiplexer( tests/server/test_peer.py:83 tests/server/test_peer.py:83: PytestDeprecationWarning: test_init_peer_multiplexer_crypto is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead. async def test_init_peer_multiplexer_crypto( tests/server/test_peer.py:139 tests/server/test_peer.py:139: PytestDeprecationWarning: test_init_peer_wrong_challenge is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead. async def test_init_peer_wrong_challenge( tests/server/test_peer.py:193 tests/server/test_peer.py:193: PytestDeprecationWarning: test_init_peer_multiplexer_throttling is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead. async def test_init_peer_multiplexer_throttling( tests/server/test_run.py: 24 warnings tests/server/test_worker.py: 8 warnings /usr/lib/python3.13/multiprocessing/popen_fork.py:67: DeprecationWarning: This process (pid=3700991) is multi-threaded, use of fork() may lead to deadlocks in the child. self.pid = os.fork() -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info ============================ FAILED tests/server/test_listener_sni.py::test_proxy_peer_handler_can_pause FAILED tests/server/test_listener_sni.py::test_proxy_peer_os_error_on_write FAILED tests/server/test_run.py::test_snitun_worker_runner[payloads1] - asser... FAILED tests/server/test_run.py::test_snitun_worker_runner[payloads2] - OSErr... FAILED tests/server/test_run.py::test_snitun_worker_runner[payloads3] - OSErr... FAILED tests/server/test_run.py::test_snitun_worker_timeout - OSError: [Errno... FAILED tests/server/test_run.py::test_snitun_worker_runner_invalid_payload - ... FAILED tests/server/test_run.py::test_snitun_worker_crash - OSError: [Errno 9... ================= 8 failed, 156 passed, 37 warnings in 31.52s ================== Mon Aug 31 08:39:18 UTC 2026 - pbuilder was killed by timeout after 18h.