summaryrefslogtreecommitdiff
path: root/ghc-bootstrap-binary.spec
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-11-14 05:13:47 +0000
committerCoprDistGit <infra@openeuler.org>2023-11-14 05:13:47 +0000
commitc649017a9ff9dbfaccf4c6b4ae5f479a8b1815ed (patch)
tree27fd66502cde3b2e680988e79030658993bbecae /ghc-bootstrap-binary.spec
parenta57b627f868872f4122a13a35d18996a3916e2a6 (diff)
automatic import of ghc-bootstrap-binary
Diffstat (limited to 'ghc-bootstrap-binary.spec')
-rw-r--r--ghc-bootstrap-binary.spec128
1 files changed, 128 insertions, 0 deletions
diff --git a/ghc-bootstrap-binary.spec b/ghc-bootstrap-binary.spec
new file mode 100644
index 0000000..a09fb07
--- /dev/null
+++ b/ghc-bootstrap-binary.spec
@@ -0,0 +1,128 @@
+%define alex_ver 3.4.0.0
+%define happy_ver 1.20.0
+%define ghc_ver 9.2.3
+%global debug_package %{nil}
+
+Name: ghc-bootstrap-binary
+Version: 1.0.0
+Release: 1
+Summary: Binary distributions of The Glorious Glasgow Haskell Compiler and source code of Alex & Happy
+License: BSD-3-Clause
+URL: https://gitee.com/src-openeuler/ghc-bootstrap
+Source0: LICENSE
+Source1: ghc-9.2.3-x86_64-unknown-linux.tar.xz
+Source2: ghc-9.2.3-aarch64-unknown-linux.tar.xz
+Source3: alex-%{alex_ver}.tar.gz
+Source4: happy-%{happy_ver}.tar.gz
+
+BuildRequires: chrpath
+BuildRequires: fdupes
+BuildRequires: gmp-devel
+BuildRequires: libffi
+BuildRequires: libatomic
+BuildRequires: ncurses-libs
+BuildRequires: pkgconfig
+BuildRequires: pkgconfig(libffi)
+BuildRequires: numactl-devel
+Requires: gmp-devel
+Requires: libffi
+Requires: libatomic
+Requires: ncurses-libs
+Requires: pkgconfig(libffi)
+Requires: numactl-devel
+Requires: libffi-devel
+
+Conflicts: ghc-base
+Conflicts: alex
+Conflicts: happy
+
+Provides: ghc-bootstrap-devel
+ExclusiveArch: x86_64 aarch64
+AutoReq: off
+
+%description
+This package contains a binary distribution of The Glorious Glasgow
+Haskell Compilation System.
+
+The tarballs come from the ghc download page.
+This package is only used for bootstraping ghc.
+
+Do not install this package! Install 'ghc' instead.
+
+%prep
+cp %{SOURCE0} .
+cp %{SOURCE1} .
+cp %{SOURCE2} .
+cp %{SOURCE3} .
+cp %{SOURCE4} .
+
+%ifarch aarch64
+%define longarch aarch64
+%define arch aarch64
+%endif
+%ifarch x86_64
+%define longarch x86_64
+%define sysname unknown
+%define arch x86_64
+%endif
+%ifarch x86_64 aarch64
+%define sysname unknown
+%endif
+
+%build
+tar Jxf ghc-%{ghc_ver}-%{longarch}-%{sysname}-linux.tar.xz
+tar xf alex-%{alex_ver}.tar.gz
+tar xf happy-%{happy_ver}.tar.gz
+
+%install
+cd ghc-%{ghc_ver}-%{longarch}-%{sysname}-linux
+
+./configure --prefix=/opt
+mkdir -p %{buildroot}%{_sysconfdir}/ld.so.conf.d
+echo "/opt/lib/ghc-%{ghc_ver}/lib/%{arch}-linux-ghc-%{ghc_ver}" > %{buildroot}%{_sysconfdir}/ld.so.conf.d/ghc.conf
+%make_install
+for i in $(find %{buildroot} -type f -executable -exec sh -c "file {} | grep -q 'dynamically linked'" \; -print); do
+ chrpath -d $i
+done
+
+rm %{buildroot}/opt/lib/ghc-%{ghc_ver}/lib/package.conf.d/.stamp
+(cd %{buildroot}/opt/lib/ghc-%{ghc_ver}/lib/package.conf.d/
+for i in *.conf; do
+ mv $i.copy $i
+done
+)
+
+cd ..
+export PATH=/opt/bin:$PATH
+pushd alex-%{alex_ver}
+ghc Setup.hs -o cabal
+./cabal configure --prefix=%{_prefix}
+./cabal build
+./cabal copy --destdir=%{buildroot}
+popd
+
+pushd happy-%{happy_ver}
+ghc Setup.hs -o cabal
+./cabal configure --prefix=%{_prefix}
+./cabal build
+./cabal copy --destdir=%{buildroot}
+popd
+
+%post
+/sbin/ldconfig
+/opt/bin/ghc-pkg recache
+
+%postun -p /sbin/ldconfig
+
+%files
+%license LICENSE
+/opt/*
+%config %{_sysconfdir}/ld.so.conf.d/ghc.conf
+%{_bindir}/alex
+%{_bindir}/happy
+%{_datadir}/*ghc*
+%{_datadir}/doc/*ghc*
+
+%changelog
+* Mon Nov 13 2023 Lin Runze <lrzlin@163.com> - 1.0.0-1
+- Initial packaging. (Version 1.0.0)