File kuksa-val.spec of Package kuksa-val

#
# spec file for package kuksa-val
#
# Copyright (c) 2023 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/
#
%define skip_python2 1

Name:           kuksa-val
Version:        0.4.0
Release:        0
Summary:        KUKSA Vehicle Abstraction Layer
License:        MIT
Group:          Productivity/Networking/Web/Proxy
URL:            https://www.eclipse.org/kuksa/
Source0:        kuksa-val-%{version}.tar.gz
Source1:        server.ini
Source2:        kuksa-val-server.service
# https://gitlab.com/automotivegradelinux/AGL/meta-agl-demo/-/blob/master/recipes-connectivity/kuksa-val/kuksa-val-agl/00-agl_vss_overlay_2.2.json
Source3:        agl-vss-overlay.json
# create manually
Source4:        speed-limit-overlay.json
Patch0:         version.patch
Patch1:         unit-test.patch
Patch2:         clean-setup-cfg.patch
Patch3:         remove-certificates.patch
Patch4:         python-shebang.patch
Patch5:         cmd2.patch

%description
KUKSA.val provides in-vehicle software components for working with in-vehicle
signals modelled using the COVESA VSS data model.

%package server
Summary:        KUKSA.val Server
BuildRequires:  cmake >= 3.12.0
BuildRequires:  gcc-c++
BuildRequires:  boost-devel >= 1.82.0
BuildRequires:  mosquitto-devel
BuildRequires:  openssl-devel >= 1.0.0
BuildRequires:  git
BuildRequires:  grpc-devel >= 1.44.0
BuildRequires:  libboost_filesystem-devel >= 1.82.0
BuildRequires:  libboost_program_options-devel >= 1.82.0
BuildRequires:  libboost_system-devel >= 1.82.0
BuildRequires:  libboost_log-devel >= 1.82.0
BuildRequires:  libboost_thread-devel >= 1.82.0
BuildRequires:  libboost_test-devel >= 1.82.0
BuildRequires:  protobuf-devel
Requires:       %{name}-certificates >= %{version}
Requires:       %{name}-agl-vss-overlay >= %{version}
Requires:       %{name}-speed-limit-vss-overlay >= %{version}

%description server
KUKSA.val Server is a feature rich in-vehicle data server written in
C++ providing authorized access to vehicle data. It serves signals
described using the COVESA VSS data model.

%package client
Summary:        KUKSA.val Client
BuildRequires:  python3 > 3.8
BuildRequires:  %{python_module setuptools}
BuildRequires:  %{python_module websockets}
BuildRequires:  %{python_module cmd2}
BuildRequires:  %{python_module pygments}
BuildRequires:  %{python_module grpcio-tools}
BuildRequires:  %{python_module jsonpath-ng}
BuildRequires:  fdupes
Requires:       python3-websockets >= 10.1
Requires:       python3-cmd2 > 2.0
Requires:       python3-pygments >= 2.15
Requires:       python3-grpcio-tools >= 1.54.2
Requires:       python3-jsonpath-ng >= 1.5.3
Requires:       %{name}-certificates = %{version}
BuildArch:      noarch
%{?systemd_requires}

%description client
KUKSA.val Client provides both a command-line interface (CLI) and a
standalone Python library to interact with either KUKSA.val Server
or KUKSA.val Databroker.

%package certificates
Summary:        KUKSA.val Certificates
BuildArch:      noarch

%description certificates
KUKSA.val self-signed certificates, JWT keys and tokens.

%package agl-vss-overlay
Summary:        AGL VSS Overlay
BuildArch:      noarch

%description agl-vss-overlay
AGL VSS overlay with extra signals used in the AGL Demo.

%package speed-limit-vss-overlay
Summary:        SpeedLimit VSS Overlay
BuildArch:      noarch

%description speed-limit-vss-overlay
SpeedLimit overlay with extra signals used in the Traffic Sign
detection workload.

%prep
%autosetup -p1

%build
cd kuksa-client
%python3_build
cd -

cd kuksa-val-server
%cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DFETCHCONTENT_FULLY_DISCONNECTED=ON -DBUILD_UNIT_TEST=OFF -DENABLE_COVERAGE=OFF
%cmake_build

%install
cd kuksa-client
%python3_install
%python_expand %fdupes %{buildroot}%{$python_sitelib}
cd -

install -D -p -m 0755 kuksa-val-server/build/src/kuksa-val-server %{buildroot}%{_bindir}/kuksa-val-server
install -D -p -m 0644 %{SOURCE2} %{buildroot}%{_unitdir}/kuksa-val-server.service
install -d %{buildroot}/%{_sbindir}
ln -sf %{_sbindir}/service %{buildroot}%{_sbindir}/rckuksa-val-server
install -Dm0644 %{SOURCE1} %{buildroot}%{_sysconfdir}/kuksa-val/server.ini

# vss specs
install -Dm0644 kuksa-val-server/build/src/vss_release_2.0.json %{buildroot}%{_sysconfdir}/kuksa-val/vss/vss_release_2.0.json
install -Dm0644 kuksa-val-server/build/src/vss_release_2.1.json %{buildroot}%{_sysconfdir}/kuksa-val/vss/vss_release_2.1.json
install -Dm0644 kuksa-val-server/build/src/vss_release_2.2.json %{buildroot}%{_sysconfdir}/kuksa-val/vss/vss_release_2.2.json
install -Dm0644 kuksa-val-server/build/src/vss_release_3.0.json %{buildroot}%{_sysconfdir}/kuksa-val/vss/vss_release_3.0.json
install -Dm0644 kuksa-val-server/build/src/vss_release_3.1.1.json %{buildroot}%{_sysconfdir}/kuksa-val/vss/vss_release_3.1.1.json
install -Dm0644 kuksa-val-server/build/src/vss_release_4.0.json %{buildroot}%{_sysconfdir}/kuksa-val/vss/vss_release_4.0.json

# vss overlays
install -Dm0644 %{SOURCE3} %{buildroot}%{_sysconfdir}/kuksa-val/overlays/agl.json
install -Dm0644 %{SOURCE4} %{buildroot}%{_sysconfdir}/kuksa-val/overlays/speed-limit.json

# certificates
install -Dm0644 kuksa_certificates/CA.key %{buildroot}%{_sysconfdir}/kuksa-val/certs/CA.key
install -Dm0644 kuksa_certificates/CA.pem %{buildroot}%{_sysconfdir}/kuksa-val/certs/CA.pem
install -Dm0644 kuksa_certificates/Server.key %{buildroot}%{_sysconfdir}/kuksa-val/certs/Server.key
install -Dm0644 kuksa_certificates/Server.pem %{buildroot}%{_sysconfdir}/kuksa-val/certs/Server.pem
install -Dm0644 kuksa_certificates/Client.key %{buildroot}%{_sysconfdir}/kuksa-val/certs/Client.key
install -Dm0644 kuksa_certificates/Client.pem %{buildroot}%{_sysconfdir}/kuksa-val/certs/Client.pem
# jwt key
install -Dm0644 kuksa_certificates/jwt/jwt.key %{buildroot}%{_sysconfdir}/kuksa-val/certs/jwt.key
install -Dm0644 kuksa_certificates/jwt/jwt.key.pub %{buildroot}%{_sysconfdir}/kuksa-val/certs/jwt.key.pub
# jwt tokens
install -Dm0644 kuksa_certificates/jwt/all-read-write.json %{buildroot}%{_sysconfdir}/kuksa-val/tokens/all-read-write.json
install -Dm0644 kuksa_certificates/jwt/all-read-write.json.token %{buildroot}%{_sysconfdir}/kuksa-val/tokens/all-read-write.json.token
install -Dm0644 kuksa_certificates/jwt/single-read.json %{buildroot}%{_sysconfdir}/kuksa-val/tokens/single-read.json
install -Dm0644 kuksa_certificates/jwt/single-read.json.token %{buildroot}%{_sysconfdir}/kuksa-val/tokens/single-read.json.token
install -Dm0644 kuksa_certificates/jwt/super-admin.json %{buildroot}%{_sysconfdir}/kuksa-val/tokens/super-admin.json
install -Dm0644 kuksa_certificates/jwt/super-admin.json.token %{buildroot}%{_sysconfdir}/kuksa-val/tokens/super-admin.json.token

%pre
%service_add_pre kuksa-val-server.service

%post
%service_add_post kuksa-val-server.service
%{fillup_only -n kuksa-val-server}

%preun
%service_del_preun kuksa-val-server.service

%postun
%service_del_postun kuksa-val-server.service

%files server
%license LICENSE
%doc kuksa-val-server/README.md
%doc NOTICE.md
%{_bindir}/kuksa-val-server
%{_unitdir}/kuksa-val-server.service
%{_sbindir}/rckuksa-val-server
%dir %{_sysconfdir}/kuksa-val/
%config(noreplace) %{_sysconfdir}/kuksa-val/server.ini
%dir %{_sysconfdir}/kuksa-val/vss/
%config %{_sysconfdir}/kuksa-val/vss/vss_release_2.0.json
%config %{_sysconfdir}/kuksa-val/vss/vss_release_2.1.json
%config %{_sysconfdir}/kuksa-val/vss/vss_release_2.2.json
%config %{_sysconfdir}/kuksa-val/vss/vss_release_3.0.json
%config %{_sysconfdir}/kuksa-val/vss/vss_release_3.1.1.json
%config %{_sysconfdir}/kuksa-val/vss/vss_release_4.0.json

%files client
%license LICENSE
%doc kuksa-client/README.md
%doc NOTICE.md
%{_bindir}/kuksa-client
%dir %{_sysconfdir}/kuksa-val/
%dir %{python_sitelib}/kuksa/
%dir %{python_sitelib}/kuksa_client/
%{python_sitelib}/kuksa/*
%{python_sitelib}/kuksa_client/*
%{python_sitelib}/kuksa_client-*.egg-info

%files certificates
%dir %{_sysconfdir}/kuksa-val/
%dir %{_sysconfdir}/kuksa-val/certs/
%dir %{_sysconfdir}/kuksa-val/tokens/
%config %{_sysconfdir}/kuksa-val/certs/CA.key
%config %{_sysconfdir}/kuksa-val/certs/CA.pem
%config %{_sysconfdir}/kuksa-val/certs/Server.key
%config %{_sysconfdir}/kuksa-val/certs/Server.pem
%config %{_sysconfdir}/kuksa-val/certs/Client.key
%config %{_sysconfdir}/kuksa-val/certs/Client.pem
%config %{_sysconfdir}/kuksa-val/certs/jwt.key
%config %{_sysconfdir}/kuksa-val/certs/jwt.key.pub
%config %{_sysconfdir}/kuksa-val/tokens/all-read-write.json
%config %{_sysconfdir}/kuksa-val/tokens/all-read-write.json.token
%config %{_sysconfdir}/kuksa-val/tokens/single-read.json
%config %{_sysconfdir}/kuksa-val/tokens/single-read.json.token
%config %{_sysconfdir}/kuksa-val/tokens/super-admin.json
%config %{_sysconfdir}/kuksa-val/tokens/super-admin.json.token

%files agl-vss-overlay
%dir %{_sysconfdir}/kuksa-val/overlays/
%config %{_sysconfdir}/kuksa-val/overlays/agl.json

%files speed-limit-vss-overlay
%dir %{_sysconfdir}/kuksa-val/overlays/
%config %{_sysconfdir}/kuksa-val/overlays/speed-limit.json

%changelog
openSUSE Build Service is sponsored by