View Issue Details

IDProjectCategoryView StatusLast Update
0017609ScribusBuild Systempublic2025-08-30 05:55
Reportermelwyncarlo Assigned To 
PrioritynormalSeveritymajorReproducibilityalways
Status newResolutionopen 
Platformx86-64OSUbuntu (Linux)OS Version24.04.3 LTS
Product Version1.7.1.svn 
Summary0017609: Cannot build on Ubuntu using Cmake and Qt6
DescriptionIt results in the following error message:
In ads_globals.cpp: <qpa/qplatformnativeinterface.h> not found.

This is true, as:
1. I could not find the file anywhere in my Qt6 folders.
2. Qt has stated these are private files and are subject to changes/removal even for minor releases.
3. This header file has been removed in Qt v6.0. Reference: https://www.qt.io/blog/platform-apis-in-qt-6
4. This header file has been replaced with QNativeInterface (qnativeinterface.h), supporting X11 (the reason why we need it), starting Qt v6.2. References: https://doc.qt.io/qt-6/qnativeinterface.html and https://doc.qt.io/qt-6/qnativeinterface-qx11application.html

I've made the necessary adjustments in my diff attachment, which has successfully enabled me to build (cmake, make, and install) on my laptop (which contain specifications as per the above given profile).
Steps To Reproducecmake -DCMAKE_INSTALL_PREFIX:PATH=/home/USERNAME/PATH_TO_SCRIBUS_1_7_1_SVN/scribus/install -DWANT_DEBUG=1 -DWANT_GRAPHICSMAGICK=1 -DWITH_PODOFO=1 -DWITH_BOOST=1 -DWANT_VERSIONING=0 -DWANT_GUI_LANG="en_GB;en" -DCMAKE_INCLUDE_PATH=/usr/include/x86_64-linux-gnu/qt6 ..
Additional InformationQt v6.7 has introduced support for Wayland for the Advanced Docking System, if that is something you wish to look into as well. Reference: https://doc.qt.io/qt-6/qnativeinterface-qwaylandapplication.html
Tagsdependencies, Qt6, ubuntu, x11
PatchNo

Activities

melwyncarlo

2025-08-28 14:19

reporter   ~0052978

My diff attachment is attached below.

ale

2025-08-28 14:55

manager   ~0052979

it's not attached : - )

melwyncarlo

2025-08-28 15:20

reporter   ~0052980

I had attached it.
But then I received a message stating that I was restricted to just 10 actions within 3600 seconds.
I have attached it here again, if it makes it through.
melwyn_carlo_bug_id_0017609.diff (2,889 bytes)   
Index: CMakeLists_Dependencies.cmake
===================================================================
--- CMakeLists_Dependencies.cmake	(revision 27002)
+++ CMakeLists_Dependencies.cmake	(working copy)
@@ -211,8 +211,8 @@
 #>>LibXML2
 
 #<<JPEG XL
-set(JXL_DIR ${CMAKE_MODULE_PATH})
-#find_package(JXL)
+#set(JXL_DIR ${CMAKE_MODULE_PATH})
+find_package(JXL)
 if(JXL_FOUND)
 	set(HAVE_JXL ON)
 	message("JPEG XL Library Found OK")
@@ -266,6 +266,9 @@
 		cmake_policy(SET CMP0167 OLD)
 		find_package(Boost)
 	endif()
+	if (NOT Boost_FOUND)
+		find_package(Boost)
+	endif()
 	if (Boost_FOUND)
 		message("Boost Library Found OK")
 		set(HAVE_BOOST ON)
Index: scribus/third_party/Qt-Advanced-Docking-System/src/CMakeLists.txt
===================================================================
--- scribus/third_party/Qt-Advanced-Docking-System/src/CMakeLists.txt	(revision 27002)
+++ scribus/third_party/Qt-Advanced-Docking-System/src/CMakeLists.txt	(working copy)
@@ -84,6 +84,9 @@
 target_link_libraries(${library_name} PUBLIC Qt${QT_VERSION_MAJOR}::Core 
                                                Qt${QT_VERSION_MAJOR}::Gui 
                                                Qt${QT_VERSION_MAJOR}::Widgets)
+if(QT_VERSION_MAJOR STREQUAL "6")
+    target_link_libraries(${library_name} PRIVATE Qt6::Gui)
+endif()
 if (UNIX AND NOT APPLE)
   if (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
       find_package(X11 REQUIRED)
Index: scribus/third_party/Qt-Advanced-Docking-System/src/ads_globals.cpp
===================================================================
--- scribus/third_party/Qt-Advanced-Docking-System/src/ads_globals.cpp	(revision 27002)
+++ scribus/third_party/Qt-Advanced-Docking-System/src/ads_globals.cpp	(working copy)
@@ -32,6 +32,7 @@
 #include <QPainter>
 #include <QAbstractButton>
 #include <QStyle>
+#include <QtGlobal>
 
 #include "DockSplitter.h"
 #include "DockManager.h"
@@ -39,10 +40,14 @@
 #include "ads_globals.h"
 
 #if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
-#include <QSettings>
-#include <QFile>
-#include <QApplication>
-#include <qpa/qplatformnativeinterface.h>
+	#include <QSettings>
+	#include <QFile>
+	#include <QApplication>
+	#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
+		#include <qnativeinterface.h>
+	#else
+		#include <qpa/qplatformnativeinterface.h>
+	#endif
 #endif
 
 namespace ads
@@ -69,12 +74,19 @@
 {
 	if (!qApp)
 		return nullptr;
+	#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
+		if (auto *x11Application = qGuiApp->nativeInterface<QNativeInterface::QX11Application>()) {
+			return x11Application->connection();
+		} else {
+			return nullptr;
+		}
+	#else
 	QPlatformNativeInterface *native = qApp->platformNativeInterface();
 	if (!native)
 		return nullptr;
-
 	void *connection = native->nativeResourceForIntegration(QByteArray("connection"));
 	return reinterpret_cast<xcb_connection_t *>(connection);
+	#endif
 }

cbradney

2025-08-29 20:01

administrator   ~0052985

sudo apt-get install libqt6core5compat6-dev libqt6svg6-dev linguist-qt6 qt6-base-dev qt6-base-dev-tools qt6-base-private-dev qt6-gtk-platformtheme qt6-image-formats-plugins qt6-l10n-tools qt6-svg-dev qt6-tools-dev qt6-tools-dev-tools qt6-translations-l10n


qt6-base-private-dev is the package you are looking for...

melwyncarlo

2025-08-30 05:00

reporter   ~0052986

Thank very much, cbradney. That was really helpful.
qt6-base-private-dev was missing indeed.

However, this package is still private and on the verge of being deprecated.
Also, Ubuntu launchpad states: Use at your own risk.
Reference: https://launchpad.net/ubuntu/noble/+package/qt6-base-private-dev

Shouldn't we eventually port it to Qt's newer public QNativeInterface API?

melwyncarlo

2025-08-30 05:01

reporter   ~0052987

Furthermore, it would also be better if the build process documentation for Ubuntu was updated and simplified.
Reference: https://wiki.scribus.net/canvas/Debian_Ubuntu_Building_From_Source

For example: sudo apt update && sudo apt-get build-dep scribus-ng
The latter command results in the following error message:
E: Unable to find a source package for scribus-ng

Even though I did:
sudo gedit /etc/apt/sources.list

and then added the following lines:
deb-src http://in.archive.ubuntu.com/ubuntu/ noble main restricted
deb-src http://in.archive.ubuntu.com/ubuntu/ noble-updates main restricted
deb-src http://in.archive.ubuntu.com/ubuntu/ noble universe
deb-src http://in.archive.ubuntu.com/ubuntu/ noble-updates universe
deb-src http://in.archive.ubuntu.com/ubuntu/ noble multiverse
deb-src http://in.archive.ubuntu.com/ubuntu/ noble-updates multiverse
deb-src http://in.archive.ubuntu.com/ubuntu/ noble-backports main restricted universe multiverse

sudo apt-get build-dep scribus
This however resulted in no errors, but it didn't install everything.

ale

2025-08-30 05:55

manager   ~0052988

scribus-ng is not maintained anymore and, currently, i guess that the Scribus development version is not packaged for Ubuntu anymore.

Nowadays ,the best way to find out the packages that are needed is the list of packages for Debian in the BUILDING file in the Scribus repository or the recipe for the Docker image used on the Gitlab mirror for building the "nightly" Appimage.

Issue History

Date Modified Username Field Change
2025-08-28 14:17 melwyncarlo New Issue
2025-08-28 14:17 melwyncarlo Tag Attached: dependencies
2025-08-28 14:17 melwyncarlo Tag Attached: Qt6
2025-08-28 14:17 melwyncarlo Tag Attached: ubuntu
2025-08-28 14:17 melwyncarlo Tag Attached: x11
2025-08-28 14:19 melwyncarlo Note Added: 0052978
2025-08-28 14:55 ale Note Added: 0052979
2025-08-28 15:20 melwyncarlo Note Added: 0052980
2025-08-28 15:20 melwyncarlo File Added: melwyn_carlo_bug_id_0017609.diff
2025-08-29 20:01 cbradney Note Added: 0052985
2025-08-30 05:00 melwyncarlo Note Added: 0052986
2025-08-30 05:01 melwyncarlo Note Added: 0052987
2025-08-30 05:55 ale Note Added: 0052988