Running as unit: rb-build-i386_3-51240.service ==================================================================================== Wed Jan 22 16:37:17 UTC 2025 - running /srv/jenkins/bin/reproducible_build.sh (for job reproducible_builder_i386_3) on jenkins, called using "ionos2-i386 ionos16-i386" as arguments. Wed Jan 22 16:37:17 UTC 2025 - actually running "reproducible_build.sh" (md5sum 68e686e434c9ab7bc3ec047d8b309cbc) as "/tmp/jenkins-script-eEjuZ8Nh" $ git clone https://salsa.debian.org/qa/jenkins.debian.net.git ; more CONTRIBUTING Wed Jan 22 16:37:17 UTC 2025 - checking /var/lib/jenkins/offline_nodes if ionos2-i386.debian.net is marked as down. Wed Jan 22 16:37:17 UTC 2025 - checking via ssh if ionos2-i386.debian.net is up. removed '/tmp/read-only-fs-test-AzKqVC' Wed Jan 22 16:37:18 UTC 2025 - checking /var/lib/jenkins/offline_nodes if ionos16-i386.debian.net is marked as down. Wed Jan 22 16:37:18 UTC 2025 - checking via ssh if ionos16-i386.debian.net is up. removed '/tmp/read-only-fs-test-hGbjUw' ok, let's check if mkdocs-test is building anywhere yet… ok, mkdocs-test is not building anywhere… UPDATE 1 ============================================================================= Initialising reproducibly build of mkdocs-test in unstable on i386 on jenkins now. 1st build will be done on ionos2-i386.debian.net. 2nd build will be done on ionos16-i386.debian.net. ============================================================================= Wed Jan 22 16:37:24 UTC 2025 I: starting to build mkdocs-test/unstable/i386 on jenkins on '2025-01-22 16:37' Wed Jan 22 16:37:24 UTC 2025 I: The jenkins build log is/was available at https://jenkins.debian.net/userContent/reproducible/debian/build_service/i386_3/51240/console.log 1737563844 i386 unstable mkdocs-test Wed Jan 22 16:37:24 UTC 2025 I: Downloading source for unstable/mkdocs-test=0.5.3-5 --2025-01-22 16:37:24-- http://deb.debian.org/debian/pool/main/m/mkdocs-test/mkdocs-test_0.5.3-5.dsc Connecting to 46.16.76.132:3128... connected. Proxy request sent, awaiting response... 200 OK Length: 2763 (2.7K) [text/prs.lines.tag] Saving to: ‘mkdocs-test_0.5.3-5.dsc’ 0K .. 100% 417M=0s 2025-01-22 16:37:24 (417 MB/s) - ‘mkdocs-test_0.5.3-5.dsc’ saved [2763/2763] --2025-01-22 16:37:24-- http://deb.debian.org/debian/pool/main/m/mkdocs-test/mkdocs-test_0.5.3-5.dsc Connecting to 46.16.76.132:3128... connected. Proxy request sent, awaiting response... 200 OK Length: 2763 (2.7K) [text/prs.lines.tag] Saving to: ‘mkdocs-test_0.5.3-5.dsc’ 0K .. 100% 417M=0s 2025-01-22 16:37:24 (417 MB/s) - ‘mkdocs-test_0.5.3-5.dsc’ saved [2763/2763] Wed Jan 22 16:37:24 UTC 2025 I: mkdocs-test_0.5.3-5.dsc -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 Format: 3.0 (quilt) Source: mkdocs-test Binary: python3-mkdocs-test Architecture: all Version: 0.5.3-5 Maintainer: Debian Python Team Uploaders: Boyuan Yang , Homepage: https://github.com/fralau/mkdocs-test Description: Testing framework for MkDocs projects The purpose of Mkdocs-Test is to facilitate the comparison of source pages (Markdown files) and destination pages (HTML) in an MkDocs project. . MkDocs-Test is a framework composed of two parts: - an MkDocs plugin (test): it creates a __test__ directory, which contains the data necessary to map the pages of the website. - a framework for conducting the test. The DocProject class groups together all the information necessary for the tests on a specific MkDocs project. Standards-Version: 4.7.0 Vcs-Browser: https://salsa.debian.org/python-team/packages/mkdocs-test Vcs-Git: https://salsa.debian.org/python-team/packages/mkdocs-test.git Testsuite: autopkgtest-pkg-python Build-Depends: debhelper-compat (= 13), dh-sequence-python3, pybuild-plugin-pyproject, python3, python3-bs4, python3-markdown, python3-pandas, python3-pytest , python3-rich, python3-setuptools, python3-setuptools-scm, python3-super-collections, python3-yaml Package-List: python3-mkdocs-test deb python optional arch=all Checksums-Sha1: d5acc3da52061566c7b58672f6187a1600fb1359 29719 mkdocs-test_0.5.3.orig.tar.gz 6d02cc33e877ea0fb76bbdca36462d37c776126c 2364 mkdocs-test_0.5.3-5.debian.tar.xz Checksums-Sha256: f4f3463a3c80d4998917101d38a1dae62913b60ba8603ebc21440876c939d526 29719 mkdocs-test_0.5.3.orig.tar.gz 3e4dd5adc259c72e7b9545fddaa9c5ca574c1cf4451c8e3956cc77dc9a31c7a5 2364 mkdocs-test_0.5.3-5.debian.tar.xz Files: d21851f9f15dfc5749a02c573b41bc63 29719 mkdocs-test_0.5.3.orig.tar.gz 635f7d256cc9b10f439414b62b2a18c8 2364 mkdocs-test_0.5.3-5.debian.tar.xz -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEfncpR22H1vEdkazLwpPntGGCWs4FAmePsY8ACgkQwpPntGGC Ws6nxQ//Uuy8CMdmndYK9Xdby+6G/koflaovD4+TiyLr/9uOjDj1s7DLC3Ej1f3i N/pH3C1m1F6PntJUbOmVAEDBbijbgzKReF/4fM4SO7Y9G/nq2l1ITCJW79jWrHpb MGscMgyzDA18o5TgnxthwCsq3mzFodiz0HOVlv0yho1YzGFLMDK6KKrROwG2e3rg b/1uHiNlEdVdQSud5yZvmCuUV14jKmJPY7rILeycLSZEwUuHLhjEQZxTpv4RdR7/ Ljb5DkCR+VoUxM6ORVxGhyH2S0JXUUxghUaC7ZRRvONFylQfA3PjSB88uRRPWvZz uGrx03lGbqvGVSQ8XmOFQA+cpPxsaC0mAkNniiQeCmH+u2KivUrX73UdXNUKJ8d3 DTTV2XqkQGEAs+jqUmX2nDgmOqFRPgYdZXVvwOMd5eeuFm0abXsZfQ4Lkj67KvXu g7FpXjiGpSUymz3bDPhHmYBQJnTedx3w/ElxPorXz9+ogS70F2KcekkyZTCFMpVm kDXyzg6TUla/oc8HYDoWsXYqO6e80omXMsYJLmxvh3wmXkA5wB279/4jkXfQu1OV Ic1iITQyOiRAfQ/U0SbGACKWG5pkJ883LZMstGocbN8Ky0GeCu44D3+UhDlgIHYA pB0HWB8o98zaibkP52mffMbkR9MpiY/Xj8SB04ssXpO75k2Oonw= =RkH7 -----END PGP SIGNATURE----- Wed Jan 22 16:37:24 UTC 2025 I: Checking whether the package is not for us Wed Jan 22 16:37:24 UTC 2025 I: Starting 1st build on remote node ionos2-i386.debian.net. Wed Jan 22 16:37:24 UTC 2025 I: Preparing to do remote build '1' on ionos2-i386.debian.net. Wed Jan 22 16:37:25 UTC 2025 - checking /var/lib/jenkins/offline_nodes if ionos2-i386.debian.net is marked as down. Wed Jan 22 16:37:25 UTC 2025 - checking via ssh if ionos2-i386.debian.net is up. removed '/tmp/read-only-fs-test-DA1gNh' ==================================================================================== Wed Jan 22 16:37:26 UTC 2025 - running /srv/jenkins/bin/reproducible_build.sh (for job /srv/jenkins/bin/reproducible_build.sh) on ionos2-i386, called using "1 mkdocs-test unstable /srv/reproducible-results/rbuild-debian/r-b-build.M58Pdxnz 0.5.3-5" as arguments. Wed Jan 22 16:37:26 UTC 2025 - actually running "reproducible_build.sh" (md5sum 68e686e434c9ab7bc3ec047d8b309cbc) as "/tmp/jenkins-script-rKNTvAp6" $ git clone https://salsa.debian.org/qa/jenkins.debian.net.git ; more CONTRIBUTING Wed Jan 22 16:37:26 UTC 2025 I: Downloading source for unstable/mkdocs-test=0.5.3-5 Reading package lists... NOTICE: 'mkdocs-test' packaging is maintained in the 'Git' version control system at: https://salsa.debian.org/python-team/packages/mkdocs-test.git Please use: git clone https://salsa.debian.org/python-team/packages/mkdocs-test.git to retrieve the latest (possibly unreleased) updates to the package. Need to get 34.8 kB of source archives. Get:1 http://deb.debian.org/debian unstable/main mkdocs-test 0.5.3-5 (dsc) [2763 B] Get:2 http://deb.debian.org/debian unstable/main mkdocs-test 0.5.3-5 (tar) [29.7 kB] Get:3 http://deb.debian.org/debian unstable/main mkdocs-test 0.5.3-5 (diff) [2364 B] Fetched 34.8 kB in 0s (672 kB/s) Download complete and in download only mode Reading package lists... NOTICE: 'mkdocs-test' packaging is maintained in the 'Git' version control system at: https://salsa.debian.org/python-team/packages/mkdocs-test.git Please use: git clone https://salsa.debian.org/python-team/packages/mkdocs-test.git to retrieve the latest (possibly unreleased) updates to the package. Need to get 34.8 kB of source archives. Get:1 http://deb.debian.org/debian unstable/main mkdocs-test 0.5.3-5 (dsc) [2763 B] Get:2 http://deb.debian.org/debian unstable/main mkdocs-test 0.5.3-5 (tar) [29.7 kB] Get:3 http://deb.debian.org/debian unstable/main mkdocs-test 0.5.3-5 (diff) [2364 B] Fetched 34.8 kB in 0s (672 kB/s) Download complete and in download only mode ============================================================================= Building mkdocs-test in unstable on i386 on ionos2-i386 now. Date: Wed Jan 22 17:37:30 CET 2025 Date UTC: Wed Jan 22 16:37:30 UTC 2025 ============================================================================= W: /root/.pbuilderrc does not exist I: Logging to b1/build.log I: pbuilder: network access will be disabled during build I: Current time: Wed Jan 22 04:37:31 -12 2025 I: pbuilder-time-stamp: 1737563851 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: using eatmydata during job I: Copying source file I: copying [mkdocs-test_0.5.3-5.dsc] I: copying [./mkdocs-test_0.5.3.orig.tar.gz] I: copying [./mkdocs-test_0.5.3-5.debian.tar.xz] I: Extracting source dpkg-source: warning: cannot verify inline signature for ./mkdocs-test_0.5.3-5.dsc: unsupported subcommand dpkg-source: info: extracting mkdocs-test in mkdocs-test-0.5.3 dpkg-source: info: unpacking mkdocs-test_0.5.3.orig.tar.gz dpkg-source: info: unpacking mkdocs-test_0.5.3-5.debian.tar.xz I: Not using root during the build. I: Installing the build-deps I: user script /srv/workspace/pbuilder/62908/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='i386' DEBIAN_FRONTEND='noninteractive' DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=11 ' DISTRIBUTION='unstable' HOME='/root' HOST_ARCH='i386' IFS=' ' INVOCATION_ID='963eaf08855942fd8d129b8bd28a816f' LANG='C' LANGUAGE='en_US:en' LC_ALL='C' LD_LIBRARY_PATH='/usr/lib/libeatmydata' LD_PRELOAD='libeatmydata.so' 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='62908' 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.M58Pdxnz/pbuilderrc_Uc88 --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.M58Pdxnz/b1 --logfile b1/build.log mkdocs-test_0.5.3-5.dsc' SUDO_GID='112' SUDO_UID='107' SUDO_USER='jenkins' TERM='unknown' TZ='/usr/share/zoneinfo/Etc/GMT+12' USER='root' _='/usr/bin/systemd-run' http_proxy='http://46.16.76.132:3128' I: uname -a Linux ionos2-i386 6.1.0-30-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.124-1 (2025-01-12) x86_64 GNU/Linux I: ls -l /bin lrwxrwxrwx 1 root root 7 Nov 22 14:40 /bin -> usr/bin I: user script /srv/workspace/pbuilder/62908/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: i386 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, python3-bs4, python3-markdown, python3-pandas, python3-pytest, python3-rich, python3-setuptools, python3-setuptools-scm, python3-super-collections, python3-yaml dpkg-deb: building package 'pbuilder-satisfydepends-dummy' in '/tmp/satisfydepends-aptitude/pbuilder-satisfydepends-dummy.deb'. Selecting previously unselected package pbuilder-satisfydepends-dummy. (Reading database ... 19836 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; however: Package python3 is not installed. pbuilder-satisfydepends-dummy depends on python3-bs4; however: Package python3-bs4 is not installed. pbuilder-satisfydepends-dummy depends on python3-markdown; however: Package python3-markdown is not installed. pbuilder-satisfydepends-dummy depends on python3-pandas; however: Package python3-pandas is not installed. pbuilder-satisfydepends-dummy depends on python3-pytest; however: Package python3-pytest is not installed. pbuilder-satisfydepends-dummy depends on python3-rich; however: Package python3-rich is not installed. pbuilder-satisfydepends-dummy depends on python3-setuptools; however: Package python3-setuptools is not installed. pbuilder-satisfydepends-dummy depends on python3-setuptools-scm; however: Package python3-setuptools-scm is not installed. pbuilder-satisfydepends-dummy depends on python3-super-collections; however: Package python3-super-collections is not installed. pbuilder-satisfydepends-dummy depends on python3-yaml; however: Package python3-yaml 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} libblas3{a} libdebhelper-perl{a} libelf1t64{a} libexpat1{a} libffi8{a} libfile-stripnondeterminism-perl{a} libgfortran5{a} libicu72{a} liblapack3{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} libyaml-0-2{a} m4{a} man-db{a} media-types{a} netbase{a} po-debconf{a} pybuild-plugin-pyproject{a} python3{a} python3-autocommand{a} python3-bs4{a} python3-build{a} python3-dateutil{a} python3-hjson{a} python3-inflect{a} python3-iniconfig{a} python3-installer{a} python3-jaraco.context{a} python3-jaraco.functools{a} python3-jaraco.text{a} python3-markdown{a} python3-markdown-it{a} python3-mdurl{a} python3-minimal{a} python3-more-itertools{a} python3-numpy{a} python3-packaging{a} python3-pandas{a} python3-pandas-lib{a} python3-pkg-resources{a} python3-pluggy{a} python3-pygments{a} python3-pyproject-hooks{a} python3-pytest{a} python3-rich{a} python3-setuptools{a} python3-setuptools-scm{a} python3-soupsieve{a} python3-super-collections{a} python3-toml{a} python3-typeguard{a} python3-typing-extensions{a} python3-tz{a} python3-wheel{a} python3-yaml{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 libltdl-dev libmail-sendmail-perl lynx python3-bottleneck python3-chardet python3-charset-normalizer python3-html5lib python3-jinja2 python3-lxml python3-matplotlib python3-numexpr python3-odf python3-openpyxl python3-scipy python3-tables wget 0 packages upgraded, 86 newly installed, 0 to remove and 0 not upgraded. Need to get 48.7 MB of archives. After unpacking 242 MB will be used. Writing extended state information... Get: 1 http://deb.debian.org/debian unstable/main i386 libpython3.13-minimal i386 3.13.1-3 [858 kB] Get: 2 http://deb.debian.org/debian unstable/main i386 libexpat1 i386 2.6.4-1 [107 kB] Get: 3 http://deb.debian.org/debian unstable/main i386 python3.13-minimal i386 3.13.1-3 [2264 kB] Get: 4 http://deb.debian.org/debian unstable/main i386 python3-minimal i386 3.13.1-2 [27.0 kB] Get: 5 http://deb.debian.org/debian unstable/main i386 media-types all 10.1.0 [26.9 kB] Get: 6 http://deb.debian.org/debian unstable/main i386 netbase all 6.4 [12.8 kB] Get: 7 http://deb.debian.org/debian unstable/main i386 tzdata all 2025a-1 [259 kB] Get: 8 http://deb.debian.org/debian unstable/main i386 libffi8 i386 3.4.6-1 [21.2 kB] Get: 9 http://deb.debian.org/debian unstable/main i386 readline-common all 8.2-6 [69.4 kB] Get: 10 http://deb.debian.org/debian unstable/main i386 libreadline8t64 i386 8.2-6 [173 kB] Get: 11 http://deb.debian.org/debian unstable/main i386 libpython3.13-stdlib i386 3.13.1-3 [1980 kB] Get: 12 http://deb.debian.org/debian unstable/main i386 python3.13 i386 3.13.1-3 [740 kB] Get: 13 http://deb.debian.org/debian unstable/main i386 libpython3-stdlib i386 3.13.1-2 [9952 B] Get: 14 http://deb.debian.org/debian unstable/main i386 python3 i386 3.13.1-2 [28.0 kB] Get: 15 http://deb.debian.org/debian unstable/main i386 sensible-utils all 0.0.24 [24.8 kB] Get: 16 http://deb.debian.org/debian unstable/main i386 libmagic-mgc i386 1:5.45-3+b1 [314 kB] Get: 17 http://deb.debian.org/debian unstable/main i386 libmagic1t64 i386 1:5.45-3+b1 [115 kB] Get: 18 http://deb.debian.org/debian unstable/main i386 file i386 1:5.45-3+b1 [43.2 kB] Get: 19 http://deb.debian.org/debian unstable/main i386 gettext-base i386 0.23.1-1 [245 kB] Get: 20 http://deb.debian.org/debian unstable/main i386 libuchardet0 i386 0.0.8-1+b2 [69.2 kB] Get: 21 http://deb.debian.org/debian unstable/main i386 groff-base i386 1.23.0-7 [1199 kB] Get: 22 http://deb.debian.org/debian unstable/main i386 bsdextrautils i386 2.40.4-1 [96.1 kB] Get: 23 http://deb.debian.org/debian unstable/main i386 libpipeline1 i386 1.5.8-1 [41.2 kB] Get: 24 http://deb.debian.org/debian unstable/main i386 man-db i386 2.13.0-1 [1428 kB] Get: 25 http://deb.debian.org/debian unstable/main i386 m4 i386 1.4.19-5 [301 kB] Get: 26 http://deb.debian.org/debian unstable/main i386 autoconf all 2.72-3 [493 kB] Get: 27 http://deb.debian.org/debian unstable/main i386 autotools-dev all 20220109.1 [51.6 kB] Get: 28 http://deb.debian.org/debian unstable/main i386 automake all 1:1.16.5-1.3 [823 kB] Get: 29 http://deb.debian.org/debian unstable/main i386 autopoint all 0.23.1-1 [770 kB] Get: 30 http://deb.debian.org/debian unstable/main i386 libdebhelper-perl all 13.24.1 [90.9 kB] Get: 31 http://deb.debian.org/debian unstable/main i386 libtool all 2.5.4-2 [539 kB] Get: 32 http://deb.debian.org/debian unstable/main i386 dh-autoreconf all 20 [17.1 kB] Get: 33 http://deb.debian.org/debian unstable/main i386 libarchive-zip-perl all 1.68-1 [104 kB] Get: 34 http://deb.debian.org/debian unstable/main i386 libfile-stripnondeterminism-perl all 1.14.1-1 [19.6 kB] Get: 35 http://deb.debian.org/debian unstable/main i386 dh-strip-nondeterminism all 1.14.1-1 [8584 B] Get: 36 http://deb.debian.org/debian unstable/main i386 libelf1t64 i386 0.192-4 [195 kB] Get: 37 http://deb.debian.org/debian unstable/main i386 dwz i386 0.15-1+b1 [116 kB] Get: 38 http://deb.debian.org/debian unstable/main i386 libunistring5 i386 1.3-1 [458 kB] Get: 39 http://deb.debian.org/debian unstable/main i386 libicu72 i386 72.1-6 [9582 kB] Get: 40 http://deb.debian.org/debian unstable/main i386 libxml2 i386 2.12.7+dfsg+really2.9.14-0.2+b1 [734 kB] Get: 41 http://deb.debian.org/debian unstable/main i386 gettext i386 0.23.1-1 [1714 kB] Get: 42 http://deb.debian.org/debian unstable/main i386 intltool-debian all 0.35.0+20060710.6 [22.9 kB] Get: 43 http://deb.debian.org/debian unstable/main i386 po-debconf all 1.0.21+nmu1 [248 kB] Get: 44 http://deb.debian.org/debian unstable/main i386 debhelper all 13.24.1 [920 kB] Get: 45 http://deb.debian.org/debian unstable/main i386 python3-autocommand all 2.2.2-3 [13.6 kB] Get: 46 http://deb.debian.org/debian unstable/main i386 python3-more-itertools all 10.6.0-1 [65.3 kB] Get: 47 http://deb.debian.org/debian unstable/main i386 python3-typing-extensions all 4.12.2-2 [73.0 kB] Get: 48 http://deb.debian.org/debian unstable/main i386 python3-typeguard all 4.4.1-1 [37.0 kB] Get: 49 http://deb.debian.org/debian unstable/main i386 python3-inflect all 7.3.1-2 [32.4 kB] Get: 50 http://deb.debian.org/debian unstable/main i386 python3-jaraco.context all 6.0.0-1 [7984 B] Get: 51 http://deb.debian.org/debian unstable/main i386 python3-jaraco.functools all 4.1.0-1 [12.0 kB] Get: 52 http://deb.debian.org/debian unstable/main i386 python3-pkg-resources all 75.6.0-1 [222 kB] Get: 53 http://deb.debian.org/debian unstable/main i386 python3-jaraco.text all 4.0.0-1 [11.4 kB] Get: 54 http://deb.debian.org/debian unstable/main i386 python3-zipp all 3.21.0-1 [10.6 kB] Get: 55 http://deb.debian.org/debian unstable/main i386 python3-setuptools all 75.6.0-1 [720 kB] Get: 56 http://deb.debian.org/debian unstable/main i386 dh-python all 6.20250108 [113 kB] Get: 57 http://deb.debian.org/debian unstable/main i386 libblas3 i386 3.12.0-4 [143 kB] Get: 58 http://deb.debian.org/debian unstable/main i386 libgfortran5 i386 14.2.0-14 [735 kB] Get: 59 http://deb.debian.org/debian unstable/main i386 liblapack3 i386 3.12.0-4 [2194 kB] Get: 60 http://deb.debian.org/debian unstable/main i386 libyaml-0-2 i386 0.2.5-2 [55.8 kB] Get: 61 http://deb.debian.org/debian unstable/main i386 python3-packaging all 24.2-1 [55.3 kB] Get: 62 http://deb.debian.org/debian unstable/main i386 python3-pyproject-hooks all 1.2.0-1 [11.7 kB] Get: 63 http://deb.debian.org/debian unstable/main i386 python3-toml all 0.10.2-1 [16.2 kB] Get: 64 http://deb.debian.org/debian unstable/main i386 python3-wheel all 0.45.1-1 [56.7 kB] Get: 65 http://deb.debian.org/debian unstable/main i386 python3-build all 1.2.2-1 [36.0 kB] Get: 66 http://deb.debian.org/debian unstable/main i386 python3-installer all 0.7.0+dfsg1-3 [18.6 kB] Get: 67 http://deb.debian.org/debian unstable/main i386 pybuild-plugin-pyproject all 6.20250108 [11.6 kB] Get: 68 http://deb.debian.org/debian unstable/main i386 python3-soupsieve all 2.6-1 [38.3 kB] Get: 69 http://deb.debian.org/debian unstable/main i386 python3-bs4 all 4.12.3-3 [133 kB] Get: 70 http://deb.debian.org/debian unstable/main i386 python3-dateutil all 2.9.0-3 [79.3 kB] Get: 71 http://deb.debian.org/debian unstable/main i386 python3-hjson all 3.1.0-3 [33.3 kB] Get: 72 http://deb.debian.org/debian unstable/main i386 python3-iniconfig all 1.1.1-2 [6396 B] Get: 73 http://deb.debian.org/debian unstable/main i386 python3-markdown all 3.7-2 [85.2 kB] Get: 74 http://deb.debian.org/debian unstable/main i386 python3-mdurl all 0.1.2-1 [9444 B] Get: 75 http://deb.debian.org/debian unstable/main i386 python3-markdown-it all 3.0.0-2 [62.5 kB] Get: 76 http://deb.debian.org/debian unstable/main i386 python3-numpy i386 1:1.26.4+ds-13 [4751 kB] Get: 77 http://deb.debian.org/debian unstable/main i386 python3-tz all 2024.2-1 [31.0 kB] Get: 78 http://deb.debian.org/debian unstable/main i386 python3-pandas-lib i386 2.2.3+dfsg-5+b1 [6860 kB] Get: 79 http://deb.debian.org/debian unstable/main i386 python3-pandas all 2.2.3+dfsg-5 [3096 kB] Get: 80 http://deb.debian.org/debian unstable/main i386 python3-pluggy all 1.5.0-1 [26.9 kB] Get: 81 http://deb.debian.org/debian unstable/main i386 python3-pygments all 2.18.0+dfsg-2 [836 kB] Get: 82 http://deb.debian.org/debian unstable/main i386 python3-pytest all 8.3.4-1 [250 kB] Get: 83 http://deb.debian.org/debian unstable/main i386 python3-rich all 13.9.4-1 [203 kB] Get: 84 http://deb.debian.org/debian unstable/main i386 python3-setuptools-scm all 8.1.0-1 [40.5 kB] Get: 85 http://deb.debian.org/debian unstable/main i386 python3-super-collections all 0.5.3-2 [12.2 kB] Get: 86 http://deb.debian.org/debian unstable/main i386 python3-yaml i386 6.0.2-1+b1 [173 kB] Fetched 48.7 MB in 1s (63.8 MB/s) Preconfiguring packages ... Selecting previously unselected package libpython3.13-minimal:i386. (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 ... 19836 files and directories currently installed.) Preparing to unpack .../libpython3.13-minimal_3.13.1-3_i386.deb ... Unpacking libpython3.13-minimal:i386 (3.13.1-3) ... Selecting previously unselected package libexpat1:i386. Preparing to unpack .../libexpat1_2.6.4-1_i386.deb ... Unpacking libexpat1:i386 (2.6.4-1) ... Selecting previously unselected package python3.13-minimal. Preparing to unpack .../python3.13-minimal_3.13.1-3_i386.deb ... Unpacking python3.13-minimal (3.13.1-3) ... Setting up libpython3.13-minimal:i386 (3.13.1-3) ... Setting up libexpat1:i386 (2.6.4-1) ... Setting up python3.13-minimal (3.13.1-3) ... 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 ... 20170 files and directories currently installed.) Preparing to unpack .../0-python3-minimal_3.13.1-2_i386.deb ... Unpacking python3-minimal (3.13.1-2) ... Selecting previously unselected package media-types. Preparing to unpack .../1-media-types_10.1.0_all.deb ... Unpacking media-types (10.1.0) ... Selecting previously unselected package netbase. Preparing to unpack .../2-netbase_6.4_all.deb ... Unpacking netbase (6.4) ... Selecting previously unselected package tzdata. Preparing to unpack .../3-tzdata_2025a-1_all.deb ... Unpacking tzdata (2025a-1) ... Selecting previously unselected package libffi8:i386. Preparing to unpack .../4-libffi8_3.4.6-1_i386.deb ... Unpacking libffi8:i386 (3.4.6-1) ... 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:i386. Preparing to unpack .../6-libreadline8t64_8.2-6_i386.deb ... Adding 'diversion of /lib/i386-linux-gnu/libhistory.so.8 to /lib/i386-linux-gnu/libhistory.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/i386-linux-gnu/libhistory.so.8.2 to /lib/i386-linux-gnu/libhistory.so.8.2.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/i386-linux-gnu/libreadline.so.8 to /lib/i386-linux-gnu/libreadline.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/i386-linux-gnu/libreadline.so.8.2 to /lib/i386-linux-gnu/libreadline.so.8.2.usr-is-merged by libreadline8t64' Unpacking libreadline8t64:i386 (8.2-6) ... Selecting previously unselected package libpython3.13-stdlib:i386. Preparing to unpack .../7-libpython3.13-stdlib_3.13.1-3_i386.deb ... Unpacking libpython3.13-stdlib:i386 (3.13.1-3) ... Selecting previously unselected package python3.13. Preparing to unpack .../8-python3.13_3.13.1-3_i386.deb ... Unpacking python3.13 (3.13.1-3) ... Selecting previously unselected package libpython3-stdlib:i386. Preparing to unpack .../9-libpython3-stdlib_3.13.1-2_i386.deb ... Unpacking libpython3-stdlib:i386 (3.13.1-2) ... Setting up python3-minimal (3.13.1-2) ... 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 ... 21180 files and directories currently installed.) Preparing to unpack .../00-python3_3.13.1-2_i386.deb ... Unpacking python3 (3.13.1-2) ... Selecting previously unselected package sensible-utils. Preparing to unpack .../01-sensible-utils_0.0.24_all.deb ... Unpacking sensible-utils (0.0.24) ... Selecting previously unselected package libmagic-mgc. Preparing to unpack .../02-libmagic-mgc_1%3a5.45-3+b1_i386.deb ... Unpacking libmagic-mgc (1:5.45-3+b1) ... Selecting previously unselected package libmagic1t64:i386. Preparing to unpack .../03-libmagic1t64_1%3a5.45-3+b1_i386.deb ... Unpacking libmagic1t64:i386 (1:5.45-3+b1) ... Selecting previously unselected package file. Preparing to unpack .../04-file_1%3a5.45-3+b1_i386.deb ... Unpacking file (1:5.45-3+b1) ... Selecting previously unselected package gettext-base. Preparing to unpack .../05-gettext-base_0.23.1-1_i386.deb ... Unpacking gettext-base (0.23.1-1) ... Selecting previously unselected package libuchardet0:i386. Preparing to unpack .../06-libuchardet0_0.0.8-1+b2_i386.deb ... Unpacking libuchardet0:i386 (0.0.8-1+b2) ... Selecting previously unselected package groff-base. Preparing to unpack .../07-groff-base_1.23.0-7_i386.deb ... Unpacking groff-base (1.23.0-7) ... Selecting previously unselected package bsdextrautils. Preparing to unpack .../08-bsdextrautils_2.40.4-1_i386.deb ... Unpacking bsdextrautils (2.40.4-1) ... Selecting previously unselected package libpipeline1:i386. Preparing to unpack .../09-libpipeline1_1.5.8-1_i386.deb ... Unpacking libpipeline1:i386 (1.5.8-1) ... Selecting previously unselected package man-db. Preparing to unpack .../10-man-db_2.13.0-1_i386.deb ... Unpacking man-db (2.13.0-1) ... Selecting previously unselected package m4. Preparing to unpack .../11-m4_1.4.19-5_i386.deb ... Unpacking m4 (1.4.19-5) ... Selecting previously unselected package autoconf. Preparing to unpack .../12-autoconf_2.72-3_all.deb ... Unpacking autoconf (2.72-3) ... Selecting previously unselected package autotools-dev. Preparing to unpack .../13-autotools-dev_20220109.1_all.deb ... Unpacking autotools-dev (20220109.1) ... Selecting previously unselected package automake. Preparing to unpack .../14-automake_1%3a1.16.5-1.3_all.deb ... Unpacking automake (1:1.16.5-1.3) ... Selecting previously unselected package autopoint. Preparing to unpack .../15-autopoint_0.23.1-1_all.deb ... Unpacking autopoint (0.23.1-1) ... Selecting previously unselected package libdebhelper-perl. Preparing to unpack .../16-libdebhelper-perl_13.24.1_all.deb ... Unpacking libdebhelper-perl (13.24.1) ... Selecting previously unselected package libtool. Preparing to unpack .../17-libtool_2.5.4-2_all.deb ... Unpacking libtool (2.5.4-2) ... 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-1_all.deb ... Unpacking libfile-stripnondeterminism-perl (1.14.1-1) ... Selecting previously unselected package dh-strip-nondeterminism. Preparing to unpack .../21-dh-strip-nondeterminism_1.14.1-1_all.deb ... Unpacking dh-strip-nondeterminism (1.14.1-1) ... Selecting previously unselected package libelf1t64:i386. Preparing to unpack .../22-libelf1t64_0.192-4_i386.deb ... Unpacking libelf1t64:i386 (0.192-4) ... Selecting previously unselected package dwz. Preparing to unpack .../23-dwz_0.15-1+b1_i386.deb ... Unpacking dwz (0.15-1+b1) ... Selecting previously unselected package libunistring5:i386. Preparing to unpack .../24-libunistring5_1.3-1_i386.deb ... Unpacking libunistring5:i386 (1.3-1) ... Selecting previously unselected package libicu72:i386. Preparing to unpack .../25-libicu72_72.1-6_i386.deb ... Unpacking libicu72:i386 (72.1-6) ... Selecting previously unselected package libxml2:i386. Preparing to unpack .../26-libxml2_2.12.7+dfsg+really2.9.14-0.2+b1_i386.deb ... Unpacking libxml2:i386 (2.12.7+dfsg+really2.9.14-0.2+b1) ... Selecting previously unselected package gettext. Preparing to unpack .../27-gettext_0.23.1-1_i386.deb ... Unpacking gettext (0.23.1-1) ... Selecting previously unselected package intltool-debian. Preparing to unpack .../28-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 .../29-po-debconf_1.0.21+nmu1_all.deb ... Unpacking po-debconf (1.0.21+nmu1) ... Selecting previously unselected package debhelper. Preparing to unpack .../30-debhelper_13.24.1_all.deb ... Unpacking debhelper (13.24.1) ... Selecting previously unselected package python3-autocommand. Preparing to unpack .../31-python3-autocommand_2.2.2-3_all.deb ... Unpacking python3-autocommand (2.2.2-3) ... Selecting previously unselected package python3-more-itertools. Preparing to unpack .../32-python3-more-itertools_10.6.0-1_all.deb ... Unpacking python3-more-itertools (10.6.0-1) ... Selecting previously unselected package python3-typing-extensions. Preparing to unpack .../33-python3-typing-extensions_4.12.2-2_all.deb ... Unpacking python3-typing-extensions (4.12.2-2) ... Selecting previously unselected package python3-typeguard. Preparing to unpack .../34-python3-typeguard_4.4.1-1_all.deb ... Unpacking python3-typeguard (4.4.1-1) ... Selecting previously unselected package python3-inflect. Preparing to unpack .../35-python3-inflect_7.3.1-2_all.deb ... Unpacking python3-inflect (7.3.1-2) ... Selecting previously unselected package python3-jaraco.context. Preparing to unpack .../36-python3-jaraco.context_6.0.0-1_all.deb ... Unpacking python3-jaraco.context (6.0.0-1) ... Selecting previously unselected package python3-jaraco.functools. Preparing to unpack .../37-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 .../38-python3-pkg-resources_75.6.0-1_all.deb ... Unpacking python3-pkg-resources (75.6.0-1) ... Selecting previously unselected package python3-jaraco.text. Preparing to unpack .../39-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 .../40-python3-zipp_3.21.0-1_all.deb ... Unpacking python3-zipp (3.21.0-1) ... Selecting previously unselected package python3-setuptools. Preparing to unpack .../41-python3-setuptools_75.6.0-1_all.deb ... Unpacking python3-setuptools (75.6.0-1) ... Selecting previously unselected package dh-python. Preparing to unpack .../42-dh-python_6.20250108_all.deb ... Unpacking dh-python (6.20250108) ... Selecting previously unselected package libblas3:i386. Preparing to unpack .../43-libblas3_3.12.0-4_i386.deb ... Unpacking libblas3:i386 (3.12.0-4) ... Selecting previously unselected package libgfortran5:i386. Preparing to unpack .../44-libgfortran5_14.2.0-14_i386.deb ... Unpacking libgfortran5:i386 (14.2.0-14) ... Selecting previously unselected package liblapack3:i386. Preparing to unpack .../45-liblapack3_3.12.0-4_i386.deb ... Unpacking liblapack3:i386 (3.12.0-4) ... Selecting previously unselected package libyaml-0-2:i386. Preparing to unpack .../46-libyaml-0-2_0.2.5-2_i386.deb ... Unpacking libyaml-0-2:i386 (0.2.5-2) ... Selecting previously unselected package python3-packaging. Preparing to unpack .../47-python3-packaging_24.2-1_all.deb ... Unpacking python3-packaging (24.2-1) ... Selecting previously unselected package python3-pyproject-hooks. Preparing to unpack .../48-python3-pyproject-hooks_1.2.0-1_all.deb ... Unpacking python3-pyproject-hooks (1.2.0-1) ... Selecting previously unselected package python3-toml. Preparing to unpack .../49-python3-toml_0.10.2-1_all.deb ... Unpacking python3-toml (0.10.2-1) ... Selecting previously unselected package python3-wheel. Preparing to unpack .../50-python3-wheel_0.45.1-1_all.deb ... Unpacking python3-wheel (0.45.1-1) ... Selecting previously unselected package python3-build. Preparing to unpack .../51-python3-build_1.2.2-1_all.deb ... Unpacking python3-build (1.2.2-1) ... Selecting previously unselected package python3-installer. Preparing to unpack .../52-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 .../53-pybuild-plugin-pyproject_6.20250108_all.deb ... Unpacking pybuild-plugin-pyproject (6.20250108) ... Selecting previously unselected package python3-soupsieve. Preparing to unpack .../54-python3-soupsieve_2.6-1_all.deb ... Unpacking python3-soupsieve (2.6-1) ... Selecting previously unselected package python3-bs4. Preparing to unpack .../55-python3-bs4_4.12.3-3_all.deb ... Unpacking python3-bs4 (4.12.3-3) ... Selecting previously unselected package python3-dateutil. Preparing to unpack .../56-python3-dateutil_2.9.0-3_all.deb ... Unpacking python3-dateutil (2.9.0-3) ... Selecting previously unselected package python3-hjson. Preparing to unpack .../57-python3-hjson_3.1.0-3_all.deb ... Unpacking python3-hjson (3.1.0-3) ... Selecting previously unselected package python3-iniconfig. Preparing to unpack .../58-python3-iniconfig_1.1.1-2_all.deb ... Unpacking python3-iniconfig (1.1.1-2) ... Selecting previously unselected package python3-markdown. Preparing to unpack .../59-python3-markdown_3.7-2_all.deb ... Unpacking python3-markdown (3.7-2) ... Selecting previously unselected package python3-mdurl. Preparing to unpack .../60-python3-mdurl_0.1.2-1_all.deb ... Unpacking python3-mdurl (0.1.2-1) ... Selecting previously unselected package python3-markdown-it. Preparing to unpack .../61-python3-markdown-it_3.0.0-2_all.deb ... Unpacking python3-markdown-it (3.0.0-2) ... Selecting previously unselected package python3-numpy. Preparing to unpack .../62-python3-numpy_1%3a1.26.4+ds-13_i386.deb ... Unpacking python3-numpy (1:1.26.4+ds-13) ... Selecting previously unselected package python3-tz. Preparing to unpack .../63-python3-tz_2024.2-1_all.deb ... Unpacking python3-tz (2024.2-1) ... Selecting previously unselected package python3-pandas-lib:i386. Preparing to unpack .../64-python3-pandas-lib_2.2.3+dfsg-5+b1_i386.deb ... Unpacking python3-pandas-lib:i386 (2.2.3+dfsg-5+b1) ... Selecting previously unselected package python3-pandas. Preparing to unpack .../65-python3-pandas_2.2.3+dfsg-5_all.deb ... Unpacking python3-pandas (2.2.3+dfsg-5) ... Selecting previously unselected package python3-pluggy. Preparing to unpack .../66-python3-pluggy_1.5.0-1_all.deb ... Unpacking python3-pluggy (1.5.0-1) ... Selecting previously unselected package python3-pygments. Preparing to unpack .../67-python3-pygments_2.18.0+dfsg-2_all.deb ... Unpacking python3-pygments (2.18.0+dfsg-2) ... Selecting previously unselected package python3-pytest. Preparing to unpack .../68-python3-pytest_8.3.4-1_all.deb ... Unpacking python3-pytest (8.3.4-1) ... Selecting previously unselected package python3-rich. Preparing to unpack .../69-python3-rich_13.9.4-1_all.deb ... Unpacking python3-rich (13.9.4-1) ... Selecting previously unselected package python3-setuptools-scm. Preparing to unpack .../70-python3-setuptools-scm_8.1.0-1_all.deb ... Unpacking python3-setuptools-scm (8.1.0-1) ... Selecting previously unselected package python3-super-collections. Preparing to unpack .../71-python3-super-collections_0.5.3-2_all.deb ... Unpacking python3-super-collections (0.5.3-2) ... Selecting previously unselected package python3-yaml. Preparing to unpack .../72-python3-yaml_6.0.2-1+b1_i386.deb ... Unpacking python3-yaml (6.0.2-1+b1) ... Setting up media-types (10.1.0) ... Setting up libpipeline1:i386 (1.5.8-1) ... Setting up libicu72:i386 (72.1-6) ... Setting up bsdextrautils (2.40.4-1) ... Setting up libmagic-mgc (1:5.45-3+b1) ... Setting up libarchive-zip-perl (1.68-1) ... Setting up libyaml-0-2:i386 (0.2.5-2) ... Setting up libdebhelper-perl (13.24.1) ... Setting up libmagic1t64:i386 (1:5.45-3+b1) ... Setting up gettext-base (0.23.1-1) ... Setting up m4 (1.4.19-5) ... Setting up file (1:5.45-3+b1) ... Setting up libelf1t64:i386 (0.192-4) ... Setting up tzdata (2025a-1) ... Current default time zone: 'Etc/UTC' Local time is now: Wed Jan 22 16:38:12 UTC 2025. Universal Time is now: Wed Jan 22 16:38:12 UTC 2025. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up autotools-dev (20220109.1) ... Setting up libblas3:i386 (3.12.0-4) ... update-alternatives: using /usr/lib/i386-linux-gnu/blas/libblas.so.3 to provide /usr/lib/i386-linux-gnu/libblas.so.3 (libblas.so.3-i386-linux-gnu) in auto mode Setting up libunistring5:i386 (1.3-1) ... Setting up autopoint (0.23.1-1) ... Setting up libgfortran5:i386 (14.2.0-14) ... Setting up autoconf (2.72-3) ... Setting up libffi8:i386 (3.4.6-1) ... Setting up dwz (0.15-1+b1) ... Setting up sensible-utils (0.0.24) ... Setting up libuchardet0:i386 (0.0.8-1+b2) ... Setting up netbase (6.4) ... Setting up readline-common (8.2-6) ... Setting up libxml2:i386 (2.12.7+dfsg+really2.9.14-0.2+b1) ... Setting up automake (1:1.16.5-1.3) ... update-alternatives: using /usr/bin/automake-1.16 to provide /usr/bin/automake (automake) in auto mode Setting up libfile-stripnondeterminism-perl (1.14.1-1) ... Setting up liblapack3:i386 (3.12.0-4) ... update-alternatives: using /usr/lib/i386-linux-gnu/lapack/liblapack.so.3 to provide /usr/lib/i386-linux-gnu/liblapack.so.3 (liblapack.so.3-i386-linux-gnu) in auto mode Setting up gettext (0.23.1-1) ... Setting up libtool (2.5.4-2) ... Setting up intltool-debian (0.35.0+20060710.6) ... Setting up dh-autoreconf (20) ... Setting up libreadline8t64:i386 (8.2-6) ... Setting up dh-strip-nondeterminism (1.14.1-1) ... Setting up groff-base (1.23.0-7) ... Setting up libpython3.13-stdlib:i386 (3.13.1-3) ... Setting up libpython3-stdlib:i386 (3.13.1-2) ... Setting up python3.13 (3.13.1-3) ... Setting up po-debconf (1.0.21+nmu1) ... Setting up python3 (3.13.1-2) ... Setting up python3-zipp (3.21.0-1) ... Setting up python3-autocommand (2.2.2-3) ... Setting up man-db (2.13.0-1) ... Not building database; man-db/auto-update is not 'true'. Setting up python3-hjson (3.1.0-3) ... Setting up python3-wheel (0.45.1-1) ... Setting up python3-tz (2024.2-1) ... Setting up python3-pygments (2.18.0+dfsg-2) ... Setting up python3-packaging (24.2-1) ... Setting up python3-pyproject-hooks (1.2.0-1) ... Setting up python3-mdurl (0.1.2-1) ... Setting up python3-markdown (3.7-2) ... Setting up python3-typing-extensions (4.12.2-2) ... Setting up python3-numpy (1:1.26.4+ds-13) ... Setting up python3-toml (0.10.2-1) ... Setting up python3-installer (0.7.0+dfsg1-3) ... Setting up python3-pluggy (1.5.0-1) ... Setting up python3-markdown-it (3.0.0-2) ... Setting up python3-dateutil (2.9.0-3) ... Setting up python3-build (1.2.2-1) ... Setting up python3-soupsieve (2.6-1) ... Setting up python3-more-itertools (10.6.0-1) ... Setting up python3-iniconfig (1.1.1-2) ... Setting up python3-jaraco.functools (4.1.0-1) ... Setting up python3-jaraco.context (6.0.0-1) ... Setting up python3-rich (13.9.4-1) ... Setting up python3-pytest (8.3.4-1) ... Setting up python3-pandas-lib:i386 (2.2.3+dfsg-5+b1) ... Setting up python3-typeguard (4.4.1-1) ... Setting up python3-yaml (6.0.2-1+b1) ... Setting up debhelper (13.24.1) ... Setting up python3-super-collections (0.5.3-2) ... Setting up python3-bs4 (4.12.3-3) ... Setting up python3-inflect (7.3.1-2) ... Setting up python3-pandas (2.2.3+dfsg-5) ... Setting up python3-jaraco.text (4.0.0-1) ... Setting up python3-pkg-resources (75.6.0-1) ... Setting up python3-setuptools (75.6.0-1) ... Setting up python3-setuptools-scm (8.1.0-1) ... Setting up dh-python (6.20250108) ... Setting up pybuild-plugin-pyproject (6.20250108) ... Processing triggers for libc-bin (2.40-5) ... 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/mkdocs-test-0.5.3/ && 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 > ../mkdocs-test_0.5.3-5_source.changes dpkg-buildpackage: info: source package mkdocs-test dpkg-buildpackage: info: source version 0.5.3-5 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by Boyuan Yang dpkg-source --before-build . dpkg-buildpackage: info: host architecture i386 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/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test * Building wheel... running bdist_wheel running build running build_py creating build/lib/mkdocs_test copying mkdocs_test/common.py -> build/lib/mkdocs_test copying mkdocs_test/plugin.py -> build/lib/mkdocs_test copying mkdocs_test/__init__.py -> build/lib/mkdocs_test running egg_info creating mkdocs_test.egg-info writing mkdocs_test.egg-info/PKG-INFO writing dependency_links to mkdocs_test.egg-info/dependency_links.txt writing entry points to mkdocs_test.egg-info/entry_points.txt writing requirements to mkdocs_test.egg-info/requires.txt writing top-level names to mkdocs_test.egg-info/top_level.txt writing manifest file 'mkdocs_test.egg-info/SOURCES.txt' reading manifest file 'mkdocs_test.egg-info/SOURCES.txt' adding license file 'LICENSE' writing manifest file 'mkdocs_test.egg-info/SOURCES.txt' installing to build/bdist.linux-i686/wheel running install running install_lib creating build/bdist.linux-i686/wheel creating build/bdist.linux-i686/wheel/mkdocs_test copying build/lib/mkdocs_test/common.py -> build/bdist.linux-i686/wheel/./mkdocs_test copying build/lib/mkdocs_test/plugin.py -> build/bdist.linux-i686/wheel/./mkdocs_test copying build/lib/mkdocs_test/__init__.py -> build/bdist.linux-i686/wheel/./mkdocs_test running install_egg_info Copying mkdocs_test.egg-info to build/bdist.linux-i686/wheel/./mkdocs_test-0.5.3.egg-info running install_scripts creating build/bdist.linux-i686/wheel/mkdocs_test-0.5.3.dist-info/WHEEL creating '/build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/.tmp-2od6nd6p/mkdocs_test-0.5.3-py3-none-any.whl' and adding 'build/bdist.linux-i686/wheel' to it adding 'mkdocs_test/__init__.py' adding 'mkdocs_test/common.py' adding 'mkdocs_test/plugin.py' adding 'mkdocs_test-0.5.3.dist-info/LICENSE' adding 'mkdocs_test-0.5.3.dist-info/METADATA' adding 'mkdocs_test-0.5.3.dist-info/WHEEL' adding 'mkdocs_test-0.5.3.dist-info/entry_points.txt' adding 'mkdocs_test-0.5.3.dist-info/top_level.txt' adding 'mkdocs_test-0.5.3.dist-info/RECORD' removing build/bdist.linux-i686/wheel Successfully built mkdocs_test-0.5.3-py3-none-any.whl I: pybuild plugin_pyproject:144: Unpacking wheel built for python3.13 with "installer" module debian/rules override_dh_auto_test make[1]: Entering directory '/build/reproducible-path/mkdocs-test-0.5.3' dh_auto_test I: pybuild base:311: cd /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build; python3.13 -m pytest test ============================= test session starts ============================== platform linux -- Python 3.13.1, pytest-8.3.4, pluggy-1.5.0 rootdir: /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build configfile: pyproject.toml plugins: typeguard-4.4.1 collected 8 items test/advanced/test_advanced.py FF [ 25%] test/alter_markdown/test_site.py F [ 37%] test/simple/test_site.py FF [ 62%] test/test_simple.py F.F [100%] =================================== FAILURES =================================== __________________________________ test_pages __________________________________ def test_pages(): project = DocProject() > project.build(strict=False) /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/test/advanced/test_advanced.py:19: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/__init__.py:482: in build self._build_result = run_command(*command) /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/common.py:332: in run_command return subprocess.run(full_command, capture_output=True, text=True) /usr/lib/python3.13/subprocess.py:554: in run with Popen(*popenargs, **kwargs) as process: /usr/lib/python3.13/subprocess.py:1036: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['mkdocs', 'build'], executable = b'mkdocs', preexec_fn = None close_fds = True, pass_fds = (), cwd = None, env = None, startupinfo = None creationflags = 0, shell = False, p2cread = -1, p2cwrite = -1, c2pread = 11 c2pwrite = 12, errread = 13, errwrite = 14, restore_signals = True, gid = None gids = None, uid = None, umask = -1, start_new_session = False process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and (not close_fds or _HAVE_POSIX_SPAWN_CLOSEFROM) and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, close_fds, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'mkdocs' /usr/lib/python3.13/subprocess.py:1966: FileNotFoundError ----------------------------- Captured stdout call ----------------------------- BUILD COMMAND: ['mkdocs', 'build'] _________________________________ test_strict __________________________________ def test_strict(): "This project must fail" project = DocProject() # it must not fail with the --strict option, > project.build(strict=True) /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/test/advanced/test_advanced.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/__init__.py:482: in build self._build_result = run_command(*command) /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/common.py:332: in run_command return subprocess.run(full_command, capture_output=True, text=True) /usr/lib/python3.13/subprocess.py:554: in run with Popen(*popenargs, **kwargs) as process: /usr/lib/python3.13/subprocess.py:1036: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['mkdocs', 'build', '--strict'], executable = b'mkdocs' preexec_fn = None, close_fds = True, pass_fds = (), cwd = None, env = None startupinfo = None, creationflags = 0, shell = False, p2cread = -1 p2cwrite = -1, c2pread = 11, c2pwrite = 12, errread = 13, errwrite = 14 restore_signals = True, gid = None, gids = None, uid = None, umask = -1 start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and (not close_fds or _HAVE_POSIX_SPAWN_CLOSEFROM) and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, close_fds, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'mkdocs' /usr/lib/python3.13/subprocess.py:1966: FileNotFoundError ----------------------------- Captured stdout call ----------------------------- BUILD COMMAND: ['mkdocs', 'build', '--strict'] __________________________________ test_pages __________________________________ def test_pages(): project = DocProject() > project.build(strict=True) /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/test/alter_markdown/test_site.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/__init__.py:482: in build self._build_result = run_command(*command) /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/common.py:332: in run_command return subprocess.run(full_command, capture_output=True, text=True) /usr/lib/python3.13/subprocess.py:554: in run with Popen(*popenargs, **kwargs) as process: /usr/lib/python3.13/subprocess.py:1036: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['mkdocs', 'build', '--strict'], executable = b'mkdocs' preexec_fn = None, close_fds = True, pass_fds = (), cwd = None, env = None startupinfo = None, creationflags = 0, shell = False, p2cread = -1 p2cwrite = -1, c2pread = 11, c2pwrite = 12, errread = 13, errwrite = 14 restore_signals = True, gid = None, gids = None, uid = None, umask = -1 start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and (not close_fds or _HAVE_POSIX_SPAWN_CLOSEFROM) and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, close_fds, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'mkdocs' /usr/lib/python3.13/subprocess.py:1966: FileNotFoundError ----------------------------- Captured stdout call ----------------------------- BUILD COMMAND: ['mkdocs', 'build', '--strict'] __________________________________ test_pages __________________________________ def test_pages(): project = DocProject() > project.build(strict=False) /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/test/simple/test_site.py:19: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/__init__.py:482: in build self._build_result = run_command(*command) /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/common.py:332: in run_command return subprocess.run(full_command, capture_output=True, text=True) /usr/lib/python3.13/subprocess.py:554: in run with Popen(*popenargs, **kwargs) as process: /usr/lib/python3.13/subprocess.py:1036: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['mkdocs', 'build'], executable = b'mkdocs', preexec_fn = None close_fds = True, pass_fds = (), cwd = None, env = None, startupinfo = None creationflags = 0, shell = False, p2cread = -1, p2cwrite = -1, c2pread = 11 c2pwrite = 12, errread = 13, errwrite = 14, restore_signals = True, gid = None gids = None, uid = None, umask = -1, start_new_session = False process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and (not close_fds or _HAVE_POSIX_SPAWN_CLOSEFROM) and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, close_fds, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'mkdocs' /usr/lib/python3.13/subprocess.py:1966: FileNotFoundError ----------------------------- Captured stdout call ----------------------------- BUILD COMMAND: ['mkdocs', 'build'] _________________________________ test_strict __________________________________ def test_strict(): "This project must fail" project = DocProject() # it must not fail with the --strict option, > project.build(strict=True) /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/test/simple/test_site.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/__init__.py:482: in build self._build_result = run_command(*command) /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/common.py:332: in run_command return subprocess.run(full_command, capture_output=True, text=True) /usr/lib/python3.13/subprocess.py:554: in run with Popen(*popenargs, **kwargs) as process: /usr/lib/python3.13/subprocess.py:1036: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['mkdocs', 'build', '--strict'], executable = b'mkdocs' preexec_fn = None, close_fds = True, pass_fds = (), cwd = None, env = None startupinfo = None, creationflags = 0, shell = False, p2cread = -1 p2cwrite = -1, c2pread = 11, c2pwrite = 12, errread = 13, errwrite = 14 restore_signals = True, gid = None, gids = None, uid = None, umask = -1 start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and (not close_fds or _HAVE_POSIX_SPAWN_CLOSEFROM) and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, close_fds, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'mkdocs' /usr/lib/python3.13/subprocess.py:1966: FileNotFoundError ----------------------------- Captured stdout call ----------------------------- BUILD COMMAND: ['mkdocs', 'build', '--strict'] ________________________________ test_functions ________________________________ name = 'lxml.etree', extra = '', errors = 'raise', min_version = None def import_optional_dependency( name: str, extra: str = "", errors: str = "raise", min_version: str | None = None, ): """ Import an optional dependency. By default, if a dependency is missing an ImportError with a nice message will be raised. If a dependency is present, but too old, we raise. Parameters ---------- name : str The module name. extra : str Additional text to include in the ImportError message. errors : str {'raise', 'warn', 'ignore'} What to do when a dependency is not found or its version is too old. * raise : Raise an ImportError * warn : Only applicable when a module's version is to old. Warns that the version is too old and returns None * ignore: If the module is not installed, return None, otherwise, return the module, even if the version is too old. It's expected that users validate the version locally when using ``errors="ignore"`` (see. ``io/html.py``) min_version : str, default None Specify a minimum version that is different from the global pandas minimum version required. Returns ------- maybe_module : Optional[ModuleType] The imported module, when found and the version is correct. None is returned when the package is not found and `errors` is False, or when the package's version is too old and `errors` is ``'warn'`` or ``'ignore'``. """ assert errors in {"warn", "raise", "ignore"} if name=='numba' and warn_numba_platform: warnings.warn(warn_numba_platform) package_name = INSTALL_MAPPING.get(name) install_name = package_name if package_name is not None else name msg = ( f"Missing optional dependency '{install_name}'. {extra} " f"Use pip or conda to install {install_name}." ) try: > module = importlib.import_module(name) /usr/lib/python3/dist-packages/pandas/compat/_optional.py:140: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = 'lxml.etree', package = None def import_module(name, package=None): """Import a module. The 'package' argument is required when performing a relative import. It specifies the package to use as the anchor point from which to resolve the relative import to an absolute import. """ level = 0 if name.startswith('.'): if not package: raise TypeError("the 'package' argument is required to perform a " f"relative import for {name!r}") for character in name: if character != '.': break level += 1 > return _bootstrap._gcd_import(name[level:], package, level) E ModuleNotFoundError: No module named 'lxml' /usr/lib/python3.13/importlib/__init__.py:88: ModuleNotFoundError During handling of the above exception, another exception occurred: def test_functions(): "Test the low level fixtures" h1("Unit tests") # Print the list of directories h2("Directories containing mkdocs.yml") for directory in PROJECTS: print(directory) print(PROJECTS) print() # Example usage h2("Parse tables") SOURCE_DOCUMENT = """ # Header 1 Some text. ## Table 1 | Column 1 | Column 2 | |----------|----------| | Value 1 | Value 2 | | Value 3 | Value 4 | ## Table 2 | Column A | Column B | |----------|----------| | Value A | Value B | | Value C | Value D | ## Another Section Some more text. | Column X | Column Y | |----------|----------| | Value X1 | Value Y1 | | Value X2 | Value Y2 | """ > dfs = get_tables(SOURCE_DOCUMENT) /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/test/test_simple.py:66: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/common.py:320: in get_tables dataframes = extract_tables_from_html(html, /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/common.py:175: in extract_tables_from_html df = pd.read_html(StringIO(str(table)))[0] /usr/lib/python3/dist-packages/pandas/io/html.py:1240: in read_html return _parse( /usr/lib/python3/dist-packages/pandas/io/html.py:971: in _parse parser = _parser_dispatch(flav) /usr/lib/python3/dist-packages/pandas/io/html.py:918: in _parser_dispatch import_optional_dependency("lxml.etree") _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = 'lxml.etree', extra = '', errors = 'raise', min_version = None def import_optional_dependency( name: str, extra: str = "", errors: str = "raise", min_version: str | None = None, ): """ Import an optional dependency. By default, if a dependency is missing an ImportError with a nice message will be raised. If a dependency is present, but too old, we raise. Parameters ---------- name : str The module name. extra : str Additional text to include in the ImportError message. errors : str {'raise', 'warn', 'ignore'} What to do when a dependency is not found or its version is too old. * raise : Raise an ImportError * warn : Only applicable when a module's version is to old. Warns that the version is too old and returns None * ignore: If the module is not installed, return None, otherwise, return the module, even if the version is too old. It's expected that users validate the version locally when using ``errors="ignore"`` (see. ``io/html.py``) min_version : str, default None Specify a minimum version that is different from the global pandas minimum version required. Returns ------- maybe_module : Optional[ModuleType] The imported module, when found and the version is correct. None is returned when the package is not found and `errors` is False, or when the package's version is too old and `errors` is ``'warn'`` or ``'ignore'``. """ assert errors in {"warn", "raise", "ignore"} if name=='numba' and warn_numba_platform: warnings.warn(warn_numba_platform) package_name = INSTALL_MAPPING.get(name) install_name = package_name if package_name is not None else name msg = ( f"Missing optional dependency '{install_name}'. {extra} " f"Use pip or conda to install {install_name}." ) try: module = importlib.import_module(name) except ImportError: if errors == "raise": > raise ImportError(msg) E ImportError: Missing optional dependency 'lxml'. Use pip or conda to install lxml. /usr/lib/python3/dist-packages/pandas/compat/_optional.py:143: ImportError ----------------------------- Captured stdout call ----------------------------- ╭──────────────────────────────────────────────────────────────────────────────╮ │ Unit tests │ ╰──────────────────────────────────────────────────────────────────────────────╯ Directories containing mkdocs.yml simple alter_markdown advanced ['simple', 'alter_markdown', 'advanced'] Parse tables Found a table _______________________________ test_doc_project _______________________________ def test_doc_project(): """ Test a project """ PROJECT_NAME = 'simple' # MYPROJECT = 'simple' h1(f"TESTING MKDOCS PROJECT ({PROJECT_NAME})") h2("Config") myproject = DocProject(PROJECT_NAME) config = myproject.config print(config) h2("Build") > result = myproject.build() /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/test/test_simple.py:165: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/__init__.py:482: in build self._build_result = run_command(*command) /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/common.py:332: in run_command return subprocess.run(full_command, capture_output=True, text=True) /usr/lib/python3.13/subprocess.py:554: in run with Popen(*popenargs, **kwargs) as process: /usr/lib/python3.13/subprocess.py:1036: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['mkdocs', 'build'], executable = b'mkdocs', preexec_fn = None close_fds = True, pass_fds = (), cwd = None, env = None, startupinfo = None creationflags = 0, shell = False, p2cread = -1, p2cwrite = -1, c2pread = 11 c2pwrite = 12, errread = 13, errwrite = 14, restore_signals = True, gid = None gids = None, uid = None, umask = -1, start_new_session = False process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and (not close_fds or _HAVE_POSIX_SPAWN_CLOSEFROM) and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, close_fds, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'mkdocs' /usr/lib/python3.13/subprocess.py:1966: FileNotFoundError ----------------------------- Captured stdout call ----------------------------- ╭──────────────────────────────────────────────────────────────────────────────╮ │ TESTING MKDOCS PROJECT (simple) │ ╰──────────────────────────────────────────────────────────────────────────────╯ Config { site_name: Simple MkDocs Website theme: mkdocs nav: [ { Home: index.md } { "Next page": second.md } ] plugins: [ search test ] } Build BUILD COMMAND: ['mkdocs', 'build'] =========================== short test summary info ============================ FAILED test/advanced/test_advanced.py::test_pages - FileNotFoundError: [Errno... FAILED test/advanced/test_advanced.py::test_strict - FileNotFoundError: [Errn... FAILED test/alter_markdown/test_site.py::test_pages - FileNotFoundError: [Err... FAILED test/simple/test_site.py::test_pages - FileNotFoundError: [Errno 2] No... FAILED test/simple/test_site.py::test_strict - FileNotFoundError: [Errno 2] N... FAILED test/test_simple.py::test_functions - ImportError: Missing optional de... FAILED test/test_simple.py::test_doc_project - FileNotFoundError: [Errno 2] N... ========================= 7 failed, 1 passed in 5.00s ========================== E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build; python3.13 -m pytest test dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.13 returned exit code 13 make[1]: [debian/rules:10: override_dh_auto_test] Error 25 (ignored) make[1]: Leaving directory '/build/reproducible-path/mkdocs-test-0.5.3' create-stamp debian/debhelper-build-stamp dh_testroot -O--buildsystem=pybuild dh_prep -O--buildsystem=pybuild dh_auto_install --destdir=debian/python3-mkdocs-test/ -O--buildsystem=pybuild I: pybuild plugin_pyproject:178: Copying package built for python3.13 to destdir dh_installdocs -O--buildsystem=pybuild dh_installchangelogs -O--buildsystem=pybuild dh_python3 -O--buildsystem=pybuild dh_installsystemduser -O--buildsystem=pybuild dh_perl -O--buildsystem=pybuild dh_link -O--buildsystem=pybuild dh_strip_nondeterminism -O--buildsystem=pybuild dh_compress -O--buildsystem=pybuild dh_fixperms -O--buildsystem=pybuild dh_missing -O--buildsystem=pybuild dh_installdeb -O--buildsystem=pybuild dh_gencontrol -O--buildsystem=pybuild dpkg-gencontrol: warning: Recommends field of package python3-mkdocs-test: substitution variable ${python3:Recommends} used, but is not defined dh_md5sums -O--buildsystem=pybuild dh_builddeb -O--buildsystem=pybuild dpkg-deb: building package 'python3-mkdocs-test' in '../python3-mkdocs-test_0.5.3-5_all.deb'. dpkg-genbuildinfo --build=binary -O../mkdocs-test_0.5.3-5_i386.buildinfo dpkg-genchanges --build=binary -O../mkdocs-test_0.5.3-5_i386.changes dpkg-genchanges: info: binary-only upload (no source code included) dpkg-source --after-build . dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: not including original source code in upload I: copying local configuration I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env I: removing directory /srv/workspace/pbuilder/62908 and its subdirectories I: Current time: Wed Jan 22 04:39:08 -12 2025 I: pbuilder-time-stamp: 1737563948 Wed Jan 22 16:39:08 UTC 2025 I: Signing ./b1/mkdocs-test_0.5.3-5_i386.buildinfo as mkdocs-test_0.5.3-5_i386.buildinfo.asc Wed Jan 22 16:39:08 UTC 2025 I: Signed ./b1/mkdocs-test_0.5.3-5_i386.buildinfo as ./b1/mkdocs-test_0.5.3-5_i386.buildinfo.asc Wed Jan 22 16:39:08 UTC 2025 - build #1 for mkdocs-test/unstable/i386 on ionos2-i386 done. Starting cleanup. All cleanup done. Wed Jan 22 16:39:08 UTC 2025 - reproducible_build.sh stopped running as /tmp/jenkins-script-rKNTvAp6, removing. /srv/reproducible-results/rbuild-debian/r-b-build.M58Pdxnz: total 16 drwxr-xr-x 2 jenkins jenkins 4096 Jan 22 16:39 b1 drwxr-xr-x 2 jenkins jenkins 4096 Jan 22 16:37 b2 -rw-r--r-- 1 jenkins jenkins 2763 Jan 21 14:50 mkdocs-test_0.5.3-5.dsc -rw------- 1 jenkins jenkins 3886 Jan 22 16:37 rbuildlog.DHUVWWa /srv/reproducible-results/rbuild-debian/r-b-build.M58Pdxnz/b1: total 156 -rw-r--r-- 1 jenkins jenkins 107407 Jan 22 16:39 build.log -rw-r--r-- 1 jenkins jenkins 2364 Jan 22 16:39 mkdocs-test_0.5.3-5.debian.tar.xz -rw-r--r-- 1 jenkins jenkins 2763 Jan 22 16:39 mkdocs-test_0.5.3-5.dsc -rw-r--r-- 1 jenkins jenkins 6461 Jan 22 16:39 mkdocs-test_0.5.3-5_i386.buildinfo -rw-r--r-- 1 jenkins jenkins 7343 Jan 22 16:39 mkdocs-test_0.5.3-5_i386.buildinfo.asc -rw-r--r-- 1 jenkins jenkins 1142 Jan 22 16:39 mkdocs-test_0.5.3-5_i386.changes -rw-r--r-- 1 jenkins jenkins 1268 Jan 22 16:39 mkdocs-test_0.5.3-5_source.changes -rw-r--r-- 1 jenkins jenkins 14812 Jan 22 16:39 python3-mkdocs-test_0.5.3-5_all.deb /srv/reproducible-results/rbuild-debian/r-b-build.M58Pdxnz/b2: total 0 Wed Jan 22 16:39:10 UTC 2025 I: Deleting $TMPDIR on ionos2-i386.debian.net. I: pbuilder: network access will be disabled during build I: Current time: Wed Jan 22 04:37:31 -12 2025 I: pbuilder-time-stamp: 1737563851 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: using eatmydata during job I: Copying source file I: copying [mkdocs-test_0.5.3-5.dsc] I: copying [./mkdocs-test_0.5.3.orig.tar.gz] I: copying [./mkdocs-test_0.5.3-5.debian.tar.xz] I: Extracting source dpkg-source: warning: cannot verify inline signature for ./mkdocs-test_0.5.3-5.dsc: unsupported subcommand dpkg-source: info: extracting mkdocs-test in mkdocs-test-0.5.3 dpkg-source: info: unpacking mkdocs-test_0.5.3.orig.tar.gz dpkg-source: info: unpacking mkdocs-test_0.5.3-5.debian.tar.xz I: Not using root during the build. I: Installing the build-deps I: user script /srv/workspace/pbuilder/62908/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='i386' DEBIAN_FRONTEND='noninteractive' DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=11 ' DISTRIBUTION='unstable' HOME='/root' HOST_ARCH='i386' IFS=' ' INVOCATION_ID='963eaf08855942fd8d129b8bd28a816f' LANG='C' LANGUAGE='en_US:en' LC_ALL='C' LD_LIBRARY_PATH='/usr/lib/libeatmydata' LD_PRELOAD='libeatmydata.so' 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='62908' 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.M58Pdxnz/pbuilderrc_Uc88 --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.M58Pdxnz/b1 --logfile b1/build.log mkdocs-test_0.5.3-5.dsc' SUDO_GID='112' SUDO_UID='107' SUDO_USER='jenkins' TERM='unknown' TZ='/usr/share/zoneinfo/Etc/GMT+12' USER='root' _='/usr/bin/systemd-run' http_proxy='http://46.16.76.132:3128' I: uname -a Linux ionos2-i386 6.1.0-30-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.124-1 (2025-01-12) x86_64 GNU/Linux I: ls -l /bin lrwxrwxrwx 1 root root 7 Nov 22 14:40 /bin -> usr/bin I: user script /srv/workspace/pbuilder/62908/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: i386 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, python3-bs4, python3-markdown, python3-pandas, python3-pytest, python3-rich, python3-setuptools, python3-setuptools-scm, python3-super-collections, python3-yaml dpkg-deb: building package 'pbuilder-satisfydepends-dummy' in '/tmp/satisfydepends-aptitude/pbuilder-satisfydepends-dummy.deb'. Selecting previously unselected package pbuilder-satisfydepends-dummy. (Reading database ... 19836 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; however: Package python3 is not installed. pbuilder-satisfydepends-dummy depends on python3-bs4; however: Package python3-bs4 is not installed. pbuilder-satisfydepends-dummy depends on python3-markdown; however: Package python3-markdown is not installed. pbuilder-satisfydepends-dummy depends on python3-pandas; however: Package python3-pandas is not installed. pbuilder-satisfydepends-dummy depends on python3-pytest; however: Package python3-pytest is not installed. pbuilder-satisfydepends-dummy depends on python3-rich; however: Package python3-rich is not installed. pbuilder-satisfydepends-dummy depends on python3-setuptools; however: Package python3-setuptools is not installed. pbuilder-satisfydepends-dummy depends on python3-setuptools-scm; however: Package python3-setuptools-scm is not installed. pbuilder-satisfydepends-dummy depends on python3-super-collections; however: Package python3-super-collections is not installed. pbuilder-satisfydepends-dummy depends on python3-yaml; however: Package python3-yaml 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} libblas3{a} libdebhelper-perl{a} libelf1t64{a} libexpat1{a} libffi8{a} libfile-stripnondeterminism-perl{a} libgfortran5{a} libicu72{a} liblapack3{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} libyaml-0-2{a} m4{a} man-db{a} media-types{a} netbase{a} po-debconf{a} pybuild-plugin-pyproject{a} python3{a} python3-autocommand{a} python3-bs4{a} python3-build{a} python3-dateutil{a} python3-hjson{a} python3-inflect{a} python3-iniconfig{a} python3-installer{a} python3-jaraco.context{a} python3-jaraco.functools{a} python3-jaraco.text{a} python3-markdown{a} python3-markdown-it{a} python3-mdurl{a} python3-minimal{a} python3-more-itertools{a} python3-numpy{a} python3-packaging{a} python3-pandas{a} python3-pandas-lib{a} python3-pkg-resources{a} python3-pluggy{a} python3-pygments{a} python3-pyproject-hooks{a} python3-pytest{a} python3-rich{a} python3-setuptools{a} python3-setuptools-scm{a} python3-soupsieve{a} python3-super-collections{a} python3-toml{a} python3-typeguard{a} python3-typing-extensions{a} python3-tz{a} python3-wheel{a} python3-yaml{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 libltdl-dev libmail-sendmail-perl lynx python3-bottleneck python3-chardet python3-charset-normalizer python3-html5lib python3-jinja2 python3-lxml python3-matplotlib python3-numexpr python3-odf python3-openpyxl python3-scipy python3-tables wget 0 packages upgraded, 86 newly installed, 0 to remove and 0 not upgraded. Need to get 48.7 MB of archives. After unpacking 242 MB will be used. Writing extended state information... Get: 1 http://deb.debian.org/debian unstable/main i386 libpython3.13-minimal i386 3.13.1-3 [858 kB] Get: 2 http://deb.debian.org/debian unstable/main i386 libexpat1 i386 2.6.4-1 [107 kB] Get: 3 http://deb.debian.org/debian unstable/main i386 python3.13-minimal i386 3.13.1-3 [2264 kB] Get: 4 http://deb.debian.org/debian unstable/main i386 python3-minimal i386 3.13.1-2 [27.0 kB] Get: 5 http://deb.debian.org/debian unstable/main i386 media-types all 10.1.0 [26.9 kB] Get: 6 http://deb.debian.org/debian unstable/main i386 netbase all 6.4 [12.8 kB] Get: 7 http://deb.debian.org/debian unstable/main i386 tzdata all 2025a-1 [259 kB] Get: 8 http://deb.debian.org/debian unstable/main i386 libffi8 i386 3.4.6-1 [21.2 kB] Get: 9 http://deb.debian.org/debian unstable/main i386 readline-common all 8.2-6 [69.4 kB] Get: 10 http://deb.debian.org/debian unstable/main i386 libreadline8t64 i386 8.2-6 [173 kB] Get: 11 http://deb.debian.org/debian unstable/main i386 libpython3.13-stdlib i386 3.13.1-3 [1980 kB] Get: 12 http://deb.debian.org/debian unstable/main i386 python3.13 i386 3.13.1-3 [740 kB] Get: 13 http://deb.debian.org/debian unstable/main i386 libpython3-stdlib i386 3.13.1-2 [9952 B] Get: 14 http://deb.debian.org/debian unstable/main i386 python3 i386 3.13.1-2 [28.0 kB] Get: 15 http://deb.debian.org/debian unstable/main i386 sensible-utils all 0.0.24 [24.8 kB] Get: 16 http://deb.debian.org/debian unstable/main i386 libmagic-mgc i386 1:5.45-3+b1 [314 kB] Get: 17 http://deb.debian.org/debian unstable/main i386 libmagic1t64 i386 1:5.45-3+b1 [115 kB] Get: 18 http://deb.debian.org/debian unstable/main i386 file i386 1:5.45-3+b1 [43.2 kB] Get: 19 http://deb.debian.org/debian unstable/main i386 gettext-base i386 0.23.1-1 [245 kB] Get: 20 http://deb.debian.org/debian unstable/main i386 libuchardet0 i386 0.0.8-1+b2 [69.2 kB] Get: 21 http://deb.debian.org/debian unstable/main i386 groff-base i386 1.23.0-7 [1199 kB] Get: 22 http://deb.debian.org/debian unstable/main i386 bsdextrautils i386 2.40.4-1 [96.1 kB] Get: 23 http://deb.debian.org/debian unstable/main i386 libpipeline1 i386 1.5.8-1 [41.2 kB] Get: 24 http://deb.debian.org/debian unstable/main i386 man-db i386 2.13.0-1 [1428 kB] Get: 25 http://deb.debian.org/debian unstable/main i386 m4 i386 1.4.19-5 [301 kB] Get: 26 http://deb.debian.org/debian unstable/main i386 autoconf all 2.72-3 [493 kB] Get: 27 http://deb.debian.org/debian unstable/main i386 autotools-dev all 20220109.1 [51.6 kB] Get: 28 http://deb.debian.org/debian unstable/main i386 automake all 1:1.16.5-1.3 [823 kB] Get: 29 http://deb.debian.org/debian unstable/main i386 autopoint all 0.23.1-1 [770 kB] Get: 30 http://deb.debian.org/debian unstable/main i386 libdebhelper-perl all 13.24.1 [90.9 kB] Get: 31 http://deb.debian.org/debian unstable/main i386 libtool all 2.5.4-2 [539 kB] Get: 32 http://deb.debian.org/debian unstable/main i386 dh-autoreconf all 20 [17.1 kB] Get: 33 http://deb.debian.org/debian unstable/main i386 libarchive-zip-perl all 1.68-1 [104 kB] Get: 34 http://deb.debian.org/debian unstable/main i386 libfile-stripnondeterminism-perl all 1.14.1-1 [19.6 kB] Get: 35 http://deb.debian.org/debian unstable/main i386 dh-strip-nondeterminism all 1.14.1-1 [8584 B] Get: 36 http://deb.debian.org/debian unstable/main i386 libelf1t64 i386 0.192-4 [195 kB] Get: 37 http://deb.debian.org/debian unstable/main i386 dwz i386 0.15-1+b1 [116 kB] Get: 38 http://deb.debian.org/debian unstable/main i386 libunistring5 i386 1.3-1 [458 kB] Get: 39 http://deb.debian.org/debian unstable/main i386 libicu72 i386 72.1-6 [9582 kB] Get: 40 http://deb.debian.org/debian unstable/main i386 libxml2 i386 2.12.7+dfsg+really2.9.14-0.2+b1 [734 kB] Get: 41 http://deb.debian.org/debian unstable/main i386 gettext i386 0.23.1-1 [1714 kB] Get: 42 http://deb.debian.org/debian unstable/main i386 intltool-debian all 0.35.0+20060710.6 [22.9 kB] Get: 43 http://deb.debian.org/debian unstable/main i386 po-debconf all 1.0.21+nmu1 [248 kB] Get: 44 http://deb.debian.org/debian unstable/main i386 debhelper all 13.24.1 [920 kB] Get: 45 http://deb.debian.org/debian unstable/main i386 python3-autocommand all 2.2.2-3 [13.6 kB] Get: 46 http://deb.debian.org/debian unstable/main i386 python3-more-itertools all 10.6.0-1 [65.3 kB] Get: 47 http://deb.debian.org/debian unstable/main i386 python3-typing-extensions all 4.12.2-2 [73.0 kB] Get: 48 http://deb.debian.org/debian unstable/main i386 python3-typeguard all 4.4.1-1 [37.0 kB] Get: 49 http://deb.debian.org/debian unstable/main i386 python3-inflect all 7.3.1-2 [32.4 kB] Get: 50 http://deb.debian.org/debian unstable/main i386 python3-jaraco.context all 6.0.0-1 [7984 B] Get: 51 http://deb.debian.org/debian unstable/main i386 python3-jaraco.functools all 4.1.0-1 [12.0 kB] Get: 52 http://deb.debian.org/debian unstable/main i386 python3-pkg-resources all 75.6.0-1 [222 kB] Get: 53 http://deb.debian.org/debian unstable/main i386 python3-jaraco.text all 4.0.0-1 [11.4 kB] Get: 54 http://deb.debian.org/debian unstable/main i386 python3-zipp all 3.21.0-1 [10.6 kB] Get: 55 http://deb.debian.org/debian unstable/main i386 python3-setuptools all 75.6.0-1 [720 kB] Get: 56 http://deb.debian.org/debian unstable/main i386 dh-python all 6.20250108 [113 kB] Get: 57 http://deb.debian.org/debian unstable/main i386 libblas3 i386 3.12.0-4 [143 kB] Get: 58 http://deb.debian.org/debian unstable/main i386 libgfortran5 i386 14.2.0-14 [735 kB] Get: 59 http://deb.debian.org/debian unstable/main i386 liblapack3 i386 3.12.0-4 [2194 kB] Get: 60 http://deb.debian.org/debian unstable/main i386 libyaml-0-2 i386 0.2.5-2 [55.8 kB] Get: 61 http://deb.debian.org/debian unstable/main i386 python3-packaging all 24.2-1 [55.3 kB] Get: 62 http://deb.debian.org/debian unstable/main i386 python3-pyproject-hooks all 1.2.0-1 [11.7 kB] Get: 63 http://deb.debian.org/debian unstable/main i386 python3-toml all 0.10.2-1 [16.2 kB] Get: 64 http://deb.debian.org/debian unstable/main i386 python3-wheel all 0.45.1-1 [56.7 kB] Get: 65 http://deb.debian.org/debian unstable/main i386 python3-build all 1.2.2-1 [36.0 kB] Get: 66 http://deb.debian.org/debian unstable/main i386 python3-installer all 0.7.0+dfsg1-3 [18.6 kB] Get: 67 http://deb.debian.org/debian unstable/main i386 pybuild-plugin-pyproject all 6.20250108 [11.6 kB] Get: 68 http://deb.debian.org/debian unstable/main i386 python3-soupsieve all 2.6-1 [38.3 kB] Get: 69 http://deb.debian.org/debian unstable/main i386 python3-bs4 all 4.12.3-3 [133 kB] Get: 70 http://deb.debian.org/debian unstable/main i386 python3-dateutil all 2.9.0-3 [79.3 kB] Get: 71 http://deb.debian.org/debian unstable/main i386 python3-hjson all 3.1.0-3 [33.3 kB] Get: 72 http://deb.debian.org/debian unstable/main i386 python3-iniconfig all 1.1.1-2 [6396 B] Get: 73 http://deb.debian.org/debian unstable/main i386 python3-markdown all 3.7-2 [85.2 kB] Get: 74 http://deb.debian.org/debian unstable/main i386 python3-mdurl all 0.1.2-1 [9444 B] Get: 75 http://deb.debian.org/debian unstable/main i386 python3-markdown-it all 3.0.0-2 [62.5 kB] Get: 76 http://deb.debian.org/debian unstable/main i386 python3-numpy i386 1:1.26.4+ds-13 [4751 kB] Get: 77 http://deb.debian.org/debian unstable/main i386 python3-tz all 2024.2-1 [31.0 kB] Get: 78 http://deb.debian.org/debian unstable/main i386 python3-pandas-lib i386 2.2.3+dfsg-5+b1 [6860 kB] Get: 79 http://deb.debian.org/debian unstable/main i386 python3-pandas all 2.2.3+dfsg-5 [3096 kB] Get: 80 http://deb.debian.org/debian unstable/main i386 python3-pluggy all 1.5.0-1 [26.9 kB] Get: 81 http://deb.debian.org/debian unstable/main i386 python3-pygments all 2.18.0+dfsg-2 [836 kB] Get: 82 http://deb.debian.org/debian unstable/main i386 python3-pytest all 8.3.4-1 [250 kB] Get: 83 http://deb.debian.org/debian unstable/main i386 python3-rich all 13.9.4-1 [203 kB] Get: 84 http://deb.debian.org/debian unstable/main i386 python3-setuptools-scm all 8.1.0-1 [40.5 kB] Get: 85 http://deb.debian.org/debian unstable/main i386 python3-super-collections all 0.5.3-2 [12.2 kB] Get: 86 http://deb.debian.org/debian unstable/main i386 python3-yaml i386 6.0.2-1+b1 [173 kB] Fetched 48.7 MB in 1s (63.8 MB/s) Preconfiguring packages ... Selecting previously unselected package libpython3.13-minimal:i386. (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 ... 19836 files and directories currently installed.) Preparing to unpack .../libpython3.13-minimal_3.13.1-3_i386.deb ... Unpacking libpython3.13-minimal:i386 (3.13.1-3) ... Selecting previously unselected package libexpat1:i386. Preparing to unpack .../libexpat1_2.6.4-1_i386.deb ... Unpacking libexpat1:i386 (2.6.4-1) ... Selecting previously unselected package python3.13-minimal. Preparing to unpack .../python3.13-minimal_3.13.1-3_i386.deb ... Unpacking python3.13-minimal (3.13.1-3) ... Setting up libpython3.13-minimal:i386 (3.13.1-3) ... Setting up libexpat1:i386 (2.6.4-1) ... Setting up python3.13-minimal (3.13.1-3) ... 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 ... 20170 files and directories currently installed.) Preparing to unpack .../0-python3-minimal_3.13.1-2_i386.deb ... Unpacking python3-minimal (3.13.1-2) ... Selecting previously unselected package media-types. Preparing to unpack .../1-media-types_10.1.0_all.deb ... Unpacking media-types (10.1.0) ... Selecting previously unselected package netbase. Preparing to unpack .../2-netbase_6.4_all.deb ... Unpacking netbase (6.4) ... Selecting previously unselected package tzdata. Preparing to unpack .../3-tzdata_2025a-1_all.deb ... Unpacking tzdata (2025a-1) ... Selecting previously unselected package libffi8:i386. Preparing to unpack .../4-libffi8_3.4.6-1_i386.deb ... Unpacking libffi8:i386 (3.4.6-1) ... 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:i386. Preparing to unpack .../6-libreadline8t64_8.2-6_i386.deb ... Adding 'diversion of /lib/i386-linux-gnu/libhistory.so.8 to /lib/i386-linux-gnu/libhistory.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/i386-linux-gnu/libhistory.so.8.2 to /lib/i386-linux-gnu/libhistory.so.8.2.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/i386-linux-gnu/libreadline.so.8 to /lib/i386-linux-gnu/libreadline.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/i386-linux-gnu/libreadline.so.8.2 to /lib/i386-linux-gnu/libreadline.so.8.2.usr-is-merged by libreadline8t64' Unpacking libreadline8t64:i386 (8.2-6) ... Selecting previously unselected package libpython3.13-stdlib:i386. Preparing to unpack .../7-libpython3.13-stdlib_3.13.1-3_i386.deb ... Unpacking libpython3.13-stdlib:i386 (3.13.1-3) ... Selecting previously unselected package python3.13. Preparing to unpack .../8-python3.13_3.13.1-3_i386.deb ... Unpacking python3.13 (3.13.1-3) ... Selecting previously unselected package libpython3-stdlib:i386. Preparing to unpack .../9-libpython3-stdlib_3.13.1-2_i386.deb ... Unpacking libpython3-stdlib:i386 (3.13.1-2) ... Setting up python3-minimal (3.13.1-2) ... 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 ... 21180 files and directories currently installed.) Preparing to unpack .../00-python3_3.13.1-2_i386.deb ... Unpacking python3 (3.13.1-2) ... Selecting previously unselected package sensible-utils. Preparing to unpack .../01-sensible-utils_0.0.24_all.deb ... Unpacking sensible-utils (0.0.24) ... Selecting previously unselected package libmagic-mgc. Preparing to unpack .../02-libmagic-mgc_1%3a5.45-3+b1_i386.deb ... Unpacking libmagic-mgc (1:5.45-3+b1) ... Selecting previously unselected package libmagic1t64:i386. Preparing to unpack .../03-libmagic1t64_1%3a5.45-3+b1_i386.deb ... Unpacking libmagic1t64:i386 (1:5.45-3+b1) ... Selecting previously unselected package file. Preparing to unpack .../04-file_1%3a5.45-3+b1_i386.deb ... Unpacking file (1:5.45-3+b1) ... Selecting previously unselected package gettext-base. Preparing to unpack .../05-gettext-base_0.23.1-1_i386.deb ... Unpacking gettext-base (0.23.1-1) ... Selecting previously unselected package libuchardet0:i386. Preparing to unpack .../06-libuchardet0_0.0.8-1+b2_i386.deb ... Unpacking libuchardet0:i386 (0.0.8-1+b2) ... Selecting previously unselected package groff-base. Preparing to unpack .../07-groff-base_1.23.0-7_i386.deb ... Unpacking groff-base (1.23.0-7) ... Selecting previously unselected package bsdextrautils. Preparing to unpack .../08-bsdextrautils_2.40.4-1_i386.deb ... Unpacking bsdextrautils (2.40.4-1) ... Selecting previously unselected package libpipeline1:i386. Preparing to unpack .../09-libpipeline1_1.5.8-1_i386.deb ... Unpacking libpipeline1:i386 (1.5.8-1) ... Selecting previously unselected package man-db. Preparing to unpack .../10-man-db_2.13.0-1_i386.deb ... Unpacking man-db (2.13.0-1) ... Selecting previously unselected package m4. Preparing to unpack .../11-m4_1.4.19-5_i386.deb ... Unpacking m4 (1.4.19-5) ... Selecting previously unselected package autoconf. Preparing to unpack .../12-autoconf_2.72-3_all.deb ... Unpacking autoconf (2.72-3) ... Selecting previously unselected package autotools-dev. Preparing to unpack .../13-autotools-dev_20220109.1_all.deb ... Unpacking autotools-dev (20220109.1) ... Selecting previously unselected package automake. Preparing to unpack .../14-automake_1%3a1.16.5-1.3_all.deb ... Unpacking automake (1:1.16.5-1.3) ... Selecting previously unselected package autopoint. Preparing to unpack .../15-autopoint_0.23.1-1_all.deb ... Unpacking autopoint (0.23.1-1) ... Selecting previously unselected package libdebhelper-perl. Preparing to unpack .../16-libdebhelper-perl_13.24.1_all.deb ... Unpacking libdebhelper-perl (13.24.1) ... Selecting previously unselected package libtool. Preparing to unpack .../17-libtool_2.5.4-2_all.deb ... Unpacking libtool (2.5.4-2) ... 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-1_all.deb ... Unpacking libfile-stripnondeterminism-perl (1.14.1-1) ... Selecting previously unselected package dh-strip-nondeterminism. Preparing to unpack .../21-dh-strip-nondeterminism_1.14.1-1_all.deb ... Unpacking dh-strip-nondeterminism (1.14.1-1) ... Selecting previously unselected package libelf1t64:i386. Preparing to unpack .../22-libelf1t64_0.192-4_i386.deb ... Unpacking libelf1t64:i386 (0.192-4) ... Selecting previously unselected package dwz. Preparing to unpack .../23-dwz_0.15-1+b1_i386.deb ... Unpacking dwz (0.15-1+b1) ... Selecting previously unselected package libunistring5:i386. Preparing to unpack .../24-libunistring5_1.3-1_i386.deb ... Unpacking libunistring5:i386 (1.3-1) ... Selecting previously unselected package libicu72:i386. Preparing to unpack .../25-libicu72_72.1-6_i386.deb ... Unpacking libicu72:i386 (72.1-6) ... Selecting previously unselected package libxml2:i386. Preparing to unpack .../26-libxml2_2.12.7+dfsg+really2.9.14-0.2+b1_i386.deb ... Unpacking libxml2:i386 (2.12.7+dfsg+really2.9.14-0.2+b1) ... Selecting previously unselected package gettext. Preparing to unpack .../27-gettext_0.23.1-1_i386.deb ... Unpacking gettext (0.23.1-1) ... Selecting previously unselected package intltool-debian. Preparing to unpack .../28-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 .../29-po-debconf_1.0.21+nmu1_all.deb ... Unpacking po-debconf (1.0.21+nmu1) ... Selecting previously unselected package debhelper. Preparing to unpack .../30-debhelper_13.24.1_all.deb ... Unpacking debhelper (13.24.1) ... Selecting previously unselected package python3-autocommand. Preparing to unpack .../31-python3-autocommand_2.2.2-3_all.deb ... Unpacking python3-autocommand (2.2.2-3) ... Selecting previously unselected package python3-more-itertools. Preparing to unpack .../32-python3-more-itertools_10.6.0-1_all.deb ... Unpacking python3-more-itertools (10.6.0-1) ... Selecting previously unselected package python3-typing-extensions. Preparing to unpack .../33-python3-typing-extensions_4.12.2-2_all.deb ... Unpacking python3-typing-extensions (4.12.2-2) ... Selecting previously unselected package python3-typeguard. Preparing to unpack .../34-python3-typeguard_4.4.1-1_all.deb ... Unpacking python3-typeguard (4.4.1-1) ... Selecting previously unselected package python3-inflect. Preparing to unpack .../35-python3-inflect_7.3.1-2_all.deb ... Unpacking python3-inflect (7.3.1-2) ... Selecting previously unselected package python3-jaraco.context. Preparing to unpack .../36-python3-jaraco.context_6.0.0-1_all.deb ... Unpacking python3-jaraco.context (6.0.0-1) ... Selecting previously unselected package python3-jaraco.functools. Preparing to unpack .../37-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 .../38-python3-pkg-resources_75.6.0-1_all.deb ... Unpacking python3-pkg-resources (75.6.0-1) ... Selecting previously unselected package python3-jaraco.text. Preparing to unpack .../39-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 .../40-python3-zipp_3.21.0-1_all.deb ... Unpacking python3-zipp (3.21.0-1) ... Selecting previously unselected package python3-setuptools. Preparing to unpack .../41-python3-setuptools_75.6.0-1_all.deb ... Unpacking python3-setuptools (75.6.0-1) ... Selecting previously unselected package dh-python. Preparing to unpack .../42-dh-python_6.20250108_all.deb ... Unpacking dh-python (6.20250108) ... Selecting previously unselected package libblas3:i386. Preparing to unpack .../43-libblas3_3.12.0-4_i386.deb ... Unpacking libblas3:i386 (3.12.0-4) ... Selecting previously unselected package libgfortran5:i386. Preparing to unpack .../44-libgfortran5_14.2.0-14_i386.deb ... Unpacking libgfortran5:i386 (14.2.0-14) ... Selecting previously unselected package liblapack3:i386. Preparing to unpack .../45-liblapack3_3.12.0-4_i386.deb ... Unpacking liblapack3:i386 (3.12.0-4) ... Selecting previously unselected package libyaml-0-2:i386. Preparing to unpack .../46-libyaml-0-2_0.2.5-2_i386.deb ... Unpacking libyaml-0-2:i386 (0.2.5-2) ... Selecting previously unselected package python3-packaging. Preparing to unpack .../47-python3-packaging_24.2-1_all.deb ... Unpacking python3-packaging (24.2-1) ... Selecting previously unselected package python3-pyproject-hooks. Preparing to unpack .../48-python3-pyproject-hooks_1.2.0-1_all.deb ... Unpacking python3-pyproject-hooks (1.2.0-1) ... Selecting previously unselected package python3-toml. Preparing to unpack .../49-python3-toml_0.10.2-1_all.deb ... Unpacking python3-toml (0.10.2-1) ... Selecting previously unselected package python3-wheel. Preparing to unpack .../50-python3-wheel_0.45.1-1_all.deb ... Unpacking python3-wheel (0.45.1-1) ... Selecting previously unselected package python3-build. Preparing to unpack .../51-python3-build_1.2.2-1_all.deb ... Unpacking python3-build (1.2.2-1) ... Selecting previously unselected package python3-installer. Preparing to unpack .../52-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 .../53-pybuild-plugin-pyproject_6.20250108_all.deb ... Unpacking pybuild-plugin-pyproject (6.20250108) ... Selecting previously unselected package python3-soupsieve. Preparing to unpack .../54-python3-soupsieve_2.6-1_all.deb ... Unpacking python3-soupsieve (2.6-1) ... Selecting previously unselected package python3-bs4. Preparing to unpack .../55-python3-bs4_4.12.3-3_all.deb ... Unpacking python3-bs4 (4.12.3-3) ... Selecting previously unselected package python3-dateutil. Preparing to unpack .../56-python3-dateutil_2.9.0-3_all.deb ... Unpacking python3-dateutil (2.9.0-3) ... Selecting previously unselected package python3-hjson. Preparing to unpack .../57-python3-hjson_3.1.0-3_all.deb ... Unpacking python3-hjson (3.1.0-3) ... Selecting previously unselected package python3-iniconfig. Preparing to unpack .../58-python3-iniconfig_1.1.1-2_all.deb ... Unpacking python3-iniconfig (1.1.1-2) ... Selecting previously unselected package python3-markdown. Preparing to unpack .../59-python3-markdown_3.7-2_all.deb ... Unpacking python3-markdown (3.7-2) ... Selecting previously unselected package python3-mdurl. Preparing to unpack .../60-python3-mdurl_0.1.2-1_all.deb ... Unpacking python3-mdurl (0.1.2-1) ... Selecting previously unselected package python3-markdown-it. Preparing to unpack .../61-python3-markdown-it_3.0.0-2_all.deb ... Unpacking python3-markdown-it (3.0.0-2) ... Selecting previously unselected package python3-numpy. Preparing to unpack .../62-python3-numpy_1%3a1.26.4+ds-13_i386.deb ... Unpacking python3-numpy (1:1.26.4+ds-13) ... Selecting previously unselected package python3-tz. Preparing to unpack .../63-python3-tz_2024.2-1_all.deb ... Unpacking python3-tz (2024.2-1) ... Selecting previously unselected package python3-pandas-lib:i386. Preparing to unpack .../64-python3-pandas-lib_2.2.3+dfsg-5+b1_i386.deb ... Unpacking python3-pandas-lib:i386 (2.2.3+dfsg-5+b1) ... Selecting previously unselected package python3-pandas. Preparing to unpack .../65-python3-pandas_2.2.3+dfsg-5_all.deb ... Unpacking python3-pandas (2.2.3+dfsg-5) ... Selecting previously unselected package python3-pluggy. Preparing to unpack .../66-python3-pluggy_1.5.0-1_all.deb ... Unpacking python3-pluggy (1.5.0-1) ... Selecting previously unselected package python3-pygments. Preparing to unpack .../67-python3-pygments_2.18.0+dfsg-2_all.deb ... Unpacking python3-pygments (2.18.0+dfsg-2) ... Selecting previously unselected package python3-pytest. Preparing to unpack .../68-python3-pytest_8.3.4-1_all.deb ... Unpacking python3-pytest (8.3.4-1) ... Selecting previously unselected package python3-rich. Preparing to unpack .../69-python3-rich_13.9.4-1_all.deb ... Unpacking python3-rich (13.9.4-1) ... Selecting previously unselected package python3-setuptools-scm. Preparing to unpack .../70-python3-setuptools-scm_8.1.0-1_all.deb ... Unpacking python3-setuptools-scm (8.1.0-1) ... Selecting previously unselected package python3-super-collections. Preparing to unpack .../71-python3-super-collections_0.5.3-2_all.deb ... Unpacking python3-super-collections (0.5.3-2) ... Selecting previously unselected package python3-yaml. Preparing to unpack .../72-python3-yaml_6.0.2-1+b1_i386.deb ... Unpacking python3-yaml (6.0.2-1+b1) ... Setting up media-types (10.1.0) ... Setting up libpipeline1:i386 (1.5.8-1) ... Setting up libicu72:i386 (72.1-6) ... Setting up bsdextrautils (2.40.4-1) ... Setting up libmagic-mgc (1:5.45-3+b1) ... Setting up libarchive-zip-perl (1.68-1) ... Setting up libyaml-0-2:i386 (0.2.5-2) ... Setting up libdebhelper-perl (13.24.1) ... Setting up libmagic1t64:i386 (1:5.45-3+b1) ... Setting up gettext-base (0.23.1-1) ... Setting up m4 (1.4.19-5) ... Setting up file (1:5.45-3+b1) ... Setting up libelf1t64:i386 (0.192-4) ... Setting up tzdata (2025a-1) ... Current default time zone: 'Etc/UTC' Local time is now: Wed Jan 22 16:38:12 UTC 2025. Universal Time is now: Wed Jan 22 16:38:12 UTC 2025. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up autotools-dev (20220109.1) ... Setting up libblas3:i386 (3.12.0-4) ... update-alternatives: using /usr/lib/i386-linux-gnu/blas/libblas.so.3 to provide /usr/lib/i386-linux-gnu/libblas.so.3 (libblas.so.3-i386-linux-gnu) in auto mode Setting up libunistring5:i386 (1.3-1) ... Setting up autopoint (0.23.1-1) ... Setting up libgfortran5:i386 (14.2.0-14) ... Setting up autoconf (2.72-3) ... Setting up libffi8:i386 (3.4.6-1) ... Setting up dwz (0.15-1+b1) ... Setting up sensible-utils (0.0.24) ... Setting up libuchardet0:i386 (0.0.8-1+b2) ... Setting up netbase (6.4) ... Setting up readline-common (8.2-6) ... Setting up libxml2:i386 (2.12.7+dfsg+really2.9.14-0.2+b1) ... Setting up automake (1:1.16.5-1.3) ... update-alternatives: using /usr/bin/automake-1.16 to provide /usr/bin/automake (automake) in auto mode Setting up libfile-stripnondeterminism-perl (1.14.1-1) ... Setting up liblapack3:i386 (3.12.0-4) ... update-alternatives: using /usr/lib/i386-linux-gnu/lapack/liblapack.so.3 to provide /usr/lib/i386-linux-gnu/liblapack.so.3 (liblapack.so.3-i386-linux-gnu) in auto mode Setting up gettext (0.23.1-1) ... Setting up libtool (2.5.4-2) ... Setting up intltool-debian (0.35.0+20060710.6) ... Setting up dh-autoreconf (20) ... Setting up libreadline8t64:i386 (8.2-6) ... Setting up dh-strip-nondeterminism (1.14.1-1) ... Setting up groff-base (1.23.0-7) ... Setting up libpython3.13-stdlib:i386 (3.13.1-3) ... Setting up libpython3-stdlib:i386 (3.13.1-2) ... Setting up python3.13 (3.13.1-3) ... Setting up po-debconf (1.0.21+nmu1) ... Setting up python3 (3.13.1-2) ... Setting up python3-zipp (3.21.0-1) ... Setting up python3-autocommand (2.2.2-3) ... Setting up man-db (2.13.0-1) ... Not building database; man-db/auto-update is not 'true'. Setting up python3-hjson (3.1.0-3) ... Setting up python3-wheel (0.45.1-1) ... Setting up python3-tz (2024.2-1) ... Setting up python3-pygments (2.18.0+dfsg-2) ... Setting up python3-packaging (24.2-1) ... Setting up python3-pyproject-hooks (1.2.0-1) ... Setting up python3-mdurl (0.1.2-1) ... Setting up python3-markdown (3.7-2) ... Setting up python3-typing-extensions (4.12.2-2) ... Setting up python3-numpy (1:1.26.4+ds-13) ... Setting up python3-toml (0.10.2-1) ... Setting up python3-installer (0.7.0+dfsg1-3) ... Setting up python3-pluggy (1.5.0-1) ... Setting up python3-markdown-it (3.0.0-2) ... Setting up python3-dateutil (2.9.0-3) ... Setting up python3-build (1.2.2-1) ... Setting up python3-soupsieve (2.6-1) ... Setting up python3-more-itertools (10.6.0-1) ... Setting up python3-iniconfig (1.1.1-2) ... Setting up python3-jaraco.functools (4.1.0-1) ... Setting up python3-jaraco.context (6.0.0-1) ... Setting up python3-rich (13.9.4-1) ... Setting up python3-pytest (8.3.4-1) ... Setting up python3-pandas-lib:i386 (2.2.3+dfsg-5+b1) ... Setting up python3-typeguard (4.4.1-1) ... Setting up python3-yaml (6.0.2-1+b1) ... Setting up debhelper (13.24.1) ... Setting up python3-super-collections (0.5.3-2) ... Setting up python3-bs4 (4.12.3-3) ... Setting up python3-inflect (7.3.1-2) ... Setting up python3-pandas (2.2.3+dfsg-5) ... Setting up python3-jaraco.text (4.0.0-1) ... Setting up python3-pkg-resources (75.6.0-1) ... Setting up python3-setuptools (75.6.0-1) ... Setting up python3-setuptools-scm (8.1.0-1) ... Setting up dh-python (6.20250108) ... Setting up pybuild-plugin-pyproject (6.20250108) ... Processing triggers for libc-bin (2.40-5) ... 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/mkdocs-test-0.5.3/ && 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 > ../mkdocs-test_0.5.3-5_source.changes dpkg-buildpackage: info: source package mkdocs-test dpkg-buildpackage: info: source version 0.5.3-5 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by Boyuan Yang dpkg-source --before-build . dpkg-buildpackage: info: host architecture i386 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/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test * Building wheel... running bdist_wheel running build running build_py creating build/lib/mkdocs_test copying mkdocs_test/common.py -> build/lib/mkdocs_test copying mkdocs_test/plugin.py -> build/lib/mkdocs_test copying mkdocs_test/__init__.py -> build/lib/mkdocs_test running egg_info creating mkdocs_test.egg-info writing mkdocs_test.egg-info/PKG-INFO writing dependency_links to mkdocs_test.egg-info/dependency_links.txt writing entry points to mkdocs_test.egg-info/entry_points.txt writing requirements to mkdocs_test.egg-info/requires.txt writing top-level names to mkdocs_test.egg-info/top_level.txt writing manifest file 'mkdocs_test.egg-info/SOURCES.txt' reading manifest file 'mkdocs_test.egg-info/SOURCES.txt' adding license file 'LICENSE' writing manifest file 'mkdocs_test.egg-info/SOURCES.txt' installing to build/bdist.linux-i686/wheel running install running install_lib creating build/bdist.linux-i686/wheel creating build/bdist.linux-i686/wheel/mkdocs_test copying build/lib/mkdocs_test/common.py -> build/bdist.linux-i686/wheel/./mkdocs_test copying build/lib/mkdocs_test/plugin.py -> build/bdist.linux-i686/wheel/./mkdocs_test copying build/lib/mkdocs_test/__init__.py -> build/bdist.linux-i686/wheel/./mkdocs_test running install_egg_info Copying mkdocs_test.egg-info to build/bdist.linux-i686/wheel/./mkdocs_test-0.5.3.egg-info running install_scripts creating build/bdist.linux-i686/wheel/mkdocs_test-0.5.3.dist-info/WHEEL creating '/build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/.tmp-2od6nd6p/mkdocs_test-0.5.3-py3-none-any.whl' and adding 'build/bdist.linux-i686/wheel' to it adding 'mkdocs_test/__init__.py' adding 'mkdocs_test/common.py' adding 'mkdocs_test/plugin.py' adding 'mkdocs_test-0.5.3.dist-info/LICENSE' adding 'mkdocs_test-0.5.3.dist-info/METADATA' adding 'mkdocs_test-0.5.3.dist-info/WHEEL' adding 'mkdocs_test-0.5.3.dist-info/entry_points.txt' adding 'mkdocs_test-0.5.3.dist-info/top_level.txt' adding 'mkdocs_test-0.5.3.dist-info/RECORD' removing build/bdist.linux-i686/wheel Successfully built mkdocs_test-0.5.3-py3-none-any.whl I: pybuild plugin_pyproject:144: Unpacking wheel built for python3.13 with "installer" module debian/rules override_dh_auto_test make[1]: Entering directory '/build/reproducible-path/mkdocs-test-0.5.3' dh_auto_test I: pybuild base:311: cd /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build; python3.13 -m pytest test ============================= test session starts ============================== platform linux -- Python 3.13.1, pytest-8.3.4, pluggy-1.5.0 rootdir: /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build configfile: pyproject.toml plugins: typeguard-4.4.1 collected 8 items test/advanced/test_advanced.py FF [ 25%] test/alter_markdown/test_site.py F [ 37%] test/simple/test_site.py FF [ 62%] test/test_simple.py F.F [100%] =================================== FAILURES =================================== __________________________________ test_pages __________________________________ def test_pages(): project = DocProject() > project.build(strict=False) /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/test/advanced/test_advanced.py:19: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/__init__.py:482: in build self._build_result = run_command(*command) /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/common.py:332: in run_command return subprocess.run(full_command, capture_output=True, text=True) /usr/lib/python3.13/subprocess.py:554: in run with Popen(*popenargs, **kwargs) as process: /usr/lib/python3.13/subprocess.py:1036: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['mkdocs', 'build'], executable = b'mkdocs', preexec_fn = None close_fds = True, pass_fds = (), cwd = None, env = None, startupinfo = None creationflags = 0, shell = False, p2cread = -1, p2cwrite = -1, c2pread = 11 c2pwrite = 12, errread = 13, errwrite = 14, restore_signals = True, gid = None gids = None, uid = None, umask = -1, start_new_session = False process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and (not close_fds or _HAVE_POSIX_SPAWN_CLOSEFROM) and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, close_fds, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'mkdocs' /usr/lib/python3.13/subprocess.py:1966: FileNotFoundError ----------------------------- Captured stdout call ----------------------------- BUILD COMMAND: ['mkdocs', 'build'] _________________________________ test_strict __________________________________ def test_strict(): "This project must fail" project = DocProject() # it must not fail with the --strict option, > project.build(strict=True) /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/test/advanced/test_advanced.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/__init__.py:482: in build self._build_result = run_command(*command) /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/common.py:332: in run_command return subprocess.run(full_command, capture_output=True, text=True) /usr/lib/python3.13/subprocess.py:554: in run with Popen(*popenargs, **kwargs) as process: /usr/lib/python3.13/subprocess.py:1036: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['mkdocs', 'build', '--strict'], executable = b'mkdocs' preexec_fn = None, close_fds = True, pass_fds = (), cwd = None, env = None startupinfo = None, creationflags = 0, shell = False, p2cread = -1 p2cwrite = -1, c2pread = 11, c2pwrite = 12, errread = 13, errwrite = 14 restore_signals = True, gid = None, gids = None, uid = None, umask = -1 start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and (not close_fds or _HAVE_POSIX_SPAWN_CLOSEFROM) and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, close_fds, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'mkdocs' /usr/lib/python3.13/subprocess.py:1966: FileNotFoundError ----------------------------- Captured stdout call ----------------------------- BUILD COMMAND: ['mkdocs', 'build', '--strict'] __________________________________ test_pages __________________________________ def test_pages(): project = DocProject() > project.build(strict=True) /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/test/alter_markdown/test_site.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/__init__.py:482: in build self._build_result = run_command(*command) /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/common.py:332: in run_command return subprocess.run(full_command, capture_output=True, text=True) /usr/lib/python3.13/subprocess.py:554: in run with Popen(*popenargs, **kwargs) as process: /usr/lib/python3.13/subprocess.py:1036: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['mkdocs', 'build', '--strict'], executable = b'mkdocs' preexec_fn = None, close_fds = True, pass_fds = (), cwd = None, env = None startupinfo = None, creationflags = 0, shell = False, p2cread = -1 p2cwrite = -1, c2pread = 11, c2pwrite = 12, errread = 13, errwrite = 14 restore_signals = True, gid = None, gids = None, uid = None, umask = -1 start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and (not close_fds or _HAVE_POSIX_SPAWN_CLOSEFROM) and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, close_fds, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'mkdocs' /usr/lib/python3.13/subprocess.py:1966: FileNotFoundError ----------------------------- Captured stdout call ----------------------------- BUILD COMMAND: ['mkdocs', 'build', '--strict'] __________________________________ test_pages __________________________________ def test_pages(): project = DocProject() > project.build(strict=False) /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/test/simple/test_site.py:19: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/__init__.py:482: in build self._build_result = run_command(*command) /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/common.py:332: in run_command return subprocess.run(full_command, capture_output=True, text=True) /usr/lib/python3.13/subprocess.py:554: in run with Popen(*popenargs, **kwargs) as process: /usr/lib/python3.13/subprocess.py:1036: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['mkdocs', 'build'], executable = b'mkdocs', preexec_fn = None close_fds = True, pass_fds = (), cwd = None, env = None, startupinfo = None creationflags = 0, shell = False, p2cread = -1, p2cwrite = -1, c2pread = 11 c2pwrite = 12, errread = 13, errwrite = 14, restore_signals = True, gid = None gids = None, uid = None, umask = -1, start_new_session = False process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and (not close_fds or _HAVE_POSIX_SPAWN_CLOSEFROM) and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, close_fds, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'mkdocs' /usr/lib/python3.13/subprocess.py:1966: FileNotFoundError ----------------------------- Captured stdout call ----------------------------- BUILD COMMAND: ['mkdocs', 'build'] _________________________________ test_strict __________________________________ def test_strict(): "This project must fail" project = DocProject() # it must not fail with the --strict option, > project.build(strict=True) /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/test/simple/test_site.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/__init__.py:482: in build self._build_result = run_command(*command) /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/common.py:332: in run_command return subprocess.run(full_command, capture_output=True, text=True) /usr/lib/python3.13/subprocess.py:554: in run with Popen(*popenargs, **kwargs) as process: /usr/lib/python3.13/subprocess.py:1036: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['mkdocs', 'build', '--strict'], executable = b'mkdocs' preexec_fn = None, close_fds = True, pass_fds = (), cwd = None, env = None startupinfo = None, creationflags = 0, shell = False, p2cread = -1 p2cwrite = -1, c2pread = 11, c2pwrite = 12, errread = 13, errwrite = 14 restore_signals = True, gid = None, gids = None, uid = None, umask = -1 start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and (not close_fds or _HAVE_POSIX_SPAWN_CLOSEFROM) and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, close_fds, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'mkdocs' /usr/lib/python3.13/subprocess.py:1966: FileNotFoundError ----------------------------- Captured stdout call ----------------------------- BUILD COMMAND: ['mkdocs', 'build', '--strict'] ________________________________ test_functions ________________________________ name = 'lxml.etree', extra = '', errors = 'raise', min_version = None def import_optional_dependency( name: str, extra: str = "", errors: str = "raise", min_version: str | None = None, ): """ Import an optional dependency. By default, if a dependency is missing an ImportError with a nice message will be raised. If a dependency is present, but too old, we raise. Parameters ---------- name : str The module name. extra : str Additional text to include in the ImportError message. errors : str {'raise', 'warn', 'ignore'} What to do when a dependency is not found or its version is too old. * raise : Raise an ImportError * warn : Only applicable when a module's version is to old. Warns that the version is too old and returns None * ignore: If the module is not installed, return None, otherwise, return the module, even if the version is too old. It's expected that users validate the version locally when using ``errors="ignore"`` (see. ``io/html.py``) min_version : str, default None Specify a minimum version that is different from the global pandas minimum version required. Returns ------- maybe_module : Optional[ModuleType] The imported module, when found and the version is correct. None is returned when the package is not found and `errors` is False, or when the package's version is too old and `errors` is ``'warn'`` or ``'ignore'``. """ assert errors in {"warn", "raise", "ignore"} if name=='numba' and warn_numba_platform: warnings.warn(warn_numba_platform) package_name = INSTALL_MAPPING.get(name) install_name = package_name if package_name is not None else name msg = ( f"Missing optional dependency '{install_name}'. {extra} " f"Use pip or conda to install {install_name}." ) try: > module = importlib.import_module(name) /usr/lib/python3/dist-packages/pandas/compat/_optional.py:140: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = 'lxml.etree', package = None def import_module(name, package=None): """Import a module. The 'package' argument is required when performing a relative import. It specifies the package to use as the anchor point from which to resolve the relative import to an absolute import. """ level = 0 if name.startswith('.'): if not package: raise TypeError("the 'package' argument is required to perform a " f"relative import for {name!r}") for character in name: if character != '.': break level += 1 > return _bootstrap._gcd_import(name[level:], package, level) E ModuleNotFoundError: No module named 'lxml' /usr/lib/python3.13/importlib/__init__.py:88: ModuleNotFoundError During handling of the above exception, another exception occurred: def test_functions(): "Test the low level fixtures" h1("Unit tests") # Print the list of directories h2("Directories containing mkdocs.yml") for directory in PROJECTS: print(directory) print(PROJECTS) print() # Example usage h2("Parse tables") SOURCE_DOCUMENT = """ # Header 1 Some text. ## Table 1 | Column 1 | Column 2 | |----------|----------| | Value 1 | Value 2 | | Value 3 | Value 4 | ## Table 2 | Column A | Column B | |----------|----------| | Value A | Value B | | Value C | Value D | ## Another Section Some more text. | Column X | Column Y | |----------|----------| | Value X1 | Value Y1 | | Value X2 | Value Y2 | """ > dfs = get_tables(SOURCE_DOCUMENT) /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/test/test_simple.py:66: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/common.py:320: in get_tables dataframes = extract_tables_from_html(html, /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/common.py:175: in extract_tables_from_html df = pd.read_html(StringIO(str(table)))[0] /usr/lib/python3/dist-packages/pandas/io/html.py:1240: in read_html return _parse( /usr/lib/python3/dist-packages/pandas/io/html.py:971: in _parse parser = _parser_dispatch(flav) /usr/lib/python3/dist-packages/pandas/io/html.py:918: in _parser_dispatch import_optional_dependency("lxml.etree") _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = 'lxml.etree', extra = '', errors = 'raise', min_version = None def import_optional_dependency( name: str, extra: str = "", errors: str = "raise", min_version: str | None = None, ): """ Import an optional dependency. By default, if a dependency is missing an ImportError with a nice message will be raised. If a dependency is present, but too old, we raise. Parameters ---------- name : str The module name. extra : str Additional text to include in the ImportError message. errors : str {'raise', 'warn', 'ignore'} What to do when a dependency is not found or its version is too old. * raise : Raise an ImportError * warn : Only applicable when a module's version is to old. Warns that the version is too old and returns None * ignore: If the module is not installed, return None, otherwise, return the module, even if the version is too old. It's expected that users validate the version locally when using ``errors="ignore"`` (see. ``io/html.py``) min_version : str, default None Specify a minimum version that is different from the global pandas minimum version required. Returns ------- maybe_module : Optional[ModuleType] The imported module, when found and the version is correct. None is returned when the package is not found and `errors` is False, or when the package's version is too old and `errors` is ``'warn'`` or ``'ignore'``. """ assert errors in {"warn", "raise", "ignore"} if name=='numba' and warn_numba_platform: warnings.warn(warn_numba_platform) package_name = INSTALL_MAPPING.get(name) install_name = package_name if package_name is not None else name msg = ( f"Missing optional dependency '{install_name}'. {extra} " f"Use pip or conda to install {install_name}." ) try: module = importlib.import_module(name) except ImportError: if errors == "raise": > raise ImportError(msg) E ImportError: Missing optional dependency 'lxml'. Use pip or conda to install lxml. /usr/lib/python3/dist-packages/pandas/compat/_optional.py:143: ImportError ----------------------------- Captured stdout call ----------------------------- ╭──────────────────────────────────────────────────────────────────────────────╮ │ Unit tests │ ╰──────────────────────────────────────────────────────────────────────────────╯ Directories containing mkdocs.yml simple alter_markdown advanced ['simple', 'alter_markdown', 'advanced'] Parse tables Found a table _______________________________ test_doc_project _______________________________ def test_doc_project(): """ Test a project """ PROJECT_NAME = 'simple' # MYPROJECT = 'simple' h1(f"TESTING MKDOCS PROJECT ({PROJECT_NAME})") h2("Config") myproject = DocProject(PROJECT_NAME) config = myproject.config print(config) h2("Build") > result = myproject.build() /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/test/test_simple.py:165: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/__init__.py:482: in build self._build_result = run_command(*command) /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/common.py:332: in run_command return subprocess.run(full_command, capture_output=True, text=True) /usr/lib/python3.13/subprocess.py:554: in run with Popen(*popenargs, **kwargs) as process: /usr/lib/python3.13/subprocess.py:1036: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['mkdocs', 'build'], executable = b'mkdocs', preexec_fn = None close_fds = True, pass_fds = (), cwd = None, env = None, startupinfo = None creationflags = 0, shell = False, p2cread = -1, p2cwrite = -1, c2pread = 11 c2pwrite = 12, errread = 13, errwrite = 14, restore_signals = True, gid = None gids = None, uid = None, umask = -1, start_new_session = False process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and (not close_fds or _HAVE_POSIX_SPAWN_CLOSEFROM) and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, close_fds, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'mkdocs' /usr/lib/python3.13/subprocess.py:1966: FileNotFoundError ----------------------------- Captured stdout call ----------------------------- ╭──────────────────────────────────────────────────────────────────────────────╮ │ TESTING MKDOCS PROJECT (simple) │ ╰──────────────────────────────────────────────────────────────────────────────╯ Config { site_name: Simple MkDocs Website theme: mkdocs nav: [ { Home: index.md } { "Next page": second.md } ] plugins: [ search test ] } Build BUILD COMMAND: ['mkdocs', 'build'] =========================== short test summary info ============================ FAILED test/advanced/test_advanced.py::test_pages - FileNotFoundError: [Errno... FAILED test/advanced/test_advanced.py::test_strict - FileNotFoundError: [Errn... FAILED test/alter_markdown/test_site.py::test_pages - FileNotFoundError: [Err... FAILED test/simple/test_site.py::test_pages - FileNotFoundError: [Errno 2] No... FAILED test/simple/test_site.py::test_strict - FileNotFoundError: [Errno 2] N... FAILED test/test_simple.py::test_functions - ImportError: Missing optional de... FAILED test/test_simple.py::test_doc_project - FileNotFoundError: [Errno 2] N... ========================= 7 failed, 1 passed in 5.00s ========================== E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build; python3.13 -m pytest test dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.13 returned exit code 13 make[1]: [debian/rules:10: override_dh_auto_test] Error 25 (ignored) make[1]: Leaving directory '/build/reproducible-path/mkdocs-test-0.5.3' create-stamp debian/debhelper-build-stamp dh_testroot -O--buildsystem=pybuild dh_prep -O--buildsystem=pybuild dh_auto_install --destdir=debian/python3-mkdocs-test/ -O--buildsystem=pybuild I: pybuild plugin_pyproject:178: Copying package built for python3.13 to destdir dh_installdocs -O--buildsystem=pybuild dh_installchangelogs -O--buildsystem=pybuild dh_python3 -O--buildsystem=pybuild dh_installsystemduser -O--buildsystem=pybuild dh_perl -O--buildsystem=pybuild dh_link -O--buildsystem=pybuild dh_strip_nondeterminism -O--buildsystem=pybuild dh_compress -O--buildsystem=pybuild dh_fixperms -O--buildsystem=pybuild dh_missing -O--buildsystem=pybuild dh_installdeb -O--buildsystem=pybuild dh_gencontrol -O--buildsystem=pybuild dpkg-gencontrol: warning: Recommends field of package python3-mkdocs-test: substitution variable ${python3:Recommends} used, but is not defined dh_md5sums -O--buildsystem=pybuild dh_builddeb -O--buildsystem=pybuild dpkg-deb: building package 'python3-mkdocs-test' in '../python3-mkdocs-test_0.5.3-5_all.deb'. dpkg-genbuildinfo --build=binary -O../mkdocs-test_0.5.3-5_i386.buildinfo dpkg-genchanges --build=binary -O../mkdocs-test_0.5.3-5_i386.changes dpkg-genchanges: info: binary-only upload (no source code included) dpkg-source --after-build . dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: not including original source code in upload I: copying local configuration I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env I: removing directory /srv/workspace/pbuilder/62908 and its subdirectories I: Current time: Wed Jan 22 04:39:08 -12 2025 I: pbuilder-time-stamp: 1737563948 Wed Jan 22 16:39:10 UTC 2025 I: 1st build successful. Starting 2nd build on remote node ionos16-i386.debian.net. Wed Jan 22 16:39:10 UTC 2025 I: Preparing to do remote build '2' on ionos16-i386.debian.net. Wed Jan 22 16:39:10 UTC 2025 - checking /var/lib/jenkins/offline_nodes if ionos16-i386.debian.net is marked as down. Wed Jan 22 16:39:10 UTC 2025 - checking via ssh if ionos16-i386.debian.net is up. removed '/tmp/read-only-fs-test-zyL8JA' ==================================================================================== Tue Feb 24 23:02:11 UTC 2026 - running /srv/jenkins/bin/reproducible_build.sh (for job /srv/jenkins/bin/reproducible_build.sh) on ionos16-i386, called using "2 mkdocs-test unstable /srv/reproducible-results/rbuild-debian/r-b-build.M58Pdxnz 0.5.3-5" as arguments. Tue Feb 24 23:02:11 UTC 2026 - actually running "reproducible_build.sh" (md5sum 68e686e434c9ab7bc3ec047d8b309cbc) as "/tmp/jenkins-script-WY50O2rN" $ git clone https://salsa.debian.org/qa/jenkins.debian.net.git ; more CONTRIBUTING Tue Feb 24 23:02:11 UTC 2026 I: Downloading source for unstable/mkdocs-test=0.5.3-5 Reading package lists... NOTICE: 'mkdocs-test' packaging is maintained in the 'Git' version control system at: https://salsa.debian.org/python-team/packages/mkdocs-test.git Please use: git clone https://salsa.debian.org/python-team/packages/mkdocs-test.git to retrieve the latest (possibly unreleased) updates to the package. Need to get 34.8 kB of source archives. Get:1 http://deb.debian.org/debian unstable/main mkdocs-test 0.5.3-5 (dsc) [2763 B] Get:2 http://deb.debian.org/debian unstable/main mkdocs-test 0.5.3-5 (tar) [29.7 kB] Get:3 http://deb.debian.org/debian unstable/main mkdocs-test 0.5.3-5 (diff) [2364 B] Fetched 34.8 kB in 0s (763 kB/s) Download complete and in download only mode Reading package lists... NOTICE: 'mkdocs-test' packaging is maintained in the 'Git' version control system at: https://salsa.debian.org/python-team/packages/mkdocs-test.git Please use: git clone https://salsa.debian.org/python-team/packages/mkdocs-test.git to retrieve the latest (possibly unreleased) updates to the package. Need to get 34.8 kB of source archives. Get:1 http://deb.debian.org/debian unstable/main mkdocs-test 0.5.3-5 (dsc) [2763 B] Get:2 http://deb.debian.org/debian unstable/main mkdocs-test 0.5.3-5 (tar) [29.7 kB] Get:3 http://deb.debian.org/debian unstable/main mkdocs-test 0.5.3-5 (diff) [2364 B] Fetched 34.8 kB in 0s (763 kB/s) Download complete and in download only mode ============================================================================= Re-Building mkdocs-test in unstable on i386 on ionos16-i386 now. Date: Wed Feb 25 00:02:12 CET 2026 Date UTC: Tue Feb 24 23:02:12 UTC 2026 ============================================================================= ++ mktemp -t pbuilderrc_XXXX --tmpdir=/srv/reproducible-results/rbuild-debian/r-b-build.M58Pdxnz + local TMPCFG=/srv/reproducible-results/rbuild-debian/r-b-build.M58Pdxnz/pbuilderrc_iBgR + case ${ARCH} in + let NUM_CPU-=3 + case $ARCH in + locale=de_CH + language=de + case "${SUITE}" in + reproducible_buildflags=+all + extra_deb_build_options= + case "${SRCPACKAGE}" in + cat + echo BUILDDIR=/build/reproducible-path + '[' mkdocs-test = debian-installer -o mkdocs-test = debian-installer-netboot-images ']' + pbuilder_options=() + local pbuilder_options + DEBBUILDOPTS=-b + BINARYTARGET= + '[' mkdocs-test = u-boot ']' + case "${SRCPACKAGE}" in + PBUILDERTIMEOUT=24 + local PRESULT=0 + sudo timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.M58Pdxnz/pbuilderrc_iBgR --distribution unstable --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.M58Pdxnz/b2 --logfile b2/build.log mkdocs-test_0.5.3-5.dsc W: /root/.pbuilderrc does not exist I: Logging to b2/build.log I: pbuilder: network access will be disabled during build I: Current time: Wed Feb 25 13:02:12 +14 2026 I: pbuilder-time-stamp: 1771974132 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: using eatmydata during job I: Copying source file I: copying [mkdocs-test_0.5.3-5.dsc] I: copying [./mkdocs-test_0.5.3.orig.tar.gz] I: copying [./mkdocs-test_0.5.3-5.debian.tar.xz] I: Extracting source dpkg-source: warning: cannot verify inline signature for ./mkdocs-test_0.5.3-5.dsc: unsupported subcommand dpkg-source: info: extracting mkdocs-test in mkdocs-test-0.5.3 dpkg-source: info: unpacking mkdocs-test_0.5.3.orig.tar.gz dpkg-source: info: unpacking mkdocs-test_0.5.3-5.debian.tar.xz I: Not using root during the build. I: Installing the build-deps I: user script /srv/workspace/pbuilder/91953/tmp/hooks/D01_modify_environment starting debug: Running on ionos16-i386. I: Changing host+domainname to test build reproducibility I: Adding a custom variable just for the fun of it... I: Changing /bin/sh to bash '/bin/sh' -> '/bin/bash' lrwxrwxrwx 1 root root 9 Feb 24 23:02 /bin/sh -> /bin/bash I: Setting pbuilder2's login shell to /bin/bash I: Setting pbuilder2's GECOS to second user,second room,second work-phone,second home-phone,second other I: user script /srv/workspace/pbuilder/91953/tmp/hooks/D01_modify_environment finished I: user script /srv/workspace/pbuilder/91953/tmp/hooks/D02_print_environment starting I: set BASH=/bin/sh BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath BASH_ALIASES=() BASH_ARGC=() BASH_ARGV=() BASH_CMDS=() BASH_LINENO=([0]="12" [1]="0") BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:. BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") BASH_VERSINFO=([0]="5" [1]="2" [2]="37" [3]="1" [4]="release" [5]="i686-pc-linux-gnu") BASH_VERSION='5.2.37(1)-release' BUILDDIR=/build/reproducible-path BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' BUILDUSERNAME=pbuilder2 BUILD_ARCH=i386 DEBIAN_FRONTEND=noninteractive DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=21 ' DIRSTACK=() DISTRIBUTION=unstable EUID=0 FUNCNAME=([0]="Echo" [1]="main") GROUPS=() HOME=/root HOSTNAME=i-capture-the-hostname HOSTTYPE=i686 HOST_ARCH=i386 IFS=' ' INVOCATION_ID=59e4d3d17c4a4843b5a2901d8b1e377d LANG=C LANGUAGE=de_CH:de LC_ALL=C LD_LIBRARY_PATH=/usr/lib/libeatmydata LD_PRELOAD=libeatmydata.so MACHTYPE=i686-pc-linux-gnu MAIL=/var/mail/root OPTERR=1 OPTIND=1 OSTYPE=linux-gnu PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path PBCURRENTCOMMANDLINEOPERATION=build PBUILDER_OPERATION=build PBUILDER_PKGDATADIR=/usr/share/pbuilder PBUILDER_PKGLIBDIR=/usr/lib/pbuilder PBUILDER_SYSCONFDIR=/etc PIPESTATUS=([0]="0") POSIXLY_CORRECT=y PPID=91953 PS4='+ ' PWD=/ SHELL=/bin/bash SHELLOPTS=braceexpand:errexit:hashall:interactive-comments:posix SHLVL=3 SUDO_COMMAND='/usr/bin/timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.M58Pdxnz/pbuilderrc_iBgR --distribution unstable --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.M58Pdxnz/b2 --logfile b2/build.log mkdocs-test_0.5.3-5.dsc' SUDO_GID=112 SUDO_UID=107 SUDO_USER=jenkins TERM=unknown TZ=/usr/share/zoneinfo/Etc/GMT-14 UID=0 USER=root _='I: set' http_proxy=http://213.165.73.152:3128 I: uname -a Linux i-capture-the-hostname 6.1.0-30-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.124-1 (2025-01-12) x86_64 GNU/Linux I: ls -l /bin lrwxrwxrwx 1 root root 7 Nov 22 2024 /bin -> usr/bin I: user script /srv/workspace/pbuilder/91953/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: i386 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, python3-bs4, python3-markdown, python3-pandas, python3-pytest, python3-rich, python3-setuptools, python3-setuptools-scm, python3-super-collections, python3-yaml dpkg-deb: building package 'pbuilder-satisfydepends-dummy' in '/tmp/satisfydepends-aptitude/pbuilder-satisfydepends-dummy.deb'. Selecting previously unselected package pbuilder-satisfydepends-dummy. (Reading database ... 19836 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; however: Package python3 is not installed. pbuilder-satisfydepends-dummy depends on python3-bs4; however: Package python3-bs4 is not installed. pbuilder-satisfydepends-dummy depends on python3-markdown; however: Package python3-markdown is not installed. pbuilder-satisfydepends-dummy depends on python3-pandas; however: Package python3-pandas is not installed. pbuilder-satisfydepends-dummy depends on python3-pytest; however: Package python3-pytest is not installed. pbuilder-satisfydepends-dummy depends on python3-rich; however: Package python3-rich is not installed. pbuilder-satisfydepends-dummy depends on python3-setuptools; however: Package python3-setuptools is not installed. pbuilder-satisfydepends-dummy depends on python3-setuptools-scm; however: Package python3-setuptools-scm is not installed. pbuilder-satisfydepends-dummy depends on python3-super-collections; however: Package python3-super-collections is not installed. pbuilder-satisfydepends-dummy depends on python3-yaml; however: Package python3-yaml 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} libblas3{a} libdebhelper-perl{a} libelf1t64{a} libexpat1{a} libffi8{a} libfile-stripnondeterminism-perl{a} libgfortran5{a} libicu72{a} liblapack3{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} libyaml-0-2{a} m4{a} man-db{a} media-types{a} netbase{a} po-debconf{a} pybuild-plugin-pyproject{a} python3{a} python3-autocommand{a} python3-bs4{a} python3-build{a} python3-dateutil{a} python3-hjson{a} python3-inflect{a} python3-iniconfig{a} python3-installer{a} python3-jaraco.context{a} python3-jaraco.functools{a} python3-jaraco.text{a} python3-markdown{a} python3-markdown-it{a} python3-mdurl{a} python3-minimal{a} python3-more-itertools{a} python3-numpy{a} python3-packaging{a} python3-pandas{a} python3-pandas-lib{a} python3-pkg-resources{a} python3-pluggy{a} python3-pygments{a} python3-pyproject-hooks{a} python3-pytest{a} python3-rich{a} python3-setuptools{a} python3-setuptools-scm{a} python3-soupsieve{a} python3-super-collections{a} python3-toml{a} python3-typeguard{a} python3-typing-extensions{a} python3-tz{a} python3-wheel{a} python3-yaml{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 libltdl-dev libmail-sendmail-perl lynx python3-bottleneck python3-chardet python3-charset-normalizer python3-html5lib python3-jinja2 python3-lxml python3-matplotlib python3-numexpr python3-odf python3-openpyxl python3-scipy python3-tables wget 0 packages upgraded, 86 newly installed, 0 to remove and 0 not upgraded. Need to get 48.7 MB of archives. After unpacking 242 MB will be used. Writing extended state information... Get: 1 http://deb.debian.org/debian unstable/main i386 libpython3.13-minimal i386 3.13.1-3 [858 kB] Get: 2 http://deb.debian.org/debian unstable/main i386 libexpat1 i386 2.6.4-1 [107 kB] Get: 3 http://deb.debian.org/debian unstable/main i386 python3.13-minimal i386 3.13.1-3 [2264 kB] Get: 4 http://deb.debian.org/debian unstable/main i386 python3-minimal i386 3.13.1-2 [27.0 kB] Get: 5 http://deb.debian.org/debian unstable/main i386 media-types all 10.1.0 [26.9 kB] Get: 6 http://deb.debian.org/debian unstable/main i386 netbase all 6.4 [12.8 kB] Get: 7 http://deb.debian.org/debian unstable/main i386 tzdata all 2025a-1 [259 kB] Get: 8 http://deb.debian.org/debian unstable/main i386 libffi8 i386 3.4.6-1 [21.2 kB] Get: 9 http://deb.debian.org/debian unstable/main i386 readline-common all 8.2-6 [69.4 kB] Get: 10 http://deb.debian.org/debian unstable/main i386 libreadline8t64 i386 8.2-6 [173 kB] Get: 11 http://deb.debian.org/debian unstable/main i386 libpython3.13-stdlib i386 3.13.1-3 [1980 kB] Get: 12 http://deb.debian.org/debian unstable/main i386 python3.13 i386 3.13.1-3 [740 kB] Get: 13 http://deb.debian.org/debian unstable/main i386 libpython3-stdlib i386 3.13.1-2 [9952 B] Get: 14 http://deb.debian.org/debian unstable/main i386 python3 i386 3.13.1-2 [28.0 kB] Get: 15 http://deb.debian.org/debian unstable/main i386 sensible-utils all 0.0.24 [24.8 kB] Get: 16 http://deb.debian.org/debian unstable/main i386 libmagic-mgc i386 1:5.45-3+b1 [314 kB] Get: 17 http://deb.debian.org/debian unstable/main i386 libmagic1t64 i386 1:5.45-3+b1 [115 kB] Get: 18 http://deb.debian.org/debian unstable/main i386 file i386 1:5.45-3+b1 [43.2 kB] Get: 19 http://deb.debian.org/debian unstable/main i386 gettext-base i386 0.23.1-1 [245 kB] Get: 20 http://deb.debian.org/debian unstable/main i386 libuchardet0 i386 0.0.8-1+b2 [69.2 kB] Get: 21 http://deb.debian.org/debian unstable/main i386 groff-base i386 1.23.0-7 [1199 kB] Get: 22 http://deb.debian.org/debian unstable/main i386 bsdextrautils i386 2.40.4-1 [96.1 kB] Get: 23 http://deb.debian.org/debian unstable/main i386 libpipeline1 i386 1.5.8-1 [41.2 kB] Get: 24 http://deb.debian.org/debian unstable/main i386 man-db i386 2.13.0-1 [1428 kB] Get: 25 http://deb.debian.org/debian unstable/main i386 m4 i386 1.4.19-5 [301 kB] Get: 26 http://deb.debian.org/debian unstable/main i386 autoconf all 2.72-3 [493 kB] Get: 27 http://deb.debian.org/debian unstable/main i386 autotools-dev all 20220109.1 [51.6 kB] Get: 28 http://deb.debian.org/debian unstable/main i386 automake all 1:1.16.5-1.3 [823 kB] Get: 29 http://deb.debian.org/debian unstable/main i386 autopoint all 0.23.1-1 [770 kB] Get: 30 http://deb.debian.org/debian unstable/main i386 libdebhelper-perl all 13.24.1 [90.9 kB] Get: 31 http://deb.debian.org/debian unstable/main i386 libtool all 2.5.4-2 [539 kB] Get: 32 http://deb.debian.org/debian unstable/main i386 dh-autoreconf all 20 [17.1 kB] Get: 33 http://deb.debian.org/debian unstable/main i386 libarchive-zip-perl all 1.68-1 [104 kB] Get: 34 http://deb.debian.org/debian unstable/main i386 libfile-stripnondeterminism-perl all 1.14.1-1 [19.6 kB] Get: 35 http://deb.debian.org/debian unstable/main i386 dh-strip-nondeterminism all 1.14.1-1 [8584 B] Get: 36 http://deb.debian.org/debian unstable/main i386 libelf1t64 i386 0.192-4 [195 kB] Get: 37 http://deb.debian.org/debian unstable/main i386 dwz i386 0.15-1+b1 [116 kB] Get: 38 http://deb.debian.org/debian unstable/main i386 libunistring5 i386 1.3-1 [458 kB] Get: 39 http://deb.debian.org/debian unstable/main i386 libicu72 i386 72.1-6 [9582 kB] Get: 40 http://deb.debian.org/debian unstable/main i386 libxml2 i386 2.12.7+dfsg+really2.9.14-0.2+b1 [734 kB] Get: 41 http://deb.debian.org/debian unstable/main i386 gettext i386 0.23.1-1 [1714 kB] Get: 42 http://deb.debian.org/debian unstable/main i386 intltool-debian all 0.35.0+20060710.6 [22.9 kB] Get: 43 http://deb.debian.org/debian unstable/main i386 po-debconf all 1.0.21+nmu1 [248 kB] Get: 44 http://deb.debian.org/debian unstable/main i386 debhelper all 13.24.1 [920 kB] Get: 45 http://deb.debian.org/debian unstable/main i386 python3-autocommand all 2.2.2-3 [13.6 kB] Get: 46 http://deb.debian.org/debian unstable/main i386 python3-more-itertools all 10.6.0-1 [65.3 kB] Get: 47 http://deb.debian.org/debian unstable/main i386 python3-typing-extensions all 4.12.2-2 [73.0 kB] Get: 48 http://deb.debian.org/debian unstable/main i386 python3-typeguard all 4.4.1-1 [37.0 kB] Get: 49 http://deb.debian.org/debian unstable/main i386 python3-inflect all 7.3.1-2 [32.4 kB] Get: 50 http://deb.debian.org/debian unstable/main i386 python3-jaraco.context all 6.0.0-1 [7984 B] Get: 51 http://deb.debian.org/debian unstable/main i386 python3-jaraco.functools all 4.1.0-1 [12.0 kB] Get: 52 http://deb.debian.org/debian unstable/main i386 python3-pkg-resources all 75.6.0-1 [222 kB] Get: 53 http://deb.debian.org/debian unstable/main i386 python3-jaraco.text all 4.0.0-1 [11.4 kB] Get: 54 http://deb.debian.org/debian unstable/main i386 python3-zipp all 3.21.0-1 [10.6 kB] Get: 55 http://deb.debian.org/debian unstable/main i386 python3-setuptools all 75.6.0-1 [720 kB] Get: 56 http://deb.debian.org/debian unstable/main i386 dh-python all 6.20250108 [113 kB] Get: 57 http://deb.debian.org/debian unstable/main i386 libblas3 i386 3.12.0-4 [143 kB] Get: 58 http://deb.debian.org/debian unstable/main i386 libgfortran5 i386 14.2.0-14 [735 kB] Get: 59 http://deb.debian.org/debian unstable/main i386 liblapack3 i386 3.12.0-4 [2194 kB] Get: 60 http://deb.debian.org/debian unstable/main i386 libyaml-0-2 i386 0.2.5-2 [55.8 kB] Get: 61 http://deb.debian.org/debian unstable/main i386 python3-packaging all 24.2-1 [55.3 kB] Get: 62 http://deb.debian.org/debian unstable/main i386 python3-pyproject-hooks all 1.2.0-1 [11.7 kB] Get: 63 http://deb.debian.org/debian unstable/main i386 python3-toml all 0.10.2-1 [16.2 kB] Get: 64 http://deb.debian.org/debian unstable/main i386 python3-wheel all 0.45.1-1 [56.7 kB] Get: 65 http://deb.debian.org/debian unstable/main i386 python3-build all 1.2.2-1 [36.0 kB] Get: 66 http://deb.debian.org/debian unstable/main i386 python3-installer all 0.7.0+dfsg1-3 [18.6 kB] Get: 67 http://deb.debian.org/debian unstable/main i386 pybuild-plugin-pyproject all 6.20250108 [11.6 kB] Get: 68 http://deb.debian.org/debian unstable/main i386 python3-soupsieve all 2.6-1 [38.3 kB] Get: 69 http://deb.debian.org/debian unstable/main i386 python3-bs4 all 4.12.3-3 [133 kB] Get: 70 http://deb.debian.org/debian unstable/main i386 python3-dateutil all 2.9.0-3 [79.3 kB] Get: 71 http://deb.debian.org/debian unstable/main i386 python3-hjson all 3.1.0-3 [33.3 kB] Get: 72 http://deb.debian.org/debian unstable/main i386 python3-iniconfig all 1.1.1-2 [6396 B] Get: 73 http://deb.debian.org/debian unstable/main i386 python3-markdown all 3.7-2 [85.2 kB] Get: 74 http://deb.debian.org/debian unstable/main i386 python3-mdurl all 0.1.2-1 [9444 B] Get: 75 http://deb.debian.org/debian unstable/main i386 python3-markdown-it all 3.0.0-2 [62.5 kB] Get: 76 http://deb.debian.org/debian unstable/main i386 python3-numpy i386 1:1.26.4+ds-13 [4751 kB] Get: 77 http://deb.debian.org/debian unstable/main i386 python3-tz all 2024.2-1 [31.0 kB] Get: 78 http://deb.debian.org/debian unstable/main i386 python3-pandas-lib i386 2.2.3+dfsg-5+b1 [6860 kB] Get: 79 http://deb.debian.org/debian unstable/main i386 python3-pandas all 2.2.3+dfsg-5 [3096 kB] Get: 80 http://deb.debian.org/debian unstable/main i386 python3-pluggy all 1.5.0-1 [26.9 kB] Get: 81 http://deb.debian.org/debian unstable/main i386 python3-pygments all 2.18.0+dfsg-2 [836 kB] Get: 82 http://deb.debian.org/debian unstable/main i386 python3-pytest all 8.3.4-1 [250 kB] Get: 83 http://deb.debian.org/debian unstable/main i386 python3-rich all 13.9.4-1 [203 kB] Get: 84 http://deb.debian.org/debian unstable/main i386 python3-setuptools-scm all 8.1.0-1 [40.5 kB] Get: 85 http://deb.debian.org/debian unstable/main i386 python3-super-collections all 0.5.3-2 [12.2 kB] Get: 86 http://deb.debian.org/debian unstable/main i386 python3-yaml i386 6.0.2-1+b1 [173 kB] Fetched 48.7 MB in 1s (71.9 MB/s) Preconfiguring packages ... Selecting previously unselected package libpython3.13-minimal:i386. (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 ... 19836 files and directories currently installed.) Preparing to unpack .../libpython3.13-minimal_3.13.1-3_i386.deb ... Unpacking libpython3.13-minimal:i386 (3.13.1-3) ... Selecting previously unselected package libexpat1:i386. Preparing to unpack .../libexpat1_2.6.4-1_i386.deb ... Unpacking libexpat1:i386 (2.6.4-1) ... Selecting previously unselected package python3.13-minimal. Preparing to unpack .../python3.13-minimal_3.13.1-3_i386.deb ... Unpacking python3.13-minimal (3.13.1-3) ... Setting up libpython3.13-minimal:i386 (3.13.1-3) ... Setting up libexpat1:i386 (2.6.4-1) ... Setting up python3.13-minimal (3.13.1-3) ... 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 ... 20170 files and directories currently installed.) Preparing to unpack .../0-python3-minimal_3.13.1-2_i386.deb ... Unpacking python3-minimal (3.13.1-2) ... Selecting previously unselected package media-types. Preparing to unpack .../1-media-types_10.1.0_all.deb ... Unpacking media-types (10.1.0) ... Selecting previously unselected package netbase. Preparing to unpack .../2-netbase_6.4_all.deb ... Unpacking netbase (6.4) ... Selecting previously unselected package tzdata. Preparing to unpack .../3-tzdata_2025a-1_all.deb ... Unpacking tzdata (2025a-1) ... Selecting previously unselected package libffi8:i386. Preparing to unpack .../4-libffi8_3.4.6-1_i386.deb ... Unpacking libffi8:i386 (3.4.6-1) ... 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:i386. Preparing to unpack .../6-libreadline8t64_8.2-6_i386.deb ... Adding 'diversion of /lib/i386-linux-gnu/libhistory.so.8 to /lib/i386-linux-gnu/libhistory.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/i386-linux-gnu/libhistory.so.8.2 to /lib/i386-linux-gnu/libhistory.so.8.2.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/i386-linux-gnu/libreadline.so.8 to /lib/i386-linux-gnu/libreadline.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/i386-linux-gnu/libreadline.so.8.2 to /lib/i386-linux-gnu/libreadline.so.8.2.usr-is-merged by libreadline8t64' Unpacking libreadline8t64:i386 (8.2-6) ... Selecting previously unselected package libpython3.13-stdlib:i386. Preparing to unpack .../7-libpython3.13-stdlib_3.13.1-3_i386.deb ... Unpacking libpython3.13-stdlib:i386 (3.13.1-3) ... Selecting previously unselected package python3.13. Preparing to unpack .../8-python3.13_3.13.1-3_i386.deb ... Unpacking python3.13 (3.13.1-3) ... Selecting previously unselected package libpython3-stdlib:i386. Preparing to unpack .../9-libpython3-stdlib_3.13.1-2_i386.deb ... Unpacking libpython3-stdlib:i386 (3.13.1-2) ... Setting up python3-minimal (3.13.1-2) ... 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 ... 21180 files and directories currently installed.) Preparing to unpack .../00-python3_3.13.1-2_i386.deb ... Unpacking python3 (3.13.1-2) ... Selecting previously unselected package sensible-utils. Preparing to unpack .../01-sensible-utils_0.0.24_all.deb ... Unpacking sensible-utils (0.0.24) ... Selecting previously unselected package libmagic-mgc. Preparing to unpack .../02-libmagic-mgc_1%3a5.45-3+b1_i386.deb ... Unpacking libmagic-mgc (1:5.45-3+b1) ... Selecting previously unselected package libmagic1t64:i386. Preparing to unpack .../03-libmagic1t64_1%3a5.45-3+b1_i386.deb ... Unpacking libmagic1t64:i386 (1:5.45-3+b1) ... Selecting previously unselected package file. Preparing to unpack .../04-file_1%3a5.45-3+b1_i386.deb ... Unpacking file (1:5.45-3+b1) ... Selecting previously unselected package gettext-base. Preparing to unpack .../05-gettext-base_0.23.1-1_i386.deb ... Unpacking gettext-base (0.23.1-1) ... Selecting previously unselected package libuchardet0:i386. Preparing to unpack .../06-libuchardet0_0.0.8-1+b2_i386.deb ... Unpacking libuchardet0:i386 (0.0.8-1+b2) ... Selecting previously unselected package groff-base. Preparing to unpack .../07-groff-base_1.23.0-7_i386.deb ... Unpacking groff-base (1.23.0-7) ... Selecting previously unselected package bsdextrautils. Preparing to unpack .../08-bsdextrautils_2.40.4-1_i386.deb ... Unpacking bsdextrautils (2.40.4-1) ... Selecting previously unselected package libpipeline1:i386. Preparing to unpack .../09-libpipeline1_1.5.8-1_i386.deb ... Unpacking libpipeline1:i386 (1.5.8-1) ... Selecting previously unselected package man-db. Preparing to unpack .../10-man-db_2.13.0-1_i386.deb ... Unpacking man-db (2.13.0-1) ... Selecting previously unselected package m4. Preparing to unpack .../11-m4_1.4.19-5_i386.deb ... Unpacking m4 (1.4.19-5) ... Selecting previously unselected package autoconf. Preparing to unpack .../12-autoconf_2.72-3_all.deb ... Unpacking autoconf (2.72-3) ... Selecting previously unselected package autotools-dev. Preparing to unpack .../13-autotools-dev_20220109.1_all.deb ... Unpacking autotools-dev (20220109.1) ... Selecting previously unselected package automake. Preparing to unpack .../14-automake_1%3a1.16.5-1.3_all.deb ... Unpacking automake (1:1.16.5-1.3) ... Selecting previously unselected package autopoint. Preparing to unpack .../15-autopoint_0.23.1-1_all.deb ... Unpacking autopoint (0.23.1-1) ... Selecting previously unselected package libdebhelper-perl. Preparing to unpack .../16-libdebhelper-perl_13.24.1_all.deb ... Unpacking libdebhelper-perl (13.24.1) ... Selecting previously unselected package libtool. Preparing to unpack .../17-libtool_2.5.4-2_all.deb ... Unpacking libtool (2.5.4-2) ... 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-1_all.deb ... Unpacking libfile-stripnondeterminism-perl (1.14.1-1) ... Selecting previously unselected package dh-strip-nondeterminism. Preparing to unpack .../21-dh-strip-nondeterminism_1.14.1-1_all.deb ... Unpacking dh-strip-nondeterminism (1.14.1-1) ... Selecting previously unselected package libelf1t64:i386. Preparing to unpack .../22-libelf1t64_0.192-4_i386.deb ... Unpacking libelf1t64:i386 (0.192-4) ... Selecting previously unselected package dwz. Preparing to unpack .../23-dwz_0.15-1+b1_i386.deb ... Unpacking dwz (0.15-1+b1) ... Selecting previously unselected package libunistring5:i386. Preparing to unpack .../24-libunistring5_1.3-1_i386.deb ... Unpacking libunistring5:i386 (1.3-1) ... Selecting previously unselected package libicu72:i386. Preparing to unpack .../25-libicu72_72.1-6_i386.deb ... Unpacking libicu72:i386 (72.1-6) ... Selecting previously unselected package libxml2:i386. Preparing to unpack .../26-libxml2_2.12.7+dfsg+really2.9.14-0.2+b1_i386.deb ... Unpacking libxml2:i386 (2.12.7+dfsg+really2.9.14-0.2+b1) ... Selecting previously unselected package gettext. Preparing to unpack .../27-gettext_0.23.1-1_i386.deb ... Unpacking gettext (0.23.1-1) ... Selecting previously unselected package intltool-debian. Preparing to unpack .../28-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 .../29-po-debconf_1.0.21+nmu1_all.deb ... Unpacking po-debconf (1.0.21+nmu1) ... Selecting previously unselected package debhelper. Preparing to unpack .../30-debhelper_13.24.1_all.deb ... Unpacking debhelper (13.24.1) ... Selecting previously unselected package python3-autocommand. Preparing to unpack .../31-python3-autocommand_2.2.2-3_all.deb ... Unpacking python3-autocommand (2.2.2-3) ... Selecting previously unselected package python3-more-itertools. Preparing to unpack .../32-python3-more-itertools_10.6.0-1_all.deb ... Unpacking python3-more-itertools (10.6.0-1) ... Selecting previously unselected package python3-typing-extensions. Preparing to unpack .../33-python3-typing-extensions_4.12.2-2_all.deb ... Unpacking python3-typing-extensions (4.12.2-2) ... Selecting previously unselected package python3-typeguard. Preparing to unpack .../34-python3-typeguard_4.4.1-1_all.deb ... Unpacking python3-typeguard (4.4.1-1) ... Selecting previously unselected package python3-inflect. Preparing to unpack .../35-python3-inflect_7.3.1-2_all.deb ... Unpacking python3-inflect (7.3.1-2) ... Selecting previously unselected package python3-jaraco.context. Preparing to unpack .../36-python3-jaraco.context_6.0.0-1_all.deb ... Unpacking python3-jaraco.context (6.0.0-1) ... Selecting previously unselected package python3-jaraco.functools. Preparing to unpack .../37-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 .../38-python3-pkg-resources_75.6.0-1_all.deb ... Unpacking python3-pkg-resources (75.6.0-1) ... Selecting previously unselected package python3-jaraco.text. Preparing to unpack .../39-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 .../40-python3-zipp_3.21.0-1_all.deb ... Unpacking python3-zipp (3.21.0-1) ... Selecting previously unselected package python3-setuptools. Preparing to unpack .../41-python3-setuptools_75.6.0-1_all.deb ... Unpacking python3-setuptools (75.6.0-1) ... Selecting previously unselected package dh-python. Preparing to unpack .../42-dh-python_6.20250108_all.deb ... Unpacking dh-python (6.20250108) ... Selecting previously unselected package libblas3:i386. Preparing to unpack .../43-libblas3_3.12.0-4_i386.deb ... Unpacking libblas3:i386 (3.12.0-4) ... Selecting previously unselected package libgfortran5:i386. Preparing to unpack .../44-libgfortran5_14.2.0-14_i386.deb ... Unpacking libgfortran5:i386 (14.2.0-14) ... Selecting previously unselected package liblapack3:i386. Preparing to unpack .../45-liblapack3_3.12.0-4_i386.deb ... Unpacking liblapack3:i386 (3.12.0-4) ... Selecting previously unselected package libyaml-0-2:i386. Preparing to unpack .../46-libyaml-0-2_0.2.5-2_i386.deb ... Unpacking libyaml-0-2:i386 (0.2.5-2) ... Selecting previously unselected package python3-packaging. Preparing to unpack .../47-python3-packaging_24.2-1_all.deb ... Unpacking python3-packaging (24.2-1) ... Selecting previously unselected package python3-pyproject-hooks. Preparing to unpack .../48-python3-pyproject-hooks_1.2.0-1_all.deb ... Unpacking python3-pyproject-hooks (1.2.0-1) ... Selecting previously unselected package python3-toml. Preparing to unpack .../49-python3-toml_0.10.2-1_all.deb ... Unpacking python3-toml (0.10.2-1) ... Selecting previously unselected package python3-wheel. Preparing to unpack .../50-python3-wheel_0.45.1-1_all.deb ... Unpacking python3-wheel (0.45.1-1) ... Selecting previously unselected package python3-build. Preparing to unpack .../51-python3-build_1.2.2-1_all.deb ... Unpacking python3-build (1.2.2-1) ... Selecting previously unselected package python3-installer. Preparing to unpack .../52-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 .../53-pybuild-plugin-pyproject_6.20250108_all.deb ... Unpacking pybuild-plugin-pyproject (6.20250108) ... Selecting previously unselected package python3-soupsieve. Preparing to unpack .../54-python3-soupsieve_2.6-1_all.deb ... Unpacking python3-soupsieve (2.6-1) ... Selecting previously unselected package python3-bs4. Preparing to unpack .../55-python3-bs4_4.12.3-3_all.deb ... Unpacking python3-bs4 (4.12.3-3) ... Selecting previously unselected package python3-dateutil. Preparing to unpack .../56-python3-dateutil_2.9.0-3_all.deb ... Unpacking python3-dateutil (2.9.0-3) ... Selecting previously unselected package python3-hjson. Preparing to unpack .../57-python3-hjson_3.1.0-3_all.deb ... Unpacking python3-hjson (3.1.0-3) ... Selecting previously unselected package python3-iniconfig. Preparing to unpack .../58-python3-iniconfig_1.1.1-2_all.deb ... Unpacking python3-iniconfig (1.1.1-2) ... Selecting previously unselected package python3-markdown. Preparing to unpack .../59-python3-markdown_3.7-2_all.deb ... Unpacking python3-markdown (3.7-2) ... Selecting previously unselected package python3-mdurl. Preparing to unpack .../60-python3-mdurl_0.1.2-1_all.deb ... Unpacking python3-mdurl (0.1.2-1) ... Selecting previously unselected package python3-markdown-it. Preparing to unpack .../61-python3-markdown-it_3.0.0-2_all.deb ... Unpacking python3-markdown-it (3.0.0-2) ... Selecting previously unselected package python3-numpy. Preparing to unpack .../62-python3-numpy_1%3a1.26.4+ds-13_i386.deb ... Unpacking python3-numpy (1:1.26.4+ds-13) ... Selecting previously unselected package python3-tz. Preparing to unpack .../63-python3-tz_2024.2-1_all.deb ... Unpacking python3-tz (2024.2-1) ... Selecting previously unselected package python3-pandas-lib:i386. Preparing to unpack .../64-python3-pandas-lib_2.2.3+dfsg-5+b1_i386.deb ... Unpacking python3-pandas-lib:i386 (2.2.3+dfsg-5+b1) ... Selecting previously unselected package python3-pandas. Preparing to unpack .../65-python3-pandas_2.2.3+dfsg-5_all.deb ... Unpacking python3-pandas (2.2.3+dfsg-5) ... Selecting previously unselected package python3-pluggy. Preparing to unpack .../66-python3-pluggy_1.5.0-1_all.deb ... Unpacking python3-pluggy (1.5.0-1) ... Selecting previously unselected package python3-pygments. Preparing to unpack .../67-python3-pygments_2.18.0+dfsg-2_all.deb ... Unpacking python3-pygments (2.18.0+dfsg-2) ... Selecting previously unselected package python3-pytest. Preparing to unpack .../68-python3-pytest_8.3.4-1_all.deb ... Unpacking python3-pytest (8.3.4-1) ... Selecting previously unselected package python3-rich. Preparing to unpack .../69-python3-rich_13.9.4-1_all.deb ... Unpacking python3-rich (13.9.4-1) ... Selecting previously unselected package python3-setuptools-scm. Preparing to unpack .../70-python3-setuptools-scm_8.1.0-1_all.deb ... Unpacking python3-setuptools-scm (8.1.0-1) ... Selecting previously unselected package python3-super-collections. Preparing to unpack .../71-python3-super-collections_0.5.3-2_all.deb ... Unpacking python3-super-collections (0.5.3-2) ... Selecting previously unselected package python3-yaml. Preparing to unpack .../72-python3-yaml_6.0.2-1+b1_i386.deb ... Unpacking python3-yaml (6.0.2-1+b1) ... Setting up media-types (10.1.0) ... Setting up libpipeline1:i386 (1.5.8-1) ... Setting up libicu72:i386 (72.1-6) ... Setting up bsdextrautils (2.40.4-1) ... Setting up libmagic-mgc (1:5.45-3+b1) ... Setting up libarchive-zip-perl (1.68-1) ... Setting up libyaml-0-2:i386 (0.2.5-2) ... Setting up libdebhelper-perl (13.24.1) ... Setting up libmagic1t64:i386 (1:5.45-3+b1) ... Setting up gettext-base (0.23.1-1) ... Setting up m4 (1.4.19-5) ... Setting up file (1:5.45-3+b1) ... Setting up libelf1t64:i386 (0.192-4) ... Setting up tzdata (2025a-1) ... Current default time zone: 'Etc/UTC' Local time is now: Tue Feb 24 23:02:42 UTC 2026. Universal Time is now: Tue Feb 24 23:02:42 UTC 2026. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up autotools-dev (20220109.1) ... Setting up libblas3:i386 (3.12.0-4) ... update-alternatives: using /usr/lib/i386-linux-gnu/blas/libblas.so.3 to provide /usr/lib/i386-linux-gnu/libblas.so.3 (libblas.so.3-i386-linux-gnu) in auto mode Setting up libunistring5:i386 (1.3-1) ... Setting up autopoint (0.23.1-1) ... Setting up libgfortran5:i386 (14.2.0-14) ... Setting up autoconf (2.72-3) ... Setting up libffi8:i386 (3.4.6-1) ... Setting up dwz (0.15-1+b1) ... Setting up sensible-utils (0.0.24) ... Setting up libuchardet0:i386 (0.0.8-1+b2) ... Setting up netbase (6.4) ... Setting up readline-common (8.2-6) ... Setting up libxml2:i386 (2.12.7+dfsg+really2.9.14-0.2+b1) ... Setting up automake (1:1.16.5-1.3) ... update-alternatives: using /usr/bin/automake-1.16 to provide /usr/bin/automake (automake) in auto mode Setting up libfile-stripnondeterminism-perl (1.14.1-1) ... Setting up liblapack3:i386 (3.12.0-4) ... update-alternatives: using /usr/lib/i386-linux-gnu/lapack/liblapack.so.3 to provide /usr/lib/i386-linux-gnu/liblapack.so.3 (liblapack.so.3-i386-linux-gnu) in auto mode Setting up gettext (0.23.1-1) ... Setting up libtool (2.5.4-2) ... Setting up intltool-debian (0.35.0+20060710.6) ... Setting up dh-autoreconf (20) ... Setting up libreadline8t64:i386 (8.2-6) ... Setting up dh-strip-nondeterminism (1.14.1-1) ... Setting up groff-base (1.23.0-7) ... Setting up libpython3.13-stdlib:i386 (3.13.1-3) ... Setting up libpython3-stdlib:i386 (3.13.1-2) ... Setting up python3.13 (3.13.1-3) ... Setting up po-debconf (1.0.21+nmu1) ... Setting up python3 (3.13.1-2) ... Setting up python3-zipp (3.21.0-1) ... Setting up python3-autocommand (2.2.2-3) ... Setting up man-db (2.13.0-1) ... Not building database; man-db/auto-update is not 'true'. Setting up python3-hjson (3.1.0-3) ... Setting up python3-wheel (0.45.1-1) ... Setting up python3-tz (2024.2-1) ... Setting up python3-pygments (2.18.0+dfsg-2) ... Setting up python3-packaging (24.2-1) ... Setting up python3-pyproject-hooks (1.2.0-1) ... Setting up python3-mdurl (0.1.2-1) ... Setting up python3-markdown (3.7-2) ... Setting up python3-typing-extensions (4.12.2-2) ... Setting up python3-numpy (1:1.26.4+ds-13) ... Setting up python3-toml (0.10.2-1) ... Setting up python3-installer (0.7.0+dfsg1-3) ... Setting up python3-pluggy (1.5.0-1) ... Setting up python3-markdown-it (3.0.0-2) ... Setting up python3-dateutil (2.9.0-3) ... Setting up python3-build (1.2.2-1) ... Setting up python3-soupsieve (2.6-1) ... Setting up python3-more-itertools (10.6.0-1) ... Setting up python3-iniconfig (1.1.1-2) ... Setting up python3-jaraco.functools (4.1.0-1) ... Setting up python3-jaraco.context (6.0.0-1) ... Setting up python3-rich (13.9.4-1) ... Setting up python3-pytest (8.3.4-1) ... Setting up python3-pandas-lib:i386 (2.2.3+dfsg-5+b1) ... Setting up python3-typeguard (4.4.1-1) ... Setting up python3-yaml (6.0.2-1+b1) ... Setting up debhelper (13.24.1) ... Setting up python3-super-collections (0.5.3-2) ... Setting up python3-bs4 (4.12.3-3) ... Setting up python3-inflect (7.3.1-2) ... Setting up python3-pandas (2.2.3+dfsg-5) ... Setting up python3-jaraco.text (4.0.0-1) ... Setting up python3-pkg-resources (75.6.0-1) ... Setting up python3-setuptools (75.6.0-1) ... Setting up python3-setuptools-scm (8.1.0-1) ... Setting up dh-python (6.20250108) ... Setting up pybuild-plugin-pyproject (6.20250108) ... Processing triggers for libc-bin (2.40-5) ... 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: user script /srv/workspace/pbuilder/91953/tmp/hooks/A99_set_merged_usr starting Not re-configuring usrmerge for unstable I: user script /srv/workspace/pbuilder/91953/tmp/hooks/A99_set_merged_usr finished hostname: Name or service not known I: Running cd /build/reproducible-path/mkdocs-test-0.5.3/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-genchanges -S > ../mkdocs-test_0.5.3-5_source.changes dpkg-buildpackage: info: source package mkdocs-test dpkg-buildpackage: info: source version 0.5.3-5 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by Boyuan Yang dpkg-source --before-build . dpkg-buildpackage: info: host architecture i386 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/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test * Building wheel... running bdist_wheel running build running build_py creating build/lib/mkdocs_test copying mkdocs_test/plugin.py -> build/lib/mkdocs_test copying mkdocs_test/__init__.py -> build/lib/mkdocs_test copying mkdocs_test/common.py -> build/lib/mkdocs_test running egg_info creating mkdocs_test.egg-info writing mkdocs_test.egg-info/PKG-INFO writing dependency_links to mkdocs_test.egg-info/dependency_links.txt writing entry points to mkdocs_test.egg-info/entry_points.txt writing requirements to mkdocs_test.egg-info/requires.txt writing top-level names to mkdocs_test.egg-info/top_level.txt writing manifest file 'mkdocs_test.egg-info/SOURCES.txt' reading manifest file 'mkdocs_test.egg-info/SOURCES.txt' adding license file 'LICENSE' writing manifest file 'mkdocs_test.egg-info/SOURCES.txt' installing to build/bdist.linux-i686/wheel running install running install_lib creating build/bdist.linux-i686/wheel creating build/bdist.linux-i686/wheel/mkdocs_test copying build/lib/mkdocs_test/plugin.py -> build/bdist.linux-i686/wheel/./mkdocs_test copying build/lib/mkdocs_test/__init__.py -> build/bdist.linux-i686/wheel/./mkdocs_test copying build/lib/mkdocs_test/common.py -> build/bdist.linux-i686/wheel/./mkdocs_test running install_egg_info Copying mkdocs_test.egg-info to build/bdist.linux-i686/wheel/./mkdocs_test-0.5.3.egg-info running install_scripts creating build/bdist.linux-i686/wheel/mkdocs_test-0.5.3.dist-info/WHEEL creating '/build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/.tmp-ibilpvn4/mkdocs_test-0.5.3-py3-none-any.whl' and adding 'build/bdist.linux-i686/wheel' to it adding 'mkdocs_test/__init__.py' adding 'mkdocs_test/common.py' adding 'mkdocs_test/plugin.py' adding 'mkdocs_test-0.5.3.dist-info/LICENSE' adding 'mkdocs_test-0.5.3.dist-info/METADATA' adding 'mkdocs_test-0.5.3.dist-info/WHEEL' adding 'mkdocs_test-0.5.3.dist-info/entry_points.txt' adding 'mkdocs_test-0.5.3.dist-info/top_level.txt' adding 'mkdocs_test-0.5.3.dist-info/RECORD' removing build/bdist.linux-i686/wheel Successfully built mkdocs_test-0.5.3-py3-none-any.whl I: pybuild plugin_pyproject:144: Unpacking wheel built for python3.13 with "installer" module debian/rules override_dh_auto_test make[1]: Entering directory '/build/reproducible-path/mkdocs-test-0.5.3' dh_auto_test I: pybuild base:311: cd /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build; python3.13 -m pytest test ============================= test session starts ============================== platform linux -- Python 3.13.1, pytest-8.3.4, pluggy-1.5.0 rootdir: /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build configfile: pyproject.toml plugins: typeguard-4.4.1 collected 8 items test/advanced/test_advanced.py FF [ 25%] test/alter_markdown/test_site.py F [ 37%] test/simple/test_site.py FF [ 62%] test/test_simple.py F.F [100%] =================================== FAILURES =================================== __________________________________ test_pages __________________________________ def test_pages(): project = DocProject() > project.build(strict=False) /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/test/advanced/test_advanced.py:19: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/__init__.py:482: in build self._build_result = run_command(*command) /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/common.py:332: in run_command return subprocess.run(full_command, capture_output=True, text=True) /usr/lib/python3.13/subprocess.py:554: in run with Popen(*popenargs, **kwargs) as process: /usr/lib/python3.13/subprocess.py:1036: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['mkdocs', 'build'], executable = b'mkdocs', preexec_fn = None close_fds = True, pass_fds = (), cwd = None, env = None, startupinfo = None creationflags = 0, shell = False, p2cread = -1, p2cwrite = -1, c2pread = 11 c2pwrite = 12, errread = 13, errwrite = 14, restore_signals = True, gid = None gids = None, uid = None, umask = -1, start_new_session = False process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and (not close_fds or _HAVE_POSIX_SPAWN_CLOSEFROM) and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, close_fds, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'mkdocs' /usr/lib/python3.13/subprocess.py:1966: FileNotFoundError ----------------------------- Captured stdout call ----------------------------- BUILD COMMAND: ['mkdocs', 'build'] _________________________________ test_strict __________________________________ def test_strict(): "This project must fail" project = DocProject() # it must not fail with the --strict option, > project.build(strict=True) /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/test/advanced/test_advanced.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/__init__.py:482: in build self._build_result = run_command(*command) /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/common.py:332: in run_command return subprocess.run(full_command, capture_output=True, text=True) /usr/lib/python3.13/subprocess.py:554: in run with Popen(*popenargs, **kwargs) as process: /usr/lib/python3.13/subprocess.py:1036: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['mkdocs', 'build', '--strict'], executable = b'mkdocs' preexec_fn = None, close_fds = True, pass_fds = (), cwd = None, env = None startupinfo = None, creationflags = 0, shell = False, p2cread = -1 p2cwrite = -1, c2pread = 11, c2pwrite = 12, errread = 13, errwrite = 14 restore_signals = True, gid = None, gids = None, uid = None, umask = -1 start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and (not close_fds or _HAVE_POSIX_SPAWN_CLOSEFROM) and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, close_fds, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'mkdocs' /usr/lib/python3.13/subprocess.py:1966: FileNotFoundError ----------------------------- Captured stdout call ----------------------------- BUILD COMMAND: ['mkdocs', 'build', '--strict'] __________________________________ test_pages __________________________________ def test_pages(): project = DocProject() > project.build(strict=True) /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/test/alter_markdown/test_site.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/__init__.py:482: in build self._build_result = run_command(*command) /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/common.py:332: in run_command return subprocess.run(full_command, capture_output=True, text=True) /usr/lib/python3.13/subprocess.py:554: in run with Popen(*popenargs, **kwargs) as process: /usr/lib/python3.13/subprocess.py:1036: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['mkdocs', 'build', '--strict'], executable = b'mkdocs' preexec_fn = None, close_fds = True, pass_fds = (), cwd = None, env = None startupinfo = None, creationflags = 0, shell = False, p2cread = -1 p2cwrite = -1, c2pread = 11, c2pwrite = 12, errread = 13, errwrite = 14 restore_signals = True, gid = None, gids = None, uid = None, umask = -1 start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and (not close_fds or _HAVE_POSIX_SPAWN_CLOSEFROM) and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, close_fds, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'mkdocs' /usr/lib/python3.13/subprocess.py:1966: FileNotFoundError ----------------------------- Captured stdout call ----------------------------- BUILD COMMAND: ['mkdocs', 'build', '--strict'] __________________________________ test_pages __________________________________ def test_pages(): project = DocProject() > project.build(strict=False) /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/test/simple/test_site.py:19: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/__init__.py:482: in build self._build_result = run_command(*command) /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/common.py:332: in run_command return subprocess.run(full_command, capture_output=True, text=True) /usr/lib/python3.13/subprocess.py:554: in run with Popen(*popenargs, **kwargs) as process: /usr/lib/python3.13/subprocess.py:1036: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['mkdocs', 'build'], executable = b'mkdocs', preexec_fn = None close_fds = True, pass_fds = (), cwd = None, env = None, startupinfo = None creationflags = 0, shell = False, p2cread = -1, p2cwrite = -1, c2pread = 11 c2pwrite = 12, errread = 13, errwrite = 14, restore_signals = True, gid = None gids = None, uid = None, umask = -1, start_new_session = False process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and (not close_fds or _HAVE_POSIX_SPAWN_CLOSEFROM) and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, close_fds, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'mkdocs' /usr/lib/python3.13/subprocess.py:1966: FileNotFoundError ----------------------------- Captured stdout call ----------------------------- BUILD COMMAND: ['mkdocs', 'build'] _________________________________ test_strict __________________________________ def test_strict(): "This project must fail" project = DocProject() # it must not fail with the --strict option, > project.build(strict=True) /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/test/simple/test_site.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/__init__.py:482: in build self._build_result = run_command(*command) /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/common.py:332: in run_command return subprocess.run(full_command, capture_output=True, text=True) /usr/lib/python3.13/subprocess.py:554: in run with Popen(*popenargs, **kwargs) as process: /usr/lib/python3.13/subprocess.py:1036: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['mkdocs', 'build', '--strict'], executable = b'mkdocs' preexec_fn = None, close_fds = True, pass_fds = (), cwd = None, env = None startupinfo = None, creationflags = 0, shell = False, p2cread = -1 p2cwrite = -1, c2pread = 11, c2pwrite = 12, errread = 13, errwrite = 14 restore_signals = True, gid = None, gids = None, uid = None, umask = -1 start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and (not close_fds or _HAVE_POSIX_SPAWN_CLOSEFROM) and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, close_fds, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'mkdocs' /usr/lib/python3.13/subprocess.py:1966: FileNotFoundError ----------------------------- Captured stdout call ----------------------------- BUILD COMMAND: ['mkdocs', 'build', '--strict'] ________________________________ test_functions ________________________________ name = 'lxml.etree', extra = '', errors = 'raise', min_version = None def import_optional_dependency( name: str, extra: str = "", errors: str = "raise", min_version: str | None = None, ): """ Import an optional dependency. By default, if a dependency is missing an ImportError with a nice message will be raised. If a dependency is present, but too old, we raise. Parameters ---------- name : str The module name. extra : str Additional text to include in the ImportError message. errors : str {'raise', 'warn', 'ignore'} What to do when a dependency is not found or its version is too old. * raise : Raise an ImportError * warn : Only applicable when a module's version is to old. Warns that the version is too old and returns None * ignore: If the module is not installed, return None, otherwise, return the module, even if the version is too old. It's expected that users validate the version locally when using ``errors="ignore"`` (see. ``io/html.py``) min_version : str, default None Specify a minimum version that is different from the global pandas minimum version required. Returns ------- maybe_module : Optional[ModuleType] The imported module, when found and the version is correct. None is returned when the package is not found and `errors` is False, or when the package's version is too old and `errors` is ``'warn'`` or ``'ignore'``. """ assert errors in {"warn", "raise", "ignore"} if name=='numba' and warn_numba_platform: warnings.warn(warn_numba_platform) package_name = INSTALL_MAPPING.get(name) install_name = package_name if package_name is not None else name msg = ( f"Missing optional dependency '{install_name}'. {extra} " f"Use pip or conda to install {install_name}." ) try: > module = importlib.import_module(name) /usr/lib/python3/dist-packages/pandas/compat/_optional.py:140: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = 'lxml.etree', package = None def import_module(name, package=None): """Import a module. The 'package' argument is required when performing a relative import. It specifies the package to use as the anchor point from which to resolve the relative import to an absolute import. """ level = 0 if name.startswith('.'): if not package: raise TypeError("the 'package' argument is required to perform a " f"relative import for {name!r}") for character in name: if character != '.': break level += 1 > return _bootstrap._gcd_import(name[level:], package, level) E ModuleNotFoundError: No module named 'lxml' /usr/lib/python3.13/importlib/__init__.py:88: ModuleNotFoundError During handling of the above exception, another exception occurred: def test_functions(): "Test the low level fixtures" h1("Unit tests") # Print the list of directories h2("Directories containing mkdocs.yml") for directory in PROJECTS: print(directory) print(PROJECTS) print() # Example usage h2("Parse tables") SOURCE_DOCUMENT = """ # Header 1 Some text. ## Table 1 | Column 1 | Column 2 | |----------|----------| | Value 1 | Value 2 | | Value 3 | Value 4 | ## Table 2 | Column A | Column B | |----------|----------| | Value A | Value B | | Value C | Value D | ## Another Section Some more text. | Column X | Column Y | |----------|----------| | Value X1 | Value Y1 | | Value X2 | Value Y2 | """ > dfs = get_tables(SOURCE_DOCUMENT) /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/test/test_simple.py:66: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/common.py:320: in get_tables dataframes = extract_tables_from_html(html, /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/common.py:175: in extract_tables_from_html df = pd.read_html(StringIO(str(table)))[0] /usr/lib/python3/dist-packages/pandas/io/html.py:1240: in read_html return _parse( /usr/lib/python3/dist-packages/pandas/io/html.py:971: in _parse parser = _parser_dispatch(flav) /usr/lib/python3/dist-packages/pandas/io/html.py:918: in _parser_dispatch import_optional_dependency("lxml.etree") _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = 'lxml.etree', extra = '', errors = 'raise', min_version = None def import_optional_dependency( name: str, extra: str = "", errors: str = "raise", min_version: str | None = None, ): """ Import an optional dependency. By default, if a dependency is missing an ImportError with a nice message will be raised. If a dependency is present, but too old, we raise. Parameters ---------- name : str The module name. extra : str Additional text to include in the ImportError message. errors : str {'raise', 'warn', 'ignore'} What to do when a dependency is not found or its version is too old. * raise : Raise an ImportError * warn : Only applicable when a module's version is to old. Warns that the version is too old and returns None * ignore: If the module is not installed, return None, otherwise, return the module, even if the version is too old. It's expected that users validate the version locally when using ``errors="ignore"`` (see. ``io/html.py``) min_version : str, default None Specify a minimum version that is different from the global pandas minimum version required. Returns ------- maybe_module : Optional[ModuleType] The imported module, when found and the version is correct. None is returned when the package is not found and `errors` is False, or when the package's version is too old and `errors` is ``'warn'`` or ``'ignore'``. """ assert errors in {"warn", "raise", "ignore"} if name=='numba' and warn_numba_platform: warnings.warn(warn_numba_platform) package_name = INSTALL_MAPPING.get(name) install_name = package_name if package_name is not None else name msg = ( f"Missing optional dependency '{install_name}'. {extra} " f"Use pip or conda to install {install_name}." ) try: module = importlib.import_module(name) except ImportError: if errors == "raise": > raise ImportError(msg) E ImportError: Missing optional dependency 'lxml'. Use pip or conda to install lxml. /usr/lib/python3/dist-packages/pandas/compat/_optional.py:143: ImportError ----------------------------- Captured stdout call ----------------------------- ╭──────────────────────────────────────────────────────────────────────────────╮ │ Unit tests │ ╰──────────────────────────────────────────────────────────────────────────────╯ Directories containing mkdocs.yml alter_markdown advanced simple ['alter_markdown', 'advanced', 'simple'] Parse tables Found a table _______________________________ test_doc_project _______________________________ def test_doc_project(): """ Test a project """ PROJECT_NAME = 'simple' # MYPROJECT = 'simple' h1(f"TESTING MKDOCS PROJECT ({PROJECT_NAME})") h2("Config") myproject = DocProject(PROJECT_NAME) config = myproject.config print(config) h2("Build") > result = myproject.build() /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/test/test_simple.py:165: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/__init__.py:482: in build self._build_result = run_command(*command) /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build/mkdocs_test/common.py:332: in run_command return subprocess.run(full_command, capture_output=True, text=True) /usr/lib/python3.13/subprocess.py:554: in run with Popen(*popenargs, **kwargs) as process: /usr/lib/python3.13/subprocess.py:1036: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['mkdocs', 'build'], executable = b'mkdocs', preexec_fn = None close_fds = True, pass_fds = (), cwd = None, env = None, startupinfo = None creationflags = 0, shell = False, p2cread = -1, p2cwrite = -1, c2pread = 11 c2pwrite = 12, errread = 13, errwrite = 14, restore_signals = True, gid = None gids = None, uid = None, umask = -1, start_new_session = False process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and (not close_fds or _HAVE_POSIX_SPAWN_CLOSEFROM) and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, close_fds, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'mkdocs' /usr/lib/python3.13/subprocess.py:1966: FileNotFoundError ----------------------------- Captured stdout call ----------------------------- ╭──────────────────────────────────────────────────────────────────────────────╮ │ TESTING MKDOCS PROJECT (simple) │ ╰──────────────────────────────────────────────────────────────────────────────╯ Config { site_name: Simple MkDocs Website theme: mkdocs nav: [ { Home: index.md } { "Next page": second.md } ] plugins: [ search test ] } Build BUILD COMMAND: ['mkdocs', 'build'] =========================== short test summary info ============================ FAILED test/advanced/test_advanced.py::test_pages - FileNotFoundError: [Errno... FAILED test/advanced/test_advanced.py::test_strict - FileNotFoundError: [Errn... FAILED test/alter_markdown/test_site.py::test_pages - FileNotFoundError: [Err... FAILED test/simple/test_site.py::test_pages - FileNotFoundError: [Errno 2] No... FAILED test/simple/test_site.py::test_strict - FileNotFoundError: [Errno 2] N... FAILED test/test_simple.py::test_functions - ImportError: Missing optional de... FAILED test/test_simple.py::test_doc_project - FileNotFoundError: [Errno 2] N... ========================= 7 failed, 1 passed in 1.35s ========================== E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build; python3.13 -m pytest test dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.13 returned exit code 13 make[1]: [debian/rules:10: override_dh_auto_test] Error 25 (ignored) make[1]: Leaving directory '/build/reproducible-path/mkdocs-test-0.5.3' create-stamp debian/debhelper-build-stamp dh_testroot -O--buildsystem=pybuild dh_prep -O--buildsystem=pybuild dh_auto_install --destdir=debian/python3-mkdocs-test/ -O--buildsystem=pybuild I: pybuild plugin_pyproject:178: Copying package built for python3.13 to destdir dh_installdocs -O--buildsystem=pybuild dh_installchangelogs -O--buildsystem=pybuild dh_python3 -O--buildsystem=pybuild dh_installsystemduser -O--buildsystem=pybuild dh_perl -O--buildsystem=pybuild dh_link -O--buildsystem=pybuild dh_strip_nondeterminism -O--buildsystem=pybuild dh_compress -O--buildsystem=pybuild dh_fixperms -O--buildsystem=pybuild dh_missing -O--buildsystem=pybuild dh_installdeb -O--buildsystem=pybuild dh_gencontrol -O--buildsystem=pybuild dpkg-gencontrol: warning: Recommends field of package python3-mkdocs-test: substitution variable ${python3:Recommends} used, but is not defined dh_md5sums -O--buildsystem=pybuild dh_builddeb -O--buildsystem=pybuild dpkg-deb: building package 'python3-mkdocs-test' in '../python3-mkdocs-test_0.5.3-5_all.deb'. dpkg-genbuildinfo --build=binary -O../mkdocs-test_0.5.3-5_i386.buildinfo dpkg-genchanges --build=binary -O../mkdocs-test_0.5.3-5_i386.changes dpkg-genchanges: info: binary-only upload (no source code included) dpkg-source --after-build . dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: not including original source code in upload I: copying local configuration I: user script /srv/workspace/pbuilder/91953/tmp/hooks/B01_cleanup starting I: user script /srv/workspace/pbuilder/91953/tmp/hooks/B01_cleanup finished I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env I: removing directory /srv/workspace/pbuilder/91953 and its subdirectories I: Current time: Wed Feb 25 13:03:15 +14 2026 I: pbuilder-time-stamp: 1771974195 + false + set +x Tue Feb 24 23:03:15 UTC 2026 I: Signing ./b2/mkdocs-test_0.5.3-5_i386.buildinfo as mkdocs-test_0.5.3-5_i386.buildinfo.asc Tue Feb 24 23:03:15 UTC 2026 I: Signed ./b2/mkdocs-test_0.5.3-5_i386.buildinfo as ./b2/mkdocs-test_0.5.3-5_i386.buildinfo.asc Tue Feb 24 23:03:15 UTC 2026 - build #2 for mkdocs-test/unstable/i386 on ionos16-i386 done. Starting cleanup. All cleanup done. Tue Feb 24 23:03:15 UTC 2026 - reproducible_build.sh stopped running as /tmp/jenkins-script-WY50O2rN, removing. /srv/reproducible-results/rbuild-debian/r-b-build.M58Pdxnz: total 128 drwxr-xr-x 2 jenkins jenkins 4096 Jan 22 16:39 b1 drwxr-xr-x 2 jenkins jenkins 4096 Jan 22 16:40 b2 -rw-r--r-- 1 jenkins jenkins 2763 Jan 21 14:50 mkdocs-test_0.5.3-5.dsc -rw------- 1 jenkins jenkins 111578 Jan 22 16:39 rbuildlog.DHUVWWa /srv/reproducible-results/rbuild-debian/r-b-build.M58Pdxnz/b1: total 160 -rw-r--r-- 1 jenkins jenkins 107407 Jan 22 16:39 build.log -rw-r--r-- 1 jenkins jenkins 2364 Jan 22 16:39 mkdocs-test_0.5.3-5.debian.tar.xz -rw-r--r-- 1 jenkins jenkins 2763 Jan 22 16:39 mkdocs-test_0.5.3-5.dsc -rw-r--r-- 1 jenkins jenkins 6461 Jan 22 16:39 mkdocs-test_0.5.3-5_i386.buildinfo -rw-r--r-- 1 jenkins jenkins 7343 Jan 22 16:39 mkdocs-test_0.5.3-5_i386.buildinfo.asc -rw-r--r-- 1 jenkins jenkins 1142 Jan 22 16:39 mkdocs-test_0.5.3-5_i386.changes -rw-r--r-- 1 jenkins jenkins 1268 Jan 22 16:39 mkdocs-test_0.5.3-5_source.changes -rw-r--r-- 1 jenkins jenkins 14812 Jan 22 16:39 python3-mkdocs-test_0.5.3-5_all.deb /srv/reproducible-results/rbuild-debian/r-b-build.M58Pdxnz/b2: total 156 -rw-r--r-- 1 jenkins jenkins 109320 Jan 22 16:40 build.log -rw-r--r-- 1 jenkins jenkins 2364 Jan 22 16:40 mkdocs-test_0.5.3-5.debian.tar.xz -rw-r--r-- 1 jenkins jenkins 2763 Jan 22 16:40 mkdocs-test_0.5.3-5.dsc -rw-r--r-- 1 jenkins jenkins 6461 Jan 22 16:40 mkdocs-test_0.5.3-5_i386.buildinfo -rw-r--r-- 1 jenkins jenkins 7343 Jan 22 16:40 mkdocs-test_0.5.3-5_i386.buildinfo.asc -rw-r--r-- 1 jenkins jenkins 1142 Jan 22 16:40 mkdocs-test_0.5.3-5_i386.changes -rw-r--r-- 1 jenkins jenkins 1268 Jan 22 16:40 mkdocs-test_0.5.3-5_source.changes -rw-r--r-- 1 jenkins jenkins 14812 Jan 22 16:40 python3-mkdocs-test_0.5.3-5_all.deb Wed Jan 22 16:40:16 UTC 2025 I: Deleting $TMPDIR on ionos16-i386.debian.net. Wed Jan 22 16:40:17 UTC 2025 I: mkdocs-test_0.5.3-5_i386.changes: Format: 1.8 Date: Tue, 21 Jan 2025 09:37:17 -0500 Source: mkdocs-test Binary: python3-mkdocs-test Architecture: all Version: 0.5.3-5 Distribution: unstable Urgency: medium Maintainer: Debian Python Team Changed-By: Boyuan Yang Description: python3-mkdocs-test - Testing framework for MkDocs projects (Python 3) Changes: mkdocs-test (0.5.3-5) unstable; urgency=medium . * debian/control: Really fix dependency issue by adding python3-rich, python3-markdown. (Upstream issue 2) Checksums-Sha1: 6d734367dad55d8b60e32e9c1068771439f8656c 6461 mkdocs-test_0.5.3-5_i386.buildinfo 3945cf1ae1025305b14511678ebbc5fc3c545f27 14812 python3-mkdocs-test_0.5.3-5_all.deb Checksums-Sha256: 5756eec492691cebc43745876fd59abdc6bdefd91266c1e9826c5c602098b8db 6461 mkdocs-test_0.5.3-5_i386.buildinfo 6e7de2c8dec3c5857b5af8db0378fdec796b09175b01fa9dfa6ac07e4bc9b815 14812 python3-mkdocs-test_0.5.3-5_all.deb Files: 5754afc321d4a6e6415bd42592bdfa5a 6461 python optional mkdocs-test_0.5.3-5_i386.buildinfo bd943d41a69698df0491124d46c2204b 14812 python optional python3-mkdocs-test_0.5.3-5_all.deb removed '/var/lib/jenkins/userContent/reproducible/debian/rbuild/unstable/i386/mkdocs-test_0.5.3-4.rbuild.log' removed '/var/lib/jenkins/userContent/reproducible/debian/rbuild/unstable/i386/mkdocs-test_0.5.3-4.rbuild.log.gz' removed '/var/lib/jenkins/userContent/reproducible/debian/logs/unstable/i386/mkdocs-test_0.5.3-4.build1.log.gz' removed '/var/lib/jenkins/userContent/reproducible/debian/logs/unstable/i386/mkdocs-test_0.5.3-4.build2.log.gz' removed '/var/lib/jenkins/userContent/reproducible/debian/buildinfo/unstable/i386/mkdocs-test_0.5.3-4_i386.buildinfo' removed '/var/lib/jenkins/userContent/reproducible/debian/logdiffs/unstable/i386/mkdocs-test_0.5.3-4.diff.gz' Diff of the two buildlogs: -- --- b1/build.log 2025-01-22 16:39:10.137096179 +0000 +++ b2/build.log 2025-01-22 16:40:16.850091154 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Wed Jan 22 04:37:31 -12 2025 -I: pbuilder-time-stamp: 1737563851 +I: Current time: Wed Feb 25 13:02:12 +14 2026 +I: pbuilder-time-stamp: 1771974132 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz] I: copying local configuration @@ -23,54 +23,86 @@ dpkg-source: info: unpacking mkdocs-test_0.5.3-5.debian.tar.xz I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/62908/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/91953/tmp/hooks/D01_modify_environment starting +debug: Running on ionos16-i386. +I: Changing host+domainname to test build reproducibility +I: Adding a custom variable just for the fun of it... +I: Changing /bin/sh to bash +'/bin/sh' -> '/bin/bash' +lrwxrwxrwx 1 root root 9 Feb 24 23:02 /bin/sh -> /bin/bash +I: Setting pbuilder2's login shell to /bin/bash +I: Setting pbuilder2's GECOS to second user,second room,second work-phone,second home-phone,second other +I: user script /srv/workspace/pbuilder/91953/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/91953/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='i386' - DEBIAN_FRONTEND='noninteractive' - DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=11 ' - DISTRIBUTION='unstable' - HOME='/root' - HOST_ARCH='i386' + BASH=/bin/sh + BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath + BASH_ALIASES=() + BASH_ARGC=() + BASH_ARGV=() + BASH_CMDS=() + BASH_LINENO=([0]="12" [1]="0") + BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:. + BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") + BASH_VERSINFO=([0]="5" [1]="2" [2]="37" [3]="1" [4]="release" [5]="i686-pc-linux-gnu") + BASH_VERSION='5.2.37(1)-release' + BUILDDIR=/build/reproducible-path + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=i386 + DEBIAN_FRONTEND=noninteractive + DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=21 ' + DIRSTACK=() + DISTRIBUTION=unstable + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=i686 + HOST_ARCH=i386 IFS=' ' - INVOCATION_ID='963eaf08855942fd8d129b8bd28a816f' - LANG='C' - LANGUAGE='en_US:en' - LC_ALL='C' - LD_LIBRARY_PATH='/usr/lib/libeatmydata' - LD_PRELOAD='libeatmydata.so' - 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='62908' - PS1='# ' - PS2='> ' + INVOCATION_ID=59e4d3d17c4a4843b5a2901d8b1e377d + LANG=C + LANGUAGE=de_CH:de + LC_ALL=C + LD_LIBRARY_PATH=/usr/lib/libeatmydata + LD_PRELOAD=libeatmydata.so + MACHTYPE=i686-pc-linux-gnu + MAIL=/var/mail/root + OPTERR=1 + OPTIND=1 + OSTYPE=linux-gnu + PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path + PBCURRENTCOMMANDLINEOPERATION=build + PBUILDER_OPERATION=build + PBUILDER_PKGDATADIR=/usr/share/pbuilder + PBUILDER_PKGLIBDIR=/usr/lib/pbuilder + PBUILDER_SYSCONFDIR=/etc + PIPESTATUS=([0]="0") + POSIXLY_CORRECT=y + PPID=91953 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.M58Pdxnz/pbuilderrc_Uc88 --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.M58Pdxnz/b1 --logfile b1/build.log mkdocs-test_0.5.3-5.dsc' - SUDO_GID='112' - SUDO_UID='107' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' - http_proxy='http://46.16.76.132:3128' + PWD=/ + SHELL=/bin/bash + SHELLOPTS=braceexpand:errexit:hashall:interactive-comments:posix + SHLVL=3 + SUDO_COMMAND='/usr/bin/timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.M58Pdxnz/pbuilderrc_iBgR --distribution unstable --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.M58Pdxnz/b2 --logfile b2/build.log mkdocs-test_0.5.3-5.dsc' + SUDO_GID=112 + SUDO_UID=107 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://213.165.73.152:3128 I: uname -a - Linux ionos2-i386 6.1.0-30-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.124-1 (2025-01-12) x86_64 GNU/Linux + Linux i-capture-the-hostname 6.1.0-30-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.124-1 (2025-01-12) x86_64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 Nov 22 14:40 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/62908/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 Nov 22 2024 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/91953/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -216,7 +248,7 @@ Get: 84 http://deb.debian.org/debian unstable/main i386 python3-setuptools-scm all 8.1.0-1 [40.5 kB] Get: 85 http://deb.debian.org/debian unstable/main i386 python3-super-collections all 0.5.3-2 [12.2 kB] Get: 86 http://deb.debian.org/debian unstable/main i386 python3-yaml i386 6.0.2-1+b1 [173 kB] -Fetched 48.7 MB in 1s (63.8 MB/s) +Fetched 48.7 MB in 1s (71.9 MB/s) Preconfiguring packages ... Selecting previously unselected package libpython3.13-minimal:i386. (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 ... 19836 files and directories currently installed.) @@ -503,8 +535,8 @@ Setting up tzdata (2025a-1) ... Current default time zone: 'Etc/UTC' -Local time is now: Wed Jan 22 16:38:12 UTC 2025. -Universal Time is now: Wed Jan 22 16:38:12 UTC 2025. +Local time is now: Tue Feb 24 23:02:42 UTC 2026. +Universal Time is now: Tue Feb 24 23:02:42 UTC 2026. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up autotools-dev (20220109.1) ... @@ -589,7 +621,11 @@ Building tag database... -> Finished parsing the build-deps I: Building the package -I: Running cd /build/reproducible-path/mkdocs-test-0.5.3/ && 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 > ../mkdocs-test_0.5.3-5_source.changes +I: user script /srv/workspace/pbuilder/91953/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for unstable +I: user script /srv/workspace/pbuilder/91953/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/reproducible-path/mkdocs-test-0.5.3/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-genchanges -S > ../mkdocs-test_0.5.3-5_source.changes dpkg-buildpackage: info: source package mkdocs-test dpkg-buildpackage: info: source version 0.5.3-5 dpkg-buildpackage: info: source distribution unstable @@ -614,9 +650,9 @@ running build running build_py creating build/lib/mkdocs_test -copying mkdocs_test/common.py -> build/lib/mkdocs_test copying mkdocs_test/plugin.py -> build/lib/mkdocs_test copying mkdocs_test/__init__.py -> build/lib/mkdocs_test +copying mkdocs_test/common.py -> build/lib/mkdocs_test running egg_info creating mkdocs_test.egg-info writing mkdocs_test.egg-info/PKG-INFO @@ -633,14 +669,14 @@ running install_lib creating build/bdist.linux-i686/wheel creating build/bdist.linux-i686/wheel/mkdocs_test -copying build/lib/mkdocs_test/common.py -> build/bdist.linux-i686/wheel/./mkdocs_test copying build/lib/mkdocs_test/plugin.py -> build/bdist.linux-i686/wheel/./mkdocs_test copying build/lib/mkdocs_test/__init__.py -> build/bdist.linux-i686/wheel/./mkdocs_test +copying build/lib/mkdocs_test/common.py -> build/bdist.linux-i686/wheel/./mkdocs_test running install_egg_info Copying mkdocs_test.egg-info to build/bdist.linux-i686/wheel/./mkdocs_test-0.5.3.egg-info running install_scripts creating build/bdist.linux-i686/wheel/mkdocs_test-0.5.3.dist-info/WHEEL -creating '/build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/.tmp-2od6nd6p/mkdocs_test-0.5.3-py3-none-any.whl' and adding 'build/bdist.linux-i686/wheel' to it +creating '/build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/.tmp-ibilpvn4/mkdocs_test-0.5.3-py3-none-any.whl' and adding 'build/bdist.linux-i686/wheel' to it adding 'mkdocs_test/__init__.py' adding 'mkdocs_test/common.py' adding 'mkdocs_test/plugin.py' @@ -1866,10 +1902,10 @@ ╰──────────────────────────────────────────────────────────────────────────────╯ Directories containing mkdocs.yml -simple alter_markdown advanced -['simple', 'alter_markdown', 'advanced'] +simple +['alter_markdown', 'advanced', 'simple'] Parse tables @@ -2118,7 +2154,7 @@ FAILED test/simple/test_site.py::test_strict - FileNotFoundError: [Errno 2] N... FAILED test/test_simple.py::test_functions - ImportError: Missing optional de... FAILED test/test_simple.py::test_doc_project - FileNotFoundError: [Errno 2] N... -========================= 7 failed, 1 passed in 5.00s ========================== +========================= 7 failed, 1 passed in 1.35s ========================== E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /build/reproducible-path/mkdocs-test-0.5.3/.pybuild/cpython3_3.13_mkdocs-test/build; python3.13 -m pytest test dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.13 returned exit code 13 make[1]: [debian/rules:10: override_dh_auto_test] Error 25 (ignored) @@ -2151,12 +2187,14 @@ dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: not including original source code in upload I: copying local configuration +I: user script /srv/workspace/pbuilder/91953/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/91953/tmp/hooks/B01_cleanup finished I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env -I: removing directory /srv/workspace/pbuilder/62908 and its subdirectories -I: Current time: Wed Jan 22 04:39:08 -12 2025 -I: pbuilder-time-stamp: 1737563948 +I: removing directory /srv/workspace/pbuilder/91953 and its subdirectories +I: Current time: Wed Feb 25 13:03:15 +14 2026 +I: pbuilder-time-stamp: 1771974195 Compressing the 2nd log... /var/lib/jenkins/userContent/reproducible/debian/logdiffs/unstable/i386/mkdocs-test_0.5.3-5.diff: 68.4% -- replaced with /var/lib/jenkins/userContent/reproducible/debian/logdiffs/unstable/i386/mkdocs-test_0.5.3-5.diff.gz b2/build.log: 86.3% -- replaced with stdout Compressing the 1st log... b1/build.log: 86.8% -- replaced with stdout Wed Jan 22 16:40:18 UTC 2025 I: diffoscope 285 will be used to compare the two builds: ++ date -u +%s + DIFFOSCOPE_STAMP=/var/log/reproducible-builds/diffoscope_stamp_mkdocs-test_unstable_i386_1737564018 + touch /var/log/reproducible-builds/diffoscope_stamp_mkdocs-test_unstable_i386_1737564018 + RESULT=0 + systemd-run '--description=diffoscope on mkdocs-test/0.5.3-5 in unstable/i386' --slice=rb-build-diffoscope.slice -u rb-diffoscope-i386_3-51240 '--property=SuccessExitStatus=1 124' --user --send-sighup --pipe --wait -E TMPDIR timeout 155m nice schroot --directory /srv/reproducible-results/rbuild-debian/r-b-build.M58Pdxnz --run-session -c jenkins-reproducible-unstable-diffoscope-7a9256d6-c32c-46ff-9270-501e138a1178 -- sh -c 'export TMPDIR=/srv/reproducible-results/rbuild-debian/r-b-build.M58Pdxnz/dbd-tmp-fpDA3ch ; timeout 150m diffoscope --timeout 7200 --html /srv/reproducible-results/rbuild-debian/r-b-build.M58Pdxnz/mkdocs-test_0.5.3-5.diffoscope.html --text /srv/reproducible-results/rbuild-debian/r-b-build.M58Pdxnz/mkdocs-test_0.5.3-5.diffoscope.txt --json /srv/reproducible-results/rbuild-debian/r-b-build.M58Pdxnz/mkdocs-test_0.5.3-5.diffoscope.json --profile=- /srv/reproducible-results/rbuild-debian/r-b-build.M58Pdxnz/b1/mkdocs-test_0.5.3-5_i386.changes /srv/reproducible-results/rbuild-debian/r-b-build.M58Pdxnz/b2/mkdocs-test_0.5.3-5_i386.changes' + false + set +x Running as unit: rb-diffoscope-i386_3-51240.service # Profiling output for: /usr/bin/diffoscope --timeout 7200 --html /srv/reproducible-results/rbuild-debian/r-b-build.M58Pdxnz/mkdocs-test_0.5.3-5.diffoscope.html --text /srv/reproducible-results/rbuild-debian/r-b-build.M58Pdxnz/mkdocs-test_0.5.3-5.diffoscope.txt --json /srv/reproducible-results/rbuild-debian/r-b-build.M58Pdxnz/mkdocs-test_0.5.3-5.diffoscope.json --profile=- /srv/reproducible-results/rbuild-debian/r-b-build.M58Pdxnz/b1/mkdocs-test_0.5.3-5_i386.changes /srv/reproducible-results/rbuild-debian/r-b-build.M58Pdxnz/b2/mkdocs-test_0.5.3-5_i386.changes ## command (total time: 0.000s) 0.000s 1 call cmp (internal) ## has_same_content_as (total time: 0.000s) 0.000s 1 call abc.DotChangesFile ## main (total time: 0.351s) 0.351s 2 calls outputs 0.000s 1 call cleanup ## recognizes (total time: 0.014s) 0.014s 12 calls diffoscope.comparators.binary.FilesystemFile ## specialize (total time: 0.000s) 0.000s 1 call specialize Finished with result: success Main processes terminated with: code=exited/status=0 Service runtime: 702ms CPU time consumed: 703ms _ _ _ _ _ __ ___ | | ____| | ___ ___ ___ | |_ ___ ___| |_ | '_ ` _ \| |/ / _` |/ _ \ / __/ __|_____| __/ _ \/ __| __| | | | | | | < (_| | (_) | (__\__ \_____| || __/\__ \ |_ |_| |_| |_|_|\_\__,_|\___/ \___|___/ \__\___||___/\__| Wed Jan 22 16:40:20 UTC 2025 I: diffoscope 285 found no differences in the changes files, and a .buildinfo file also exists. Wed Jan 22 16:40:20 UTC 2025 I: mkdocs-test from unstable built successfully and reproducibly on i386. INSERT 0 1 INSERT 0 1 DELETE 1 [2025-01-22 16:40:21] INFO: Starting at 2025-01-22 16:40:21.220515 [2025-01-22 16:40:21] INFO: Generating the pages of 1 package(s) [2025-01-22 16:40:21] CRITICAL: buildinfo not detected at /var/lib/jenkins/userContent/reproducible/debian/buildinfo/unstable/armhf/mkdocs-test_0.5.3-5_armhf.buildinfo [2025-01-22 16:40:21] ERROR: Either /var/lib/jenkins/userContent/reproducible/debian/logs/unstable/armhf/mkdocs-test_0.5.3-5.build2.log.gz or /var/lib/jenkins/userContent/reproducible/debian/logdiffs/unstable/armhf/mkdocs-test_0.5.3-5.diff.gz is missing [2025-01-22 16:40:21] CRITICAL: https://tests.reproducible-builds.org/debian/unstable/i386/mkdocs-test didn't produce a buildlog, even though it has been built. [2025-01-22 16:40:21] INFO: Finished at 2025-01-22 16:40:21.349077, took: 0:00:00.128568 Wed Jan 22 16:40:21 UTC 2025 - successfully updated the database and updated https://tests.reproducible-builds.org/debian/rb-pkg/unstable/i386/mkdocs-test.html Wed Jan 22 16:40:21 UTC 2025 I: Submitting .buildinfo files to external archives: Wed Jan 22 16:40:21 UTC 2025 I: Submitting 8.0K b1/mkdocs-test_0.5.3-5_i386.buildinfo.asc https://buildinfo.debian.net/6d734367dad55d8b60e32e9c1068771439f8656c/mkdocs-test_0.5.3-5_all Wed Jan 22 16:40:22 UTC 2025 I: Submitting 8.0K b2/mkdocs-test_0.5.3-5_i386.buildinfo.asc https://buildinfo.debian.net/07ffc05c62fced9c639166ed6c48a63fc55f51bc/mkdocs-test_0.5.3-5_all Wed Jan 22 16:40:22 UTC 2025 I: Done submitting .buildinfo files to http://buildinfo.debian.net/api/submit. Wed Jan 22 16:40:22 UTC 2025 I: Done submitting .buildinfo files. Wed Jan 22 16:40:22 UTC 2025 I: Removing signed mkdocs-test_0.5.3-5_i386.buildinfo.asc files: removed './b1/mkdocs-test_0.5.3-5_i386.buildinfo.asc' removed './b2/mkdocs-test_0.5.3-5_i386.buildinfo.asc' 1737564022 i386 unstable mkdocs-test Starting cleanup. /var/lib/jenkins/userContent/reproducible/debian/rbuild/unstable/i386/mkdocs-test_0.5.3-5.rbuild.log: 85.0% -- replaced with /var/lib/jenkins/userContent/reproducible/debian/rbuild/unstable/i386/mkdocs-test_0.5.3-5.rbuild.log.gz [2025-01-22 16:40:23] INFO: Starting at 2025-01-22 16:40:23.265129 [2025-01-22 16:40:23] INFO: Generating the pages of 1 package(s) [2025-01-22 16:40:23] CRITICAL: buildinfo not detected at /var/lib/jenkins/userContent/reproducible/debian/buildinfo/unstable/armhf/mkdocs-test_0.5.3-5_armhf.buildinfo [2025-01-22 16:40:23] ERROR: Either /var/lib/jenkins/userContent/reproducible/debian/logs/unstable/armhf/mkdocs-test_0.5.3-5.build2.log.gz or /var/lib/jenkins/userContent/reproducible/debian/logdiffs/unstable/armhf/mkdocs-test_0.5.3-5.diff.gz is missing [2025-01-22 16:40:23] INFO: Finished at 2025-01-22 16:40:23.380657, took: 0:00:00.115532 All cleanup done. Wed Jan 22 16:40:23 UTC 2025 - total duration: 0h 3m 3s. Wed Jan 22 16:40:23 UTC 2025 - reproducible_build.sh stopped running as /tmp/jenkins-script-eEjuZ8Nh, removing. Finished with result: success Main processes terminated with: code=exited/status=0 Service runtime: 3min 5.921s CPU time consumed: 6.530s