File ponyc.spec of Package ponyc

#
# spec file for package ponyc
#
# 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/
#


Name:           ponyc
Version:        0.23.0+git1329.e8dc07e4
Release:        0
Summary:        An actor model, capabilities programming language
License:        BSD-2-Clause
Group:          Development/Languages/Other
Url:            http://www.ponylang.org
# See _service for source
# Source0:       https://github.com/ponylang/ponyc/archive/%%{version}.tar.gz#/%%{name}-%%{version}.tar.gz
Source0:        %{name}-%{version}.tar.gz
Source99:       ponyc-rpmlintrc
BuildRequires:  binutils-gold
BuildRequires:  gcc
BuildRequires:  gcc-c++
%if 0%{?suse_version} > 1320
BuildRequires:  llvm5-devel
BuildRequires:  libopenssl-1_1-devel
%else
BuildRequires:  llvm-devel
BuildRequires:  libopenssl-devel
%endif
BuildRequires:  ncurses-devel
BuildRequires:  pcre2-devel
BuildRequires:  zlib-devel
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
# Waiting for (gh#ponylang/ponyc#1719) to be solved
ExclusiveArch:  %ix86 x86_64 %arm #aarch64

%description
Pony is an object-oriented, actor-model, capabilities-secure,
programming language.

%package doc
Summary:        An actor model, capabilities programming language

%description doc
Pony is an object-oriented, actor-model, capabilities-secure,
programming language.

This package contains documentation for the ponyc compiler.

%package examples
Summary:        An actor model, capabilities programming language

%description examples
Pony is an object-oriented, actor-model, capabilities-secure,
programming language.

This package contains examples for the pony language.

%package devel
Summary:        An actor model, capabilities programming language
Provides:       %{name} = %{version}
Requires:       gcc
Requires:       binutils-gold
Recommends:     %{name}-examples = %{version}

%description devel
Pony is an object-oriented, actor-model, capabilities-secure,
programming language.

%prep
%setup -q

sed -e 's/-Werror//' \
    -e 's/-O3//' \
    -e 's/LINKER_FLAGS =/LINKER_FLAGS = $(LDFLAGS)/' \
    -e 's/-march=$(arch) -mtune=$(tune)/$(CFLAGS)/' \
    -i Makefile

sed -e 's/-O3//' \
    -i src/libponyc/codegen/genexe.c

# replace /usr/local/lib with _libdir
sed -e 's#/usr/local/lib#%{_libdir}#' \
    -i src/libponyc/pkg/package.c
sed -e 's#/usr/local/lib#%{_libdir}#' \
    -i Makefile

# replace /usr/bin/env dtrace
# with %%{_bindir}/dtrace
find . -type f -exec perl -pi -e 'BEGIN{undef $/};s[^#\!/usr/bin/env dtrace][#\!%{_bindir}/dtrace]' {} \;

%build
export CFLAGS="%{optflags}"
export CXXFLAGS="%{optflags}"
%if 0%{?suse_version} > 1320
make %{?_smp_mflags} config=release verbose=yes lto=no default_pic=true default_ssl="openssl_1.1.0"
%else
make %{?_smp_mflags} config=release verbose=yes lto=no default_pic=true
%endif

mkdir docs
build/release/ponyc packages/stdlib -rexpr -g -o docs

%install
install -Dm755 build/release/ponyc %{buildroot}%{_libdir}/pony/%{version}/bin/ponyc
install -Dm644 build/release/libponyrt.a %{buildroot}%{_libdir}/libponyrt.a
install -Dm644 build/release/libponyrt-pic.a %{buildroot}%{_libdir}/libponyrt-pic.a
install -Dm644 build/release/libponyc.a %{buildroot}%{_libdir}/libponyc.a
install -Dm644 src/libponyrt/pony.h %{buildroot}%{_includedir}/pony.h

# Ponyc is designed to read its standard packages from the same directory.
install -dm755 %{buildroot}%{_bindir}
pushd %{buildroot}%{_bindir}
ln -sf ../%{_lib}/pony/%{version}/bin/ponyc .
popd

cp -dr packages %{buildroot}%{_libdir}/pony/%{version}

mkdir -p %{buildroot}%{_datadir}/pony/examples
cp -dr examples %{buildroot}%{_datadir}/pony/examples

%check
# tests don't pass on x86
%ifnarch i586
# no network connection during build
sed -i 's/test(_TestBroadcast)/None/g' packages/net/_test.pony
sed -i 's/test(_HTTPConnTest)/None/g' packages/net/http/_test.pony
make %{?_smp_mflags} config=release verbose=yes test
%endif

%files devel
%defattr(-,root,root)
%doc CHANGELOG.md LICENSE README.md
%{_bindir}/ponyc
%{_includedir}/pony.h
%{_libdir}/libponyc*
%{_libdir}/libponyrt*
%dir %{_libdir}/pony
%dir %{_libdir}/pony/%{version}
%dir %{_libdir}/pony/%{version}/bin
%{_libdir}/pony/%{version}/bin/ponyc
%{_libdir}/pony/%{version}/packages
%dir %{_datadir}/pony
%exclude %{_datadir}/pony/examples

%files doc
%doc docs/*

%files examples
%{_datadir}/pony/examples


%changelog
openSUSE Build Service is sponsored by