Thu Apr 25 08:27:32 UTC 2024 I: starting to build image-factory/unstable/amd64 on jenkins on '2024-04-25 08:27' Thu Apr 25 08:27:32 UTC 2024 I: The jenkins build log is/was available at https://jenkins.debian.net/userContent/reproducible/debian/build_service/amd64_3/18363/console.log Thu Apr 25 08:27:32 UTC 2024 I: Downloading source for unstable/image-factory=1.0.2-1.1 --2024-04-25 08:27:33-- http://deb.debian.org/debian/pool/main/i/image-factory/image-factory_1.0.2-1.1.dsc Connecting to 46.16.76.132:3128... connected. Proxy request sent, awaiting response... 200 OK Length: 2320 (2.3K) [text/prs.lines.tag] Saving to: ‘image-factory_1.0.2-1.1.dsc’ 0K .. 100% 316M=0s 2024-04-25 08:27:33 (316 MB/s) - ‘image-factory_1.0.2-1.1.dsc’ saved [2320/2320] Thu Apr 25 08:27:33 UTC 2024 I: image-factory_1.0.2-1.1.dsc -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 Format: 3.0 (quilt) Source: image-factory Binary: image-factory Architecture: all Version: 1.0.2-1.1 Maintainer: Benjamin Drung Homepage: https://github.com/ionos-enterprise/image-factory Standards-Version: 4.6.0 Vcs-Browser: https://github.com/ionos-enterprise/image-factory Vcs-Git: https://github.com/ionos-enterprise/image-factory.git -b debian/master Build-Depends: black, debhelper-compat (= 13), dh-python, isort, pandoc, pylint (>= 2.2.2-2~) | pylint3, python3-all, python3-flake8, python3-httplib2, python3-parted Package-List: image-factory deb admin optional arch=all Checksums-Sha1: dbae77e0494469856b3bebaaba40786ee2926516 29684 image-factory_1.0.2.orig.tar.xz ed5dc5d75e8e9113ebe62817b64224b6f4faac95 833 image-factory_1.0.2.orig.tar.xz.asc 71392a345f0d92a9eef9de088ce3948085de7f6c 9432 image-factory_1.0.2-1.1.debian.tar.xz Checksums-Sha256: 3a101475518861aac5a2e6a156de64c3065234eedff2cc8e00af0bcfa74f95f5 29684 image-factory_1.0.2.orig.tar.xz a8b3208cadf1d0f06ede209ffa681d7ea7b2c77c97458326192f382ec32efed7 833 image-factory_1.0.2.orig.tar.xz.asc 6942b936476f3ae18206a5c0171caaa45baa63fe9ca74321956ecc26bc696f2d 9432 image-factory_1.0.2-1.1.debian.tar.xz Files: addef93e6077ae775743e0074eb74b31 29684 image-factory_1.0.2.orig.tar.xz 09c968cf03da2a9f45647ba089b92054 833 image-factory_1.0.2.orig.tar.xz.asc d8350e5f976f95d52e9595632753d670 9432 image-factory_1.0.2-1.1.debian.tar.xz -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEMsxJDlpwsj3Wqlqyouuu0bb5AkEFAmQ9GC4ACgkQouuu0bb5 AkEm/w//bs/sN6Vh8CLqJuKxArdF9y1NE6TkAQ45OZHoKVC4ArF3RTMTTgzzCFes nLcncg349oPHHml77x/OA3hyydFcxiaBtqsGBs3b0txmvS1KytihVC//+V+itDtO R0/hzW0AXBasxhv+TrZ2Tr1JT4A/Ctt7jDG55/t2Ezo5ACOY+bl1Jv1RLSVjkaqg 5KYeY6qWBK7QBB+wKn/y+iO6FA+om+FyKOT5bCGQL5j/81ySSXjo4A2883FlGn0W ENzEARG72gKvWm5cPb73nbsl/di5XG/aDN8RUZZ43f1qaCx6oXaMSoEz8wJ3u2Mr LcQwfEgQrnEzd5jKJ91ngzCNgRG6GZhcHDaC+mvjh8gfAoLUGG8LZ1CWuhYrTRq+ ZwTfR+XlrkuDPDuQwB75iDbmJdvgr3bskqSXOi+XllYA7SoyO2By6qgSzsWRW9EN yX9PwoEoggFBtEYe4zOOQpBngx8644VUS5gKQ9lDiqKYTcR7rYCTw/ZGn5u194oo XDhqttttYkPGlq8vcGbaP5kHQPYyfnYg6RlqZkn25XJjEEfwxLFBOhuexgRp4Co+ TXdahjZxT8kE6Edrwjpk452BtNQweG26hNocCQ/zWiHAau+JfSTlVVnZrEH13xcS aZCfWzZZNU1/DJtfj4eUrwwFuwny3WbwlgTU/37pXDP4sAqR3So= =hn5J -----END PGP SIGNATURE----- Thu Apr 25 08:27:33 UTC 2024 I: Checking whether the package is not for us Thu Apr 25 08:27:33 UTC 2024 I: Starting 1st build on remote node ionos1-amd64.debian.net. Thu Apr 25 08:27:33 UTC 2024 I: Preparing to do remote build '1' on ionos1-amd64.debian.net. Thu Apr 25 08:35:12 UTC 2024 I: Deleting $TMPDIR on ionos1-amd64.debian.net. I: pbuilder: network access will be disabled during build I: Current time: Wed Apr 24 20:27:35 -12 2024 I: pbuilder-time-stamp: 1714033655 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz] I: copying local configuration W: --override-config is not set; not updating apt.conf Read the manpage for details. I: mounting /proc filesystem I: mounting /sys filesystem I: creating /{dev,run}/shm I: mounting /dev/pts filesystem I: redirecting /dev/ptmx to /dev/pts/ptmx I: policy-rc.d already exists I: Copying source file I: copying [image-factory_1.0.2-1.1.dsc] I: copying [./image-factory_1.0.2.orig.tar.xz] I: copying [./image-factory_1.0.2.orig.tar.xz.asc] I: copying [./image-factory_1.0.2-1.1.debian.tar.xz] I: Extracting source gpgv: Signature made Mon Apr 17 09:58:06 2023 gpgv: using RSA key 32CC490E5A70B23DD6AA5AB2A2EBAED1B6F90241 gpgv: Can't check signature: No public key dpkg-source: warning: cannot verify inline signature for ./image-factory_1.0.2-1.1.dsc: no acceptable signature found dpkg-source: info: extracting image-factory in image-factory-1.0.2 dpkg-source: info: unpacking image-factory_1.0.2.orig.tar.xz dpkg-source: info: unpacking image-factory_1.0.2-1.1.debian.tar.xz dpkg-source: info: using patch list from debian/patches/series dpkg-source: info: applying 0001-replace-broad-exceptions.patch I: Not using root during the build. I: Installing the build-deps I: user script /srv/workspace/pbuilder/600638/tmp/hooks/D02_print_environment starting I: set BUILDDIR='/build/reproducible-path' BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' BUILDUSERNAME='pbuilder1' BUILD_ARCH='amd64' DEBIAN_FRONTEND='noninteractive' DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=20 ' DISTRIBUTION='unstable' HOME='/root' HOST_ARCH='amd64' IFS=' ' INVOCATION_ID='4998b14901234d76a4a0763f754f1708' LANG='C' LANGUAGE='en_US:en' LC_ALL='C' MAIL='/var/mail/root' OPTIND='1' PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' PBCURRENTCOMMANDLINEOPERATION='build' PBUILDER_OPERATION='build' PBUILDER_PKGDATADIR='/usr/share/pbuilder' PBUILDER_PKGLIBDIR='/usr/lib/pbuilder' PBUILDER_SYSCONFDIR='/etc' PPID='600638' 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.lPPkMbvL/pbuilderrc_h5bm --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.lPPkMbvL/b1 --logfile b1/build.log image-factory_1.0.2-1.1.dsc' SUDO_GID='110' SUDO_UID='105' 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 ionos1-amd64 6.1.0-20-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.85-1 (2024-04-11) x86_64 GNU/Linux I: ls -l /bin lrwxrwxrwx 1 root root 7 Apr 25 07:43 /bin -> usr/bin I: user script /srv/workspace/pbuilder/600638/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy Version: 0.invalid.0 Architecture: amd64 Maintainer: Debian Pbuilder Team Description: Dummy package to satisfy dependencies with aptitude - created by pbuilder This package was created automatically by pbuilder to satisfy the build-dependencies of the package being currently built. Depends: black, debhelper-compat (= 13), dh-python, isort, pandoc, pylint (>= 2.2.2-2~) | pylint3, python3-all, python3-flake8, python3-httplib2, python3-parted dpkg-deb: building package 'pbuilder-satisfydepends-dummy' in '/tmp/satisfydepends-aptitude/pbuilder-satisfydepends-dummy.deb'. Selecting previously unselected package pbuilder-satisfydepends-dummy. (Reading database ... 19694 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 black; however: Package black is not installed. pbuilder-satisfydepends-dummy depends on debhelper-compat (= 13); however: Package debhelper-compat is not installed. pbuilder-satisfydepends-dummy depends on dh-python; however: Package dh-python is not installed. pbuilder-satisfydepends-dummy depends on isort; however: Package isort is not installed. pbuilder-satisfydepends-dummy depends on pandoc; however: Package pandoc is not installed. pbuilder-satisfydepends-dummy depends on pylint (>= 2.2.2-2~) | pylint3; however: Package pylint is not installed. Package pylint3 is not installed. pbuilder-satisfydepends-dummy depends on python3-all; however: Package python3-all is not installed. pbuilder-satisfydepends-dummy depends on python3-flake8; however: Package python3-flake8 is not installed. pbuilder-satisfydepends-dummy depends on python3-httplib2; however: Package python3-httplib2 is not installed. pbuilder-satisfydepends-dummy depends on python3-parted; however: Package python3-parted 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} black{a} bsdextrautils{a} ca-certificates{a} debhelper{a} dh-autoreconf{a} dh-python{a} dh-strip-nondeterminism{a} dmidecode{a} dmsetup{a} dwz{a} file{a} gettext{a} gettext-base{a} groff-base{a} intltool-debian{a} isort{a} libarchive-zip-perl{a} libdebhelper-perl{a} libdevmapper1.02.1{a} libelf1t64{a} libexpat1{a} libfile-stripnondeterminism-perl{a} libicu72{a} libjs-jquery{a} libjs-sphinxdoc{a} libjs-underscore{a} liblua5.4-0{a} libmagic-mgc{a} libmagic1t64{a} libparted2t64{a} libpipeline1{a} libpython3-stdlib{a} libpython3.11-minimal{a} libpython3.11-stdlib{a} libpython3.12-minimal{a} libpython3.12-stdlib{a} libreadline8t64{a} libsub-override-perl{a} libtool{a} libuchardet0{a} libxml2{a} libyaml-0-2{a} m4{a} man-db{a} media-types{a} netbase{a} openssl{a} pandoc{a} pandoc-data{a} po-debconf{a} pylint{a} python3{a} python3-all{a} python3-astroid{a} python3-click{a} python3-colorama{a} python3-dill{a} python3-distutils{a} python3-flake8{a} python3-httplib2{a} python3-isort{a} python3-lib2to3{a} python3-logilab-common{a} python3-mccabe{a} python3-minimal{a} python3-mypy-extensions{a} python3-packaging{a} python3-parted{a} python3-pathspec{a} python3-pkg-resources{a} python3-platformdirs{a} python3-pycodestyle{a} python3-pyflakes{a} python3-pyparsing{a} python3-setuptools{a} python3-toml{a} python3-tomlkit{a} python3-typing-extensions{a} python3.11{a} python3.11-minimal{a} python3.12{a} python3.12-minimal{a} readline-common{a} sensible-utils{a} tzdata{a} The following packages are RECOMMENDED but will NOT be installed: curl javascript-common libarchive-cpio-perl libltdl-dev libmail-sendmail-perl lynx pyflakes3 python3-tk wget 0 packages upgraded, 89 newly installed, 0 to remove and 0 not upgraded. Need to get 61.0 MB of archives. After unpacking 344 MB will be used. Writing extended state information... Get: 1 http://deb.debian.org/debian unstable/main amd64 libpython3.11-minimal amd64 3.11.9-1 [817 kB] Get: 2 http://deb.debian.org/debian unstable/main amd64 libexpat1 amd64 2.6.2-1 [103 kB] Get: 3 http://deb.debian.org/debian unstable/main amd64 python3.11-minimal amd64 3.11.9-1 [1879 kB] Get: 4 http://deb.debian.org/debian unstable/main amd64 python3-minimal amd64 3.11.8-1 [26.3 kB] Get: 5 http://deb.debian.org/debian unstable/main amd64 media-types all 10.1.0 [26.9 kB] Get: 6 http://deb.debian.org/debian unstable/main amd64 netbase all 6.4 [12.8 kB] Get: 7 http://deb.debian.org/debian unstable/main amd64 tzdata all 2024a-3 [255 kB] Get: 8 http://deb.debian.org/debian unstable/main amd64 readline-common all 8.2-4 [69.3 kB] Get: 9 http://deb.debian.org/debian unstable/main amd64 libreadline8t64 amd64 8.2-4 [167 kB] Get: 10 http://deb.debian.org/debian unstable/main amd64 libpython3.11-stdlib amd64 3.11.9-1 [1792 kB] Get: 11 http://deb.debian.org/debian unstable/main amd64 python3.11 amd64 3.11.9-1 [602 kB] Get: 12 http://deb.debian.org/debian unstable/main amd64 libpython3-stdlib amd64 3.11.8-1 [9332 B] Get: 13 http://deb.debian.org/debian unstable/main amd64 python3 amd64 3.11.8-1 [27.4 kB] Get: 14 http://deb.debian.org/debian unstable/main amd64 libpython3.12-minimal amd64 3.12.3-1 [809 kB] Get: 15 http://deb.debian.org/debian unstable/main amd64 python3.12-minimal amd64 3.12.3-1 [2139 kB] Get: 16 http://deb.debian.org/debian unstable/main amd64 dmidecode amd64 3.5-3 [66.6 kB] Get: 17 http://deb.debian.org/debian unstable/main amd64 sensible-utils all 0.0.22 [22.4 kB] Get: 18 http://deb.debian.org/debian unstable/main amd64 openssl amd64 3.2.1-3 [1360 kB] Get: 19 http://deb.debian.org/debian unstable/main amd64 ca-certificates all 20240203 [158 kB] Get: 20 http://deb.debian.org/debian unstable/main amd64 libmagic-mgc amd64 1:5.45-3 [314 kB] Get: 21 http://deb.debian.org/debian unstable/main amd64 libmagic1t64 amd64 1:5.45-3 [105 kB] Get: 22 http://deb.debian.org/debian unstable/main amd64 file amd64 1:5.45-3 [42.9 kB] Get: 23 http://deb.debian.org/debian unstable/main amd64 gettext-base amd64 0.21-14+b1 [161 kB] Get: 24 http://deb.debian.org/debian unstable/main amd64 libuchardet0 amd64 0.0.8-1+b1 [68.8 kB] Get: 25 http://deb.debian.org/debian unstable/main amd64 groff-base amd64 1.23.0-3+b1 [1180 kB] Get: 26 http://deb.debian.org/debian unstable/main amd64 bsdextrautils amd64 2.40-6 [92.3 kB] Get: 27 http://deb.debian.org/debian unstable/main amd64 libpipeline1 amd64 1.5.7-2 [38.0 kB] Get: 28 http://deb.debian.org/debian unstable/main amd64 man-db amd64 2.12.1-1 [1411 kB] Get: 29 http://deb.debian.org/debian unstable/main amd64 m4 amd64 1.4.19-4 [287 kB] Get: 30 http://deb.debian.org/debian unstable/main amd64 autoconf all 2.71-3 [332 kB] Get: 31 http://deb.debian.org/debian unstable/main amd64 autotools-dev all 20220109.1 [51.6 kB] Get: 32 http://deb.debian.org/debian unstable/main amd64 automake all 1:1.16.5-1.3 [823 kB] Get: 33 http://deb.debian.org/debian unstable/main amd64 autopoint all 0.21-14 [496 kB] Get: 34 http://deb.debian.org/debian unstable/main amd64 python3-pkg-resources all 68.1.2-2 [241 kB] Get: 35 http://deb.debian.org/debian unstable/main amd64 python3-colorama all 0.4.6-4 [36.2 kB] Get: 36 http://deb.debian.org/debian unstable/main amd64 python3-click all 8.1.7-1 [94.0 kB] Get: 37 http://deb.debian.org/debian unstable/main amd64 python3-mypy-extensions all 1.0.0-1 [6064 B] Get: 38 http://deb.debian.org/debian unstable/main amd64 python3-packaging all 24.0-1 [45.5 kB] Get: 39 http://deb.debian.org/debian unstable/main amd64 python3-pathspec all 0.12.1-1 [28.1 kB] Get: 40 http://deb.debian.org/debian unstable/main amd64 python3-platformdirs all 4.2.0-1 [15.9 kB] Get: 41 http://deb.debian.org/debian unstable/main amd64 python3-typing-extensions all 4.10.0-1 [66.2 kB] Get: 42 http://deb.debian.org/debian unstable/main amd64 black all 24.4.0-2 [159 kB] Get: 43 http://deb.debian.org/debian unstable/main amd64 libdebhelper-perl all 13.15.3 [88.0 kB] Get: 44 http://deb.debian.org/debian unstable/main amd64 libtool all 2.4.7-7 [517 kB] Get: 45 http://deb.debian.org/debian unstable/main amd64 dh-autoreconf all 20 [17.1 kB] Get: 46 http://deb.debian.org/debian unstable/main amd64 libarchive-zip-perl all 1.68-1 [104 kB] Get: 47 http://deb.debian.org/debian unstable/main amd64 libsub-override-perl all 0.10-1 [10.6 kB] Get: 48 http://deb.debian.org/debian unstable/main amd64 libfile-stripnondeterminism-perl all 1.13.1-1 [19.4 kB] Get: 49 http://deb.debian.org/debian unstable/main amd64 dh-strip-nondeterminism all 1.13.1-1 [8620 B] Get: 50 http://deb.debian.org/debian unstable/main amd64 libelf1t64 amd64 0.191-1+b1 [189 kB] Get: 51 http://deb.debian.org/debian unstable/main amd64 dwz amd64 0.15-1+b1 [110 kB] Get: 52 http://deb.debian.org/debian unstable/main amd64 libicu72 amd64 72.1-4+b1 [9395 kB] Get: 53 http://deb.debian.org/debian unstable/main amd64 libxml2 amd64 2.9.14+dfsg-1.3+b2 [692 kB] Get: 54 http://deb.debian.org/debian unstable/main amd64 gettext amd64 0.21-14+b1 [1301 kB] Get: 55 http://deb.debian.org/debian unstable/main amd64 intltool-debian all 0.35.0+20060710.6 [22.9 kB] Get: 56 http://deb.debian.org/debian unstable/main amd64 po-debconf all 1.0.21+nmu1 [248 kB] Get: 57 http://deb.debian.org/debian unstable/main amd64 debhelper all 13.15.3 [901 kB] Get: 58 http://deb.debian.org/debian unstable/main amd64 python3-lib2to3 all 3.12.3-1 [77.6 kB] Get: 59 http://deb.debian.org/debian unstable/main amd64 python3-distutils all 3.12.3-1 [131 kB] Get: 60 http://deb.debian.org/debian unstable/main amd64 python3-setuptools all 68.1.2-2 [468 kB] Get: 61 http://deb.debian.org/debian unstable/main amd64 dh-python all 6.20240422 [107 kB] Get: 62 http://deb.debian.org/debian unstable/main amd64 libdevmapper1.02.1 amd64 2:1.02.196-1+b1 [134 kB] Get: 63 http://deb.debian.org/debian unstable/main amd64 dmsetup amd64 2:1.02.196-1+b1 [82.6 kB] Get: 64 http://deb.debian.org/debian unstable/main amd64 python3-toml all 0.10.2-1 [16.2 kB] Get: 65 http://deb.debian.org/debian unstable/main amd64 python3-isort all 5.6.4-1 [63.2 kB] Get: 66 http://deb.debian.org/debian unstable/main amd64 isort all 5.6.4-1 [5660 B] Get: 67 http://deb.debian.org/debian unstable/main amd64 libjs-jquery all 3.6.1+dfsg+~3.5.14-1 [326 kB] Get: 68 http://deb.debian.org/debian unstable/main amd64 libjs-underscore all 1.13.4~dfsg+~1.11.4-3 [116 kB] Get: 69 http://deb.debian.org/debian unstable/main amd64 libjs-sphinxdoc all 7.2.6-6 [150 kB] Get: 70 http://deb.debian.org/debian unstable/main amd64 liblua5.4-0 amd64 5.4.6-3+b1 [147 kB] Get: 71 http://deb.debian.org/debian unstable/main amd64 libparted2t64 amd64 3.6-4 [300 kB] Get: 72 http://deb.debian.org/debian unstable/main amd64 libpython3.12-stdlib amd64 3.12.3-1 [1951 kB] Get: 73 http://deb.debian.org/debian unstable/main amd64 libyaml-0-2 amd64 0.2.5-1 [53.6 kB] Get: 74 http://deb.debian.org/debian unstable/main amd64 pandoc-data all 3.1.3-1 [445 kB] Get: 75 http://deb.debian.org/debian unstable/main amd64 pandoc amd64 3.1.3+ds-3 [24.3 MB] Get: 76 http://deb.debian.org/debian unstable/main amd64 python3-astroid all 3.1.0-1 [211 kB] Get: 77 http://deb.debian.org/debian unstable/main amd64 python3-logilab-common all 2.0.0-1 [343 kB] Get: 78 http://deb.debian.org/debian unstable/main amd64 python3-dill all 0.3.8-1 [81.7 kB] Get: 79 http://deb.debian.org/debian unstable/main amd64 python3-mccabe all 0.7.0-1 [10.5 kB] Get: 80 http://deb.debian.org/debian unstable/main amd64 python3-tomlkit all 0.12.4-1 [41.7 kB] Get: 81 http://deb.debian.org/debian unstable/main amd64 pylint all 3.0.3-1 [332 kB] Get: 82 http://deb.debian.org/debian unstable/main amd64 python3.12 amd64 3.12.3-1 [659 kB] Get: 83 http://deb.debian.org/debian unstable/main amd64 python3-all amd64 3.11.8-1 [1056 B] Get: 84 http://deb.debian.org/debian unstable/main amd64 python3-pycodestyle all 2.11.1-1 [39.4 kB] Get: 85 http://deb.debian.org/debian unstable/main amd64 python3-pyflakes all 3.2.0-1 [57.1 kB] Get: 86 http://deb.debian.org/debian unstable/main amd64 python3-flake8 all 7.0.0-1 [55.8 kB] Get: 87 http://deb.debian.org/debian unstable/main amd64 python3-pyparsing all 3.1.2-1 [146 kB] Get: 88 http://deb.debian.org/debian unstable/main amd64 python3-httplib2 all 0.20.4-3 [36.0 kB] Get: 89 http://deb.debian.org/debian unstable/main amd64 python3-parted amd64 3.13.0-1 [77.1 kB] Fetched 61.0 MB in 6s (10.6 MB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package libpython3.11-minimal:amd64. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 19694 files and directories currently installed.) Preparing to unpack .../libpython3.11-minimal_3.11.9-1_amd64.deb ... Unpacking libpython3.11-minimal:amd64 (3.11.9-1) ... Selecting previously unselected package libexpat1:amd64. Preparing to unpack .../libexpat1_2.6.2-1_amd64.deb ... Unpacking libexpat1:amd64 (2.6.2-1) ... Selecting previously unselected package python3.11-minimal. Preparing to unpack .../python3.11-minimal_3.11.9-1_amd64.deb ... Unpacking python3.11-minimal (3.11.9-1) ... Setting up libpython3.11-minimal:amd64 (3.11.9-1) ... Setting up libexpat1:amd64 (2.6.2-1) ... Setting up python3.11-minimal (3.11.9-1) ... 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 ... 20010 files and directories currently installed.) Preparing to unpack .../0-python3-minimal_3.11.8-1_amd64.deb ... Unpacking python3-minimal (3.11.8-1) ... 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_2024a-3_all.deb ... Unpacking tzdata (2024a-3) ... Selecting previously unselected package readline-common. Preparing to unpack .../4-readline-common_8.2-4_all.deb ... Unpacking readline-common (8.2-4) ... Selecting previously unselected package libreadline8t64:amd64. Preparing to unpack .../5-libreadline8t64_8.2-4_amd64.deb ... Adding 'diversion of /lib/x86_64-linux-gnu/libhistory.so.8 to /lib/x86_64-linux-gnu/libhistory.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/x86_64-linux-gnu/libhistory.so.8.2 to /lib/x86_64-linux-gnu/libhistory.so.8.2.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/x86_64-linux-gnu/libreadline.so.8 to /lib/x86_64-linux-gnu/libreadline.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/x86_64-linux-gnu/libreadline.so.8.2 to /lib/x86_64-linux-gnu/libreadline.so.8.2.usr-is-merged by libreadline8t64' Unpacking libreadline8t64:amd64 (8.2-4) ... Selecting previously unselected package libpython3.11-stdlib:amd64. Preparing to unpack .../6-libpython3.11-stdlib_3.11.9-1_amd64.deb ... Unpacking libpython3.11-stdlib:amd64 (3.11.9-1) ... Selecting previously unselected package python3.11. Preparing to unpack .../7-python3.11_3.11.9-1_amd64.deb ... Unpacking python3.11 (3.11.9-1) ... Selecting previously unselected package libpython3-stdlib:amd64. Preparing to unpack .../8-libpython3-stdlib_3.11.8-1_amd64.deb ... Unpacking libpython3-stdlib:amd64 (3.11.8-1) ... Setting up python3-minimal (3.11.8-1) ... Selecting previously unselected package python3. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 21002 files and directories currently installed.) Preparing to unpack .../00-python3_3.11.8-1_amd64.deb ... Unpacking python3 (3.11.8-1) ... Selecting previously unselected package libpython3.12-minimal:amd64. Preparing to unpack .../01-libpython3.12-minimal_3.12.3-1_amd64.deb ... Unpacking libpython3.12-minimal:amd64 (3.12.3-1) ... Selecting previously unselected package python3.12-minimal. Preparing to unpack .../02-python3.12-minimal_3.12.3-1_amd64.deb ... Unpacking python3.12-minimal (3.12.3-1) ... Selecting previously unselected package dmidecode. Preparing to unpack .../03-dmidecode_3.5-3_amd64.deb ... Unpacking dmidecode (3.5-3) ... Selecting previously unselected package sensible-utils. Preparing to unpack .../04-sensible-utils_0.0.22_all.deb ... Unpacking sensible-utils (0.0.22) ... Selecting previously unselected package openssl. Preparing to unpack .../05-openssl_3.2.1-3_amd64.deb ... Unpacking openssl (3.2.1-3) ... Selecting previously unselected package ca-certificates. Preparing to unpack .../06-ca-certificates_20240203_all.deb ... Unpacking ca-certificates (20240203) ... Selecting previously unselected package libmagic-mgc. Preparing to unpack .../07-libmagic-mgc_1%3a5.45-3_amd64.deb ... Unpacking libmagic-mgc (1:5.45-3) ... Selecting previously unselected package libmagic1t64:amd64. Preparing to unpack .../08-libmagic1t64_1%3a5.45-3_amd64.deb ... Unpacking libmagic1t64:amd64 (1:5.45-3) ... Selecting previously unselected package file. Preparing to unpack .../09-file_1%3a5.45-3_amd64.deb ... Unpacking file (1:5.45-3) ... Selecting previously unselected package gettext-base. Preparing to unpack .../10-gettext-base_0.21-14+b1_amd64.deb ... Unpacking gettext-base (0.21-14+b1) ... Selecting previously unselected package libuchardet0:amd64. Preparing to unpack .../11-libuchardet0_0.0.8-1+b1_amd64.deb ... Unpacking libuchardet0:amd64 (0.0.8-1+b1) ... Selecting previously unselected package groff-base. Preparing to unpack .../12-groff-base_1.23.0-3+b1_amd64.deb ... Unpacking groff-base (1.23.0-3+b1) ... Selecting previously unselected package bsdextrautils. Preparing to unpack .../13-bsdextrautils_2.40-6_amd64.deb ... Unpacking bsdextrautils (2.40-6) ... Selecting previously unselected package libpipeline1:amd64. Preparing to unpack .../14-libpipeline1_1.5.7-2_amd64.deb ... Unpacking libpipeline1:amd64 (1.5.7-2) ... Selecting previously unselected package man-db. Preparing to unpack .../15-man-db_2.12.1-1_amd64.deb ... Unpacking man-db (2.12.1-1) ... Selecting previously unselected package m4. Preparing to unpack .../16-m4_1.4.19-4_amd64.deb ... Unpacking m4 (1.4.19-4) ... Selecting previously unselected package autoconf. Preparing to unpack .../17-autoconf_2.71-3_all.deb ... Unpacking autoconf (2.71-3) ... Selecting previously unselected package autotools-dev. Preparing to unpack .../18-autotools-dev_20220109.1_all.deb ... Unpacking autotools-dev (20220109.1) ... Selecting previously unselected package automake. Preparing to unpack .../19-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 .../20-autopoint_0.21-14_all.deb ... Unpacking autopoint (0.21-14) ... Selecting previously unselected package python3-pkg-resources. Preparing to unpack .../21-python3-pkg-resources_68.1.2-2_all.deb ... Unpacking python3-pkg-resources (68.1.2-2) ... Selecting previously unselected package python3-colorama. Preparing to unpack .../22-python3-colorama_0.4.6-4_all.deb ... Unpacking python3-colorama (0.4.6-4) ... Selecting previously unselected package python3-click. Preparing to unpack .../23-python3-click_8.1.7-1_all.deb ... Unpacking python3-click (8.1.7-1) ... Selecting previously unselected package python3-mypy-extensions. Preparing to unpack .../24-python3-mypy-extensions_1.0.0-1_all.deb ... Unpacking python3-mypy-extensions (1.0.0-1) ... Selecting previously unselected package python3-packaging. Preparing to unpack .../25-python3-packaging_24.0-1_all.deb ... Unpacking python3-packaging (24.0-1) ... Selecting previously unselected package python3-pathspec. Preparing to unpack .../26-python3-pathspec_0.12.1-1_all.deb ... Unpacking python3-pathspec (0.12.1-1) ... Selecting previously unselected package python3-platformdirs. Preparing to unpack .../27-python3-platformdirs_4.2.0-1_all.deb ... Unpacking python3-platformdirs (4.2.0-1) ... Selecting previously unselected package python3-typing-extensions. Preparing to unpack .../28-python3-typing-extensions_4.10.0-1_all.deb ... Unpacking python3-typing-extensions (4.10.0-1) ... Selecting previously unselected package black. Preparing to unpack .../29-black_24.4.0-2_all.deb ... Unpacking black (24.4.0-2) ... Selecting previously unselected package libdebhelper-perl. Preparing to unpack .../30-libdebhelper-perl_13.15.3_all.deb ... Unpacking libdebhelper-perl (13.15.3) ... Selecting previously unselected package libtool. Preparing to unpack .../31-libtool_2.4.7-7_all.deb ... Unpacking libtool (2.4.7-7) ... Selecting previously unselected package dh-autoreconf. Preparing to unpack .../32-dh-autoreconf_20_all.deb ... Unpacking dh-autoreconf (20) ... Selecting previously unselected package libarchive-zip-perl. Preparing to unpack .../33-libarchive-zip-perl_1.68-1_all.deb ... Unpacking libarchive-zip-perl (1.68-1) ... Selecting previously unselected package libsub-override-perl. Preparing to unpack .../34-libsub-override-perl_0.10-1_all.deb ... Unpacking libsub-override-perl (0.10-1) ... Selecting previously unselected package libfile-stripnondeterminism-perl. Preparing to unpack .../35-libfile-stripnondeterminism-perl_1.13.1-1_all.deb ... Unpacking libfile-stripnondeterminism-perl (1.13.1-1) ... Selecting previously unselected package dh-strip-nondeterminism. Preparing to unpack .../36-dh-strip-nondeterminism_1.13.1-1_all.deb ... Unpacking dh-strip-nondeterminism (1.13.1-1) ... Selecting previously unselected package libelf1t64:amd64. Preparing to unpack .../37-libelf1t64_0.191-1+b1_amd64.deb ... Unpacking libelf1t64:amd64 (0.191-1+b1) ... Selecting previously unselected package dwz. Preparing to unpack .../38-dwz_0.15-1+b1_amd64.deb ... Unpacking dwz (0.15-1+b1) ... Selecting previously unselected package libicu72:amd64. Preparing to unpack .../39-libicu72_72.1-4+b1_amd64.deb ... Unpacking libicu72:amd64 (72.1-4+b1) ... Selecting previously unselected package libxml2:amd64. Preparing to unpack .../40-libxml2_2.9.14+dfsg-1.3+b2_amd64.deb ... Unpacking libxml2:amd64 (2.9.14+dfsg-1.3+b2) ... Selecting previously unselected package gettext. Preparing to unpack .../41-gettext_0.21-14+b1_amd64.deb ... Unpacking gettext (0.21-14+b1) ... Selecting previously unselected package intltool-debian. Preparing to unpack .../42-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 .../43-po-debconf_1.0.21+nmu1_all.deb ... Unpacking po-debconf (1.0.21+nmu1) ... Selecting previously unselected package debhelper. Preparing to unpack .../44-debhelper_13.15.3_all.deb ... Unpacking debhelper (13.15.3) ... Selecting previously unselected package python3-lib2to3. Preparing to unpack .../45-python3-lib2to3_3.12.3-1_all.deb ... Unpacking python3-lib2to3 (3.12.3-1) ... Selecting previously unselected package python3-distutils. Preparing to unpack .../46-python3-distutils_3.12.3-1_all.deb ... Unpacking python3-distutils (3.12.3-1) ... Selecting previously unselected package python3-setuptools. Preparing to unpack .../47-python3-setuptools_68.1.2-2_all.deb ... Unpacking python3-setuptools (68.1.2-2) ... Selecting previously unselected package dh-python. Preparing to unpack .../48-dh-python_6.20240422_all.deb ... Unpacking dh-python (6.20240422) ... Selecting previously unselected package libdevmapper1.02.1:amd64. Preparing to unpack .../49-libdevmapper1.02.1_2%3a1.02.196-1+b1_amd64.deb ... Unpacking libdevmapper1.02.1:amd64 (2:1.02.196-1+b1) ... Selecting previously unselected package dmsetup. Preparing to unpack .../50-dmsetup_2%3a1.02.196-1+b1_amd64.deb ... Unpacking dmsetup (2:1.02.196-1+b1) ... Selecting previously unselected package python3-toml. Preparing to unpack .../51-python3-toml_0.10.2-1_all.deb ... Unpacking python3-toml (0.10.2-1) ... Selecting previously unselected package python3-isort. Preparing to unpack .../52-python3-isort_5.6.4-1_all.deb ... Unpacking python3-isort (5.6.4-1) ... Selecting previously unselected package isort. Preparing to unpack .../53-isort_5.6.4-1_all.deb ... Unpacking isort (5.6.4-1) ... Selecting previously unselected package libjs-jquery. Preparing to unpack .../54-libjs-jquery_3.6.1+dfsg+~3.5.14-1_all.deb ... Unpacking libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... Selecting previously unselected package libjs-underscore. Preparing to unpack .../55-libjs-underscore_1.13.4~dfsg+~1.11.4-3_all.deb ... Unpacking libjs-underscore (1.13.4~dfsg+~1.11.4-3) ... Selecting previously unselected package libjs-sphinxdoc. Preparing to unpack .../56-libjs-sphinxdoc_7.2.6-6_all.deb ... Unpacking libjs-sphinxdoc (7.2.6-6) ... Selecting previously unselected package liblua5.4-0:amd64. Preparing to unpack .../57-liblua5.4-0_5.4.6-3+b1_amd64.deb ... Unpacking liblua5.4-0:amd64 (5.4.6-3+b1) ... Selecting previously unselected package libparted2t64:amd64. Preparing to unpack .../58-libparted2t64_3.6-4_amd64.deb ... Adding 'diversion of /lib/x86_64-linux-gnu/libparted.so.2 to /lib/x86_64-linux-gnu/libparted.so.2.usr-is-merged by libparted2t64' Adding 'diversion of /lib/x86_64-linux-gnu/libparted.so.2.0.5 to /lib/x86_64-linux-gnu/libparted.so.2.0.5.usr-is-merged by libparted2t64' Unpacking libparted2t64:amd64 (3.6-4) ... Selecting previously unselected package libpython3.12-stdlib:amd64. Preparing to unpack .../59-libpython3.12-stdlib_3.12.3-1_amd64.deb ... Unpacking libpython3.12-stdlib:amd64 (3.12.3-1) ... Selecting previously unselected package libyaml-0-2:amd64. Preparing to unpack .../60-libyaml-0-2_0.2.5-1_amd64.deb ... Unpacking libyaml-0-2:amd64 (0.2.5-1) ... Selecting previously unselected package pandoc-data. Preparing to unpack .../61-pandoc-data_3.1.3-1_all.deb ... Unpacking pandoc-data (3.1.3-1) ... Selecting previously unselected package pandoc. Preparing to unpack .../62-pandoc_3.1.3+ds-3_amd64.deb ... Unpacking pandoc (3.1.3+ds-3) ... Selecting previously unselected package python3-astroid. Preparing to unpack .../63-python3-astroid_3.1.0-1_all.deb ... Unpacking python3-astroid (3.1.0-1) ... Selecting previously unselected package python3-logilab-common. Preparing to unpack .../64-python3-logilab-common_2.0.0-1_all.deb ... Unpacking python3-logilab-common (2.0.0-1) ... Selecting previously unselected package python3-dill. Preparing to unpack .../65-python3-dill_0.3.8-1_all.deb ... Unpacking python3-dill (0.3.8-1) ... Selecting previously unselected package python3-mccabe. Preparing to unpack .../66-python3-mccabe_0.7.0-1_all.deb ... Unpacking python3-mccabe (0.7.0-1) ... Selecting previously unselected package python3-tomlkit. Preparing to unpack .../67-python3-tomlkit_0.12.4-1_all.deb ... Unpacking python3-tomlkit (0.12.4-1) ... Selecting previously unselected package pylint. Preparing to unpack .../68-pylint_3.0.3-1_all.deb ... Unpacking pylint (3.0.3-1) ... Selecting previously unselected package python3.12. Preparing to unpack .../69-python3.12_3.12.3-1_amd64.deb ... Unpacking python3.12 (3.12.3-1) ... Selecting previously unselected package python3-all. Preparing to unpack .../70-python3-all_3.11.8-1_amd64.deb ... Unpacking python3-all (3.11.8-1) ... Selecting previously unselected package python3-pycodestyle. Preparing to unpack .../71-python3-pycodestyle_2.11.1-1_all.deb ... Unpacking python3-pycodestyle (2.11.1-1) ... Selecting previously unselected package python3-pyflakes. Preparing to unpack .../72-python3-pyflakes_3.2.0-1_all.deb ... Unpacking python3-pyflakes (3.2.0-1) ... Selecting previously unselected package python3-flake8. Preparing to unpack .../73-python3-flake8_7.0.0-1_all.deb ... Unpacking python3-flake8 (7.0.0-1) ... Selecting previously unselected package python3-pyparsing. Preparing to unpack .../74-python3-pyparsing_3.1.2-1_all.deb ... Unpacking python3-pyparsing (3.1.2-1) ... Selecting previously unselected package python3-httplib2. Preparing to unpack .../75-python3-httplib2_0.20.4-3_all.deb ... Unpacking python3-httplib2 (0.20.4-3) ... Selecting previously unselected package python3-parted. Preparing to unpack .../76-python3-parted_3.13.0-1_amd64.deb ... Unpacking python3-parted (3.13.0-1) ... Setting up media-types (10.1.0) ... Setting up libpipeline1:amd64 (1.5.7-2) ... Setting up libicu72:amd64 (72.1-4+b1) ... Setting up bsdextrautils (2.40-6) ... Setting up libmagic-mgc (1:5.45-3) ... Setting up libarchive-zip-perl (1.68-1) ... Setting up libyaml-0-2:amd64 (0.2.5-1) ... Setting up libdebhelper-perl (13.15.3) ... Setting up libmagic1t64:amd64 (1:5.45-3) ... Setting up libpython3.12-minimal:amd64 (3.12.3-1) ... Setting up gettext-base (0.21-14+b1) ... Setting up m4 (1.4.19-4) ... Setting up file (1:5.45-3) ... Setting up libelf1t64:amd64 (0.191-1+b1) ... Setting up tzdata (2024a-3) ... Current default time zone: 'Etc/UTC' Local time is now: Thu Apr 25 08:30:40 UTC 2024. Universal Time is now: Thu Apr 25 08:30:40 UTC 2024. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up autotools-dev (20220109.1) ... Setting up autopoint (0.21-14) ... Setting up autoconf (2.71-3) ... Setting up dwz (0.15-1+b1) ... Setting up sensible-utils (0.0.22) ... Setting up libuchardet0:amd64 (0.0.8-1+b1) ... Setting up liblua5.4-0:amd64 (5.4.6-3+b1) ... Setting up libsub-override-perl (0.10-1) ... Setting up netbase (6.4) ... Setting up pandoc-data (3.1.3-1) ... Setting up libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... Setting up dmidecode (3.5-3) ... Setting up openssl (3.2.1-3) ... Setting up readline-common (8.2-4) ... Setting up libxml2:amd64 (2.9.14+dfsg-1.3+b2) ... Setting up libjs-underscore (1.13.4~dfsg+~1.11.4-3) ... 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.13.1-1) ... Setting up python3.12-minimal (3.12.3-1) ... Setting up gettext (0.21-14+b1) ... Setting up libtool (2.4.7-7) ... Setting up intltool-debian (0.35.0+20060710.6) ... Setting up dh-autoreconf (20) ... Setting up ca-certificates (20240203) ... Updating certificates in /etc/ssl/certs... 146 added, 0 removed; done. Setting up pandoc (3.1.3+ds-3) ... Setting up libjs-sphinxdoc (7.2.6-6) ... Setting up libreadline8t64:amd64 (8.2-4) ... Setting up dh-strip-nondeterminism (1.13.1-1) ... Setting up groff-base (1.23.0-3+b1) ... Setting up libpython3.12-stdlib:amd64 (3.12.3-1) ... Setting up po-debconf (1.0.21+nmu1) ... Setting up libpython3.11-stdlib:amd64 (3.11.9-1) ... Setting up python3.12 (3.12.3-1) ... Setting up man-db (2.12.1-1) ... Not building database; man-db/auto-update is not 'true'. Setting up libpython3-stdlib:amd64 (3.11.8-1) ... Setting up python3.11 (3.11.9-1) ... Setting up debhelper (13.15.3) ... Setting up python3 (3.11.8-1) ... Setting up python3-platformdirs (4.2.0-1) ... Setting up python3-pycodestyle (2.11.1-1) ... Setting up python3-packaging (24.0-1) ... Setting up python3-pyparsing (3.1.2-1) ... Setting up python3-dill (0.3.8-1) ... Setting up python3-typing-extensions (4.10.0-1) ... Setting up python3-toml (0.10.2-1) ... Setting up python3-isort (5.6.4-1) ... Setting up python3-httplib2 (0.20.4-3) ... Setting up python3-mccabe (0.7.0-1) ... Setting up python3-tomlkit (0.12.4-1) ... Setting up python3-pathspec (0.12.1-1) ... Setting up python3-lib2to3 (3.12.3-1) ... Setting up python3-pkg-resources (68.1.2-2) ... Setting up python3-distutils (3.12.3-1) ... python3.12: can't get files for byte-compilation Setting up python3-setuptools (68.1.2-2) ... Setting up python3-colorama (0.4.6-4) ... Setting up python3-mypy-extensions (1.0.0-1) ... Setting up python3-pyflakes (3.2.0-1) ... Setting up python3-all (3.11.8-1) ... Setting up python3-click (8.1.7-1) ... Setting up isort (5.6.4-1) ... Setting up python3-flake8 (7.0.0-1) ... Setting up python3-astroid (3.1.0-1) ... Setting up dh-python (6.20240422) ... Setting up python3-logilab-common (2.0.0-1) ... Setting up black (24.4.0-2) ... Setting up pylint (3.0.3-1) ... Setting up libdevmapper1.02.1:amd64 (2:1.02.196-1+b1) ... Setting up dmsetup (2:1.02.196-1+b1) ... Setting up libparted2t64:amd64 (3.6-4) ... Removing 'diversion of /lib/x86_64-linux-gnu/libparted.so.2 to /lib/x86_64-linux-gnu/libparted.so.2.usr-is-merged by libparted2t64' Removing 'diversion of /lib/x86_64-linux-gnu/libparted.so.2.0.5 to /lib/x86_64-linux-gnu/libparted.so.2.0.5.usr-is-merged by libparted2t64' Setting up python3-parted (3.13.0-1) ... Processing triggers for libc-bin (2.37-18) ... Processing triggers for ca-certificates (20240203) ... Updating certificates in /etc/ssl/certs... 0 added, 0 removed; done. Running hooks in /etc/ca-certificates/update.d... done. 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/image-factory-1.0.2/ && 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 > ../image-factory_1.0.2-1.1_source.changes dpkg-buildpackage: info: source package image-factory dpkg-buildpackage: info: source version 1.0.2-1.1 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by Josef Schneider dpkg-source --before-build . dpkg-buildpackage: info: host architecture amd64 dpkg-source: info: using options from image-factory-1.0.2/debian/source/options: --extend-diff-ignore=^.github/workflows/ci.yaml$ debian/rules clean dh clean --with python3 dh_auto_clean make -j20 clean make[1]: Entering directory '/build/reproducible-path/image-factory-1.0.2' rm -f *.1 make[1]: Leaving directory '/build/reproducible-path/image-factory-1.0.2' dh_clean debian/rules binary dh binary --with python3 dh_update_autotools_config dh_autoreconf dh_auto_configure dh_auto_build make -j20 "INSTALL=install --strip-program=true" make[1]: Entering directory '/build/reproducible-path/image-factory-1.0.2' pandoc -s -t man image-factory.1.md -o image-factory.1 pandoc -s -t man image-factory-sudo-helper.1.md -o image-factory-sudo-helper.1 make[1]: Leaving directory '/build/reproducible-path/image-factory-1.0.2' dh_auto_test make -j20 check make[1]: Entering directory '/build/reproducible-path/image-factory-1.0.2' python3 -m unittest discover -v test_black (tests.test_black.BlackTestCase.test_black) Test: Run black code formatter on Python source code. ... Running following command: black --check --diff -l 99 image-factory tests ok test_empty_config (tests.test_cli.TestCLI.test_empty_config) Test empty configuration file. ... ok test_example_config (tests.test_cli.TestCLI.test_example_config) Test exapmle image-factory.conf file. ... ok test_override_cache_dir (tests.test_cli.TestCLI.test_override_cache_dir) Test overriding the cache directory. ... ok test_flake8 (tests.test_flake8.Flake8TestCase.test_flake8) Test: Run flake8 on Python source code. ... Running following command: /usr/bin/python3 -m flake8 --max-line-length=99 image-factory tests ok test_invalid (tests.test_helper.TestParseBytes.test_invalid) Test parse_bytes("invalid") ... ok test_parse_1_g (tests.test_helper.TestParseBytes.test_parse_1_g) Test parse_bytes("1G") ... ok test_parse_2_tb (tests.test_helper.TestParseBytes.test_parse_2_tb) Test parse_bytes("2 TB") ... ok test_parse_512_mib (tests.test_helper.TestParseBytes.test_parse_512_mib) Test parse_bytes("512 MiB") ... ok test_isort (tests.test_isort.IsortTestCase.test_isort) Test: Run isort on Python source code. ... Running following command: isort --check-only --diff -l 99 image-factory tests ok test_pylint (tests.test_pylint.PylintTestCase.test_pylint) Test: Run pylint on Python source code. ... Running following command: /usr/bin/python3 -m pylint --rcfile=/build/reproducible-path/image-factory-1.0.2/tests/pylint.conf -- image-factory tests FAIL test_chmod_dnf_log (tests.test_sudo_helper.TestSudoHelper.test_chmod_dnf_log) Test read access for dnf log file. ... ok test_chmod_log_file (tests.test_sudo_helper.TestSudoHelper.test_chmod_log_file) Test read access for mounted /var/log/... ... ok test_chmod_recursive (tests.test_sudo_helper.TestSudoHelper.test_chmod_recursive) Test chmod recursively ... ok test_chmod_remove_root (tests.test_sudo_helper.TestSudoHelper.test_chmod_remove_root) Test chmod remove mounted /root permission ... ok test_chmod_root (tests.test_sudo_helper.TestSudoHelper.test_chmod_root) Test chmod mounted /root ... ok test_chmod_var_log (tests.test_sudo_helper.TestSudoHelper.test_chmod_var_log) Test write access for mounted /var/log/... ... ok test_mount (tests.test_sudo_helper.TestSudoHelper.test_mount) Test mounting. ... ok test_reject_escaping (tests.test_sudo_helper.TestSudoHelper.test_reject_escaping) Test rejecting ../../etc/shadow. ... ok test_umount (tests.test_sudo_helper.TestSudoHelper.test_umount) Test unmounting. ... ok ====================================================================== FAIL: test_pylint (tests.test_pylint.PylintTestCase.test_pylint) Test: Run pylint on Python source code. ---------------------------------------------------------------------- Traceback (most recent call last): File "/build/reproducible-path/image-factory-1.0.2/tests/test_pylint.py", line 74, in test_pylint self.fail("\n".join(msgs)) AssertionError: pylint exited with code 17 and has unexpected output on stderr: Exception on node in file '/build/reproducible-path/image-factory-1.0.2/image-factory' Traceback (most recent call last): File "/usr/lib/python3/dist-packages/pylint/utils/ast_walker.py", line 91, in walk callback(astroid) File "/usr/lib/python3/dist-packages/pylint/checkers/variables.py", line 1642, in visit_name self._loopvar_name(node) File "/usr/lib/python3/dist-packages/pylint/checkers/variables.py", line 2550, in _loopvar_name if astmts[i].statement().parent_of(stmt) and not utils.in_for_else_branch( ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/astroid/nodes/node_ng.py", line 297, in statement return self.parent.statement() ^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/astroid/nodes/scoped_nodes/scoped_nodes.py", line 414, in statement raise StatementMissing(target=self) astroid.exceptions.StatementMissing: Statement not found on Can't write the issue template for the crash in /build/reproducible-path/image-factory-1.0.2/debian/.debhelper/generated/_source/home/.cache/pylint/pylint-crash-2024-04-24-20-34-40.txt because of: '[Errno 2] No such file or directory: '/build/reproducible-path/image-factory-1.0.2/debian/.debhelper/generated/_source/home/.cache/pylint/pylint-crash-2024-04-24-20-34-40.txt'' Here's the content anyway: First, please verify that the bug is not already filled: https://github.com/pylint-dev/pylint/issues/ Then create a new issue: https://github.com/pylint-dev/pylint/issues/new?labels=Crash 💥%2CNeeds triage 📥 Issue title: Crash ```` (if possible, be more specific about what made pylint crash) ### Bug description When parsing the following ``a.py``: ```python #!/usr/bin/python3 # Copyright (C) 2014-2020, IONOS SE # Author: Benjamin Drung # # Permission to use, copy, modify, and/or distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # pylint: disable=invalid-name # pylint: enable=invalid-name import argparse import configparser import datetime import errno import glob import hashlib import logging import os import re import shutil import stat import subprocess import sys import tempfile import httplib2 import parted DEFAULT_IMAGE_SIZE = "2G" DEFAULT_LOGGING_FORMAT = "%(asctime)s %(name)s [%(process)d] %(levelname)s: %(message)s" GUEST_HTTP_SERVER = "10.0.2.4" _UNSET = object() LOSETUP = "/sbin/losetup" ZEROFREE = "/usr/sbin/zerofree" __logger_name__ = os.path.basename(sys.argv[0]) if __name__ == "__main__" else __name__ def get_config(): """Return a config parser object. The configuration is tried to be read in this order: 1) User configuration file: ~/.config/image-factory.conf 2) System configuration file: /etc/image-factory.conf You can override the usage of the configuration files from point 1 and 2 by specifying a configuration file in the IMAGE_FACTORY_CONFIG environment variable. """ config = configparser.ConfigParser(interpolation=configparser.ExtendedInterpolation()) env_name = "IMAGE_FACTORY_CONFIG" if env_name in os.environ: config_files = [os.environ[env_name]] if not os.path.isfile(config_files[0]): raise FileNotFoundError( "'" + config_files[0] + "' (set in " + env_name + ") is not a valid file." ) else: config_files = [ "/etc/image-factory.conf", os.path.expanduser("~/.config/image-factory.conf"), ] config.read(config_files) return config def call_command(command, as_root=False): """Run a given command and check if the command returns 0. Otherwise fail.""" if as_root and os.getuid() != 0: command = ["sudo", "image-factory-sudo-helper"] + command escaped_command = [] for argument in command: if " " in argument: escaped_command.append('"' + argument.replace('"', r"\"") + '"') else: escaped_command.append(argument) logger = logging.getLogger(__logger_name__) logger.info("Calling %s", " ".join(escaped_command)) return_code = subprocess.call(command) if return_code != 0: logger.error("'%s' failed with exit code %i.", " ".join(command), return_code) sys.exit(return_code) def create_raw_image(filename, size): """Create a virtual raw image.""" cmd = ["qemu-img", "create", "-f", "raw", filename, size] call_command(cmd) def create_url(image): return "http://" + GUEST_HTTP_SERVER + "/" + image def get_default_cache_dir(): """Return the default cache directory.""" if os.getuid() == 0: cache_dir = "/var/cache/image-factory" else: cache_dir = "~/.cache/image-factory" return cache_dir def cache_file(cache_dir, source): """Cache a file locally and return the relative location of the cached file.""" logger = logging.getLogger(__logger_name__) if not os.path.exists(cache_dir): logger.info("Creating directory %s", cache_dir) os.makedirs(cache_dir) relative_destination = os.path.basename(source) destination = os.path.join(cache_dir, relative_destination) if source.startswith("file:") or source.startswith("/"): logger.info("Copying '%s' to cache '%s'...", source, destination) shutil.copy(source, destination) elif source.startswith("http:") or source.startswith("https:"): logger.info("Downloading %s...", source) http_client = httplib2.Http(cache_dir) http_client.ignore_etag = True (response, content) = http_client.request(source) if response.fromcache: logger.info("Copy cached download to %s...", destination) else: logger.info("Save download to %s...", destination) with open(destination, "wb") as cached_file: cached_file.write(content) elif source.startswith("rsync:"): call_command(["rsync", "--no-motd", source, destination]) else: raise ValueError(f"No download handler for file '{source}' found.") return relative_destination def download_and_publish(config, image, source, filename): destination = os.path.join(config.get("http", "path"), image, filename) target_dir = os.path.dirname(destination) logger = logging.getLogger(__logger_name__) if not os.path.exists(target_dir): logger.info("Creating directory %s", target_dir) os.makedirs(target_dir) if source.startswith("file:") or source.startswith("/"): logger.info("Copying %s to %s", source, destination) shutil.copyfile(source, destination) elif source.startswith("http:") or source.startswith("https:"): logger.info("Downloading %s...", source) http_client = httplib2.Http(os.path.join(config[image]["cache_dir"], image)) http_client.ignore_etag = True (response, content) = http_client.request(source) if response.fromcache: logger.info("Copy cached download to %s...", destination) else: logger.info("Save download to %s...", destination) with open(destination, "wb") as cached_file: cached_file.write(content) elif source.startswith("rsync:"): call_command(["rsync", "--no-motd", source, destination]) else: raise ValueError(f"No download handler for file '{source}' found.") return destination def check_one_partition(partitions, image): """Checks that the image has only one partition. The image-handler (that adds the root password and SSH keys to instantiate the template) requires that there is only one partition in the image. """ if len(partitions) != 1: if partitions: msg = f"{len(partitions)} partitions ({', '.join(partitions)})" else: msg = "no partitions" logger = logging.getLogger(__logger_name__) logger.error("Expected exactly one partition in %s, but found %s.", image, msg) sys.exit(1) def parse_bytes(data): """Parse bytes from given string. The SI prefixes (kB, MB, etc.) and binary prefixes (KiB, MiB, etc.) are supported. For backward compatibility, the units K, M, and G are mapped to KiB, MiB, and GiB. """ match = re.match(r"^([0-9]+)\s*([kMGTPE]?B|[KMGTPE]iB|[KMGTPE])$", data.strip()) if not match: raise ValueError( f"Failed to parse bytes from '{data}'. " "Please use SI or binary prefixes for bytes (e.g. '2 GB' or '512 MiB')." ) value = int(match.group(1)) unit = match.group(2) if unit.endswith("iB"): value *= 1 << (10 * {"KiB": 1, "MiB": 2, "GiB": 3, "TiB": 4, "PiB": 5, "EiB": 6}[unit]) elif unit.endswith("B"): value *= 10 ** (3 * {"": 0, "kB": 1, "MB": 2, "GB": 3, "TB": 4, "PB": 5, "EB": 6}[unit]) else: value *= 1 << (10 * {"K": 1, "M": 2, "G": 3, "T": 4, "P": 5, "E": 6}[unit]) return value def get_session(): """Return the session to use with virt-install.""" if os.getuid() == 0: session = "qemu:///system" else: session = "qemu:///session" return session def run_installation(config, image, image_name): # pylint: disable=too-many-locals cores = config.get(image, "cores", fallback="1") ram_in_mib = parse_bytes(config.get(image, "ram")) >> 20 cache_dir = os.path.join(config[image]["cache_dir"], image) if config.has_option(image, "installer_image"): installer_image = cache_file(cache_dir, config.get(image, "installer_image")) location = os.path.join(cache_dir, installer_image) else: initrd = cache_file(cache_dir, config.get(image, "initrd")) kernel = cache_file(cache_dir, config.get(image, "linux")) location = f"{cache_dir},kernel={kernel},initrd={initrd}" append = config.get(image, "append", fallback="") if config.has_option(image, "preseed"): initrd_inject = config.get(image, "preseed") append = f"preseed/url=file:///{os.path.basename(initrd_inject)} {append}" if config.has_option(image, "kickstart"): initrd_inject = config.get(image, "kickstart") append = f"ks=file:///{os.path.basename(initrd_inject)} {append}" append = f"inst.ks=file:///{os.path.basename(initrd_inject)} {append}" if config.has_option(image, "yast"): initrd_inject = config.get(image, "yast") append = f"autoyast=file:///{os.path.basename(initrd_inject)} {append}" network = "user,model=virtio" if config.has_option(image, "mac"): network += ",mac=" + config.get(image, "mac") graphics = "none" if config.has_option(image, "vnc"): listen, port = config.get(image, "vnc").split(":") graphics = f"vnc,port={5900 + int(port)}" if listen: graphics += f",listen={listen}" session = get_session() cmd = [ "virt-install", "--connect", session, "--noreboot", "--wait", "-1", "--name", image_name, "--vcpus", cores, "--memory", str(ram_in_mib), "--disk", "path=" + image_name + ",bus=virtio,format=raw", "--network", network, "--graphics", graphics, "--console", "pty,target_type=serial", "--noautoconsole", "--location", location, "--extra-args", append, "--initrd-inject", initrd_inject, ] try: call_command(cmd) except KeyboardInterrupt: call_command(["virsh", "-c", session, "destroy", image_name]) raise finally: call_command(["virsh", "-c", session, "undefine", image_name]) def open_as_user(filename, encoding): # pylint: disable=consider-using-with try: fileobject = open(filename, encoding=encoding) except IOError as error: if error.errno == errno.EACCES: call_command(["chmod", "o+r", filename], as_root=True) fileobject = open(filename, encoding=encoding) else: raise return fileobject def remove(path, recursive=False): logger = logging.getLogger(__logger_name__) parent_dir = os.path.dirname(path) missing_permission = not os.access(parent_dir, os.W_OK) if missing_permission: # Assert that others cannot write (so we correct remove the other write bits later again) assert os.stat(parent_dir).st_mode & stat.S_IWOTH == 0 call_command(["chmod", "o+w", parent_dir], as_root=True) try: if os.path.isdir(path): logger.info("Removing directory %s", path) if recursive: call_command(["chmod", "-R", "o+rwx", path], as_root=True) shutil.rmtree(path) else: os.rmdir(path) else: logger.info("Removing file %s", path) os.remove(path) finally: if missing_permission: call_command(["chmod", "o-w", parent_dir], as_root=True) def remove_logs(tmpdir, print_installer_logs): root_dir = os.path.join(tmpdir, "root") missing_permission = not os.access(root_dir, os.W_OK) if missing_permission: # Assert that others cannot read/write/execute. # Then we can correctly remove the permissions again later (without altering the state). assert os.stat(root_dir).st_mode & (stat.S_IROTH | stat.S_IWOTH | stat.S_IXOTH) == 0 call_command(["chmod", "o+rwx", root_dir], as_root=True) try: # Fix read permission for log directories (that we will remove later) check_directories = glob.glob(os.path.join(tmpdir, "var/adm/autoinstall/*")) + glob.glob( os.path.join(tmpdir, "var/log/YaST2") ) for directory in check_directories: if os.path.isdir(directory) and not os.access(directory, os.R_OK): call_command(["chmod", "-R", "o+rx", directory], as_root=True) # Print installer logs installer_logs = ( glob.glob(os.path.join(tmpdir, "root/anaconda-ks.cfg")) + glob.glob(os.path.join(tmpdir, "var/adm/autoinstall/logs/*")) + glob.glob(os.path.join(tmpdir, "var/log/anaconda.*")) + glob.glob(os.path.join(tmpdir, "var/log/anaconda/*")) + glob.glob(os.path.join(tmpdir, "var/log/installer/syslog")) + glob.glob(os.path.join(tmpdir, "var/log/YaST2/y2log")) ) if print_installer_logs: logger = logging.getLogger(__logger_name__) for installer_log in installer_logs: content = open_as_user(installer_log, encoding="utf-8").read() logger.info("Content of /%s:\n%s", os.path.relpath(installer_log, tmpdir), content) # Remove installer logs remove_log_globs = [ "root/anaconda-ks.cfg", "root/install.log*", "var/adm/autoinstall", "var/lib/YaST2", "var/log/anaconda", "var/log/installer", "var/log/YaST2", ] for log_glob in remove_log_globs: for log in glob.glob(os.path.join(tmpdir, log_glob)): remove(log, recursive=True) finally: if missing_permission: call_command(["chmod", "o-rwx", root_dir], as_root=True) def post_installation(script_name, image, print_installer_logs): logger = logging.getLogger(__logger_name__) device = parted.getDevice(image) try: disk = parted.Disk(device) except parted.DiskLabelException as error: logger.error("Failed to read the disk %s. Maybe the disk is still empty?", error) sys.exit(1) check_one_partition(disk.partitions, image) partition = disk.partitions[0] offset = partition.geometry.start * device.sectorSize loopdev = None try: cmd = [LOSETUP, "-o", str(offset), "--show", "-f", image] logger.info("Calling %s", " ".join(cmd)) with subprocess.Popen(cmd, stdout=subprocess.PIPE) as process: loopdev = process.communicate()[0].decode().strip() tmpdir = tempfile.mkdtemp(prefix=script_name + ".") call_command(["mount", loopdev, tmpdir], as_root=True) try: remove_logs(tmpdir, print_installer_logs) finally: call_command(["umount", tmpdir], as_root=True) shutil.rmtree(tmpdir) call_command([ZEROFREE, loopdev]) finally: if loopdev: cmd = [LOSETUP, "-d", loopdev] logger.info("Calling %s", " ".join(cmd)) return_code = subprocess.call(cmd) if return_code != 0: logger.warning("losetup failed with exit code %i.", return_code) def create_hashsum(image): logger = logging.getLogger(__logger_name__) logger.info("Calculating SHA 256 sum of %s...", image) with open(image, "rb") as image_file: sha256_sum = hashlib.sha256(image_file.read()).hexdigest() logger.info("SHA 256 sum of %s: %s", image, sha256_sum) with open(image + ".sha256sum", "w", encoding="utf-8") as checksum_file: checksum_file.write(sha256_sum + " " + image + "\n") def create_qcow2(image, keep_raw_image): qcow2_name = os.path.splitext(image)[0] + ".qcow2" call_command(["qemu-img", "convert", "-O", "qcow2", image, qcow2_name]) if not keep_raw_image: try: logger = logging.getLogger(__logger_name__) logger.info("Removing %s...", image) os.remove(image) except FileNotFoundError: pass create_hashsum(qcow2_name) return qcow2_name def upload_image(config, image, image_file, checksum_file): """Try to upload image. Upload the image to all destinatons that are listed in 'upload_destinations'. The 'upload_destinations' variable is a comma-separated list of sections. To disable the upload, let 'upload_destinations' undefined or set to an empty string. Every section has to set 'upload_type' and 'upload_target'. You could specify 'upload_args', 'post-upload-command', and 'post-upload-command' with a number suffix (counting up from 1). ${image} can be used as parameter in post-upload-command. """ logger = logging.getLogger(__logger_name__) destinations = config.get(image, "upload_destinations", fallback="").split(",") for destination in [d.strip() for d in destinations if d.strip() != ""]: try: upload_type = config.get(destination, "upload_type") except (configparser.NoOptionError, configparser.NoSectionError): logger.error( "No 'upload_type' defined in the upload destination section '%s'.", destination ) sys.exit(1) if upload_type.lower() == "rsync": try: upload_target = config.get(destination, "upload_target") except (configparser.NoOptionError, configparser.NoSectionError): logger.error( "No 'upload_target' defined in the upload destination section '%s'.", destination, ) sys.exit(1) command = ["rsync"] if config.has_option(destination, "upload_args"): command += [ a for a in config.get(destination, "upload_args").split(" ") if a.strip() != "" ] command += [image_file, checksum_file, upload_target] call_command(command) logger.info("Successfully uploaded " + image_file + " to " + upload_target) if config.has_option(destination, "post-upload-command"): config.set(destination, "image", image_file) command = [ a for a in config.get(destination, "post-upload-command").split(" ") if a.strip() != "" ] call_command(command) i = 1 while config.has_option(destination, "post-upload-command" + str(i)): config.set(destination, "image", image_file) command = config.get(destination, "post-upload-command" + str(i)) command = [a for a in command.split(" ") if a.strip() != ""] call_command(command) i += 1 else: logger.error("Unknown upload type '%s' specified. Supported types: rsync", upload_type) sys.exit(1) def parse_args(argv): """Parse the command line arguments.""" parser = argparse.ArgumentParser() parser.add_argument( "image", nargs="?", default=os.environ.get("IMAGE"), help="Image to build (date and suffix will be added).", ) parser.add_argument( "-c", "--cache-dir", help=f"Cache directory (default: {get_default_cache_dir()})" ) parser.add_argument( "-f", "--format", choices=["qcow2", "raw"], help="Image format to use (default: raw)" ) parser.add_argument("--image-size", help="Size of the raw image (default: 2G)") parser.add_argument("--mac", help="MAC address used in the installation machine") parser.add_argument( "--installer-logs", dest="installer_logs", action="store_true", default=None, help="Print installer logs into logging output", ) parser.add_argument( "--no-installer-logs", dest="installer_logs", action="store_false", default=None, help="Do not print installer logs into logging output", ) parser.add_argument( "--log-file", dest="log_file", action="store_true", default=None, help="Store logs into a file (in addition to stdout/stderr)", ) parser.add_argument( "--no-log-file", dest="log_file", action="store_false", default=None, help="Do not store logs into a file (in addition to stdout/stderr)", ) parser.add_argument("--log-filename", help="log into specified file") args = parser.parse_args(argv) if not args.image: parser.error("No image specified.") return args def override_configs_by_args(config, args): """Override the configs from the configuration by arguments from the command line. The command line argument take precedence over the configs from the config file. """ if args.image not in config: config[args.image] = {} image_conf = config[args.image] if args.cache_dir is not None: image_conf["cache_dir"] = args.cache_dir if args.mac is not None: image_conf["mac"] = args.mac if args.format is not None: image_conf["format"] = args.format if args.image_size is not None: image_conf["image-size"] = args.image_size if args.installer_logs is not None: image_conf["installer-logs"] = str(args.installer_logs) if args.log_file is not None: image_conf["log-file"] = str(args.log_file) if args.log_filename is not None: image_conf["log-filename"] = args.log_filename if "cache_dir" not in image_conf: image_conf["cache_dir"] = get_default_cache_dir() return config def main(): args = parse_args(sys.argv[1:]) config = get_config() missing_image_section = args.image not in config override_configs_by_args(config, args) image_conf = config[args.image] image_conf["cache_dir"] = os.path.expanduser(image_conf["cache_dir"]) logger = logging.getLogger(__logger_name__) logging.basicConfig(format=DEFAULT_LOGGING_FORMAT, level=logging.INFO) if image_conf.getboolean("log-file", fallback=False): if "log-filename" in image_conf: log_filename = image_conf["log-filename"] else: log_filename = args.image + "-" + datetime.date.today().isoformat() + ".log" file_handler = logging.FileHandler(log_filename, mode="w") file_handler.setFormatter(logging.Formatter(DEFAULT_LOGGING_FORMAT)) logger.addHandler(file_handler) # Check that configuration for installer_image or (initrd and linux) exists if "installer_image" not in image_conf: required_options = ["initrd", "linux"] missing_options = [option for option in required_options if option not in image_conf] if missing_options: if missing_image_section: logger.error("No section '%s' defined in image-factory.conf.", args.image) else: for option in missing_options: logger.error( "No option '%s' or 'installer_image' defined in section '%s' " "in image-factory.conf.", option, args.image, ) sys.exit(1) image = args.image + "-" + datetime.date.today().isoformat() + ".raw" create_raw_image(image, image_conf.get("image-size", DEFAULT_IMAGE_SIZE)) run_installation(config, args.image, image) post_installation( os.path.basename(sys.argv[0]), image, image_conf.getboolean("installer-logs", fallback=False), ) if image_conf["format"] == "qcow2": image = create_qcow2(image, image_conf.getboolean("keep-raw", fallback=False)) else: create_hashsum(image) logger.info("Successfully created %s", image) upload_image(config, args.image, image, image + ".sha256sum") if config.has_option(args.image, "post-build-command"): cmd = [config.get(args.image, "post-build-command"), image] call_command(cmd) if __name__ == "__main__": try: main() except KeyboardInterrupt: print("User abort.") ``` ### Command used ```shell pylint a.py ``` ### Pylint output
pylint crashed with a ``AstroidError`` and with the following stacktrace: ```python Traceback (most recent call last): File "/usr/lib/python3/dist-packages/pylint/lint/pylinter.py", line 788, in _lint_file check_astroid_module(module) File "/usr/lib/python3/dist-packages/pylint/lint/pylinter.py", line 1017, in check_astroid_module retval = self._check_astroid_module( ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/pylint/lint/pylinter.py", line 1069, in _check_astroid_module walker.walk(node) File "/usr/lib/python3/dist-packages/pylint/utils/ast_walker.py", line 94, in walk self.walk(child) File "/usr/lib/python3/dist-packages/pylint/utils/ast_walker.py", line 94, in walk self.walk(child) File "/usr/lib/python3/dist-packages/pylint/utils/ast_walker.py", line 94, in walk self.walk(child) [Previous line repeated 1 more time] File "/usr/lib/python3/dist-packages/pylint/utils/ast_walker.py", line 91, in walk callback(astroid) File "/usr/lib/python3/dist-packages/pylint/checkers/variables.py", line 1642, in visit_name self._loopvar_name(node) File "/usr/lib/python3/dist-packages/pylint/checkers/variables.py", line 2550, in _loopvar_name if astmts[i].statement().parent_of(stmt) and not utils.in_for_else_branch( ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/astroid/nodes/node_ng.py", line 297, in statement return self.parent.statement() ^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/astroid/nodes/scoped_nodes/scoped_nodes.py", line 414, in statement raise StatementMissing(target=self) astroid.exceptions.StatementMissing: Statement not found on The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/usr/lib/python3/dist-packages/pylint/lint/pylinter.py", line 752, in _lint_files self._lint_file(fileitem, module, check_astroid_module) File "/usr/lib/python3/dist-packages/pylint/lint/pylinter.py", line 790, in _lint_file raise astroid.AstroidError from e astroid.exceptions.AstroidError ```
### Expected behavior No crash. ### Pylint version ```shell pylint 3.0.3 astroid 3.1.0 Python 3.11.9 (main, Apr 10 2024, 13:16:36) [GCC 13.2.0] ``` ### OS / Environment linux (Linux) ### Additional dependencies . pylint found issues: ************* Module image-factory image-factory:1:0: F0002: image-factory: Fatal error while checking 'image-factory'. Please open an issue in our bug tracker so we address this. There is a pre-filled template that you can use in '/build/reproducible-path/image-factory-1.0.2/debian/.debhelper/generated/_source/home/.cache/pylint/pylint-crash-2024-04-24-20-34-40.txt'. (astroid-error) ************* Module tests tests/__init__.py:17:0: C0413: Import "import inspect" should be placed at the top of the module (wrong-import-position) tests/__init__.py:18:0: C0413: Import "import os" should be placed at the top of the module (wrong-import-position) tests/__init__.py:19:0: C0413: Import "import unittest" should be placed at the top of the module (wrong-import-position) tests/__init__.py:17:0: C0411: standard import "import inspect" should be placed before "import httplib2" (wrong-import-order) tests/__init__.py:18:0: C0411: standard import "import os" should be placed before "import httplib2" (wrong-import-order) tests/__init__.py:19:0: C0411: standard import "import unittest" should be placed before "import httplib2" (wrong-import-order) tests/__init__.py:18:0: C0412: Imports from package os are not grouped (ungrouped-imports) ---------------------------------------------------------------------- Ran 20 tests in 75.146s FAILED (failures=1) make[1]: *** [Makefile:13: check] Error 1 make[1]: Leaving directory '/build/reproducible-path/image-factory-1.0.2' dh_auto_test: error: make -j20 check returned exit code 2 make: *** [debian/rules:4: binary] Error 25 dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2 I: copying local configuration E: Failed autobuilding of package 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/600638 and its subdirectories Thu Apr 25 08:35:13 UTC 2024 W: No second build log, what happened?