File ghc-aeson-pretty.spec of Package ghc-aeson-pretty
#
# spec file for package ghc-aeson-pretty
#
# Copyright (c) 2025 SUSE LLC
#
# 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 https://bugs.opensuse.org/
#
%global pkg_name aeson-pretty
%global pkgver %{pkg_name}-%{version}
Name:           ghc-%{pkg_name}
Version:        0.8.10
Release:        1.1
Summary:        JSON pretty-printing library and command-line tool
License:        BSD-3-Clause
URL:            https://hackage.haskell.org/package/%{pkg_name}
Source0:        https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{version}.tar.gz
BuildRequires:  chrpath
BuildRequires:  ghc-Cabal-devel
BuildRequires:  ghc-aeson-devel
BuildRequires:  ghc-aeson-prof
BuildRequires:  ghc-attoparsec-aeson-devel
BuildRequires:  ghc-attoparsec-aeson-prof
BuildRequires:  ghc-attoparsec-devel
BuildRequires:  ghc-attoparsec-prof
BuildRequires:  ghc-base-compat-devel
BuildRequires:  ghc-base-compat-prof
BuildRequires:  ghc-base-devel
BuildRequires:  ghc-base-prof
BuildRequires:  ghc-bytestring-devel
BuildRequires:  ghc-bytestring-prof
BuildRequires:  ghc-cmdargs-devel
BuildRequires:  ghc-cmdargs-prof
BuildRequires:  ghc-rpm-macros
BuildRequires:  ghc-scientific-devel
BuildRequires:  ghc-scientific-prof
BuildRequires:  ghc-text-devel
BuildRequires:  ghc-text-prof
BuildRequires:  ghc-unordered-containers-devel
BuildRequires:  ghc-unordered-containers-prof
BuildRequires:  ghc-vector-devel
BuildRequires:  ghc-vector-prof
ExcludeArch:    %{ix86}
%description
A JSON pretty-printing library compatible with aeson as well as a command-line
tool to improve readabilty of streams of JSON data.
The /library/ provides the function "encodePretty". It is a drop-in replacement
for aeson\'s "encode" function, producing JSON-ByteStrings for human readers.
The /command-line tool/ reads JSON from stdin and writes prettified JSON to
stdout. It also offers a complementary "compact"-mode, essentially the opposite
of pretty-printing. If you specify \'-flib-only\' like this
> cabal install -flib-only aeson-pretty
the command-line tool will NOT be installed.
%package devel
Summary:        Haskell %{pkg_name} library development files
Requires:       %{name} = %{version}-%{release}
Requires:       ghc-compiler = %{ghc_version}
Requires(post): ghc-compiler = %{ghc_version}
Requires(postun): ghc-compiler = %{ghc_version}
%description devel
This package provides the Haskell %{pkg_name} library development files.
%package -n ghc-%{pkg_name}-doc
Summary:        Haskell %{pkg_name} library documentation
Requires:       ghc-filesystem
BuildArch:      noarch
%description -n ghc-%{pkg_name}-doc
This package provides the Haskell %{pkg_name} library documentation.
%package -n ghc-%{pkg_name}-prof
Summary:        Haskell %{pkg_name} profiling library
Requires:       ghc-%{pkg_name}-devel = %{version}-%{release}
Supplements:    (ghc-%{pkg_name}-devel and ghc-prof)
%description -n ghc-%{pkg_name}-prof
This package provides the Haskell %{pkg_name} profiling library.
%prep
%autosetup -n %{pkg_name}-%{version}
%build
%define cabal_configure_options -f+lib-only
# Workaround: older ghc (e.g. 9.10.2) may not recognize -fobject-determinism.
# Create a small ghc wrapper that filters out that unsupported flag and
# prepend it to PATH so the build uses it instead of the system ghc.
cat > ghc <<'EOF'
#!/bin/sh
# Filter out -fobject-determinism occurrences (also inside --ghc-options=...)
# Build a NUL-separated list of processed args and invoke system ghc with them
tmpfile=$(mktemp)
trap 'rm -f "$tmpfile"' EXIT
for a in "$@"; do
  # remove the option and collapse multiple spaces
  b=$(printf "%s" "$a" | sed -E 's/-fobject-determinism//g; s/  +/ /g; s/^ //; s/ $//')
  printf '%s\0' "$b" >> "$tmpfile"
done
exec xargs -0 -a "$tmpfile" /usr/bin/ghc
EOF
chmod +x ghc
PATH="$PWD:$PATH"
%ghc_lib_build
%install
%ghc_lib_install
%ghc_fix_rpath %{pkg_name}-%{version}
%post devel
%ghc_pkg_recache
%postun devel
%ghc_pkg_recache
%files -f %{name}.files
%license LICENSE
%files devel -f %{name}-devel.files
%doc CHANGELOG.markdown README.markdown
%files -n ghc-%{pkg_name}-doc -f ghc-%{pkg_name}-doc.files
%license LICENSE
%files -n ghc-%{pkg_name}-prof -f ghc-%{pkg_name}-prof.files
%changelog