Diff of the two buildlogs: -- --- b1/build.log 2025-07-19 09:01:36.875682609 +0000 +++ b2/build.log 2025-07-19 09:04:26.807933031 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Fri Jul 18 20:58:45 -12 2025 -I: pbuilder-time-stamp: 1752915525 +I: Current time: Sat Aug 22 05:24:39 +14 2026 +I: pbuilder-time-stamp: 1787325879 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/trixie-reproducible-base.tgz] I: copying local configuration @@ -22,51 +22,83 @@ dpkg-source: info: unpacking opkssh_0.4.0-1.debian.tar.xz I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/2889385/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/2205142/tmp/hooks/D01_modify_environment starting +debug: Running on infom02-amd64. +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 Aug 21 15:24 /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/2205142/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/2205142/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='amd64' - DEBIAN_FRONTEND='noninteractive' - DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=12 ' - DISTRIBUTION='trixie' - HOME='/root' - HOST_ARCH='amd64' + 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]="x86_64-pc-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=amd64 + DEBIAN_FRONTEND=noninteractive + DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=16 ' + DIRSTACK=() + DISTRIBUTION=trixie + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=x86_64 + HOST_ARCH=amd64 IFS=' ' - INVOCATION_ID='e5a6d392a9514824b7fa63479b236453' - 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='2889385' - PS1='# ' - PS2='> ' + INVOCATION_ID=8741dc9f585d44628e7796c0bcee918b + LANG=C + LANGUAGE=et_EE:et + LC_ALL=C + MACHTYPE=x86_64-pc-linux-gnu + MAIL=/var/mail/root + OPTERR=1 + OPTIND=1 + OSTYPE=linux-gnu + PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path + PBCURRENTCOMMANDLINEOPERATION=build + PBUILDER_OPERATION=build + PBUILDER_PKGDATADIR=/usr/share/pbuilder + PBUILDER_PKGLIBDIR=/usr/lib/pbuilder + PBUILDER_SYSCONFDIR=/etc + PIPESTATUS=([0]="0") + POSIXLY_CORRECT=y + PPID=2205142 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.RvzNeFIx/pbuilderrc_QnSE --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.RvzNeFIx/b1 --logfile b1/build.log opkssh_0.4.0-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' + 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.RvzNeFIx/pbuilderrc_zgSo --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.RvzNeFIx/b2 --logfile b2/build.log opkssh_0.4.0-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' I: uname -a - Linux infom01-amd64 6.1.0-37-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (2025-05-22) x86_64 GNU/Linux + Linux i-capture-the-hostname 6.12.32+bpo-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.32-1~bpo12+1 (2025-06-21) x86_64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 May 12 19:25 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/2889385/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 May 12 2025 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/2205142/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -300,7 +332,7 @@ Get: 172 http://deb.debian.org/debian trixie/main amd64 golang-gopkg-ini.v1-dev all 1.67.0-1 [39.9 kB] Get: 173 http://deb.debian.org/debian trixie/main amd64 golang-github-spf13-viper-dev all 1.12.0-1 [68.9 kB] Get: 174 http://deb.debian.org/debian trixie/main amd64 golang-github-spf13-cobra-dev all 1.8.1-1 [75.2 kB] -Fetched 140 MB in 2s (60.8 MB/s) +Fetched 140 MB in 3s (49.6 MB/s) Preconfiguring packages ... Selecting previously unselected package golang-golang-x-sys-dev. (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 ... 19850 files and directories currently installed.) @@ -870,8 +902,8 @@ Setting up tzdata (2025b-4) ... Current default time zone: 'Etc/UTC' -Local time is now: Sat Jul 19 09:00:56 UTC 2025. -Universal Time is now: Sat Jul 19 09:00:56 UTC 2025. +Local time is now: Fri Aug 21 15:26:35 UTC 2026. +Universal Time is now: Fri Aug 21 15:26:35 UTC 2026. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up golang-github-cespare-xxhash-dev (2.3.0-1) ... @@ -1017,7 +1049,11 @@ Building tag database... -> Finished parsing the build-deps I: Building the package -I: Running cd /build/reproducible-path/opkssh-0.4.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 > ../opkssh_0.4.0-1_source.changes +I: user script /srv/workspace/pbuilder/2205142/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for trixie +I: user script /srv/workspace/pbuilder/2205142/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/reproducible-path/opkssh-0.4.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 > ../opkssh_0.4.0-1_source.changes dpkg-buildpackage: info: source package opkssh dpkg-buildpackage: info: source version 0.4.0-1 dpkg-buildpackage: info: source distribution unstable @@ -1035,46 +1071,42 @@ dh_autoreconf -O--builddirectory=_build -O--buildsystem=golang dh_auto_configure -O--builddirectory=_build -O--buildsystem=golang dh_auto_build -O--builddirectory=_build -O--buildsystem=golang - cd _build && go install -trimpath -v -p 12 github.com/openpubkey/opkssh github.com/openpubkey/opkssh/commands github.com/openpubkey/opkssh/internal/projectpath github.com/openpubkey/opkssh/policy github.com/openpubkey/opkssh/policy/files github.com/openpubkey/opkssh/sshcert + cd _build && go install -trimpath -v -p 16 github.com/openpubkey/opkssh github.com/openpubkey/opkssh/commands github.com/openpubkey/opkssh/internal/projectpath github.com/openpubkey/opkssh/policy github.com/openpubkey/opkssh/policy/files github.com/openpubkey/opkssh/sshcert internal/godebugs -internal/coverage/rtcov +internal/goarch +internal/goos internal/byteorder internal/unsafeheader -internal/goos internal/msan +internal/cpu +internal/runtime/atomic internal/asan -internal/goarch +internal/itoa internal/profilerecord +cmp internal/runtime/syscall +math/bits internal/goexperiment -internal/runtime/atomic +sync/atomic +internal/coverage/rtcov internal/abi -internal/runtime/math internal/runtime/sys -sync/atomic -internal/cpu -math/bits -internal/itoa -cmp +internal/runtime/math unicode/utf8 -internal/chacha8rand -unicode crypto/internal/fips140/alias -crypto/internal/fips140deps/byteorder crypto/internal/boring/sig +unicode encoding unicode/utf16 +internal/chacha8rand +crypto/internal/fips140deps/byteorder container/list -crypto/internal/fips140/subtle golang.org/x/crypto/internal/alias -golang.org/x/crypto/salsa20/salsa -internal/runtime/exithook +crypto/internal/fips140/subtle internal/nettrace +golang.org/x/crypto/salsa20/salsa vendor/golang.org/x/crypto/cryptobyte/asn1 vendor/golang.org/x/crypto/internal/alias -math -internal/bytealg -crypto/internal/fips140deps/cpu log/internal log/slog/internal go.opentelemetry.io/otel/metric/embedded @@ -1083,76 +1115,80 @@ github.com/zitadel/oidc/pkg/oidc/grants/tokenexchange github.com/openpubkey/openpubkey/cosigner/msgs golang.org/x/exp/constraints +crypto/internal/fips140deps/cpu +internal/bytealg +math +internal/runtime/exithook golang.org/x/exp/slices internal/stringslite internal/race -internal/runtime/maps internal/sync +internal/runtime/maps go.opentelemetry.io/otel/internal runtime -internal/reflectlite iter +internal/reflectlite crypto/subtle weak sync maps slices +errors +sort internal/bisect -internal/singleflight internal/testlog -unique +internal/singleflight log/slog/internal/buffer +unique runtime/cgo -errors internal/oserror -internal/godebug -sort +strconv path math/rand/v2 -vendor/golang.org/x/net/dns/dnsmessage -crypto/internal/fips140deps/godebug -math/rand -golang.org/x/text/internal/tag io -strconv +vendor/golang.org/x/net/dns/dnsmessage syscall hash +internal/godebug bytes strings crypto/internal/randutil internal/saferio +golang.org/x/text/internal/tag hash/crc32 crypto +net/netip reflect golang.org/x/crypto/blowfish -net/netip -crypto/internal/fips140 -net/http/internal/ascii +crypto/internal/fips140deps/godebug +math/rand +vendor/golang.org/x/text/transform +golang.org/x/text/transform crypto/internal/impl +bufio regexp/syntax +net/http/internal/ascii +crypto/internal/fips140 net/http/internal/testcert html -bufio -vendor/golang.org/x/text/transform -golang.org/x/text/transform crypto/internal/fips140/sha256 crypto/internal/fips140/sha3 crypto/internal/fips140/sha512 crypto/tls/internal/fips140tls golang.org/x/text/runes -crypto/internal/fips140/hmac +internal/syscall/execenv +time +internal/syscall/unix crypto/sha3 -crypto/internal/fips140hash +crypto/internal/fips140/hmac crypto/internal/fips140/check -crypto/internal/fips140/bigmod +crypto/internal/fips140hash crypto/internal/fips140/aes -crypto/internal/fips140/nistec/fiat -crypto/internal/fips140/edwards25519/field +crypto/internal/fips140/bigmod crypto/internal/fips140/hkdf -time -internal/syscall/execenv -internal/syscall/unix crypto/internal/fips140/tls12 +crypto/internal/fips140/edwards25519/field +crypto/internal/fips140/nistec/fiat regexp crypto/internal/fips140/tls13 crypto/internal/fips140/edwards25519 @@ -1164,24 +1200,24 @@ internal/filepathlite embed github.com/spf13/afero/internal/common +os internal/fmtsort go.opentelemetry.io/otel/internal/attribute encoding/binary -os encoding/base64 golang.org/x/crypto/internal/poly1305 vendor/golang.org/x/crypto/internal/poly1305 golang.org/x/sys/unix encoding/pem golang.org/x/crypto/nacl/secretbox +crypto/internal/sysrand fmt os/signal -crypto/internal/sysrand golang.org/x/sys/cpu +vendor/golang.org/x/sys/cpu +path/filepath io/ioutil internal/sysinfo -path/filepath -vendor/golang.org/x/sys/cpu net crypto/internal/entropy crypto/internal/fips140/drbg @@ -1190,66 +1226,81 @@ os/exec github.com/openpubkey/opkssh/internal/projectpath github.com/spf13/afero/mem -crypto/internal/fips140/aes/gcm -crypto/internal/fips140only +crypto/internal/fips140/ed25519 +crypto/internal/fips140/mlkem crypto/internal/fips140/rsa +crypto/internal/fips140only crypto/internal/fips140/ecdh +crypto/internal/fips140/aes/gcm crypto/internal/fips140/ecdsa -crypto/md5 -crypto/internal/fips140/ed25519 -crypto/internal/fips140/mlkem crypto/rc4 +crypto/md5 crypto/cipher +crypto/internal/boring +crypto/des +vendor/golang.org/x/crypto/chacha20 +golang.org/x/crypto/chacha20 math/big -encoding/json database/sql/driver +compress/flate encoding/hex +encoding/json github.com/lestrrat-go/option github.com/lestrrat-go/blackmagic github.com/lestrrat-go/httpcc -compress/flate net/url -github.com/lestrrat-go/jwx/jwa -crypto/internal/boring -crypto/des -vendor/golang.org/x/crypto/chacha20 +log crypto/sha1 +github.com/lestrrat-go/jwx/jwa crypto/ecdh crypto/sha512 crypto/aes crypto/hmac -vendor/golang.org/x/crypto/chacha20poly1305 crypto/sha256 -compress/gzip -log +vendor/golang.org/x/crypto/chacha20poly1305 vendor/golang.org/x/text/unicode/norm vendor/golang.org/x/net/http2/hpack mime mime/quotedprintable net/http/internal -vendor/golang.org/x/text/unicode/bidi github.com/lestrrat-go/iter/arrayiter github.com/lestrrat-go/iter/mapiter +vendor/golang.org/x/text/unicode/bidi github.com/lestrrat-go/jwx/internal/base64 golang.org/x/crypto/curve25519 -github.com/lestrrat-go/jwx/internal/iter github.com/go-jose/go-jose/json golang.org/x/crypto/pbkdf2 -github.com/awnumar/memcall encoding/gob +github.com/lestrrat-go/jwx/internal/iter github.com/muhlemmer/gu github.com/zitadel/schema -golang.org/x/text/internal/language go.opentelemetry.io/otel/baggage +compress/gzip +golang.org/x/text/internal/language github.com/davecgh/go-spew/spew github.com/pmezard/go-difflib/difflib -vendor/golang.org/x/text/secure/bidirule gopkg.in/yaml.v3 -vendor/golang.org/x/net/idna flag runtime/debug +vendor/golang.org/x/text/secure/bidirule +runtime/trace +text/template/parse +golang.org/x/text/unicode/norm +os/user +github.com/awnumar/memcall +golang.org/x/crypto/ssh/internal/bcrypt_pbkdf +encoding/csv +testing github.com/lestrrat-go/jwx/internal/json github.com/sirupsen/logrus +log/slog +go.opentelemetry.io/otel/attribute +go.opentelemetry.io/otel/codes +vendor/golang.org/x/net/idna +golang.org/x/text/internal/language/compact +go.opentelemetry.io/otel/trace +go.opentelemetry.io/otel/metric +text/template crypto/rand crypto/internal/boring/bbig crypto/elliptic @@ -1260,39 +1311,24 @@ crypto/internal/hpke crypto/dsa github.com/lestrrat-go/jwx/internal/pool -github.com/awnumar/memguard -github.com/lestrrat-go/jwx/internal/ecutil github.com/lestrrat-go/jwx/x25519 golang.org/x/crypto/ed25519 filippo.io/bigmod -log/slog -golang.org/x/text/internal/language/compact -vendor/golang.org/x/crypto/cryptobyte -crypto/x509/pkix -go.opentelemetry.io/otel/attribute -go.opentelemetry.io/otel/codes -runtime/trace -text/template/parse golang.org/x/text/language -testing -golang.org/x/text/unicode/norm -os/user -github.com/gorilla/securecookie -golang.org/x/crypto/chacha20 -go.opentelemetry.io/otel/metric -crypto/ecdsa -go.opentelemetry.io/otel/trace -golang.org/x/crypto/ssh/internal/bcrypt_pbkdf -encoding/csv -text/template github.com/go-logr/logr -github.com/stretchr/testify/assert/yaml +github.com/awnumar/memguard +github.com/lestrrat-go/jwx/internal/ecutil +github.com/gorilla/securecookie github.com/go-logr/logr/funcr -github.com/go-jose/go-jose/cipher +vendor/golang.org/x/crypto/cryptobyte +crypto/x509/pkix +github.com/stretchr/testify/assert/yaml github.com/go-logr/stdr +crypto/ecdsa html/template -vendor/golang.org/x/net/http/httpproxy +github.com/go-jose/go-jose/cipher net/textproto +vendor/golang.org/x/net/http/httpproxy github.com/google/uuid crypto/x509 github.com/spf13/pflag @@ -1301,22 +1337,22 @@ github.com/spf13/cobra github.com/lestrrat-go/jwx/cert github.com/lestrrat-go/jwx/jwk/internal/x509 -github.com/go-jose/go-jose github.com/openpubkey/openpubkey/util -crypto/tls +github.com/go-jose/go-jose golang.org/x/crypto/ssh +crypto/tls github.com/openpubkey/openpubkey/oidc github.com/zitadel/oidc/pkg/crypto net/http/httptrace net/http github.com/lestrrat-go/httprc -github.com/zitadel/logging -github.com/spf13/afero golang.org/x/oauth2/internal -go.opentelemetry.io/otel/propagation net/http/httptest -golang.org/x/oauth2 +go.opentelemetry.io/otel/propagation +github.com/zitadel/logging +github.com/spf13/afero go.opentelemetry.io/otel/internal/global +golang.org/x/oauth2 github.com/lestrrat-go/jwx/jwk github.com/stretchr/testify/assert golang.org/x/oauth2/clientcredentials @@ -1329,8 +1365,8 @@ github.com/stretchr/testify/require github.com/lestrrat-go/jwx/internal/keyconv github.com/lestrrat-go/jwx/jws -github.com/openpubkey/openpubkey/pktoken/clientinstance github.com/openpubkey/openpubkey/gq +github.com/openpubkey/openpubkey/pktoken/clientinstance github.com/openpubkey/openpubkey/pktoken github.com/openpubkey/openpubkey/discover github.com/openpubkey/openpubkey/providers/mocks @@ -1344,7 +1380,7 @@ github.com/openpubkey/opkssh/commands github.com/openpubkey/opkssh dh_auto_test -O--builddirectory=_build -O--buildsystem=golang - cd _build && go test -vet=off -v -p 12 github.com/openpubkey/opkssh github.com/openpubkey/opkssh/commands github.com/openpubkey/opkssh/internal/projectpath github.com/openpubkey/opkssh/policy github.com/openpubkey/opkssh/policy/files github.com/openpubkey/opkssh/sshcert + cd _build && go test -vet=off -v -p 16 github.com/openpubkey/opkssh github.com/openpubkey/opkssh/commands github.com/openpubkey/opkssh/internal/projectpath github.com/openpubkey/opkssh/policy github.com/openpubkey/opkssh/policy/files github.com/openpubkey/opkssh/sshcert === RUN TestIsOpenSSHVersion8Dot1OrGreater === RUN TestIsOpenSSHVersion8Dot1OrGreater/Exact_8.1 === RUN TestIsOpenSSHVersion8Dot1OrGreater/Above_8.1_(8.4) @@ -1383,7 +1419,7 @@ === RUN TestRun/Login_command_with_provider_bad_provider_good_azure_issuer_but_no_client_id_value === RUN TestRun/Login_command_with_provider_bad_provider_good_google_issuer_but_no_client_id_value === RUN TestRun/Login_command_with_provider_bad_provider_good_google_issuer_but_no_client_secret_value ---- PASS: TestRun (0.00s) +--- PASS: TestRun (0.01s) --- PASS: TestRun/No_arguments (0.00s) --- PASS: TestRun/Root_Help_flag (0.00s) --- PASS: TestRun/Add_Help_flag (0.00s) @@ -1400,17 +1436,17 @@ --- PASS: TestRun/Login_command_with_provider_bad_provider_good_google_issuer_but_no_client_id_value (0.00s) --- PASS: TestRun/Login_command_with_provider_bad_provider_good_google_issuer_but_no_client_secret_value (0.00s) PASS -ok github.com/openpubkey/opkssh 0.007s +ok github.com/openpubkey/opkssh 0.012s === RUN TestAddErrors --- PASS: TestAddErrors (0.00s) === RUN TestCreateSSHCert ---- PASS: TestCreateSSHCert (0.39s) +--- PASS: TestCreateSSHCert (0.50s) === RUN TestIdentityString ---- PASS: TestIdentityString (0.49s) +--- PASS: TestIdentityString (0.99s) === RUN TestAuthorizedKeysCommand ---- PASS: TestAuthorizedKeysCommand (0.42s) +--- PASS: TestAuthorizedKeysCommand (0.44s) PASS -ok github.com/openpubkey/opkssh/commands 1.303s +ok github.com/openpubkey/opkssh/commands 1.929s ? github.com/openpubkey/opkssh/internal/projectpath [no test files] === RUN TestProvidersPolicyRow_GetExpirationPolicy --- PASS: TestProvidersPolicyRow_GetExpirationPolicy (0.00s) @@ -1475,94 +1511,98 @@ === RUN TestDump_Success === PAUSE TestDump_Success === CONT TestPolicyApproved -=== CONT TestLoadUserPolicy_FailUserLookup ---- PASS: TestLoadUserPolicy_FailUserLookup (0.00s) -=== CONT TestLoadPolicyAtPath_FileMissing ---- PASS: TestLoadPolicyAtPath_FileMissing (0.00s) -=== CONT TestLoadUserPolicy_Success_SkipInvalidEntries === CONT TestLoadPolicyAtPath_BadPermissions ---- PASS: TestLoadUserPolicy_Success_SkipInvalidEntries (0.00s) -=== CONT TestLoadUserPolicy_Success ---- PASS: TestLoadUserPolicy_Success (0.00s) -=== CONT TestLoadUserPolicy_ErrorFile ---- PASS: TestLoadUserPolicy_ErrorFile (0.00s) -=== CONT TestLoadUserPolicy_NoUserHomeDir ---- PASS: TestLoadUserPolicy_NoUserHomeDir (0.00s) -=== CONT TestLoadSystemDefaultPolicy_Success ---- PASS: TestLoadSystemDefaultPolicy_Success (0.00s) -=== CONT TestDump_Success ---- PASS: TestDump_Success (0.00s) --- PASS: TestLoadPolicyAtPath_BadPermissions (0.00s) -=== CONT TestLoadSystemDefaultPolicy_ErrorFile === CONT TestLoadPolicyAtPath_ReadError ---- PASS: TestLoadSystemDefaultPolicy_ErrorFile (0.00s) -=== CONT TestPolicyApprovedOidcGroupWithAtSign --- PASS: TestLoadPolicyAtPath_ReadError (0.00s) -=== CONT TestPolicyDeniedNoUserEntry -=== CONT TestPolicyDeniedBadUser +=== CONT TestDump_Success +--- PASS: TestDump_Success (0.00s) +=== CONT TestPolicyApprovedOidcGroupWithAtSign +=== CONT TestLoadSystemDefaultPolicy_Success +=== CONT TestPolicyDeniedOidcGroups +=== CONT TestLoadSystemDefaultPolicy_ErrorFile === CONT TestPolicyEmailDifferentCase -=== CONT TestPolicyApprovedOidcGroups === CONT TestLoad === RUN TestLoad/both_policies_are_missing +=== CONT TestAddAllowedPrincipal +=== NAME TestLoad/both_policies_are_missing multipolicyloader_test.go:187: Root policy: (*policy.Policy)(nil) multipolicyloader_test.go:188: User policy: (*policy.Policy)(nil) -2025/07/18 21:01:23 warning: failed to load system default policy: failed to read system default policy file /etc/opk/auth_id: failed to describe the file at path: open /etc/opk/auth_id: file does not exist -2025/07/18 21:01:23 warning: failed to load user policy: failed to read user policy file /home/foo/.opk/auth_id: error reading foo home policy using command sudo -n /usr/local/bin/opkssh readhome foo got output and err exec: "sudo": executable file not found in $PATH -=== RUN TestLoad/only_root_policy_exists - multipolicyloader_test.go:187: Root policy: &policy.Policy{Users:[]policy.User{policy.User{IdentityAttribute:"alice@example.com", Principals:[]string{"test"}, Issuer:"https://example.com"}}} - multipolicyloader_test.go:188: User policy: (*policy.Policy)(nil) -2025/07/18 21:01:23 warning: failed to load user policy: failed to read user policy file /home/foo/.opk/auth_id: error reading foo home policy using command sudo -n /usr/local/bin/opkssh readhome foo got output and err exec: "sudo": executable file not found in $PATH -=== RUN TestLoad/only_user_policy_exists - multipolicyloader_test.go:187: Root policy: (*policy.Policy)(nil) - multipolicyloader_test.go:188: User policy: &policy.Policy{Users:[]policy.User{policy.User{IdentityAttribute:"alice@example.com", Principals:[]string{"foo", "bob"}, Issuer:"https://example.com"}}} -2025/07/18 21:01:23 warning: failed to load system default policy: failed to read system default policy file /etc/opk/auth_id: failed to describe the file at path: open /etc/opk/auth_id: file does not exist -=== RUN TestLoad/both_user_and_root_policy_exist - multipolicyloader_test.go:187: Root policy: &policy.Policy{Users:[]policy.User{policy.User{IdentityAttribute:"alice@example.com", Principals:[]string{"test"}, Issuer:"https://example.com"}, policy.User{IdentityAttribute:"charlie@example.com", Principals:[]string{"test"}, Issuer:"https://example.com"}}} - multipolicyloader_test.go:188: User policy: &policy.Policy{Users:[]policy.User{policy.User{IdentityAttribute:"alice@example.com", Principals:[]string{"foo"}, Issuer:"https://example.com"}, policy.User{IdentityAttribute:"bob@example.com", Principals:[]string{"foo"}, Issuer:"https://example.com"}}} -=== RUN TestLoad/both_user_and_root_policy_exist_but_no_valid_user_policy_entries - multipolicyloader_test.go:187: Root policy: &policy.Policy{Users:[]policy.User{policy.User{IdentityAttribute:"alice@example.com", Principals:[]string{"test"}, Issuer:"https://example.com"}, policy.User{IdentityAttribute:"charlie@example.com", Principals:[]string{"test"}, Issuer:"https://example.com"}}} - multipolicyloader_test.go:188: User policy: &policy.Policy{Users:[]policy.User{policy.User{IdentityAttribute:"alice@example.com", Principals:[]string{"test"}, Issuer:"https://example.com"}, policy.User{IdentityAttribute:"bob@example.com", Principals:[]string{"test", "test2"}, Issuer:"https://example.com"}, policy.User{IdentityAttribute:"charlie@example.com", Principals:[]string{"test", "test2", "test3"}, Issuer:"https://example.com"}}} -2025/07/18 21:01:23 warning: user policy /home/foo/.opk/auth_id has no valid user entries; an entry is considered valid if it gives foo access. ---- PASS: TestLoad (0.00s) - --- PASS: TestLoad/both_policies_are_missing (0.00s) - --- PASS: TestLoad/only_root_policy_exists (0.00s) - --- PASS: TestLoad/only_user_policy_exists (0.00s) - --- PASS: TestLoad/both_user_and_root_policy_exist (0.00s) - --- PASS: TestLoad/both_user_and_root_policy_exist_but_no_valid_user_policy_entries (0.00s) -=== CONT TestAddAllowedPrincipal === RUN TestAddAllowedPrincipal/empty_policy +2026/08/22 05:27:11 warning: failed to load system default policy: failed to read system default policy file /etc/opk/auth_id: failed to describe the file at path: open /etc/opk/auth_id: file does not exist +=== CONT TestLoadUserPolicy_Success +=== CONT TestLoadPolicyAtPath_FileMissing +=== CONT TestLoadUserPolicy_Success_SkipInvalidEntries +=== CONT TestPolicyDeniedNoUserEntry +=== CONT TestPolicyApprovedOidcGroups +=== CONT TestPolicyDeniedWrongIssuer +=== CONT TestPolicyDeniedMissingOidcGroupsClaim +=== CONT TestLoadUserPolicy_FailUserLookup +=== CONT TestLoadUserPolicy_NoUserHomeDir +--- PASS: TestLoadSystemDefaultPolicy_Success (0.00s) +--- PASS: TestLoadSystemDefaultPolicy_ErrorFile (0.00s) +=== CONT TestPolicyDeniedBadUser +=== NAME TestAddAllowedPrincipal/empty_policy policy_test.go:128: AddAllowedPrincipal(principal=test, userEmail=alice@example.com) policy_test.go:129: Initial policy: &policy.Policy{Users:[]policy.User(nil)} === RUN TestAddAllowedPrincipal/non-empty_policy._user_not_found +2026/08/22 05:27:11 warning: failed to load user policy: failed to read user policy file /home/foo/.opk/auth_id: error reading foo home policy using command sudo -n /usr/local/bin/opkssh readhome foo got output and err exec: "sudo": executable file not found in $PATH policy_test.go:128: AddAllowedPrincipal(principal=test, userEmail=bob@example.com) policy_test.go:129: Initial policy: &policy.Policy{Users:[]policy.User{policy.User{IdentityAttribute:"alice@example.com", Principals:[]string{"test", "test2"}, Issuer:"https://example.com"}}} +--- PASS: TestLoadUserPolicy_Success (0.00s) === RUN TestAddAllowedPrincipal/user_already_exists._new_principal +=== CONT TestLoadUserPolicy_ErrorFile +--- PASS: TestLoadUserPolicy_ErrorFile (0.00s) +=== RUN TestLoad/only_root_policy_exists +--- PASS: TestLoadPolicyAtPath_FileMissing (0.00s) +--- PASS: TestLoadUserPolicy_FailUserLookup (0.00s) +--- PASS: TestLoadUserPolicy_NoUserHomeDir (0.00s) +=== NAME TestAddAllowedPrincipal/user_already_exists._new_principal policy_test.go:128: AddAllowedPrincipal(principal=test3, userEmail=alice@example.com) policy_test.go:129: Initial policy: &policy.Policy{Users:[]policy.User{policy.User{IdentityAttribute:"alice@example.com", Principals:[]string{"test", "test2"}, Issuer:"https://example.com"}}} -2025/07/18 21:01:23 Successfully added user with email alice@example.com with principal test3 to the policy file +2026/08/22 05:27:11 Successfully added user with email alice@example.com with principal test3 to the policy file === RUN TestAddAllowedPrincipal/user_already_exists._principal_not_new. policy_test.go:128: AddAllowedPrincipal(principal=test, userEmail=alice@example.com) policy_test.go:129: Initial policy: &policy.Policy{Users:[]policy.User{policy.User{IdentityAttribute:"alice@example.com", Principals:[]string{"test"}, Issuer:"https://example.com"}}} -2025/07/18 21:01:23 User with email alice@example.com already has access under the principal test, skipping... +2026/08/22 05:27:11 User with email alice@example.com already has access under the principal test, skipping... --- PASS: TestAddAllowedPrincipal (0.00s) --- PASS: TestAddAllowedPrincipal/empty_policy (0.00s) --- PASS: TestAddAllowedPrincipal/non-empty_policy._user_not_found (0.00s) --- PASS: TestAddAllowedPrincipal/user_already_exists._new_principal (0.00s) --- PASS: TestAddAllowedPrincipal/user_already_exists._principal_not_new. (0.00s) -=== CONT TestPolicyDeniedOidcGroups -=== CONT TestPolicyDeniedMissingOidcGroupsClaim -=== CONT TestPolicyDeniedWrongIssuer ---- PASS: TestPolicyApprovedOidcGroupWithAtSign (0.25s) ---- PASS: TestPolicyDeniedBadUser (0.29s) ---- PASS: TestPolicyDeniedMissingOidcGroupsClaim (0.29s) ---- PASS: TestPolicyApproved (0.35s) ---- PASS: TestPolicyDeniedOidcGroups (0.36s) ---- PASS: TestPolicyEmailDifferentCase (0.43s) ---- PASS: TestPolicyDeniedWrongIssuer (0.55s) ---- PASS: TestPolicyApprovedOidcGroups (0.61s) ---- PASS: TestPolicyDeniedNoUserEntry (0.92s) +--- PASS: TestLoadUserPolicy_Success_SkipInvalidEntries (0.00s) +=== NAME TestLoad/only_root_policy_exists + multipolicyloader_test.go:187: Root policy: &policy.Policy{Users:[]policy.User{policy.User{IdentityAttribute:"alice@example.com", Principals:[]string{"test"}, Issuer:"https://example.com"}}} + multipolicyloader_test.go:188: User policy: (*policy.Policy)(nil) +2026/08/22 05:27:11 warning: failed to load user policy: failed to read user policy file /home/foo/.opk/auth_id: error reading foo home policy using command sudo -n /usr/local/bin/opkssh readhome foo got output and err exec: "sudo": executable file not found in $PATH +=== RUN TestLoad/only_user_policy_exists + multipolicyloader_test.go:187: Root policy: (*policy.Policy)(nil) + multipolicyloader_test.go:188: User policy: &policy.Policy{Users:[]policy.User{policy.User{IdentityAttribute:"alice@example.com", Principals:[]string{"foo", "bob"}, Issuer:"https://example.com"}}} +2026/08/22 05:27:11 warning: failed to load system default policy: failed to read system default policy file /etc/opk/auth_id: failed to describe the file at path: open /etc/opk/auth_id: file does not exist +=== RUN TestLoad/both_user_and_root_policy_exist + multipolicyloader_test.go:187: Root policy: &policy.Policy{Users:[]policy.User{policy.User{IdentityAttribute:"alice@example.com", Principals:[]string{"test"}, Issuer:"https://example.com"}, policy.User{IdentityAttribute:"charlie@example.com", Principals:[]string{"test"}, Issuer:"https://example.com"}}} + multipolicyloader_test.go:188: User policy: &policy.Policy{Users:[]policy.User{policy.User{IdentityAttribute:"alice@example.com", Principals:[]string{"foo"}, Issuer:"https://example.com"}, policy.User{IdentityAttribute:"bob@example.com", Principals:[]string{"foo"}, Issuer:"https://example.com"}}} +=== RUN TestLoad/both_user_and_root_policy_exist_but_no_valid_user_policy_entries + multipolicyloader_test.go:187: Root policy: &policy.Policy{Users:[]policy.User{policy.User{IdentityAttribute:"alice@example.com", Principals:[]string{"test"}, Issuer:"https://example.com"}, policy.User{IdentityAttribute:"charlie@example.com", Principals:[]string{"test"}, Issuer:"https://example.com"}}} + multipolicyloader_test.go:188: User policy: &policy.Policy{Users:[]policy.User{policy.User{IdentityAttribute:"alice@example.com", Principals:[]string{"test"}, Issuer:"https://example.com"}, policy.User{IdentityAttribute:"bob@example.com", Principals:[]string{"test", "test2"}, Issuer:"https://example.com"}, policy.User{IdentityAttribute:"charlie@example.com", Principals:[]string{"test", "test2", "test3"}, Issuer:"https://example.com"}}} +2026/08/22 05:27:11 warning: user policy /home/foo/.opk/auth_id has no valid user entries; an entry is considered valid if it gives foo access. +--- PASS: TestLoad (0.01s) + --- PASS: TestLoad/both_policies_are_missing (0.00s) + --- PASS: TestLoad/only_root_policy_exists (0.00s) + --- PASS: TestLoad/only_user_policy_exists (0.00s) + --- PASS: TestLoad/both_user_and_root_policy_exist (0.00s) + --- PASS: TestLoad/both_user_and_root_policy_exist_but_no_valid_user_policy_entries (0.00s) +--- PASS: TestPolicyEmailDifferentCase (0.08s) +--- PASS: TestPolicyDeniedWrongIssuer (0.25s) +--- PASS: TestPolicyDeniedBadUser (0.28s) +--- PASS: TestPolicyDeniedMissingOidcGroupsClaim (0.47s) +--- PASS: TestPolicyApproved (0.49s) +--- PASS: TestPolicyDeniedNoUserEntry (0.68s) +--- PASS: TestPolicyDeniedOidcGroups (0.73s) +--- PASS: TestPolicyApprovedOidcGroupWithAtSign (0.78s) +--- PASS: TestPolicyApprovedOidcGroups (0.97s) PASS -ok github.com/openpubkey/opkssh/policy 0.921s +ok github.com/openpubkey/opkssh/policy 0.983s === RUN TestLog === RUN TestLog/empty === RUN TestLog/single_entry @@ -1577,25 +1617,25 @@ --- PASS: TestLog/check_clear (0.00s) === RUN TestPermissionsChecker === RUN TestPermissionsChecker/simple_happy_path_(all_match) -2025/07/18 21:01:23 Running, command: stat -c %U %G /test_file -2025/07/18 21:01:23 Got output: testOwner testGroup +2026/08/22 05:27:11 Running, command: stat -c %U %G /test_file +2026/08/22 05:27:11 Got output: testOwner testGroup === RUN TestPermissionsChecker/simple_happy_path_(owner_not_checked) -2025/07/18 21:01:23 Running, command: stat -c %U %G /test_file -2025/07/18 21:01:23 Got output: testOwner testGroup +2026/08/22 05:27:11 Running, command: stat -c %U %G /test_file +2026/08/22 05:27:11 Got output: testOwner testGroup === RUN TestPermissionsChecker/simple_happy_path_(group_not_checked) -2025/07/18 21:01:23 Running, command: stat -c %U %G /test_file -2025/07/18 21:01:23 Got output: testOwner testGroup +2026/08/22 05:27:11 Running, command: stat -c %U %G /test_file +2026/08/22 05:27:11 Got output: testOwner testGroup === RUN TestPermissionsChecker/simple_happy_path_(only_perm_checked) === RUN TestPermissionsChecker/error_(owner_doesn't_match) -2025/07/18 21:01:23 Running, command: stat -c %U %G /test_file -2025/07/18 21:01:23 Got output: testOwner testGroup +2026/08/22 05:27:11 Running, command: stat -c %U %G /test_file +2026/08/22 05:27:11 Got output: testOwner testGroup === RUN TestPermissionsChecker/error_(owner_doesn't_match)#01 -2025/07/18 21:01:23 Running, command: stat -c %U %G /test_file -2025/07/18 21:01:23 Got output: testOwner testGroup +2026/08/22 05:27:11 Running, command: stat -c %U %G /test_file +2026/08/22 05:27:11 Got output: testOwner testGroup === RUN TestPermissionsChecker/error_(perms_don't_match) === RUN TestPermissionsChecker/error_(stat_command_error) -2025/07/18 21:01:23 Running, command: stat -c %U %G /test_file -2025/07/18 21:01:23 Got output: +2026/08/22 05:27:11 Running, command: stat -c %U %G /test_file +2026/08/22 05:27:11 Got output: --- PASS: TestPermissionsChecker (0.00s) --- PASS: TestPermissionsChecker/simple_happy_path_(all_match) (0.00s) --- PASS: TestPermissionsChecker/simple_happy_path_(owner_not_checked) (0.00s) @@ -1618,7 +1658,7 @@ --- PASS: TestToTable/multiple_rows_with_comment (0.00s) --- PASS: TestToTable/realistic_input (0.00s) PASS -ok github.com/openpubkey/opkssh/policy/files 0.005s +ok github.com/openpubkey/opkssh/policy/files 0.006s === RUN TestCASignerCreation === PAUSE TestCASignerCreation === RUN TestInvalidSshPublicKey @@ -1626,13 +1666,13 @@ === RUN TestSshCertCreation === PAUSE TestSshCertCreation === CONT TestCASignerCreation -=== CONT TestSshCertCreation === CONT TestInvalidSshPublicKey +=== CONT TestSshCertCreation --- PASS: TestCASignerCreation (0.00s) ---- PASS: TestInvalidSshPublicKey (0.47s) ---- PASS: TestSshCertCreation (0.60s) +--- PASS: TestInvalidSshPublicKey (0.32s) +--- PASS: TestSshCertCreation (0.52s) PASS -ok github.com/openpubkey/opkssh/sshcert 0.606s +ok github.com/openpubkey/opkssh/sshcert 0.530s create-stamp debian/debhelper-build-stamp dh_testroot -O--builddirectory=_build -O--buildsystem=golang dh_prep -O--builddirectory=_build -O--buildsystem=golang @@ -1669,12 +1709,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/2205142/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/2205142/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/2889385 and its subdirectories -I: Current time: Fri Jul 18 21:01:36 -12 2025 -I: pbuilder-time-stamp: 1752915696 +I: removing directory /srv/workspace/pbuilder/2205142 and its subdirectories +I: Current time: Sat Aug 22 05:27:26 +14 2026 +I: pbuilder-time-stamp: 1787326046