Accepting request 1083627 from devel:libraries:c_c++

Fixes boo#1210931 by adding Qt6 support (4th attempt)

OBS-URL: https://build.opensuse.org/request/show/1083627
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qwt6?expand=0&rev=17
This commit is contained in:
2023-04-29 15:28:08 +00:00
committed by Git OBS Bridge
6 changed files with 216 additions and 38 deletions

4
_multibuild Normal file
View File

@@ -0,0 +1,4 @@
<multibuild>
<flavor>qt5</flavor>
<flavor>qt6</flavor>
</multibuild>

View File

@@ -0,0 +1,44 @@
diff -rupN --no-dereference qwt-6.2.0/qwtfunctions.pri qwt-6.2.0-new/qwtfunctions.pri
--- qwt-6.2.0/qwtfunctions.pri 2021-07-18 13:19:33.644367625 +0200
+++ qwt-6.2.0-new/qwtfunctions.pri 2022-11-29 15:38:14.943070118 +0100
@@ -12,7 +12,12 @@
defineReplace(qwtLibraryTarget) {
unset(LIBRARY_NAME)
+
+ greaterThan(QT_MAJOR_VERSION, 4) {
+ LIBRARY_NAME = $${1}-qt$${QT_MAJOR_VERSION}
+ } else {
LIBRARY_NAME = $$1
+ }
mac:contains(QWT_CONFIG, QwtFramework) {
@@ -36,7 +41,11 @@ defineReplace(qwtLibraryTarget) {
defineTest(qwtAddLibrary) {
LIB_PATH = $$1
+ greaterThan(QT_MAJOR_VERSION, 4) {
+ LIB_NAME = $${2}-qt$${QT_MAJOR_VERSION}
+ } else {
LIB_NAME = $$2
+ }
mac:contains(QWT_CONFIG, QwtFramework) {
diff -rupN qwt-6.2.0/src/src.pro qwt-6.2.0-new/src/src.pro
--- qwt-6.2.0/src/src.pro 2022-11-29 15:38:15.365070601 +0100
+++ qwt-6.2.0-new/src/src.pro 2022-11-29 15:45:42.295600411 +0100
@@ -31,7 +31,11 @@ contains(QWT_CONFIG, QwtDll) {
# we increase the SONAME for every minor number
- QWT_SONAME=libqwt.so.$${VER_MAJ}.$${VER_MIN}
+ greaterThan(QT_MAJOR_VERSION, 4) {
+ QWT_SONAME=libqwt-qt$${QT_MAJOR_VERSION}.so.$${VER_MAJ}.$${VER_MIN}
+ } else {
+ QWT_SONAME=libqwt.so.$${VER_MAJ}.$${VER_MIN}
+ }
QMAKE_LFLAGS *= $${QMAKE_LFLAGS_SONAME}$${QWT_SONAME}
QMAKE_LFLAGS_SONAME=
}

View File

@@ -0,0 +1,37 @@
Index: qwt-6.2.0/src/src.pro
===================================================================
--- qwt-6.2.0.orig/src/src.pro
+++ qwt-6.2.0/src/src.pro
@@ -82,14 +82,14 @@ contains(QWT_CONFIG, QwtPkgConfig) {
greaterThan(QT_MAJOR_VERSION, 4) {
QMAKE_PKGCONFIG_FILE = Qt$${QT_MAJOR_VERSION}$${QMAKE_PKGCONFIG_NAME}
- QMAKE_PKGCONFIG_REQUIRES = Qt5Widgets Qt5Concurrent Qt5PrintSupport
+ QMAKE_PKGCONFIG_REQUIRES = Qt$${QT_MAJOR_VERSION}Widgets Qt$${QT_MAJOR_VERSION}Concurrent Qt$${QT_MAJOR_VERSION}PrintSupport
contains(QWT_CONFIG, QwtSvg) {
- QMAKE_PKGCONFIG_REQUIRES += Qt5Svg
+ QMAKE_PKGCONFIG_REQUIRES += Qt$${QT_MAJOR_VERSION}Svg
}
contains(QWT_CONFIG, QwtOpenGL) {
- QMAKE_PKGCONFIG_REQUIRES += Qt5OpenGL
+ QMAKE_PKGCONFIG_REQUIRES += Qt$${QT_MAJOR_VERSION}OpenGL
}
QMAKE_DISTCLEAN += $${DESTDIR}/$${QMAKE_PKGCONFIG_DESTDIR}/$${QMAKE_PKGCONFIG_FILE}.pc
Index: qwt-6.2.0/qwt.prf
===================================================================
--- qwt-6.2.0.orig/qwt.prf
+++ qwt-6.2.0/qwt.prf
@@ -44,4 +44,9 @@ else {
}
# QMAKE_RPATHDIR *= $${QWT_INSTALL_LIBS}
-qwtAddLibrary($${QWT_INSTALL_LIBS}, qwt)
+greaterThan(QT_MAJOR_VERSION,5) {
+ qwtAddLibrary($${QWT_OUT_ROOT}/lib,qwt-qt6)
+}
+else {
+ qwtAddLibrary($${QWT_OUT_ROOT}/lib,qwt-qt5)
+}

3
qwt6-rpmlintrc Normal file
View File

@@ -0,0 +1,3 @@
# Silence complaint on Leap
addFilter("shlib-policy-name-error")

View File

@@ -1,3 +1,14 @@
-------------------------------------------------------------------
Fri Apr 28 11:07:33 UTC 2023 - Luigi Baldoni <aloisio@gmx.com>
- Fixes boo#1210931
- Add _multibuild to support Qt6
- Add qwt-6.2.0-qt6-pkgconfig.patch and
qwt-6.2.0-qt6-libsuffix.patch (courtesy of Fedora)
and qwt6-rpmlintrc
- Man pages are now installed in the flavored doc dir as per
upstream default
-------------------------------------------------------------------
Tue Jul 27 08:07:52 UTC 2021 - Dmitriy Perlow <dap.darkness@gmail.com>

155
qwt6.spec
View File

@@ -1,7 +1,7 @@
#
# spec file for package qwt6
#
# Copyright (c) 2021 SUSE LLC
# 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
@@ -16,106 +16,141 @@
#
%global qwt6_flavor @BUILD_FLAVOR@%{nil}
%if "%{qwt6_flavor}" == ""
ExclusiveArch: do_not_build
%endif
%if "%{qwt6_flavor}" == "qt6"
%define qt6 1
%define pkg_suffix -qt6
%define qt_descr Qt6
%endif
%if "%{qwt6_flavor}" == "qt5"
%define qt5 1
%define pkg_suffix -qt5
%define qt_descr Qt5
%endif
%define sover 6_2
Name: qwt6
%define mver 6
Name: qwt6%{?pkg_suffix}
Version: 6.2.0
Release: 0
Summary: Qt5 Widgets for Technical Applications
Summary: %{qt_descr} Widgets for Technical Applications
License: SUSE-QWT-1.0
Group: Development/Libraries/C and C++
URL: https://qwt.sourceforge.io
Source: https://sourceforge.net/projects/qwt/files/qwt/%{version}/qwt-%{version}.tar.bz2
Source99: qwt6-rpmlintrc
# PATCH-FIX-OPENSUSE to prevent 'ERROR: RPATH "/usr/local/qwt-6.1.0/lib" on
# /usr/lib(64)/qt(4,5)/plugins/designer/libqwt_designer_plugin.so is not allowed'.
Patch0: qwt-6.1.3-rpath.patch
# PATCH-FIX-OPENSUSE mkspecs.patch -- Use established settings for the .pc files
Patch2: qwt-6.1.4-mkspecs.patch
# PATCH-FIX-OPENSUSE qwt-6.2.0-qt6-pkgconfig.patch -- require correct libraries in Qt6 pkgconfig
Patch3: qwt-6.2.0-qt6-pkgconfig.patch
#
# PATCH-FIX-OPENSUSE qwt-6.2.0-qt6-libsuffix.patch -- change SONAMEs to avoid conflicts
Patch4: qwt-6.2.0-qt6-libsuffix.patch
BuildRequires: fdupes
BuildRequires: freetype2-devel
BuildRequires: gcc-c++
BuildRequires: pkgconfig
%if 0%{?qt5}
BuildRequires: pkgconfig(Qt5Concurrent)
BuildRequires: pkgconfig(Qt5Designer)
BuildRequires: pkgconfig(Qt5OpenGL)
BuildRequires: pkgconfig(Qt5PrintSupport)
BuildRequires: pkgconfig(Qt5Svg)
%endif
%if 0%{?qt6}
BuildRequires: pkgconfig(Qt6Concurrent)
BuildRequires: pkgconfig(Qt6Designer)
BuildRequires: pkgconfig(Qt6OpenGL)
BuildRequires: pkgconfig(Qt6PrintSupport)
BuildRequires: pkgconfig(Qt6Svg)
%endif
BuildRequires: pkgconfig(libpng)
%description
The Qwt(Qt5) library contains GUI Components and utility classes which are
The Qwt(%{qt_descr}) library contains GUI Components and utility classes which are
primarily useful for programs with a technical background. Beside a 2D
plot widget it provides scales, sliders, dials, compasses, thermometers,
wheels and knobs to control or display values, arrays, or ranges of type
double.
%package -n libqwt%{sover}
Summary: Shared library for Qt5 Widgets for Technical Applications
%package -n libqwt%{mver}-%{qwt6_flavor}-%{sover}
Summary: Shared library for %{qt_descr} Widgets for Technical Applications
Group: System/Libraries
Provides: lib%{name}-qt5-%{sover} = %{version}
Obsoletes: lib%{name}-qt5-%{sover} < %{version}
%description -n libqwt%{sover}
%description -n libqwt%{mver}-%{qwt6_flavor}-%{sover}
This package contains the shared library to run Technical Applications
developed with/for Qwt(Qt5).
%package devel
Summary: Include headers and Qt Designer plugin for Qwt(Qt5)
Group: Development/Libraries/C and C++
Requires: libqwt%{sover} = %{version}
Requires: libqwt%{mver}-%{qwt6_flavor}-%{sover} = %{version}
Requires: freetype2-devel
Requires: gcc-c++
%if 0%{?qt5}
Requires: pkgconfig(Qt5Concurrent)
Requires: pkgconfig(Qt5OpenGL)
Requires: pkgconfig(Qt5PrintSupport)
Requires: pkgconfig(Qt5Svg)
Requires: pkgconfig(Qt5Widgets)
%endif
%if 0%{?qt6}
Requires: pkgconfig(Qt6Concurrent)
Requires: pkgconfig(Qt6OpenGL)
Requires: pkgconfig(Qt6PrintSupport)
Requires: pkgconfig(Qt6Svg)
Requires: pkgconfig(Qt6Widgets)
%endif
Requires: pkgconfig(libpng)
Recommends: %{name}-designer
Recommends: %{name}-devel-doc
Recommends: %{name}-examples
%if 0%{?qt5}
Conflicts: otherproviders(qwt-qt5-devel)
Conflicts: qwt-devel
Provides: qwt-qt5-devel = %{version}
Obsoletes: qwt6-qt5-devel < %{version}
Provides: qwt6-qt5-devel = %{version}
%endif
%description devel
This package contains the header files of Qwt and its Qt designer plugin
in order to create Qt applications using the Qwt(Qt5) widgets.
in order to create Qt applications using the Qwt(%{qt_descr}) widgets.
%package examples
Summary: Example programs using Qwt(Qt5)
Summary: Example programs using Qwt(%{qt_descr})
License: SUSE-QWT-1.0 or BSD-3-Clause
Group: Development/Libraries/C and C++
Requires: %{name}-devel = %{version}
Provides: %{name}-qt5-examples = %{version}
Obsoletes: %{name}-qt5-examples < %{version}
%description examples
This package contains example programs demonstrating the Qwt(Qt5) widgets.
This package contains example programs demonstrating the Qwt(%{qt_descr}) widgets.
%package designer
Summary: Plugin for the Qt5 Interface designer
Summary: Plugin for the %{qt_descr} Interface designer
Group: Development/Tools/GUI Builders
Requires: %{name}-devel = %{version}
%if 0%{?qt5}
Conflicts: otherproviders(qwt-qt5-designer)
Provides: qwt-qt5-designer = %{version}
Provides: %{name}-qt5-designer = %{version}
Obsoletes: %{name}-qt5-designer < %{version}
%endif
%description designer
The %{name}-designer package contains the plugin for the Qt5 User Interface
designer tool.
%package devel-doc
Summary: Development documentation for Qwt(Qt5)
Summary: Development documentation for Qwt(%{qt_descr})
Group: Development/Libraries/C and C++
Requires: %{name}-devel = %{version}
Provides: %{name}-qt5-devel-doc = %{version}
Obsoletes: %{name}-qt5-devel-doc < %{version}
BuildArch: noarch
%description devel-doc
This package contains the development documentation of the Qwt(Qt5) widgets
This package contains the development documentation of the Qwt(%{qt_descr}) widgets
as is it created by doxygen.
%prep
@@ -124,57 +159,101 @@ as is it created by doxygen.
%build
mkdir build
pushd build
%if 0%{?qt5}
%qmake5 ..
%endif
%if 0%{?qt6}
%qmake6 ..
%endif
%make_jobs
popd
%install
pushd build
%if 0%{?qt5}
%qmake5_install
%endif
%if 0%{?qt6}
%qmake6_install
%endif
popd
# nothing references this
rm -f "%{buildroot}/%{_libqt5_libdir}/libqwt.so.6"
%if 0%{?qt5}
rm -f "%{buildroot}/%{_libqt5_libdir}/libqwt-%{qwt6_flavor}.so.6"
%endif
%if 0%{?qt6}
rm -f "%{buildroot}/%{_qt6_libdir}/libqwt-%{qwt6_flavor}.so.6"
%endif
# Qwt base examples
%if 0%{?qt5}
mkdir -p %{buildroot}%{%_libqt5_docdir}/qwt6
mkdir -p %{buildroot}%{_libqt5_examplesdir}/qwt6
cp -r examples %{buildroot}%{_libqt5_docdir}/qwt6/examples
cp -r build/examples/bin %{buildroot}%{_libqt5_examplesdir}/qwt6
mkdir -p %{buildroot}%{_mandir}
mv %{buildroot}%{_libqt5_docdir}/qwt6/man/man3 \
%{buildroot}%{_mandir}/
%endif
%if 0%{?qt6}
mkdir -p %{buildroot}%{%_qt6_docdir}/qwt6
mkdir -p %{buildroot}%{_qt6_examplesdir}/qwt6
cp -r examples %{buildroot}%{_qt6_docdir}/qwt6/examples
cp -r build/examples/bin %{buildroot}%{_qt6_examplesdir}/qwt6
%endif
%fdupes %{buildroot}%{_prefix}
%post -n libqwt%{sover} -p /sbin/ldconfig
%postun -n libqwt%{sover} -p /sbin/ldconfig
%post -n libqwt%{mver}-%{qwt6_flavor}-%{sover} -p /sbin/ldconfig
%postun -n libqwt%{mver}-%{qwt6_flavor}-%{sover} -p /sbin/ldconfig
%files -n libqwt%{sover}
%if 0%{?sle_version} != 120200
%files -n libqwt%{mver}-%{qwt6_flavor}-%{sover}
%license COPYING
%else
%doc COPYING
%if 0%{?qt5}
%{_libqt5_libdir}/libqwt-%{qwt6_flavor}.so.6.2*
%endif
%if 0%{?qt6}
%{_qt6_libdir}/libqwt-%{qwt6_flavor}.so.6.2*
%endif
%{_libqt5_libdir}/libqwt.so.6.2*
%files designer
%if 0%{?qt5}
%dir %{_libqt5_plugindir}/designer/
%{_libqt5_plugindir}/designer/*.so
%endif
%if 0%{?qt6}
%dir %{_qt6_pluginsdir}/designer/
%{_qt6_pluginsdir}/designer/*.so
%endif
%files devel
%doc README
%{_libqt5_libdir}/libqwt.so
%if 0%{?qt5}
%{_libqt5_libdir}/libqwt-%{qwt6_flavor}.so
%{_libqt5_libdir}/pkgconfig/Qt5Qwt6.pc
%{_libqt5_archdatadir}/mkspecs/features/
%dir %{_libqt5_includedir}/qwt6
%{_libqt5_includedir}/qwt6/*
%{_mandir}/man?/*.3%{ext_info}
%endif
%if 0%{?qt6}
%{_qt6_libdir}/libqwt-%{qwt6_flavor}.so
%{_qt6_libdir}/pkgconfig/%{qt_descr}Qwt6.pc
%{_qt6_archdatadir}/mkspecs/features/
%dir %{_qt6_includedir}/qwt6
%{_qt6_includedir}/qwt6/*
%endif
%files examples
%if 0%{?qt5}
%{_libqt5_examplesdir}/
%endif
%if 0%{?qt6}
%{_qt6_examplesdir}/
%endif
%files devel-doc
%if 0%{?qt5}
%doc %{_libqt5_docdir}/
%endif
%if 0%{?qt6}
%doc %{_qt6_docdir}/
%endif
%changelog