Diff of the two buildlogs:
--
--- b1/build.log 2025-02-22 09:29:05.494236120 +0000
+++ b2/build.log 2025-02-22 09:29:51.404170240 +0000
@@ -1,6 +1,6 @@
I: pbuilder: network access will be disabled during build
-I: Current time: Fri Feb 21 21:28:28 -12 2025
-I: pbuilder-time-stamp: 1740216508
+I: Current time: Sat Mar 28 05:52:08 +14 2026
+I: pbuilder-time-stamp: 1774626728
I: Building the build Environment
I: extracting base tarball [/var/cache/pbuilder/trixie-reproducible-base.tgz]
I: copying local configuration
@@ -24,52 +24,84 @@
dpkg-source: info: applying fix-FTBFS-with-ruby-rspec-3.12.patch
I: Not using root during the build.
I: Installing the build-deps
-I: user script /srv/workspace/pbuilder/2533611/tmp/hooks/D02_print_environment starting
+I: user script /srv/workspace/pbuilder/3203926/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 Mar 27 15:52 /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/3203926/tmp/hooks/D01_modify_environment finished
+I: user script /srv/workspace/pbuilder/3203926/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'
+ BASH=/bin/sh
+ BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath
+ BASH_ALIASES=()
+ BASH_ARGC=()
+ BASH_ARGV=()
+ BASH_CMDS=()
+ BASH_LINENO=([0]="12" [1]="0")
+ BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:.
+ BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment")
+ BASH_VERSINFO=([0]="5" [1]="2" [2]="37" [3]="1" [4]="release" [5]="aarch64-unknown-linux-gnu")
+ BASH_VERSION='5.2.37(1)-release'
+ BUILDDIR=/build/reproducible-path
+ BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other'
+ BUILDUSERNAME=pbuilder2
+ BUILD_ARCH=arm64
+ DEBIAN_FRONTEND=noninteractive
DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=12 '
- DISTRIBUTION='trixie'
- HOME='/root'
- HOST_ARCH='arm64'
+ DIRSTACK=()
+ DISTRIBUTION=trixie
+ EUID=0
+ FUNCNAME=([0]="Echo" [1]="main")
+ GROUPS=()
+ HOME=/root
+ HOSTNAME=i-capture-the-hostname
+ HOSTTYPE=aarch64
+ HOST_ARCH=arm64
IFS='
'
- INVOCATION_ID='dd2ce2bdc51346498556b8e2ae15953c'
- 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='2533611'
- PS1='# '
- PS2='> '
+ INVOCATION_ID=b5a2bbc7040a4c488d3e0cd8a684b205
+ 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=3203926
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.9ngdRNhb/pbuilderrc_ppnt --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.9ngdRNhb/b1 --logfile b1/build.log ruby-slack-messenger_2.3.5-1.dsc'
- SUDO_GID='109'
- 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.9ngdRNhb/pbuilderrc_l9Xb --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.9ngdRNhb/b2 --logfile b2/build.log ruby-slack-messenger_2.3.5-1.dsc'
+ SUDO_GID=109
+ 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.1.0-31-cloud-arm64 #1 SMP Debian 6.1.128-1 (2025-02-07) aarch64 GNU/Linux
+ Linux i-capture-the-hostname 6.1.0-31-cloud-arm64 #1 SMP Debian 6.1.128-1 (2025-02-07) aarch64 GNU/Linux
I: ls -l /bin
- lrwxrwxrwx 1 root root 7 Nov 22 14:40 /bin -> usr/bin
-I: user script /srv/workspace/pbuilder/2533611/tmp/hooks/D02_print_environment finished
+ lrwxrwxrwx 1 root root 7 Nov 22 2024 /bin -> usr/bin
+I: user script /srv/workspace/pbuilder/3203926/tmp/hooks/D02_print_environment finished
-> Attempting to satisfy build-dependencies
-> Creating pbuilder-satisfydepends-dummy package
Package: pbuilder-satisfydepends-dummy
@@ -252,7 +284,7 @@
Get: 137 http://deb.debian.org/debian trixie/main arm64 ruby-rspec-expectations all 3.13.0c0e0m0s1-2 [90.2 kB]
Get: 138 http://deb.debian.org/debian trixie/main arm64 ruby-rspec-mocks all 3.13.0c0e0m0s1-2 [81.3 kB]
Get: 139 http://deb.debian.org/debian trixie/main arm64 ruby-rspec all 3.13.0c0e0m0s1-2 [5184 B]
-Fetched 47.6 MB in 0s (144 MB/s)
+Fetched 47.6 MB in 0s (108 MB/s)
Preconfiguring packages ...
Selecting previously unselected package libpython3.13-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 ... 19972 files and directories currently installed.)
@@ -715,8 +747,8 @@
Setting up tzdata (2025a-2) ...
Current default time zone: 'Etc/UTC'
-Local time is now: Sat Feb 22 09:28:49 UTC 2025.
-Universal Time is now: Sat Feb 22 09:28:49 UTC 2025.
+Local time is now: Fri Mar 27 15:52:29 UTC 2026.
+Universal Time is now: Fri Mar 27 15:52:29 UTC 2026.
Run 'dpkg-reconfigure tzdata' if you wish to change it.
Setting up ruby-minitest (5.25.4-2) ...
@@ -843,7 +875,11 @@
Building tag database...
-> Finished parsing the build-deps
I: Building the package
-I: Running cd /build/reproducible-path/ruby-slack-messenger-2.3.5/ && 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-slack-messenger_2.3.5-1_source.changes
+I: user script /srv/workspace/pbuilder/3203926/tmp/hooks/A99_set_merged_usr starting
+Not re-configuring usrmerge for trixie
+I: user script /srv/workspace/pbuilder/3203926/tmp/hooks/A99_set_merged_usr finished
+hostname: Name or service not known
+I: Running cd /build/reproducible-path/ruby-slack-messenger-2.3.5/ && 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-slack-messenger_2.3.5-1_source.changes
dpkg-buildpackage: info: source package ruby-slack-messenger
dpkg-buildpackage: info: source version 2.3.5-1
dpkg-buildpackage: info: source distribution unstable
@@ -876,7 +912,7 @@
│ ruby-slack-messenger: Installing files and building extensions for ruby3.3 │
└──────────────────────────────────────────────────────────────────────────────┘
-/usr/bin/ruby3.3 -S gem build --config-file /dev/null --verbose /tmp/d20250221-2542866-ahu9bg/gemspec
+/usr/bin/ruby3.3 -S gem build --config-file /dev/null --verbose /tmp/d20260328-3211640-d8g920/gemspec
WARNING: expected RubyGems version 3.6.3, was 3.4.20
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
WARNING: See https://guides.rubygems.org/specification-reference/ for help
@@ -884,7 +920,7 @@
Name: slack-messenger
Version: 2.3.5
File: slack-messenger-2.3.5.gem
-/usr/bin/ruby3.3 -S gem install --config-file /dev/null --verbose --local --verbose --no-document --ignore-dependencies --install-dir debian/ruby-slack-messenger/usr/share/rubygems-integration/all /tmp/d20250221-2542866-ahu9bg/slack-messenger-2.3.5.gem
+/usr/bin/ruby3.3 -S gem install --config-file /dev/null --verbose --local --verbose --no-document --ignore-dependencies --install-dir debian/ruby-slack-messenger/usr/share/rubygems-integration/all /tmp/d20260328-3211640-d8g920/slack-messenger-2.3.5.gem
/build/reproducible-path/ruby-slack-messenger-2.3.5/debian/ruby-slack-messenger/usr/share/rubygems-integration/all/gems/slack-messenger-2.3.5/lib/slack-messenger.rb
/build/reproducible-path/ruby-slack-messenger-2.3.5/debian/ruby-slack-messenger/usr/share/rubygems-integration/all/gems/slack-messenger-2.3.5/lib/slack-messenger/config.rb
/build/reproducible-path/ruby-slack-messenger-2.3.5/debian/ruby-slack-messenger/usr/share/rubygems-integration/all/gems/slack-messenger-2.3.5/lib/slack-messenger/payload_middleware.rb
@@ -932,157 +968,157 @@
All examples were filtered out; ignoring {:focus=>true}
-Randomized with seed 61520
+Randomized with seed 49480
+
+Slack::Messenger::PayloadMiddleware::Base
+ ::middleware_name
+ uses symbolized name to register
+ registers class w/ given name
+ #call
+ raises NoMethodError (expects subclass to define)
+ ::options
+ allows setting default options for a middleware
+ #initialize
+ sets given messenger as messenger
+ sets given options as opts
+
+Slack::Messenger::Config
+ #middleware
+ allows passing options to middleware stack
+ takes an array or a splat of args
+ is [:format_message, :format_attachments, :at] if not set
+ #http_client
+ is Util::HTTPClient if not set
+ sets a new client class if given one
+ raises an ArgumentError if given class does not respond to ::post
+ #defaults
+ is an empty hash by default
+ raises ArgumentError if not given a hash
+ sets a hash to default if given
Slack::Messenger::PayloadMiddleware::Channels
splits payload into multiple if given an array of channels
leaves string channels alone
-Slack::Messenger::PayloadMiddleware
- ::register
- adds given class to key in registry
- ::registry
- returns a hash if nothing set
- returns memoized version if already set
-
-Slack::Messenger::PayloadMiddleware::At
- can handle single at option
- can handle array at
- generates :text in payload if given :at & no :text
-
Slack::Messenger::Util::LinkFormatter
::format
- handles mailto links in markdown
- formats a number of differently formatted links
- formats markdown links in brackets
- formats markdown links with no title
- handles multiple html links
- handles mailto links in html
- formats html links
handles multiple markdown links
doesn't replace valid Japanese
handles links with trailing parentheses
- handles mixed html & markdown links
+ handles mailto links in html
formats markdown links
+ formats markdown links with no title
+ handles mailto links in markdown
+ formats html links
+ formats a number of differently formatted links
+ handles multiple html links
+ formats markdown links in brackets
+ handles mixed html & markdown links
+ with a configured stack
+ only formats markdown if markdown is the only item in formats
+ only formats html if html is the only item in formats
+ doesn't format if formats is empty
handles malicious strings efficiently
takes under a second
when on ruby 2.1+ or have string-scrub installed
replaces invalid unicode sequences with the unicode replacement character
handles invalid unicode sequences
- with a configured stack
- only formats html if html is the only item in formats
- only formats markdown if markdown is the only item in formats
- doesn't format if formats is empty
Slack::Messenger
- #ping
- calls #post with the message as the text key in #post
#initialize
+ sets the default_payload options
sets the given hook_url to the endpoint URI
sets a custom http client
- sets the default_payload options
when given a block
yields the config object
+ #ping
+ calls #post with the message as the text key in #post
#post
- uses the defaults set on initialization
allows overriding the set defaults
+ uses the defaults set on initialization
calls the middleware stack with the payload
-Slack::Messenger::Util::UntrustedRegexp
+Slack::Messenger::PayloadMiddleware::FormatMessage
+ returns the payload unmodified if not :text key
+ passes the text through linkformatter with options[:formats]
+
+Slack::Messenger::Util::HTTPClient
+ #call
+ raises an error when the response is unsuccessful
+ ::post
+ initializes Util::HTTPClient with the given uri and params then calls
#initialize
- invalid regexp
- is expected to raise RegexpError
- #replace_gsub
- replaces all instances of the match in a string
- handles empty text
- replaces nothing when no match
- #match
- when there are no matches
- returns nil
- when there are matches
- returns a match object
+ allows setting of options for Net::HTTP
Slack::Messenger::PayloadMiddleware::Stack
+ #set
+ raises if a middleware is missing
+ initializes each middleware w/ the messenger instance
+ creates a stack from hashes passing them as opts
+ creates the stack in an array
#call
calls the middleware in order, passing return of each to the next
allows any middleware to return an array but other's don't need special behavior
handles multiple middleware splitting payload
::initialize
- has empty stack
sets messenger to given messenger
- #set
- raises if a middleware is missing
- creates a stack from hashes passing them as opts
- creates the stack in an array
- initializes each middleware w/ the messenger instance
+ has empty stack
-Slack::Messenger::Util::HTTPClient
- #initialize
- allows setting of options for Net::HTTP
- #call
- raises an error when the response is unsuccessful
- ::post
- initializes Util::HTTPClient with the given uri and params then calls
+Slack::Messenger::PayloadMiddleware::At
+ generates :text in payload if given :at & no :text
+ can handle array at
+ can handle single at option
-Slack::Messenger::Config
- #http_client
- sets a new client class if given one
- raises an ArgumentError if given class does not respond to ::post
- is Util::HTTPClient if not set
- #middleware
- allows passing options to middleware stack
- takes an array or a splat of args
- is [:format_message, :format_attachments, :at] if not set
- #defaults
- is an empty hash by default
- raises ArgumentError if not given a hash
- sets a hash to default if given
+Slack::Messenger::PayloadMiddleware
+ ::register
+ adds given class to key in registry
+ ::registry
+ returns a hash if nothing set
+ returns memoized version if already set
Slack::Messenger::PayloadMiddleware::FormatAttachments
passes the text of attachments through linkformatter with options[:formats]
- can handle a single attachment
returns the payload unmodified if not :attachments key
wraps attachment into array if given as a single hash
searches through string or symbol keys
-
-Slack::Messenger::PayloadMiddleware::Base
- #initialize
- sets given options as opts
- sets given messenger as messenger
- #call
- raises NoMethodError (expects subclass to define)
- ::middleware_name
- registers class w/ given name
- uses symbolized name to register
- ::options
- allows setting default options for a middleware
+ can handle a single attachment
Slack::Messenger
- sends correct payload for #post({:text=>"hello", :http_options=>{:timeout=>5}})
- sends correct payload for #post({:text=>"Hello World, enjoy [](http://example.com)."})
- sends correct payload for #post({:text=>"hello", :channel=>"hodor"})
- sends correct payload for #post({:text=>"example"})
- sends correct payload for #post({:attachments=>{:color=>"#000", :text=>"attachment message [hodor](http://winterfell.com)", :fallback=>"fallback message"}})
- sends correct payload for #post({:attachments=>[{:color=>"#000", :text=>"attachment message", :fallback=>"fallback message"}]})
+ sends correct payload for #post({:text=>"Hello World, enjoy [this](http://example.com)[this2](http://example2.com)"})
sends correct payload for #post({:text=>nil, :attachments=>[{:text=>"attachment message"}]})
- sends correct payload for #post({:text=>"the message", :channel=>"foo", :attachments=>[{:color=>"#000", :text=>"attachment message", :fallback=>"fallback message"}]})
- sends correct payload for #post({:text=>"[John](mailto:john@example.com)"})
- applies options given to middleware
- sends correct payload for #post({:text=>"hello"})
sends correct payload for #post({:attachments=>{:color=>"#000", :text=>nil, :fallback=>"fallback message"}})
+ sends correct payload for #post({:text=>"hello"})
+ sends correct payload for #post({:attachments=>[{:color=>"#000", :text=>"attachment message", :fallback=>"fallback message"}]})
+ sends correct payload for #post({:text=>"the message", :channel=>"foo", :attachments=>[{:color=>"#000", :text=>"attachment message", :fallback=>"fallback message"}]})
sends correct payload for #post({:text=>"[hello](http://example.com/world)"})
- sends correct payload for #post({:text=>"Hello World, enjoy [this](http://example.com)[this2](http://example2.com)"})
+ sends correct payload for #post({:text=>"[John](mailto:john@example.com)"})
sends correct payload for #post({:text=>"John"})
+ sends correct payload for #post({:text=>"Hello World, enjoy [](http://example.com)."})
+ sends correct payload for #post({:text=>"hello", :channel=>"hodor"})
sends correct payload for #post({:text=>"hello/\u3053\u3093\u306B\u3061\u306F from messenger test"})
+ sends correct payload for #post({:text=>"example"})
+ applies options given to middleware
+ sends correct payload for #post({:text=>"hello", :http_options=>{:timeout=>5}})
+ sends correct payload for #post({:attachments=>{:color=>"#000", :text=>"attachment message [hodor](http://winterfell.com)", :fallback=>"fallback message"}})
-Slack::Messenger::PayloadMiddleware::FormatMessage
- returns the payload unmodified if not :text key
- passes the text through linkformatter with options[:formats]
+Slack::Messenger::Util::UntrustedRegexp
+ #match
+ when there are no matches
+ returns nil
+ when there are matches
+ returns a match object
+ #replace_gsub
+ replaces nothing when no match
+ handles empty text
+ replaces all instances of the match in a string
+ #initialize
+ invalid regexp
+ is expected to raise RegexpError
-Finished in 0.05534 seconds (files took 0.19248 seconds to load)
+Finished in 0.0642 seconds (files took 0.20909 seconds to load)
90 examples, 0 failures
-Randomized with seed 61520
+Randomized with seed 49480
┌──────────────────────────────────────────────────────────────────────────────┐
@@ -1118,12 +1154,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/3203926/tmp/hooks/B01_cleanup starting
+I: user script /srv/workspace/pbuilder/3203926/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/2533611 and its subdirectories
-I: Current time: Fri Feb 21 21:29:04 -12 2025
-I: pbuilder-time-stamp: 1740216544
+I: removing directory /srv/workspace/pbuilder/3203926 and its subdirectories
+I: Current time: Sat Mar 28 05:52:50 +14 2026
+I: pbuilder-time-stamp: 1774626770