diff options
author | CoprDistGit <infra@openeuler.org> | 2023-10-25 20:03:51 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2023-10-25 20:03:51 +0000 |
commit | fb97aa11c15fa74f60f1535e91442f1e9a60d153 (patch) | |
tree | c5d164100e4091b6ae525e3a3cfd90ce53bbf3bc | |
parent | 1cc8798baf9426f821b4f887f2914eac62e3ecd8 (diff) |
automatic import of ghc
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | execstack.patch | 50 | ||||
-rw-r--r-- | ghc-gen_contents_index-haddock-path.patch | 13 | ||||
-rw-r--r-- | ghc-pie.patch | 12 | ||||
-rw-r--r-- | ghc-pkg.man | 228 | ||||
-rw-r--r-- | ghc-rpmlintrc | 8 | ||||
-rw-r--r-- | ghc.spec | 491 | ||||
-rw-r--r-- | haddock.man | 231 | ||||
-rw-r--r-- | runghc.man | 45 | ||||
-rw-r--r-- | sources | 2 |
10 files changed, 1082 insertions, 0 deletions
@@ -0,0 +1,2 @@ +/9_2_3-bootstrap-sources.tar.gz +/ghc-9.4.5-src.tar.xz diff --git a/execstack.patch b/execstack.patch new file mode 100644 index 0000000..f8370a4 --- /dev/null +++ b/execstack.patch @@ -0,0 +1,50 @@ +From 3739e565f8fa09b3a31ba8f563c518480585f6f9 Mon Sep 17 00:00:00 2001 +From: Andreas Schwab <schwab@suse.de> +Date: Sat, 11 Jun 2022 23:29:24 +0200 +Subject: [PATCH] RTS: Add stack marker to StgCRunAsm.S + +Every object file must be properly marked for non-executable stack, even if it +contains no code. +--- + rts/StgCRunAsm.S | 11 +++++------ + 1 file changed, 5 insertions(+), 6 deletions(-) + +diff --git a/rts/StgCRunAsm.S b/rts/StgCRunAsm.S +index aed3241d12..9216e6c759 100644 +--- a/rts/StgCRunAsm.S ++++ b/rts/StgCRunAsm.S +@@ -66,8 +66,6 @@ StgReturn: + addi 12,1,-(8*18) + bl _restgpr1_14 + b _restfpr_14 +- +- .section .note.GNU-stack,"",@progbits + # else // linux_HOST_OS + # error Only Linux support for power64 little endian right now. + # endif +@@ -231,8 +229,6 @@ StgReturn: + .cfi_endproc + .size StgReturn, .-StgReturn + +- .section .note.GNU-stack,"",@progbits +- + #elif defined(riscv64_HOST_ARCH) + # define STACK_FRAME_SIZE (RESERVED_C_STACK_BYTES+208) + .text +@@ -374,8 +370,11 @@ StgReturn: + ret + .cfi_endproc + .size StgReturn, .-StgReturn +- +- .section .note.GNU-stack,"",@progbits + #endif + + #endif /* !USE_MINIINTERPRETER */ ++ ++/* mark stack as nonexecutable */ ++#if defined(__linux__) && defined(__ELF__) ++.section .note.GNU-stack,"",@progbits ++#endif +-- +2.37.0 + diff --git a/ghc-gen_contents_index-haddock-path.patch b/ghc-gen_contents_index-haddock-path.patch new file mode 100644 index 0000000..699effd --- /dev/null +++ b/ghc-gen_contents_index-haddock-path.patch @@ -0,0 +1,13 @@ +Index: ghc-9.4.4/libraries/gen_contents_index +=================================================================== +--- ghc-9.4.4.orig/libraries/gen_contents_index ++++ ghc-9.4.4/libraries/gen_contents_index +@@ -58,7 +58,7 @@ then + HADDOCK_ARGS="$HADDOCK_ARGS $HADDOCK_ARG" + done + else +- HADDOCK=../../../../../bin/haddock ++ HADDOCK=/usr/bin/haddock + # We don't want the GHC API to swamp the index + HADDOCK_FILES=`ls -1 */*.haddock | grep -v '/ghc\.haddock' | sort` + HADDOCK_ARGS="-p prologue.txt" diff --git a/ghc-pie.patch b/ghc-pie.patch new file mode 100644 index 0000000..30a478b --- /dev/null +++ b/ghc-pie.patch @@ -0,0 +1,12 @@ +Index: ghc-9.4.4/compiler/GHC/Driver/Session.hs +=================================================================== +--- ghc-9.4.4.orig/compiler/GHC/Driver/Session.hs ++++ ghc-9.4.4/compiler/GHC/Driver/Session.hs +@@ -3870,6 +3870,7 @@ default_PIC platform = + -- This requires PIC on AArch64, and ExternalDynamicRefs on Linux as on top + -- of that. Subsequently we expect all code on aarch64/linux (and macOS) to + -- be built with -fPIC. ++ (OSLinux, ArchX86_64) -> [Opt_PIC] + (OSDarwin, ArchAArch64) -> [Opt_PIC] + (OSLinux, ArchAArch64) -> [Opt_PIC, Opt_ExternalDynamicRefs] + (OSLinux, ArchARM {}) -> [Opt_PIC, Opt_ExternalDynamicRefs] 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 <kaol@debian.org>, for the +Debian project (and may be used by others). diff --git a/ghc-rpmlintrc b/ghc-rpmlintrc new file mode 100644 index 0000000..885a3d9 --- /dev/null +++ b/ghc-rpmlintrc @@ -0,0 +1,8 @@ +addFilter("devel-file-in-non-devel-package") +addFilter("static-library-without-debuginfo") +# ghc-compiler has devel-dependency +addFilter("devel-dependency") +# Regrettably, upstream does not provide man pages for all executables +addFilter("no-manual-page-for-binary") +# Prevent warning about ghc containing no binary (it is a metapackage) +addFilter("no-binary") diff --git a/ghc.spec b/ghc.spec new file mode 100644 index 0000000..df11083 --- /dev/null +++ b/ghc.spec @@ -0,0 +1,491 @@ +%define full_version 9.4.5 + +# Keep in sync with ghc-bootstrap.spec +%global llvm_major 14 + +# disable prof, docs, perf build +# for production builds: disable quick build +%bcond_with quickbuild + +# for production builds: use hadrian buildsystem +%bcond_without hadrian + +# for production builds: build hadrian +%bcond_without build_hadrian + +# for production builds: enable debuginfo +%bcond_without ghc_debuginfo + +%if %{without ghc_debuginfo} +%undefine _enable_debug_packages +%endif + +# build profiling libraries +# build help document (haddock & manual) +# perf production build (disable for quick build) +%if %{with quickbuild} +%undefine with_ghc_prof +%undefine with_help +%undefine with_haddock +%bcond_with perf_build +%else +%bcond_without ghc_prof +%bcond_without help +%bcond_without haddock +%bcond_without perf_build +%endif + +%global ghc_llvm_archs riscv64 +%global ghc_unregisterized_arches noarch + +%global base_ver 4.17.1.0 +%global ghc_compact_ver 0.1.0.0 +%global hpc_ver 0.6.1.0 +%global hsc2hs_ver 0.68.8 + +Name: ghc +Version: %{full_version} +Release: 1 +Summary: The Glorious Glasgow Haskell Compiler +License: BSD-3-Clause +URL: https://www.haskell.org/ghc/ +Source0: https://downloads.haskell.org/~ghc/%{full_version}/ghc-%{version}-src.tar.xz +Source1: ghc-rpmlintrc +Source2: 9_2_3-bootstrap-sources.tar.gz +Source3: ghc-pkg.man +Source4: haddock.man +Source5: runghc.man + +# Use absolute PATH in gen_contents_index +Patch1: ghc-gen_contents_index-haddock-path.patch +# Add stack marker to StgCRunAsm.S +Patch2: execstack.patch +# Set Linux as default PIE platform +Patch3: ghc-pie.patch + +BuildRequires: binutils-devel +BuildRequires: gcc-c++ +BuildRequires: ghc-bootstrap >= 9.0 +BuildRequires: ghc-bootstrap-tools >= 1.0 +BuildRequires: ghc-rpm-macros-extra +BuildRequires: glibc-devel +BuildRequires: gmp-devel +BuildRequires: elfutils-devel +BuildRequires: elfutils-libelf-devel +BuildRequires: libffi-devel +BuildRequires: libtool +%ifarch riscv64 +BuildRequires: clang%{llvm_major} +BuildRequires: llvm%{llvm_major} +BuildRequires: llvm%{llvm_major}-devel +%endif +BuildRequires: ncurses-devel +BuildRequires: pkgconfig +BuildRequires: python3 +BuildRequires: xz +%if %{with help} +BuildRequires: python3-sphinx +%endif +BuildRequires: numactl-devel + +Requires: %{name}-compiler = %{version}-%{release} +Requires: %{name}-devel = %{version}-%{release} +Requires: %{name}-ghc-boot-devel = %{version}-%{release} +Requires: %{name}-ghc-compact-devel = %{ghc_compact_ver}-%{release} +Requires: %{name}-ghc-devel = %{version}-%{release} +Requires: %{name}-ghc-heap-devel = %{version}-%{release} +Requires: %{name}-ghci-devel = %{version}-%{release} +Requires: %{name}-hpc-devel = %{hpc_ver}-%{release} +Requires: %{name}-libiserv-devel = %{version}-%{release} +Recommends: %{name}-compiler-default = %{version}-%{release} +%if %{with help} +Suggests: %{name}-help = %{version}-%{release} +%endif +%if %{with ghc_prof} +Suggests: %{name}-prof = %{version}-%{release} +%endif + +%description +Haskell is the standard purely functional programming language; the +current language version is Haskell 98, agreed in December 1998. + +GHC is a state-of-the-art programming suite for Haskell. Included is +an optimising compiler generating good code for a variety of +platforms, together with an interactive system for convenient, quick +development. The distribution includes space and time profiling +facilities, a large collection of libraries, and support for various +language extensions, including concurrency, exceptions, and foreign +language interfaces (C, C++, etc). + +A wide variety of Haskell related resources (tutorials, libraries, +specifications, documentation, compilers, interprbeters, references, +contact information, links to research groups) are available from the +Haskell home page at <http://www.haskell.org/>. + +%package compiler +Summary: GHC compiler and utilities +License: BSD-3-Clause +Requires: gcc +Requires: ghc-base-devel = %{base_ver}-%{release} +Provides: hsc2hs-%{hsc2hs_ver}-%{release} +%ifarch riscv64 +Requires: clang%{llvm_major} +Requires: llvm%{llvm_major} +%endif + +%description compiler +This package contains the GHC compiler, tools and utilities. + +The GHC libraries are provided by ghc-devel. +To install all of GHC install package ghc. + + +%if %{with help} +%package help +Summary: GHC manual and documentation +License: BSD-3-Clause +Requires: %{name}-compiler = %{version}-%{release} +BuildArch: noarch + +%description help +This package provides the GHC User Guide, Haddock manual and +GHC Haskell libraries documentation. +%endif + +# These are libraries included with GHC compiler. +%global ghc_version_override %{version} +%global ghc_pkg_c_deps ghc-compiler = %{ghc_version_override}-%{release} +#!ForceMultiversion +%ghc_lib_subpackage -d Cabal-3.8.1.0 +%ghc_lib_subpackage -d Cabal-syntax-3.8.1.0 +%ghc_lib_subpackage -d array-0.5.4.0 +%ghc_lib_subpackage -d -c gmp-devel,libffi-devel,elfutils-devel,elfutils-libelf-devel,numactl-devel base-%{base_ver} +%ghc_lib_subpackage -d binary-0.8.9.1 +%ghc_lib_subpackage -d bytestring-0.11.4.0 +%ghc_lib_subpackage -d containers-0.6.7 +%ghc_lib_subpackage -d deepseq-1.4.8.0 +%ghc_lib_subpackage -d directory-1.3.7.1 +%ghc_lib_subpackage -d exceptions-0.10.5 +%ghc_lib_subpackage -d filepath-1.4.2.2 +%ghc_lib_subpackage -d -x ghc-%{ghc_version_override} +%ghc_lib_subpackage -d -x ghc-boot-%{ghc_version_override} +%ghc_lib_subpackage -d ghc-boot-th-%{ghc_version_override} +%ghc_lib_subpackage -d -x ghc-compact-0.1.0.0 +%ghc_lib_subpackage -d -x ghc-heap-%{ghc_version_override} +%ghc_lib_subpackage -d -x ghci-%{ghc_version_override} +%ghc_lib_subpackage -d haskeline-0.8.2 +%ghc_lib_subpackage -d -x hpc-0.6.1.0 +%ghc_lib_subpackage -d -x libiserv-%{ghc_version_override} +%ghc_lib_subpackage -d mtl-2.2.2 +%ghc_lib_subpackage -d parsec-3.1.16.1 +%ghc_lib_subpackage -d pretty-1.1.3.6 +%ghc_lib_subpackage -d process-1.6.16.0 +%ghc_lib_subpackage -d stm-2.5.1.0 +%ghc_lib_subpackage -d template-haskell-2.19.0.0 +%ghc_lib_subpackage -d -c ncurses-devel terminfo-0.4.1.5 +%ghc_lib_subpackage -d text-2.0.2 +%ghc_lib_subpackage -d time-1.12.2 +%ghc_lib_subpackage -d transformers-0.5.6.2 +%ghc_lib_subpackage -d unix-2.7.3 +%ghc_lib_subpackage -d xhtml-3000.2.2.1 + + +%package devel +%{?ghc_packages_list:Requires: %(echo %{ghc_packages_list} | sed -e "s/\([^ ]*\)-\([^ ]*\)/%{name}-\1-devel = \2-%{release},/g")} +Summary: GHC development libraries meta package +Requires: ghc-compiler = %{version}-%{release} +Obsoletes: ghc-libraries < %{version}-%{release} +Provides: ghc-libraries = %{version}-%{release} + +%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. + +%if %{with ghc_prof} +%package prof +Summary: GHC profiling libraries meta package +License: BSD-3-Clause +Requires: %{name}-compiler = %{version}-%{release} + +%description prof +Installing this package causes %{name}-*-prof packages corresponding to +%{name}-*-devel packages to be automatically installed too. +%endif + +%prep +%setup -q +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 + +rm libffi-tarballs/libffi-*.tar.gz + +%build +# for ghc-bootstrap +export PATH=/opt/bin:$PATH +cp %{SOURCE2} ./ +hadrian/bootstrap/bootstrap.py --bootstrap-sources 9_2_3-bootstrap-sources.tar.gz +%global hadrian _build/bin/hadrian + +%ghc_set_gcc_flags + +export CC=%{_bindir}/gcc +export LD=%{_bindir}/ld +export LANG=C.utf8 + +autoupdate + +python3 boot.source --hadrian + +./configure --prefix=%{_prefix} --exec-prefix=%{_exec_prefix} \ + --bindir=%{_bindir} --sbindir=%{_sbindir} --sysconfdir=%{_sysconfdir} \ + --datadir=%{_datadir} --includedir=%{_includedir} --libdir=%{_libdir} \ + --libexecdir=%{_libexecdir} --localstatedir=%{_localstatedir} \ + --sharedstatedir=%{_sharedstatedir} --mandir=%{_mandir} \ + --docdir=%{_docdir}/%{name}-%{version} \ + --with-system-libffi \ +%ifarch %{ghc_unregisterized_arches} + --enable-unregisterised \ +%endif + +%undefine _ghcdynlibdir + +%ifarch %{ghc_llvm_archs} +%global hadrian_llvm +llvm +%endif +%define hadrian_docs %{!?with_help:--docs=no-haddocks} %{!?with_help:--docs=no-sphinx}%{?with_help:--docs=no-sphinx-pdfs --docs=no-sphinx-man} + +%{hadrian} %{?_smp_mflags} --flavour=%{?with_quickbuild:quick+no_profiled_libs}%{!?with_quickbuild:perf%{!?with_ghc_prof:+no_profiled_libs}}%{?hadrian_llvm} %{hadrian_docs} binary-dist-dir + +%install + +( +cd _build/bindist/ghc-%{version}-* +./configure --prefix=%{buildroot}%{ghclibdir} --bindir=%{buildroot}%{_bindir} --libdir=%{buildroot}%{_libdir} --mandir=%{buildroot}%{_mandir} --docdir=%{buildroot}%{_docdir}/%{name}-%{version} +make install +) +mkdir -p %{buildroot}%{_sysconfdir}/ld.so.conf.d +echo "%{ghclibplatform}" > %{buildroot}%{_sysconfdir}/ld.so.conf.d/%{name}.conf +# avoid 'E: binary-or-shlib-defines-rpath' +for i in $(find %{buildroot} -type f -executable -exec sh -c "file {} | grep -q 'dynamically linked'" \; -print); do + chrpath -d $i +done + +# containers src moved to a subdir +cp -p libraries/containers/containers/LICENSE libraries/containers/LICENSE +# hack for Cabal-syntax/LICENSE +mkdir -p libraries/Cabal-syntax +cp -p libraries/Cabal/Cabal-syntax/LICENSE libraries/Cabal-syntax + +rm -f %{name}-*.files + +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 +echo "%%license libraries/$name/LICENSE" >> %{name}-$name.files +done + +echo "%%dir %{ghclibdir}" >> %{name}-base%{?_ghcdynlibdir:-devel}.files + +%ghc_gen_filelists ghc %{ghc_version_override} +%ghc_gen_filelists ghc-boot %{ghc_version_override} +%ghc_gen_filelists ghc-compact %{ghc_compact_ver} +%ghc_gen_filelists ghc-heap %{ghc_version_override} +%ghc_gen_filelists ghci %{ghc_version_override} +%ghc_gen_filelists hpc %{hpc_ver} +%ghc_gen_filelists libiserv %{ghc_version_override} + +%ghc_gen_filelists ghc-bignum 1.3 +%ghc_gen_filelists ghc-prim 0.9.0 +%ghc_gen_filelists integer-gmp 1.1 +%ghc_gen_filelists rts 1.0.2 + +%ghc_merge_filelist ghc-bignum base +%ghc_merge_filelist ghc-prim base +%ghc_merge_filelist integer-gmp base +%ghc_merge_filelist rts base + +for i in %{buildroot}%{ghclibplatform}/libHSrts*ghc%{ghc_version}.so; do + echo $i >> %{name}-base.files +done +echo "%{_sysconfdir}/ld.so.conf.d/%{name}.conf" >> %{name}-base.files + +if [ -f %{buildroot}%{ghcliblib}/package.conf.d/system-cxx-std-lib-1.0.conf ]; then +ls -d %{buildroot}%{ghcliblib}/package.conf.d/system-cxx-std-lib-1.0.conf >> %{name}-base-devel.files +fi + +%if %{with ghc_prof} +ls %{buildroot}%{ghclibdir}/bin/ghc-iserv-prof* >> %{name}-base-prof.files +ls %{buildroot}%{ghclibdir}/lib/bin/ghc-iserv-prof >> %{name}-base-prof.files +echo "%%dir %{ghcliblib}/bin" +%endif + +sed -i -e "s|^%{buildroot}||g" %{name}-base*.files +sed -i -e "s|%{buildroot}||g" %{buildroot}%{_bindir}/* + + +%if %{with help} +rm %{buildroot}%{_docdir}/ghc-%{version}/archives/libraries.html.tar.xz +rm %{buildroot}%{_docdir}/ghc-%{version}/archives/Haddock.html.tar.xz +rm %{buildroot}%{_docdir}/ghc-%{version}/archives/users_guide.html.tar.xz +%endif + + +mkdir -p %{buildroot}%{_mandir}/man1 +install -p -m 0644 %{SOURCE3} %{buildroot}%{_mandir}/man1/ghc-pkg.1 +install -p -m 0644 %{SOURCE4} %{buildroot}%{_mandir}/man1/haddock.1 +install -p -m 0644 %{SOURCE5} %{buildroot}%{_mandir}/man1/runghc.1 + + +rm %{buildroot}%{ghclibdir}/lib/package.conf.d/.stamp +rm %{buildroot}%{ghclibdir}/lib/package.conf.d/*.conf.copy + +( +cd %{buildroot}%{ghclibdir}/lib/bin +for i in *; do +if [ -f %{buildroot}%{ghclibdir}/bin/$i ]; then +ln -sf ../../bin/$i +fi +done +) + +%check +# Simple tests to check the compiler whether actually works +# This comes from the Debian Haskell package. +export LANG=C.utf8 +%if %{with hadrian} +export LD_LIBRARY_PATH=%{buildroot}%{ghclibplatform}: +GHC=%{buildroot}%{ghclibdir}/bin/ghc +%else +GHC=inplace/bin/ghc-stage2 +%endif +rm -rf testghc +mkdir testghc +echo 'main = putStrLn "Foo"' > testghc/foo.hs +$GHC testghc/foo.hs -o testghc/foo +[ "$(testghc/foo)" = "Foo" ] +rm testghc/* +echo 'main = putStrLn "Foo"' > testghc/foo.hs +$GHC testghc/foo.hs -o testghc/foo -O2 +[ "$(testghc/foo)" = "Foo" ] +rm testghc/* +echo 'main = putStrLn "Foo"' > testghc/foo.hs +$GHC testghc/foo.hs -o testghc/foo -dynamic +[ "$(testghc/foo)" = "Foo" ] +rm testghc/* + +$GHC --info + +%ldconfig_scriptlets + +%transfiletriggerin compiler -- %{ghcliblib}/package.conf.d +%ghc_pkg_recache +%end + +%transfiletriggerpostun compiler -- %{ghcliblib}/package.conf.d +%ghc_pkg_recache +%end + +%files +%license LICENSE +%dir %{ghcliblib} +%dir %{ghclibdir} +%dir %{ghcliblib}/%{ghcplatform} + +%files compiler +%license LICENSE +%doc README.md +%{_bindir}/ghc-%{version} +%{_bindir}/ghc-pkg-%{version} +%{_bindir}/ghci-%{version} +%{_bindir}/hp2ps-%{?with_hadrian:ghc-}%{version} +%{_bindir}/hpc-%{?with_hadrian:ghc-}%{version} +%{_bindir}/hsc2hs-%{?with_hadrian:ghc-}%{version} +%{_bindir}/runghc-%{version} +%{_bindir}/runhaskell-%{version} +%{_bindir}/ghc +%{_bindir}/ghc-pkg +%{_bindir}/ghci +%{_bindir}/haddock +%{_bindir}/hp2ps +%{_bindir}/hpc +%{_bindir}/hsc2hs +%{_bindir}/runghc +%{_bindir}/runhaskell +%dir %{ghclibdir}/bin +%dir %{ghcliblib}/bin +%{ghclibdir}/bin/ghc +%{ghclibdir}/bin/ghc-iserv +%{ghclibdir}/bin/ghc-iserv-dyn +%{ghclibdir}/bin/ghc-pkg +%{ghclibdir}/bin/hpc +%{ghclibdir}/bin/hsc2hs +%{ghclibdir}/bin/runghc +%{ghclibdir}/bin/hp2ps +%{ghclibdir}/bin/unlit +%{ghclibdir}/bin/ghc-%{version} +%{ghclibdir}/bin/ghc-iserv-ghc-%{version} +%{ghclibdir}/bin/ghc-iserv-dyn-ghc-%{version} +%{ghclibdir}/bin/ghc-pkg-%{version} +%{ghclibdir}/bin/haddock +%{ghclibdir}/bin/haddock-ghc-%{version} +%{ghclibdir}/bin/hp2ps-ghc-%{version} +%{ghclibdir}/bin/hpc-ghc-%{version} +%{ghclibdir}/bin/hsc2hs-ghc-%{version} +%{ghclibdir}/bin/runghc-%{version} +%{ghclibdir}/bin/runhaskell +%{ghclibdir}/bin/runhaskell-%{version} +%{ghclibdir}/bin/unlit-ghc-%{version} +%{ghclibdir}/lib/bin/ghc-iserv +%{ghclibdir}/lib/bin/ghc-iserv-dyn +%{ghclibdir}/lib/bin/unlit +%{ghcliblib}/ghc-usage.txt +%{ghcliblib}/ghci-usage.txt +%{ghcliblib}/llvm-passes +%{ghcliblib}/llvm-targets +%dir %{ghcliblib}/package.conf.d +%ghost %{ghcliblib}/package.conf.d/package.cache +%{ghcliblib}/package.conf.d/package.cache.lock +%{ghcliblib}/settings +%{ghcliblib}/template-hsc.h +%{_mandir}/man1/ghc-pkg.1* +%{_mandir}/man1/haddock.1* +%{_mandir}/man1/runghc.1* +%{_bindir}/haddock-ghc-%{version} +%{ghcliblib}/html +%{ghcliblib}/latex +%if %{with help} +%{ghc_html_libraries_dir}/prologue.txt +%verify(not size mtime) %{ghc_html_libraries_dir}/haddock-bundle.min.js +%verify(not size mtime) %{ghc_html_libraries_dir}/linuwial.css +%verify(not size mtime) %{ghc_html_libraries_dir}/quick-jump.css +%verify(not size mtime) %{ghc_html_libraries_dir}/synopsis.png +%if %{without hadrian} +%{_mandir}/man1/ghc.1* +%endif +%endif + + +%files devel + +%if %{with help} +%files help +%{ghc_html_dir}/index.html +%{ghc_html_libraries_dir}/gen_contents_index +%verify(not size mtime) %{ghc_html_libraries_dir}/doc-index*.html +%verify(not size mtime) %{ghc_html_libraries_dir}/index*.html +%dir %_ghc_doc_dir +%dir %ghc_html_dir +%dir %ghc_html_libraries_dir +%{ghc_html_dir}/users_guide +%{ghc_html_dir}/Haddock +%endif + +%if %{with ghc_prof} +%files prof +%endif + +%changelog +* Tue Jul 25 2023 Lin Runze <lrzlin@163.com> 9.4.5-1 +- Initial packaging (Version 9.4.5) 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 <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: 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 <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. + @@ -0,0 +1,2 @@ +d09600a4ea75eaa3e5c8927af8eb35a7 9_2_3-bootstrap-sources.tar.gz +64322f3b4f31ca4376e9dc4593788306 ghc-9.4.5-src.tar.xz |