Diff of the two buildlogs: -- --- b1/build.log 2025-08-30 13:39:32.861246638 +0000 +++ b2/build.log 2025-08-30 13:40:56.841363418 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Sat Aug 30 01:38:21 -12 2025 -I: pbuilder-time-stamp: 1756561101 +I: Current time: Sat Oct 3 10:02:35 +14 2026 +I: pbuilder-time-stamp: 1790971355 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/forky-reproducible-base.tgz] I: copying local configuration @@ -22,52 +22,84 @@ dpkg-source: info: unpacking ruby-rspec-its_1.3.0-1.debian.tar.xz I: using fakeroot in build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/2560895/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/2589836/tmp/hooks/D01_modify_environment starting +debug: Running on infom02-amd64. +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 Oct 2 20:02 /bin/sh -> /bin/bash +I: Setting pbuilder2's login shell to /bin/bash +I: Setting pbuilder2's GECOS to second user,second room,second work-phone,second home-phone,second other +I: user script /srv/workspace/pbuilder/2589836/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/2589836/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=12 ' - DISTRIBUTION='forky' - HOME='/root' - HOST_ARCH='amd64' + BASH=/bin/sh + BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath + BASH_ALIASES=() + BASH_ARGC=() + BASH_ARGV=() + BASH_CMDS=() + BASH_LINENO=([0]="12" [1]="0") + BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:. + BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") + BASH_VERSINFO=([0]="5" [1]="2" [2]="37" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu") + BASH_VERSION='5.2.37(1)-release' + BUILDDIR=/build/reproducible-path + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=amd64 + DEBIAN_FRONTEND=noninteractive + DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=16 ' + DIRSTACK=() + DISTRIBUTION=forky + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=x86_64 + HOST_ARCH=amd64 IFS=' ' - INVOCATION_ID='9d366052e26948c9815bdb404d9757fc' - 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='2560895' - PS1='# ' - PS2='> ' + INVOCATION_ID=13f769e8fbb640d3aefea657eed07501 + LANG=C + LANGUAGE=et_EE:et + LC_ALL=C + MACHTYPE=x86_64-pc-linux-gnu + MAIL=/var/mail/root + OPTERR=1 + OPTIND=1 + OSTYPE=linux-gnu + PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path + PBCURRENTCOMMANDLINEOPERATION=build + PBUILDER_OPERATION=build + PBUILDER_PKGDATADIR=/usr/share/pbuilder + PBUILDER_PKGLIBDIR=/usr/lib/pbuilder + PBUILDER_SYSCONFDIR=/etc + PIPESTATUS=([0]="0") + POSIXLY_CORRECT=y + PPID=2589836 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.VPWkM8Di/pbuilderrc_VSMD --distribution forky --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/forky-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.VPWkM8Di/b1 --logfile b1/build.log ruby-rspec-its_1.3.0-1.dsc' - SUDO_GID='109' - SUDO_HOME='/var/lib/jenkins' - SUDO_UID='104' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' + 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.VPWkM8Di/pbuilderrc_9TsU --distribution forky --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/forky-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.VPWkM8Di/b2 --logfile b2/build.log ruby-rspec-its_1.3.0-1.dsc' + SUDO_GID=109 + SUDO_HOME=/var/lib/jenkins + SUDO_UID=104 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' I: uname -a - Linux infom01-amd64 6.12.41+deb13-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.41-1 (2025-08-12) x86_64 GNU/Linux + Linux i-capture-the-hostname 6.12.41+deb13-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.41-1 (2025-08-12) x86_64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 Aug 10 12:30 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/2560895/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 Aug 10 2025 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/2589836/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -234,7 +266,7 @@ Get: 123 http://deb.debian.org/debian forky/main amd64 ruby-rspec-expectations all 3.13.0c0e0m0s1-2 [90.2 kB] Get: 124 http://deb.debian.org/debian forky/main amd64 ruby-rspec-mocks all 3.13.0c0e0m0s1-2 [81.3 kB] Get: 125 http://deb.debian.org/debian forky/main amd64 ruby-rspec all 3.13.0c0e0m0s1-2 [5184 B] -Fetched 36.6 MB in 5s (7952 kB/s) +Fetched 36.6 MB in 1s (33.7 MB/s) Preconfiguring packages ... Selecting previously unselected package libexpat1:amd64. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 19855 files and directories currently installed.) @@ -653,8 +685,8 @@ Setting up tzdata (2025b-5) ... Current default time zone: 'Etc/UTC' -Local time is now: Sat Aug 30 13:39:20 UTC 2025. -Universal Time is now: Sat Aug 30 13:39:20 UTC 2025. +Local time is now: Fri Oct 2 20:03:27 UTC 2026. +Universal Time is now: Fri Oct 2 20:03:27 UTC 2026. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up ruby-minitest (5.25.4-3) ... @@ -774,7 +806,11 @@ fakeroot is already the newest version (1.37.1.2-1). 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. I: Building the package -I: Running cd /build/reproducible-path/ruby-rspec-its-1.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-rspec-its_1.3.0-1_source.changes +I: user script /srv/workspace/pbuilder/2589836/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for forky +I: user script /srv/workspace/pbuilder/2589836/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/reproducible-path/ruby-rspec-its-1.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-rspec-its_1.3.0-1_source.changes dpkg-buildpackage: info: source package ruby-rspec-its dpkg-buildpackage: info: source version 1.3.0-1 dpkg-buildpackage: info: source distribution unstable @@ -826,152 +862,64 @@ RUBYLIB=/build/reproducible-path/ruby-rspec-its-1.3.0/debian/ruby-rspec-its/usr/lib/ruby/vendor_ruby:. GEM_PATH=/build/reproducible-path/ruby-rspec-its-1.3.0/debian/ruby-rspec-its/usr/share/rubygems-integration/all:/var/lib/gems/3.3.0:/usr/local/lib/ruby/gems/3.3.0:/usr/lib/ruby/gems/3.3.0:/usr/lib/x86_64-linux-gnu/ruby/gems/3.3.0:/usr/share/rubygems-integration/3.3.0:/usr/share/rubygems-integration/all:/usr/lib/x86_64-linux-gnu/rubygems-integration/3.3.0 ruby3.3 -S rake --rakelibdir /gem2deb-nonexistent -f debian/ruby-tests.rake /usr/bin/ruby3.3 -I/usr/share/rubygems-integration/all/gems/rspec-support-3.13.1/lib:/usr/share/rubygems-integration/all/gems/rspec-core-3.13.0/lib /usr/share/rubygems-integration/all/gems/rspec-core-3.13.0/exe/rspec --pattern ./spec/\*\*/\*_spec.rb --format documentation -Randomized with seed 5676 +Randomized with seed 10643 RSpec::Its #its - with change observation - increment - is expected to change `subject.count` by at most 1 - increment - is expected to change `subject.count` by at least 1 - noop - is expected not to change `subject.count` - increment - is expected to change `subject.count` from 0 - increment - is expected to raise NotImplementedError with "`expect { }.not_to change { }.by()` is not supported" - increment - is expected to raise NotImplementedError with "`expect { }.not_to change { }.by_at_most()` is not supported" - increment - is expected to raise NotImplementedError with "`expect { }.not_to change { }.by_at_least()` is not supported" - noop - is expected not to change `subject.count` from 0 - increment - is expected to change `subject.count` by 1 - increment - is expected to change `subject.count` from 0 to 1 - #will with non block expectations - terminator - is expected to raise ArgumentError with "`will` only supports block expectations" - terminator - is expected to raise ArgumentError with "`will_not` only supports block expectations" - with implicit subject - preserves described_class - [] - is expected to equal RSpec::Its - symbol - is expected to equal RSpec::Its - with metadata - preserves access to metadata that ends in hash - [] - is expected to equal 17 - preserves access to metadata that doesn't end in hash - [] - is expected to equal true when expecting throws bad - is expected to throw :abort - bad is expected to throw :abort with "message" bad is expected to throw a Symbol - good - is expected not to throw a Symbol - when expecting errors - bad - is expected to raise ArgumentError with "message" bad - is expected to raise ArgumentError - bad -WARNING: Using the `raise_error` matcher without providing a specific error or message risks false positives, since `raise_error` will match when Ruby raises a `NoMethodError`, `NameError` or `ArgumentError`, potentially allowing the expectation to pass without even executing the method you are intending to call. Actual error raised was #. Instead consider providing a specific error class or message. This message can be suppressed by setting: `RSpec::Expectations.configuration.on_potential_false_positives = :nothing`. Called from /build/reproducible-path/ruby-rspec-its-1.3.0/lib/rspec/its.rb:148:in `will'. - is expected to raise Exception + is expected to throw :abort good - is expected not to raise Exception - bad - is expected to raise Exception with "message" + is expected not to throw a Symbol + with metadata + preserves access to metadata that doesn't end in hash + [] + is expected to equal true + preserves access to metadata that ends in hash + [] + is expected to equal 17 with explicit subject calling and overriding super calls to the subject defined in the parent group in shared_context name is expected to eq "Array" - when it responds to #[] - [:b, "c", 4] - is expected to eq "Symbol: b; String: c; Integer: 4" - name - is expected to eq "George" - [:a] - is expected to eq "Symbol: a" - ["a"] - is expected to eq "String: a" - when referring to an attribute that doesn't exist - it raises an error - age - is expected to raise NoMethodError - using will - age - is expected to raise NoMethodError - when it's a hash - when referring to a key that doesn't exist - [:a, :ghost] - is expected to be nil - [:deep, :ghost] - is expected to raise NoMethodError - using will - [:deep, :ghost] - is expected to raise NoMethodError - [:not_here] - is expected to be nil - [:a] - is expected to eq {:deep=>{:key=>"value"}} - [:a, :deep] - is expected to eq {:key=>"value"} - [:a, :deep, :key] - is expected to eq "value" - with false subject - false_if_first_time - is expected to equal false - with some metadata - call_count - is expected to eq 2 - when extending SharedContext - works with an implicit subject - with a call counter - call_count - is expected to eq 1 - with nil value - nil_value - is expected to be nil with nested attributes + using are_expected + name.chars.to_a + is expected to eq ["J", "o", "h", "n"] + name.size.class + is expected to eq Integer name is expected to eq "John" - name.size - is expected to eq 4 using will_not name is expected not to raise Exception + name.size + is expected to eq 4 using should_not name is expected not to eq "Paul" using is_expected name is expected to eq "John" - using are_expected - name.chars.to_a - is expected to eq ["J", "o", "h", "n"] - name.size.class - is expected to eq Integer with nil subject nil_if_first_time is expected to equal nil + with nil value + nil_value + is expected to be nil when it does not respond to #[] it raises an error - [:a] - is expected to raise NoMethodError using will [:a] is expected to raise NoMethodError + [:a] + is expected to raise NoMethodError accessing `subject` in `before` and `let` is expected to eq "my subject" @@ -981,20 +929,108 @@ is expected to eq "my subject" is expected to eq "my subject" + with some metadata + call_count + is expected to eq 2 + with false subject + false_if_first_time + is expected to equal false + when it responds to #[] + when it's a hash + when referring to a key that doesn't exist + using will + [:deep, :ghost] + is expected to raise NoMethodError + [:deep, :ghost] + is expected to raise NoMethodError + [:not_here] + is expected to be nil + [:a, :ghost] + is expected to be nil + [:a, :deep] + is expected to eq {:key=>"value"} + [:a, :deep, :key] + is expected to eq "value" + [:a] + is expected to eq {:deep=>{:key=>"value"}} + ["a"] + is expected to eq "String: a" + name + is expected to eq "George" + [:b, "c", 4] + is expected to eq "Symbol: b; String: c; Integer: 4" + when referring to an attribute that doesn't exist + it raises an error + using will + age + is expected to raise NoMethodError + age + is expected to raise NoMethodError + [:a] + is expected to eq "Symbol: a" + with a call counter + call_count + is expected to eq 1 + when extending SharedContext + works with an implicit subject + with implicit subject + preserves described_class + [] + is expected to equal RSpec::Its + symbol + is expected to equal RSpec::Its + when expecting errors + bad +WARNING: Using the `raise_error` matcher without providing a specific error or message risks false positives, since `raise_error` will match when Ruby raises a `NoMethodError`, `NameError` or `ArgumentError`, potentially allowing the expectation to pass without even executing the method you are intending to call. Actual error raised was #. Instead consider providing a specific error class or message. This message can be suppressed by setting: `RSpec::Expectations.configuration.on_potential_false_positives = :nothing`. Called from /build/reproducible-path/ruby-rspec-its-1.3.0/lib/rspec/its.rb:148:in `will'. + is expected to raise Exception + good + is expected not to raise Exception + bad + is expected to raise ArgumentError with "message" + bad + is expected to raise ArgumentError + bad + is expected to raise Exception with "message" with output capture + noop + is expected not to output "some error" to stderr stdout is expected to output "some output" to stdout stderr is expected to output "some error" to stderr noop is expected not to output "some output" to stdout + with change observation + increment + is expected to change `subject.count` by 1 + increment + is expected to change `subject.count` by at least 1 noop - is expected not to output "some error" to stderr + is expected not to change `subject.count` + increment + is expected to change `subject.count` from 0 to 1 + increment + is expected to change `subject.count` by at most 1 + increment + is expected to raise NotImplementedError with "`expect { }.not_to change { }.by_at_most()` is not supported" + increment + is expected to raise NotImplementedError with "`expect { }.not_to change { }.by()` is not supported" + noop + is expected not to change `subject.count` from 0 + increment + is expected to raise NotImplementedError with "`expect { }.not_to change { }.by_at_least()` is not supported" + increment + is expected to change `subject.count` from 0 + #will with non block expectations + terminator + is expected to raise ArgumentError with "`will` only supports block expectations" + terminator + is expected to raise ArgumentError with "`will_not` only supports block expectations" -Finished in 0.0777 seconds (files took 0.09651 seconds to load) +Finished in 0.21008 seconds (files took 0.20541 seconds to load) 63 examples, 0 failures -Randomized with seed 5676 +Randomized with seed 10643 ┌──────────────────────────────────────────────────────────────────────────────┐ @@ -1027,12 +1063,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/2589836/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/2589836/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/2560895 and its subdirectories -I: Current time: Sat Aug 30 01:39:32 -12 2025 -I: pbuilder-time-stamp: 1756561172 +I: removing directory /srv/workspace/pbuilder/2589836 and its subdirectories +I: Current time: Sat Oct 3 10:03:56 +14 2026 +I: pbuilder-time-stamp: 1790971436