From Fedora Project Wiki

(initial content)
 
 
(9 intermediate revisions by the same user not shown)
Line 1: Line 1:
= SOP for updating GHC in Fedora =
= SOP for updating GHC in Fedora =


''Note this page is still a draft and work in progress.''
''This is a draft and work in progress.''


Updating GHC to a new version is an intensive operation and should be done with due care and consideration.
Updating GHC to a new version is a heavy operation and should be done with due care and consideration.
You probably also need to be a provenpackager or at least have commit access to all the haskell-sig packages.
You probably also need to be a provenpackager or at least have commit access to most of the haskell-sig packages and/or coordinate with haskell-sig contributors.
Note further that the current stable haskell-platform release dictates the current stable version of ghc.
Note further that the current stable haskell-platform release dictates the current stable version of ghc.


Line 11: Line 11:
For a branched release a version update and all consequent rebuilds of ghc-* etc needs to be done in a separate buildroot dist-fX-ghc to avoid disruption and repo breakage.
For a branched release a version update and all consequent rebuilds of ghc-* etc needs to be done in a separate buildroot dist-fX-ghc to avoid disruption and repo breakage.


*# Build the new ghc version (in dist-fX-ghc if it is for a branched release)
== Steps ==
*# rebuild hscolour against the new ghc
 
*# Rebuild the new ghc version again to fix the ABI (note particularly the ghc API lib seems particularly ABI sensitive)
Sketch of steps for bootstrapping new ghc version into fedora.
*# chain-build ghc-transformers and ghc-mtl
Needs some updating to be current.
*# chain-build haskell-platform stack (use haskell-sig/rebuild/rebuild.sh)
 
# Build the new ghc version (in dist-fX-ghc if it is for a branched release)
# Wait for the buildroot to update:
#* for rawhide: <code>koji wait-repo dist-fX-build --build=ghc-ver-rel</code>
#* for dist-fX-ghc: need to check the newRepo createrepo.log by hand.
# Build hscolour with bootstrapping enabled against the new ghc
# Wait for it to appear in the buildroot as above.
# Rebuild the new ghc version against ''itself'' to fix the ABI (note particularly the ghc API lib seems particularly ABI sensitive)
# Wait for the buildroot for the new ghc build.
# Chain-build ghc-transformers and ghc-mtl
# Wait for the buildroot.
# Chain-build haskell-platform stack (use [http://git.fedorahosted.org/git/?p=haskell-sig.git;a=tree;f=rebuild haskell-sig/rebuild] rebuild.sh)
# Wait for the buildroot.
# Rebuild ghc-mtl (maybe also ghc-utf8-string)
# :

Latest revision as of 09:20, 9 September 2013

SOP for updating GHC in Fedora

This is a draft and work in progress.

Updating GHC to a new version is a heavy operation and should be done with due care and consideration. You probably also need to be a provenpackager or at least have commit access to most of the haskell-sig packages and/or coordinate with haskell-sig contributors. Note further that the current stable haskell-platform release dictates the current stable version of ghc.

Generally we do not update ghc version in stable releases without a good reason because of the large overhead of rebuilding everything.

For a branched release a version update and all consequent rebuilds of ghc-* etc needs to be done in a separate buildroot dist-fX-ghc to avoid disruption and repo breakage.

Steps

Sketch of steps for bootstrapping new ghc version into fedora. Needs some updating to be current.

  1. Build the new ghc version (in dist-fX-ghc if it is for a branched release)
  2. Wait for the buildroot to update:
    • for rawhide: koji wait-repo dist-fX-build --build=ghc-ver-rel
    • for dist-fX-ghc: need to check the newRepo createrepo.log by hand.
  3. Build hscolour with bootstrapping enabled against the new ghc
  4. Wait for it to appear in the buildroot as above.
  5. Rebuild the new ghc version against itself to fix the ABI (note particularly the ghc API lib seems particularly ABI sensitive)
  6. Wait for the buildroot for the new ghc build.
  7. Chain-build ghc-transformers and ghc-mtl
  8. Wait for the buildroot.
  9. Chain-build haskell-platform stack (use haskell-sig/rebuild rebuild.sh)
  10. Wait for the buildroot.
  11. Rebuild ghc-mtl (maybe also ghc-utf8-string)
  12. :