File calamares.spec of Package calamares

#
# spec file for package calamares
#
# Copyright (c) 2020 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/
#


# Internal QML import
%global __requires_exclude qmlimport\\(calamares\\.slideshow.*

%define  lname  lib%{name}
%define _sover  3
Name:           calamares
Version:        3.2.60
Release:        0
Summary:        Distribution-independent installer framework
License:        GPL-3.0-or-later
Group:          System/Management
URL:            https://github.com/calamares/calamares
Source0:        https://github.com/%{name}/%{name}/releases/download/v%{version}/%{name}-%{version}.tar.gz
Source1:        https://github.com/%{name}/%{name}/releases/download/v%{version}/%{name}-%{version}.tar.gz.asc
Source2:        %{name}.keyring
Source3:        %{name}.rpmlintrc
Source4:        branding-SuSE.tar.xz
Source5:        3.2-branding.desc.patch.SuSE
Source6:        3.2-mount.conf.patch.SuSE
Source7:        3.2-settings.conf.patch.SuSE
Source8:        3.2-show.qml.patch.SuSE
Source9:        3.2-unpackfs.conf.patch.SuSE
Source10:       3.2-users.conf.patch.SuSE
Patch1:         3.2-bootloader.conf.patch
Patch2:         3.2-branding.desc.patch
Patch3:         3.2-displaymanager.conf.patch
Patch4:         3.2-networkcfg.patch
Patch5:         3.2-packages.conf.patch
Patch6:         3.2-removeuser.conf.patch
Patch7:         3.2-settings.conf.patch
Patch8:         3.2-show.qml.patch
Patch9:         3.2-unpackfs.conf.patch
Patch10:        3.2-welcome.conf.patch
Patch11:        %{name}-desktop-file.patch
BuildRequires:  cmake
BuildRequires:  cmake(AppStreamQt)
BuildRequires:  cmake(KF5Config)
BuildRequires:  cmake(KF5CoreAddons)
BuildRequires:  cmake(KF5Crash)
BuildRequires:  cmake(KF5DBusAddons)
BuildRequires:  cmake(KF5I18n)
BuildRequires:  cmake(KF5Package)
BuildRequires:  cmake(KF5Parts)
BuildRequires:  cmake(KF5Plasma)
BuildRequires:  cmake(KF5Service)
BuildRequires:  cmake(KF5WidgetsAddons)
BuildRequires:  cmake(KPMcore)
BuildRequires:  cmake(Qt5LinguistTools)
BuildRequires:  extra-cmake-modules
BuildRequires:  gcc-c++
BuildRequires:  hicolor-icon-theme
BuildRequires:  libboost_python3-devel
BuildRequires:  ninja
BuildRequires:  pkgconfig
BuildRequires:  pkgconfig(Qt5Concurrent)
BuildRequires:  pkgconfig(Qt5Core)
BuildRequires:  pkgconfig(Qt5DBus)
BuildRequires:  pkgconfig(Qt5Gui)
BuildRequires:  pkgconfig(Qt5Location)
BuildRequires:  pkgconfig(Qt5Network)
BuildRequires:  pkgconfig(Qt5Positioning)
BuildRequires:  pkgconfig(Qt5Quick)
BuildRequires:  pkgconfig(Qt5QuickWidgets)
BuildRequires:  pkgconfig(Qt5Svg)
BuildRequires:  pkgconfig(Qt5Test)
BuildRequires:  pkgconfig(Qt5WebEngine)
BuildRequires:  pkgconfig(Qt5WebEngineWidgets)
BuildRequires:  pkgconfig(Qt5Widgets)
BuildRequires:  pkgconfig(Qt5Xml)
BuildRequires:  pkgconfig(icu-i18n)
BuildRequires:  pkgconfig(icu-uc)
BuildRequires:  pkgconfig(libatasmart)
BuildRequires:  pkgconfig(libparted)
BuildRequires:  pkgconfig(polkit-qt5-1)
BuildRequires:  pkgconfig(pwquality)
BuildRequires:  pkgconfig(python3)
BuildRequires:  pkgconfig(yaml-cpp)
BuildRequires:  update-desktop-files
Requires:       %{name}-branding = %{version}
Requires:       NetworkManager
Requires:       console-setup
Requires:       dmidecode
Requires:       gptfdisk
Requires:       grub2
Requires:       kpmcore
Requires:       os-prober
Requires:       polkit
Requires:       python3
Requires:       rsync
Requires:       squashfs
Requires:       upower

Requires:       coreutils
Requires:       dosfstools
Requires:       dracut
Requires:       e2fsprogs
Requires:       gawk
Requires:       ntfsprogs
Requires:       parted
Requires:       systemd
Requires:       util-linux
Requires:       xkbutils
Requires:       zypper
%ifarch x86_64
# EFI currently only supported on x86_64
Requires:       grub2-efi
%endif
Recommends:     btrfsprogs
Recommends:     hfsutils
Recommends:     jfsutils
Recommends:     ntfs-3g
Recommends:     reiserfs
Recommends:     xfsprogs

%description
Calamares is a distribution-independent installer framework, designed to install
from a live CD/DVD/USB environment to a hard disk. It includes a graphical
installation program based on Qt 5. This package includes the Calamares
framework and the required configuration files to produce a working replacement
for YaST's installer.

%lang_package

%package        libs%{_sover}
Summary:        Calamares runtime libraries
Group:          Development/Libraries/C and C++
Provides:       %{name}-libs = %{version}
Obsoletes:      %{name}-libs < %{version}

%description    libs%{_sover}
Calamares libraries for development

%package        devel
Summary:        Development package for calamares
Group:          Development/Libraries/C and C++
Requires:       %{name}-libs%{_sover} = %{version}-%{release}

%description    devel
Development and Header files for package %{name}

%package        interactiveterminal
Summary:        Calamares interactiveterminal module
Group:          System/Management
Requires:       %{name} = %{version}-%{release}
Supplements:    (%{name} and konsole-part)
 
%description    interactiveterminal
Optional interactiveterminal module for the Calamares installer, based on
the KonsolePart (from Konsole 5)

%package        plasmalnf
Summary:        Calamares plasmalnf module
Group:          System/Management
Requires:       %{name} = %{version}-%{release}
Supplements:    (%{name} and plasma5-workspace)
 
%description    plasmalnf
Optional plasmalnf module for the Calamares installer, based on the KDE
Plasma Desktop Workspace and its KDE Frameworks (KConfig, KPackage, Plasma)

%package        webview
Summary:        Calamares webview module
Group:          System/Management
Requires:       %{name} = %{version}-%{release}

%description    webview
Optional webview module for the Calamares installer.

%package        branding-upstream
Summary:        Upstream Branding for %{name}
Group:          System/Management
Supplements:    (%{name} and branding-upstream)
Conflicts:      %{name}-branding
Provides:       %{name}-branding = %{version}
BuildArch:      noarch

%description    branding-upstream
This package provides the upstream "look and feel" for %{name}.

%package        branding-SuSE
Summary:        Upstream Branding for %{name}
Group:          System/Management
Supplements:    (%{name} and branding-SuSE)
Conflicts:      %{name}-branding
Provides:       %{name}-branding = %{version}
BuildArch:      noarch

%description    branding-SuSE
This package provides the SuSE "look and feel" for %{name}.

%prep
%autosetup -p1
# env-script-interpreter
find -name 'main.py' -exec sed -i '/#!\/usr\/bin\/env/s/env\ //' {} \;

%build
%define __builder ninja
%cmake \
    -DINSTALL_CONFIG=ON \
    -DINSTALL_COMPLETION=ON
%ninja_build

%install
%cmake_install
%suse_update_desktop_file -r %{name} Qt System PackageManager
# non-executable-script
chmod a+x %{buildroot}%{_libdir}/%{name}/modules/*/main.py
chmod a+x %{buildroot}%{_libdir}/%{name}/modules/initramfscfg/encrypt_hook*
chmod a+x %{buildroot}%{_libdir}/%{name}/modules/unpackfs/runtests.sh
# branding-SuSE
tar xf %{SOURCE4} -C %{buildroot}%{_datadir}/%{name}/branding/
cp %{buildroot}%{_datadir}/%{name}/branding/default/branding.desc %{buildroot}%{_datadir}/%{name}/branding/SuSE/
cp %{buildroot}%{_datadir}/%{name}/branding/default/show.qml %{buildroot}%{_datadir}/%{name}/branding/SuSE/
mkdir -p %{buildroot}%{_sysconfdir}/%{name}/modules/
cp %{buildroot}%{_datadir}/%{name}/settings.conf %{buildroot}%{_sysconfdir}/%{name}/
cp %{buildroot}%{_datadir}/%{name}/modules/*.conf %{buildroot}%{_sysconfdir}/%{name}/modules/
pushd %{buildroot}
patch -p1 -i %{SOURCE5}
patch -p1 -i %{SOURCE6}
patch -p1 -i %{SOURCE7}
patch -p1 -i %{SOURCE8}
patch -p1 -i %{SOURCE9}
patch -p1 -i %{SOURCE10}
popd

%find_lang %{name}-python %{name}.lang

%post libs%{_sover} -p /sbin/ldconfig
%postun libs%{_sover} -p /sbin/ldconfig

%files
%doc AUTHORS README.md
%{_bindir}/%{name}
%dir %{_datadir}/bash-completion/completions
%{_datadir}/bash-completion/completions/%{name}
%dir %{_datadir}/%{name}
%{_datadir}/%{name}/qml
%{_datadir}/applications/%{name}.desktop
%{_datadir}/icons/hicolor/*/apps/%{name}.??g
%{_datadir}/polkit-1/actions/com.github.%{name}.%{name}.policy
%{_mandir}/man?/%{name}.?%{?ext_man}
%exclude %{_datadir}/%{name}/branding
%exclude %{_datadir}/%{name}/modules
%exclude %{_datadir}/%{name}/settings.conf
%license LICENSES/GPL-3.0-or-later.txt

%files libs%{_sover}
%{_libdir}/%{lname}*.so.*
%dir %{_libdir}/%{name}
%{_libdir}/%{name}/%{lname}*.so
%{_libdir}/%{name}/modules
%exclude %{_libdir}/%{name}/modules/interactiveterminal/
%exclude %{_libdir}/%{name}/modules/plasmalnf/
%exclude %{_libdir}/%{name}/modules/webview/

%files devel
%{_includedir}/%{lname}
%{_libdir}/%{lname}*.so
%{_libdir}/cmake/Calamares

%files branding-upstream
%dir %{_datadir}/%{name}
%dir %{_datadir}/%{name}/branding
%{_datadir}/%{name}/branding/default
%{_datadir}/%{name}/modules
%{_datadir}/%{name}/settings.conf
%exclude %{_datadir}/%{name}/modules/interactiveterminal.conf
%exclude %{_datadir}/%{name}/modules/plasmalnf.conf
%exclude %{_datadir}/%{name}/modules/webview.conf

%files branding-SuSE
%dir %{_sysconfdir}/%{name}
%dir %{_sysconfdir}/%{name}/modules
%config %{_sysconfdir}/%{name}/modules/*.conf
%config %{_sysconfdir}/%{name}/settings.conf
%dir %{_datadir}/%{name}
%dir %{_datadir}/%{name}/branding
%{_datadir}/%{name}/branding/SuSE

%files interactiveterminal
%dir %{_datadir}/%{name}
%dir %{_datadir}/%{name}/modules
%{_datadir}/%{name}/modules/interactiveterminal.conf
%dir %{_libdir}/%{name}
%dir %{_libdir}/%{name}/modules
%{_libdir}/%{name}/modules/interactiveterminal/

%files plasmalnf
%dir %{_datadir}/%{name}
%dir %{_datadir}/%{name}/modules
%{_datadir}/%{name}/modules/plasmalnf.conf
%dir %{_libdir}/%{name}
%dir %{_libdir}/%{name}/modules
%{_libdir}/%{name}/modules/plasmalnf/

%files webview
%dir %{_datadir}/%{name}
%dir %{_datadir}/%{name}/modules
%{_datadir}/%{name}/modules/webview.conf
%dir %{_libdir}/%{name}
%dir %{_libdir}/%{name}/modules
%{_libdir}/%{name}/modules/webview/

%files lang -f %{name}.lang

%changelog
openSUSE Build Service is sponsored by