From bb50afba02e0c33bca63f2f2bd2bd7270f5d3e14 Mon Sep 17 00:00:00 2001 From: Jens Petersen Date: Thu, 18 Oct 2018 00:16:04 +0900 Subject: [PATCH] sync with latest f29/rawhide 8.2.2-70 package --- ghc-Debian-buildpath-abi-stability.patch | 14 +- ghc-configure-fix-sphinx-version-check.patch | 11 + ghc-pkg.man | 228 ++++++++++++++++++ ghc-warnings.mk-CC-Wall.patch | 12 + ghc.spec | 206 +++++++++++------ haddock.man | 231 +++++++++++++++++++ runghc.man | 45 ++++ 7 files changed, 663 insertions(+), 84 deletions(-) create mode 100644 ghc-configure-fix-sphinx-version-check.patch create mode 100644 ghc-pkg.man create mode 100644 ghc-warnings.mk-CC-Wall.patch create mode 100644 haddock.man create mode 100644 runghc.man diff --git a/ghc-Debian-buildpath-abi-stability.patch b/ghc-Debian-buildpath-abi-stability.patch index b6f46b6..1d45c72 100644 --- a/ghc-Debian-buildpath-abi-stability.patch +++ b/ghc-Debian-buildpath-abi-stability.patch @@ -1,10 +1,8 @@ Forwarded to https://ghc.haskell.org/trac/ghc/ticket/10424 -Index: ghc-7.10.1/compiler/iface/MkIface.hs -=================================================================== ---- ghc-7.10.1.orig/compiler/iface/MkIface.hs 2015-05-17 20:34:02.808643844 +0200 -+++ ghc-7.10.1/compiler/iface/MkIface.hs 2015-05-17 20:34:02.804643799 +0200 -@@ -611,7 +611,7 @@ +--- 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 @@ -13,7 +11,7 @@ Index: ghc-7.10.1/compiler/iface/MkIface.hs sorted_deps, mi_hpc iface0) -@@ -644,6 +644,9 @@ +@@ -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) @@ -21,5 +19,5 @@ Index: ghc-7.10.1/compiler/iface/MkIface.hs + usages = [ case u of UsageFile _ fp -> UsageFile "" fp; _ -> u | u <- mi_usages iface0 ] + - getOrphanHashes :: HscEnv -> [Module] -> IO [Fingerprint] - getOrphanHashes hsc_env mods = do + -- | 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/ghc-configure-fix-sphinx-version-check.patch b/ghc-configure-fix-sphinx-version-check.patch new file mode 100644 index 0000000..c19da05 --- /dev/null +++ b/ghc-configure-fix-sphinx-version-check.patch @@ -0,0 +1,11 @@ +--- 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/ghc-pkg.man b/ghc-pkg.man new file mode 100644 index 0000000..ccac8e4 --- /dev/null +++ b/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/ghc-warnings.mk-CC-Wall.patch b/ghc-warnings.mk-CC-Wall.patch new file mode 100644 index 0000000..f775eb3 --- /dev/null +++ b/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/ghc.spec b/ghc.spec index 98118e9..dec017f 100644 --- a/ghc.spec +++ b/ghc.spec @@ -1,20 +1,35 @@ -# perf production build (disable for quick build) -%bcond_without perf_build +# disable prof, docs, perf build +# NB This SHOULD be disabled 'bcond_with' for all koji production builds +%bcond_with quickbuild + +# to handle RCs +%global ghc_release %{version} # make sure ghc libraries' ABI hashes unchanged %bcond_without abicheck -# run testsuite -%bcond_without testsuite -# build profiling libraries -%bcond_without prof -# build manual -%bcond_without manual -# build library documentation -%bcond_without haddock +# skip testsuite (takes time and not really being used) +%bcond_with testsuite -# to handle RCs -%global ghc_release %{version} +# build profiling libraries +# build docs (haddock and manuals) +# - combined since disabling haddock seems to cause no manuals built +# - +# perf production build (disable for quick build) +%if %{with quickbuild} +%bcond_with prof +%bcond_with docs +%bcond_with perf_build +%else +%bcond_without prof +%bcond_without docs +%bcond_without perf_build +%endif + + +# 8.2 needs llvm-3.9 +%global llvm_major 3.9 +%global ghc_llvm_archs armv7hl aarch64 Name: ghc # ghc must be rebuilt after a version bump to avoid ABI change problems @@ -23,7 +38,7 @@ Version: 8.2.2 # - 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: 67%{?dist} +Release: 70%{?dist} Summary: Glasgow Haskell Compiler License: BSD and HaskellReport @@ -34,6 +49,9 @@ Source1: https://downloads.haskell.org/~ghc/%{ghc_release}/ghc-%{version}-testsu %endif Source3: ghc-doc-index.cron Source4: ghc-doc-index +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 @@ -41,28 +59,30 @@ Patch2: ghc-Cabal-install-PATH-warning.patch # 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 Patch12: ghc-armv7-VFPv3D16--NEON.patch +# for s390x +# https://ghc.haskell.org/trac/ghc/ticket/15689 +Patch15: ghc-warnings.mk-CC-Wall.patch + # Debian patches: -# doesn't apply to 8.2 -#Patch24: ghc-Debian-buildpath-abi-stability.patch +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 -# 8.2 needs llvm-3.9 -%global llvm_major 3.9 - # fedora ghc has been bootstrapped on # %%{ix86} x86_64 ppc ppc64 armv7hl s390 s390x ppc64le aarch64 # and retired arches: alpha sparcv9 armv5tel # see also deprecated ghc_arches defined in /etc/rpm/macros.ghc-srpm by redhat-rpm-macros -%if %{with abicheck} -BuildRequires: ghc-compiler = %{version} +BuildRequires: ghc-compiler # for ABI hash checking -BuildRequires: ghc = %{version} +%if %{with abicheck} +BuildRequires: ghc %endif BuildRequires: ghc-rpm-macros-extra >= 1.8 BuildRequires: ghc-binary-devel @@ -80,23 +100,25 @@ BuildRequires: perl-interpreter %if %{with testsuite} BuildRequires: python3 %endif -%if %{with manual} +%if %{with docs} BuildRequires: python3-sphinx %endif -%ifarch armv7hl aarch64 +%ifarch %{ghc_llvm_archs} BuildRequires: llvm%{llvm_major} %endif +# patch5 +BuildRequires: autoconf %ifarch armv7hl # patch12 BuildRequires: autoconf, automake %endif Requires: ghc-compiler = %{version}-%{release} -%if %{with haddock} +%if %{with docs} Requires: ghc-doc-cron = %{version}-%{release} %endif Requires: ghc-ghc-devel = %{version}-%{release} Requires: ghc-libraries = %{version}-%{release} -%if %{with manual} +%if %{with docs} Requires: ghc-manual = %{version}-%{release} %endif @@ -129,16 +151,16 @@ License: BSD Requires: gcc%{?_isa} Requires: ghc-base-devel%{?_isa} # for alternatives -Requires(post): chkconfig -Requires(postun): chkconfig +Requires(post): %{_sbindir}/update-alternatives +Requires(postun): %{_sbindir}/update-alternatives # added in f14 Obsoletes: ghc-doc < 6.12.3-4 -%if %{without haddock} +%if %{without docs} Obsoletes: ghc-doc-cron < %{version}-%{release} # added in f28 Obsoletes: ghc-doc-index < %{version}-%{release} %endif -%ifarch armv7hl aarch64 +%ifarch %{ghc_llvm_archs} Requires: llvm%{llvm_major} %endif @@ -150,7 +172,7 @@ To install all of ghc (including the ghc library), install the main ghc package. -%if %{with haddock} +%if %{with docs} %package doc-cron Summary: GHC library documentation indexing cronjob License: BSD @@ -166,7 +188,7 @@ documention. %endif -%if %{with manual} +%if %{with docs} %package manual Summary: GHC manual License: BSD @@ -221,7 +243,7 @@ This package provides the User Guide and Haddock manual. %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 unix-2.7.2.2 -%if %{with haddock} +%if %{with docs} %ghc_lib_subpackage -d -l BSD xhtml-3000.2.2 %endif %endif @@ -252,6 +274,7 @@ except the ghc library, which is installed by the toplevel ghc metapackage. %patch2 -p1 -b .orig %patch4 -p1 -b .orig +%patch5 -p1 -b .orig %if 0%{?fedora} || 0%{?rhel} > 6 rm -r libffi-tarballs @@ -261,48 +284,48 @@ rm -r libffi-tarballs %patch12 -p1 -b .orig %endif -#%%patch24 -p1 -b .orig +%ifarch s390x +%patch15 -p1 -b .orig +%endif + +%patch24 -p1 -b .orig %patch26 -p1 -b .orig %patch27 -p1 -b .orig %patch28 -p1 -b .orig %global gen_contents_index gen_contents_index.orig -%if %{with haddock} +%if %{with docs} if [ ! -f "libraries/%{gen_contents_index}" ]; then echo "Missing libraries/%{gen_contents_index}, needed at end of %%install!" exit 1 fi %endif - -%build -# http://hackage.haskell.org/trac/ghc/wiki/Platforms -# 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 armv7hl aarch64 +%ifarch %{ghc_llvm_archs} BuildFlavour = perf-llvm %else BuildFlavour = perf %endif %else -%ifarch armv7hl aarch64 +%ifarch %{ghc_llvm_archs} BuildFlavour = quick-llvm %else BuildFlavour = quick %endif %endif GhcLibWays = v dyn %{?with_prof:p} -%if %{without haddock} +%if %{with docs} +HADDOCK_DOCS = YES +BUILD_MAN = YES +%else HADDOCK_DOCS = NO +BUILD_MAN = NO %endif EXTRA_HADDOCK_OPTS += --hyperlinked-source -%if %{with manual} -BUILD_MAN = yes -%else -BUILD_MAN = no -%endif -BUILD_SPHINX_PDF=no +BUILD_SPHINX_PDF = NO EOF ## for verbose build output #GhcStage1HcOpts=-v4 @@ -310,23 +333,19 @@ 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 -%ghc_set_cflags -%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 +# replace later with ghc_set_gcc_flags +export CFLAGS="${CFLAGS:-%optflags}" export LDFLAGS="${LDFLAGS:-%{?__global_ldflags}}" -# for ghc-8.2 +# 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} \ @@ -349,14 +368,15 @@ make %{?_smp_mflags} %install make DESTDIR=%{buildroot} install +%if %{defined _ghcdynlibdir} mv %{buildroot}%{ghclibdir}/*/libHS*ghc%{ghc_version}.so %{buildroot}%{_libdir}/ for i in $(find %{buildroot} -type f -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 done +%endif for i in %{ghc_packages_list}; do name=$(echo $i | sed -e "s/\(.*\)-.*/\1/") @@ -369,8 +389,7 @@ echo "%%license libraries/$name/LICENSE" >> ghc-$name.files %endif done -# ghc-base should own ghclibdir -echo "%%dir %{ghclibdir}" >> ghc-base-devel.files +echo "%%dir %{ghclibdir}" >> ghc-base%{?_ghcdynlibdir:-devel}.files %ghc_gen_filelists ghc-boot %{ghc_version_override} %ghc_gen_filelists ghc %{ghc_version_override} @@ -392,21 +411,26 @@ echo "%%license libraries/LICENSE.%1" >> ghc-%2.files\ %merge_filelist ghc-prim base # add rts libs +%if %{defined _ghcdynlibdir} echo "%{ghclibdir}/rts" >> ghc-base-devel.files -ls %{buildroot}%{_libdir}/libHSrts*.so >> ghc-base.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 - -sed -i -e "s|^%{buildroot}||g" ghc-base.files +%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-devel.files +sed -i -e "s|^%{buildroot}||g" ghc-base*.files # these are handled as alternatives for i in hsc2hs runhaskell; do @@ -420,7 +444,7 @@ done %ghc_strip_dynlinked -%if %{with haddock} +%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 @@ -436,6 +460,10 @@ cd .. # we package the library license files separately find %{buildroot}%{ghc_html_libraries_dir} -name LICENSE -exec rm '{}' ';' +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 @@ -482,6 +510,8 @@ if [ "%{version}" = "$(ghc --numeric-version)" ]; then echo "ghc ABI hash change: aborting build!" >&2 exit 1 fi +else + echo "ABI hash checks skipped: GHC changed from $(ghc --numeric-version) to %{version}" fi %endif @@ -559,16 +589,19 @@ fi %{ghclibdir}/template-hsc.h %dir %{_docdir}/ghc %dir %{ghc_html_dir} -%if %{with haddock} +%{_mandir}/man1/ghc-pkg.1* +%{_mandir}/man1/haddock.1* +%{_mandir}/man1/runghc.1* + +%if %{with docs} %{_bindir}/ghc-doc-index %{_bindir}/haddock %{_bindir}/haddock-ghc-%{version} %{ghclibdir}/bin/haddock %{ghclibdir}/html %{ghclibdir}/latex -%if %{with manual} -# https://ghc.haskell.org/trac/ghc/ticket/12939 -#%%{_mandir}/man1/ghc.* +%if %{with docs} +%{_mandir}/man1/ghc.1* %endif %dir %{ghc_html_dir}/libraries %{ghc_html_dir}/libraries/gen_contents_index @@ -586,7 +619,7 @@ fi %ghost %{_localstatedir}/lib/ghc/pkg-dir.cache.new %endif -%if %{with haddock} +%if %{with docs} %files doc-cron %config(noreplace) %{_sysconfdir}/cron.hourly/ghc-doc-index %endif @@ -594,20 +627,41 @@ fi %files libraries -%if %{with manual} +%if %{with docs} %files manual ## needs pandoc #%%{ghc_html_dir}/Cabal +%if %{with docs} %{ghc_html_dir}/haddock +%endif %{ghc_html_dir}/index.html %{ghc_html_dir}/users_guide %endif %changelog -* Thu May 24 2018 Jens Petersen - 8.2.2-67 -- move manuals to ghc-manual.noarch -- rename ghc-doc-index to ghc-doc-cron.noarch +* 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 +- 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) +- rename ghc-doc-index to ghc-doc-cron (noarch) - ghost the ghc-doc-index local state files - ghost some newer libraries index files - simplify and extend bcond for build configuration diff --git a/haddock.man b/haddock.man new file mode 100644 index 0000000..a30106b --- /dev/null +++ b/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/runghc.man b/runghc.man new file mode 100644 index 0000000..61a9076 --- /dev/null +++ b/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. +