%global _trivial .0 %global _buildid .1 %global ghc_bootstrap_version 9.6.6 %global cabal_bootstrap_version 3.12.1.0 AutoReq: no AutoProv: no Name: ghc-cabal-prebuilt Version: %{ghc_bootstrap_version} Release: 1%{dist}%{?_trivial}%{?_buildid} Summary: The Glasgow Haskell Compiler License: BSD-3-Clause AND HaskellReport URL: https://www.haskell.org/ghc/ # GHC binaries Source1: https://downloads.haskell.org/~ghc/%{ghc_bootstrap_version}/ghc-%{ghc_bootstrap_version}-aarch64-deb10-linux.tar.xz Source2: https://downloads.haskell.org/~ghc/%{ghc_bootstrap_version}/ghc-%{ghc_bootstrap_version}-x86_64-fedora33-linux.tar.xz # Cabal binaries Source3: https://downloads.haskell.org/~cabal/cabal-install-%{cabal_bootstrap_version}/cabal-install-%{cabal_bootstrap_version}-aarch64-linux-deb10.tar.xz Source4: https://downloads.haskell.org/~cabal/cabal-install-%{cabal_bootstrap_version}/cabal-install-%{cabal_bootstrap_version}-x86_64-linux-fedora33.tar.xz # Use debian libtinfo.so.6 instead for ghc bootstrap, aarch64 only Source5: debian_aarch64_libtinfo.tar.gz %if %{?amzn} == 2023 BuildRequires: gcc14 BuildRequires: gcc14-c++ %global toolchain gcc14 %else BuildRequires: gcc BuildRequires: gcc-c++ %endif BuildRequires: make BuildRequires: libtool BuildRequires: autoconf BuildRequires: automake BuildRequires: python3 ExclusiveArch: aarch64 x86_64 %global __requires_exclude ^libtinfo\\.so\\.6\\(NCURSES6_TINFO_5\\.0\\.19991023\\)\\(64bit\\)$ %description The Glasgow Haskell Compiler is a state-of-the-art, open source, compiler for the functional programming language Haskell. %prep %build # Extract GHC and Cabal based on architecture mkdir -p %{_builddir}/usr/local/ghc/{bin,lib,share} %ifarch aarch64 tar xf %{SOURCE1} pushd ghc-%{ghc_bootstrap_version}-%{_arch}-unknown-linux ./configure --prefix=%{_builddir}/usr/local/ghc export LD_LIBRARY_PATH=./lib/%{_arch}-linux-ghc-%{ghc_bootstrap_version}:$LD_LIBRARY_PATH make install tar xf %{SOURCE3} cp cabal %{_builddir}/usr/local/ghc/bin/ tar xf %{SOURCE5} cp libtinfo.so.6 %{_builddir}/usr/local/ghc/lib/libtinfo.so.6 popd %endif %ifarch x86_64 tar xf %{SOURCE2} pushd ghc-%{ghc_bootstrap_version}-%{_arch}-unknown-linux ./configure --prefix=%{_builddir}/usr/local/ghc export LD_LIBRARY_PATH=./lib/%{_arch}-linux-ghc-%{ghc_bootstrap_version}:$LD_LIBRARY_PATH make install tar xf %{SOURCE4} cp cabal %{_builddir}/usr/local/ghc/bin/ popd %endif %install # Add our local GHC and Cabal to PATH export PATH=%{_builddir}/usr/local/ghc/bin:$PATH which ghc which cabal mkdir -p %{buildroot}/usr/local/ghc cp -a %{_builddir}/usr/local/ghc/* %{buildroot}/usr/local/ghc/ find %{buildroot}/usr/local/ghc/bin -type f | while read ghcscript do (file $ghcscript | grep -Ei "ASCII|text") || continue sed -i 's|/builddir/build/BUILD||g' $ghcscript || : sed -i '/^exec / i export LD_LIBRARY_PATH=/usr/local/ghc/lib:$LD_LIBRARY_PATH' $ghcscript || : done mkdir -p %{buildroot}/usr/bin cp %{buildroot}/usr/local/ghc/bin/cabal %{buildroot}/usr/bin/cabal cp %{buildroot}/usr/local/ghc/bin/ghc %{buildroot}/usr/bin/ghc cp %{buildroot}/usr/local/ghc/bin/ghc-9.6.6 %{buildroot}/usr/bin/ghc-9.6.6 cp %{buildroot}/usr/local/ghc/bin/ghc-pkg %{buildroot}/usr/bin/ghc-pkg cp %{buildroot}/usr/local/ghc/bin/ghc-pkg-9.6.6 %{buildroot}/usr/bin/ghc-pkg-9.6.6 cp %{buildroot}/usr/local/ghc/bin/ghci %{buildroot}/usr/bin/ghci cp %{buildroot}/usr/local/ghc/bin/ghci-9.6.6 %{buildroot}/usr/bin/ghci-9.6.6 cp %{buildroot}/usr/local/ghc/bin/haddock %{buildroot}/usr/bin/haddock cp %{buildroot}/usr/local/ghc/bin/haddock-ghc-9.6.6 %{buildroot}/usr/bin/haddock-ghc-9.6.6 cp %{buildroot}/usr/local/ghc/bin/hp2ps %{buildroot}/usr/bin/hp2ps cp %{buildroot}/usr/local/ghc/bin/hp2ps-ghc-9.6.6 %{buildroot}/usr/bin/hp2ps-ghc-9.6.6 cp %{buildroot}/usr/local/ghc/bin/hpc %{buildroot}/usr/bin/hpc cp %{buildroot}/usr/local/ghc/bin/hpc-ghc-9.6.6 %{buildroot}/usr/bin/hpc-ghc-9.6.6 cp %{buildroot}/usr/local/ghc/bin/hsc2hs %{buildroot}/usr/bin/hsc2hs cp %{buildroot}/usr/local/ghc/bin/hsc2hs-ghc-9.6.6 %{buildroot}/usr/bin/hsc2hs-ghc-9.6.6 cp %{buildroot}/usr/local/ghc/bin/runghc %{buildroot}/usr/bin/runghc cp %{buildroot}/usr/local/ghc/bin/runghc-9.6.6 %{buildroot}/usr/bin/runghc-9.6.6 cp %{buildroot}/usr/local/ghc/bin/runhaskell %{buildroot}/usr/bin/runhaskell cp %{buildroot}/usr/local/ghc/bin/runhaskell-9.6.6 %{buildroot}/usr/bin/runhaskell-9.6.6 %files %dir /usr/local/ghc %dir /usr/local/ghc/lib %dir /usr/local/ghc/share /usr/local/ghc/lib/* /usr/local/ghc/share/* /usr/local/ghc/bin/cabal /usr/local/ghc/bin/ghc /usr/local/ghc/bin/ghc-9.6.6 /usr/local/ghc/bin/ghc-pkg /usr/local/ghc/bin/ghc-pkg-9.6.6 /usr/local/ghc/bin/ghci /usr/local/ghc/bin/ghci-9.6.6 /usr/local/ghc/bin/haddock /usr/local/ghc/bin/haddock-ghc-9.6.6 /usr/local/ghc/bin/hp2ps /usr/local/ghc/bin/hp2ps-ghc-9.6.6 /usr/local/ghc/bin/hpc /usr/local/ghc/bin/hpc-ghc-9.6.6 /usr/local/ghc/bin/hsc2hs /usr/local/ghc/bin/hsc2hs-ghc-9.6.6 /usr/local/ghc/bin/runghc /usr/local/ghc/bin/runghc-9.6.6 /usr/local/ghc/bin/runhaskell /usr/local/ghc/bin/runhaskell-9.6.6 %{_bindir}/cabal %{_bindir}/ghc %{_bindir}/ghc-9.6.6 %{_bindir}/ghc-pkg %{_bindir}/ghc-pkg-9.6.6 %{_bindir}/ghci %{_bindir}/ghci-9.6.6 %{_bindir}/haddock %{_bindir}/haddock-ghc-9.6.6 %{_bindir}/hp2ps %{_bindir}/hp2ps-ghc-9.6.6 %{_bindir}/hpc %{_bindir}/hpc-ghc-9.6.6 %{_bindir}/hsc2hs %{_bindir}/hsc2hs-ghc-9.6.6 %{_bindir}/runghc %{_bindir}/runghc-9.6.6 %{_bindir}/runhaskell %{_bindir}/runhaskell-9.6.6 %changelog * Fri Mar 21 2025 Yonghang Wang - 9.6.6-1 - Package bootstrap binary as build helper