diff --git a/.ghc.metadata b/.ghc.metadata index 9fa9422..c4dd3da 100644 --- a/.ghc.metadata +++ b/.ghc.metadata @@ -1,2 +1,2 @@ -a33222646c440826af744ad70447446fb82b74cf SOURCES/ghc-8.2.2-src.tar.xz +495e9e844c4d339ce93e460619891e8e9a577054 SOURCES/ghc-8.6.5-src.tar.xz ce801cf456b8dacd565ce8df8288b4d90e7317ff SOURCES/llvm-3.9.1.src.tar.xz diff --git a/.gitignore b/.gitignore index 1b3318b..788e2f7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ SOURCES/ghc-8.2.2-src.tar.xz SOURCES/llvm-3.9.1.src.tar.xz +SOURCES/ghc-8.6.5-src.tar.xz \ No newline at end of file diff --git a/SOURCES/3e0812fe9d3f4712638a1c4c49bf2b2a7dc4311b.patch b/SOURCES/3e0812fe9d3f4712638a1c4c49bf2b2a7dc4311b.patch new file mode 100644 index 0000000..98a7925 --- /dev/null +++ b/SOURCES/3e0812fe9d3f4712638a1c4c49bf2b2a7dc4311b.patch @@ -0,0 +1,92 @@ +From 3e0812fe9d3f4712638a1c4c49bf2b2a7dc4311b Mon Sep 17 00:00:00 2001 +From: Ben Gamari +Date: Mon, 1 Jul 2019 11:03:33 -0400 +Subject: [PATCH] Call initgroups before setuid + +Previously we would fail to call initgroups before setuid'ing. This +meant that our groups we not be reset to reflect those our new user +belongs to. Fix this. +--- + cbits/runProcess.c | 32 +++++++++++++++++++++++++++++--- + include/runProcess.h | 4 ++++ + 2 files changed, 33 insertions(+), 3 deletions(-) + +diff --git a/cbits/runProcess.c b/cbits/runProcess.c +index 10794bc..84d5fd4 100644 +--- a/cbits/runProcess.c ++++ b/cbits/runProcess.c +@@ -33,6 +33,10 @@ static long max_fd = 0; + extern void blockUserSignals(void); + extern void unblockUserSignals(void); + ++// These are arbitrarily chosen -- JP ++#define forkSetgidFailed 124 ++#define forkSetuidFailed 125 ++ + // See #1593. The convention for the exit code when + // exec() fails seems to be 127 (gleened from C's + // system()), but there's no equivalent convention for +@@ -40,9 +44,8 @@ extern void unblockUserSignals(void); + #define forkChdirFailed 126 + #define forkExecFailed 127 + +-// These are arbitrarily chosen -- JP +-#define forkSetgidFailed 124 +-#define forkSetuidFailed 125 ++#define forkGetpwuidFailed 128 ++#define forkInitgroupsFailed 129 + + __attribute__((__noreturn__)) + static void childFailed(int pipe, int failCode) { +@@ -182,6 +185,23 @@ runInteractiveProcess (char *const args[], + } + + if ( childUser) { ++ // Using setuid properly first requires that we initgroups. ++ // However, to do this we must know the username of the user we are ++ // switching to. ++ struct passwd pw; ++ struct passwd *res = NULL; ++ int buf_len = sysconf(_SC_GETPW_R_SIZE_MAX); ++ char *buf = malloc(buf_len); ++ gid_t suppl_gid = childGroup ? *childGroup : getgid(); ++ if ( getpwuid_r(*childUser, &pw, buf, buf_len, &res) != 0) { ++ childFailed(forkCommunicationFds[1], forkGetpwuidFailed); ++ } ++ if ( res == NULL ) { ++ childFailed(forkCommunicationFds[1], forkGetpwuidFailed); ++ } ++ if ( initgroups(res->pw_name, suppl_gid) != 0) { ++ childFailed(forkCommunicationFds[1], forkInitgroupsFailed); ++ } + if ( setuid( *childUser) != 0) { + // ERROR + childFailed(forkCommunicationFds[1], forkSetuidFailed); +@@ -330,6 +350,12 @@ runInteractiveProcess (char *const args[], + case forkSetuidFailed: + *failed_doing = "runInteractiveProcess: setuid"; + break; ++ case forkGetpwuidFailed: ++ *failed_doing = "runInteractiveProcess: getpwuid"; ++ break; ++ case forkInitgroupsFailed: ++ *failed_doing = "runInteractiveProcess: initgroups"; ++ break; + default: + *failed_doing = "runInteractiveProcess: unknown"; + break; +diff --git a/include/runProcess.h b/include/runProcess.h +index 3807389..dff3905 100644 +--- a/include/runProcess.h ++++ b/include/runProcess.h +@@ -21,6 +21,10 @@ + + #include + #include ++#if !(defined(_MSC_VER) || defined(__MINGW32__) || defined(_WIN32)) ++#include ++#include ++#endif + + #ifdef HAVE_FCNTL_H + #include diff --git a/SOURCES/73ea41b3622e2e578d928f7513941aac9d873279.patch b/SOURCES/73ea41b3622e2e578d928f7513941aac9d873279.patch new file mode 100644 index 0000000..5b8d646 --- /dev/null +++ b/SOURCES/73ea41b3622e2e578d928f7513941aac9d873279.patch @@ -0,0 +1,24 @@ +From 73ea41b3622e2e578d928f7513941aac9d873279 Mon Sep 17 00:00:00 2001 +From: Ben Gamari +Date: Mon, 1 Jul 2019 11:02:45 -0400 +Subject: [PATCH] Fix incorrect case fallthrough + +The error message lookup logic would fallthrough from the +forkSetuidFailed case into the default case, meaning that the error +message of the former would never be returned. +--- + cbits/runProcess.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/cbits/runProcess.c b/cbits/runProcess.c +index c621158..10794bc 100644 +--- a/cbits/runProcess.c ++++ b/cbits/runProcess.c +@@ -329,6 +329,7 @@ runInteractiveProcess (char *const args[], + break; + case forkSetuidFailed: + *failed_doing = "runInteractiveProcess: setuid"; ++ break; + default: + *failed_doing = "runInteractiveProcess: unknown"; + break; diff --git a/SOURCES/D4159.patch b/SOURCES/D4159.patch deleted file mode 100644 index 17db2f3..0000000 --- a/SOURCES/D4159.patch +++ /dev/null @@ -1,70 +0,0 @@ -diff --git a/utils/ghc-pkg/Main.hs b/utils/ghc-pkg/Main.hs ---- a/utils/ghc-pkg/Main.hs -+++ b/utils/ghc-pkg/Main.hs -@@ -1208,7 +1208,18 @@ - pkgsCabalFormat = packages db - - pkgsGhcCacheFormat :: [PackageCacheFormat] -- pkgsGhcCacheFormat = map convertPackageInfoToCacheFormat pkgsCabalFormat -+ pkgsGhcCacheFormat -+ = map (recomputeValidAbiDeps pkgsCabalFormat) -- Note [Recompute abi-depends] -+ $ map convertPackageInfoToCacheFormat -+ pkgsCabalFormat -+ -+ hasAnyAbiDepends :: InstalledPackageInfo -> Bool -+ hasAnyAbiDepends x = length (abiDepends x) > 0 -+ -+-- -- warn when we find any (possibly-)bogus abi-depends fields; -+-- -- Note [Recompute abi-depends] -+-- when (any hasAnyAbiDepends pkgsCabalFormat) $ -+-- infoLn "ignoring (possibly broken) abi-depends field for packages" - - when (verbosity > Normal) $ - infoLn ("writing cache " ++ filename) -@@ -1231,6 +1242,45 @@ - ModuleName - OpenModule - -+{- Note [Recompute abi-depends] -+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+ -+Like most fields, `ghc-pkg` relies on who-ever is performing package -+registration to fill in fields; this includes the `abi-depends` field present -+for the package. -+ -+However, this was likely a mistake, and is not very robust; in certain cases, -+versions of Cabal may use bogus abi-depends fields for a package when doing -+builds. Why? Because package database information is aggressively cached; it is -+possible to work Cabal into a situation where it uses a cached version of -+`abi-depends`, rather than the one in the actual database after it has been -+recomputed. -+ -+However, there is an easy fix: ghc-pkg /already/ knows the `abi-depends` of a -+package, because they are the ABIs of the packages pointed at by the `depends` -+field. So it can simply look up the abi from the dependencies in the original -+database, and ignore whatever the system registering gave it. -+ -+So, instead, we do two things here: -+ -+ - We throw away the information for a registered package's `abi-depends` field. -+ -+ - We recompute it: we simply look up the unit ID of the package in the original -+ database, and use *its* abi-depends. -+ -+See Trac #14381, and Cabal issue #4728. -+ -+-} -+ -+recomputeValidAbiDeps :: [InstalledPackageInfo] -> PackageCacheFormat -> PackageCacheFormat -+recomputeValidAbiDeps db pkg = pkg { GhcPkg.abiDepends = catMaybes (newAbiDeps) } -+ where -+ newAbiDeps = flip map (GhcPkg.abiDepends pkg) $ \(k, _) -> -+ case filter (\d -> installedUnitId d == k) db of -+ [] -> Nothing -+ [x] -> Just (k, unAbiHash (abiHash x)) -+ _ -> Nothing -- ??? -+ - convertPackageInfoToCacheFormat :: InstalledPackageInfo -> PackageCacheFormat - convertPackageInfoToCacheFormat pkg = - GhcPkg.InstalledPackageInfo { - diff --git a/SOURCES/Disable-unboxed-arrays.patch b/SOURCES/Disable-unboxed-arrays.patch new file mode 100644 index 0000000..17d81c5 --- /dev/null +++ b/SOURCES/Disable-unboxed-arrays.patch @@ -0,0 +1,12 @@ +Index: ghc-8.6.1/libraries/containers/include/containers.h +=================================================================== +--- ghc-8.6.1.orig/libraries/containers/include/containers.h ++++ ghc-8.6.1/libraries/containers/include/containers.h +@@ -35,7 +35,6 @@ + + #ifdef __GLASGOW_HASKELL__ + # define USE_ST_MONAD 1 +-# define USE_UNBOXED_ARRAYS 1 + #endif + + #endif diff --git a/SOURCES/PprC-Add-support-for-adjacent-floats.patch b/SOURCES/PprC-Add-support-for-adjacent-floats.patch new file mode 100644 index 0000000..3a297c7 --- /dev/null +++ b/SOURCES/PprC-Add-support-for-adjacent-floats.patch @@ -0,0 +1,69 @@ +From 35a897782b6b0a252da7fdcf4921198ad4e1d96c Mon Sep 17 00:00:00 2001 +From: James Clarke +Date: Thu, 22 Nov 2018 11:55:17 -0500 +Subject: [PATCH] UNREG: PprC: Add support for adjacent floats + +When two 32-bit floats are adjacent for a 64-bit target, there is no +padding between them to force alignment, so we must combine their bit +representations into a single word. + +Reviewers: bgamari, simonmar + +Reviewed By: simonmar + +Subscribers: rwbarton, carter + +GHC Trac Issues: #15853 + +Differential Revision: https://phabricator.haskell.org/D5306 +--- + compiler/cmm/PprC.hs | 24 +++++++++++++++++++++++- + 1 file changed, 23 insertions(+), 1 deletion(-) + +diff --git a/compiler/cmm/PprC.hs b/compiler/cmm/PprC.hs +index 17fef7fc97..6ebfd20291 100644 +--- a/compiler/cmm/PprC.hs ++++ b/compiler/cmm/PprC.hs +@@ -512,9 +512,12 @@ pprLit1 other = pprLit other + pprStatics :: DynFlags -> [CmmStatic] -> [SDoc] + pprStatics _ [] = [] + pprStatics dflags (CmmStaticLit (CmmFloat f W32) : rest) +- -- floats are padded to a word by padLitToWord, see #1852 ++ -- odd numbers of floats are padded to a word by mkVirtHeapOffsetsWithPadding + | wORD_SIZE dflags == 8, CmmStaticLit (CmmInt 0 W32) : rest' <- rest + = pprLit1 (floatToWord dflags f) : pprStatics dflags rest' ++ -- adjacent floats aren't padded but combined into a single word ++ | wORD_SIZE dflags == 8, CmmStaticLit (CmmFloat g W32) : rest' <- rest ++ = pprLit1 (floatPairToWord dflags f g) : pprStatics dflags rest' + | wORD_SIZE dflags == 4 + = pprLit1 (floatToWord dflags f) : pprStatics dflags rest + | otherwise +@@ -1270,6 +1273,25 @@ floatToWord dflags r + , wORDS_BIGENDIAN dflags = 32 + | otherwise = 0 + ++floatPairToWord :: DynFlags -> Rational -> Rational -> CmmLit ++floatPairToWord dflags r1 r2 ++ = runST (do ++ arr <- newArray_ ((0::Int),1) ++ writeArray arr 0 (fromRational r1) ++ writeArray arr 1 (fromRational r2) ++ arr' <- castFloatToWord32Array arr ++ w32_1 <- readArray arr' 0 ++ w32_2 <- readArray arr' 1 ++ return (pprWord32Pair w32_1 w32_2) ++ ) ++ where pprWord32Pair w32_1 w32_2 ++ | wORDS_BIGENDIAN dflags = ++ CmmInt ((shiftL i1 32) .|. i2) W64 ++ | otherwise = ++ CmmInt ((shiftL i2 32) .|. i1) W64 ++ where i1 = toInteger w32_1 ++ i2 = toInteger w32_2 ++ + doubleToWords :: DynFlags -> Rational -> [CmmLit] + doubleToWords dflags r + = runST (do +-- +2.19.2 + diff --git a/SOURCES/add_-latomic_to_ghc-prim.patch b/SOURCES/add_-latomic_to_ghc-prim.patch new file mode 100644 index 0000000..71e4ddb --- /dev/null +++ b/SOURCES/add_-latomic_to_ghc-prim.patch @@ -0,0 +1,54 @@ +commit ce3897ffd6e7c8b8f36b8e920168bac8c7f836ae +Author: Ilias Tsitsimpis +Date: Tue Sep 18 17:45:17 2018 +0200 + + Fix check whether GCC supports __atomic_ builtins + + Summary: + C11 atomics are never used because: + + * The program used for checking whether GCC supports + __atomic_ builtins fails with the following error: + + ``` + error: size mismatch in argument 2 of `__atomic_load` + int test(int *x) { int y; __atomic_load(&x, &y, __ATOMIC_SEQ_CST); return x; } + ``` + + * There is a typo when checking if CONF_GCC_SUPPORTS__ATOMICS equals YES, + resulting in PRIM_CFLAGS and PRIM_EXTRA_LIBRARIES never being set. + + Reviewers: bgamari + + Reviewed By: bgamari + + Subscribers: rwbarton, erikd, carter + + Differential Revision: https://phabricator.haskell.org/D5154 + +Index: b/libraries/ghc-prim/aclocal.m4 +=================================================================== +--- a/libraries/ghc-prim/aclocal.m4 ++++ b/libraries/ghc-prim/aclocal.m4 +@@ -5,7 +5,7 @@ AC_DEFUN([FP_GCC_SUPPORTS__ATOMICS], + [ + AC_REQUIRE([AC_PROG_CC]) + AC_MSG_CHECKING([whether GCC supports __atomic_ builtins]) +- echo 'int test(int *x) { int y; __atomic_load(&x, &y, __ATOMIC_SEQ_CST); return x; }' > conftest.c ++ echo 'int test(int *x) { int y; __atomic_load(x, &y, __ATOMIC_SEQ_CST); return y; }' > conftest.c + if $CC -c conftest.c > /dev/null 2>&1; then + CONF_GCC_SUPPORTS__ATOMICS=YES + AC_MSG_RESULT([yes]) +Index: b/libraries/ghc-prim/configure.ac +=================================================================== +--- a/libraries/ghc-prim/configure.ac ++++ b/libraries/ghc-prim/configure.ac +@@ -8,7 +8,7 @@ dnl unregisterised, Sparc, and PPC ba + FP_GCC_SUPPORTS__ATOMICS + AC_DEFINE([HAVE_C11_ATOMICS], [$CONF_GCC_SUPPORTS__ATOMICS], [Does GCC support __atomic primitives?]) + +-if test "x$CONF_GCC_SUPPORTS__ATOMICS" = YES ++if test "$CONF_GCC_SUPPORTS__ATOMICS" = "YES" + then PRIM_CFLAGS=-DHAVE_C11_ATOMICS + PRIM_EXTRA_LIBRARIES=atomic + fi diff --git a/SOURCES/buildpath-abi-stability.patch b/SOURCES/buildpath-abi-stability.patch new file mode 100644 index 0000000..1d45c72 --- /dev/null +++ b/SOURCES/buildpath-abi-stability.patch @@ -0,0 +1,23 @@ +Forwarded to https://ghc.haskell.org/trac/ghc/ticket/10424 + +--- a/compiler/iface/MkIface.hs ++++ b/compiler/iface/MkIface.hs +@@ -681,7 +681,7 @@ addFingerprints hsc_env mb_old_fingerpri + iface_hash <- computeFingerprint putNameLiterally + (mod_hash, + ann_fn (mkVarOcc "module"), -- See mkIfaceAnnCache +- mi_usages iface0, ++ usages, + sorted_deps, + mi_hpc iface0) + +@@ -714,6 +714,9 @@ addFingerprints hsc_env mb_old_fingerpri + (non_orph_fis, orph_fis) = mkOrphMap ifFamInstOrph (mi_fam_insts iface0) + fix_fn = mi_fix_fn iface0 + ann_fn = mkIfaceAnnCache (mi_anns iface0) ++ -- Do not allow filenames to affect the interface ++ usages = [ case u of UsageFile _ fp -> UsageFile "" fp; _ -> u | u <- mi_usages iface0 ] ++ + + -- | Retrieve the orphan hashes 'mi_orphan_hash' for a list of modules + -- (in particular, the orphan modules which are transitively imported by the diff --git a/SOURCES/e175aaf6918bb2b497b83618dc4c270a0d231a1c.patch b/SOURCES/e175aaf6918bb2b497b83618dc4c270a0d231a1c.patch new file mode 100644 index 0000000..8824289 --- /dev/null +++ b/SOURCES/e175aaf6918bb2b497b83618dc4c270a0d231a1c.patch @@ -0,0 +1,63 @@ +From: Sergei Trofimovich +Date: Wed, 18 Jul 2018 22:36:58 +0000 (+0100) +Subject: fix osReserveHeapMemory block alignment +X-Git-Url: https://git.haskell.org/ghc.git/commitdiff_plain/e175aaf6918bb2b497b83618dc4c270a0d231a1c + +fix osReserveHeapMemory block alignment + +Before the change osReserveHeapMemory() attempted +to allocate chunks of memory via osTryReserveHeapMemory() +not multiple of MBLOCK_SIZE in the following fallback code: + +``` + if (at == NULL) { + *len -= *len / 8; +``` + +and caused assertion failure: + +``` +$ make fulltest TEST=T11607 WAY=threaded1 +T11607: internal error: ASSERTION FAILED: file rts/posix/OSMem.c, line 457 + (GHC version 8.7.20180716 for riscv64_unknown_linux) + +``` + +The change applies alignment mask before each MBLOCK allocation attempt +and fixes WAY=threaded1 test failures on qemu-riscv64. + +Signed-off-by: Sergei Trofimovich + +Test Plan: run 'make fulltest WAY=threaded1' + +Reviewers: simonmar, bgamari, erikd + +Reviewed By: simonmar + +Subscribers: rwbarton, thomie, carter + +Differential Revision: https://phabricator.haskell.org/D4982 +--- + +Index: b/rts/posix/OSMem.c +=================================================================== +--- a/rts/posix/OSMem.c ++++ b/rts/posix/OSMem.c +@@ -476,6 +476,8 @@ osTryReserveHeapMemory (W_ len, void *hi + void *base, *top; + void *start, *end; + ++ ASSERT((len & ~MBLOCK_MASK) == len); ++ + /* We try to allocate len + MBLOCK_SIZE, + because we need memory which is MBLOCK_SIZE aligned, + and then we discard what we don't need */ +@@ -552,6 +554,8 @@ void *osReserveHeapMemory(void *startAdd + + attempt = 0; + while (1) { ++ *len &= ~MBLOCK_MASK; ++ + if (*len < MBLOCK_SIZE) { + // Give up if the system won't even give us 16 blocks worth of heap + barf("osReserveHeapMemory: Failed to allocate heap storage"); diff --git a/SOURCES/fix-build-using-unregisterized-v8.4.patch b/SOURCES/fix-build-using-unregisterized-v8.4.patch new file mode 100644 index 0000000..c524733 --- /dev/null +++ b/SOURCES/fix-build-using-unregisterized-v8.4.patch @@ -0,0 +1,58 @@ +Description: Allow unregisterised ghc-8.4 to build newer GHC + Commit 4075656e8bb introduced a regression stopping existing unregisteristed + compilers from being able to compile newer versions of GHC. The problem is + that the bootstrap compiler uses the newer `rts/storage/ClosureTypes.h` file + where some defines have been renamed, resulting in the following error: +. + error: ‘stg_MUT_ARR_PTRS_FROZEN0_info’ undeclared (first use in this function); did you mean ‘stg_MUT_ARR_PTRS_FROZEN_DIRTY_info’? +. + For more information, see https://gitlab.haskell.org/ghc/ghc/issues/15913. +. + This patch can be removed, once ghc-8.4 is no longer the bootstrap compiler. +Author: Ilias Tsitsimpis +Bug: https://gitlab.haskell.org/ghc/ghc/issues/15913 +Bug-Debian: https://bugs.debian.org/932941 + +Index: b/includes/rts/storage/ClosureTypes.h +=================================================================== +--- a/includes/rts/storage/ClosureTypes.h ++++ b/includes/rts/storage/ClosureTypes.h +@@ -82,5 +82,11 @@ + #define SMALL_MUT_ARR_PTRS_DIRTY 60 + #define SMALL_MUT_ARR_PTRS_FROZEN_DIRTY 61 + #define SMALL_MUT_ARR_PTRS_FROZEN_CLEAN 62 ++#if __GLASGOW_HASKELL__ < 806 ++#define SMALL_MUT_ARR_PTRS_FROZEN0 SMALL_MUT_ARR_PTRS_FROZEN_DIRTY ++#define SMALL_MUT_ARR_PTRS_FROZEN SMALL_MUT_ARR_PTRS_FROZEN_CLEAN ++#define MUT_ARR_PTRS_FROZEN0 MUT_ARR_PTRS_FROZEN_DIRTY ++#define MUT_ARR_PTRS_FROZEN MUT_ARR_PTRS_FROZEN_CLEAN ++#endif + #define COMPACT_NFDATA 63 + #define N_CLOSURE_TYPES 64 +Index: b/includes/stg/MiscClosures.h +=================================================================== +--- a/includes/stg/MiscClosures.h ++++ b/includes/stg/MiscClosures.h +@@ -116,12 +116,22 @@ RTS_ENTRY(stg_ARR_WORDS); + RTS_ENTRY(stg_MUT_ARR_WORDS); + RTS_ENTRY(stg_MUT_ARR_PTRS_CLEAN); + RTS_ENTRY(stg_MUT_ARR_PTRS_DIRTY); ++#if __GLASGOW_HASKELL__ < 806 ++RTS_ENTRY(stg_MUT_ARR_PTRS_FROZEN); ++RTS_ENTRY(stg_MUT_ARR_PTRS_FROZEN0); ++#else + RTS_ENTRY(stg_MUT_ARR_PTRS_FROZEN_CLEAN); + RTS_ENTRY(stg_MUT_ARR_PTRS_FROZEN_DIRTY); ++#endif + RTS_ENTRY(stg_SMALL_MUT_ARR_PTRS_CLEAN); + RTS_ENTRY(stg_SMALL_MUT_ARR_PTRS_DIRTY); ++#if __GLASGOW_HASKELL__ < 806 ++RTS_ENTRY(stg_SMALL_MUT_ARR_PTRS_FROZEN); ++RTS_ENTRY(stg_SMALL_MUT_ARR_PTRS_FROZEN0); ++#else + RTS_ENTRY(stg_SMALL_MUT_ARR_PTRS_FROZEN_CLEAN); + RTS_ENTRY(stg_SMALL_MUT_ARR_PTRS_FROZEN_DIRTY); ++#endif + RTS_ENTRY(stg_MUT_VAR_CLEAN); + RTS_ENTRY(stg_MUT_VAR_DIRTY); + RTS_ENTRY(stg_END_TSO_QUEUE); diff --git a/SOURCES/ghc-8.6.3-sphinx-1.8.patch b/SOURCES/ghc-8.6.3-sphinx-1.8.patch new file mode 100644 index 0000000..2f94fc0 --- /dev/null +++ b/SOURCES/ghc-8.6.3-sphinx-1.8.patch @@ -0,0 +1,35 @@ +--- ghc-8.6.3/docs/users_guide/flags.py~ 2018-09-21 06:18:23.000000000 +0800 ++++ ghc-8.6.3/docs/users_guide/flags.py 2019-03-05 10:20:38.639782096 +0800 +@@ -49,6 +49,8 @@ + import sphinx + from sphinx import addnodes + from sphinx.domains.std import GenericObject ++from sphinx.domains import ObjType ++from sphinx.roles import XRefRole + from sphinx.errors import SphinxError + from distutils.version import LooseVersion + from utils import build_table_from_list +@@ -603,14 +605,21 @@ + sphinx_version = LooseVersion(sphinx.__version__) + override_arg = {'override': True} if sphinx_version >= LooseVersion('1.8') else {} + ++ # Yuck: We can't use app.add_object_type since we need to provide the ++ # Directive instance ourselves. ++ std_object_types = app.registry.domain_object_types.setdefault('std', {}) ++ + # Add ghc-flag directive, and override the class with our own +- app.add_object_type('ghc-flag', 'ghc-flag') + app.add_directive_to_domain('std', 'ghc-flag', Flag, **override_arg) ++ app.add_role_to_domain('std', 'ghc-flag', XRefRole()) ++ std_object_types['ghc-flag'] = ObjType('ghc-flag', 'ghc-flag') + + # Add extension directive, and override the class with our own +- app.add_object_type('extension', 'extension') + app.add_directive_to_domain('std', 'extension', LanguageExtension, + **override_arg) ++ app.add_role_to_domain('std', 'extension', XRefRole()) ++ std_object_types['extension'] = ObjType('ghc-flag', 'ghc-flag') ++ + # NB: language-extension would be misinterpreted by sphinx, and produce + # lang="extensions" XML attributes + diff --git a/SOURCES/ghc-Cabal-install-PATH-warning.patch b/SOURCES/ghc-Cabal-install-PATH-warning.patch index 5081fa1..786c5d9 100644 --- a/SOURCES/ghc-Cabal-install-PATH-warning.patch +++ b/SOURCES/ghc-Cabal-install-PATH-warning.patch @@ -1,20 +1,12 @@ ---- ghc-8.2.2/libraries/Cabal/Cabal/Distribution/Simple/Install.hs~ 2017-05-05 16:51:43.000000000 +0200 -+++ ghc-8.2.2/libraries/Cabal/Cabal/Distribution/Simple/Install.hs 2018-01-23 23:05:47.047081056 +0100 -@@ -36,7 +36,7 @@ - import Distribution.Simple.Utils - ( createDirectoryIfMissingVerbose - , installDirectoryContents, installOrdinaryFile, isInSearchPath -- , die', info, noticeNoWrap, warn, matchDirFileGlob ) -+ , die', info, noticeNoWrap, warn, matchDirFileGlob, debug ) - import Distribution.Simple.Compiler - ( CompilerFlavor(..), compilerFlavor ) - import Distribution.Simple.Setup -@@ -215,7 +215,7 @@ +--- ghc-8.2.2/libraries/Cabal/Cabal/Distribution/Simple/Install.hs~ 2017-05-05 23:51:43.000000000 +0900 ++++ ghc-8.2.2/libraries/Cabal/Cabal/Distribution/Simple/Install.hs 2018-02-27 12:22:13.159432104 +0900 +@@ -215,8 +215,7 @@ ++ " in " ++ binPref) inPath <- isInSearchPath binPref when (not inPath) $ - warn verbosity ("The directory " ++ binPref -+ debug verbosity ("The directory " ++ binPref - ++ " is not in the system search path.") +- ++ " is not in the system search path.") ++ warn verbosity ("Executable installed in " ++ binPref) case compilerFlavor (compiler lbi) of GHC -> GHC.installExe verbosity lbi binPref buildPref progFix pkg_descr exe + GHCJS -> GHCJS.installExe verbosity lbi binPref buildPref progFix pkg_descr exe diff --git a/SOURCES/ghc-Debian-reproducible-tmp-names.patch b/SOURCES/ghc-Debian-reproducible-tmp-names.patch deleted file mode 100644 index 16ffc32..0000000 --- a/SOURCES/ghc-Debian-reproducible-tmp-names.patch +++ /dev/null @@ -1,43 +0,0 @@ -This is an attempt to make GHC build reproducible. The name of .c files may end -up in the resulting binary (in the debug section), but not the directory. - -Instead of using the process id, create a hash from the command line arguments, -and assume that is going to be unique. - -Index: ghc-8.0.2/compiler/main/SysTools.hs -=================================================================== ---- ghc-8.0.2.orig/compiler/main/SysTools.hs -+++ ghc-8.0.2/compiler/main/SysTools.hs -@@ -65,6 +65,7 @@ - import Util - import DynFlags - import Exception -+import Fingerprint - - import LlvmCodeGen.Base (llvmVersionStr, supportedLlvmVersion) - -@@ -1145,8 +1146,8 @@ - mapping <- readIORef dir_ref - case Map.lookup tmp_dir mapping of - Nothing -> do -- pid <- getProcessID -- let prefix = tmp_dir "ghc" ++ show pid ++ "_" -+ pid <- getStableProcessID -+ let prefix = tmp_dir "ghc" ++ pid ++ "_" - mask_ $ mkTempDir prefix - Just dir -> return dir - where -@@ -1562,6 +1563,13 @@ - getProcessID = System.Posix.Internals.c_getpid >>= return . fromIntegral - #endif - -+-- Debian-specific hack to get reproducible output, by not using the "random" -+-- pid, but rather something determinisic -+getStableProcessID :: IO String -+getStableProcessID = do -+ args <- getArgs -+ return $ take 4 $ show $ fingerprintString $ unwords args -+ - -- Divvy up text stream into lines, taking platform dependent - -- line termination into account. - linesPlatform :: String -> [String] diff --git a/SOURCES/ghc-configure-fix-sphinx-version-check.patch b/SOURCES/ghc-configure-fix-sphinx-version-check.patch deleted file mode 100644 index c19da05..0000000 --- a/SOURCES/ghc-configure-fix-sphinx-version-check.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- ghc-8.2.2/configure.ac~ 2017-11-21 05:22:42.000000000 +0900 -+++ ghc-8.2.2/configure.ac 2018-05-28 12:37:35.296728423 +0900 -@@ -745,7 +745,7 @@ - AC_CACHE_CHECK([for version of sphinx-build], fp_cv_sphinx_version, - changequote(, )dnl - [if test -n "$SPHINXBUILD"; then -- fp_cv_sphinx_version=`"$SPHINXBUILD" --version 2>&1 | sed 's/Sphinx\( (sphinx-build)\)\? v\?\([0-9]\.[0-9]\.[0-9]\)/\2/' | head -n1`; -+ fp_cv_sphinx_version=`"$SPHINXBUILD" --version 2>&1 | sed 's/.* v\?\([0-9]\.[0-9]\.[0-9]\)/\1/' | head -n1`; - fi; - changequote([, ])dnl - ]) diff --git a/SOURCES/ghc-doc-index b/SOURCES/ghc-doc-index deleted file mode 100755 index a0223fa..0000000 --- a/SOURCES/ghc-doc-index +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/sh - -LOCKFILE=/var/lock/ghc-doc-index.lock - -# the lockfile is not meant to be perfect, it's just in case -# two cron scripts get run close to each other to keep -# them from stepping on each other's toes. -if [ -f $LOCKFILE ]; then - echo "Locked with $LOCKFILE" - exit 0 -fi - -if [ "$(id -u)" != "0" ]; then - echo Need to be root! - exit 1 -fi - -trap "{ rm -f $LOCKFILE ; exit 255; }" EXIT -touch $LOCKFILE - -PKGDIRCACHE=/var/lib/ghc/pkg-dir.cache -LISTING="env LANG=C ls -dl" - -# only re-index ghc docs when there are changes -cd /usr/share/doc/ghc/html/libraries -if [ -r "$PKGDIRCACHE" ]; then - $LISTING */ > $PKGDIRCACHE.new - DIR_DIFF=$(diff $PKGDIRCACHE $PKGDIRCACHE.new) -else - $LISTING */ > $PKGDIRCACHE -fi -if [ -x "gen_contents_index" -a ! -r "$PKGDIRCACHE.new" -o -n "$DIR_DIFF" ]; then - ./gen_contents_index -fi - -if [ -f $PKGDIRCACHE.new ]; then - mv -f $PKGDIRCACHE.new $PKGDIRCACHE -fi diff --git a/SOURCES/ghc-doc-index.cron b/SOURCES/ghc-doc-index.cron deleted file mode 100755 index 4efe2ff..0000000 --- a/SOURCES/ghc-doc-index.cron +++ /dev/null @@ -1,9 +0,0 @@ -#! /bin/bash -# updates the library documentation index after updates - -# This can be disabled by uninstalling ghc-doc-index -# or adding ghc-doc-index to "./jobs-deny". - -/usr/bin/ghc-doc-index - -exit 0 diff --git a/SOURCES/ghc-pkg.man b/SOURCES/ghc-pkg.man new file mode 100644 index 0000000..ccac8e4 --- /dev/null +++ b/SOURCES/ghc-pkg.man @@ -0,0 +1,228 @@ +.TH ghc-pkg 1 "2010-01-27" +.SH NAME +ghc-pkg \- GHC Haskell Cabal package manager +.SH SYNOPSIS +.B ghc-pkg +.I action +.RI [ OPTION ]... +.SH DESCRIPTION +A package is a library of Haskell modules known to the compiler. The +.B ghc-pkg +tool allows adding or removing them from a package database. By +default, the system-wide package database is modified, but +alternatively the user's local package database or another specified +file can be used. +.PP +To make a package available for +.BR ghc , +.B ghc-pkg +can be used to register it. Unregistering it removes it from the +database. Also, packages can be hidden, to make +.B ghc +ignore the package by default, without uninstalling it. Exposing a +package makes a hidden package available. Additionally, +.B ghc-pkg +has various commands to query the package database. +.PP +Where a package name is required, the package can be named in full +including the version number (e.g. +.BR network-1.0 ), +or without the version number. Naming a package without the version +number matches all versions of the package; the specified action will +be applied to all the matching packages. A package specifier that +matches all version of the package can also be written +.BR pkg-* , +to make it clearer that multiple packages are being matched. +.SH ACTIONS +.TP +\fBregister\fP \fIfilename\fP|\fB-\fP +Register the package using the specified installed package +description. +.TP +\fBupdate\fP \fIfilename\fP|\fB-\fP +Register the package, overwriting any other package with the same +name. +.TP +\fBunregister\fP \fIpkg-id\fP +Unregister the specified package. +.TP +\fBexpose\fP \fIpkg-id\fP +Expose the specified package. +.TP +\fBhide\fP \fIpkg-id\fP +Hide the specified package +.TP +\fBlist\fP \fR[\fIpkg\fR]...\fP +List registered packages in the global database, and also the user +database if +.B --user +is given. If a package name is given all the registered versions will +be listed in ascending order. Accepts the +.B --simple-output +flag. +.TP +.B dot +Generate a graph of the package dependencies in a form suitable for +input for the graphviz tools. For example, to generate a PDF of the +dependency graph: +.br +\fB dot \| tred \| dot -Tpdf >pkgs.pdf\fP +.TP +\fBfind-module\fP \fImodule\fP +List registered packages exposing module +.I module +in the global database, and also the user database if +.B --user +is given. All the registered versions will be listed in ascending +order. Accepts the +.B --simple-output +flag. +.TP +\fBlatest\fP \fIpkg-id\fP +Prints the highest registered version of a package. +.TP +.B check +Check the consistency of package dependencies and list broken +packages. Accepts the +.B --simple-output +flag. +.TP +\fBdescribe\fP \fIpkg\fP +Give the registered description for the +specified package. The description is returned in precisely the syntax +required by ghc-pkg register. +.TP +\fBfield\fP \fIpkg field\fP +Extract the specified field of the package description for the +specified package. Accepts comma-separated multiple fields. +.TP +.B dump +Dump the registered description for every package. This is like +.BR ghc-pkg\ describe\ '*' , +expect that it is intended to be used by tools that parse the results, +rather than humans. +.TP +.B recache +Regenerate the package database cache. This command should only be +necessary if you added a package to the database by dropping a file +into the database directory manyally. By default, the global DB is +recached; to recache a different DB use +.B --user +or +.B --package-conf +as appropriate. +.SH OPTIONS +When asked to modify a database +.RB ( register ,\ unregister ,\ update ,\ hide ,\ expose ,\ and\ also\ check ), +.B ghc-pkg +modifies the global database by +default. Specifying +.B --user +causes it to act on the user database, +or +.B --package-conf +can be used to act on another database +entirely. When multiple of these options are given, the rightmost +one is used as the database to act upon. +.PP +Commands that query the package database +.RB ( list ,\ latest ,\ describe ,\ field ) +operate on the list of databases specified by the flags +.BR --user ,\ --global , +and +.BR --package-conf . +If none of these flags are +given, the default is +.BR --global\ --user . +.TP +.B --user +Use the current user's package database. +.TP +.B --global +Use the global package database. +.TP +\fB-f\fP \fIFILE\fP, \fB--package-conf=\fIFILE\fP +Use the specified package config file. +.TP +.BI --global-conf= FILE +Location of the global package config. +.TP +.B --force +Ignore missing dependencies, directories, and libraries. +.TP +.B --force-files +Ignore missing directories and libraries only. +.TP +.BR -g ,\ --auto-ghc-libs +Automatically build libs for GHCi (with register). +.TP +.BR -? ,\ --help +Display a help message and exit. +.TP +.BR -V ,\ --version +Output version information and exit. +.TP +.B --simple-output +Print output in easy-to-parse format for some commands. +.TP +.B --names-only +Only print package names, not versions; can only be used with +.BR list\ --simple-output . +.TP +.B --ignore-case +Ignore case for substring matching. +.SH ENVIRONMENT VARIABLES +.TP +.B GHC_PACKAGE_PATH +The +.B GHC_PACKAGE_PATH +environment variable may be set to a +.BR : -separated +list of files containing package databases. This list of package +databases is used by +.B ghc +and +.BR ghc-pkg , +with earlier databases in the list overriding later ones. This order +was chosen to match the behaviour of the +.B PATH +environment variable; think of it as a list of package databases that +are searched left-to-right for packages. + +If +.B GHC_PACKAGE_PATH +ends in a separator, then the default user and system package +databases are appended, in that order. e.g. to augment the usual set +of packages with a database of your own, you could say: + +.br +\fB export GHC_PACKAGE_PATH=$HOME/.my-ghc-packages.conf:\fP +.br + +To check whether your +.B GHC_PACKAGE_PATH +setting is doing the right thing, +.B ghc-pkg list +will list all the databases in use, in the reverse order they are +searched. +.SH FILES +Both of these locations are changed for Debian. Upstream still keeps +these under +.IR /usr . +Some programs may refer to that, but look in +.I /var +instead. +.TP +.I /var/lib/ghc/package.conf +Global package.conf file. +.TP +.I /var/lib/ghc/package.conf.d/ +Directory for library specific package.conf files. These are added to +the global registry. +.SH "SEE ALSO" +.BR ghc (1), +.BR runghc (1), +.BR hugs (1). +.SH AUTHOR +This manual page was written by Kari Pahula , for the +Debian project (and may be used by others). diff --git a/SOURCES/ghc-warnings.mk-CC-Wall.patch b/SOURCES/ghc-warnings.mk-CC-Wall.patch new file mode 100644 index 0000000..f775eb3 --- /dev/null +++ b/SOURCES/ghc-warnings.mk-CC-Wall.patch @@ -0,0 +1,12 @@ +--- ghc-8.4.3/mk/warnings.mk~ 2018-02-04 02:30:11.000000000 +0900 ++++ ghc-8.4.3/mk/warnings.mk 2018-09-29 14:33:37.607884921 +0900 +@@ -1,6 +1,6 @@ + # See Note [Order of warning flags]. +-SRC_CC_OPTS += -Wall $(WERROR) ++#SRC_CC_OPTS += -Wall $(WERROR) + SRC_HC_OPTS += -Wall + # Don't add -Werror to SRC_HC_OPTS_STAGE0 (or SRC_HC_OPTS), because otherwise + # validate may unnecessarily fail when booting with an older compiler. + # It would be better to only exclude certain warnings from becoming errors + +Diff finished. Sat Sep 29 14:35:43 2018 diff --git a/SOURCES/haddock.man b/SOURCES/haddock.man new file mode 100644 index 0000000..a30106b --- /dev/null +++ b/SOURCES/haddock.man @@ -0,0 +1,231 @@ +.TH HADDOCK 1 "July 2010" "Haddock, version 2.6.1" "Haddock documentation generator" + + +.SH NAME +haddock \- documentation tool for annotated Haskell source code + + +.SH SYNOPSIS +.B haddock +.RI [ options ] " file" ... + + +.SH DESCRIPTION +This manual page documents briefly the +.B haddock +command. +Extensive documentation is available in various other formats including DVI, +PostScript and HTML; see below. + +.PP +.I file +is a filename containing a Haskell source module. +All the modules specified on the command line will be processed together. +When one module refers to an entity in another module being processed, the +documentation will link directly to that entity. + +Entities that cannot be found, for example because they are in a module that +is not being processed as part of the current batch, simply will not be +hyperlinked in the generated documentation. +.B haddock +will emit warnings listing all the identifiers it could not resolve. + +The modules should not be mutually recursive, as +.B haddock +does not like swimming in circles. + + +.SH OPTIONS +The programs follow the usual GNU command line syntax, with long +options starting with two dashes (`--'). +A summary of options is included below. +For a complete description, see the other documentation. + +.TP +\fB\-o \fIDIR\fP, \-\-odir=\fIDIR\fP +directory in which to put the output files + +.TP +\fB\-i \fIFILE\fP, \-\-read-interface=\fIFILE\fP +read an interface from +.IR FILE . + +.TP +\fB\-D \fIFILE\fP, \-\-dump\-interface=\fIFILE\fP +dump an interface for these modules in +.IR FILE . + +.TP +\fB\-l \fIDIR\fP, \-\-lib=\fIDIR\fP +location of Haddock's auxiliary files + +.TP +.BR \-h ", " \-\-html +Generate documentation in HTML format. +Several files will be generated into the current directory (or the specified +directory if the +.B \-o +option is given), including the following: +.RS +.TP +.I index.html +The top level page of the documentation: +lists the modules available, using indentation to represent the hierarchy if +the modules are hierarchical. +.TP +.I haddock.css +The stylesheet used by the generated HTML. +Feel free to modify this to change the colors or layout, or even specify +your own stylesheet using the +.B \-\-css +option. +.TP +.I module.html +An HTML page for each module. +.TP +.IR doc-index.html ", " doc-index-XX.html +The index, split into two (functions/constructors and types/classes, as per +Haskell namespaces) and further split alphabetically. +.RE + +.TP +.B \-\-hoogle +output for Hoogle + +.TP +\fB\-\-html\-help=\fIformat +produce index and table of contents in mshelp, mshelp2 or devhelp format +(with \fI\-h\fP) + +.TP +\fB\-\-source\-base=\fPURL +Include links to the source files in the generated documentation, where URL +is the base URL where the source files can be found. + +.TP +\fB\-s \fPURL, \fB\-\-source\-module=\fPURL +Include links to the source files in the generated documentation, where URL +is a source code link for each module (using the %{FILE} or %{MODULE} vars). + +.TP +\fB\-\-source\-entity=\fPURL +Include links to the source files in the generated documentation, where URL +is a source code link for each entity (using the %{FILE}, %{MODULE} or %{NAME} vars). + +.TP +\fB\-\-comments\-base=\fPURL +URL for a comments link on the contents and index pages. +.TP +\fB\-\-comments\-module=\fPURL +URL for a comments link for each module (using the %{MODULE} var). +.TP +\fB\-\-comments\-entity=\fPURL +URL for a comments link for each entity (using the %{FILE}, %{MODULE} or %{NAME} vars). +.TP +.BI \-\-css= FILE +Use the CSS +.I FILE +instead of the default stylesheet that comes with +.B haddock +for HTML output. It should specify certain classes: see the default stylesheet for details. + +.TP +\fB\-p \fIFILE\fP, \-\-prologue=\fIFILE\fP +Specify a file containing prologue text. + +.TP +\fB\-t \fITITLE\fP, \-\-title=\fITITLE\fP +Use \fITITLE\fP as the page heading for each page in the documentation. +This will normally be the name of the library being documented. + +The title should be a plain string (no markup please!). + +.TP +\fB\-k \fINAME\fP, \-\-package=\fINAME\fP +Specify the package name (optional). + +.TP +.BR \-n ", " \-\-no\-implicit\-prelude +do not assume Prelude is imported + +.TP +.BR \-d ", " \-\-debug +Enable extra debugging output. + +.TP +.BR \-? ", " \-\-help +Display help. + +.TP +.BR \-V ", " \-\-version +Display version. + +.TP +.BR \-v ", " \-\-verbose +Verbose status reporting. + +.TP +\fB\-\-use\-contents=\fPURL +Use a separately-generated HTML contents page. + +.TP +.B \-\-gen\-contents +Generate an HTML contents from specified interfaces. + +.TP +\fB\-\-use\-index=\fPURL +Use a separately-generated HTML index. + +.TP +.B \-\-gen\-index +Generate an HTML index from specified interfaces. + +.TP +.B \-\-ignore\-all\-exports +Behave as if all modules have the ignore-exports atribute + +.TP +\fB\-\-hide=\fIMODULE +Behave as if \fIMODULE\fP has the hide attribute. + +.TP +\fB\-\-use\-package=\fIPACKAGE +The modules being processed depend on \fIPACKAGE\fP. + +.SH FILES +.I /usr/bin/haddock +.br +.I /usr/share/haddock-2.6.1/html/plus.gif +.br +.I /usr/share/haddock-2.6.1/html/minus.gif +.br +.I /usr/share/haddock-2.6.1/html/haskell_icon.gif +.br +.I /usr/share/haddock-2.6.1/html/haddock.js +.br +.I /usr/share/haddock-2.6.1/html/haddock.css +.br +.I /usr/share/haddock-2.6.1/html/haddock-DEBUG.css + +.SH SEE ALSO +.IR /usr/share/doc/haddock/ , +.br +the Haddock homepage +.UR http://haskell.org/haddock/ +(http://haskell.org/haddock/) +.UE + +.SH COPYRIGHT +Haddock version 2.6.1 + +Copyright 2006-2010 Simon Marlow , Dawid Waern . +All rights reserved. + + +.SH AUTHOR +This manual page was written by Michael Weber +for the Debian GNU/Linux system (but may be used by others). + +.\" Local variables: +.\" mode: nroff +.\" End: diff --git a/SOURCES/llvm-D25865-cmakeshlib.patch b/SOURCES/llvm-D25865-cmakeshlib.patch deleted file mode 100644 index 1f98266..0000000 --- a/SOURCES/llvm-D25865-cmakeshlib.patch +++ /dev/null @@ -1,83 +0,0 @@ -From 417001588d232151050db2d32df443e2d073ebbf Mon Sep 17 00:00:00 2001 -From: Valentin Churavy -Date: Fri, 21 Oct 2016 17:25:04 +0900 -Subject: [PATCH] Fix llvm-shlib cmake build - -Summary: -This fixes a few things that used to work with a Makefile build, but were broken in cmake. - -1. Treat MINGW like a Linux system. -2. The shlib should never contain other shared libraries. - -Subscribers: beanz, mgorny - -Differential Revision: https://reviews.llvm.org/D25865 ---- - tools/llvm-shlib/CMakeLists.txt | 42 ++++++++++++++++++++--------------------- - 1 file changed, 20 insertions(+), 22 deletions(-) - -diff --git a/tools/llvm-shlib/CMakeLists.txt b/tools/llvm-shlib/CMakeLists.txt -index 3fe672d..edadb82 100644 ---- a/tools/llvm-shlib/CMakeLists.txt -+++ b/tools/llvm-shlib/CMakeLists.txt -@@ -8,29 +8,27 @@ set(SOURCES - - llvm_map_components_to_libnames(LIB_NAMES ${LLVM_DYLIB_COMPONENTS}) - --if(LLVM_LINK_LLVM_DYLIB) -- if(LLVM_DYLIB_EXPORTED_SYMBOL_FILE) -- message(WARNING "Using LLVM_LINK_LLVM_DYLIB with LLVM_DYLIB_EXPORTED_SYMBOL_FILE may not work. Use at your own risk.") -- endif() -- -- # libLLVM.so should not have any dependencies on any other LLVM -- # shared libraries. When using the "all" pseudo-component, -- # LLVM_AVAILABLE_LIBS is added to the dependencies, which may -- # contain shared libraries (e.g. libLTO). -- # -- # Also exclude libLLVMTableGen for the following reasons: -- # - it is only used by internal *-tblgen utilities; -- # - it pollutes the global options space. -- foreach(lib ${LIB_NAMES}) -- get_target_property(t ${lib} TYPE) -- if("${lib}" STREQUAL "LLVMTableGen") -- elseif("x${t}" STREQUAL "xSTATIC_LIBRARY") -- list(APPEND FILTERED_LIB_NAMES ${lib}) -- endif() -- endforeach() -- set(LIB_NAMES ${FILTERED_LIB_NAMES}) -+if(LLVM_LINK_LLVM_DYLIB AND LLVM_DYLIB_EXPORTED_SYMBOL_FILE) -+ message(WARNING "Using LLVM_LINK_LLVM_DYLIB with LLVM_DYLIB_EXPORTED_SYMBOL_FILE may not work. Use at your own risk.") - endif() - -+# libLLVM.so should not have any dependencies on any other LLVM -+# shared libraries. When using the "all" pseudo-component, -+# LLVM_AVAILABLE_LIBS is added to the dependencies, which may -+# contain shared libraries (e.g. libLTO). -+# -+# Also exclude libLLVMTableGen for the following reasons: -+# - it is only used by internal *-tblgen utilities; -+# - it pollutes the global options space. -+foreach(lib ${LIB_NAMES}) -+ get_target_property(t ${lib} TYPE) -+ if("${lib}" STREQUAL "LLVMTableGen") -+ elseif("x${t}" STREQUAL "xSTATIC_LIBRARY") -+ list(APPEND FILTERED_LIB_NAMES ${lib}) -+ endif() -+endforeach() -+set(LIB_NAMES ${FILTERED_LIB_NAMES}) -+ - if(LLVM_DYLIB_EXPORTED_SYMBOL_FILE) - set(LLVM_EXPORTED_SYMBOL_FILE ${LLVM_DYLIB_EXPORTED_SYMBOL_FILE}) - add_custom_target(libLLVMExports DEPENDS ${LLVM_EXPORTED_SYMBOL_FILE}) -@@ -39,7 +37,7 @@ endif() - add_llvm_library(LLVM SHARED DISABLE_LLVM_LINK_LLVM_DYLIB SONAME ${SOURCES}) - - list(REMOVE_DUPLICATES LIB_NAMES) --if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") # FIXME: It should be "GNU ld for elf" -+if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux" OR MINGW) # FIXME: It should be "GNU ld for elf" - # GNU ld doesn't resolve symbols in the version script. - set(LIB_NAMES -Wl,--whole-archive ${LIB_NAMES} -Wl,--no-whole-archive) - elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin") --- -2.10.1 - diff --git a/SOURCES/llvm-install_dirs.patch b/SOURCES/llvm-install_dirs.patch deleted file mode 100644 index 3ebe853..0000000 --- a/SOURCES/llvm-install_dirs.patch +++ /dev/null @@ -1,392 +0,0 @@ -diff -up llvm-3.9.1.src/bindings/ocaml/backends/CMakeLists.txt.instdirs llvm-3.9.1.src/bindings/ocaml/backends/CMakeLists.txt ---- llvm-3.9.1.src/bindings/ocaml/backends/CMakeLists.txt.instdirs 2014-12-29 20:24:07.000000000 -0700 -+++ llvm-3.9.1.src/bindings/ocaml/backends/CMakeLists.txt 2017-02-13 13:36:43.999154756 -0700 -@@ -23,5 +23,5 @@ foreach(TARGET ${LLVM_TARGETS_TO_BUILD}) - "${LLVM_LIBRARY_DIR}/ocaml/META.llvm_${TARGET}") - - install(FILES "${LLVM_LIBRARY_DIR}/ocaml/META.llvm_${TARGET}" -- DESTINATION lib/ocaml) -+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/ocaml) - endforeach() -diff -up llvm-3.9.1.src/bindings/ocaml/llvm/CMakeLists.txt.instdirs llvm-3.9.1.src/bindings/ocaml/llvm/CMakeLists.txt ---- llvm-3.9.1.src/bindings/ocaml/llvm/CMakeLists.txt.instdirs 2014-12-29 20:24:07.000000000 -0700 -+++ llvm-3.9.1.src/bindings/ocaml/llvm/CMakeLists.txt 2017-02-13 13:36:43.999154756 -0700 -@@ -8,4 +8,4 @@ configure_file( - "${LLVM_LIBRARY_DIR}/ocaml/META.llvm") - - install(FILES "${LLVM_LIBRARY_DIR}/ocaml/META.llvm" -- DESTINATION lib/ocaml) -+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/ocaml) -diff -up llvm-3.9.1.src/CMakeLists.txt.instdirs llvm-3.9.1.src/CMakeLists.txt ---- llvm-3.9.1.src/CMakeLists.txt.instdirs 2016-09-13 07:44:50.000000000 -0600 -+++ llvm-3.9.1.src/CMakeLists.txt 2017-02-13 13:36:44.003154733 -0700 -@@ -194,13 +194,15 @@ if (CMAKE_BUILD_TYPE AND - endif() - - set(LLVM_LIBDIR_SUFFIX "" CACHE STRING "Define suffix of library directory name (32/64)" ) -- --set(LLVM_TOOLS_INSTALL_DIR "bin" CACHE STRING "Path for binary subdirectory (defaults to 'bin')") --mark_as_advanced(LLVM_TOOLS_INSTALL_DIR) -+set(CMAKE_INSTALL_BINDIR bin CACHE STRING "Path for binary subdirectory relative to prefix (defaults to 'bin')" ) -+set(CMAKE_INSTALL_LIBDIR lib${LLVM_LIBDIR_SUFFIX} CACHE STRING "Path for library subdirectory (defaults to 'lib${LLVM_LIBDIR_SUFFIX}'" ) -+set(CMAKE_INSTALL_INCLUDEDIR include CACHE STRING "Path for include subdirectory relative to prefix (defaults to 'include'" ) -+set(CMAKE_INSTALL_DOCDIR share/doc/${project} CACHE STRING "Path for documentation subdirectory relative to prefix (defaults to 'share/doc/${project}')" ) -+set(CMAKE_INSTALL_MANDIR share/man CACHE STRING "Path for manpages subdirectory relative to prefix (defaults to 'share/man')" ) - - # They are used as destination of target generators. --set(LLVM_RUNTIME_OUTPUT_INTDIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin) --set(LLVM_LIBRARY_OUTPUT_INTDIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib${LLVM_LIBDIR_SUFFIX}) -+set(LLVM_RUNTIME_OUTPUT_INTDIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${CMAKE_INSTALL_BINDIR}) -+set(LLVM_LIBRARY_OUTPUT_INTDIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${CMAKE_INSTALL_LIBDIR}) - if(WIN32 OR CYGWIN) - # DLL platform -- put DLLs into bin. - set(LLVM_SHLIB_OUTPUT_INTDIR ${LLVM_RUNTIME_OUTPUT_INTDIR}) -@@ -613,8 +615,8 @@ configure_file( - - # They are not referenced. See set_output_directory(). - set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${LLVM_BINARY_DIR}/bin ) --set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LLVM_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX} ) --set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LLVM_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX} ) -+set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LLVM_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR} ) -+set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LLVM_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR} ) - - set(CMAKE_BUILD_WITH_INSTALL_RPATH ON) - if (APPLE) -@@ -622,7 +624,7 @@ if (APPLE) - set(CMAKE_INSTALL_RPATH "@executable_path/../lib") - else(UNIX) - if(NOT DEFINED CMAKE_INSTALL_RPATH) -- set(CMAKE_INSTALL_RPATH "\$ORIGIN/../lib${LLVM_LIBDIR_SUFFIX}") -+ set(CMAKE_INSTALL_RPATH "\$ORIGIN/../${CMAKE_INSTALL_LIBDIR}") - if(${CMAKE_SYSTEM_NAME} MATCHES "(FreeBSD|DragonFly)") - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,origin") - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,origin") -@@ -799,7 +801,7 @@ add_subdirectory(cmake/modules) - - if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY) - install(DIRECTORY include/llvm include/llvm-c -- DESTINATION include -+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} - COMPONENT llvm-headers - FILES_MATCHING - PATTERN "*.def" -@@ -811,7 +813,7 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY) - ) - - install(DIRECTORY ${LLVM_INCLUDE_DIR}/llvm -- DESTINATION include -+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} - COMPONENT llvm-headers - FILES_MATCHING - PATTERN "*.def" -diff -up llvm-3.9.1.src/cmake/modules/AddLLVM.cmake.instdirs llvm-3.9.1.src/cmake/modules/AddLLVM.cmake ---- llvm-3.9.1.src/cmake/modules/AddLLVM.cmake.instdirs 2016-07-09 20:43:47.000000000 -0600 -+++ llvm-3.9.1.src/cmake/modules/AddLLVM.cmake 2017-02-13 13:36:44.012154680 -0700 -@@ -546,7 +558,7 @@ macro(add_llvm_library name) - set_target_properties( ${name} PROPERTIES EXCLUDE_FROM_ALL ON) - elseif(NOT _is_gtest) - if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY OR ${name} STREQUAL "LTO") -- set(install_dir lib${LLVM_LIBDIR_SUFFIX}) -+ set(install_dir ${CMAKE_INSTALL_LIBDIR}) - if(ARG_SHARED OR BUILD_SHARED_LIBS) - if(WIN32 OR CYGWIN OR MINGW) - set(install_type RUNTIME) -@@ -590,12 +602,12 @@ macro(add_llvm_loadable_module name) - # DLL platform - set(dlldir "bin") - else() -- set(dlldir "lib${LLVM_LIBDIR_SUFFIX}") -+ set(dlldir "${CMAKE_INSTALL_LIBDIR}") - endif() - install(TARGETS ${name} - EXPORT LLVMExports - LIBRARY DESTINATION ${dlldir} -- ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX}) -+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) - endif() - set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS ${name}) - endif() -@@ -770,7 +782,7 @@ macro(add_llvm_tool name) - if( LLVM_BUILD_TOOLS ) - install(TARGETS ${name} - EXPORT LLVMExports -- RUNTIME DESTINATION ${LLVM_TOOLS_INSTALL_DIR} -+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - COMPONENT ${name}) - - if (NOT CMAKE_CONFIGURATION_TYPES) -@@ -795,7 +807,7 @@ macro(add_llvm_example name) - endif() - add_llvm_executable(${name} ${ARGN}) - if( LLVM_BUILD_EXAMPLES ) -- install(TARGETS ${name} RUNTIME DESTINATION examples) -+ install(TARGETS ${name} RUNTIME DESTINATION ${CMAKE_INSTALL_DOCDIR}/examples) - endif() - set_target_properties(${name} PROPERTIES FOLDER "Examples") - endmacro(add_llvm_example name) -@@ -811,7 +823,7 @@ macro(add_llvm_utility name) - set_target_properties(${name} PROPERTIES FOLDER "Utils") - if( LLVM_INSTALL_UTILS AND LLVM_BUILD_UTILS ) - install (TARGETS ${name} -- RUNTIME DESTINATION bin -+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - COMPONENT ${name}) - if (NOT CMAKE_CONFIGURATION_TYPES) - add_custom_target(install-${name} -@@ -1173,7 +1185,7 @@ function(llvm_install_library_symlink na - set(full_name ${CMAKE_${type}_LIBRARY_PREFIX}${name}${CMAKE_${type}_LIBRARY_SUFFIX}) - set(full_dest ${CMAKE_${type}_LIBRARY_PREFIX}${dest}${CMAKE_${type}_LIBRARY_SUFFIX}) - -- set(output_dir lib${LLVM_LIBDIR_SUFFIX}) -+ set(output_dir ${CMAKE_INSTALL_LIBDIR}) - if(WIN32 AND "${type}" STREQUAL "SHARED") - set(output_dir bin) - endif() -@@ -1210,7 +1222,7 @@ function(llvm_install_symlink name dest) - set(full_dest ${dest}${CMAKE_EXECUTABLE_SUFFIX}) - - install(SCRIPT ${INSTALL_SYMLINK} -- CODE "install_symlink(${full_name} ${full_dest} ${LLVM_TOOLS_INSTALL_DIR})" -+ CODE "install_symlink(${full_name} ${full_dest} ${CMAKE_INSTALL_BINDIR})" - COMPONENT ${component}) - - if (NOT CMAKE_CONFIGURATION_TYPES AND NOT ARG_ALWAYS_GENERATE) -diff -up llvm-3.9.1.src/cmake/modules/AddOCaml.cmake.instdirs llvm-3.9.1.src/cmake/modules/AddOCaml.cmake ---- llvm-3.9.1.src/cmake/modules/AddOCaml.cmake.instdirs 2016-06-21 17:10:37.000000000 -0600 -+++ llvm-3.9.1.src/cmake/modules/AddOCaml.cmake 2017-02-13 13:36:44.001154744 -0700 -@@ -189,12 +189,12 @@ function(add_ocaml_library name) - endforeach() - - install(FILES ${install_files} -- DESTINATION lib/ocaml) -+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/ocaml) - install(FILES ${install_shlibs} - PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE - GROUP_READ GROUP_EXECUTE - WORLD_READ WORLD_EXECUTE -- DESTINATION lib/ocaml) -+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/ocaml) - - foreach( install_file ${install_files} ${install_shlibs} ) - get_filename_component(filename "${install_file}" NAME) -diff -up llvm-3.9.1.src/cmake/modules/AddSphinxTarget.cmake.instdirs llvm-3.9.1.src/cmake/modules/AddSphinxTarget.cmake ---- llvm-3.9.1.src/cmake/modules/AddSphinxTarget.cmake.instdirs 2014-08-14 05:57:16.000000000 -0600 -+++ llvm-3.9.1.src/cmake/modules/AddSphinxTarget.cmake 2017-02-13 13:36:44.001154744 -0700 -@@ -50,11 +50,11 @@ function (add_sphinx_target builder proj - if (builder STREQUAL man) - # FIXME: We might not ship all the tools that these man pages describe - install(DIRECTORY "${SPHINX_BUILD_DIR}/" # Slash indicates contents of -- DESTINATION share/man/man1) -+ DESTINATION ${CMAKE_INSTALL_MANDIR}/man1) - - elseif (builder STREQUAL html) - install(DIRECTORY "${SPHINX_BUILD_DIR}" -- DESTINATION "share/doc/${project}") -+ DESTINATION ${CMAKE_INSTALL_DOCDIR}) - else() - message(WARNING Installation of ${builder} not supported) - endif() -diff -up llvm-3.9.1.src/cmake/modules/CMakeLists.txt.instdirs llvm-3.9.1.src/cmake/modules/CMakeLists.txt ---- llvm-3.9.1.src/cmake/modules/CMakeLists.txt.instdirs 2017-02-13 13:36:43.995154779 -0700 -+++ llvm-3.9.1.src/cmake/modules/CMakeLists.txt 2017-02-13 13:40:40.508732673 -0700 -@@ -1,4 +1,4 @@ --set(LLVM_INSTALL_PACKAGE_DIR lib${LLVM_LIBDIR_SUFFIX}/cmake/llvm) -+set(LLVM_INSTALL_PACKAGE_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/llvm CACHE STRING "Path for CMake subdirectory (defaults to 'cmake/llvm')") - set(llvm_cmake_builddir "${LLVM_BINARY_DIR}/${LLVM_INSTALL_PACKAGE_DIR}") - - get_property(LLVM_EXPORTS GLOBAL PROPERTY LLVM_EXPORTS) -@@ -49,20 +49,12 @@ file(COPY . - - # Generate LLVMConfig.cmake for the install tree. - set(LLVM_CONFIG_CODE " --# Compute the installation prefix from this LLVMConfig.cmake file location. --get_filename_component(LLVM_INSTALL_PREFIX \"\${CMAKE_CURRENT_LIST_FILE}\" PATH)") --# Construct the proper number of get_filename_component(... PATH) --# calls to compute the installation prefix. --string(REGEX REPLACE "/" ";" _count "${LLVM_INSTALL_PACKAGE_DIR}") --foreach(p ${_count}) -- set(LLVM_CONFIG_CODE "${LLVM_CONFIG_CODE} --get_filename_component(LLVM_INSTALL_PREFIX \"\${LLVM_INSTALL_PREFIX}\" PATH)") --endforeach(p) --set(LLVM_CONFIG_INCLUDE_DIRS "\${LLVM_INSTALL_PREFIX}/include") --set(LLVM_CONFIG_LIBRARY_DIRS "\${LLVM_INSTALL_PREFIX}/lib\${LLVM_LIBDIR_SUFFIX}") -+set(LLVM_INSTALL_PREFIX \"${CMAKE_INSTALL_PREFIX}\")") -+set(LLVM_CONFIG_INCLUDE_DIRS "\${LLVM_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}") -+set(LLVM_CONFIG_LIBRARY_DIRS "\${LLVM_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}") - set(LLVM_CONFIG_CMAKE_DIR "\${LLVM_INSTALL_PREFIX}/${LLVM_INSTALL_PACKAGE_DIR}") - set(LLVM_CONFIG_BINARY_DIR "\${LLVM_INSTALL_PREFIX}") --set(LLVM_CONFIG_TOOLS_BINARY_DIR "\${LLVM_INSTALL_PREFIX}/bin") -+set(LLVM_CONFIG_TOOLS_BINARY_DIR "\${LLVM_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}") - set(LLVM_CONFIG_EXPORTS_FILE "\${LLVM_CMAKE_DIR}/LLVMExports.cmake") - configure_file( - LLVMConfig.cmake.in -diff -up llvm-3.9.1.src/cmake/modules/LLVMConfig.cmake.in.instdirs llvm-3.9.1.src/cmake/modules/LLVMConfig.cmake.in ---- llvm-3.9.1.src/cmake/modules/LLVMConfig.cmake.in.instdirs 2016-07-01 08:22:52.000000000 -0600 -+++ llvm-3.9.1.src/cmake/modules/LLVMConfig.cmake.in 2017-02-13 13:36:44.002154738 -0700 -@@ -59,7 +59,7 @@ set(LLVM_DEFINITIONS "@LLVM_DEFINITIONS@ - set(LLVM_CMAKE_DIR "@LLVM_CONFIG_CMAKE_DIR@") - set(LLVM_BINARY_DIR "@LLVM_CONFIG_BINARY_DIR@") - set(LLVM_TOOLS_BINARY_DIR "@LLVM_CONFIG_TOOLS_BINARY_DIR@") --set(LLVM_TOOLS_INSTALL_DIR "@LLVM_TOOLS_INSTALL_DIR@") -+set(LLVM_TOOLS_INSTALL_DIR "@CMAKE_INSTALL_BINDIR@") - - if(NOT TARGET LLVMSupport) - set(LLVM_EXPORTED_TARGETS "@LLVM_EXPORTS@") -diff -up llvm-3.9.1.src/cmake/modules/TableGen.cmake.instdirs llvm-3.9.1.src/cmake/modules/TableGen.cmake ---- llvm-3.9.1.src/cmake/modules/TableGen.cmake.instdirs 2016-06-08 15:19:26.000000000 -0600 -+++ llvm-3.9.1.src/cmake/modules/TableGen.cmake 2017-02-13 13:47:59.832154520 -0700 -@@ -6,7 +6,6 @@ function(tablegen project ofn) - # Validate calling context. - foreach(v - ${project}_TABLEGEN_EXE -- LLVM_MAIN_SRC_DIR - LLVM_MAIN_INCLUDE_DIR - ) - if(NOT ${v}) -@@ -23,10 +22,14 @@ function(tablegen project ofn) - set(LLVM_TARGET_DEFINITIONS_ABSOLUTE - ${CMAKE_CURRENT_SOURCE_DIR}/${LLVM_TARGET_DEFINITIONS}) - endif() -+ if (LLVM_MAIN_SRC_DIR) -+ set(TABLEGEN_INCLUDES -I ${LLVM_MAIN_SRC_DIR}/lib/Target) -+ endif() -+ set(TABLEGEN_INCLUDES ${TABLEGEN_INCLUDES} -I ${LLVM_MAIN_INCLUDE_DIR}) - add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${ofn}.tmp - # Generate tablegen output in a temporary file. - COMMAND ${${project}_TABLEGEN_EXE} ${ARGN} -I ${CMAKE_CURRENT_SOURCE_DIR} -- -I ${LLVM_MAIN_SRC_DIR}/lib/Target -I ${LLVM_MAIN_INCLUDE_DIR} -+ ${TABLEGEN_INCLUDES} - ${LLVM_TARGET_DEFINITIONS_ABSOLUTE} - -o ${CMAKE_CURRENT_BINARY_DIR}/${ofn}.tmp - # The file in LLVM_TARGET_DEFINITIONS may be not in the current -@@ -141,7 +144,7 @@ macro(add_tablegen target project) - if (${project} STREQUAL LLVM AND NOT LLVM_INSTALL_TOOLCHAIN_ONLY) - install(TARGETS ${target} - EXPORT LLVMExports -- RUNTIME DESTINATION ${LLVM_TOOLS_INSTALL_DIR}) -+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) - endif() - set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS ${target}) - endmacro() -diff -up llvm-3.9.1.src/docs/CMakeLists.txt.instdirs llvm-3.9.1.src/docs/CMakeLists.txt ---- llvm-3.9.1.src/docs/CMakeLists.txt.instdirs 2015-08-17 17:24:17.000000000 -0600 -+++ llvm-3.9.1.src/docs/CMakeLists.txt 2017-02-13 13:36:44.004154727 -0700 -@@ -94,7 +94,7 @@ if (LLVM_ENABLE_DOXYGEN) - - if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY) - install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/doxygen/html -- DESTINATION docs/html) -+ DESTINATION ${CMAKE_INSTALL_DOCDIR}/html) - endif() - endif() - endif() -@@ -155,6 +155,6 @@ if( NOT uses_ocaml LESS 0 ) - - if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY) - install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/ocamldoc/html -- DESTINATION docs/ocaml/html) -+ DESTINATION ${CMAKE_INSTALL_DOCDIR}/ocaml/html) - endif() - endif() -diff -up llvm-3.9.1.src/include/llvm/CMakeLists.txt.instdirs llvm-3.9.1.src/include/llvm/CMakeLists.txt ---- llvm-3.9.1.src/include/llvm/CMakeLists.txt.instdirs 2014-08-13 18:51:47.000000000 -0600 -+++ llvm-3.9.1.src/include/llvm/CMakeLists.txt 2017-02-13 13:36:44.004154727 -0700 -@@ -3,5 +3,5 @@ add_subdirectory(IR) - # If we're doing an out-of-tree build, copy a module map for generated - # header files into the build area. - if (NOT "${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}") -- configure_file(module.modulemap.build module.modulemap COPYONLY) -+ configure_file(module.modulemap.build ${LLVM_INCLUDE_DIR}/module.modulemap COPYONLY) - endif (NOT "${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}") -diff -up llvm-3.9.1.src/tools/llvm-config/BuildVariables.inc.in.instdirs llvm-3.9.1.src/tools/llvm-config/BuildVariables.inc.in ---- llvm-3.9.1.src/tools/llvm-config/BuildVariables.inc.in.instdirs 2016-03-07 17:02:50.000000000 -0700 -+++ llvm-3.9.1.src/tools/llvm-config/BuildVariables.inc.in 2017-02-13 13:36:44.005154721 -0700 -@@ -23,7 +23,9 @@ - #define LLVM_LDFLAGS "@LLVM_LDFLAGS@" - #define LLVM_CXXFLAGS "@LLVM_CXXFLAGS@" - #define LLVM_BUILDMODE "@LLVM_BUILDMODE@" --#define LLVM_LIBDIR_SUFFIX "@LLVM_LIBDIR_SUFFIX@" -+#define LLVM_BINARY_DIR "@CMAKE_INSTALL_BINDIR@" -+#define LLVM_LIBRARY_DIR "@CMAKE_INSTALL_LIBDIR@" -+#define LLVM_INCLUDE_DIR "@CMAKE_INSTALL_INCLUDEDIR@" - #define LLVM_TARGETS_BUILT "@LLVM_TARGETS_BUILT@" - #define LLVM_SYSTEM_LIBS "@LLVM_SYSTEM_LIBS@" - #define LLVM_BUILD_SYSTEM "@LLVM_BUILD_SYSTEM@" -diff -up llvm-3.9.1.src/tools/llvm-config/llvm-config.cpp.instdirs llvm-3.9.1.src/tools/llvm-config/llvm-config.cpp ---- llvm-3.9.1.src/tools/llvm-config/llvm-config.cpp.instdirs 2016-03-14 15:39:58.000000000 -0600 -+++ llvm-3.9.1.src/tools/llvm-config/llvm-config.cpp 2017-02-13 13:36:44.006154715 -0700 -@@ -290,7 +290,7 @@ int main(int argc, char **argv) { - DevelopmentTreeLayout = CMakeStyle; - ActiveObjRoot = LLVM_OBJ_ROOT; - } else if (sys::fs::equivalent(CurrentExecPrefix, -- Twine(LLVM_OBJ_ROOT) + "/bin")) { -+ Twine(LLVM_OBJ_ROOT) + "/" + LLVM_BINARY_DIR)) { - IsInDevelopmentTree = true; - DevelopmentTreeLayout = CMakeBuildModeStyle; - ActiveObjRoot = LLVM_OBJ_ROOT; -@@ -304,32 +304,32 @@ int main(int argc, char **argv) { - std::string ActivePrefix, ActiveBinDir, ActiveIncludeDir, ActiveLibDir; - std::string ActiveIncludeOption; - if (IsInDevelopmentTree) { -- ActiveIncludeDir = std::string(LLVM_SRC_ROOT) + "/include"; -+ ActiveIncludeDir = std::string(LLVM_SRC_ROOT) + "/" + LLVM_INCLUDE_DIR; - ActivePrefix = CurrentExecPrefix; - - // CMake organizes the products differently than a normal prefix style - // layout. - switch (DevelopmentTreeLayout) { - case CMakeStyle: -- ActiveBinDir = ActiveObjRoot + "/bin"; -- ActiveLibDir = ActiveObjRoot + "/lib" + LLVM_LIBDIR_SUFFIX; -+ ActiveBinDir = ActiveObjRoot + "/" + LLVM_BINARY_DIR; -+ ActiveLibDir = ActiveObjRoot + LLVM_LIBRARY_DIR; - break; - case CMakeBuildModeStyle: - ActivePrefix = ActiveObjRoot; -- ActiveBinDir = ActiveObjRoot + "/bin/" + build_mode; -+ ActiveBinDir = ActiveObjRoot + "/" + LLVM_BINARY_DIR + "/" + build_mode; - ActiveLibDir = -- ActiveObjRoot + "/lib" + LLVM_LIBDIR_SUFFIX + "/" + build_mode; -+ ActiveObjRoot + "/" + LLVM_LIBRARY_DIR + "/" + build_mode; - break; - } - - // We need to include files from both the source and object trees. - ActiveIncludeOption = -- ("-I" + ActiveIncludeDir + " " + "-I" + ActiveObjRoot + "/include"); -+ ("-I" + ActiveIncludeDir + " " + "-I" + ActiveObjRoot + "/" + LLVM_INCLUDE_DIR); - } else { - ActivePrefix = CurrentExecPrefix; -- ActiveIncludeDir = ActivePrefix + "/include"; -- ActiveBinDir = ActivePrefix + "/bin"; -- ActiveLibDir = ActivePrefix + "/lib" + LLVM_LIBDIR_SUFFIX; -+ ActiveIncludeDir = ActivePrefix + "/" + LLVM_INCLUDE_DIR; -+ ActiveBinDir = ActivePrefix + "/" + LLVM_BINARY_DIR; -+ ActiveLibDir = ActivePrefix + "/" + LLVM_LIBRARY_DIR; - ActiveIncludeOption = "-I" + ActiveIncludeDir; - } - -diff -up llvm-3.9.1.src/tools/llvm-shlib/CMakeLists.txt.instdirs llvm-3.9.1.src/tools/llvm-shlib/CMakeLists.txt ---- llvm-3.9.1.src/tools/llvm-shlib/CMakeLists.txt.instdirs 2016-05-25 22:35:35.000000000 -0600 -+++ llvm-3.9.1.src/tools/llvm-shlib/CMakeLists.txt 2017-02-13 13:36:44.065154372 -0700 -@@ -68,7 +66,7 @@ if(LLVM_BUILD_LLVM_C_DYLIB) - - set(LLVM_EXPORTED_SYMBOL_FILE ${CMAKE_BINARY_DIR}/libllvm-c.exports) - -- set(LIB_DIR ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib${LLVM_LIBDIR_SUFFIX}) -+ set(LIB_DIR ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${CMAKE_INSTALL_LIBDIR}) - set(LIB_NAME ${LIB_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}LLVM) - set(LIB_PATH ${LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}) - set(LIB_EXPORTS_PATH ${LIB_NAME}.exports) -diff -up llvm-3.9.1.src/tools/lto/CMakeLists.txt.instdirs llvm-3.9.1.src/tools/lto/CMakeLists.txt ---- llvm-3.9.1.src/tools/lto/CMakeLists.txt.instdirs 2016-07-11 21:01:22.000000000 -0600 -+++ llvm-3.9.1.src/tools/lto/CMakeLists.txt 2017-02-13 13:36:44.007154709 -0700 -@@ -19,7 +19,7 @@ set(LLVM_EXPORTED_SYMBOL_FILE ${CMAKE_CU - add_llvm_library(LTO SHARED ${SOURCES}) - - install(FILES ${LLVM_MAIN_INCLUDE_DIR}/llvm-c/lto.h -- DESTINATION include/llvm-c -+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/llvm-c - COMPONENT LTO) - - if (APPLE) diff --git a/SOURCES/ghc-Debian-no-missing-haddock-file-warning.patch b/SOURCES/no-missing-haddock-file-warning.patch similarity index 100% rename from SOURCES/ghc-Debian-no-missing-haddock-file-warning.patch rename to SOURCES/no-missing-haddock-file-warning.patch diff --git a/SOURCES/runghc.man b/SOURCES/runghc.man new file mode 100644 index 0000000..61a9076 --- /dev/null +++ b/SOURCES/runghc.man @@ -0,0 +1,45 @@ +.TH RUNGHC 1 "28 NOVEMBER 2007" +.SH NAME +runghc \- program to run Haskell programs without first having to compile them. +.SH SYNOPSIS +.B runghc +.RI +[runghc|flags] [GHC|flags] module [program|flags]... +.br +.SH DESCRIPTION +.B runghc +is considered a non-interactive interpreter and part of The Glasgow Haskell Compiler. +.B runghc +is a compiler that automatically runs its results at the end. +.PP +.SH OPTIONS +.TP +the flags are: +.TP +.B \-f +it tells runghc which GHC to use to run the program. If it is not given then runghc will search for GHC in the directories in the system search path. runghc -f /path/to/ghc +.TP +.B \-- +runghc will try to work out where the boundaries between [runghc flags] and [GHC flags], and [GHC flags] and module are, but you can use a -- flag if it doesn't get it right. For example, runghc -- -fglasgow-exts Foo +means runghc won't try to use glasgow-exts as the path to GHC, but instead will pass the flag to GHC. + +.SH EXAMPLES +.TP +.B runghc foo +.PP +.B runghc -f /path/to/ghc foo +.TP +.B runghc -- -fglasgow-exts Foo + +.SH SEE ALSO +.BR ghc (1), +.BR ghci (1). +.br + +.SH COPYRIGHT +Copyright 2002, The University Court of the University of Glasgow. All rights reserved. + +.SH AUTHOR +This manual page was written by Efrain Valles Pulgar . This is free documentation; see the GNU +General Public Licence version 2 or later for copying conditions. There is NO WARRANTY. + diff --git a/SOURCES/ghc-Debian-x32-use-native-x86_64-insn.patch b/SOURCES/x32-use-native-x86_64-insn.patch similarity index 100% rename from SOURCES/ghc-Debian-x32-use-native-x86_64-insn.patch rename to SOURCES/x32-use-native-x86_64-insn.patch diff --git a/SPECS/ghc.spec b/SPECS/ghc.spec index b5d00f0..dd93d7d 100644 --- a/SPECS/ghc.spec +++ b/SPECS/ghc.spec @@ -1,34 +1,49 @@ -# perf production build (disable for quick build) -%bcond_without perf_build - -# to handle RCs -%global ghc_release %{version} +# disable prof, docs, perf build, debuginfo +# NB This must be disabled (bcond_with) for all koji production builds +%bcond_with quickbuild # make sure ghc libraries' ABI hashes unchanged %bcond_without abicheck -# run testsuite -%bcond_with testsuite -# build profiling libraries -%bcond_without prof -# build docs (haddock and manuals) -# combined since disabling haddock seems to cause no manuals built -# -%bcond_without docs +# to handle RCs +%global ghc_release %{version} -# 8.2 needs llvm-3.9 -%global llvm_major 3.9 -%global llvm_version %{llvm_major}.1 +%global base_ver 4.12.0.0 + +# build profiling libraries +# build haddock +# perf production build (disable for quick build) +%if %{with quickbuild} +%undefine with_ghc_prof +%undefine with_haddock +%bcond_with perf_build +%undefine _enable_debug_packages +%else +%bcond_without haddock +%bcond_without perf_build +%endif + +# locked together since disabling haddock causes no manuals built +# and disabling haddock still created index.html +# https://ghc.haskell.org/trac/ghc/ticket/15190 +%{?with_haddock:%bcond_without manual} + +# no longer build testsuite (takes time and not really being used) +%bcond_with testsuite + +# 8.6 needs llvm-6.0 +%global llvm_major 6.0 %global ghc_llvm_archs armv7hl aarch64 +%global ghc_unregisterized_arches s390 s390x %{mips} + Name: ghc -# ghc must be rebuilt after a version bump to avoid ABI change problems -Version: 8.2.2 +Version: 8.6.5 # Since library subpackages are versioned: # - 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: 68.3%{?dist} +Release: 102%{?dist} Summary: Glasgow Haskell Compiler License: BSD and HaskellReport @@ -37,33 +52,53 @@ Source0: https://downloads.haskell.org/~ghc/%{ghc_release}/ghc-%{version}-src.ta %if %{with testsuite} Source1: https://downloads.haskell.org/~ghc/%{ghc_release}/ghc-%{version}-testsuite.tar.xz %endif -Source3: ghc-doc-index.cron -Source4: ghc-doc-index - -Source10: http://llvm.org/releases/%{llvm_version}/llvm-%{llvm_version}.src.tar.xz - +Source5: ghc-pkg.man +Source6: haddock.man +Source7: runghc.man # absolute haddock path (was for html/libraries -> libraries) Patch1: ghc-gen_contents_index-haddock-path.patch Patch2: ghc-Cabal-install-PATH-warning.patch -# https://github.com/haskell/cabal/issues/4728 -# https://ghc.haskell.org/trac/ghc/ticket/14381 -# https://phabricator.haskell.org/D4159 -Patch4: D4159.patch -# https://github.com/ghc/ghc/pull/143 -Patch5: ghc-configure-fix-sphinx-version-check.patch +# https://phabricator.haskell.org/rGHC4eebc8016f68719e1ccdf460754a97d1f4d6ef05 +Patch6: ghc-8.6.3-sphinx-1.8.patch +# https://github.com/haskell/process/pull/148 +Patch10: https://github.com/haskell/process/commit/73ea41b3622e2e578d928f7513941aac9d873279.patch +Patch11: https://github.com/haskell/process/commit/3e0812fe9d3f4712638a1c4c49bf2b2a7dc4311b.patch + +# Arch dependent patches + +# arm Patch12: ghc-armv7-VFPv3D16--NEON.patch -# Debian patches: -# doesn't apply to 8.2 -#Patch24: ghc-Debian-buildpath-abi-stability.patch -Patch26: ghc-Debian-no-missing-haddock-file-warning.patch -Patch27: ghc-Debian-reproducible-tmp-names.patch -Patch28: ghc-Debian-x32-use-native-x86_64-insn.patch +# for unregisterized (s390x) +# https://ghc.haskell.org/trac/ghc/ticket/15689 +Patch15: ghc-warnings.mk-CC-Wall.patch +# https://gitlab.haskell.org/ghc/ghc/issues/15853 +# https://phabricator.haskell.org/D5306 (in 8.8) +# https://gitlab.haskell.org/ghc/ghc/commit/35a897782b6b0a252da7fdcf4921198ad4e1d96c.patch +# https://salsa.debian.org/haskell-team/DHG_packages/blob/master/p/ghc/debian/patches/PprC-Add-support-for-adjacent-floats +Patch17: PprC-Add-support-for-adjacent-floats.patch -# llvm3.9 patches + 100 -Patch106: llvm-install_dirs.patch -Patch174: llvm-D25865-cmakeshlib.patch +# bigendian (s390x and ppc64) +# fix haddock-library +# https://gitlab.haskell.org/ghc/ghc/issues/15411 +# https://gitlab.haskell.org/ghc/ghc/issues/16505 +# https://bugzilla.redhat.com/show_bug.cgi?id=1651448 +# https://ghc.haskell.org/trac/ghc/ticket/15914 +Patch18: https://gitlab.haskell.org/ghc/ghc/uploads/5deb133cf910e9e0ca9ad9fe53f7383a/Disable-unboxed-arrays.patch + +# Debian patches: +Patch24: buildpath-abi-stability.patch +Patch26: no-missing-haddock-file-warning.patch +Patch28: x32-use-native-x86_64-insn.patch +# https://salsa.debian.org/haskell-team/DHG_packages/blob/master/p/ghc/debian/patches/add_-latomic_to_ghc-prim +Patch30: add_-latomic_to_ghc-prim.patch +# https://salsa.debian.org/haskell-team/DHG_packages/blob/master/p/ghc/debian/patches/e175aaf6918bb2b497b83618dc4c270a0d231a1c.patch +Patch32: https://salsa.debian.org/haskell-team/DHG_packages/raw/master/p/ghc/debian/patches/e175aaf6918bb2b497b83618dc4c270a0d231a1c.patch +# https://gitlab.haskell.org/ghc/ghc/issues/15913 +# remove after Fedora default moves to 8.6 +# https://salsa.debian.org/haskell-team/DHG_packages/blob/master/p/ghc/debian/patches/fix-build-using-unregisterized-v8.4 +Patch34: fix-build-using-unregisterized-v8.4.patch # fedora ghc has been bootstrapped on # %%{ix86} x86_64 ppc ppc64 armv7hl s390 s390x ppc64le aarch64 @@ -75,52 +110,55 @@ BuildRequires: ghc-compiler %if %{with abicheck} BuildRequires: ghc %endif -BuildRequires: ghc-rpm-macros-extra >= 1.8 +BuildRequires: ghc-rpm-macros-extra >= 2.0.6 BuildRequires: ghc-binary-devel BuildRequires: ghc-bytestring-devel BuildRequires: ghc-containers-devel BuildRequires: ghc-directory-devel BuildRequires: ghc-pretty-devel BuildRequires: ghc-process-devel +BuildRequires: ghc-transformers-devel BuildRequires: gmp-devel BuildRequires: libffi-devel +BuildRequires: make # for terminfo BuildRequires: ncurses-devel -# for man and docs BuildRequires: perl-interpreter -BuildRequires: %{_bindir}/python3 -%if %{with docs} -# python2-sphinx needs python2-babel -BuildRequires: python3-sphinx +%if %{with testsuite} +BuildRequires: python3 +%endif +%if %{with manual} +%if 0%{?fedora} >= 31 +BuildRequires: python3-sphinx +%else +BuildRequires: python2-sphinx +%endif +%endif +%ifarch %{ghc_llvm_archs} +%if 0%{?fedora} >= 29 +BuildRequires: llvm%{llvm_major} +%else +BuildRequires: llvm >= %{llvm_major} +%endif %endif -# patch5 -BuildRequires: autoconf %ifarch armv7hl # patch12 BuildRequires: autoconf, automake %endif - -# llvm -%ifarch %{ghc_llvm_archs} -BuildRequires: cmake3 -BuildRequires: zlib-devel -BuildRequires: libedit-devel -BuildRequires: libffi-devel -BuildRequires: ncurses-devel -#BuildRequires: python-sphinx -BuildRequires: valgrind-devel -BuildRequires: libstdc++-static -%endif - Requires: ghc-compiler = %{version}-%{release} -%if %{with docs} -Requires: ghc-doc-cron = %{version}-%{release} -%endif Requires: ghc-ghc-devel = %{version}-%{release} -Requires: ghc-libraries = %{version}-%{release} -%if %{with docs} -Requires: ghc-manual = %{version}-%{release} +Requires: ghc-devel = %{version}-%{release} +%if %{with haddock} +Suggests: ghc-doc = %{version}-%{release} +Suggests: ghc-doc-index = %{version}-%{release} %endif +%if %{with manual} +Suggests: ghc-manual = %{version}-%{release} +%endif +%if %{with ghc_prof} +Suggests: ghc-prof = %{version}-%{release} +%endif +Recommends: zlib-devel %description GHC is a state-of-the-art, open source, compiler and interactive environment @@ -149,43 +187,49 @@ for the functional language Haskell. Highlights: Summary: GHC compiler and utilities License: BSD Requires: gcc%{?_isa} -Requires: ghc-base-devel%{?_isa} -# for alternatives -Requires(post): chkconfig -Requires(postun): chkconfig -# added in f14 -Obsoletes: ghc-doc < 6.12.3-4 -%if %{without docs} -Obsoletes: ghc-doc-cron < %{version}-%{release} -# added in f28 +Requires: ghc-base-devel%{?_isa} = %{base_ver}-%{release} +%if %{without haddock} Obsoletes: ghc-doc-index < %{version}-%{release} %endif +%ifarch %{ghc_llvm_archs} +%if 0%{?fedora} >= 29 +Requires: llvm%{llvm_major} +%else +Requires: llvm >= %{llvm_major} +%endif +%endif %description compiler The package contains the GHC compiler, tools and utilities. -The ghc libraries are provided by ghc-libraries. +The ghc libraries are provided by ghc-devel. To install all of ghc (including the ghc library), install the main ghc package. -%if %{with docs} -%package doc-cron -Summary: GHC library documentation indexing cronjob +%if %{with haddock} +%package doc +Summary: Haskell library documentation meta package License: BSD + +%description doc +Installing this package causes ghc-*-doc packages corresponding to ghc-*-devel +packages to be automatically installed too. + + +%package doc-index +Summary: GHC library documentation indexing +License: BSD +Obsoletes: ghc-doc-cron < %{version}-%{release} Requires: ghc-compiler = %{version}-%{release} -Requires: crontabs -# added in f28 -Obsoletes: ghc-doc-index < %{version}-%{release} BuildArch: noarch -%description doc-cron -The package provides a cronjob for re-indexing installed library development -documention. +%description doc-index +The package enables re-indexing of installed library documention. %endif -%if %{with docs} +%if %{with manual} %package manual Summary: GHC manual License: BSD @@ -199,160 +243,119 @@ This package provides the User Guide and Haddock manual. # ghclibdir also needs ghc_version_override for bootstrapping %global ghc_version_override %{version} -# EL7 rpm supports fileattrs ghc.attr -%if 0%{?rhel} && 0%{?rhel} < 7 -# needs ghc_version_override for bootstrapping -%global _use_internal_dependency_generator 0 -%global __find_provides /usr/lib/rpm/rpmdeps --provides -%global __find_requires %{_rpmconfigdir}/ghc-deps.sh %{buildroot}%{ghclibdir} -%endif - -%global ghc_pkg_c_deps ghc-compiler = %{ghc_version_override}-%{release} - %global BSDHaskellReport %{quote:BSD and HaskellReport} # use "./libraries-versions.sh" to check versions %if %{defined ghclibdir} -%ghc_lib_subpackage -d -l BSD Cabal-2.0.1.0 -%ghc_lib_subpackage -d -l %BSDHaskellReport array-0.5.2.0 -%ghc_lib_subpackage -d -l %BSDHaskellReport -c gmp-devel%{?_isa},libffi-devel%{?_isa} base-4.10.1.0 -%ghc_lib_subpackage -d -l BSD binary-0.8.5.1 +%ghc_lib_subpackage -d -l BSD Cabal-2.4.0.1 +%ghc_lib_subpackage -d -l %BSDHaskellReport array-0.5.3.0 +%ghc_lib_subpackage -d -l %BSDHaskellReport -c gmp-devel%{?_isa},libffi-devel%{?_isa} base-%{base_ver} +%ghc_lib_subpackage -d -l BSD binary-0.8.6.0 %ghc_lib_subpackage -d -l BSD bytestring-0.10.8.2 -%ghc_lib_subpackage -d -l %BSDHaskellReport containers-0.5.10.2 -%ghc_lib_subpackage -d -l %BSDHaskellReport deepseq-1.4.3.0 -%ghc_lib_subpackage -d -l %BSDHaskellReport directory-1.3.0.2 -%ghc_lib_subpackage -d -l BSD filepath-1.4.1.2 -%define ghc_pkg_obsoletes ghc-bin-package-db-devel < 0.0.0.0-12 -# in ghc not ghc-libraries: -%ghc_lib_subpackage -d -x ghc-%{ghc_version_override} -%undefine ghc_pkg_obsoletes -%ghc_lib_subpackage -d -x -l BSD ghc-boot-%{ghc_version_override} +%ghc_lib_subpackage -d -l %BSDHaskellReport containers-0.6.0.1 +%ghc_lib_subpackage -d -l %BSDHaskellReport deepseq-1.4.4.0 +%ghc_lib_subpackage -d -l %BSDHaskellReport directory-1.3.3.0 +%ghc_lib_subpackage -d -l BSD filepath-1.4.2.1 %ghc_lib_subpackage -d -l BSD ghc-boot-th-%{ghc_version_override} %ghc_lib_subpackage -d -l BSD ghc-compact-0.1.0.0 -%ghc_lib_subpackage -d -l BSD -x ghci-%{ghc_version_override} -%ghc_lib_subpackage -d -l BSD haskeline-0.7.4.0 -%ghc_lib_subpackage -d -l BSD hoopl-3.10.2.2 +%ghc_lib_subpackage -d -l BSD ghc-heap-%{ghc_version_override} +%ghc_lib_subpackage -d -l BSD haskeline-0.7.4.3 %ghc_lib_subpackage -d -l BSD hpc-0.6.0.3 -%ghc_lib_subpackage -d -l BSD pretty-1.1.3.3 -%ghc_lib_subpackage -d -l %BSDHaskellReport process-1.6.1.0 -%ghc_lib_subpackage -d -l BSD template-haskell-2.12.0.0 -%ghc_lib_subpackage -d -l BSD -c ncurses-devel%{?_isa} terminfo-0.4.1.0 +%ghc_lib_subpackage -d -l %BSDHaskellReport libiserv-8.6.3 +%ghc_lib_subpackage -d -l BSD mtl-2.2.2 +%ghc_lib_subpackage -d -l BSD parsec-3.1.13.0 +%ghc_lib_subpackage -d -l BSD pretty-1.1.3.6 +%ghc_lib_subpackage -d -l %BSDHaskellReport process-1.6.5.0 +%ghc_lib_subpackage -d -l BSD stm-2.5.0.0 +%ghc_lib_subpackage -d -l BSD template-haskell-2.14.0.0 +%ghc_lib_subpackage -d -l BSD -c ncurses-devel%{?_isa} terminfo-0.4.1.2 +%ghc_lib_subpackage -d -l BSD text-1.2.3.1 %ghc_lib_subpackage -d -l BSD time-1.8.0.2 -%ghc_lib_subpackage -d -l BSD transformers-0.5.2.0 +%ghc_lib_subpackage -d -l BSD transformers-0.5.6.2 %ghc_lib_subpackage -d -l BSD unix-2.7.2.2 -%if %{with docs} -%ghc_lib_subpackage -d -l BSD xhtml-3000.2.2 +%if %{with haddock} +%ghc_lib_subpackage -d -l BSD xhtml-3000.2.2.1 %endif +# in ghc not ghc-devel: +%ghc_lib_subpackage -d -x ghc-%{ghc_version_override} +%ghc_lib_subpackage -d -x -l BSD ghc-boot-%{ghc_version_override} +%ghc_lib_subpackage -d -x -l BSD ghci-%{ghc_version_override} %endif %global version %{ghc_version_override} -%package libraries +%package devel Summary: GHC development libraries meta package License: BSD and HaskellReport Requires: ghc-compiler = %{version}-%{release} -Obsoletes: ghc-devel < %{version}-%{release} -Provides: ghc-devel = %{version}-%{release} -Obsoletes: ghc-prof < %{version}-%{release} -Provides: ghc-prof = %{version}-%{release} -# since f15 -Obsoletes: ghc-libs < 7.0.1-3 +Obsoletes: ghc-libraries < %{version}-%{release} +Provides: ghc-libraries = %{version}-%{release} %{?ghc_packages_list:Requires: %(echo %{ghc_packages_list} | sed -e "s/\([^ ]*\)-\([^ ]*\)/ghc-\1-devel = \2-%{release},/g")} -%description libraries +%description devel This is a meta-package for all the development library packages in GHC except the ghc library, which is installed by the toplevel ghc metapackage. -%prep -%ifarch %{ghc_llvm_archs} -%setup -q -n %{name}-%{version} %{?with_testsuite:-b1} -a10 -( -cd llvm-%{llvm_version}.src -%patch106 -p1 -b .instdirs -%patch174 -p1 -b .julia4 -) -%else -%setup -q -n %{name}-%{version} %{?with_testsuite:-b1} +%if %{with ghc_prof} +%package prof +Summary: GHC profiling libraries meta package +License: BSD +Requires: ghc-compiler = %{version}-%{release} + +%description prof +Installing this package causes ghc-*-prof packages corresponding to ghc-*-devel +packages to be automatically installed too. %endif + +%prep +%setup -q -n %{name}-%{version} %{?with_testsuite:-b1} + %patch1 -p1 -b .orig %patch2 -p1 -b .orig -%patch4 -p1 -b .orig -%patch5 -p1 -b .orig +%patch6 -p1 -b .orig -%if 0%{?fedora} || 0%{?rhel} > 6 rm -r libffi-tarballs -%endif + +( +cd libraries/process +%patch10 -p1 -b .orig10 +%patch11 -p1 -b .orig11 +) %ifarch armv7hl %patch12 -p1 -b .orig %endif -#%%patch24 -p1 -b .orig +%ifarch %{ghc_unregisterized_arches} +%patch15 -p1 -b .orig +%patch17 -p1 -b .orig +%patch34 -p1 -b .orig +%endif + +# bigendian +%ifarch ppc64 s390x +%patch18 -p1 -b .orig +%endif + +# debian +%patch24 -p1 -b .orig %patch26 -p1 -b .orig -%patch27 -p1 -b .orig %patch28 -p1 -b .orig +%patch30 -p1 -b .orig +%patch32 -p1 -b .orig %global gen_contents_index gen_contents_index.orig -%if %{with docs} +%if %{with haddock} if [ ! -f "libraries/%{gen_contents_index}" ]; then echo "Missing libraries/%{gen_contents_index}, needed at end of %%install!" exit 1 fi %endif - -%build -%ifarch %{ghc_llvm_archs} -( -cd llvm-%{llvm_version}.src -mkdir -p _build -cd _build -%cmake3 .. \ - -DBUILD_SHARED_LIBS:BOOL=OFF \ - -DCMAKE_BUILD_TYPE=RelWithDebInfo \ - -DCMAKE_SHARED_LINKER_FLAGS="-Wl,-Bsymbolic -static-libstdc++" \ - -DCMAKE_INSTALL_PREFIX=%{ghclibdir}/llvm \ - -DLLVM_TARGETS_TO_BUILD="X86;AArch64" \ - -DLLVM_ENABLE_LIBCXX:BOOL=OFF \ - -DLLVM_ENABLE_ZLIB:BOOL=ON \ - -DLLVM_ENABLE_FFI:BOOL=ON \ - -DLLVM_ENABLE_RTTI:BOOL=ON \ - \ - -DLLVM_BUILD_RUNTIME:BOOL=ON \ - \ - -DLLVM_INCLUDE_TOOLS:BOOL=ON \ - -DLLVM_BUILD_TOOLS:BOOL=ON \ - \ - -DLLVM_INCLUDE_TESTS:BOOL=OFF \ - -DLLVM_BUILD_TESTS:BOOL=OFF \ - \ - -DLLVM_INCLUDE_EXAMPLES:BOOL=OFF \ - -DLLVM_BUILD_EXAMPLES:BOOL=OFF \ - \ - -DLLVM_INCLUDE_UTILS:BOOL=OFF \ - -DLLVM_INSTALL_UTILS:BOOL=OFF \ - \ - -DLLVM_INCLUDE_DOCS:BOOL=OFF \ - -DLLVM_BUILD_DOCS:BOOL=OFF \ - -DLLVM_ENABLE_SPHINX:BOOL=OFF \ - -DLLVM_ENABLE_DOXYGEN:BOOL=OFF \ - -DSPHINX_OUTPUT_HTML:BOOL=OFF \ - -DSPHINX_WARNINGS_AS_ERRORS:BOOL=OFF \ - \ - -DLLVM_BUILD_LLVM_DYLIB:BOOL=ON \ - -DLLVM_LINK_LLVM_DYLIB:BOOL=ON \ - -DLLVM_BUILD_EXTERNAL_COMPILER_RT:BOOL=ON \ - -DLLVM_INSTALL_TOOLCHAIN_ONLY:BOOL=OFF \ - -make %{?_smp_mflags} -) -%endif - -# http://hackage.haskell.org/trac/ghc/wiki/Platforms -# cf https://github.com/gentoo-haskell/gentoo-haskell/tree/master/dev-lang/ghc +# http://ghc.haskell.org/trac/ghc/wiki/Platforms cat > mk/build.mk << EOF %if %{with perf_build} %ifarch %{ghc_llvm_archs} @@ -367,15 +370,20 @@ BuildFlavour = quick-llvm BuildFlavour = quick %endif %endif -GhcLibWays = v dyn %{?with_prof:p} -%if %{with docs} +GhcLibWays = v dyn %{?with_ghc_prof:p} +%if %{with haddock} HADDOCK_DOCS = YES -BUILD_MAN = YES +EXTRA_HADDOCK_OPTS += --hyperlinked-source --hoogle --quickjump %else HADDOCK_DOCS = NO -BUILD_MAN = NO %endif -EXTRA_HADDOCK_OPTS += --hyperlinked-source +%if %{with manual} +BUILD_MAN = YES +BUILD_SPHINX_HTML = YES +%else +BUILD_MAN = NO +BUILD_SPHINX_HTML = NO +%endif BUILD_SPHINX_PDF = NO EOF ## for verbose build output @@ -384,28 +392,21 @@ EOF ## (http://ghc.haskell.org/trac/ghc/wiki/Debugging/RuntimeSystem) #EXTRA_HC_OPTS=-debug +%build # for patch12 %ifarch armv7hl autoreconf -%else -# for patch5 -autoconf %endif -%if 0%{?fedora} > 28 || 0%{?rhel} > 7 -%ghc_set_cflags +%if 0%{?fedora} > 28 +%ghc_set_gcc_flags %else -# -Wunused-label is extremely noisy -%ifarch aarch64 s390x -CFLAGS="${CFLAGS:-$(echo %optflags | sed -e 's/-Wall -Werror=format-security //')}" -%else -CFLAGS="${CFLAGS:-%optflags}" -%endif -export CFLAGS -%endif +export CFLAGS="${CFLAGS:-%optflags}" export LDFLAGS="${LDFLAGS:-%{?__global_ldflags}}" -# for ghc-8.2 +%endif +# for ghc >= 8.2 export CC=%{_bindir}/gcc + # * %%configure induces cross-build due to different target/host/build platform names ./configure --prefix=%{_prefix} --exec-prefix=%{_exec_prefix} \ --bindir=%{_bindir} --sbindir=%{_sbindir} --sysconfdir=%{_sysconfdir} \ @@ -413,129 +414,88 @@ export CC=%{_bindir}/gcc --libexecdir=%{_libexecdir} --localstatedir=%{_localstatedir} \ --sharedstatedir=%{_sharedstatedir} --mandir=%{_mandir} \ --docdir=%{_docdir}/ghc \ -%ifarch %{ghc_llvm_archs} - --with-llc=$PWD/llvm-%{llvm_version}.src/_build/bin/llc --with-opt=$PWD/llvm-%{llvm_version}.src/_build/bin/opt \ -%else - --with-llc=%{_bindir}/llc-%{llvm_major} --with-opt=%{_bindir}/opt-%{llvm_major} \ -%endif -%if 0%{?fedora} || 0%{?rhel} > 6 --with-system-libffi \ +%ifarch %{ghc_unregisterized_arches} + --enable-unregisterised \ %endif %{nil} # avoid "ghc: hGetContents: invalid argument (invalid byte sequence)" -export LANG=en_US.utf8 +export LANG=C.utf8 make %{?_smp_mflags} %install -%ifarch %{ghc_llvm_archs} -( -cd llvm-%{llvm_version}.src -cd _build -make install DESTDIR=%{buildroot} -) -%endif - make DESTDIR=%{buildroot} install %if %{defined _ghcdynlibdir} -mv %{buildroot}%{ghclibdir}/*/libHS*ghc%{ghc_version}.so %{buildroot}%{_libdir}/ -for i in $(find %{buildroot} -path %{buildroot}%{ghclibdir}/llvm -prune -o -type f -exec sh -c "file {} | grep -q 'dynamically linked'" \; -print); do +mv %{buildroot}%{ghclibdir}/*/libHS*ghc%{ghc_version}.so %{buildroot}%{_ghcdynlibdir}/ +for i in $(find %{buildroot} -type f -executable -exec sh -c "file {} | grep -q 'dynamically linked'" \; -print); do chrpath -d $i done for i in %{buildroot}%{ghclibdir}/package.conf.d/*.conf; do - sed -i -e 's!^dynamic-library-dirs: .*!dynamic-library-dirs: %{_libdir}!' $i + sed -i -e 's!^dynamic-library-dirs: .*!dynamic-library-dirs: %{_ghcdynlibdir}!' $i done +sed -i -e 's!^library-dirs: %{ghclibdir}/rts!&\ndynamic-library-dirs: %{_ghcdynlibdir}!' %{buildroot}%{ghclibdir}/package.conf.d/rts.conf %endif +# libraries licenses +rm %{buildroot}%{ghc_html_libraries_dir}/{ghc-prim,integer-gmp}-*/LICENSE +mkdir -p %{buildroot}%{_ghclicensedir} +for i in $(cd %{buildroot}%{ghc_html_libraries_dir}; ls */LICENSE); do + pkg=$(dirname $i | sed -e "s/\\(.*\\)-.*/\\1/") + mkdir %{buildroot}%{_ghclicensedir}/ghc-$pkg + mv %{buildroot}%{ghc_html_libraries_dir}/$i %{buildroot}%{_ghclicensedir}/ghc-$pkg/ +done + for i in %{ghc_packages_list}; do name=$(echo $i | sed -e "s/\(.*\)-.*/\1/") ver=$(echo $i | sed -e "s/.*-\(.*\)/\1/") %ghc_gen_filelists $name $ver -%if 0%{?rhel} && 0%{?rhel} < 8 -echo "%%doc libraries/$name/LICENSE" >> ghc-$name.files -%else -echo "%%license libraries/$name/LICENSE" >> ghc-$name.files -%endif done echo "%%dir %{ghclibdir}" >> ghc-base%{?_ghcdynlibdir:-devel}.files +echo "%{ghclibdir}/include" >> ghc-base-devel.files %ghc_gen_filelists ghc-boot %{ghc_version_override} %ghc_gen_filelists ghc %{ghc_version_override} %ghc_gen_filelists ghci %{ghc_version_override} -%ghc_gen_filelists ghc-prim 0.5.1.1 -%ghc_gen_filelists integer-gmp 1.0.1.0 +%ghc_gen_filelists ghc-prim 0.5.3 +%ghc_gen_filelists integer-gmp 1.0.2.0 %define merge_filelist()\ -cat ghc-%1.files >> ghc-%2.files\ -cat ghc-%1-devel.files >> ghc-%2-devel.files\ cp -p libraries/%1/LICENSE libraries/LICENSE.%1\ -%if 0%{?rhel} && 0%{?rhel} < 8\ -echo "%%doc libraries/LICENSE.%1" >> ghc-%2.files\ -%else\ echo "%%license libraries/LICENSE.%1" >> ghc-%2.files\ -%endif +cat ghc-%1.files >> ghc-%2.files\ +for i in devel doc prof; do\ + cat ghc-%1-$i.files >> ghc-%2-$i.files\ +done %merge_filelist integer-gmp base %merge_filelist ghc-prim base # add rts libs -%if %{defined _ghcdynlibdir} -echo "%{ghclibdir}/rts" >> ghc-base-devel.files -%else -echo "%%dir %{ghclibdir}/rts" >> ghc-base.files -ls -d %{buildroot}%{ghclibdir}/rts/lib*.a >> ghc-base-devel.files -%endif -ls %{buildroot}%{?_ghcdynlibdir}%{!?_ghcdynlibdir:%{ghclibdir}/rts}/libHSrts*.so >> ghc-base.files -%if 0%{?rhel} && 0%{?rhel} < 7 -ls %{buildroot}%{ghclibdir}/rts/libffi.so.* >> ghc-base.files -%endif -%if %{defined _ghcdynlibdir} -sed -i -e 's!^library-dirs: %{ghclibdir}/rts!&\ndynamic-library-dirs: %{_libdir}!' %{buildroot}%{ghclibdir}/package.conf.d/rts.conf -%endif - -ls -d %{buildroot}%{ghclibdir}/package.conf.d/rts.conf %{buildroot}%{ghclibdir}/include >> ghc-base-devel.files -%if 0%{?rhel} && 0%{?rhel} < 7 -ls %{buildroot}%{ghclibdir}/rts/libffi.so >> ghc-base-devel.files -%endif - -sed -i -e "s|^%{buildroot}||g" ghc-base*.files - -# these are handled as alternatives -for i in hsc2hs runhaskell; do - if [ -x %{buildroot}%{_bindir}/$i-ghc ]; then - rm %{buildroot}%{_bindir}/$i - else - mv %{buildroot}%{_bindir}/$i{,-ghc} - fi - touch %{buildroot}%{_bindir}/$i -done - -%ghc_strip_dynlinked - -%if %{with docs} -mkdir -p %{buildroot}%{_sysconfdir}/cron.hourly -install -p --mode=0755 %SOURCE3 %{buildroot}%{_sysconfdir}/cron.hourly/ghc-doc-index -mkdir -p %{buildroot}%{_localstatedir}/lib/ghc -touch %{buildroot}%{_localstatedir}/lib/ghc/pkg-dir.cache{,.new} -install -p --mode=0755 %SOURCE4 %{buildroot}%{_bindir}/ghc-doc-index +rm -f rts.files +touch rts.files +ls %{buildroot}%{?_ghcdynlibdir}%{!?_ghcdynlibdir:%{ghclibdir}/rts}/libHSrts*-ghc%{ghc_version}.so >> rts.files +find %{buildroot}%{ghclibdir}/rts -type d -fprintf rts-devel.files '%%%%dir %p\n' -o -name 'libHSrts*_p.a' -fprint rts-prof.files -o -fprint rts-devel.files +echo "%{ghclibdir}/package.conf.d/rts.conf" >> rts-devel.files +sed -i -e "s!%{buildroot}!!g" rts.files rts-devel.files rts-prof.files +cat rts.files >> ghc-base.files +cat rts-devel.files >> ghc-base-devel.files +cat rts-prof.files >> ghc-base-prof.files +%if %{with haddock} # generate initial lib doc index cd libraries sh %{gen_contents_index} --intree --verbose cd .. %endif -# we package the library license files separately -find %{buildroot}%{ghc_html_libraries_dir} -name LICENSE -exec rm '{}' ';' - -# fix llvm paths -%ifarch %{ghc_llvm_archs} -sed -i -e "s!$PWD/llvm-%{llvm_version}.src/_build!%{ghclibdir}/llvm!" %{buildroot}%{ghclibdir}/settings -%endif - +mkdir -p %{buildroot}%{_mandir}/man1 +install -p -m 0644 %{SOURCE5} %{buildroot}%{_mandir}/man1/ghc-pkg.1 +install -p -m 0644 %{SOURCE6} %{buildroot}%{_mandir}/man1/haddock.1 +install -p -m 0644 %{SOURCE7} %{buildroot}%{_mandir}/man1/runghc.1 %check export LANG=en_US.utf8 @@ -592,29 +552,26 @@ make test %endif -%post compiler -# Alas, GHC, Hugs, and nhc all come with different set of tools in -# addition to a runFOO: -# -# * GHC: hsc2hs -# * Hugs: hsc2hs, cpphs -# * nhc: cpphs -# -# Therefore it is currently not possible to use --slave below to form -# link groups under a single name 'runhaskell'. Either these tools -# should be disentangled from the Haskell implementations, or all -# implementations should have the same set of tools. *sigh* +%if %{defined ghclibdir} +%transfiletriggerin compiler -- %{ghclibdir}/package.conf.d +%ghc_pkg_recache +%end -update-alternatives --install %{_bindir}/runhaskell runhaskell \ - %{_bindir}/runghc 500 -update-alternatives --install %{_bindir}/hsc2hs hsc2hs \ - %{_bindir}/hsc2hs-ghc 500 +%transfiletriggerpostun compiler -- %{ghclibdir}/package.conf.d +%ghc_pkg_recache +%end +%endif -%preun compiler -if [ "$1" = 0 ]; then - update-alternatives --remove runhaskell %{_bindir}/runghc - update-alternatives --remove hsc2hs %{_bindir}/hsc2hs-ghc -fi + +%if %{with haddock} +%transfiletriggerin doc-index -- %{ghc_html_libraries_dir} +%{ghc_html_libraries_dir}/gen_contents_index +%end + +%transfiletriggerpostun doc-index -- %{ghc_html_libraries_dir} +%{ghc_html_libraries_dir}/gen_contents_index +%end +%endif %files @@ -630,11 +587,10 @@ fi %{_bindir}/ghci-%{version} %{_bindir}/hp2ps %{_bindir}/hpc -%ghost %{_bindir}/hsc2hs -%{_bindir}/hsc2hs-ghc -%{_bindir}/runghc* -%ghost %{_bindir}/runhaskell -%{_bindir}/runhaskell-ghc +%{_bindir}/hsc2hs +%{_bindir}/runghc +%{_bindir}/runghc-%{ghc_version} +%{_bindir}/runhaskell %dir %{ghclibdir}/bin %{ghclibdir}/bin/ghc %{ghclibdir}/bin/ghc-pkg @@ -642,21 +598,19 @@ fi %{ghclibdir}/bin/hsc2hs %{ghclibdir}/bin/ghc-iserv %{ghclibdir}/bin/ghc-iserv-dyn -%ifarch %{ghc_llvm_archs} -%license llvm-3.9.1.src/LICENSE.TXT -%{ghclibdir}/llvm -%endif -%if %{with prof} +%if %{with ghc_prof} %{ghclibdir}/bin/ghc-iserv-prof %endif %{ghclibdir}/bin/runghc -%ifnarch s390 s390x %{mips} +%ifnarch %{ghc_unregisterized_arches} %{ghclibdir}/bin/ghc-split %endif %{ghclibdir}/bin/hp2ps %{ghclibdir}/bin/unlit %{ghclibdir}/ghc-usage.txt %{ghclibdir}/ghci-usage.txt +%{ghclibdir}/llvm-passes +%{ghclibdir}/llvm-targets %dir %{ghclibdir}/package.conf.d %ghost %{ghclibdir}/package.conf.d/package.cache %{ghclibdir}/package.conf.d/package.cache.lock @@ -665,72 +619,148 @@ fi %{ghclibdir}/template-hsc.h %dir %{_docdir}/ghc %dir %{ghc_html_dir} -%if %{with docs} -%{_bindir}/ghc-doc-index +%{_mandir}/man1/ghc-pkg.1* +%{_mandir}/man1/haddock.1* +%{_mandir}/man1/runghc.1* + +%if %{with haddock} %{_bindir}/haddock %{_bindir}/haddock-ghc-%{version} %{ghclibdir}/bin/haddock %{ghclibdir}/html %{ghclibdir}/latex -%if %{with docs} -# https://ghc.haskell.org/trac/ghc/ticket/12939 -%{_mandir}/man1/ghc.1* -%endif %dir %{ghc_html_dir}/libraries %{ghc_html_dir}/libraries/gen_contents_index %{ghc_html_dir}/libraries/prologue.txt %ghost %{ghc_html_dir}/libraries/doc-index*.html +%ghost %{ghc_html_dir}/libraries/haddock-bundle.min.js %ghost %{ghc_html_dir}/libraries/haddock-util.js %ghost %{ghc_html_dir}/libraries/hslogo-16.png %ghost %{ghc_html_dir}/libraries/index*.html %ghost %{ghc_html_dir}/libraries/minus.gif %ghost %{ghc_html_dir}/libraries/ocean.css %ghost %{ghc_html_dir}/libraries/plus.gif +%ghost %{ghc_html_dir}/libraries/quick-jump.css %ghost %{ghc_html_dir}/libraries/synopsis.png -%dir %{_localstatedir}/lib/ghc -%ghost %{_localstatedir}/lib/ghc/pkg-dir.cache -%ghost %{_localstatedir}/lib/ghc/pkg-dir.cache.new +%endif +%if %{with manual} +%{_mandir}/man1/ghc.1* %endif -%if %{with docs} -%files doc-cron -%config(noreplace) %{_sysconfdir}/cron.hourly/ghc-doc-index +%files devel + +%if %{with haddock} +%files doc + +%files doc-index %endif -%files libraries - - -%if %{with docs} +%if %{with manual} %files manual ## needs pandoc #%%{ghc_html_dir}/Cabal +%if %{with haddock} %{ghc_html_dir}/haddock %{ghc_html_dir}/index.html %{ghc_html_dir}/users_guide %endif +%endif + +%if %{with ghc_prof} +%files prof +%endif %changelog -* Tue Aug 14 2018 Petr Viktorin - 8.2.2-68.3 -- Fix BuildRequires for /usr/bin/python3 -- Resolves: #1615517 +* Mon Feb 10 2020 Jens Petersen - 8.6.5-102 +- rebuild against ghc-rpm-macros fixed for subpackage prof deps -* Sat Jun 2 2018 Jens Petersen - 8.2.2-68.2 -- do not delete RPATH for bundled llvm -- fix docs config -- add llvm-D25865-cmakeshlib.patch from llvm3.9 +* Tue Jan 28 2020 Fedora Release Engineering - 8.6.5-101 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild -* Thu May 31 2018 Jens Petersen - 8.2.2-68.1 -- apply install_dirs.patch from llvm3.9 to fix llvm RPATHs -- use ghc_set_cflags -- turn off the testsuite +* Wed Jul 31 2019 Jens Petersen - 8.6.5-100 +- update to GHC 8.6.5 (backport ghc:8.6 module stream) +- https://downloads.haskell.org/~ghc/8.6.5/docs/html/users_guide/8.6.1-notes.html +- https://downloads.haskell.org/~ghc/8.6.5/docs/html/users_guide/8.6.2-notes.html +- https://downloads.haskell.org/~ghc/8.6.5/docs/html/users_guide/8.6.3-notes.html +- https://downloads.haskell.org/~ghc/8.6.5/docs/html/users_guide/8.6.4-notes.html +- https://downloads.haskell.org/~ghc/8.6.5/docs/html/users_guide/8.6.5-notes.html +- fix process library initgroups issue + (https://github.com/haskell/process/pull/148) +- add fix-build-using-unregisterized-v8.4.patch for s390x (#1648537) + https://gitlab.haskell.org/ghc/ghc/issues/15913 +- add bigendian patch for containers (#1651448) + https://gitlab.haskell.org/ghc/ghc/issues/15411 +- Debian patches: + - add_-latomic_to_ghc-prim.patch, + - rts osReserveHeapMemory block alignment -* Thu May 31 2018 Jens Petersen - 8.2.2-68 +* Tue Jul 30 2019 Jens Petersen - 8.4.4-99 +- subpackage library haddock documentation and profiling libraries +- add ghc-doc and ghc-prof metapackages to pull in lib docs and prof libs +- rename ghc-doc-cron with ghc-doc-index using file triggers +- rename ghc-libraries to ghc-devel +- for quickbuild disable debuginfo +- lock ghc-compiler requires ghc-base-devel to ver-rel +- drop alternatives for runhaskell and hsc2hs +- use ghc_set_gcc_flags, with_ghc_prof, and with_haddock + +* Thu Jul 25 2019 Fedora Release Engineering +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Fri Jun 28 2019 Jens Petersen - 8.4.4-75 +- add transfiletriggers that will replace individual post/postun scriptlets + +* Mon Mar 4 2019 Jens Petersen - 8.4.4-74 +- unregisterized: fix 32bit adjacent floats issue + (https://ghc.haskell.org/trac/ghc/ticket/15853) + +* Sat Feb 16 2019 Jens Petersen - 8.4.4-73 +- update to GHC 8.4 +- https://ghc.haskell.org/trac/ghc/blog/ghc-8.4.1-released +- new patches: + - 6e361d895dda4600a85e01c72ff219474b5c7190.patch + - fix-build-using-unregisterized-v8.2.patch + - ghc-sphinx-1.8-4eebc8016.patch +- dropped patch: + - D4159.patch + - ghc-7.8-arm7_saner-linker-opt-handling-9873.patch + - ghc-Debian-reproducible-tmp-names.patch +- rely on rpm to strip + +* Fri Feb 8 2019 Jens Petersen - 8.2.2-72 +- add ghc_unregisterized_arches +- Recommends zlib-devel +- epel6 tweaks + +* Thu Jan 31 2019 Fedora Release Engineering - 8.2.2-72 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Sun Nov 18 2018 Zbigniew Jędrzejewski-Szmek - 8.2.2-71 +- Use C.UTF-8 locale + See https://fedoraproject.org/wiki/Changes/Remove_glibc-langpacks-all_from_buildroot + +* Mon Oct 22 2018 Jens Petersen +- Recommends for ghc-manual and ghc-doc-cron + +* Wed Oct 17 2018 Jens Petersen - 8.2.2-70 +- backport quickbuild config from 8.4 module and extend to perf_build +- disable -Wall on s390x like in 8.4 module to silence warning flood + and simplify setting of CFLAGS +- enable buildpath-abi-stability.patch (from Debian) +- setup build.mk in setup section, taken from copr and module + +* Tue Oct 16 2018 Peter Robinson +- Update alternatives dependencies + +* Fri Jul 13 2018 Fedora Release Engineering - 8.2.2-69 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Mon May 28 2018 Jens Petersen - 8.2.2-68 - fix sphinx-build version detection - merge bcond for haddock and manual - -* Tue May 29 2018 Jens Petersen -- bundle llvm-3.9 with ghc-compiler for aarch64 +- disable the testsuite to speed up builds +- version bootstrap and packaging fixes and tweaks * Mon May 28 2018 Jens Petersen - 8.2.2-67 - move manuals to new ghc-manual (noarch)