Diff of the two buildlogs: -- --- b1/build.log 2024-05-21 08:45:44.277956461 +0000 +++ b2/build.log 2024-05-21 08:49:36.296083215 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Mon May 20 20:42:32 -12 2024 -I: pbuilder-time-stamp: 1716280952 +I: Current time: Tue May 21 22:46:03 +14 2024 +I: pbuilder-time-stamp: 1716281163 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz] I: copying local configuration @@ -30,52 +30,84 @@ dpkg-source: info: applying 0003-Disable-gecode-solver.patch I: using fakeroot in build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/15298/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/27400/tmp/hooks/D01_modify_environment starting +debug: Running on virt64b. +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 May 21 08:46 /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/27400/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/27400/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='armhf' - DEBIAN_FRONTEND='noninteractive' - DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=3 ' - DISTRIBUTION='unstable' - HOME='/root' - HOST_ARCH='armhf' + BASH=/bin/sh + BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath + BASH_ALIASES=() + BASH_ARGC=() + BASH_ARGV=() + BASH_CMDS=() + BASH_LINENO=([0]="12" [1]="0") + BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:. + BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") + BASH_VERSINFO=([0]="5" [1]="2" [2]="21" [3]="1" [4]="release" [5]="arm-unknown-linux-gnueabihf") + BASH_VERSION='5.2.21(1)-release' + BUILDDIR=/build/reproducible-path + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=armhf + DEBIAN_FRONTEND=noninteractive + DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=4 ' + DIRSTACK=() + DISTRIBUTION=unstable + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=arm + HOST_ARCH=armhf IFS=' ' - INVOCATION_ID='e37af1bdba9e4f288e788d3926974d0d' - 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='15298' - PS1='# ' - PS2='> ' + INVOCATION_ID=a1f69dce2ebc451d97ec24d03e2292ef + LANG=C + LANGUAGE=it_CH:it + LC_ALL=C + MACHTYPE=arm-unknown-linux-gnueabihf + MAIL=/var/mail/root + OPTERR=1 + OPTIND=1 + OSTYPE=linux-gnueabihf + 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=27400 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.heK0IHSF/pbuilderrc_FdZy --distribution unstable --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.heK0IHSF/b1 --logfile b1/build.log ruby-solve_4.0.4-1.dsc' - SUDO_GID='112' - SUDO_UID='106' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' - http_proxy='http://10.0.0.15:3142/' + 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.heK0IHSF/pbuilderrc_iUbm --distribution unstable --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.heK0IHSF/b2 --logfile b2/build.log ruby-solve_4.0.4-1.dsc' + SUDO_GID=113 + SUDO_UID=107 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://10.0.0.15:3142/ I: uname -a - Linux virt32b 6.1.0-21-armmp-lpae #1 SMP Debian 6.1.90-1 (2024-05-03) armv7l GNU/Linux + Linux i-capture-the-hostname 6.1.0-21-arm64 #1 SMP Debian 6.1.90-1 (2024-05-03) aarch64 GNU/Linux I: ls -l /bin lrwxrwxrwx 1 root root 7 May 21 07:45 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/15298/tmp/hooks/D02_print_environment finished +I: user script /srv/workspace/pbuilder/27400/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -258,7 +290,7 @@ Get: 135 http://deb.debian.org/debian unstable/main armhf ruby-rspec-mocks all 3.13.0c0e0m0s1-2 [81.3 kB] Get: 136 http://deb.debian.org/debian unstable/main armhf ruby-rspec all 3.13.0c0e0m0s1-2 [5184 B] Get: 137 http://deb.debian.org/debian unstable/main armhf ruby-semverse all 2.0.0-1 [6818 B] -Fetched 40.8 MB in 1s (34.0 MB/s) +Fetched 40.8 MB in 1s (32.5 MB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package libpython3.11-minimal:armhf. (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 ... 19463 files and directories currently installed.) @@ -714,8 +746,8 @@ Setting up tzdata (2024a-4) ... Current default time zone: 'Etc/UTC' -Local time is now: Tue May 21 08:43:55 UTC 2024. -Universal Time is now: Tue May 21 08:43:55 UTC 2024. +Local time is now: Tue May 21 08:48:32 UTC 2024. +Universal Time is now: Tue May 21 08:48:32 UTC 2024. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up autotools-dev (20220109.1) ... @@ -845,7 +877,11 @@ fakeroot is already the newest version (1.33-1). 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. I: Building the package -I: Running cd /build/reproducible-path/ruby-solve-4.0.4/ && 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-solve_4.0.4-1_source.changes +I: user script /srv/workspace/pbuilder/27400/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for unstable +I: user script /srv/workspace/pbuilder/27400/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/reproducible-path/ruby-solve-4.0.4/ && 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-solve_4.0.4-1_source.changes dpkg-buildpackage: info: source package ruby-solve dpkg-buildpackage: info: source version 4.0.4-1 dpkg-buildpackage: info: source distribution unstable @@ -917,85 +953,80 @@ All examples were filtered out; ignoring {:focus=>true} -Randomized with seed 40018 +Randomized with seed 64396 -Solve::Artifact - #dependency - returns an instance of Solve::Dependency matching the given name and constraint - #depends - given only a name argument - adds a dependency with a all constraint (>= 0.0.0) - given a name and constraint argument - given the dependency of the given name and constraint does not exist - returns a Solve::Artifact - adds a dependency with the given name and constraint to the list of dependencies - #dependencies - returns an array - returns an empty array if no dependencies have been accessed - returns all dependencies - sorting - orders artifacts by their version number +Solve + ClassMethods + #it! + raises NoSolutionError if a solution does not exist (PENDING: No reason given) + #it + returns nil if a solution does not exist (PENDING: No reason given) + +Solve::Demand + #initialize + accepts a string for the constraint parameter + accepts a Semverse::Constraint for the constraint parameter + when no value for 'constraint' is given + uses a default of >= 0.0.0 equality - given an artifact with the same version but different name - is not equal - given an artifact with the same name but different version - is not equal - given an artifact with the same name and version - is equal - #dependency? - returns false when the dependency does not exist - returns true when the dependendency exists + returns true when other is a Solve::Demand with the same name and constriant + returns false when other isn't a Solve::Demand + returns false when other is a Solve::Demand with the same constraint but a different name + returns false when other is a Solve::Demand with the same name but a different constraint + +Solve::Dependency + #initialize + uses a default of >= 0.0.0 + #== + returns true if the other object is an instance of Solve::Dependency with the same constraint and artifact + +Solve::Solver::Serializer + creates a problem from a solver + deserializes a serialized problem to an equivalent problem Solve::Graph - #artifact? - returns false if the given Solve::Artifact is not a member of the collection - returns true if the given Solve::Artifact is a member of the collection - #artifacts - returns an array containing an artifact if one was accessed - returns an array - returns an empty array if no artifacts have been accessed #find - returns an instance of artifact of the matching name and version returns nil when the artifact does not exist - #versions - does not satisfy constraints if it is the default - returns all the artifacts matching the given name - returns only matching constraints if one is given + returns an instance of artifact of the matching name and version #artifact given the artifact of the given name and version does not exist - adds an artifact to the artifacts collection the artifact has the given version + adds an artifact to the artifacts collection returns a Solve::Artifact the artifact has the given name == - returns false if the other has the same artifacts but different dependencies returns true if the other is the same - returns false if the other has the same dependencies but different artifacts returns false if other isn't a Solve::Graph - -Solve::Demand - #initialize - accepts a string for the constraint parameter - accepts a Semverse::Constraint for the constraint parameter - when no value for 'constraint' is given - uses a default of >= 0.0.0 - equality - returns false when other is a Solve::Demand with the same constraint but a different name - returns false when other isn't a Solve::Demand - returns false when other is a Solve::Demand with the same name but a different constraint - returns true when other is a Solve::Demand with the same name and constriant + returns false if the other has the same artifacts but different dependencies + returns false if the other has the same dependencies but different artifacts + #artifact? + returns false if the given Solve::Artifact is not a member of the collection + returns true if the given Solve::Artifact is a member of the collection + #artifacts + returns an array containing an artifact if one was accessed + returns an empty array if no artifacts have been accessed + returns an array + #versions + returns only matching constraints if one is given + does not satisfy constraints if it is the default + returns all the artifacts matching the given name Solve::RubySolver - has a list of demands as model objects has a graph has a list of demands as ruby literals + has a list of demands as model objects when the constraints are not solvable - and molinillo identifies missing artifacts - raises an error detailing the missing artifacts and molinillo identifies constraints that exclude all known versions raises an error detailing the missing artifacts and molinillo identifies dependency conflicts raises an error detailing the missing artifacts + and molinillo identifies missing artifacts + raises an error detailing the missing artifacts + supporting Serializer interface + implements the required interface + when the constraints are solvable + gives the solution as a Hash + gives the solution in sorted form ClassMethods ::timeout returns 30,000 by default @@ -1003,43 +1034,21 @@ returns the value multiplied by a thousand ::activate is a no-op - supporting Serializer interface - implements the required interface - when the constraints are solvable - gives the solution in sorted form - gives the solution as a Hash - -Solve - ClassMethods - #it - returns nil if a solution does not exist (PENDING: No reason given) - #it! - raises NoSolutionError if a solution does not exist (PENDING: No reason given) - -Solve::Dependency - #== - returns true if the other object is an instance of Solve::Dependency with the same constraint and artifact - #initialize - uses a default of >= 0.0.0 - -Solve::Solver::Serializer - creates a problem from a solver - deserializes a serialized problem to an equivalent problem Solutions when using the ruby solver - gives an empty solution when there are no demands - solves when packages and constraints have prerelease elements + finds the correct solution when there is a diamond shaped dependency tries all combinations until it finds a solution - solves when packages and constraints have build elements rejects a p shaped depenency chain with a circular dep error - finds the correct solution when there is a diamond shaped dependency + solves when packages and constraints have build elements fails with a self dependency - raises NoSolutionError when a solution cannot be found - find the correct solution when backtracking in variables introduced via demands - correctly resolves when a resolution exists but it is not the latest - chooses the best artifact for the demands rejects a circular dependency with a circular dep error chooses the correct artifact for the demands + chooses the best artifact for the demands + gives an empty solution when there are no demands + correctly resolves when a resolution exists but it is not the latest + raises NoSolutionError when a solution cannot be found + solves when packages and constraints have prerelease elements + find the correct solution when backtracking in variables introduced via demands when options[:sorted] is true with a simple list of dependencies returns a sorted list of dependencies @@ -1048,21 +1057,48 @@ with a constraint that depends upon an earlier constrained artifact returns a sorted list of dependencies +Solve::Artifact + #dependency + returns an instance of Solve::Dependency matching the given name and constraint + #depends + given a name and constraint argument + given the dependency of the given name and constraint does not exist + adds a dependency with the given name and constraint to the list of dependencies + returns a Solve::Artifact + given only a name argument + adds a dependency with a all constraint (>= 0.0.0) + equality + given an artifact with the same version but different name + is not equal + given an artifact with the same name but different version + is not equal + given an artifact with the same name and version + is equal + sorting + orders artifacts by their version number + #dependency? + returns true when the dependendency exists + returns false when the dependency does not exist + #dependencies + returns an empty array if no dependencies have been accessed + returns an array + returns all dependencies + Pending: (Failures listed here are expected and do not affect your suite's status) - 1) Solve ClassMethods #it returns nil if a solution does not exist + 1) Solve ClassMethods #it! raises NoSolutionError if a solution does not exist # No reason given - # ./spec/unit/solve_spec.rb:8 + # ./spec/unit/solve_spec.rb:14 - 2) Solve ClassMethods #it! raises NoSolutionError if a solution does not exist + 2) Solve ClassMethods #it returns nil if a solution does not exist # No reason given - # ./spec/unit/solve_spec.rb:14 + # ./spec/unit/solve_spec.rb:8 Deprecation Warnings: -Using `should` from rspec-expectations' old `:should` syntax without explicitly enabling the syntax is deprecated. Use the new `:expect` syntax or explicitly enable `:should` with `config.expect_with(:rspec) { |c| c.syntax = :should }` instead. Called from /build/reproducible-path/ruby-solve-4.0.4/spec/unit/solve/ruby_solver_spec.rb:43:in `block (2 levels) in '. +Using `should` from rspec-expectations' old `:should` syntax without explicitly enabling the syntax is deprecated. Use the new `:expect` syntax or explicitly enable `:should` with `config.expect_with(:rspec) { |c| c.syntax = :should }` instead. Called from /build/reproducible-path/ruby-solve-4.0.4/spec/unit/solve/solver/serializer_spec.rb:23:in `block (2 levels) in '. -Using `stub` from rspec-mocks' old `:should` syntax without explicitly enabling the syntax is deprecated. Use the new `:expect` syntax or explicitly enable `:should` instead. Called from /build/reproducible-path/ruby-solve-4.0.4/spec/unit/solve/artifact_spec.rb:7:in `block (2 levels) in '. +Using `stub` from rspec-mocks' old `:should` syntax without explicitly enabling the syntax is deprecated. Use the new `:expect` syntax or explicitly enable `:should` instead. Called from /build/reproducible-path/ruby-solve-4.0.4/spec/unit/solve/ruby_solver_spec.rb:150:in `block (3 levels) in '. If you need more of the backtrace for any of these deprecations to @@ -1072,10 +1108,10 @@ 2 deprecation warnings total -Finished in 0.36868 seconds (files took 1.26 seconds to load) +Finished in 0.2823 seconds (files took 0.71896 seconds to load) 72 examples, 0 failures, 2 pending -Randomized with seed 40018 +Randomized with seed 64396 ┌──────────────────────────────────────────────────────────────────────────────┐ @@ -1107,12 +1143,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/27400/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/27400/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/15298 and its subdirectories -I: Current time: Mon May 20 20:45:39 -12 2024 -I: pbuilder-time-stamp: 1716281139 +I: removing directory /srv/workspace/pbuilder/27400 and its subdirectories +I: Current time: Tue May 21 22:49:31 +14 2024 +I: pbuilder-time-stamp: 1716281371