File klayout.spec of Package klayout

#
# spec file for package klayout
#
# Copyright (c) 2017 SUSE LINUX Products 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:           klayout
Version:        0.27.2
Release:        c4m.1.<CI_INT>.<B_INT>
Summary:        KLayout, viewer and editor for mask layouts
License:        GPL-2.0+
Group:          Productivity/Scientific/Electronics
Url:            http://www.klayout.de
Source0:        %{name}-%{version}.tar.gz
# BuildRoot:      %{_tmppath}/%{name}-%{version}-build

# Disable auto-detection of dependencies (to prevent including the
# so's of klayout itself)
AutoReqProv: 	no

# CentOS 8 and higher, Fedora requirements
%if (0%{?rhel} >= 8) || 0%{?fedora}
Requires:	ruby >= 2.5.5
Requires:	python3 >= 3.6.0
Requires:	qt5-qtbase >= 5.11.1
Requires:	qt5-qtmultimedia >= 5.11.1
Requires:	qt5-qtxmlpatterns >= 5.11.1
Requires:	qt5-qtsvg >= 5.11.1
Requires:	qt5-qttools >= 5.11.1
BuildRequires:	ruby-devel
%if 0%{?rhel} == 8
BuildRequires:	platform-python-devel
%define buildopt8 -python /usr/libexec/platform-python
%else
BuildRequires:	python3-devel
%endif
BuildRequires:	clang-libs
BuildRequires:	qt5-qtmultimedia-devel
BuildRequires:	qt5-qtxmlpatterns-devel
BuildRequires:	qt5-qtsvg-devel
BuildRequires:	qt5-qttools-devel

%define buildopt %{?buildopt8} -j2
%define pylib %{python_sitearch}
%define __python /usr/bin/python3
%endif

# CentOS7 requirements
%if 0%{?rhel} == 7
Requires:	ruby >= 2.0.0
Requires:	python >= 2.7.5
Requires: qt-x11 >= 4.8.5
BuildRequires: ruby-devel
BuildRequires: python3-devel
BuildRequires: qt-devel

%define buildopt -j2
%define pylib %{python_sitearch}
%endif

%if 0%{?is_opensuse}
# We only support opensuse version with qt5
Requires:	ruby
Requires:	python3
Requires:	libqt5-qtbase
Requires:	libqt5-qtxmlpatterns
Requires:	libqt5-qtmultimedia
Requires:	libqt5-qtsvg
%define buildopt -j2
%define pylib %{python3_sitearch}
BuildRequires:  ruby-devel
BuildRequires:	python3-devel
BuildRequires:  libqt5-qtbase-devel
BuildRequires:	libqt5-qtxmlpatterns-devel
BuildRequires:	libqt5-qtmultimedia-devel
BuildRequires:	libqt5-qtsvg-devel
BuildRequires:	libqt5-qttools-devel
%endif

%description
Mask layout viewer and editor for the chip design engineer.

For details see README.md

%prep

%setup -q

%build

TARGET="linux-release"

cd %{_builddir}/%{name}-%{version}

# clean bin dir
rm -rf %{_builddir}/bin.$TARGET

# do the actual build
./build.sh -rpath %{_libdir}/klayout \
           -bin %{_builddir}/bin.$TARGET \
           -build %{_builddir}/build.$TARGET \
           %{buildopt}

cp -p LICENSE Changelog CONTRIB %{_builddir}
strip %{_builddir}/bin.$TARGET/*.so
strip %{_builddir}/bin.$TARGET/*/*.so
strip %{_builddir}/bin.$TARGET/*/*/*.so
strip %{_builddir}/bin.$TARGET/klayout
strip %{_builddir}/bin.$TARGET/strm*

%install

TARGET="linux-release"

# create and populate pylib
mkdir -p %{buildroot}%{pylib}/klayout
cp -pd %{_builddir}/bin.$TARGET/pymod/klayout/*.so %{buildroot}%{pylib}/klayout
cp -pd %{_builddir}/bin.$TARGET/pymod/klayout/*.py %{buildroot}%{pylib}/klayout
chmod 644 %{buildroot}%{pylib}/klayout/*
for d in tl db rdb; do
  mkdir -p %{buildroot}%{pylib}/klayout/$d
  cp -pd %{_builddir}/bin.$TARGET/pymod/klayout/$d/*.py %{buildroot}%{pylib}/klayout/$d
  chmod 644 %{buildroot}%{pylib}/klayout/$d/*
done

# create and populate libdir
mkdir -p %{buildroot}%{_libdir}/klayout
mkdir -p %{buildroot}%{_libdir}/klayout/db_plugins
mkdir -p %{buildroot}%{_libdir}/klayout/lay_plugins
cp -pd %{_builddir}/bin.$TARGET/lib*.so* %{buildroot}%{_libdir}/klayout
cp -pd %{_builddir}/bin.$TARGET/db_plugins/lib*.so* %{buildroot}%{_libdir}/klayout/db_plugins
cp -pd %{_builddir}/bin.$TARGET/lay_plugins/lib*.so* %{buildroot}%{_libdir}/klayout/lay_plugins
chmod 644 %{buildroot}%{_libdir}/klayout/*.so*
chmod 644 %{buildroot}%{_libdir}/klayout/db_plugins/*.so*
chmod 644 %{buildroot}%{_libdir}/klayout/lay_plugins/*.so*

# create and populate bindir
mkdir -p %{buildroot}%{_bindir}
cp -pd %{_builddir}/bin.$TARGET/klayout %{_builddir}/bin.$TARGET/strm* %{buildroot}%{_bindir}
chmod 755 %{buildroot}%{_bindir}/*

# other files
ls %{_sourcedir}
install -Dm644 etc/%{name}.desktop %{buildroot}%{_datadir}/applications/%{name}.desktop
install -Dm644 etc/logo.png %{buildroot}%{_datadir}/pixmaps/%{name}.png

# TODO: remove this? This macro does not expand to anything in SuSE 42.x
#%if 0%{?suse_version}%{?sles_version}
#%suse_update_desktop_file -n %{name}
#%endif

%files
%defattr(-,root,root)
%doc LICENSE
%doc Changelog
%doc CONTRIB
%{_bindir}/klayout
%{_bindir}/strm*
%{pylib}/klayout
%{pylib}/klayout/*
%{_libdir}/klayout
%{_libdir}/klayout/*
%{_datadir}/applications/%{name}.desktop
%{_datadir}/pixmaps/%{name}.png

%changelog
openSUSE Build Service is sponsored by