File newt.spec of Package newt

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


%if 0%{?suse_version} > 1320
%bcond_without python3
%else
%bcond_with python3
%endif

%define         libname lib%{name}
%define         libsoname %{libname}0_52
Name:           newt
Version:        0.52.20
Release:        0
Summary:        A library for text mode user interfaces
License:        LGPL-2.1+
Group:          Development/Libraries/C and C++
Url:            https://fedorahosted.org/newt/
Source:         https://fedorahosted.org/releases/n/e/newt/%{name}-%{version}.tar.gz
Source2:        baselibs.conf
Source10:       %{name}-rpmlintrc
# needed for tutorial.pdf
BuildRequires:  docbook-toys
BuildRequires:  pkg-config
BuildRequires:  popt-devel
BuildRequires:  python-devel
BuildRequires:  slang-devel
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
%if 0%{?suse_version} < 1020
BuildRequires:  libpng-devel
%endif
%if 0%{?suse_version} > 1220
BuildRequires:  texlive-courier
BuildRequires:  texlive-dvips
BuildRequires:  texlive-ec
BuildRequires:  texlive-helvetic
BuildRequires:  texlive-jadetex
BuildRequires:  texlive-times
%endif
%if %{with python3}
BuildRequires:  python3-devel
%endif

%description
Newt is a programming library for color text-mode, widget-based user
interfaces.  Newt can be used to add stacked windows, entry widgets,
checkboxes, radio buttons, labels, plain text fields, scrollbars, etc.,
to text mode user interfaces.

This package also contains a Dialog replacement called whiptail. Newt
is based on the slang library.

%package -n %{libsoname}
Summary:        Shared libraries for Nifty Erik's Windowing Toolkit
License:        LGPL-2.1+
Group:          System/Libraries

%description -n %{libsoname}
This package contains the shared libraries needed by programs built
with newt.

Newt is a programming library for color text-mode widget-based user
interfaces.  Newt can be used to add stacked windows, entry widgets,
check boxes, radio buttons, labels, plain text fields, scrollbars,
etc., to text mode user interfaces.

%package devel
Summary:        Development files for the Newt windowing toolkit
License:        LGPL-2.1+
Group:          Development/Libraries/C and C++
Requires:       %{libsoname} = %{version}
Requires:       popt-devel
Requires:       python-devel
Requires:       slang-devel
Recommends:     %{name} = %{version}

%description devel
This package contains the header files and libraries necessary for
developing applications which use newt.

Newt is a development library for text mode user interfaces.

Install newt-devel if you want to develop applications which depend on
newt.

%package doc
Summary:        Tutorial for Nifty Erik's Windowing Toolkit
# the examples need the main package:
License:        LGPL-2.1+
Group:          Documentation/Howto
Recommends:     %{name} = %{version}
%if 0%{?suse_version} > 1120
BuildArch:      noarch
%endif

%description doc
This package contains a tutorial about the Newt windowing toolkit.

Newt is a programming library for color text-mode, widget-based user
interfaces.  Newt can be used to add stacked windows, entry widgets,
check boxes, radio buttons, labels, plain text fields, scrollbars,
etc., to text mode user interfaces. Newt is based on the slang library.

%package static
# Please keep the static package as this is requested by another
# vendor for his tool. It shouldn't be a problem to keep this
# special package. (lrupp)
Summary:        Static libraries of Nifty Erik's Windowing Toolkit
License:        LGPL-2.1+
Group:          Development/Libraries/C and C++
Requires:       %{name}-devel = %{version}

%description static
This package contains the static libraries needed to compile programs
based on newt which don't need the shared libraries. Install it if you
need to link statically with %{libname}.

Newt is a programming library for color text-mode widget-based user
interfaces.  Newt can be used to add stacked windows, entry widgets,
check boxes, radio buttons, labels, plain text fields, scrollbars,
etc., to text mode user interfaces.

%package -n python-%{name}
Summary:        Python bindings for newt
License:        GPL-2.0 and GPL-2.0+ and LGPL-2.1+
Group:          Development/Libraries/Python
Requires:       %{name} = %{version}
Provides:       %{name}-python = %{version}
Obsoletes:      %{name}-python < %{version}
%py_requires

%description -n python-%{name}
The python-newt package contains the Python bindings for the newt
library providing a python API for creating text mode interfaces.

%if %{with python3}
%package -n python3-%{name}
Summary:        Python 3 bindings for newt
License:        LGPL-2.1+
Group:          Development/Libraries
Requires:       %{name} = %{version}-%{release}

%description -n python3-%{name}
The python3-newt package contains the Python 3 bindings for the newt library
providing a python API for creating text mode interfaces.
%endif

%prep
%setup -q

%build
# gpm support seems to smash the stack
# --with-gpm-support
%configure --without-tcl
## make depend
make CPPFLAGS="%{optflags} -fPIC" %{?_smp_mflags} all
#docbook2txt tutorial.sgml
chmod 0644 peanuts.py popcorn.py

%install
pyversions="python%{py_ver}"
%if %{with python3}
pyversions="$pyversions python%{py3_ver}"
%endif
make PYTHONVERS="$pyversions" instroot=%{buildroot} DESTDIR=%{buildroot} install install-sh
# currently we don't support these languages
for lang in ast bal sr@latin wo; do
  rm -rf %{buildroot}%{_datadir}/locale/$lang
done

# prepare defaultdocdir with examples and scripts
#
install -d -m 755 %{buildroot}%{_defaultdocdir}/%{name}/examples
# install COPYING file
install -m 644 COPYING %{buildroot}%{_defaultdocdir}/%{name}/
# install example scripts
install -m 755 peanuts.py %{buildroot}%{_defaultdocdir}/%{name}/examples/
install -m 755 popcorn.py %{buildroot}%{_defaultdocdir}/%{name}/examples/
#
# create tutorial.pdf documentation
#
install -m 644 tutorial.sgml %{buildroot}%{_defaultdocdir}/%{name}/
pushd %{buildroot}%{_defaultdocdir}/%{name}/ 1>/dev/null
db2pdf tutorial.sgml
rm tutorial.{aux,log,out} CATALOG.* *.dsl
popd 1>/dev/null
%find_lang %{name}

%if 0%{?suse_version}
%py_compile %{buildroot}/%{python_sitearch}
%py_compile -O %{buildroot}/%{python_sitearch}
%if %{with python3}
%py3_compile %{buildroot}/%{python3_sitearch}
%py3_compile -O %{buildroot}/%{python3_sitearch}
%endif
%endif

%post -n %{libsoname} -p /sbin/ldconfig

%postun -n %{libsoname} -p /sbin/ldconfig

%files -f %{name}.lang
%defattr (-,root,root)
%dir %{_defaultdocdir}/%{name}
%doc %{_defaultdocdir}/%{name}/COPYING
%{_bindir}/whiptail
%{_mandir}/man1/whiptail.1*
%if 0%{?suse_version} <= 1020
%dir %{_datadir}/locale/as
%dir %{_datadir}/locale/as/LC_MESSAGES
%{_datadir}/locale/as/LC_MESSAGES/*
%endif

%files -n %{libsoname}
%defattr (-,root,root)
%{_libdir}/%{libname}.so.*

%files devel
%defattr (-,root,root)
%{_includedir}/%{name}.h
%{_libdir}/%{libname}.so
%{_libdir}/pkgconfig/*.pc

%files doc
%defattr (-,root,root)
%doc %{_defaultdocdir}/%{name}/tutorial.*

%files static
%defattr (-,root,root)
%{_libdir}/%{libname}.a

%files -n python-%{name}
%defattr(-,root,root)
%dir %{_defaultdocdir}/%{name}/examples
%doc %{_defaultdocdir}/%{name}/examples/*.py
%{py_sitedir}/*

%if %{with python3}
%files -n python3-%{name}
%doc peanuts.py popcorn.py
%{python3_sitearch}/*.so
%{python3_sitearch}/*.py*
%{python3_sitearch}/__pycache__/*.py*
%endif

%changelog
openSUSE Build Service is sponsored by