Diff of the two buildlogs: -- --- b1/build.log 2024-04-27 02:44:42.380176961 +0000 +++ b2/build.log 2024-04-27 02:45:29.862148446 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Thu May 29 21:07:02 -12 2025 -I: pbuilder-time-stamp: 1748596022 +I: Current time: Sat Apr 27 16:44:45 +14 2024 +I: pbuilder-time-stamp: 1714185885 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/trixie-reproducible-base.tgz] I: copying local configuration @@ -25,52 +25,84 @@ dpkg-source: info: unpacking ruby-http-form-data_2.3.0-1.debian.tar.xz I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/3867210/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/2164764/tmp/hooks/D01_modify_environment starting +debug: Running on codethink02-arm64. +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 Apr 27 02:44 /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/2164764/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/2164764/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='arm64' - DEBIAN_FRONTEND='noninteractive' + 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]="21" [3]="1" [4]="release" [5]="aarch64-unknown-linux-gnu") + BASH_VERSION='5.2.21(1)-release' + BUILDDIR=/build/reproducible-path + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=arm64 + DEBIAN_FRONTEND=noninteractive DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=12 ' - DISTRIBUTION='trixie' - HOME='/root' - HOST_ARCH='arm64' + DIRSTACK=() + DISTRIBUTION=trixie + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=aarch64 + HOST_ARCH=arm64 IFS=' ' - INVOCATION_ID='30d93d372cd541e79c0ceeb63fbbeac1' - 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='3867210' - PS1='# ' - PS2='> ' + INVOCATION_ID=6fe8add88d01446bb5174982650da72d + LANG=C + LANGUAGE=nl_BE:nl + LC_ALL=C + MACHTYPE=aarch64-unknown-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=2164764 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.hInjYQEJ/pbuilderrc_AWyI --distribution trixie --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/trixie-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.hInjYQEJ/b1 --logfile b1/build.log ruby-http-form-data_2.3.0-1.dsc' - SUDO_GID='109' - SUDO_UID='104' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' - http_proxy='http://192.168.101.4: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.hInjYQEJ/pbuilderrc_nkeN --distribution trixie --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/trixie-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.hInjYQEJ/b2 --logfile b2/build.log ruby-http-form-data_2.3.0-1.dsc' + SUDO_GID=109 + SUDO_UID=104 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://192.168.101.4:3128 I: uname -a - Linux codethink03-arm64 6.1.0-20-cloud-arm64 #1 SMP Debian 6.1.85-1 (2024-04-11) aarch64 GNU/Linux + Linux i-capture-the-hostname 6.1.0-20-cloud-arm64 #1 SMP Debian 6.1.85-1 (2024-04-11) aarch64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 May 24 13:38 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/3867210/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 Apr 21 07:15 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/2164764/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -400,7 +432,7 @@ Get: 153 http://deb.debian.org/debian trixie/main arm64 ruby-rspec-expectations all 3.13.0c0e0m0s1-2 [90.2 kB] Get: 154 http://deb.debian.org/debian trixie/main arm64 ruby-rspec-mocks all 3.13.0c0e0m0s1-2 [81.3 kB] Get: 155 http://deb.debian.org/debian trixie/main arm64 ruby-rspec all 3.13.0c0e0m0s1-2 [5184 B] -Fetched 50.4 MB in 0s (156 MB/s) +Fetched 50.4 MB in 0s (158 MB/s) debconf: delaying package configuration, since apt-utils is not installed dpkg: libssl3:arm64: dependency problems, but removing anyway as you requested: libkrb5-3:arm64 depends on libssl3 (>= 3.0.0). @@ -920,8 +952,8 @@ Setting up tzdata (2024a-3) ... Current default time zone: 'Etc/UTC' -Local time is now: Fri May 30 09:07:25 UTC 2025. -Universal Time is now: Fri May 30 09:07:25 UTC 2025. +Local time is now: Sat Apr 27 02:45:09 UTC 2024. +Universal Time is now: Sat Apr 27 02:45:09 UTC 2024. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up autotools-dev (20220109.1) ... @@ -1061,7 +1093,11 @@ Building tag database... -> Finished parsing the build-deps I: Building the package -I: Running cd /build/reproducible-path/ruby-http-form-data-2.3.0/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S > ../ruby-http-form-data_2.3.0-1_source.changes +I: user script /srv/workspace/pbuilder/2164764/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for trixie +I: user script /srv/workspace/pbuilder/2164764/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/reproducible-path/ruby-http-form-data-2.3.0/ && 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 > ../ruby-http-form-data_2.3.0-1_source.changes dpkg-buildpackage: info: source package ruby-http-form-data dpkg-buildpackage: info: source version 2.3.0-1 dpkg-buildpackage: info: source distribution unstable @@ -1129,84 +1165,49 @@ All examples were filtered out; ignoring {:focus=>true} -Randomized with seed 58198 +Randomized with seed 58281 -HTTP::FormData::Multipart - #boundary - returns a new boundary - with user-defined boundary - returns the given boundary - #rewind - rewinds the multipart data IO - .generate_boundary - returns a string suitable as a multipart boundary +HTTP::FormData::Urlencoded #size returns bytesize of multipart data - #read - returns multipart data - #to_s - rewinds content - properly generates multipart data - with content type set to nil - doesn't include a filename - with user-defined boundary - uses the given boundary - with filename set to nil - doesn't include a filename #content_type - is expected to match /^multipart\/form-data; boundary=(?-mix:-{21}[a-f0-9]{42})$/ - with user-defined boundary - includes the given boundary - #content_length - is expected to eq 449 - -HTTP::FormData::Urlencoded - with custom instance level encoder - uses encoder passed to initializer + is expected to eq "application/x-www-form-urlencoded" #to_s - rewinds content is expected to eq "foo%5Bbar%5D=test" + rewinds content with unicode chars is expected to eq "foo%5Bbar%5D=%D1%82%D0%B5%D1%81%D1%82" - #content_type - is expected to eq "application/x-www-form-urlencoded" - #content_length - is expected to eq 17 - with unicode chars - is expected to eq 37 + #read + returns multipart data + with custom instance level encoder + uses encoder passed to initializer #rewind rewinds the multipart data IO .encoder= switches form encoder implementation - #size - returns bytesize of multipart data - #read - returns multipart data + #content_length + is expected to eq 17 + with unicode chars + is expected to eq 37 -HTTP::FormData::Part - #rewind - when body given as String - rewinds the underlying IO object - #filename - is expected to eq nil - when it was given with options - is expected to eq "foobar.txt" +HTTP::FormData::File #content_type - is expected to eq nil + is expected to eq "application/octet-stream" when it was given with options is expected to eq "application/json" #to_s - when body given as String - is expected to eq "\u043F\u0440\u0438\u0432\u0435\u0442 \u043C\u0438\u0440!" + when file given as File + rewinds content + is expected to eq "The HTTP Gem is an easy-to-use client library for making requests from Ruby.\n" + when file given as a String + is expected to eq "The HTTP Gem is an easy-to-use client library for making requests from Ruby.\n" + rewinds content + when file given as IO rewinds content - #size - when body given as a String - is expected to eq 20 - #read - when body given as String is expected to eq "\u043F\u0440\u0438\u0432\u0435\u0442 \u043C\u0438\u0440!" - -HTTP::FormData::File + when file given as a Pathname + rewinds content + is expected to eq "The HTTP Gem is an easy-to-use client library for making requests from Ruby.\n" #size when file given as IO is expected to eq 20 @@ -1216,71 +1217,103 @@ is expected to eq 77 when file given as File is expected to eq 77 - #rewind - when file given as a String - rewinds the underlying IO object - when file given as a Pathname - rewinds the underlying IO object - when file given as IO - rewinds the underlying IO object - when file given as File - rewinds the underlying IO object - #content_type - is expected to eq "application/octet-stream" - when it was given with options - is expected to eq "application/json" #read when file given as File is expected to eq "The HTTP Gem is an easy-to-use client library for making requests from Ruby.\n" when file given as a String is expected to eq "The HTTP Gem is an easy-to-use client library for making requests from Ruby.\n" - when file given as IO - is expected to eq "\u043F\u0440\u0438\u0432\u0435\u0442 \u043C\u0438\u0440!" - when file given as a Pathname - is expected to eq "The HTTP Gem is an easy-to-use client library for making requests from Ruby.\n" - #mime_type - should be an alias of #content_type - #to_s - when file given as a String - rewinds content - is expected to eq "The HTTP Gem is an easy-to-use client library for making requests from Ruby.\n" - when file given as File - rewinds content - is expected to eq "The HTTP Gem is an easy-to-use client library for making requests from Ruby.\n" when file given as a Pathname - rewinds content is expected to eq "The HTTP Gem is an easy-to-use client library for making requests from Ruby.\n" when file given as IO is expected to eq "\u043F\u0440\u0438\u0432\u0435\u0442 \u043C\u0438\u0440!" - rewinds content #filename - when file given as IO - is expected to eq "stream-4460" + when file given as a String + is expected to eq "the-http-gem.info" and filename given with options is expected to eq "foobar.txt" when file given as a Pathname is expected to eq "the-http-gem.info" and filename given with options is expected to eq "foobar.txt" - when file given as a String - is expected to eq "the-http-gem.info" + when file given as IO + is expected to eq "stream-4440" and filename given with options is expected to eq "foobar.txt" when file given as File is expected to eq "the-http-gem.info" and filename given with options is expected to eq "foobar.txt" + #rewind + when file given as File + rewinds the underlying IO object + when file given as a Pathname + rewinds the underlying IO object + when file given as IO + rewinds the underlying IO object + when file given as a String + rewinds the underlying IO object + #mime_type + should be an alias of #content_type + +HTTP::FormData::Multipart + #read + returns multipart data + #size + returns bytesize of multipart data + #rewind + rewinds the multipart data IO + .generate_boundary + returns a string suitable as a multipart boundary + #to_s + properly generates multipart data + rewinds content + with filename set to nil + doesn't include a filename + with content type set to nil + doesn't include a filename + with user-defined boundary + uses the given boundary + #boundary + returns a new boundary + with user-defined boundary + returns the given boundary + #content_type + is expected to match /^multipart\/form-data; boundary=(?-mix:-{21}[a-f0-9]{42})$/ + with user-defined boundary + includes the given boundary + #content_length + is expected to eq 449 + +HTTP::FormData::CompositeIO + #initialize + fails if an IO is neither a String nor an IO + accepts IOs and strings + #rewind + rewinds all IOs + #size + returns sum of all IO sizes + returns 0 when there are no IOs + #read + returns nil when no partial data was retrieved with a buffer + returns data in binary encoding + reads partial data + reads all data + reads data in bytes + reads partial data with a buffer + returns nil when no partial data was retrieved + fills the buffer with retrieved content + returns empty string when no data was retrieved HTTP::FormData .ensure_hash when nil given is expected to eq {} - when Hash given - is expected to eq {:foo=>:bar} when neither Hash nor #to_h given fails with HTTP::FormData::Error when #to_h given is expected to eq {:foo=>:bar} + when Hash given + is expected to eq {:foo=>:bar} .create when form has file in an array param is expected to be a kind of HTTP::FormData::Multipart @@ -1289,66 +1322,69 @@ when form has no files is expected to be a kind of HTTP::FormData::Urlencoded -HTTP::FormData::CompositeIO - #read - reads partial data with a buffer - returns nil when no partial data was retrieved with a buffer - fills the buffer with retrieved content - reads all data - reads data in bytes - returns data in binary encoding - returns nil when no partial data was retrieved - reads partial data - returns empty string when no data was retrieved +HTTP::FormData::Part #rewind - rewinds all IOs + when body given as String + rewinds the underlying IO object + #to_s + when body given as String + is expected to eq "\u043F\u0440\u0438\u0432\u0435\u0442 \u043C\u0438\u0440!" + rewinds content + #read + when body given as String + is expected to eq "\u043F\u0440\u0438\u0432\u0435\u0442 \u043C\u0438\u0440!" + #filename + is expected to eq nil + when it was given with options + is expected to eq "foobar.txt" + #content_type + is expected to eq nil + when it was given with options + is expected to eq "application/json" #size - returns sum of all IO sizes - returns 0 when there are no IOs - #initialize - fails if an IO is neither a String nor an IO - accepts IOs and strings + when body given as a String + is expected to eq 20 -Top 10 slowest examples (0.01641 seconds, 31.5% of total time): - HTTP::FormData::Multipart#boundary with user-defined boundary returns the given boundary - 0.00627 seconds ./spec/lib/http/form_data/multipart_spec.rb:146 - HTTP::FormData::File#filename when file given as a Pathname and filename given with options is expected to eq "foobar.txt" - 0.00326 seconds ./spec/lib/http/form_data/file_spec.rb:171 - HTTP::FormData.ensure_hash when neither Hash nor #to_h given fails with HTTP::FormData::Error - 0.00147 seconds ./spec/lib/http/form_data_spec.rb:45 - HTTP::FormData::Multipart#boundary returns a new boundary - 0.00131 seconds ./spec/lib/http/form_data/multipart_spec.rb:137 +Top 10 slowest examples (0.01425 seconds, 29.8% of total time): + HTTP::FormData::Urlencoded#rewind rewinds the multipart data IO + 0.00501 seconds ./spec/lib/http/form_data/urlencoded_spec.rb:52 + HTTP::FormData::CompositeIO#read reads data in bytes + 0.00279 seconds ./spec/lib/http/form_data/composite_io_spec.rb:80 + HTTP::FormData::CompositeIO#initialize fails if an IO is neither a String nor an IO + 0.00151 seconds ./spec/lib/http/form_data/composite_io_spec.rb:14 + HTTP::FormData::Urlencoded#size returns bytesize of multipart data + 0.00106 seconds ./spec/lib/http/form_data/urlencoded_spec.rb:40 + HTTP::FormData::Multipart.generate_boundary returns a string suitable as a multipart boundary + 0.00096 seconds ./spec/lib/http/form_data/multipart_spec.rb:153 HTTP::FormData.create when form has file in an array param is expected to be a kind of HTTP::FormData::Multipart - 0.00096 seconds ./spec/lib/http/form_data_spec.rb:21 - HTTP::FormData::Multipart#read returns multipart data - 0.00086 seconds ./spec/lib/http/form_data/multipart_spec.rb:99 - HTTP::FormData::Multipart#rewind rewinds the multipart data IO - 0.00065 seconds ./spec/lib/http/form_data/multipart_spec.rb:105 + 0.00091 seconds ./spec/lib/http/form_data_spec.rb:21 HTTP::FormData.ensure_hash when #to_h given is expected to eq {:foo=>:bar} - 0.0006 seconds ./spec/lib/http/form_data_spec.rb:35 - HTTP::FormData::Multipart#content_type is expected to match /^multipart\/form-data; boundary=(?-mix:-{21}[a-f0-9]{42})$/ - 0.00053 seconds ./spec/lib/http/form_data/multipart_spec.rb:117 + 0.00062 seconds ./spec/lib/http/form_data_spec.rb:35 HTTP::FormData::Multipart#to_s rewinds content - 0.0005 seconds ./spec/lib/http/form_data/multipart_spec.rb:33 + 0.00049 seconds ./spec/lib/http/form_data/multipart_spec.rb:33 + HTTP::FormData::Multipart#read returns multipart data + 0.00047 seconds ./spec/lib/http/form_data/multipart_spec.rb:99 + HTTP::FormData::Multipart#size returns bytesize of multipart data + 0.00045 seconds ./spec/lib/http/form_data/multipart_spec.rb:93 Top 6 slowest example groups: - HTTP::FormData::Multipart - 0.00122 seconds average (0.01712 seconds / 14 examples) ./spec/lib/http/form_data/multipart_spec.rb:3 + HTTP::FormData::Urlencoded + 0.00094 seconds average (0.01037 seconds / 11 examples) ./spec/lib/http/form_data/urlencoded_spec.rb:4 HTTP::FormData - 0.00087 seconds average (0.00611 seconds / 7 examples) ./spec/lib/http/form_data_spec.rb:3 + 0.00065 seconds average (0.00454 seconds / 7 examples) ./spec/lib/http/form_data_spec.rb:3 + HTTP::FormData::Multipart + 0.00058 seconds average (0.00818 seconds / 14 examples) ./spec/lib/http/form_data/multipart_spec.rb:3 + HTTP::FormData::CompositeIO + 0.00053 seconds average (0.00745 seconds / 14 examples) ./spec/lib/http/form_data/composite_io_spec.rb:3 HTTP::FormData::File - 0.00053 seconds average (0.01646 seconds / 31 examples) ./spec/lib/http/form_data/file_spec.rb:4 - HTTP::FormData::Urlencoded - 0.00039 seconds average (0.00426 seconds / 11 examples) ./spec/lib/http/form_data/urlencoded_spec.rb:4 + 0.00043 seconds average (0.01325 seconds / 31 examples) ./spec/lib/http/form_data/file_spec.rb:4 HTTP::FormData::Part - 0.00035 seconds average (0.00314 seconds / 9 examples) ./spec/lib/http/form_data/part_spec.rb:3 - HTTP::FormData::CompositeIO - 0.00027 seconds average (0.00381 seconds / 14 examples) ./spec/lib/http/form_data/composite_io_spec.rb:3 + 0.00035 seconds average (0.00316 seconds / 9 examples) ./spec/lib/http/form_data/part_spec.rb:3 -Finished in 0.05201 seconds (files took 0.31395 seconds to load) +Finished in 0.0479 seconds (files took 0.30555 seconds to load) 86 examples, 0 failures -Randomized with seed 58198 +Randomized with seed 58281 Coverage report generated for RSpec to /build/reproducible-path/ruby-http-form-data-2.3.0/coverage. 192 / 194 LOC (98.97%) covered. [Coveralls] Outside the CI environment, not sending data. @@ -1385,12 +1421,14 @@ dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: including full source code in upload I: copying local configuration +I: user script /srv/workspace/pbuilder/2164764/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/2164764/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/3867210 and its subdirectories -I: Current time: Thu May 29 21:07:40 -12 2025 -I: pbuilder-time-stamp: 1748596060 +I: removing directory /srv/workspace/pbuilder/2164764 and its subdirectories +I: Current time: Sat Apr 27 16:45:28 +14 2024 +I: pbuilder-time-stamp: 1714185928