#11218 Fedora 38 mass rebuild tracker
Closed: Fixed a year ago by humaton. Opened a year ago by kevin.

Thought I would file this to coordinate and track mass rebuild.

The mass rebuild is scheduled for 2023-01-18

@humaton will be running things from releng.

Improvements I would like to make sure we get in:

  • use --depth 1 for fedpkg clones
  • use https and a token instead of messy/slower ssh clones
  • update and reboot all builders (in progress, almost done with staging)

Things we are rebuilding for:

https://pagure.io/releng/issue/11173 - Mass rebuild for _FORTIFY_SOURCE=3 in Fedora 38

https://pagure.io/releng/issue/10842 - F38: System wide change: fno-omit-frame-pointer changes

Things we might be also rebuilding for:

https://pagure.io/fesco/issue/2932 - Change: GNU Toolchain Update (gcc 13.0, binutils 2.39, glibc 2.37, gdb 12.1)

Things we have been asked to do:

https://pagure.io/releng/issue/11217 - please exclude all Haskell packages from F38 mass rebuild

Also, the ELN sig has asked us to tell them before we merge the mass rebuild back to ack that things look ok from their side.

use this issue to track any other mass rebuild related items or update status.


Using --depth 1 for fedpkg clones will break %autorelease, see https://pagure.io/fedora-infra/rpmautospec/issue/227

Ah shoot. ok, thanks for the heads up. I guess we will not do that this time, but it would be nice to get it in place for the next.

Ah shoot. ok, thanks for the heads up. I guess we will not do that this time, but it would be nice to get it in place for the next.

I don't think this is possible. In essence, rpmautospec needs commit metadata for all commits since the last time an overriding changelog file was writting into, to be able to generate the changelog entries from there on and to compute release fields values for the current build as well as any automatically generated changelog entry.

See here for a more long-winded explanation. 😉

Metadata Update from @kevin:
- Issue tagged with: medium-gain, medium-trouble, ops

a year ago

Thanks for the heads up, we will not use -- depth 1 in this mass rebuild.

as per community request, we will skip all Haskel packages for this mass rebuild. List of the packages:

ghc
ghc-rpm-macros
ghc8.10
ghc9.0
ghc9.2
ghc9.4
haskell-platform
Agda
ShellCheck
alex
bench
brainfuck
bustle
cab
cabal-install
cabal-rpm
cpphs
darcs
dhall
dhall-json
dl-fedora
fbrnch
ghc-Boolean
ghc-ConfigFile
ghc-DAV
ghc-Decimal
ghc-Diff
ghc-GLURaw
ghc-Glob
ghc-HSH
ghc-HStringTemplate
ghc-HTTP
ghc-HUnit
ghc-HaXml
ghc-HsOpenSSL
ghc-HsOpenSSL-x509-system
ghc-HsYAML
ghc-IOSpec
ghc-IfElse
ghc-JuicyPixels
ghc-MemoTrie
ghc-MissingH
ghc-MonadCatchIO-mtl
ghc-MonadCatchIO-transformers
ghc-MonadRandom
ghc-NumInstances
ghc-ObjectName
ghc-Only
ghc-OpenGL
ghc-OpenGLRaw
ghc-QuickCheck
ghc-RSA
ghc-SHA
ghc-STMonadTrans
ghc-SafeSemaphore
ghc-StateVar
ghc-Stream
ghc-X11
ghc-X11-xft
ghc-abstract-deque
ghc-abstract-par
ghc-adjunctions
ghc-aeson
ghc-aeson-better-errors
ghc-aeson-compat
ghc-aeson-pretty
ghc-aeson-yaml
ghc-annotated-wl-pprint
ghc-ansi-terminal
ghc-ansi-wl-pprint
ghc-appar
ghc-arrows
ghc-asn1-encoding
ghc-asn1-parse
ghc-asn1-types
ghc-assoc
ghc-async
ghc-atomic-write
ghc-attoparsec
ghc-attoparsec-binary
ghc-attoparsec-iso8601
ghc-authenticate-oauth
ghc-auto-update
ghc-aws
ghc-base-compat
ghc-base-compat-batteries
ghc-base-orphans
ghc-base-prelude
ghc-base-unicode-symbols
ghc-base16-bytestring
ghc-base64-bytestring
ghc-basement
ghc-basic-prelude
ghc-bencode
ghc-bifunctors
ghc-binary-shared
ghc-bindings-DSL
ghc-bitarray
ghc-blaze-builder
ghc-blaze-html
ghc-blaze-markup
ghc-blaze-textual
ghc-bloomfilter
ghc-bower-json
ghc-boxes
ghc-brick
ghc-bsb-http-chunked
ghc-bugzilla-redhat
ghc-byteable
ghc-byteorder
ghc-bytes
ghc-bytestring-nums
ghc-bytestring-show
ghc-bytestring-trie
ghc-cabal-doctest
ghc-cabal-file-th
ghc-cabal-helper
ghc-cairo
ghc-call-stack
ghc-case-insensitive
ghc-cassava
ghc-cautious-file
ghc-cborg
ghc-cborg-json
ghc-cereal
ghc-charset
ghc-cheapskate
ghc-chunked-data
ghc-cipher-aes
ghc-clientsession
ghc-clock
ghc-cmark
ghc-cmark-gfm
ghc-cmdargs
ghc-code-page
ghc-colour
ghc-colourista
ghc-comonad
ghc-concatenative
ghc-concurrent-extra
ghc-concurrent-output
ghc-cond
ghc-conduit
ghc-conduit-extra
ghc-config-ini
ghc-connection
ghc-contravariant
ghc-control-monad-free
ghc-cookie
ghc-cprng-aes
ghc-criterion
ghc-crypto-api
ghc-crypto-cipher-types
ghc-crypto-pubkey-types
ghc-crypto-random
ghc-cryptohash
ghc-cryptohash-md5
ghc-cryptohash-sha1
ghc-cryptohash-sha256
ghc-cryptonite
ghc-cryptonite-conduit
ghc-css-text
ghc-csv
ghc-curl
ghc-data-accessor
ghc-data-binary-ieee754
ghc-data-clist
ghc-data-default
ghc-data-default-class
ghc-data-default-instances-containers
ghc-data-default-instances-dlist
ghc-data-default-instances-old-locale
ghc-data-fix
ghc-data-hash
ghc-data-inttrie
ghc-data-memocombinators
ghc-data-reify
ghc-dataenc
ghc-date-cache
ghc-dbus
ghc-dec
ghc-deepseq-generics
ghc-digest
ghc-disk-free-space
ghc-distributive
ghc-djinn-ghc
ghc-djinn-lib
ghc-dlist
ghc-dns
ghc-doctemplates
ghc-doctest
ghc-dotgen
ghc-double-conversion
ghc-echo
ghc-ed25519
ghc-edit-distance
ghc-either
ghc-email-validate
ghc-enclosed-exceptions
ghc-entropy
ghc-equivalence
ghc-erf
ghc-esqueleto
ghc-executable-path
ghc-explicit-exception
ghc-extensible-exceptions
ghc-extra
ghc-fast-logger
ghc-fclabels
ghc-fdo-notify
ghc-feed
ghc-fgl
ghc-file-embed
ghc-filemanip
ghc-filepath-bytestring
ghc-filepattern
ghc-filestore
ghc-filtrable
ghc-fingertree
ghc-fixed
ghc-foldl
ghc-formatting
ghc-foundation
ghc-free
ghc-fsnotify
ghc-generic-deriving
ghc-generics-sop
ghc-ghc-lib-parser
ghc-ghc-mtl
ghc-ghc-paths
ghc-ghc-syb-utils
ghc-gi-atk
ghc-gi-cairo
ghc-gi-gdk
ghc-gi-gdkpixbuf
ghc-gi-gio
ghc-gi-glib
ghc-gi-gmodule
ghc-gi-gobject
ghc-gi-gtk
ghc-gi-harfbuzz
ghc-gi-ostree
ghc-gi-pango
ghc-gio
ghc-git-lfs
ghc-gitrev
ghc-glib
ghc-graphviz
ghc-gtk
ghc-gtk3
ghc-hackage-security
ghc-haddock-library
ghc-hakyll
ghc-half
ghc-happstack-server
ghc-hashable
ghc-hashtables
ghc-haskell-gi
ghc-haskell-gi-base
ghc-haskell-gi-overloading
ghc-haskell-lexer
ghc-haskell-src-exts
ghc-haskell-src-exts-util
ghc-haskell-src-meta
ghc-haxr
ghc-hgettext
ghc-highlighting-kate
ghc-hinotify
ghc-hint
ghc-hjsmin
ghc-hledger-lib
ghc-hoauth2
ghc-hosc
ghc-hostname
ghc-hourglass
ghc-hs-bibutils
ghc-hslogger
ghc-hslua
ghc-hslua-module-text
ghc-hspec
ghc-hspec-core
ghc-hspec-discover
ghc-hspec-expectations
ghc-hspec-megaparsec
ghc-html
ghc-html-conduit
ghc-htoml
ghc-http-api-data
ghc-http-client
ghc-http-client-openssl
ghc-http-client-restricted
ghc-http-client-tls
ghc-http-common
ghc-http-conduit
ghc-http-date
ghc-http-directory
ghc-http-media
ghc-http-query
ghc-http-streams
ghc-http-types
ghc-http2
ghc-hxt
ghc-hxt-charproperties
ghc-hxt-regex-xmlschema
ghc-hxt-unicode
ghc-ieee754
ghc-ilist
ghc-indents
ghc-indexed-traversable
ghc-infer-license
ghc-integer-logarithms
ghc-io-streams
ghc-iproute
ghc-iso8601-time
ghc-js-flot
ghc-js-jquery
ghc-json
ghc-kan-extensions
ghc-koji
ghc-language-c
ghc-language-docker
ghc-language-ecmascript
ghc-language-java
ghc-language-javascript
ghc-lazysmallcheck
ghc-lens
ghc-lens-aeson
ghc-lens-family-core
ghc-libffi
ghc-libmpd
ghc-libxml-sax
ghc-lifted-base
ghc-listsafe
ghc-logging-facade
ghc-logict
ghc-lrucache
ghc-lukko
ghc-lzma-conduit
ghc-maccatcher
ghc-magic
ghc-managed
ghc-math-functions
ghc-megaparsec
ghc-memory
ghc-microlens
ghc-microlens-ghc
ghc-microlens-mtl
ghc-microlens-platform
ghc-microlens-th
ghc-microstache
ghc-mime-types
ghc-mmap
ghc-mmorph
ghc-mockery
ghc-modern-uri
ghc-monad-control
ghc-monad-journal
ghc-monad-logger
ghc-monad-loops
ghc-monad-par
ghc-monad-par-extras
ghc-monads-tf
ghc-mono-traversable
ghc-mountpoints
ghc-mtlparse
ghc-mwc-random
ghc-nanospec
ghc-natural-transformation
ghc-netlist
ghc-netlist-to-vhdl
ghc-network
ghc-network-bsd
ghc-network-byte-order
ghc-network-info
ghc-network-multicast
ghc-network-uri
ghc-numbers
ghc-oeis
ghc-old-locale
ghc-old-time
ghc-openssl-streams
ghc-optional-args
ghc-optparse-applicative
ghc-optparse-simple
ghc-pandoc-types
ghc-pango
ghc-parallel
ghc-parsec-numbers
ghc-parser-combinators
ghc-parsers
ghc-path
ghc-path-io
ghc-path-pieces
ghc-pattern-arrows
ghc-pcap
ghc-pcre-light
ghc-pem
ghc-persistent
ghc-persistent-sqlite
ghc-persistent-template
ghc-pipes
ghc-polyparse
ghc-prelude-extras
ghc-pretty-show
ghc-pretty-simple
ghc-pretty-terminal
ghc-prettyprinter
ghc-prettyprinter-ansi-terminal
ghc-primitive
ghc-profunctors
ghc-protolude
ghc-psqueues
ghc-publicsuffixlist
ghc-pureMD5
ghc-quickcheck-io
ghc-random
ghc-ranges
ghc-readline
ghc-recaptcha
ghc-reducers
ghc-refact
ghc-reflection
ghc-regex-applicative
ghc-regex-base
ghc-regex-compat
ghc-regex-pcre
ghc-regex-posix
ghc-regex-tdfa
ghc-regexpr
ghc-relude
ghc-repline
ghc-req
ghc-resolv
ghc-resource-pool
ghc-resourcet
ghc-retry
ghc-rfc5051
ghc-rio
ghc-rio-prettyprint
ghc-rosezipper
ghc-rpm-nvr
ghc-safe
ghc-sandi
ghc-scientific
ghc-scotty
ghc-securemem
ghc-semigroupoids
ghc-semigroups
ghc-semver
ghc-sendfile
ghc-serialise
ghc-servant
ghc-servant-client
ghc-servant-client-core
ghc-servant-foreign
ghc-servant-options
ghc-servant-server
ghc-setenv
ghc-setlocale
ghc-shakespeare
ghc-shelly
ghc-show
ghc-silently
ghc-simple-cabal
ghc-simple-cmd
ghc-simple-cmd-args
ghc-simple-sendfile
ghc-singleton-bool
ghc-skein
ghc-skylighting
ghc-smallcheck
ghc-snap-core
ghc-snap-server
ghc-socks
ghc-sourcemap
ghc-spdx
ghc-split
ghc-statistics
ghc-stm-chans
ghc-streaming-commons
ghc-strict
ghc-string-conversions
ghc-string-qq
ghc-stringbuilder
ghc-stringsearch
ghc-syb
ghc-system-fileio
ghc-system-filepath
ghc-tabular
ghc-tagged
ghc-tagsoup
ghc-tar
ghc-tar-conduit
ghc-tasty
ghc-tasty-hunit
ghc-tasty-kat
ghc-tasty-quickcheck
ghc-tasty-rerun
ghc-temporary
ghc-terminal-size
ghc-texmath
ghc-text-manipulate
ghc-text-metrics
ghc-text-short
ghc-text-zipper
ghc-tf-random
ghc-th-abstraction
ghc-th-compat
ghc-th-expand-syns
ghc-th-lift
ghc-th-lift-instances
ghc-th-orphans
ghc-th-reify-many
ghc-these
ghc-threads
ghc-tidal
ghc-time-compat
ghc-time-locale-compat
ghc-time-manager
ghc-tls
ghc-tls-session-manager
ghc-torrent
ghc-transformers-base
ghc-transformers-compat
ghc-turtle
ghc-typed-process
ghc-uglymemo
ghc-unbounded-delays
ghc-unicode-transforms
ghc-union-find
ghc-uniplate
ghc-unix-compat
ghc-unix-time
ghc-unliftio
ghc-unliftio-core
ghc-unordered-containers
ghc-uri
ghc-uri-bytestring
ghc-uri-bytestring-aeson
ghc-uri-encode
ghc-url
ghc-utf8-light
ghc-utf8-string
ghc-uuid
ghc-uuid-types
ghc-vault
ghc-vector
ghc-vector-algorithms
ghc-vector-binary-instances
ghc-vector-builder
ghc-vector-space
ghc-vector-th-unbox
ghc-void
ghc-vty
ghc-wai
ghc-wai-app-static
ghc-wai-cors
ghc-wai-extra
ghc-wai-handler-launch
ghc-wai-logger
ghc-wai-websockets
ghc-warp
ghc-warp-tls
ghc-websockets
ghc-with-location
ghc-wizards
ghc-wl-pprint
ghc-wl-pprint-text
ghc-word-wrap
ghc-word8
ghc-wreq
ghc-x509
ghc-x509-store
ghc-x509-system
ghc-x509-validation
ghc-xdg-basedir
ghc-xdg-userdirs
ghc-xml
ghc-xml-conduit
ghc-xml-hamlet
ghc-xml-types
ghc-xmonad-contrib
ghc-xss-sanitize
ghc-yaml
ghc-yesod
ghc-yesod-core
ghc-yesod-form
ghc-yesod-persistent
ghc-yesod-static
ghc-zip-archive
ghc-zlib
ghc-zlib-bindings
ghcid
git-annex
git-repair
gitit
gtk2hs-buildtools
hadolint
happy
hledger
hledger-ui
hledger-web
hlint
hscolour
hwk
idris
koji-tool
lsfrom
ormolu
pagure-cli
pandoc
patat
pkgtreediff
rhbzquery
rpmbuild-order
shake
tart
unlambda
xmobar
xmonad

What could be relevant for the mass rebuild is #2161595, if the libgcc unwinder is built with -fno-omit-frame-pointer at least on powerpc64le-linux, then it doesn't work properly (haven't studied details yet, but __builtin_eh_return has lots of assumptions and is quite fragile, it is only used in the libgcc unwinder).
Now, for packages which just link against -lgcc_s it can be fixed by rebuilding gcc later, but for
packages which link in -lgcc_eh (whether because of -static link or -static-libgcc or other ways to get the unwinder into the libraries or binaries), they'd need to be rebuilt again after the mass rebuild to fix it.

Of course, for powerpc64le-linux the primary question is why would we do -fno-omit-frame-pointer at all, I don't see how that would help with profiling except for making things slower.
The thing is that the powerpc64le-linux ABI - see
https://refspecs.linuxfoundation.org/ELF/ppc64/PPC-elf64abi.html#STACK
has a backchain by default (which can't be turned off).
Stack pointer (r1) always points to a stack frame, which contains at least the backchain at offset 0
and link register copy at offset 16, so one can unwind through that pair regardless of -fno-omit-frame-pointer, which just eats one extra register and needs to be saved/restored etc.
Compare https://godbolt.org/z/7Eje1TfMd (this one using gcc 12). The exception are leaf functions, in those one can look up the lr register to find the immediate caller 0(1) will be the stack pointer from the caller's caller and 16(1) return address from the caller's caller.

Thanks for surfacing this. I put up https://src.fedoraproject.org/rpms/redhat-rpm-config/pull-request/241 to exclude ppc64le for the time being.

I can confirm the change is in redhat-rpm-config-245-1.fc38, but as I wrote in rhbz#2161595 , it isn't sufficient for the unwinder, libgcc_eh.a needs to be rebuilt without that -fno-omit-frame-pointer on ppc64le first before it is linked into various binaries/libraries.
https://koji.fedoraproject.org/koji/taskinfo?taskID=96265376
is currently building, finished already on aarch64 and ppc64le so I'll verify rhbz#2161595 fix momentarily, but it can take some time to finish the remaining architectures. i686 and x86_64 are now in %check, s390x still in %build.

We will wait for the gcc build to finish and start our massrebuild with the latest build.

The build finished and make %check also looks good on all arches, but I still need to wait for some automated tests before
https://bodhi.fedoraproject.org/updates/FEDORA-2023-7544068644
can be pushed into stable.

koji latest-pkg --quiet f38 gcc
gcc-13.0.1-0.1.fc38 f38 jakub
So from my side ready for mass rebuild.

Thanks, the mass rebuild started after gcc landed in rawhide.

Looking at mass rebuild, there are still the following packages listed as need rebuild [1]:

rubygem-activemodel-serializers-xml
rubygem-addressable

The strange thing is that while there is mass rebuild commit, I can see anywhere that the package build would be attempted. So somebody probably wants to check, what went wrong.

This is caused by https://pagure.io/releng/issue/8601

ie, a 'prep' on the first ends here with:

+ /usr/lib/rpm/rpmuncompress -x /home/kevin/git/pkgs/rubygem-activemodel-serializers-xml/activemodel-serializers-xml-1.0.2.gem
sh: line 1: /usr/bin/gem: No such file or directory

and the second:

+ /usr/lib/rpm/rpmuncompress -x /home/kevin/git/pkgs/rubygem-addressable/addressable-2.8.1.gem
sh: line 1: /usr/bin/gem: No such file or directory

This is caused by https://pagure.io/releng/issue/8601

I see

ie, a 'prep' on the first ends here with:

+ /usr/lib/rpm/rpmuncompress -x /home/kevin/git/pkgs/rubygem-activemodel-serializers-xml/activemodel-serializers-xml-1.0.2.gem sh: line 1: /usr/bin/gem: No such file or directory

How this happened? Where I can see full log? How can I reproduce?

This to me seems to be some weird infra issue.

Yeah, I guess I was incorrect there. That was a local fedpkg prep... but I didn't have the buildrequires installed...

So, I am unsure what caused this. A scratch build completes fine.

Can you just build them?

@humaton do you have the output from the mass rebuild script still around? Can you see what happened to these packages there?
Perhaps it failed to talk to the koji api to launch the build?

Can you just build them?

Yep, already did that.

From the log:

Checking out rubygem-activemodel-serializers-xml
Bumping /home/fedora/humaton/massbuild/rubygem-activemodel-serializers-xml/rubygem-activemodel-serializers-xml.spec
Setting git user.name and user.email
Committing changes for rubygem-activemodel-serializers-xml
Pushing changes for rubygem-activemodel-serializers-xml
Getting git url for rubygem-activemodel-serializers-xml
Building rubygem-activemodel-serializers-xml
  Successful submission: rubygem-activemodel-serializers-xml  taskID: 96440479

https://koji.fedoraproject.org/koji/taskinfo?taskID=96440479

Checking out rubygem-addressable
Bumping /home/fedora/humaton/massbuild/rubygem-addressable/rubygem-addressable.spec
Setting git user.name and user.email
Committing changes for rubygem-addressable
Pushing changes for rubygem-addressable
Getting git url for rubygem-addressable
Building rubygem-addressable
  Successful submission: rubygem-addressable  taskID: 96440550

https://koji.fedoraproject.org/koji/taskinfo?taskID=96440550

ok, so it was https://pagure.io/releng/issue/8601

There was a git checkout / network error and that caused it to not be able to make a src.rpm. ;(

Is it time to file FTBFS tickets?

Rebuild is long done and merged. Closing

Metadata Update from @humaton:
- Issue close_status updated to: Fixed
- Issue status updated to: Closed (was: Open)

a year ago

Login to comment on this ticket.

Metadata
Boards 1
Ops Status: Backlog