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