Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:15.0:Ports
ghc
ghc.spec
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File ghc.spec of Package ghc
# # spec file for package ghc # # Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via http://bugs.opensuse.org/ # %if 0%{?suse_version} == 1315 && !0%{?is_opensuse} %define without_manual 1 %endif %global unregisterised_archs aarch64 s390 s390x Name: ghc Version: 8.0.2 Release: 0 Url: http://haskell.org/ghc/dist/%{version}/%{name}-%{version}-src.tar.xz Summary: The Glorious Glasgow Haskell Compiler License: BSD-3-Clause Group: Development/Languages/Other ExclusiveArch: aarch64 %{ix86} x86_64 ppc ppc64 ppc64le s390 s390x # hard to port to PIE, some prebuilt static libraries are non-PIC ... #!BuildIgnore: gcc-PIE BuildRequires: binutils-devel BuildRequires: gcc BuildRequires: ghc-bootstrap >= 7.8 BuildRequires: ghc-rpm-macros-extra BuildRequires: glibc-devel BuildRequires: gmp-devel BuildRequires: libdw-devel BuildRequires: libelf-devel #Fix for openSUSE:Leap:42.1 %if 0%{?suse_version} == 1315 BuildRequires: libffi48-devel %else BuildRequires: libffi-devel %endif %ifarch aarch64 BuildRequires: binutils-gold %endif #TODO ghc-8.0.1 supports only llvm-3.7, need talk with llvm packagers about # versioned build of llvm # Currently, there is no llvm support for powerpc* in GHC. # Aarch64 has unregisterised LLVM backend, we need llvm 3.7.x #%%ifarch aarch64 %{ix86} x86_64 #BuildRequires: llvm #%%endif BuildRequires: ncurses-devel BuildRequires: pkg-config BuildRequires: xz %if %{undefined without_manual} BuildRequires: python-sphinx %endif PreReq: update-alternatives Requires: ghc-compiler = %{version}-%{release} Requires: ghc-ghc-devel = %{version}-%{release} Requires: ghc-libraries = %{version}-%{release} Source: http://haskell.org/ghc/dist/%{version}/%{name}-%{version}-src.tar.xz Source1: ghc-rpmlintrc # PATCH-FIX_UPSTREAM 0001-StgCmmPrim-Add-missing-write-barrier.patch peter.trommler@ohm-hochschule.de -- Add missing write barrier on mutable arrays. Patch28: 0001-StgCmmPrim-Add-missing-write-barrier.patch # PATCH-FIX_UPSTREAM ghc-no-madv-free.patch peter.trommler@ohn-hochschule.de -- Fix "unable to decommit memory: Invalid argument" errors. See Haskell Trac #12865 for details. Patch29: ghc-no-madv-free.patch # PATCH-FIX-UPSTREAM 0001-PPC-CodeGen-fix-lwa-instruction-generation.patch peter.trommler@ohm-hochschule.de -- Fix PPC codegen: Fixes ghc-zeromq4-haskell build on 64-bit PowerPCs Patch30: 0001-PPC-CodeGen-fix-lwa-instruction-generation.patch Patch31: ghc-pie.patch # PATCH-FIX-UPSTREAM 0001-PPC-Implement-Atomic-operations.patch ptrommler@icloud.com -- Inline atomic operations for PowerPC. Patch32: 0001-PPC-Implement-Atomic-operations.patch # PATCH-FIX-UPSTREAM 0001-Use-__atomic-intrinsics-for-atomicread-write.patch ptrommler@icloud.com -- Fix atomic read and atomic write on platforms that have no native code generator nor LLVM backend. This is s390x for openSUSE. See Haskell Trac #14244. Patch33: 0001-Use-__atomic-intrinsics-for-atomicread-write.patch # PATCH-FIX-UPSTREAM D4089.patch ptrommler@icloud.com -- Fix GHCi on ppc64. See Haskell Trac #11262 Patch34: D4089.patch # PATCH-FIX-OPENSUSE ghc-8.0.2-Cabal-dynlibdir.patch -- Fix shared library directory location. Patch100: ghc-8.0.2-Cabal-dynlibdir.patch # PATCH-FIX-UPSTREAM buildpath-abi-stability.patch -- debian patch for more stable abi-1 Patch110: buildpath-abi-stability.patch # PATCH-FIX-UPSTREAM reproducible-tmp-names.patch -- debian patch for more stable abi-2 Patch111: reproducible-tmp-names.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build %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 Group: Development/Languages/Other Requires: gcc Requires: ghc-base-devel Requires(post): update-alternatives Requires(postun): update-alternatives %ifarch aarch64 Requires: binutils-gold %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. %global ghc_version_override %{version} %global ghc_pkg_c_deps ghc-compiler = %{ghc_version_override}-%{release} %if %{defined ghclibdir} %ghc_lib_subpackage -d Cabal-1.24.2.0 %ghc_lib_subpackage -d array-0.5.1.1 %ghc_lib_subpackage -d -c gmp-devel,libffi-devel,libdw-devel,libelf-devel base-4.9.1.0 %ghc_lib_subpackage -d binary-0.8.3.0 %ghc_lib_subpackage -d bytestring-0.10.8.1 %ghc_lib_subpackage -d containers-0.5.7.1 %ghc_lib_subpackage -d deepseq-1.4.2.0 %ghc_lib_subpackage -d directory-1.3.0.0 %ghc_lib_subpackage -d filepath-1.4.1.1 %ghc_lib_subpackage -d -x ghc-%{ghc_version_override} %ghc_lib_subpackage -d ghc-boot-%{ghc_version_override} %ghc_lib_subpackage -d ghc-boot-th-%{ghc_version_override} %ghc_lib_subpackage -d -x ghci-%{ghc_version_override} %ghc_lib_subpackage -d haskeline-0.7.3.0 %ghc_lib_subpackage -d hoopl-3.10.2.1 %ghc_lib_subpackage -d hpc-0.6.0.3 %ghc_lib_subpackage -d pretty-1.1.3.3 %ghc_lib_subpackage -d process-1.4.3.0 %ghc_lib_subpackage -d template-haskell-2.11.1.0 %ghc_lib_subpackage -d -c ncurses-devel terminfo-0.4.0.2 %ghc_lib_subpackage -d time-1.6.0.1 %ghc_lib_subpackage -d transformers-0.5.2.0 %ghc_lib_subpackage -d unix-2.7.2.1 %ghc_lib_subpackage -d xhtml-3000.2.1 %endif %global version %{ghc_version_override} %package libraries Summary: GHC development libraries meta package Group: Development/Libraries/Other Requires: ghc-compiler = %{version}-%{release} Obsoletes: ghc-devel < %{version}-%{release} Provides: ghc-devel = %{version}-%{release} Obsoletes: ghc-prof < %{version}-%{release} Provides: ghc-prof = %{version}-%{release} %{?ghc_packages_list:Requires: %(echo %{ghc_packages_list} | sed -e "s/\([^ ]*\)-\([^ ]*\)/ghc-\1-devel = \2-%{release},/g")} %description libraries This is a meta-package for all the development library packages in GHC except the ghc library, which is installed by the toplevel ghc metapackage. %prep %setup -q %patch28 -p1 %patch29 -p1 %patch30 -p1 %patch31 -p1 %patch32 -p1 %patch33 -p1 %patch34 -p1 %patch100 -p1 %patch110 -p1 %patch111 -p1 %build # Check if bootstrap is required, i.e. version is different from ghc's version # Note: Cannot use ghc_version macro here as we defined version override earlier %if "%version" != "%(ghc --numeric-version)" %define ghc_boot 1 cat > mk/build.mk <<EOF GhcLibWays = v %{!?ghc_without_shared:dyn} %if %{defined ghc_without_shared} DYNAMIC_BY_DEFAULT = NO DYNAMIC_GHC_PROGRAMS = NO %endif %ifarch %{unregisterised_archs} GhcUnregisterised = YES GhcWithNativeCodeGen = NO GhcWithInterpreter = YES SRC_HC_OPTS = -O -H64m GhcStage1HcOpts = -O GhcStage2HcOpts = -O GhcHcOpts = -Rghc-timing GhcLibHcOpts = -O SRC_HC_OPTS += -optc-fno-builtin SRC_CC_OPTS += -fno-builtin %endif HADDOCK_DOCS = NO BUILD_SPHINX_HTML = NO BUILD_SPHINX_PS = NO BUILD_SPHINX_PDF = NO HSCOLOUR_SRCS = NO EOF ./configure --prefix=%{_builddir}/ghc-boot --with-system-libffi %ifnarch aarch64 s390 s390x make %{?_smp_mflags} %else make -j 2 %endif make install make clean %endif cat > mk/build.mk <<EOF %ifnarch %{unregisterised_archs} BuildFlavour = perf %endif EOF # BuildFlavours are defined in mk/build.mk.sample cat mk/build.mk.sample >> mk/build.mk # override some settings cat >> mk/build.mk << EOF GhcLibWays = v %{!?ghc_without_shared:dyn} %{!?without_prof:p} %if %{defined ghc_without_shared} DYNAMIC_BY_DEFAULT = NO DYNAMIC_GHC_PROGRAMS = NO %endif %ifarch %{unregisterised_archs} GhcUnregisterised = YES GhcWithNativeCodeGen = NO SRC_HC_OPTS = -O -H64m GhcStage1HcOpts = -O GhcStage2HcOpts = -O GhcHcOpts = -Rghc-timing GhcLibHcOpts = -O SRC_HC_OPTS += -optc-fno-builtin -optc-Wno-return-type SRC_CC_OPTS += -fno-builtin -Wno-return-type %endif %if %{defined without_haddock} HADDOCK_DOCS = NO %endif BUILD_SPHINX_PS = NO %if %{defined without_manual} BUILD_SPHINX_HTML = NO BUILD_SPHINX_PDF = NO %endif %if %{defined without_hscolour} HSCOLOUR_SRCS = NO %endif EOF export CFLAGS="${CFLAGS:-%optflags}" ./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} \ %{?ghc_boot:--with-ghc=%{_builddir}/ghc-boot/bin/ghc} \ --with-system-libffi %ifnarch aarch64 s390 s390x make %{?_smp_mflags} %else make -j 2 %endif %install #%%ghc_suse_disable_debug_packages %makeinstall 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 "%doc libraries/$name/LICENSE" >> ghc-$name.files done # ghc-base should own ghclibdir echo "%dir %{ghclibdir}" >> ghc-base.files %ghc_gen_filelists ghc %{ghc_version_override} %ghc_gen_filelists ghci %{ghc_version_override} %ghc_gen_filelists ghc-prim 0.5.0.0 %ghc_gen_filelists integer-gmp 1.0.0.1 %define merge_filelist()\ cat ghc-%1.files >> ghc-%2.files\ cat ghc-%1-devel.files >> ghc-%2-devel.files\ cp -p libraries/%1/LICENSE libraries/LICENSE.%1\ echo "%doc libraries/LICENSE.%1" >> ghc-%2.files %merge_filelist integer-gmp base %merge_filelist ghc-prim base %if %{undefined ghc_without_shared} echo %%dir %{ghclibdir}/rts >> ghc-base.files ls %{buildroot}%{ghclibdir}/rts/libHS*.so >> ghc-base.files sed -i -e "s|^%{buildroot}||g" ghc-base.files %endif echo %%dir %{ghclibdir}/rts >> ghc-base-devel.files ls -d %{buildroot}%{ghclibdir}/rts/libHS*.a %{buildroot}%{ghclibdir}/package.conf.d/rts.conf %{buildroot}%{ghclibdir}/include >> ghc-base-devel.files sed -i -e "s|^%{buildroot}||g" ghc-base-devel.files # these are handled as alternatives mkdir -p %{buildroot}%{_sysconfdir}/alternatives for i in hsc2hs runhaskell; do if [ -x %{buildroot}%{_bindir}/$i-ghc ]; then rm %{buildroot}%{_bindir}/$i else mv %{buildroot}%{_bindir}/$i{,-ghc} fi ln -s -f %{_sysconfdir}/alternatives/$i %{buildroot}%{_bindir}/$i touch %{buildroot}%{_sysconfdir}/alternatives/$i done %ghc_strip_dynlinked find %{buildroot}%{ghclibdocdir} -name LICENSE -exec rm '{}' ';' %check # Actually, I took this from Jens Petersen's Fedora package # stolen from ghc6/debian/rules: # Do some very simple tests that the compiler actually works rm -rf testghc mkdir testghc echo 'main = putStrLn "Foo"' > testghc/foo.hs inplace/bin/ghc-stage2 testghc/foo.hs -o testghc/foo [ "$(testghc/foo)" = "Foo" ] # doesn't seem to work inplace: #[ "$(inplace/bin/runghc testghc/foo.hs)" = "Foo" ] rm testghc/* echo 'main = putStrLn "Foo"' > testghc/foo.hs inplace/bin/ghc-stage2 testghc/foo.hs -o testghc/foo -O2 [ "$(testghc/foo)" = "Foo" ] rm testghc/* %if %{undefined ghc_without_shared} echo 'main = putStrLn "Foo"' > testghc/foo.hs #inplace/bin/ghc-stage2 testghc/foo.hs -o testghc/foo -dynamic #[ "$(testghc/foo)" = "Foo" ] rm testghc/* %endif %post compiler # Alas, GHC, Hugs and nhc all come with different set of tools in addition to # a runFOO: # # * GHC: hsc2hs # * Hugs: hsc2hs, cpphs # * nhc: cpphs # # Therefore it is currently not possible to use --slave below to form link # groups under a single name 'runhaskell'. Either these tools should be # disentangled from the Haskell implementations or all implementations should # have the same set of tools. *sigh* %{_sbindir}/update-alternatives --install %{_bindir}/runhaskell runhaskell %{_bindir}/runghc 500 %{_sbindir}/update-alternatives --install %{_bindir}/hsc2hs hsc2hs %{_bindir}/hsc2hs-ghc 500 %preun compiler if test "$1" = 0; then %{_sbindir}/update-alternatives --remove runhaskell %{_bindir}/runghc %{_sbindir}/update-alternatives --remove hsc2hs %{_bindir}/hsc2hs-ghc fi %files %defattr(-,root,root,-) %doc LICENSE %files compiler %defattr(-,root,root,-) %doc ANNOUNCE LICENSE %{_bindir}/ghc %{_bindir}/ghc-%{version} %{_bindir}/ghc-pkg %{_bindir}/ghc-pkg-%{version} %{_bindir}/ghci %{_bindir}/ghci-%{version} %{_bindir}/hp2ps %{_bindir}/hpc %{_bindir}/hsc2hs %ghost %{_sysconfdir}/alternatives/hsc2hs %{_bindir}/hsc2hs-ghc %{_bindir}/runghc %{_bindir}/runghc-%{version} %{_bindir}/runhaskell %ghost %{_sysconfdir}/alternatives/runhaskell %{_bindir}/runhaskell-ghc %dir %{ghclibdir} %{ghclibdir}/settings %dir %{ghclibdir}/bin %{ghclibdir}/bin/ghc %{ghclibdir}/bin/ghc-pkg %{ghclibdir}/bin/ghc-iserv %{ghclibdir}/bin/ghc-iserv-dyn %{ghclibdir}/bin/ghc-iserv-prof %{ghclibdir}/bin/hpc %{ghclibdir}/bin/hsc2hs %ifnarch %{unregisterised_archs} %{ghclibdir}/bin/ghc-split %endif %{ghclibdir}/ghc-usage.txt %{ghclibdir}/ghci-usage.txt %dir %{ghclibdir}/package.conf.d %ghost %{ghclibdir}/package.conf.d/package.cache %{ghclibdir}/platformConstants %{ghclibdir}/bin/runghc %{ghclibdir}/template-hsc.h %{ghclibdir}/bin/unlit %dir %{_datadir}/doc/ghc-%{version} %dir %{ghcdocbasedir} %dir %{ghcdocbasedir}/libraries %if %{undefined without_manual} %{_mandir}/man1/ghc.* %endif %if %{undefined without_haddock} %{_bindir}/haddock %{_bindir}/haddock-ghc-%{version} %{ghclibdir}/html %{ghclibdir}/latex %{ghclibdir}/bin/haddock %if %{undefined without_manual} %{ghcdocbasedir}/haddock %{ghcdocbasedir}/users_guide %endif %{ghcdocbasedir}/libraries/gen_contents_index %{ghcdocbasedir}/libraries/hslogo-16.png %{ghcdocbasedir}/libraries/ocean.css %{ghcdocbasedir}/libraries/prologue.txt %{ghcdocbasedir}/libraries/synopsis.png %{ghcdocbasedir}/index.html %ghost %{ghcdocbasedir}/libraries/doc-index*.html %ghost %{ghcdocbasedir}/libraries/haddock-util.js %ghost %{ghcdocbasedir}/libraries/index*.html %ghost %{ghcdocbasedir}/libraries/minus.gif %ghost %{ghcdocbasedir}/libraries/plus.gif %endif %files libraries %defattr(-,root,root,-) %doc LICENSE %changelog
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor