Diff of the two buildlogs: -- --- b1/build.log 2025-11-11 07:26:39.991168785 +0000 +++ b2/build.log 2025-11-11 07:27:55.499258942 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Mon Nov 10 19:26:05 -12 2025 -I: pbuilder-time-stamp: 1762845965 +I: Current time: Tue Dec 15 03:49:41 +14 2026 +I: pbuilder-time-stamp: 1797256181 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/forky-reproducible-base.tgz] I: copying local configuration @@ -24,53 +24,85 @@ dpkg-source: info: applying 0001-PATCH-Add-Ruby-3.2-to-the-CI-matrix-571.patch I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/1969685/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/3084015/tmp/hooks/D01_modify_environment starting +debug: Running on codethink03-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 Dec 14 13:49 /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/3084015/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/3084015/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' - DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=12 ' - DISTRIBUTION='forky' - HOME='/root' - HOST_ARCH='arm64' + 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]="3" [2]="3" [3]="1" [4]="release" [5]="aarch64-unknown-linux-gnu") + BASH_VERSION='5.3.3(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 nocheck' + DIRSTACK=() + DISTRIBUTION=forky + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=aarch64 + HOST_ARCH=arm64 IFS=' ' - INVOCATION_ID='1faa6fed11ad4cbf98a292eb080081c0' - 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='1969685' - PS1='# ' - PS2='> ' + INVOCATION_ID=1c537150101c443b96370e64d50e8c4a + 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=3084015 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.SEb4Tax1/pbuilderrc_GNoa --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.SEb4Tax1/b1 --logfile b1/build.log ruby-hashie_5.0.0-3.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' - 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.SEb4Tax1/pbuilderrc_yxwD --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.SEb4Tax1/b2 --logfile b2/build.log ruby-hashie_5.0.0-3.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' + http_proxy=http://192.168.101.4:3128 I: uname -a - Linux codethink04-arm64 6.12.48+deb13-cloud-arm64 #1 SMP Debian 6.12.48-1 (2025-09-20) aarch64 GNU/Linux + Linux i-capture-the-hostname 6.12.48+deb13-cloud-arm64 #1 SMP Debian 6.12.48-1 (2025-09-20) aarch64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 Aug 10 12:30 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/1969685/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 Aug 10 2025 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/3084015/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -271,7 +303,7 @@ Get: 145 http://deb.debian.org/debian forky/main arm64 ruby-rspec-pending-for all 0.1.19-2 [23.0 kB] Get: 146 http://deb.debian.org/debian forky/main arm64 ruby-tilt all 2.4.0-3 [32.2 kB] Get: 147 http://deb.debian.org/debian forky/main arm64 ruby-sinatra all 4.2.1-1 [123 kB] -Fetched 36.9 MB in 1s (44.4 MB/s) +Fetched 36.9 MB in 0s (119 MB/s) Preconfiguring packages ... Selecting previously unselected package libexpat1:arm64. (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 ... 19964 files and directories currently installed.) @@ -759,8 +791,8 @@ Setting up tzdata (2025b-5) ... Current default time zone: 'Etc/UTC' -Local time is now: Tue Nov 11 07:26:24 UTC 2025. -Universal Time is now: Tue Nov 11 07:26:24 UTC 2025. +Local time is now: Mon Dec 14 13:50:13 UTC 2026. +Universal Time is now: Mon Dec 14 13:50:13 UTC 2026. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up ruby-minitest (5.25.4-3) ... @@ -894,7 +926,11 @@ Building tag database... -> Finished parsing the build-deps I: Building the package -I: Running cd /build/reproducible-path/ruby-hashie-5.0.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-hashie_5.0.0-3_source.changes +I: user script /srv/workspace/pbuilder/3084015/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for forky +I: user script /srv/workspace/pbuilder/3084015/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/reproducible-path/ruby-hashie-5.0.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-hashie_5.0.0-3_source.changes dpkg-buildpackage: info: source package ruby-hashie dpkg-buildpackage: info: source version 5.0.0-3 dpkg-buildpackage: info: source distribution unstable @@ -915,8 +951,7 @@ dh_ruby --configure dh_auto_build -O--buildsystem=ruby dh_ruby --build - dh_auto_test -O--buildsystem=ruby - dh_ruby --test +dh: command-omitted: The call to "dh_auto_test -O--buildsystem=ruby" was omitted due to "DEB_BUILD_OPTIONS=nocheck" create-stamp debian/debhelper-build-stamp dh_testroot -O--buildsystem=ruby dh_prep -O--buildsystem=ruby @@ -927,7 +962,7 @@ │ ruby-hashie: Installing files and building extensions for ruby3.3 │ └──────────────────────────────────────────────────────────────────────────────┘ -/usr/bin/ruby3.3 -S gem build --config-file /dev/null --verbose /tmp/d20251110-1986560-8cdobv/gemspec +/usr/bin/ruby3.3 -S gem build --config-file /dev/null --verbose /tmp/d20261215-3106581-a0cqrr/gemspec WARNING: open-ended dependency on bundler (>= 0, development) is not recommended use a bounded requirement, such as "~> x.y" WARNING: make sure you specify the oldest ruby version constraint (like ">= 3.0") that you want your gem to support by setting the `required_ruby_version` gemspec attribute @@ -936,7 +971,7 @@ Name: hashie Version: 5.0.0 File: hashie-5.0.0.gem -/usr/bin/ruby3.3 -S gem install --config-file /dev/null --verbose --local --verbose --no-document --ignore-dependencies --install-dir debian/ruby-hashie/usr/share/rubygems-integration/all /tmp/d20251110-1986560-8cdobv/hashie-5.0.0.gem +/usr/bin/ruby3.3 -S gem install --config-file /dev/null --verbose --local --verbose --no-document --ignore-dependencies --install-dir debian/ruby-hashie/usr/share/rubygems-integration/all /tmp/d20261215-3106581-a0cqrr/hashie-5.0.0.gem /build/reproducible-path/ruby-hashie-5.0.0/debian/ruby-hashie/usr/share/rubygems-integration/all/gems/hashie-5.0.0/lib/hashie.rb /build/reproducible-path/ruby-hashie-5.0.0/debian/ruby-hashie/usr/share/rubygems-integration/all/gems/hashie-5.0.0/lib/hashie/array.rb /build/reproducible-path/ruby-hashie-5.0.0/debian/ruby-hashie/usr/share/rubygems-integration/all/gems/hashie-5.0.0/lib/hashie/clash.rb @@ -994,1128 +1029,7 @@ cd - cd - dh_installchangelogs -pruby-hashie /build/reproducible-path/ruby-hashie-5.0.0/CHANGELOG.md upstream -/usr/bin/ruby3.3 /usr/bin/gem2deb-test-runner - -┌──────────────────────────────────────────────────────────────────────────────┐ -│ Checking Rubygems dependency resolution on ruby3.3 │ -└──────────────────────────────────────────────────────────────────────────────┘ - -RUBYLIB=. GEM_PATH=/build/reproducible-path/ruby-hashie-5.0.0/debian/ruby-hashie/usr/share/rubygems-integration/all:/build/reproducible-path/ruby-hashie-5.0.0/debian/.debhelper/generated/_source/home/.local/share/gem/ruby/3.3.0:/var/lib/gems/3.3.0:/usr/local/lib/ruby/gems/3.3.0:/usr/lib/ruby/gems/3.3.0:/usr/lib/aarch64-linux-gnu/ruby/gems/3.3.0:/usr/share/rubygems-integration/3.3.0:/usr/share/rubygems-integration/all:/usr/lib/aarch64-linux-gnu/rubygems-integration/3.3.0 ruby3.3 -e gem\ \"hashie\" - -┌──────────────────────────────────────────────────────────────────────────────┐ -│ Run tests for ruby3.3 from debian/ruby-tests.rake │ -└──────────────────────────────────────────────────────────────────────────────┘ - -RUBYLIB=. GEM_PATH=/build/reproducible-path/ruby-hashie-5.0.0/debian/ruby-hashie/usr/share/rubygems-integration/all:/build/reproducible-path/ruby-hashie-5.0.0/debian/.debhelper/generated/_source/home/.local/share/gem/ruby/3.3.0:/var/lib/gems/3.3.0:/usr/local/lib/ruby/gems/3.3.0:/usr/lib/ruby/gems/3.3.0:/usr/lib/aarch64-linux-gnu/ruby/gems/3.3.0:/usr/share/rubygems-integration/3.3.0:/usr/share/rubygems-integration/all:/usr/lib/aarch64-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 --exclude-pattern spec/integration/\*\*/\*_spec.rb --format documentation -/build/reproducible-path/ruby-hashie-5.0.0/spec/hashie/extensions/symbolize_keys_spec.rb:4: warning: method redefined; discarding old invoke -/build/reproducible-path/ruby-hashie-5.0.0/spec/hashie/extensions/stringify_keys_spec.rb:4: warning: previous definition of invoke was here -/build/reproducible-path/ruby-hashie-5.0.0/lib/hashie/extensions/dash/property_translation.rb:132: warning: method redefined; discarding old config= -/build/reproducible-path/ruby-hashie-5.0.0/lib/hashie/extensions/dash/property_translation.rb:132: warning: previous definition of config= was here -/build/reproducible-path/ruby-hashie-5.0.0/lib/hashie/extensions/dash/property_translation.rb:132: warning: method redefined; discarding old first_name= -/build/reproducible-path/ruby-hashie-5.0.0/lib/hashie/dash.rb:99: warning: previous definition of first_name= was here - -Array - #dig - works with a string index - works with a numeric index - when array is empty - works with a first numeric and next string index - throws an error with first string and next numeric index - -Hashie::Clash - is able to set an attribute via method_missing - is able to set multiple attributes - converts multiple arguments into an array - is able to use bang notation to create a new Clash on a key - is able to chain onto the new Clash when using bang notation - is able to jump back up to the parent in the chain with #_end! - merges rather than replaces existing keys - is able to replace all of its own keys with #replace - merges multiple bang notation calls - raises an exception when method is missing - when inherited - bang nodes are instances of a subclass - merged nodes are instances of a subclass - -DashTestDefaultProc - to_json behaves correctly with default proc - -DashTest - subclasses Hashie::Hash - lists all set properties in inspect - is expected to respond to #first_name - is expected to respond to #first_name= - is expected not to respond to #nonexistent - errors out for a non-existent property - errors out when attempting to set a required property to nil - errors out when message added to not required property - #to_s - is expected to eq "#" - #count - is expected to be zero - writing to properties - fails writing a required property to nil - fails writing a required property to nil using []= - fails writing to a non-existent property using []= - works for an existing property using []= - works for an existing property using a method call - reading from properties - fails reading from a non-existent property using [] - is able to retrieve properties through blocks - is able to retrieve properties through blocks with method calls - reading from deferred properties - evaluates proc after initial read - does not evalute proc after subsequent reads - reading from a deferred property based on context - provides the current hash as context for evaluation - converting from a Mash - without keeping the original keys - does not pick up the property from the stringified key - when keeping the original keys - picks up the property from the original key - #new - fails with non-existent properties - sets properties that it is able to - accepts nil - accepts block to define a global default - fails when required values are missing - does not overwrite default values - #merge - creates a new instance of the Dash - merges the given hash - fails with non-existent properties - errors out when attempting to set a required property to nil - given a block - sets merged key's values to the block's return value - #merge! - modifies the existing instance of the Dash - merges the given hash - fails with non-existent properties - errors out when attempting to set a required property to nil - given a block - sets merged key's values to the block's return value - properties - lists defined properties - checks if a property exists - checks if a property is required - doesnt include property from subclass - lists declared defaults - allows properties that end in bang - #replace - return self - sets all specified keys to their corresponding values - leaves only specified keys and keys with default values - when replacing keys with default values - sets all specified keys to their corresponding values - #update_attributes!(params) - update the attributes - when there is coercion - update the attributes - when required property is update to nil - raise an ArgumentError - when a default property is update to nil - set the property back to the default value - codependent attributes - does not raise an error when only the first property is set - does not raise an error when only the second property is set - does not raise an error when both properties are set - raises an error when neither property is set - exporting nil values - #to_h - does not prune nil values - #to_hash - does not prune nil values - ** - prunes nil values because they are not set in the dash - -Hashie::Dash inheritance - reports empty properties when nothing defined - inherits properties downwards - doesnt inherit properties upwards - allows overriding a default on an existing property - allows clearing an existing default - allows nil defaults - exporting nil values - #to_h - does not prune nil values - #to_hash - does not prune nil values - ** - prunes nil values because they are not set in the dash - -SubclassedTest - is expected to respond to #first_name - is expected to respond to #first_name= - is expected to respond to #last_name - is expected to respond to #last_name= - has one additional property - didn't override superclass inheritance logic - #count - is expected to be zero - -ConditionallyRequiredTest - does not allow a conditionally required property to be set to nil if required - allows a conditionally required property to be set to nil if not required - allows a conditionally required property to be set if required - -MixedPropertiesTest - is expected to respond to #string - is expected to respond to #symbol - property? - fetch - double define - assign - -Dynamic Dash Class - define property - -with method access - #test - is expected to eq "value" - #test? - is expected to eq true - -Hashie::Dash - uses the default when initializing - allows you to set the value to nil with the hash writer - allows you to set the value to nil with the method writer - uses the default when updating with defaults - -Hashie::Extensions - autloads constants - is expected to be const defined :MethodAccess - is expected to be const defined :Coercion - is expected to be const defined :DeepMerge - is expected to be const defined :IgnoreUndeclared - is expected to be const defined :IndifferentAccess - is expected to be const defined :MergeInitializer - is expected to be const defined :MethodAccess - is expected to be const defined :MethodQuery - is expected to be const defined :MethodReader - is expected to be const defined :MethodWriter - is expected to be const defined :StringifyKeys - is expected to be const defined :SymbolizeKeys - is expected to be const defined :DeepFetch - is expected to be const defined :DeepFind - is expected to be const defined :PrettyInspect - is expected to be const defined :KeyConversion - is expected to be const defined :MethodAccessWithOverride - -Hashie::Extensions::Coercion - #coerce_key - is expected to be respond to :coerce_key - runs through coerce on a specified key - skips unnecessary coercions - supports an array of keys - supports coercion for Array - supports coercion for Set - supports coercion for Set of primitive - supports coercion for Hash - supports coercion for Hash with primitive as value - calls #new if no coerce method is available - coerces when the merge initializer is used - nesting - does not add coercions to superclass - coerces nested objects - coerces nested arrays - coerces nested hashes - when repetitively including the module - does not raise a stack overflow error - coercing core types - coerces from String to Integer via to_i - coerces from Integer to Integer via to_i - coerces from Rational to Integer via to_i - coerces from String to Float via to_f - coerces from Integer to Float via to_f - coerces from Rational to Float via to_f - coerces from String to String via to_s - coerces from Integer to String via to_s - coerces from Rational to String via to_s - coerces from String to String via to_s - coerces from Symbol to String via to_s - coerces from String to Symbol via to_sym - coerces from Symbol to Symbol via to_sym - can coerce String to Rational when possible - can coerce String to Complex when possible - coerces collections with core types - can coerce via a proc - raises errors for non-coercable types - can coerce false - does not coerce nil - when #replace is used - coerces relevant keys - sets correct values - when used with a Mash - coerces with instance initialization - coerces when setting with attribute style - coerces when setting with string index - coerces when setting with symbol index - when used with a Trash - coerces with instance initialization - when used with IndifferentAccess to coerce a Mash - coerces with instance initialization - coerces when setting with string index - coerces when setting with symbol index - when subclassing - inherits key coercions - the superclass does not accumulate coerced attributes from subclasses - when using circular coercion - with a proc on one side - coerces CategoryHash[:products] correctly - coerces ProductHash[:categories] correctly - without a proc on either side - fails with a NameError since the other class is not defined yet - #coerce_value - with strict: true - coerces any value of the exact right class - coerces values from a #replace call - does not coerce superclasses - core types - coerces String to Integer when possible - coerces non-numeric from String to Integer - raises a CoercionError when coercion is not possible - coerces Integer to String - coerces Numeric to String - can coerce via a proc - -Hashie::Extensions::Dash::Coercion - does the coercion of properties - -Hashie::Extensions::Dash::IndifferentAccess - updates - when included in Trash - gets the expected behaviour - when included in Dash - extends with the patch once - initialized with - string - key - initialized with both prefers last assignment - string, then symbol - symbol then string - -Hashie::Extensions::Dash::PredefinedValues - allows value within the predefined list - rejects value outside the predefined list - accepts a range for predefined list - allows property to be nil - rejects non array or range for predefined list - passes property predefined list to subclasses - allows subclass to define predefined list - -Hashie::Extensions::DeepFetch - #deep_fetch - extracts a value from a nested hash - extracts a value from a nested array - when one of the keys is not present - when a block is provided - returns the value of the block - when a block is not provided - when the nested object is an array - raises an UndefinedPathError - when the nested object is a hash - raises a UndefinedPathError - when the nested object is missing - raises an UndefinedPathError - when the nested object is nil - raises an UndefinedPathError - -Hashie::Extensions::DeepFind - #deep_find - detects a value from a nested hash - detects a value from a nested array - returns nil if it does not find a match - #deep_find_all - detects all values from a nested hash - returns nil if it does not find any matches - when match value is hash itself - detects all values from a nested hash - on a Hash including Hashie::Extensions::IndifferentAccess - #deep_find - indifferently detects a value from a nested hash - indifferently detects a value from a nested array - indifferently returns nil if it does not find a match - #deep_find_all - indifferently detects all values from a nested hash - indifferently returns nil if it does not find any matches - -Hashie::Extensions::DeepLocate - .deep_locate - locates enumerables for which the given comparator returns true for at least one element - returns an empty array if nothing was found - if called with a non-callable comparator - creates a key comparator on-th-fly - if extending an existing object - adds #deep_locate - if included in a hash - adds #deep_locate - -Hashie::Extensions::DeepMerge - should return initial hash for arguments that are not hash - without &block - deep merges two hashes without modifying them - deep merges another hash in place via bang method - merges new nested hash entries by value, not by reference - with &block - deep merges two hashes - deep merges another hash in place via bang method - from extended object - does not raise error - deep merges two hashes - deep merges another hash in place via bang method - -Hashie::Extensions::IgnoreUndeclared - included in Trash - silently ignores undeclared properties on initialization - works with translated properties (with symbol keys) - works with translated properties (with string keys) - requires properties to be declared on assignment - with a default value - uses the default when initializing - allows you to set the value to nil with the hash writer - allows you to set the value to nil with the method writer - uses the default when updating with defaults - combined with DeepMerge - deep merges - -Hashie::Extensions::IndifferentAccess - #merge - indifferently merges in a hash - injects the resulting new Hash with IndifferentAccess - #merge! - indifferently merges in a hash - #to_hash - returns a normal hash without indifference - maintains the #default_proc when set - maintains the #default when set - when included in dash - initialize with a symbol - when overriding indifferent methods - #indifferent_writer -/build/reproducible-path/ruby-hashie-5.0.0/spec/hashie/extensions/indifferent_access_spec.rb:124: warning: already initialized constant ALIASES -/build/reproducible-path/ruby-hashie-5.0.0/spec/hashie/extensions/indifferent_access_spec.rb:124: warning: previous definition of ALIASES was here - #merge - when translating properties and ignoring undeclared - and the hash keys are strings - sets the property - and the hash keys are symbols - sets the property - and there are undeclared keys - sets the property - with merge initializer - it should behave like hash with indifferent access - is able to access via string or symbol - #values_at - indifferently finds values - returns the same instance of the hash that was set - returns the same instance of the array that was set - returns the same instance of the string that was set - returns the same instance of the object that was set - #fetch - works like normal fetch, but indifferent - returns the same instance of the hash that was set - returns the same instance of the array that was set - returns the same instance of the string that was set - returns the same instance of the object that was set - yields with key name if key does not exists - #delete - deletes indifferently - #key? - finds it indifferently - is aliased as include? - is aliased as member? - is aliased as has_key? - #update - allows keys to be indifferent still - recursively injects indifference into sub-hashes - does not change the ancestors of the injected object class - #replace - returns self - removes old keys - creates new keys with indifferent access - #try_convert - with conversion - is a subject - without conversion - is nil - #slice - indifferently slices the hash - #except - indifferently excepts keys from the hash - with array initializer - it should behave like hash with indifferent access - is able to access via string or symbol - #values_at - indifferently finds values - returns the same instance of the hash that was set - returns the same instance of the array that was set - returns the same instance of the string that was set - returns the same instance of the object that was set - #fetch - works like normal fetch, but indifferent - returns the same instance of the hash that was set - returns the same instance of the array that was set - returns the same instance of the string that was set - returns the same instance of the object that was set - yields with key name if key does not exists - #delete - deletes indifferently - #key? - finds it indifferently - is aliased as include? - is aliased as member? - is aliased as has_key? - #update - allows keys to be indifferent still - recursively injects indifference into sub-hashes - does not change the ancestors of the injected object class - #replace - returns self - removes old keys - creates new keys with indifferent access - #try_convert - with conversion - is a subject - without conversion - is nil - #slice - indifferently slices the hash - #except - indifferently excepts keys from the hash - with try convert initializer - it should behave like hash with indifferent access - is able to access via string or symbol - #values_at - indifferently finds values - returns the same instance of the hash that was set - returns the same instance of the array that was set - returns the same instance of the string that was set - returns the same instance of the object that was set - #fetch - works like normal fetch, but indifferent - returns the same instance of the hash that was set - returns the same instance of the array that was set - returns the same instance of the string that was set - returns the same instance of the object that was set - yields with key name if key does not exists - #delete - deletes indifferently - #key? - finds it indifferently - is aliased as include? - is aliased as member? - is aliased as has_key? - #update - allows keys to be indifferent still - recursively injects indifference into sub-hashes - does not change the ancestors of the injected object class - #replace - returns self - removes old keys - creates new keys with indifferent access - #try_convert - with conversion - is a subject - without conversion - is nil - #slice - indifferently slices the hash - #except - indifferently excepts keys from the hash - -Hashie::Extensions::KeyConversion - is expected to respond to #stringify_keys - is expected to respond to #stringify_keys! - is expected to respond to #symbolize_keys - is expected to respond to #symbolize_keys! - -Hashie::Extensions::Mash::DefineAccessors - when included in Mash subclass - this subclass - behaves like class with dynamically defined accessors - defines reader on demand - defines writer on demand - defines predicate on demand - defines initializing reader on demand - defines underbang reader on demand - when initializing from another hash - does not define any accessors - when accessors are overrided in class -W, [2025-11-10T19:26:36.115336 #1986728] WARN -- : You are setting a key that conflicts with a built-in method ##foo defined at /build/reproducible-path/ruby-hashie-5.0.0/spec/hashie/extensions/mash/define_accessors_spec.rb:61. This can cause unexpected behavior when accessing the key as a property. You can still access the key via the #[] method. - allows to call super - when Mash instance is extended - its singleton class - behaves like class with dynamically defined accessors - defines reader on demand - defines writer on demand - defines predicate on demand - defines initializing reader on demand - defines underbang reader on demand - when initializing from another hash - does not define any accessors - -Hashie::Extensions::Mash::KeepOriginalKeys - keeps the keys in the resulting hash identical to the original - indifferently responds to keys - responds to all method accessors like a Mash - keeps the keys that are directly passed without converting them - -Hashie::Extensions::Mash::PermissiveRespondTo - allows you to bind to unset getters - works properly with SimpleDelegator - warnings - does not log a collision when setting normal keys - logs a collision with a built-in method - -Hashie::Extensions::Mash::SafeAssignment - when included in Mash - when not attempting to override a method - assigns just fine - when attempting to override a method - raises an error - when attempting to override a private method - raises an error - when attempting to initialize with predefined method - raises an error - when setting as a hash key - still raises if conflicts with a method - -Hashie::Extensions::Mash::SymbolizeKeys - raises an error when included in a class that is not a Mash - when included in a Mash - symbolizes string keys in the Mash - preserves keys which cannot be symbolized - implicit to_hash on double splat - is converted on method calls - is converted on explicit operator call - -Hashie::Extensions::MergeInitializer - initializes with no arguments - initializes with a hash - initializes with a hash and a default - -Hashie::Extensions::MethodReader - reads string keys from the method - reads symbol keys from the method - reads nil and false values out properly - raises a NoMethodError for undefined keys - returns false for undefined keys if key with question has been called - returns true for defined keys if key with question has been called - #respond_to? - is true for string keys - is true for symbol keys - is false for non-keys - -Hashie::Extensions::MethodWriter - writes from a method call - converts the key using the #convert_key method - raises NoMethodError on non equals-ending methods - #respond_to? correctly - -Hashie::Extensions::MethodQuery - is true for non-nil string key values - is true for non-nil symbol key values - is false for false key values - is false for nil key values - raises a NoMethodError for non-set keys - #respond_to? for existing string keys - #respond_to? for existing symbol keys - does not #respond_to? for non-existent keys - -Hashie::Extensions::MethodAccess - includes all of the other method mixins - -Hashie::Extensions::MethodOverridingWriter - writes from a method call - convertes the key using the #convert_key method - raises NoMethodError on non equals-ending methods - #respond_to_missing? correctly - when writing a Hash method - overrides the original method - aliases the method with two leading underscores - does not re-alias when overriding an already overridden method - -Hashie::Extensions::MethodAccessWithOverride - includes all of the other method mixins - -Hashie::Extensions::MethodOverridingInitializer - when the key is a string - overrides the original method - aliases the method with two leading underscores - when the key is a symbol - overrides the original method - aliases the method with two leading underscores - -Hashie::Extensions::StrictKeyAccess - .new - no defaults at initialization - behaves like StrictKeyAccess with valid key - set - returns value - access - returns value - lookup - returns key - behaves like StrictKeyAccess with invalid key - access - raises an error - lookup - raises an error - behaves like StrictKeyAccess raises KeyError instead of allowing defaults - #default - raises an error - #default= - raises an error - #default_proc - raises an error - #default_proc= - raises an error - with defaults at initialization - behaves like StrictKeyAccess with valid key - set - returns value - access - returns value - lookup - returns key - behaves like StrictKeyAccess with invalid key - access - raises an error - lookup - raises an error - behaves like StrictKeyAccess raises KeyError instead of allowing defaults - #default - raises an error - #default= - raises an error - #default_proc - raises an error - #default_proc= - raises an error - behaves like StrictKeyAccess with invalid key - access - raises an error - lookup - raises an error - behaves like StrictKeyAccess raises KeyError instead of allowing defaults - #default - raises an error - #default= - raises an error - #default_proc - raises an error - #default_proc= - raises an error - .[] - behaves like StrictKeyAccess with valid key - set - returns value - access - returns value - lookup - returns key - behaves like StrictKeyAccess with invalid key - access - raises an error - lookup - raises an error - behaves like StrictKeyAccess raises KeyError instead of allowing defaults - #default - raises an error - #default= - raises an error - #default_proc - raises an error - #default_proc= - raises an error - -Hashie::Extensions::StringifyKeys - #stringify_keys! - converts keys to strings - converts nested instances of the same class - converts nested hashes - converts nested arrays - returns itself - class methods - .stringify_keys - converts keys to strings - does not alter the original - .stringify_keys! - converts keys to strings - converts nested instances of the same class - converts nested hashes - converts nested arrays - singleton methods - .stringify_keys - does not raise error - produces expected stringified hash - .stringify_keys! - does not raise error - produces expected stringified hash - -Hashie - .stringify_keys - converts keys to strings - does not alter the original - .stringify_keys! - converts keys to strings - converts nested instances of the same class - converts nested hashes - converts nested arrays - -Hashie::Extensions::SymbolizeKeys - #symbolize_keys! - converts keys to symbols - converts nested instances of the same class - converts nested hashes - performs deep conversion within nested arrays - returns itself - #symbolize_keys - converts keys to symbols - does not alter the original - class methods - .symbolize_keys - converts keys to symbols - does not alter the original - .symbolize_keys! - converts keys to symbols - converts nested instances of the same class - converts nested hashes - performs deep conversion within nested arrays - singleton methods - .symbolize_keys - does not raise error - produces expected symbolized hash - .symbolize_keys! - does not raise error - produces expected symbolized hash - -Hashie - .symbolize_keys - converts keys to symbols - does not alter the original - .symbolize_keys! - converts keys to symbols - converts nested instances of the same class - converts nested hashes - performs deep conversion within nested arrays - -Hash - is convertible to a Hashie::Mash - #stringify_keys! turns all keys into strings - #stringify_keys! turns all keys into strings recursively - #stringify_keys returns a hash with stringified keys - #to_hash returns a hash with same keys - #to_hash with stringify_keys set to true returns a hash with stringified_keys - #to_hash with symbolize_keys set to true returns a hash with symbolized keys - #to_hash should not blow up when #to_hash doesn't accept arguments - when the value is an object that respond_to to_hash - #to_hash returns a hash with same keys - #to_hash with stringify_keys set to true returns a hash with stringified_keys - #to_hash with symbolize_keys set to true returns a hash with symbolized keys - -Hashie::Mash - inherits from Hash - sets hash values through method= calls - retrieves set values through method calls - retrieves set values through blocks - retrieves set values through blocks with method calls - tests for already set values when passed a ? method - returns false on a ? method if a value has been set to nil or false - makes all [] and []= into strings for consistency - has a to_s that is identical to its inspect - returns nil instead of raising an error for attribute-esque method calls - returns the default value if set like Hash - gracefully handles being accessed with arguments - maintains indifferent access when nested - returns a Hashie::Mash when passed a bang method to a non-existenct key - returns the existing value when passed a bang method for an existing key - returns a Hashie::Mash when passed an under bang method to a non-existenct key - returns the existing value when passed an under bang method for an existing key - #initializing_reader returns a Hashie::Mash when passed a non-existent key - allows for multi-level assignment through bang methods - allows for multi-level under bang testing - does not call super if id is not a key - returns the value if id is a key - does not call super if type is not a key - returns the value if type is a key - logs a warning when overriding built-in methods - can set keys more than once and does not warn when doing so - does not write to the logger when warnings are disabled - does not write to the logger when setting most affixed keys - warns when setting a key that looks like a setter - cannot disable logging on the base Mash - carries over the disable for warnings on grandchild classes - writes to logger when a key is overridden that is not ignored - does not write to logger when a key is overridden that is ignored - carries over the ignored warnings list for warnings on grandchild classes - converts hash assignments into Hashie::Mashes - does not convert the type of Hashie::Mashes childs to Hashie::Mash - does not change the class of Mashes when converted - respects the class when passed a bang method for a non-existent key - respects the class when passed an under bang method for a non-existent key - respects the class when converting the value - respects another subclass when converting the value - multiple disable_warnings calls - calling disable_warnings multiple times with parameters - appends each new parameter to the ignore list - calling disable_warnings without keys after calling with keys - uses the last call to determine the ignore list - calling disable_parameters with keys after calling without keys - only ignores logging for ignored methods - updating - #deep_update - recursively Hashie::Mash Hashie::Mashes and hashes together - converts values only once - makes #update deep by default - clones before a #deep_merge - default #merge is deep - accepts a block - copies values for non-duplicate keys when a block is supplied - does not raise an exception when default_proc raises an error - shallow update - shallowly Hashie::Mash Hashie::Mashes and hashes together - clones before a #regular_merge - default #merge is shallow - #replace - returns self - sets all specified keys to their corresponding values - leaves only specified keys - delete - deletes with String key - deletes with Symbol key - #respond_to? - responds to a normal method - responds to a set key - responds to a set key with a suffix - is able to access the suffixed key as a method - responds to an unknown key with a suffix - is able to access an unknown suffixed key as a method - does not respond to an unknown key without a suffix - #initialize - converts an existing hash to a Hashie::Mash - converts hashes recursively into Hashie::Mashes - converts hashes in arrays into Hashie::Mashes - converts an existing Hashie::Mash into a Hashie::Mash - accepts a default block - allows propagation of a default block - allows assignment of an empty array in a default block - allows assignment of a non-empty array in a default block - allows assignment of an empty hash in a default block - allows assignment of a non-empty hash in a default block - converts Hashie::Mashes within Arrays back to Hashes - only stringifies keys which can be converted to symbols - preserves keys which cannot be converted to symbols - #fetch - when key exists - returns the value - returns the value even if the value is falsy - when key has other than original but acceptable type - returns the value - when key does not exist - raises KeyError - with default value given - returns default value - returns default value even if it is falsy - with block given - returns default value - #to_hash - returns a standard Hash - includes all keys - converts keys to symbols when symbolize_keys option is true - leaves keys as strings when symbolize_keys option is false - symbolizes keys recursively - #stringify_keys - turns all keys into strings recursively - #values_at - when the original type is given - returns the values - when a different, but acceptable type is given - returns the values - when a key is given that is not in the Mash - returns nil for that value - .load(filename, options = {}) - if the file exists - is expected to be a kind of Hashie::Mash - return a Mash from a file - freeze the attribtues - if the fils does not exists - raise an ArgumentError - if the file is passed as Pathname - return a Mash from a file - results are cached - cache the loaded yml file - when the file has aliases in it - can use the aliases and does not raise an error - can override the value of aliases - when the file has symbols - can override the value of permitted_classes - uses defaults for permitted_classes - can override the value of permitted_symbols - raises an error on insufficient permitted_symbols - #to_module(mash_method_name) - defines a settings method on the klass class that extends the module - when a settings_method_name is set - defines a settings method on the klass class that extends the module - #reverse_merge - unifies strings and symbols - does not overwrite values - when using with subclass - creates an instance of subclass - #invert - returns a Hashie::Mash - returns a mash with the keys and values inverted - when using with subclass - creates an instance of subclass - #reject - returns a Hashie::Mash - rejects keys for which the block returns true - when using with subclass - creates an instance of subclass - #select - returns a Hashie::Mash - selects keys for which the block returns true - when using with subclass - creates an instance of subclass - .quiet - returns a subclass of the calling class - memoizes and returns classes - #dig - accepts both string and symbol as key - when the Mash wraps a Hashie::Array - handles digging into an array - #transform_values - returns a Hashie::Mash - transforms the value - when using with subclass - creates an instance of subclass - #compact - returns a Hashie::Mash - removes keys with nil values - when using with subclass - creates an instance of subclass - #slice - returns a Hashie::Mash - returns a Mash with only the keys passed - when using with subclass - creates an instance of subclass - #transform_keys - returns a Hashie::Mash - returns a Mash with transformed keys - when using with subclass - creates an instance of subclass - ruby 2.6 merging - merges multiple hashes and mashes passeed to #merge - #except - return a Hashie::Mash - excludes keys - -Hashie::Extensions::Parsers::YamlErbParser - .perform - a file - is expected to be a kind of Hash - parses YAML after interpolating ERB - Pathname - "#perform" can be done in case of path is a Pathname object. - -Hashie::Rash - finds strings - finds regexps - finds other objects - finds numbers from ranges - finds floats from ranges - evaluates proc values - finds using the find method - raises in find unless a key matches - yields in find unless a key matches - gives a default value - responds to hash methods - does not lose keys - -Hashie::Trash - raises an error when :from have the same value as property - translating properties - adds the property to the list - creates a method for reading the property - creates a method for writing the property - creates a method for writing the translated property - does not create a method for reading the translated property - maintains translations hash mapping from the original to the translated name - maintains inverse translations hash mapping from the translated to the original name - #permitted_input_keys contain the :from key of properties with translations - standard properties - #permitted_input_keys contain names of properties without translations - writing to properties - does not write to a non-existent property using []= - writes to an existing property using []= - writes to a translated property using []= - reads/writes to an existing property using a method call - writes to an translated property using a method call - writes to a translated property using #replace - writes to a non-translated property using #replace - initializing with a Hash - does not initialize non-existent properties - sets the desired properties - sets the translated properties - with both the translated property and the property - sets the desired properties - translating properties using a proc - translates the value given on initialization with the given lambda - does not translate the value if given with the right property - translates the value given as property with the given lambda - does not translate the value given as right property - translating multiple properties using a proc - translates the first key - translates the second key - maintains translations hash mapping from the original to the translated name - translating multiple properties from the same source hash key - translates the first key with the given lambda - translates the second key with the given lambda and the initial value of the first key - uses with or transform_with interchangeably - translates the value given as property with the given lambda - does not translate the value given as right property - translating properties without from option using a proc - translates the value given as property with the given lambda - transforms the value when given in constructor - when :from option is given - does not override the :from option in the constructor - does not override the :from option when given as property - inheritable transforms - inherit properties transforms - replaces property transform - inheritable translations - inherit properties translations - when subclassing - keeps translation definitions in subclasses - when copying properties from other properties -/build/reproducible-path/ruby-hashie-5.0.0/lib/hashie/extensions/dash/property_translation.rb:132: warning: method redefined; discarding old id= -/build/reproducible-path/ruby-hashie-5.0.0/lib/hashie/dash.rb:99: warning: previous definition of id= was here - retains the original and also sets the copy -/build/reproducible-path/ruby-hashie-5.0.0/lib/hashie/extensions/dash/property_translation.rb:132: warning: method redefined; discarding old id= -/build/reproducible-path/ruby-hashie-5.0.0/lib/hashie/dash.rb:99: warning: previous definition of id= was here - grabs the default for the original if it is not set -/build/reproducible-path/ruby-hashie-5.0.0/lib/hashie/extensions/dash/property_translation.rb:132: warning: method redefined; discarding old id= -/build/reproducible-path/ruby-hashie-5.0.0/lib/hashie/dash.rb:99: warning: previous definition of id= was here - can be a required value - does not set properties that do not exist - is not order-dependent in definition - -Hashie::Utils - .method_information - states the module or class that a native method was defined in - states the line a Ruby method was defined at - -Hashie - has a version - -Hashie - .logger - is available via an accessor - -Finished in 0.46987 seconds (files took 0.48193 seconds to load) -700 examples, 0 failures - +DEB_BUILD_OPTIONS includes nocheck, skipping all checks (test suite etc). ┌──────────────────────────────────────────────────────────────────────────────┐ │ dh_ruby --install finished │ @@ -2148,12 +1062,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/3084015/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/3084015/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/1969685 and its subdirectories -I: Current time: Mon Nov 10 19:26:39 -12 2025 -I: pbuilder-time-stamp: 1762845999 +I: removing directory /srv/workspace/pbuilder/3084015 and its subdirectories +I: Current time: Tue Dec 15 03:50:54 +14 2026 +I: pbuilder-time-stamp: 1797256254