Subject: bug#65391: People need to report failing builds even though we have ci.guix.gnu.org for that

From: 宋文武 <[email-masked]>
Date: Sun, 27 Aug 2023 09:13:17 +0800

Maxime Devos <[email-masked]> writes:

> For example, naev used to work just fine, yet apparently it doesn't
> anymore: https://issues.guix.gnu.org/65390.
>
> Given that Guix has ci.guix.gnu.org, I would expect such new problems
> to be detected and resolved early, and it was detected by
> ci.guix.gnu.org, yet going by issues.guix.gnu.org it was never even
> investigated.

Yes, honestly I only look for build failures from bug reports, not from
CI if i'm not doing a "request for merge" from another branch.

>
> (Yes, there is a delay, but that doesn't matter at all, as there's
> this dashboard <https://ci.guix.gnu.org/eval/668365/dashboard>.)

I found the dashboard inconvenient to use, it show failures for both
builds and dependencies in the same red color, and can't be searched.
What I usually do is:

1. download the job status json with:
  wget -O jobs.json 'https://ci.guix.gnu.org/api/jobs?evaluation=692229&system=x86_64-linux'

2. use jq to show package names with build failures:
  cat jobs.json  | jq '. | map(select(.status == 1)) | .[].name' -r

3. select interested one to investigate (if doing merge, diff the failures from
working branch with master).

>
> Do people really need to report 33% of all jobs
> (https://ci.guix.gnu.org/eval/668365/dashboard) before those failures
> are taken seriously, instead of the ‘there don't seem to be that much
> more build failures from the core-updates/... merge, let's solve them
> later (i.e., never)’ that seems to be  status quo?

Maybe we can automatically report the failures as bugs, say every 7
days, and remove a package if it still fail to build in 90 days?

As for now, x86_64 master (eval 668365) has 696 build failures, 604
dependencies failures, 30 unknown (canceld?) failures, total 1330
failures according to the jobs.json data.

Should we open a bug report for each of those 696 build failures?
aarch64-linux-gnu.gcc
abjad-ext-ipython
adms
aegis
anubis
aoflagger
apache-commons-parent-pom
apricots
arachne-pnr
arcan-sdl
arcan
archivebox
arm-linux-gnueabihf.gcc
arpack-ng-openmpi
asignify
asmjit
avro-cpp
azimuth
balsa
barectf
beignet
blacksmith
boinc-server
bonnie++
boost-signals2
btar
burp
cc65
cedille
chaiscript
chezmoi
clang
combinatorial-blas
commoncpp
confusion-mdl
coq-ide
coturn
cpplint
cssc
ctl
cube
darkice
dbus-cxx
ddcci-driver-linux
debops
deluge
dolphin-emu
dosbox-staging
dovecot-trees
d-tools
duc
dvdstyler
dxvk
ecl-april
ecl-binding-arrows
ecl-canonicalized-initargs
ecl-cl-form-types
ecl-cl-gserver
ecl-closure-template
ecl-cl-prevalence
ecl-cmd
ecl-coalton
ecl-coleslaw
ecl-conium
ecl-hdf5-cffi
ecl-lispbuilder-sdl
ecl-mito
ecl-nodgui
ecl-prometheus
ecl-radiance-contribs
ecl-schemeish
ecl-supertrace
ecl-trivial-octet-streams
ecl-trucler
ecl-typo
ecl-yxorp
edi
efilinux
elemental
elpa-openmpi
elpa
emacs-next-pgtk
emacspeak
emacsy
emilua
emulation-station
enblend-enfuse
eog-plugins
epic5
epour
eternalterminal
evdi
fanc
fasthenry
fenics
fiano-fmap
flowee
freedink-engine
freeorion
frotz-dumb-terminal
fulcrum
ganeti
gash-utils
gcc-objc++
gcc-objc
gcc-stripped-tarball
gcc-toolchain
gcc
gcc
ghc-ncurses
ghc-next
ghmm
gimagereader
gitile
gitless
glibc
glibc
glusterfs
gmime
gnash
gnaural
gnome-dictionary
gnucap
go-github-com-charmbracelet-glamour
gourmet
goxel
guile2.0-commonmark
guile2.0-gcrypt
guile2.0-redis
guile2.2-fibers
guile2.2-ics
guile2.2-pfds
guile2.2-xapian
guile-emacs
guile-gnunet
guile-goblins
guile-irc
guile-sparql
guile-static-stripped
guix-minimal
gx-saturator-lv2
gx-slow-gear-lv2
gx-vbass-preamp-lv2
h5check
harminv
hash-extender
hdf5-parallel-openmpi
hdf-eos2
hdf-eos5
hdf-java
hikari
hosts
ht
hydrus-network
hyperledger-iroha
hypre-openmpi.skylake-avx512
i3lock-blur
i586-pc-gnu.gcc-stripped-tarball
i586-pc-gnu.gcc
i586-pc-gnu.gcc
i586-pc-gnu.glibc
i686-linux-gnu.gcc-stripped-tarball
i686-linux-gnu.gcc
i686-linux-gnu.gcc
i686-w64-mingw32.coreutils
i686-w64-mingw32.diffutils
i686-w64-mingw32.findutils
i686-w64-mingw32.gawk
i686-w64-mingw32.gcc
i686-w64-mingw32.gcc
i686-w64-mingw32.gcc
i686-w64-mingw32.gdb-minimal
i686-w64-mingw32.gettext
i686-w64-mingw32.glibc
i686-w64-mingw32.grep
i686-w64-mingw32.guile
i686-w64-mingw32.guix
i686-w64-mingw32.gzip
i686-w64-mingw32.patch
i686-w64-mingw32.sed
i686-w64-mingw32.xz
insight-toolkit
insight-toolkit.haswell
insight-toolkit.ivybridge
insight-toolkit.skylake
insight-toolkit.skylake-avx512
insight-toolkit.westmere
irram
itk-snap
java-asm-tree
java-commons-compress
java-eclipse-jetty-util-ajax
java-eclipse-lsp4j-common
java-fasterxml-jackson-databind
java-geronimo-xbean-asm-util
java-geronimo-xbean-bundleutils
java-janino
java-jgit
java-jsch-agentproxy-jsch
java-objenesis
java-sonatype-aether-api
java-sonatype-spice-parent-pom
java-surefire-logger-api
java-xom
java-xsdlib
js-context-menu
jucipp
julia-calculus
julia-deepdiffs
julia-genericschur
julia-infinity
julia-wcs
kalendar
kbd-neo
khmer
launchmon
leptonica
libfreenect-examples
libiax2
libnfsidmap
libpsyc
libsigrokdecode
libstdc++
libtcod
libtmcg
libtorrent-rasterbar
libvisual-plugins
limnoria
litecli
lkrg
lua5.1-ossl
lua5.2-ossl
lua-ossl
lush2
maliit-framework
mantis
mapnik
mbedtls-apache
mbed-tools
meep
mia
mips64el-linux-gnu.gcc
mlmmj
mlucas
mmm
monado
mudskipper
mupen64plus-video-glide64
music21
musl-cross
newsboat
nginx-lua-module
nncp
nng
nomad
non-sequencer
ocaml4.07-fmt
ocaml4.07-ppxlib
ocaml4.07-uri
ocaml4.07-uuidm
ocaml4.07-zed
ocrfeeder
odamex
ogmtools
onionshare
openclonk
openni2
openocd
optionmatrix
ovmf-aarch64
ovmf-arm
patool
pcsxr
pdfarranger
pencil2d
pep-engine
perl6-grammar-profiler-simple
perl6-json-fast
perl6-json-name
perl6-json
perl6-mime-base64
perl6-oo-monitors
perl6-terminal-ansicolor
perl6-uri
perl6-xml-writer
perl-b-keywords
perl-dbix-class
perl-gtk2
petsc-openmpi
pies
poetry
powerpc64le-linux-gnu.gcc-stripped-tarball
powerpc64le-linux-gnu.gcc
powerpc64le-linux-gnu.gcc
powerpc64le-linux-gnu.gcc
powerpc64-linux-gnu.gcc
powerpc64-linux-gnu.guix
powerpc-linux-gnu.gcc
propeller-gcc
propeller-load
proteinortho
pulseview
pwntools
pynac
pyotherside
pypy
python-activepapers
python-aionotify
python-alchemy-mock
python-arboreto
python-autoflake
python-autograd
python-bashlex
python-bigfloat
python-bottleneck
python-cellbender
python-certauth
python-cysignals
python-daemon
python-daemux
python-deepdish
python-devtools
python-distributed
python-django
python-django
python-django
python-duniterpy
python-ecdsa
python-episcanpy
python-extruct
python-fit-nbinom
python-flask-restful-swagger
python-flex
python-forbiddenfruit
python-glom
python-google-auth
python-gpy
python-grako
python-hacking
python-hdf4
python-hicmatrix
python-http-client
python-http-ece
python-imbalanced-learn
python-imgviz
python-internetarchive
python-ipydatawidgets
python-jsonpickle
python-keras-preprocessing
python-keystoneclient
python-libcst
python-lirc
python-locust
python-modin
python-nltk
python-nptyping
python-numpy-documentation
python-omegaconf
python-on-guile
python-orange-canvas-core
python-os-client-config
python-osc
python-osmnx
python-pathlib
python-pdoc3
python-pgpy
python-pingouin
python-pint
python-plastid
python-poppler-qt5
python-pybbi
python-pydiff
python-pyflakes
python-pyfuse3
python-pyls-black
python-pyment
python-pyodbc-c
python-pyparted
python-pyportmidi
python-pyrdfa3
python-pyscss
python-pysnptools
python-pyspnego
python-pytest-exploratory
python-pytest-ordering
python-pythonanywhere
python-pyxb
python-pyxel
python-qemu-qmp
python-qnorm
python-qtsass
python-quart
python-readpaf
python-robotframework-lint
python-rollbar
python-sadisplay
python-sanic
python-schedule
python-scikit-allel
python-scripttest
python-setuptools-lint
python-sphinx-autodoc-typehints
python-sphinx-cloud-sptheme
python-sphinxcontrib-autoprogram
python-sphinx-gallery
python-sphinx-prompt
python-statmake
python-swagger-spec-validator
python-tablib
python-ta-lib
python-tbb
python-toolrack
python-tortoise-orm
python-twodict
python-uqbar
python-vaex-core
python-vega-datasets
python-xarray
python-xgboost
qbittorrent-enhanced-nox
qbittorrent-enhanced
qbittorrent-nox
qbittorrent
qgis
quagga
r-analytics
raspi-arm-chainloader
r-biomvrcns
rcas-web
r-ctrdata
repo2docker
r-experimenthub
r-flowcore
r-genomegraphs
r-gensa
r-gosemsim
r-icobra
ri-li
riscv64-linux-gnu.gcc
riscv64-linux-gnu.guile-static-stripped-tarball
r-mlr3ordinal
r-rcppspdlog
r-rmetasim
r-sapa
r-sccore
r-sigpathway
r-spams
r-tgstat
r-tidytree
rttr
ruby-anystyle
ruby-interception
ruby-psych
ruby-ruby-prof
ruby-web-console
rust-actix-macros
rust-actix-web-codegen
rust-addr2line
rust-aesni
rust-ahash
rust-alga
rust-analyzer
rust-app-dirs2
rust-ascii
rust-asn1-rs-impl
rust-assert-fs
rust-autocompress
rust-base32
rust-bindgen
rust-bindgen
rust-bindgen
rust-bindgen
rust-bindgen
rust-blake2
rust-capnp-rpc
rust-cargo-util
rust-cast
rust-clang-sys
rust-clap-conf
rust-combine
rust-compact-str
rust-concolor
rust-derive-builder-core
rust-derive-error-chain
rust-diesel-derives
rust-enquote
rust-feature-probe
rust-generator
rust-generic-array
rust-generic-array
rust-ghash
rust-git2
rust-git2
rust-glam
rust-glib-macros
rust-glium
rust-glutin-egl-sys
rust-h2
rust-heapless
rust-hex-literal
rust-hkdf
rust-hyper-rustls
rust-hyper-rustls
rust-hyper
rust-inotify-sys
rust-insta
rust-ipconfig
rust-jemallocator
rust-libflate-lz77
rust-libpulse-binding
rust-libradicl
rust-linked-hash-map
rust-linked-hash-map
rust-lopdf
rust-md-5
rust-merge-derive
rust-merge
rust-mimalloc
rust-napi-sys
rust-napi
rust-nb-connect
rust-nitrokey-sys
rust-nitrokey-test
rust-nitrokey
rust-no-panic
rust-notify
rust-objc2-encode
rust-opener
rust-os-pipe
rust-packed-simd-2
rust-packed-struct
rust-parity-scale-codec-derive
rust-paw-structopt
rust-paw
rust-polling
rust-poly1305
rust-polyval
rust-prettytable-rs
rust-propfuzz-macro
rust-proptest-derive
rust-proptest
rust-proptest
rust-quinn-proto
rust-quinn
rust-ravif
rust-reduce
rust-ref-cast-impl
rust-relative-path
rust-ring
rust-ring
rust-ron
rust-rustfix
rust-rustls-native-certs
rust-rustls
rust-rusttype
rust-sce
rust-sct
rust-sct
rust-sct
rust-security-framework-sys
rust-security-framework
rust-sha-1
rust-sha2
rust-signal-hook
rust-statrs
rust-statrs
rust-structopt
rust-swc
rust-syntex-pos
rust-syn
rust-syn
rust-tendril
rust-test-case
rust-time-macros-impl
rust-time-macros
rust-tokio-core
rust-tokio-executor
rust-tokio-rustls
rust-tokio-rustls
rust-tokio-rustls
rust-tokio-rustls
rust-tokio-sync
rust-tokio
rust-tower-layer
rust-tracing-futures
rust-trust-dns-https
rust-trust-dns-https
rust-trust-dns-https
rust-trust-dns-rustls
rust-ufmt
rust-uint
rust-utf8-width
rust-uuid
rust-wayland-client
rust-wayland-client
rust-webpki-roots
rust-webpki
rust-webpki
rust-wyz
rust-wyz
savane
sbcl-chanl
sbcl-cl-ana
sbcl-radiance-contribs
sbcl-virality
scvelo
seed
sequeler
sfizz
shadowsocks
shakespeare-spl
shogun
siggen
simh
smalltalk
solidity
sound-juicer
squid
sshoot
stgit
stiff
subunit
sunxi-tools
surge-synth
swftools
tbb
tcalc
tcc
texlive-asymptote-by-example-zh-cn
texlive-asymptote-faq-zh-cn
texlive-getoptk
texlive-jura
texlive-kotex-oblivoir
texlive-latex-notes-zh-cn
texlive-lshort-chinese
texlive-parrun
texlive-qtree
texlive-stage
texlive-termmenu
texlive-texproposal
texlive-tikz-page
texlive-timetable
texlive-xistercian
tgl
the-butterfly-effect
tippecanoe
tootle
transanno
trezor-agent
tuxedo-keyboard
u-boot-nintendo-nes-classic-edition
uim-qt
undbx
unicorn
unknown-horizons
upx
usb-modeswitch
valeronoi
vapoursynth
variant-tools
vboot-utils
vbz-compression
verilator
veusz
vsftpd
vtk
vxl
warsow-qfusion
weex
withershins
wmfire
wpewebkit
x86_64-w64-mingw32.coreutils
x86_64-w64-mingw32.diffutils
x86_64-w64-mingw32.findutils
x86_64-w64-mingw32.gawk
x86_64-w64-mingw32.gcc
x86_64-w64-mingw32.gcc
x86_64-w64-mingw32.gcc
x86_64-w64-mingw32.gdb-minimal
x86_64-w64-mingw32.gettext
x86_64-w64-mingw32.glibc
x86_64-w64-mingw32.grep
x86_64-w64-mingw32.guile
x86_64-w64-mingw32.guix
x86_64-w64-mingw32.gzip
x86_64-w64-mingw32.patch
x86_64-w64-mingw32.sed
x86_64-w64-mingw32.xz
xen
xfig
xkcdpass
xnee
zathura-pdf-mupdf
zbackup
zig