Compare commits

...

3 Commits
master ... f28

Author SHA1 Message Date
Jens Petersen
bb50afba02 sync with latest f29/rawhide 8.2.2-70 package 2018-10-18 00:31:06 +09:00
Jens Petersen
501e639f6b extend and simplify bcond for build configuration
- move manuals to 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
- drop bootstrap builds and do ABI hash checks unless ghc version changed
- no longer need autotools on aarch64
2018-05-24 13:18:56 +09:00
Jens Petersen
6ff0bc0482 silence the ghc-pkg abi-depends warnings when installing packages 2018-04-10 19:37:38 +09:00
8 changed files with 740 additions and 261 deletions

View File

@ -1,147 +1,3 @@
diff --git a/testsuite/tests/backpack/cabal/bkpcabal02/bkpcabal02.stdout b/testsuite/tests/backpack/cabal/bkpcabal02/bkpcabal02.stdout
--- a/testsuite/tests/backpack/cabal/bkpcabal02/bkpcabal02.stdout
+++ b/testsuite/tests/backpack/cabal/bkpcabal02/bkpcabal02.stdout
@@ -1,6 +1,11 @@
+ignoring (possibly broken) abi-depends field for packages
+ignoring (possibly broken) abi-depends field for packages
Preprocessing library 'p' for bkpcabal01-0.1.0.0..
Building library 'p' instantiated with H = <H>
for bkpcabal01-0.1.0.0..
+ignoring (possibly broken) abi-depends field for packages
Preprocessing library 'q' for bkpcabal01-0.1.0.0..
Building library 'q' instantiated with H = <H>
for bkpcabal01-0.1.0.0..
+ignoring (possibly broken) abi-depends field for packages
+ignoring (possibly broken) abi-depends field for packages
diff --git a/testsuite/tests/cabal/T12485a.stdout b/testsuite/tests/cabal/T12485a.stdout
--- a/testsuite/tests/cabal/T12485a.stdout
+++ b/testsuite/tests/cabal/T12485a.stdout
@@ -1,3 +1,4 @@
+ignoring (possibly broken) abi-depends field for packages
should SUCCEED
should SUCCEED
should SUCCEED
diff --git a/testsuite/tests/cabal/T5442d.stdout b/testsuite/tests/cabal/T5442d.stdout
--- a/testsuite/tests/cabal/T5442d.stdout
+++ b/testsuite/tests/cabal/T5442d.stdout
@@ -1,6 +1,7 @@
Reading package info from "shadow1.pkg" ... done.
Reading package info from "shadow4.pkg" ... done.
Reading package info from "shadow2.pkg" ... done.
+ignoring (possibly broken) abi-depends field for packages
global (should be empty):
user:
shadow-2
diff --git a/testsuite/tests/cabal/cabal01/cabal01.stdout b/testsuite/tests/cabal/cabal01/cabal01.stdout
--- a/testsuite/tests/cabal/cabal01/cabal01.stdout
+++ b/testsuite/tests/cabal/cabal01/cabal01.stdout
@@ -1,3 +1,4 @@
+ignoring (possibly broken) abi-depends field for packages
install1:
bin
lib
diff --git a/testsuite/tests/cabal/cabal06/cabal06.stdout b/testsuite/tests/cabal/cabal06/cabal06.stdout
--- a/testsuite/tests/cabal/cabal06/cabal06.stdout
+++ b/testsuite/tests/cabal/cabal06/cabal06.stdout
@@ -1,3 +1,7 @@
+ignoring (possibly broken) abi-depends field for packages
+ignoring (possibly broken) abi-depends field for packages
+ignoring (possibly broken) abi-depends field for packages
+ignoring (possibly broken) abi-depends field for packages
Does the first instance of q depend on p-1.0?
1
Does the second instance of q depend on p-1.0?
diff --git a/testsuite/tests/cabal/cabal08/cabal08.stdout b/testsuite/tests/cabal/cabal08/cabal08.stdout
--- a/testsuite/tests/cabal/cabal08/cabal08.stdout
+++ b/testsuite/tests/cabal/cabal08/cabal08.stdout
@@ -1,3 +1,5 @@
+ignoring (possibly broken) abi-depends field for packages
+ignoring (possibly broken) abi-depends field for packages
[1 of 1] Compiling Main ( Main.hs, Main.o )
Linking Main ...
p2
diff --git a/testsuite/tests/cabal/shadow.stdout b/testsuite/tests/cabal/shadow.stdout
--- a/testsuite/tests/cabal/shadow.stdout
+++ b/testsuite/tests/cabal/shadow.stdout
@@ -1,3 +1,4 @@
+ignoring (possibly broken) abi-depends field for packages
databases 1 and 2:
localshadow1.package.conf
(shadow-1)
diff --git a/testsuite/tests/driver/recomp007/recomp007.stdout b/testsuite/tests/driver/recomp007/recomp007.stdout
--- a/testsuite/tests/driver/recomp007/recomp007.stdout
+++ b/testsuite/tests/driver/recomp007/recomp007.stdout
@@ -1,3 +1,5 @@
+ignoring (possibly broken) abi-depends field for packages
+ignoring (possibly broken) abi-depends field for packages
Preprocessing executable 'test' for b-1.0..
Building executable 'test' for b-1.0..
[1 of 2] Compiling B ( B.hs, dist/build/test/test-tmp/B.o ) [A changed]
diff --git a/testsuite/tests/safeHaskell/check/pkg01/safePkg01.stdout b/testsuite/tests/safeHaskell/check/pkg01/safePkg01.stdout
--- a/testsuite/tests/safeHaskell/check/pkg01/safePkg01.stdout
+++ b/testsuite/tests/safeHaskell/check/pkg01/safePkg01.stdout
@@ -1,49 +1,53 @@
+ignoring (possibly broken) abi-depends field for packages
pdb.safePkg01/local.db
safePkg01-1.0
trusted: False
M_SafePkg
-package dependencies: base-4.9.0.0* ghc-prim-0.5.0.0 integer-gmp-1.0.0.0
+package dependencies: base-4.11.0.0* ghc-prim-0.5.2.0 integer-gmp-1.0.1.0
trusted: safe
require own pkg trusted: False
M_SafePkg2
-package dependencies: base-4.9.0.0 ghc-prim-0.5.0.0 integer-gmp-1.0.0.0
+package dependencies: base-4.11.0.0 ghc-prim-0.5.2.0 integer-gmp-1.0.1.0
trusted: trustworthy
require own pkg trusted: False
M_SafePkg3
-package dependencies: base-4.9.0.0* ghc-prim-0.5.0.0 integer-gmp-1.0.0.0
+package dependencies: base-4.11.0.0* ghc-prim-0.5.2.0 integer-gmp-1.0.1.0
trusted: safe
require own pkg trusted: True
M_SafePkg4
-package dependencies: base-4.9.0.0* ghc-prim-0.5.0.0 integer-gmp-1.0.0.0
+package dependencies: base-4.11.0.0* ghc-prim-0.5.2.0 integer-gmp-1.0.1.0
trusted: safe
require own pkg trusted: True
M_SafePkg5
-package dependencies: base-4.9.0.0* ghc-prim-0.5.0.0 integer-gmp-1.0.0.0
+package dependencies: base-4.11.0.0* ghc-prim-0.5.2.0 integer-gmp-1.0.1.0
trusted: safe
require own pkg trusted: True
M_SafePkg6
-package dependencies: array-0.5.1.0 base-4.9.0.0* bytestring-0.10.7.0* deepseq-1.4.2.0 ghc-prim-0.5.0.0 integer-gmp-1.0.0.0
+package dependencies: array-0.5.2.0 base-4.11.0.0* bytestring-0.10.8.2* deepseq-1.4.3.0 ghc-prim-0.5.2.0 integer-gmp-1.0.1.0
trusted: trustworthy
require own pkg trusted: False
M_SafePkg7
-package dependencies: array-0.5.1.0 base-4.9.0.0* bytestring-0.10.7.0* deepseq-1.4.2.0 ghc-prim-0.5.0.0 integer-gmp-1.0.0.0
+package dependencies: array-0.5.2.0 base-4.11.0.0* bytestring-0.10.8.2* deepseq-1.4.3.0 ghc-prim-0.5.2.0 integer-gmp-1.0.1.0
trusted: safe
require own pkg trusted: False
M_SafePkg8
-package dependencies: array-0.5.1.0 base-4.9.0.0 bytestring-0.10.7.0* deepseq-1.4.2.0 ghc-prim-0.5.0.0 integer-gmp-1.0.0.0
+package dependencies: array-0.5.2.0 base-4.11.0.0 bytestring-0.10.8.2* deepseq-1.4.3.0 ghc-prim-0.5.2.0 integer-gmp-1.0.1.0
trusted: trustworthy
require own pkg trusted: False
Testing setting trust
+ignoring (possibly broken) abi-depends field for packages
trusted: True
+ignoring (possibly broken) abi-depends field for packages
trusted: False
+ignoring (possibly broken) abi-depends field for packages
trusted: False
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
@ -158,10 +14,10 @@ diff --git a/utils/ghc-pkg/Main.hs b/utils/ghc-pkg/Main.hs
+ 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"
+-- -- 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)

View File

@ -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

View File

@ -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
])

228
ghc-pkg.man Normal file
View File

@ -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 <kaol@debian.org>, for the
Debian project (and may be used by others).

View File

@ -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

308
ghc.spec
View File

@ -1,20 +1,36 @@
# To bootstrap build a new version of ghc, comment out this line:
%global perf_build 1
# 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 8.2.2
%global ghc_release %{version}
%if %{undefined perf_build}
# make sure ghc libraries' ABI hashes unchanged
%bcond_without abicheck
# skip testsuite (takes time and not really being used)
%bcond_with testsuite
# build profiling libraries
# build docs (haddock and manuals)
# - combined since disabling haddock seems to cause no manuals built
# - <https://ghc.haskell.org/trac/ghc/ticket/15190>
# perf production build (disable for quick build)
%if %{with quickbuild}
%bcond_with prof
%{?ghc_bootstrap}
### uncomment to generate haddocks for bootstrap
#%%undefine without_haddock
%bcond_with docs
%bcond_with perf_build
%else
%bcond_without testsuite
%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
Version: 8.2.2
@ -22,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: 65%{?dist}
Release: 70%{?dist}
Summary: Glasgow Haskell Compiler
License: BSD and HaskellReport
@ -33,34 +49,40 @@ 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
# https://github.com/haskell/cabal/issues/4728
# https://ghc.haskell.org/trac/ghc/ticket/14381
Patch4: https://phabricator-files.haskell.org/file/data/pgrn3b7lw22ccodkc4nf/PHID-FILE-o3pkv37yfa5h2q3xflrd/D4159.patch
# 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 %{defined perf_build}
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
@ -78,22 +100,27 @@ BuildRequires: perl-interpreter
%if %{with testsuite}
BuildRequires: python3
%endif
%if %{undefined without_manual}
%if %{with docs}
BuildRequires: python3-sphinx
%endif
%ifarch armv7hl aarch64
%ifarch %{ghc_llvm_archs}
BuildRequires: llvm%{llvm_major}
%endif
%ifarch armv7hl aarch64
# patch5
BuildRequires: autoconf
%ifarch armv7hl
# patch12
BuildRequires: autoconf, automake
%endif
Requires: ghc-compiler = %{version}-%{release}
%if %{undefined without_haddock}
Requires: ghc-doc-index = %{version}-%{release}
%if %{with docs}
Requires: ghc-doc-cron = %{version}-%{release}
%endif
Requires: ghc-libraries = %{version}-%{release}
Requires: ghc-ghc-devel = %{version}-%{release}
Requires: ghc-libraries = %{version}-%{release}
%if %{with docs}
Requires: ghc-manual = %{version}-%{release}
%endif
%description
GHC is a state-of-the-art, open source, compiler and interactive environment
@ -124,14 +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 %{defined 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
@ -143,19 +172,33 @@ To install all of ghc (including the ghc library),
install the main ghc package.
%if %{undefined without_haddock}
%package doc-index
Summary: GHC library development documentation indexing
%if %{with docs}
%package doc-cron
Summary: GHC library documentation indexing cronjob
License: BSD
Requires: ghc-compiler = %{version}-%{release}
Requires: crontabs
# added in f28
Obsoletes: ghc-doc-index < %{version}-%{release}
BuildArch: noarch
%description doc-index
%description doc-cron
The package provides a cronjob for re-indexing installed library development
documention.
%endif
%if %{with docs}
%package manual
Summary: GHC manual
License: BSD
BuildArch: noarch
%description manual
This package provides the User Guide and Haddock manual.
%endif
# ghclibdir also needs ghc_version_override for bootstrapping
%global ghc_version_override %{version}
@ -200,7 +243,7 @@ documention.
%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 %{undefined without_haddock}
%if %{with docs}
%ghc_lib_subpackage -d -l BSD xhtml-3000.2.2
%endif
%endif
@ -231,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
@ -240,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 %{undefined without_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 %{defined perf_build}
%ifarch armv7hl aarch64
%if %{with perf_build}
%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 %{defined 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 %{undefined without_manual}
BUILD_MAN = yes
%else
BUILD_MAN = no
%endif
BUILD_SPHINX_PDF=no
BUILD_SPHINX_PDF = NO
EOF
## for verbose build output
#GhcStage1HcOpts=-v4
@ -289,23 +333,19 @@ EOF
## (http://ghc.haskell.org/trac/ghc/wiki/Debugging/RuntimeSystem)
#EXTRA_HC_OPTS=-debug
%ifarch armv7hl aarch64
%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} \
@ -328,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/")
@ -348,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}
@ -371,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
@ -399,10 +444,11 @@ done
%ghc_strip_dynlinked
%if %{undefined without_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
touch %{buildroot}%{_localstatedir}/lib/ghc/pkg-dir.cache{,.new}
install -p --mode=0755 %SOURCE4 %{buildroot}%{_bindir}/ghc-doc-index
# generate initial lib doc index
@ -414,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
@ -436,34 +486,39 @@ echo 'main = putStrLn "Foo"' > testghc/foo.hs
$GHC testghc/foo.hs -o testghc/foo -dynamic
[ "$(testghc/foo)" = "Foo" ]
rm testghc/*
%if %{with testsuite}
make test
%endif
# check the ABI hashes
%if %{defined perf_build}
echo "Checking package ABI hashes:"
for i in %{ghc_packages_list}; do
old=$(ghc-pkg field $i id --simple-output || :)
if [ -n "$old" ]; then
new=$(/usr/lib/rpm/ghc-pkg-wrapper %{buildroot}%{ghclibdir} field $i id --simple-output)
if [ "$old" != "$new" ]; then
echo "ABI hash for $i changed!:" >&2
echo " $old -> $new" >&2
ghc_abi_hash_change=yes
%if %{with abicheck}
if [ "%{version}" = "$(ghc --numeric-version)" ]; then
echo "Checking package ABI hashes:"
for i in %{ghc_packages_list}; do
old=$(ghc-pkg field $i id --simple-output || :)
if [ -n "$old" ]; then
new=$(/usr/lib/rpm/ghc-pkg-wrapper %{buildroot}%{ghclibdir} field $i id --simple-output)
if [ "$old" != "$new" ]; then
echo "ABI hash for $i changed!:" >&2
echo " $old -> $new" >&2
ghc_abi_hash_change=yes
else
echo "($old unchanged)"
fi
else
echo "($old unchanged)"
echo "($i not installed)"
fi
else
echo "($i not installed)"
done
if [ "$ghc_abi_hash_change" = "yes" ]; then
echo "ghc ABI hash change: aborting build!" >&2
exit 1
fi
done
if [ "$ghc_abi_hash_change" = "yes" ]; then
echo "ghc ABI hash change: aborting build!" >&2
exit 1
else
echo "ABI hash checks skipped: GHC changed from $(ghc --numeric-version) to %{version}"
fi
%endif
%if %{with testsuite}
make test
%endif
%post compiler
# Alas, GHC, Hugs, and nhc all come with different set of tools in
@ -534,45 +589,88 @@ fi
%{ghclibdir}/template-hsc.h
%dir %{_docdir}/ghc
%dir %{ghc_html_dir}
%if %{undefined without_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 %{undefined without_manual}
# https://ghc.haskell.org/trac/ghc/ticket/12939
#%%{_mandir}/man1/ghc.*
## needs pandoc
#%%{ghc_html_dir}/Cabal
%{ghc_html_dir}/haddock
%{ghc_html_dir}/users_guide
%if %{with docs}
%{_mandir}/man1/ghc.1*
%endif
%dir %{ghc_html_dir}/libraries
%{ghc_html_dir}/libraries/gen_contents_index
%{ghc_html_dir}/libraries/hslogo-16.png
%{ghc_html_dir}/libraries/ocean.css
%{ghc_html_dir}/libraries/prologue.txt
%{ghc_html_dir}/libraries/synopsis.png
%{ghc_html_dir}/index.html
%ghost %{ghc_html_dir}/libraries/doc-index*.html
%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
%{_localstatedir}/lib/ghc
%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 %{undefined without_haddock}
%files doc-index
%if %{with docs}
%files doc-cron
%config(noreplace) %{_sysconfdir}/cron.hourly/ghc-doc-index
%endif
%files libraries
%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
* Wed Oct 17 2018 Jens Petersen <petersen@redhat.com> - 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 <pbrobinson@fedoraproject.org>
- Update alternatives dependencies
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 8.2.2-69
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Mon May 28 2018 Jens Petersen <petersen@redhat.com> - 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 <petersen@redhat.com> - 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
- drop bootstrap builds and do ABI hash checks unless ghc version changed
- no longer need autotools on aarch64
* Tue Apr 10 2018 Jens Petersen <petersen@redhat.com> - 8.2.2-66
- ghc-pkg: silence the abi-depends warnings
* Fri Feb 09 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 8.2.2-65
- Escape macros in %%changelog

231
haddock.man Normal file
View File

@ -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 <simonmar@microsoft.com>, Dawid Waern <david.waern@gmail.com>.
All rights reserved.
.SH AUTHOR
This manual page was written by Michael Weber <michaelw@debian.org>
for the Debian GNU/Linux system (but may be used by others).
.\" Local variables:
.\" mode: nroff
.\" End:

45
runghc.man Normal file
View File

@ -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 <effie.jayx@gmail.com>. This is free documentation; see the GNU
General Public Licence version 2 or later for copying conditions. There is NO WARRANTY.