From bf23eb900bd28cfd861ddcbbe179b49e758fd56d Mon Sep 17 00:00:00 2001 From: Jens Petersen Date: Tue, 29 Oct 2013 14:59:08 +0900 Subject: [PATCH] bootstrap build to fix hangs on 64bit bigendian - rts hang patch from Gustavo Luiz Duarte (#989593) - generate and ship library doc index for ghc bundled libraries - build with utf8 encoding (needed for verbose ghc output and makes better sense anyway) - change ghc-cabal to make library html docdirs unversioned --- ghc-64bit-bigendian-rts-hang-989593.patch | 11 +++++ ghc-cabal-unversion-docdir.patch | 13 ++++++ ghc.spec | 53 +++++++++++++++++++---- 3 files changed, 69 insertions(+), 8 deletions(-) create mode 100644 ghc-64bit-bigendian-rts-hang-989593.patch create mode 100644 ghc-cabal-unversion-docdir.patch diff --git a/ghc-64bit-bigendian-rts-hang-989593.patch b/ghc-64bit-bigendian-rts-hang-989593.patch new file mode 100644 index 0000000..279e666 --- /dev/null +++ b/ghc-64bit-bigendian-rts-hang-989593.patch @@ -0,0 +1,11 @@ +--- a/rts/STM.c ++++ b/rts/STM.c +@@ -927,7 +927,7 @@ void stmPreGCHook (Capability *cap) { + static volatile StgInt64 max_commits = 0; + + #if defined(THREADED_RTS) +-static volatile StgBool token_locked = FALSE; ++static volatile StgWord token_locked = FALSE; + + static void getTokenBatch(Capability *cap) { + while (cas((void *)&token_locked, FALSE, TRUE) == TRUE) { /* nothing */ } diff --git a/ghc-cabal-unversion-docdir.patch b/ghc-cabal-unversion-docdir.patch new file mode 100644 index 0000000..0aefeb5 --- /dev/null +++ b/ghc-cabal-unversion-docdir.patch @@ -0,0 +1,13 @@ +--- ghc-7.6.3/utils/ghc-cabal/Main.hs~ 2013-04-19 06:22:47.000000000 +0900 ++++ ghc-7.6.3/utils/ghc-cabal/Main.hs 2013-10-29 12:35:18.916340631 +0900 +@@ -180,8 +180,8 @@ + libsubdir = toPathTemplate "$pkgid", + docdir = toPathTemplate $ + if relocatableBuild +- then "$topdir/../doc/html/libraries/$pkgid" +- else (myDocdir "$pkgid"), ++ then "$topdir/../doc/html/libraries/$pkg" ++ else (myDocdir "$pkg"), + htmldir = toPathTemplate "$docdir" + } + progs = withPrograms lbi diff --git a/ghc.spec b/ghc.spec index dc2e8f5..ca969df 100644 --- a/ghc.spec +++ b/ghc.spec @@ -2,10 +2,11 @@ # (disabled for other archs in ghc-rpm-macros) # To bootstrap build a new version of ghc, uncomment the following: -#%%global ghc_bootstrapping 1 -#%%{?ghc_bootstrap} -#%%global without_testsuite 1 -#%%global without_haddock 1 +%global ghc_bootstrapping 1 +%{?ghc_bootstrap} +%global without_testsuite 1 +# uncomment to generate haddocks +#%%undefine without_haddock # To do a test build instead with shared libs, uncomment the following: #%%global ghc_bootstrapping 1 @@ -29,7 +30,7 @@ Version: 7.6.3 # - release can only be reset if *all* library versions get bumped simultaneously # (sometimes after a major release) # - minor release numbers for a branch should be incremented monotonically -Release: 18%{?dist} +Release: 19%{?dist} Summary: Glasgow Haskell Compiler License: %BSDHaskellReport @@ -54,6 +55,10 @@ Patch12: ghc-7.4.2-Cabal-disable-ghci-libs.patch Patch13: ghc-llvmCodeGen-empty-array.patch # stop warnings about unsupported version of llvm Patch14: ghc-7.6.3-LlvmCodeGen-no-3.3-warning.patch +# fix hang on ppc64 and s390x +Patch15: ghc-64bit-bigendian-rts-hang-989593.patch +# unversion library html docdirs +Patch16: ghc-cabal-unversion-docdir.patch # fedora ghc has been bootstrapped on # %{ix86} x86_64 ppc alpha sparcv9 ppc64 armv7hl armv5tel s390 s390x @@ -133,8 +138,9 @@ Requires: llvm >= 3.0 %description compiler The package contains the GHC compiler, tools and utilities. -The ghc libraries are provided by ghc-devel. -To install all of ghc, install the ghc base package. +The ghc libraries are provided by ghc-libraries. +To install all of ghc (including the ghc library), +install the main ghc package. %if %{undefined without_haddock} %package doc-index @@ -234,6 +240,21 @@ ln -s $(pkg-config --variable=includedir libffi)/*.h rts/dist/build %patch14 -p1 -b .orig %endif +# #FIXME: apply to all archs from next version bootstrap +%ifarch ppc64 s390x +%patch15 -p1 -b .orig +%endif + +%patch16 -p1 -b .orig + +%global gen_contents_index gen_contents_index.orig +%if %{undefined without_haddock} +if [ ! -f "libraries/%{gen_contents_index}" ]; then + echo "Missing libraries/%{gen_contents_index}, needed at end of %%install!" + exit 1 +fi +%endif + %build # http://hackage.haskell.org/trac/ghc/wiki/Platforms @@ -253,6 +274,8 @@ HADDOCK_DOCS = NO %if %{defined without_manual} BUILD_DOCBOOK_HTML = NO %endif +# for verbose build output +#GhcStage1HcOpts=-v4 EOF export CFLAGS="${CFLAGS:-%optflags}" @@ -264,7 +287,8 @@ export CFLAGS="${CFLAGS:-%optflags}" --sharedstatedir=%{_sharedstatedir} --mandir=%{_mandir} \ --with-gcc=%{_bindir}/gcc -make %{?_smp_mflags} +# utf8 is needed when building with verbose output +LANG=en_US.utf8 make %{?_smp_mflags} %install @@ -320,6 +344,11 @@ mkdir -p %{buildroot}%{_sysconfdir}/cron.hourly install -p --mode=0755 %SOURCE3 %{buildroot}%{_sysconfdir}/cron.hourly/ghc-doc-index mkdir -p %{buildroot}%{_localstatedir}/lib/ghc install -p --mode=0755 %SOURCE4 %{buildroot}%{_bindir}/ghc-doc-index + +# generate initial lib doc index +cd libraries +sh %{gen_contents_index} --intree --verbose +cd .. %endif @@ -446,6 +475,14 @@ fi %changelog +* Tue Oct 29 2013 Jens Petersen - 7.6.3-19 +- fix rts hang on 64bit bigendian archs (patch by Gustavo Luiz Duarte, #989593) +- generate and ship library doc index for ghc bundled libraries +- build with utf8 encoding (needed for verbose ghc output + and makes better sense anyway) +- change ghc-cabal to make library html docdirs unversioned +- bootstrap build + * Sat Jul 27 2013 Jóhann B. Guðmundsson - 7.6.3-18 - ghc-doc-index requires crontabs and mark cron file config noreplace (http://fedoraproject.org/wiki/Packaging:CronFiles)