Diff of the two buildlogs: -- --- b1/build.log 2024-04-03 14:25:48.653960158 +0000 +++ b2/build.log 2024-04-03 14:26:50.527302180 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Tue May 6 08:48:15 -12 2025 -I: pbuilder-time-stamp: 1746564495 +I: Current time: Thu Apr 4 04:25:51 +14 2024 +I: pbuilder-time-stamp: 1712154351 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/trixie-reproducible-base.tgz] I: copying local configuration @@ -26,54 +26,86 @@ dpkg-source: info: unpacking ruby-mixlib-cli_2.1.6-1.debian.tar.xz I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/42457/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/17273/tmp/hooks/D01_modify_environment starting +debug: Running on ionos12-i386. +I: Changing host+domainname to test build reproducibility +I: Adding a custom variable just for the fun of it... +I: Changing /bin/sh to bash +'/bin/sh' -> '/bin/bash' +lrwxrwxrwx 1 root root 9 Apr 3 14:26 /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/17273/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/17273/tmp/hooks/D02_print_environment starting I: set - BUILDDIR='/build/reproducible-path' - BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' - BUILDUSERNAME='pbuilder1' - BUILD_ARCH='i386' - DEBIAN_FRONTEND='noninteractive' - DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=22 ' - DISTRIBUTION='trixie' - HOME='/root' - HOST_ARCH='i386' + BASH=/bin/sh + BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath + BASH_ALIASES=() + BASH_ARGC=() + BASH_ARGV=() + BASH_CMDS=() + BASH_LINENO=([0]="12" [1]="0") + BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:. + BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") + BASH_VERSINFO=([0]="5" [1]="2" [2]="21" [3]="1" [4]="release" [5]="i686-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=i386 + DEBIAN_FRONTEND=noninteractive + DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=10 ' + DIRSTACK=() + DISTRIBUTION=trixie + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=i686 + HOST_ARCH=i386 IFS=' ' - INVOCATION_ID='48f3869923ce43e2871a3d2c410609aa' - LANG='C' - LANGUAGE='en_US:en' - LC_ALL='C' - LD_LIBRARY_PATH='/usr/lib/libeatmydata' - LD_PRELOAD='libeatmydata.so' - MAIL='/var/mail/root' - OPTIND='1' - PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' - PBCURRENTCOMMANDLINEOPERATION='build' - PBUILDER_OPERATION='build' - PBUILDER_PKGDATADIR='/usr/share/pbuilder' - PBUILDER_PKGLIBDIR='/usr/lib/pbuilder' - PBUILDER_SYSCONFDIR='/etc' - PPID='42457' - PS1='# ' - PS2='> ' + INVOCATION_ID=3548dc0b79004fea9d1b42cd02fc9552 + LANG=C + LANGUAGE=de_CH:de + LC_ALL=C + LD_LIBRARY_PATH=/usr/lib/libeatmydata + LD_PRELOAD=libeatmydata.so + MACHTYPE=i686-pc-linux-gnu + MAIL=/var/mail/root + OPTERR=1 + OPTIND=1 + OSTYPE=linux-gnu + PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path + PBCURRENTCOMMANDLINEOPERATION=build + PBUILDER_OPERATION=build + PBUILDER_PKGDATADIR=/usr/share/pbuilder + PBUILDER_PKGLIBDIR=/usr/lib/pbuilder + PBUILDER_SYSCONFDIR=/etc + PIPESTATUS=([0]="0") + POSIXLY_CORRECT=y + PPID=17273 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.u5Zx6LhM/pbuilderrc_v8jI --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.u5Zx6LhM/b1 --logfile b1/build.log ruby-mixlib-cli_2.1.6-1.dsc' - SUDO_GID='112' - SUDO_UID='107' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' - http_proxy='http://85.184.249.68: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.u5Zx6LhM/pbuilderrc_tdLK --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.u5Zx6LhM/b2 --logfile b2/build.log ruby-mixlib-cli_2.1.6-1.dsc' + SUDO_GID=112 + SUDO_UID=107 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://78.137.99.97:3128 I: uname -a - Linux ionos16-i386 6.1.0-18-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.76-1 (2024-02-01) x86_64 GNU/Linux + Linux i-capture-the-hostname 6.1.0-18-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.76-1 (2024-02-01) x86_64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 May 6 17:46 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/42457/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 Apr 1 11:25 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/17273/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -246,7 +278,7 @@ Get: 129 http://deb.debian.org/debian trixie/main i386 ruby-rspec-expectations all 3.13.0c0e0m0s1-2 [90.2 kB] Get: 130 http://deb.debian.org/debian trixie/main i386 ruby-rspec-mocks all 3.13.0c0e0m0s1-2 [81.3 kB] Get: 131 http://deb.debian.org/debian trixie/main i386 ruby-rspec all 3.13.0c0e0m0s1-2 [5184 B] -Fetched 47.8 MB in 2s (21.0 MB/s) +Fetched 47.8 MB in 2s (22.4 MB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package libpython3.11-minimal:i386. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 19876 files and directories currently installed.) @@ -678,8 +710,8 @@ Setting up tzdata (2024a-1) ... Current default time zone: 'Etc/UTC' -Local time is now: Tue May 6 20:48:37 UTC 2025. -Universal Time is now: Tue May 6 20:48:37 UTC 2025. +Local time is now: Wed Apr 3 14:26:25 UTC 2024. +Universal Time is now: Wed Apr 3 14:26:25 UTC 2024. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up autotools-dev (20220109.1) ... @@ -800,7 +832,11 @@ Building tag database... -> Finished parsing the build-deps I: Building the package -I: Running cd /build/reproducible-path/ruby-mixlib-cli-2.1.6/ && 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-mixlib-cli_2.1.6-1_source.changes +I: user script /srv/workspace/pbuilder/17273/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for trixie +I: user script /srv/workspace/pbuilder/17273/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/reproducible-path/ruby-mixlib-cli-2.1.6/ && 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-mixlib-cli_2.1.6-1_source.changes dpkg-buildpackage: info: source package ruby-mixlib-cli dpkg-buildpackage: info: source version 2.1.6-1 dpkg-buildpackage: info: source distribution unstable @@ -829,7 +865,7 @@ dh_prep -O--buildsystem=ruby dh_auto_install --destdir=debian/ruby-mixlib-cli/ -O--buildsystem=ruby dh_ruby --install /build/reproducible-path/ruby-mixlib-cli-2.1.6/debian/ruby-mixlib-cli -/usr/bin/ruby3.1 -S gem build --config-file /dev/null --verbose /tmp/d20250506-49424-t406ck/gemspec +/usr/bin/ruby3.1 -S gem build --config-file /dev/null --verbose /tmp/d20240404-22754-d5napv/gemspec Failed to load /dev/null because it doesn't contain valid YAML hash WARNING: description and summary are identical WARNING: See https://guides.rubygems.org/specification-reference/ for help @@ -837,7 +873,7 @@ Name: mixlib-cli Version: 2.1.6 File: mixlib-cli-2.1.6.gem -/usr/bin/ruby3.1 -S gem install --config-file /dev/null --verbose --local --verbose --no-document --ignore-dependencies --install-dir debian/ruby-mixlib-cli/usr/share/rubygems-integration/all /tmp/d20250506-49424-t406ck/mixlib-cli-2.1.6.gem +/usr/bin/ruby3.1 -S gem install --config-file /dev/null --verbose --local --verbose --no-document --ignore-dependencies --install-dir debian/ruby-mixlib-cli/usr/share/rubygems-integration/all /tmp/d20240404-22754-d5napv/mixlib-cli-2.1.6.gem Failed to load /dev/null because it doesn't contain valid YAML hash /build/reproducible-path/ruby-mixlib-cli-2.1.6/debian/ruby-mixlib-cli/usr/share/rubygems-integration/all/gems/mixlib-cli-2.1.6/lib/mixlib/cli.rb /build/reproducible-path/ruby-mixlib-cli-2.1.6/debian/ruby-mixlib-cli/usr/share/rubygems-integration/all/gems/mixlib-cli-2.1.6/lib/mixlib/cli/formatter.rb @@ -876,62 +912,87 @@ All examples were filtered out; ignoring {:focus=>true} -Randomized with seed 17961 +Randomized with seed 7823 + +Mixlib::CLI::Formatter + friendly_opt_list + for three items returns... + for more than three items creates a list in the same was as three items + for a single item it quotes it and returns it as a string + for two items returns ... + combined_option_display_name + converts --option with no short to '--option' + converts options to a blank string if neither short nor long are present + converts short -o with no long option to '-o' + converts --option with short -o to '-s/--option' + converts options the same way even with an argument present Mixlib::CLI when subclassed - also works with an option that's an array - retains previously defined options from parent  passes its options onto child  isn't able to modify parent classes options + retains previously defined options from parent + also works with an option that's an array + class method + banner + has a default value + allows you to set the banner + deprecated_option + makes a deprecated option when you declare one + options= + allows you to set the full options with a single hash + options + includes deprecated options and their generated descriptions + returns the current options hash + option + allows you to set a config option with a hash when configured with default single-config-hash behavior + initialize + sets the default config value for any options that include it + sets the banner to the class defined banner + sets the options to the class defined options and deprecated options, with defaults + opt_parser + presents the arguments in the banner + honors :on => :tail options in the banner + sets the banner in opt_parse + presents the arguments in alphabetical order in the banner + honors :on => :head options in the banner parse_options - sets the corresponding config value according to a supplied proc + doesn't exit if option is nil and not required + sets the corresponding config value to false when a boolean is prefixed with --no  doesn't exit if a required option is specified and empty - preserves and return any un-parsed elements You must supply -i val! Usage: /usr/share/rubygems-integration/all/gems/rspec-core-3.13.0/exe/rspec (options) -i val  exit if option is nil and required - preserves all of the commandline arguments, ARGV + sets the corresponding config value according to a supplied proc + doesn't exit if a required option is specified + sets the corresponding config value to true for boolean arguments + passes the existing value to two-argument procs + raises ArgumentError if options key :in is not an array + preserves and return any un-parsed elements  changes description if :in key is specified with 2 values - doesn't exit if option is nil and not required + exits if a config option has :exit set + doesn't exit if a required boolean option is specified and false -i: three is not one of the allowed values: 'one' or 'two' Usage: /usr/share/rubygems-integration/all/gems/rspec-core-3.13.0/exe/rspec (options) -i val - exits if option is not included in the list and required - doesn't exit if option is included in the list - sets the corresponding config value to true for boolean arguments - changes description if :in key is specified with 3 values - sets the corresponding config value to false when a boolean is prefixed with --no - exits if a config option has :exit set - changes description if :in key is specified with a single value - passes the existing value to two-argument procs + exits if option is not included in the list and not required + preserves all of the commandline arguments, ARGV -i: three is not one of the allowed values: 'one' or 'two' Usage: /usr/share/rubygems-integration/all/gems/rspec-core-3.13.0/exe/rspec (options) -i val - exits if option is not included in the list and not required + exits if option is not included in the list and required + sets the corresponding config value for non-boolean arguments + changes description if :in key is specified with a single value + doesn't exit if option is included in the list + changes description if :in key is specified with 3 values You must supply -r! Usage: /usr/share/rubygems-integration/all/gems/rspec-core-3.13.0/exe/rspec (options) -r  exits if a required option is missing - doesn't exit if a required boolean option is specified and false - sets the corresponding config value for non-boolean arguments - raises ArgumentError if options key :in is not an array - doesn't exit if a required option is specified with non-deprecated and deprecated options when the deprecated option has a replacement - and a value_mapper is provided ---option-x: This flag is deprecated. Use -b instead. --b: xxx is not one of the allowed values: 'a', 'b', or 'c' -Usage: /usr/share/rubygems-integration/all/gems/rspec-core-3.13.0/exe/rspec (options) - --[no-]option-a - -b ARG - -c ARG - --option-x ARG This flag is deprecated. Use -b instead. - still checks the replacement's 'in' validation list ---option-x: This flag is deprecated. Use -b instead. - sets the mapped value in the replacement option and the deprecated value in the deprecated option and a value_mapper is not provided and keep is set to false in the deprecated option --option-x: This flag is deprecated. Use -c instead. @@ -944,50 +1005,25 @@ when the replacement does not accept a value --option-x: This flag is deprecated. Use -c instead.  will still set the value because you haven't given a custom value mapper to set a true/false value + and a value_mapper is provided +--option-x: This flag is deprecated. Use -b instead. +-b: xxx is not one of the allowed values: 'a', 'b', or 'c' +Usage: /usr/share/rubygems-integration/all/gems/rspec-core-3.13.0/exe/rspec (options) + --[no-]option-a + -b ARG + -c ARG + --option-x ARG This flag is deprecated. Use -b instead. + still checks the replacement's 'in' validation list +--option-x: This flag is deprecated. Use -b instead. + sets the mapped value in the replacement option and the deprecated value in the deprecated option when someone injects an unexpected value into 'config'  parses and preserves both known and unknown config values when the deprecated option does not have a replacement  warns about the deprecated option being removed - opt_parser - presents the arguments in the banner - honors :on => :tail options in the banner - sets the banner in opt_parse - honors :on => :head options in the banner - presents the arguments in alphabetical order in the banner - initialize - sets the default config value for any options that include it - sets the banner to the class defined banner - sets the options to the class defined options and deprecated options, with defaults - class method - options= - allows you to set the full options with a single hash - options - includes deprecated options and their generated descriptions - returns the current options hash - deprecated_option - makes a deprecated option when you declare one - banner - has a default value - allows you to set the banner - option - allows you to set a config option with a hash when configured to separate default options  sets default values on the `default` hash  sets parsed values on the `config` hash -Mixlib::CLI::Formatter - friendly_opt_list - for a single item it quotes it and returns it as a string - for more than three items creates a list in the same was as three items - for two items returns ... - for three items returns... - combined_option_display_name - converts options to a blank string if neither short nor long are present - converts options the same way even with an argument present - converts --option with no short to '--option' - converts short -o with no long option to '-o' - converts --option with short -o to '-s/--option' - Deprecation Warnings: The implicit block expectation syntax is deprecated, you should pass a block rather than an argument to `expect` to use the provided block expectation matcher or the matcher must implement `supports_value_expectations?`. e.g `expect { value }.to raise ArgumentError` not `expect(value).to raise ArgumentError` @@ -1005,10 +1041,10 @@ 6 deprecation warnings total -Finished in 0.05255 seconds (files took 0.12671 seconds to load) +Finished in 0.10626 seconds (files took 0.28572 seconds to load) 59 examples, 0 failures -Randomized with seed 17961 +Randomized with seed 7823 ┌──────────────────────────────────────────────────────────────────────────────┐ @@ -1040,12 +1076,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/17273/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/17273/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/42457 and its subdirectories -I: Current time: Tue May 6 08:48:47 -12 2025 -I: pbuilder-time-stamp: 1746564527 +I: removing directory /srv/workspace/pbuilder/17273 and its subdirectories +I: Current time: Thu Apr 4 04:26:49 +14 2024 +I: pbuilder-time-stamp: 1712154409