Diff of the two buildlogs: -- --- b1/build.log 2024-05-23 05:34:41.601998274 +0000 +++ b2/build.log 2024-05-23 05:36:54.716320401 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Wed May 22 17:30:48 -12 2024 -I: pbuilder-time-stamp: 1716442248 +I: Current time: Thu Jun 26 01:57:44 +14 2025 +I: pbuilder-time-stamp: 1750852664 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz] I: copying local configuration @@ -25,52 +25,84 @@ dpkg-source: info: unpacking ruby-wisper_2.0.1-2.debian.tar.xz I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/1725708/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/2076984/tmp/hooks/D01_modify_environment starting +debug: Running on ionos15-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 Jun 25 11:57 /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/2076984/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/2076984/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' + 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]="x86_64-pc-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=amd64 + DEBIAN_FRONTEND=noninteractive + DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=42 ' + DIRSTACK=() + DISTRIBUTION=unstable + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=x86_64 + HOST_ARCH=amd64 IFS=' ' - INVOCATION_ID='92a853dac0974a428b8c0994574af3b0' - 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='1725708' - PS1='# ' - PS2='> ' + INVOCATION_ID=b38f477d27b4408181d22a49b2c50341 + 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=2076984 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.3SrWitAs/pbuilderrc_WuUm --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.3SrWitAs/b1 --logfile b1/build.log ruby-wisper_2.0.1-2.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' + 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.3SrWitAs/pbuilderrc_PjoV --distribution unstable --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.3SrWitAs/b2 --logfile b2/build.log ruby-wisper_2.0.1-2.dsc' + SUDO_GID=111 + SUDO_UID=106 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://213.165.73.152:3128 I: uname -a - Linux ionos1-amd64 6.1.0-21-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.90-1 (2024-05-03) x86_64 GNU/Linux + Linux i-capture-the-hostname 6.7.12+bpo-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.7.12-1~bpo12+1 (2024-05-06) x86_64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 May 21 07:43 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/1725708/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 Jun 24 14:05 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/2076984/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -272,7 +304,7 @@ Get: 156 http://deb.debian.org/debian unstable/main amd64 ruby-rspec-expectations all 3.13.0c0e0m0s1-2 [90.2 kB] Get: 157 http://deb.debian.org/debian unstable/main amd64 ruby-rspec-mocks all 3.13.0c0e0m0s1-2 [81.3 kB] Get: 158 http://deb.debian.org/debian unstable/main amd64 ruby-rspec all 3.13.0c0e0m0s1-2 [5184 B] -Fetched 44.5 MB in 9s (4769 kB/s) +Fetched 44.5 MB in 1s (38.4 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 ... 19718 files and directories currently installed.) @@ -794,8 +826,8 @@ Setting up tzdata (2024a-4) ... Current default time zone: 'Etc/UTC' -Local time is now: Thu May 23 05:33:38 UTC 2024. -Universal Time is now: Thu May 23 05:33:38 UTC 2024. +Local time is now: Wed Jun 25 11:59:30 UTC 2025. +Universal Time is now: Wed Jun 25 11:59:30 UTC 2025. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up autotools-dev (20220109.1) ... @@ -938,7 +970,11 @@ Building tag database... -> Finished parsing the build-deps I: Building the package -I: Running cd /build/reproducible-path/ruby-wisper-2.0.1/ && 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-wisper_2.0.1-2_source.changes +I: user script /srv/workspace/pbuilder/2076984/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for unstable +I: user script /srv/workspace/pbuilder/2076984/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/reproducible-path/ruby-wisper-2.0.1/ && 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-wisper_2.0.1-2_source.changes dpkg-buildpackage: info: source package ruby-wisper dpkg-buildpackage: info: source version 2.0.1-2 dpkg-buildpackage: info: source distribution unstable @@ -967,13 +1003,13 @@ dh_prep -O--buildsystem=ruby dh_auto_install --destdir=debian/ruby-wisper/ -O--buildsystem=ruby dh_ruby --install /build/reproducible-path/ruby-wisper-2.0.1/debian/ruby-wisper -/usr/bin/ruby3.1 -S gem build --config-file /dev/null --verbose /tmp/d20240522-1796207-jkwnlr/gemspec +/usr/bin/ruby3.1 -S gem build --config-file /dev/null --verbose /tmp/d20250626-2106779-x4qrjl/gemspec Failed to load /dev/null because it doesn't contain valid YAML hash Successfully built RubyGem Name: wisper Version: 2.0.1 File: wisper-2.0.1.gem -/usr/bin/ruby3.1 -S gem install --config-file /dev/null --verbose --local --verbose --no-document --ignore-dependencies --install-dir debian/ruby-wisper/usr/share/rubygems-integration/all /tmp/d20240522-1796207-jkwnlr/wisper-2.0.1.gem +/usr/bin/ruby3.1 -S gem install --config-file /dev/null --verbose --local --verbose --no-document --ignore-dependencies --install-dir debian/ruby-wisper/usr/share/rubygems-integration/all /tmp/d20250626-2106779-x4qrjl/wisper-2.0.1.gem Failed to load /dev/null because it doesn't contain valid YAML hash /build/reproducible-path/ruby-wisper-2.0.1/debian/ruby-wisper/usr/share/rubygems-integration/all/gems/wisper-2.0.1/lib/wisper.rb /build/reproducible-path/ruby-wisper-2.0.1/debian/ruby-wisper/usr/share/rubygems-integration/all/gems/wisper-2.0.1/lib/wisper/broadcasters/logger_broadcaster.rb @@ -1024,207 +1060,207 @@ All examples were filtered out; ignoring {:focus=>true} -Randomized with seed 17679 +Randomized with seed 57001 + +Wisper::Broadcasters::LoggerBroadcaster + unit tests: + #broadcast + without arguments + logs published event + delegates broadcast to a given broadcaster + with arguments + delegates broadcast to a given broadcaster + logs published event and arguments + when argument is an integer + logs published event and arguments + when argument is a hash + logs published event and arguments + integration tests: + broadcasts the event to the listener + +simple publishing + subscribes listener to events Wisper - .configuration - is memorized - returns configuration object .clear clears all global listeners - .setup - sets a default broadcaster - .unsubscribe - removes listener from list of listeners - removes listeners from list of listeners - .configure - passes configuration to given block - .publisher - returns the Publisher module .subscribe when given block subscribes listeners to all events for duration of the block when no block given subscribes listeners to all events subscribes listener to all events + .configure + passes configuration to given block + .unsubscribe + removes listeners from list of listeners + removes listener from list of listeners + .setup + sets a default broadcaster + .publisher + returns the Publisher module + .configuration + returns configuration object + is memorized -Wisper::Configuration::Broadcasters - broadcasters - #to_h - returns a Hash +Wisper::Broadcasters::SendBroadcaster + #broadcast + without arguments + sends event to listener without any arguments + with arguments + sends event to listener with arguments -simple publishing - subscribes listener to events +Wisper::GlobalListeners + .clear clears all global listeners + .listeners + returns an immutable collection + returns collection of global listeners + .subscribe + adds given listener to every publisher + can be scoped to classes + works along side local listeners + is threadsafe + works with options Wisper::ValueObjects::Events - [:foo, "bar"] + "foo" #include? returns false otherwise - returns true for "bar" - returns true for "foo" - returns true for :bar returns true for :foo - another class - #include? - raises ArgumentError - "foo" + returns true for "foo" + by /foo/ #include? - returns false otherwise returns true for :foo + returns false otherwise returns true for "foo" :foo #include? returns false otherwise returns true for "foo" returns true for :foo - by /foo/ + [:foo, "bar"] #include? + returns true for :foo + returns true for "bar" returns false otherwise returns true for "foo" - returns true for :foo + returns true for :bar + another class + #include? + raises ArgumentError nil #include? returns true -Wisper::Configuration - broadcasters - #broadcasters returns empty collection - #broadcaster - adds given broadcaster - returns the configuration - #default_prefix= - sets the default value for prefixes - Wisper::TemporaryListeners .subscribe + clears registrations for the block which exits + globally subscribes listeners for duration of given block globally subscribes listeners for duration of nested block - is thread safe returns self - clears registrations for the block which exits + is thread safe globally subscribes listener for duration of given block clears registrations when an exception occurs - globally subscribes listeners for duration of given block - -Wisper::Broadcasters::LoggerBroadcaster - integration tests: - broadcasts the event to the listener - unit tests: - #broadcast - with arguments - delegates broadcast to a given broadcaster - logs published event and arguments - when argument is an integer - logs published event and arguments - when argument is a hash - logs published event and arguments - without arguments - delegates broadcast to a given broadcaster - logs published event - -Wisper::Publisher - .on - raise an error if no events given - raises an error of no block given - returns publisher so methods can be chained - returns publisher so methods can be chained - .broadcast - does not publish events which cannot be responded to - is alised as .publish - is not public - returns publisher - :event argument - is indifferent to dasherized and underscored strings - is indifferent to string and symbol - .listeners - returns an immutable collection - returns local listeners - .subscribe - subscribes given listener to all published events - returns publisher so methods can be chained - raises a helpful error if trying to pass a block - is aliased to .subscribe - :scope argument - scopes listener to given class string - includes all subclasses of given class - scopes listener to given class - :broadcaster argument - given an object which responds_to broadcast it uses object - given an unknown key it raises error - given nothing it uses the default broadcaster - given a key it uses a configured broadcaster - async alias - given false it uses configured default broadcaster - given true it uses configured async broadcaster - given an object which responds_to broadcast it uses object - :with argument - sets method to call listener with on event - :on argument - given an array - subscribes listener to events - given a regex - subscribes listener to matching events - given a string - subscribes listener to an event - given a symbol - subscribes listener to an event - given an unsupported argument - raises an error - :prefix argument - prefixes broadcast events with given symbol - prefixes broadcast events with "on" when given true - #subscribe - subscribes listener to all instances of publisher - -Wisper::Broadcasters::SendBroadcaster - #broadcast - without arguments - sends event to listener without any arguments - with arguments - sends event to listener with arguments - -Wisper::GlobalListeners - .clear clears all global listeners - .listeners - returns an immutable collection - returns collection of global listeners - .subscribe - adds given listener to every publisher - can be scoped to classes - works with options - is threadsafe - works along side local listeners Wisper::ValueObjects::Prefix is a string .new + without arguments + is expected to eq "" true is expected to eq "on_" "foo" is expected to eq "foo_" nil is expected to eq "" - without arguments - is expected to eq "" .default= - "foo" - changes default prefix nil doesn't change default prefix + "foo" + changes default prefix + +Wisper + subscribes object to all published events + subscribes block can be chained + maps events to different methods + +Wisper::Configuration::Broadcasters + broadcasters + #to_h + returns a Hash + +Wisper::Configuration + #default_prefix= + sets the default value for prefixes + broadcasters + #broadcasters returns empty collection + #broadcaster + returns the configuration + adds given broadcaster Wisper::ObjectRegistration broadcaster defaults to SendBroadcaster default is lazily evaluated -Wisper - subscribes object to all published events - subscribes block can be chained - maps events to different methods +Wisper::Publisher + .subscribe + is aliased to .subscribe + returns publisher so methods can be chained + raises a helpful error if trying to pass a block + subscribes given listener to all published events + :on argument + given a string + subscribes listener to an event + given an array + subscribes listener to events + given a symbol + subscribes listener to an event + given an unsupported argument + raises an error + given a regex + subscribes listener to matching events + :with argument + sets method to call listener with on event + :broadcaster argument + given a key it uses a configured broadcaster + given an unknown key it raises error + given an object which responds_to broadcast it uses object + given nothing it uses the default broadcaster + async alias + given false it uses configured default broadcaster + given true it uses configured async broadcaster + given an object which responds_to broadcast it uses object + :prefix argument + prefixes broadcast events with "on" when given true + prefixes broadcast events with given symbol + :scope argument + scopes listener to given class + includes all subclasses of given class + scopes listener to given class string + #subscribe + subscribes listener to all instances of publisher + .broadcast + returns publisher + is not public + does not publish events which cannot be responded to + is alised as .publish + :event argument + is indifferent to dasherized and underscored strings + is indifferent to string and symbol + .listeners + returns an immutable collection + returns local listeners + .on + raise an error if no events given + returns publisher so methods can be chained + returns publisher so methods can be chained + raises an error of no block given -Finished in 1.26 seconds (files took 0.976 seconds to load) +Finished in 1.32 seconds (files took 0.51565 seconds to load) 104 examples, 0 failures -Randomized with seed 17679 +Randomized with seed 57001 [Coveralls] Outside the CI environment, not sending data. @@ -1257,12 +1293,14 @@ dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: not including original source code in upload I: copying local configuration +I: user script /srv/workspace/pbuilder/2076984/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/2076984/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/1725708 and its subdirectories -I: Current time: Wed May 22 17:34:40 -12 2024 -I: pbuilder-time-stamp: 1716442480 +I: removing directory /srv/workspace/pbuilder/2076984 and its subdirectories +I: Current time: Thu Jun 26 01:59:54 +14 2025 +I: pbuilder-time-stamp: 1750852794