Diff of the two buildlogs: -- --- b1/build.log 2023-04-13 23:19:38.537368917 +0000 +++ b2/build.log 2023-04-13 23:21:11.729234627 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Wed May 15 17:41:44 -12 2024 -I: pbuilder-time-stamp: 1715838104 +I: Current time: Fri Apr 14 13:19:42 +14 2023 +I: pbuilder-time-stamp: 1681427982 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/bookworm-reproducible-base.tgz] I: copying local configuration @@ -16,7 +16,7 @@ I: copying [./ruby-http-form-data_2.3.0.orig.tar.gz] I: copying [./ruby-http-form-data_2.3.0-1.debian.tar.xz] I: Extracting source -gpgv: Signature made Fri Aug 5 10:48:26 2022 -12 +gpgv: Signature made Sat Aug 6 12:48:26 2022 +14 gpgv: using RSA key B2DEE66036C40829FCD0F10CFC0DB1BBCD460BDE gpgv: Can't check signature: No public key dpkg-source: warning: cannot verify inline signature for ./ruby-http-form-data_2.3.0-1.dsc: no acceptable signature found @@ -25,11 +25,20 @@ dpkg-source: info: unpacking ruby-http-form-data_2.3.0-1.debian.tar.xz I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/27710/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/22142/tmp/hooks/D01_modify_environment starting +debug: Running on codethink12-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 +lrwxrwxrwx 1 root root 4 Jan 6 03:20 /bin/sh -> dash +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/22142/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/22142/tmp/hooks/D02_print_environment starting I: set BUILDDIR='/build' - BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' - BUILDUSERNAME='pbuilder1' + 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=8' @@ -39,38 +48,38 @@ IFS=' ' LANG='C' - LANGUAGE='en_US:en' + LANGUAGE='nl_BE:nl' LC_ALL='C' MAIL='/var/mail/root' OPTIND='1' - PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' + 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' - PPID='27710' + PPID='22142' PS1='# ' PS2='> ' 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.lGZP8pTj/pbuilderrc_Jvee --distribution bookworm --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/bookworm-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.lGZP8pTj/b1 --logfile b1/build.log ruby-http-form-data_2.3.0-1.dsc' + 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.lGZP8pTj/pbuilderrc_A51b --distribution bookworm --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/bookworm-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.lGZP8pTj/b2 --logfile b2/build.log --extrapackages usrmerge ruby-http-form-data_2.3.0-1.dsc' SUDO_GID='117' SUDO_UID='110' SUDO_USER='jenkins' TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' + TZ='/usr/share/zoneinfo/Etc/GMT-14' USER='root' USERNAME='root' _='/usr/bin/systemd-run' http_proxy='http://192.168.101.16:3128' I: uname -a - Linux codethink15-arm64 4.15.0-208-generic #220-Ubuntu SMP Mon Mar 20 14:28:12 UTC 2023 aarch64 GNU/Linux + Linux i-capture-the-hostname 4.15.0-208-generic #220-Ubuntu SMP Mon Mar 20 14:28:12 UTC 2023 aarch64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 May 15 05:12 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/27710/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 Apr 13 00:25 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/22142/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -270,7 +279,7 @@ Get: 152 http://deb.debian.org/debian bookworm/main arm64 ruby-rspec-expectations all 3.12.0c0e1m1s0-1 [89.5 kB] Get: 153 http://deb.debian.org/debian bookworm/main arm64 ruby-rspec-mocks all 3.12.0c0e1m1s0-1 [79.5 kB] Get: 154 http://deb.debian.org/debian bookworm/main arm64 ruby-rspec all 3.12.0c0e1m1s0-1 [5084 B] -Fetched 47.2 MB in 1s (32.9 MB/s) +Fetched 47.2 MB in 1s (32.6 MB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package libpython3.11-minimal: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 ... 19616 files and directories currently installed.) @@ -909,8 +918,17 @@ Writing extended state information... Building tag database... -> Finished parsing the build-deps +Reading package lists... +Building dependency tree... +Reading state information... +usrmerge is already the newest version (35). +0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. I: Building the package -I: Running cd /build/ruby-http-form-data-2.3.0/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S > ../ruby-http-form-data_2.3.0-1_source.changes +I: user script /srv/workspace/pbuilder/22142/tmp/hooks/A99_set_merged_usr starting +Re-configuring usrmerge... +I: user script /srv/workspace/pbuilder/22142/tmp/hooks/A99_set_merged_usr finished +hostname: Temporary failure in name resolution +I: Running cd /build/ruby-http-form-data-2.3.0/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-genchanges -S > ../ruby-http-form-data_2.3.0-1_source.changes dpkg-buildpackage: info: source package ruby-http-form-data dpkg-buildpackage: info: source version 2.3.0-1 dpkg-buildpackage: info: source distribution unstable @@ -978,46 +996,75 @@ All examples were filtered out; ignoring {:focus=>true} -Randomized with seed 19096 +Randomized with seed 42685 -HTTP::FormData::File +HTTP::FormData::CompositeIO + #initialize + fails if an IO is neither a String nor an IO + accepts IOs and strings + #read + returns nil when no partial data was retrieved with a buffer + returns data in binary encoding + fills the buffer with retrieved content + returns nil when no partial data was retrieved + reads partial data with a buffer + reads data in bytes + returns empty string when no data was retrieved + reads partial data + reads all data #rewind + rewinds all IOs + #size + returns 0 when there are no IOs + returns sum of all IO sizes + +HTTP::FormData::File + #size when file given as a String - rewinds the underlying IO object - when file given as a Pathname - rewinds the underlying IO object - when file given as IO - rewinds the underlying IO object + is expected to eq 77 when file given as File - rewinds the underlying IO object - #content_type - is expected to eq "application/octet-stream" - when it was given with options - is expected to eq "application/json" + is expected to eq 77 + when file given as IO + is expected to eq 20 + when file given as a Pathname + is expected to eq 77 #to_s when file given as IO - rewinds content is expected to eq "\u043F\u0440\u0438\u0432\u0435\u0442 \u043C\u0438\u0440!" - when file given as a String + rewinds content + when file given as File is expected to eq "The HTTP Gem is an easy-to-use client library for making requests from Ruby.\n" rewinds content when file given as a Pathname rewinds content is expected to eq "The HTTP Gem is an easy-to-use client library for making requests from Ruby.\n" - when file given as File - rewinds content + when file given as a String is expected to eq "The HTTP Gem is an easy-to-use client library for making requests from Ruby.\n" + rewinds content #read - when file given as File - is expected to eq "The HTTP Gem is an easy-to-use client library for making requests from Ruby.\n" - when file given as a Pathname + when file given as a String is expected to eq "The HTTP Gem is an easy-to-use client library for making requests from Ruby.\n" when file given as IO is expected to eq "\u043F\u0440\u0438\u0432\u0435\u0442 \u043C\u0438\u0440!" - when file given as a String + when file given as File + is expected to eq "The HTTP Gem is an easy-to-use client library for making requests from Ruby.\n" + when file given as a Pathname is expected to eq "The HTTP Gem is an easy-to-use client library for making requests from Ruby.\n" #mime_type should be an alias of #content_type + #content_type + is expected to eq "application/octet-stream" + when it was given with options + is expected to eq "application/json" + #rewind + when file given as a String + rewinds the underlying IO object + when file given as IO + rewinds the underlying IO object + when file given as File + rewinds the underlying IO object + when file given as a Pathname + rewinds the underlying IO object #filename when file given as a String is expected to eq "the-http-gem.info" @@ -1027,89 +1074,14 @@ is expected to eq "the-http-gem.info" and filename given with options is expected to eq "foobar.txt" - when file given as a Pathname - is expected to eq "the-http-gem.info" - and filename given with options - is expected to eq "foobar.txt" when file given as IO - is expected to eq "stream-4440" + is expected to eq "stream-4460" and filename given with options is expected to eq "foobar.txt" - #size when file given as a Pathname - is expected to eq 77 - when file given as a String - is expected to eq 77 - when file given as IO - is expected to eq 20 - when file given as File - is expected to eq 77 - -HTTP::FormData::Urlencoded - #to_s - is expected to eq "foo%5Bbar%5D=test" - rewinds content - with unicode chars - is expected to eq "foo%5Bbar%5D=%D1%82%D0%B5%D1%81%D1%82" - #size - returns bytesize of multipart data - #read - returns multipart data - #content_type - is expected to eq "application/x-www-form-urlencoded" - #content_length - is expected to eq 17 - with unicode chars - is expected to eq 37 - #rewind - rewinds the multipart data IO - with custom instance level encoder - uses encoder passed to initializer - .encoder= - switches form encoder implementation - -HTTP::FormData::Part - #size - when body given as a String - is expected to eq 20 - #filename - is expected to eq nil - when it was given with options - is expected to eq "foobar.txt" - #read - when body given as String - is expected to eq "\u043F\u0440\u0438\u0432\u0435\u0442 \u043C\u0438\u0440!" - #content_type - is expected to eq nil - when it was given with options - is expected to eq "application/json" - #to_s - when body given as String - is expected to eq "\u043F\u0440\u0438\u0432\u0435\u0442 \u043C\u0438\u0440!" - rewinds content - #rewind - when body given as String - rewinds the underlying IO object - -HTTP::FormData::CompositeIO - #initialize - fails if an IO is neither a String nor an IO - accepts IOs and strings - #rewind - rewinds all IOs - #size - returns 0 when there are no IOs - returns sum of all IO sizes - #read - fills the buffer with retrieved content - reads all data - reads data in bytes - reads partial data - returns nil when no partial data was retrieved with a buffer - returns data in binary encoding - reads partial data with a buffer - returns nil when no partial data was retrieved - returns empty string when no data was retrieved + is expected to eq "the-http-gem.info" + and filename given with options + is expected to eq "foobar.txt" HTTP::FormData .create @@ -1120,84 +1092,130 @@ when form has no files is expected to be a kind of HTTP::FormData::Urlencoded .ensure_hash - when #to_h given - is expected to eq {:foo=>:bar} when neither Hash nor #to_h given fails with HTTP::FormData::Error when nil given is expected to eq {} when Hash given is expected to eq {:foo=>:bar} + when #to_h given + is expected to eq {:foo=>:bar} + +HTTP::FormData::Part + #content_type + is expected to eq nil + when it was given with options + is expected to eq "application/json" + #size + when body given as a String + is expected to eq 20 + #to_s + when body given as String + is expected to eq "\u043F\u0440\u0438\u0432\u0435\u0442 \u043C\u0438\u0440!" + rewinds content + #filename + is expected to eq nil + when it was given with options + is expected to eq "foobar.txt" + #rewind + when body given as String + rewinds the underlying IO object + #read + when body given as String + is expected to eq "\u043F\u0440\u0438\u0432\u0435\u0442 \u043C\u0438\u0440!" HTTP::FormData::Multipart - .generate_boundary - returns a string suitable as a multipart boundary #size returns bytesize of multipart data - #rewind - rewinds the multipart data IO - #content_length - is expected to eq 449 #to_s - rewinds content properly generates multipart data + rewinds content + with content type set to nil + doesn't include a filename with user-defined boundary uses the given boundary with filename set to nil doesn't include a filename - with content type set to nil - doesn't include a filename + #content_type + is expected to match /^multipart\/form-data; boundary=(?-mix:-{21}[a-f0-9]{42})$/ + with user-defined boundary + includes the given boundary + .generate_boundary + returns a string suitable as a multipart boundary #read returns multipart data + #rewind + rewinds the multipart data IO + #content_length + is expected to eq 449 #boundary returns a new boundary with user-defined boundary returns the given boundary + +HTTP::FormData::Urlencoded #content_type - is expected to match /^multipart\/form-data; boundary=(?-mix:-{21}[a-f0-9]{42})$/ - with user-defined boundary - includes the given boundary + is expected to eq "application/x-www-form-urlencoded" + #size + returns bytesize of multipart data + #to_s + is expected to eq "foo%5Bbar%5D=test" + rewinds content + with unicode chars + is expected to eq "foo%5Bbar%5D=%D1%82%D0%B5%D1%81%D1%82" + with custom instance level encoder + uses encoder passed to initializer + #rewind + rewinds the multipart data IO + .encoder= + switches form encoder implementation + #read + returns multipart data + #content_length + is expected to eq 17 + with unicode chars + is expected to eq 37 -Top 10 slowest examples (0.01921 seconds, 13.0% of total time): +Top 10 slowest examples (0.03823 seconds, 15.4% of total time): + HTTP::FormData::Multipart#read returns multipart data + 0.0108 seconds ./spec/lib/http/form_data/multipart_spec.rb:99 HTTP::FormData::CompositeIO#initialize fails if an IO is neither a String nor an IO - 0.00358 seconds ./spec/lib/http/form_data/composite_io_spec.rb:14 - HTTP::FormData::Multipart.generate_boundary returns a string suitable as a multipart boundary - 0.0027 seconds ./spec/lib/http/form_data/multipart_spec.rb:153 + 0.00557 seconds ./spec/lib/http/form_data/composite_io_spec.rb:14 + HTTP::FormData::Multipart#content_type is expected to match /^multipart\/form-data; boundary=(?-mix:-{21}[a-f0-9]{42})$/ + 0.00427 seconds ./spec/lib/http/form_data/multipart_spec.rb:117 HTTP::FormData.create when form has file in an array param is expected to be a kind of HTTP::FormData::Multipart - 0.00225 seconds ./spec/lib/http/form_data_spec.rb:21 - HTTP::FormData::File#rewind when file given as a String rewinds the underlying IO object - 0.00218 seconds ./spec/lib/http/form_data/file_spec.rb:111 + 0.0036 seconds ./spec/lib/http/form_data_spec.rb:21 + HTTP::FormData::CompositeIO#initialize accepts IOs and strings + 0.00266 seconds ./spec/lib/http/form_data/composite_io_spec.rb:9 + HTTP::FormData::Multipart#content_length is expected to eq 449 + 0.00243 seconds ./spec/lib/http/form_data/multipart_spec.rb:133 HTTP::FormData::Multipart#to_s with user-defined boundary uses the given boundary - 0.00165 seconds ./spec/lib/http/form_data/multipart_spec.rb:44 - HTTP::FormData::File#read when file given as a String is expected to eq "The HTTP Gem is an easy-to-use client library for making requests from Ruby.\n" - 0.00154 seconds ./spec/lib/http/form_data/file_spec.rb:87 - HTTP::FormData::Multipart#to_s rewinds content - 0.00144 seconds ./spec/lib/http/form_data/multipart_spec.rb:33 + 0.00231 seconds ./spec/lib/http/form_data/multipart_spec.rb:44 HTTP::FormData::Multipart#rewind rewinds the multipart data IO - 0.0014 seconds ./spec/lib/http/form_data/multipart_spec.rb:105 - HTTP::FormData.ensure_hash when #to_h given is expected to eq {:foo=>:bar} - 0.00126 seconds ./spec/lib/http/form_data_spec.rb:35 - HTTP::FormData::Multipart#boundary with user-defined boundary returns the given boundary - 0.00121 seconds ./spec/lib/http/form_data/multipart_spec.rb:146 + 0.00225 seconds ./spec/lib/http/form_data/multipart_spec.rb:105 + HTTP::FormData::Multipart#size returns bytesize of multipart data + 0.00218 seconds ./spec/lib/http/form_data/multipart_spec.rb:93 + HTTP::FormData::Multipart#to_s properly generates multipart data + 0.00217 seconds ./spec/lib/http/form_data/multipart_spec.rb:18 Top 6 slowest example groups: - HTTP::FormData - 0.00264 seconds average (0.01848 seconds / 7 examples) ./spec/lib/http/form_data_spec.rb:3 HTTP::FormData::Multipart - 0.00195 seconds average (0.02728 seconds / 14 examples) ./spec/lib/http/form_data/multipart_spec.rb:3 + 0.00394 seconds average (0.05514 seconds / 14 examples) ./spec/lib/http/form_data/multipart_spec.rb:3 + HTTP::FormData + 0.00312 seconds average (0.02187 seconds / 7 examples) ./spec/lib/http/form_data_spec.rb:3 HTTP::FormData::File - 0.00185 seconds average (0.05724 seconds / 31 examples) ./spec/lib/http/form_data/file_spec.rb:4 - HTTP::FormData::Part - 0.00135 seconds average (0.01214 seconds / 9 examples) ./spec/lib/http/form_data/part_spec.rb:3 + 0.00259 seconds average (0.08027 seconds / 31 examples) ./spec/lib/http/form_data/file_spec.rb:4 HTTP::FormData::Urlencoded - 0.00127 seconds average (0.01399 seconds / 11 examples) ./spec/lib/http/form_data/urlencoded_spec.rb:4 + 0.00225 seconds average (0.02476 seconds / 11 examples) ./spec/lib/http/form_data/urlencoded_spec.rb:4 + HTTP::FormData::Part + 0.00222 seconds average (0.01997 seconds / 9 examples) ./spec/lib/http/form_data/part_spec.rb:3 HTTP::FormData::CompositeIO - 0.00116 seconds average (0.01628 seconds / 14 examples) ./spec/lib/http/form_data/composite_io_spec.rb:3 + 0.00211 seconds average (0.02958 seconds / 14 examples) ./spec/lib/http/form_data/composite_io_spec.rb:3 -Finished in 0.14792 seconds (files took 0.97025 seconds to load) +Finished in 0.24839 seconds (files took 1.38 seconds to load) 86 examples, 0 failures -Randomized with seed 19096 +Randomized with seed 42685 Coverage report generated for RSpec to /build/ruby-http-form-data-2.3.0/coverage. 192 / 194 LOC (98.97%) covered. [Coveralls] Outside the CI environment, not sending data. @@ -1234,12 +1252,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/22142/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/22142/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/27710 and its subdirectories -I: Current time: Wed May 15 17:42:37 -12 2024 -I: pbuilder-time-stamp: 1715838157 +I: removing directory /srv/workspace/pbuilder/22142 and its subdirectories +I: Current time: Fri Apr 14 13:21:10 +14 2023 +I: pbuilder-time-stamp: 1681428070