diff mbox series

[v2] package/qt5/qt53d: fix compilation error

Message ID 20240724085442.134872-1-ruepp.simon@mailbox.org
State New
Headers show
Series [v2] package/qt5/qt53d: fix compilation error | expand

Commit Message

Simon Ruepp July 24, 2024, 8:54 a.m. UTC
Compiling the qt53d package currently fails since the required
source files of the assimp library are missing. Because of this,
QT53D_EXTRA_DOWNLOADS along with a post extract hook is used
to separately download and extract the missing files.

Signed-off-by: Simon Ruepp <ruepp.simon@mailbox.org>
---
Changes v1 -> v2:
  - Use QT53D_EXTRA_DOWNLOADS and a post extract hook 
    instead of adding a new package to fix the problem
    (suggested by Thomas)

 package/qt5/qt53d/qt53d.hash |  1 +
 package/qt5/qt53d/qt53d.mk   | 10 ++++++++++
 2 files changed, 11 insertions(+)

Comments

Thomas Petazzoni July 24, 2024, 8:21 p.m. UTC | #1
Hello Simon,

On Wed, 24 Jul 2024 10:54:44 +0200
Simon Ruepp via buildroot <buildroot@buildroot.org> wrote:

> Compiling the qt53d package currently fails since the required
> source files of the assimp library are missing. Because of this,
> QT53D_EXTRA_DOWNLOADS along with a post extract hook is used
> to separately download and extract the missing files.
> 
> Signed-off-by: Simon Ruepp <ruepp.simon@mailbox.org>

Thanks for the patch. Could you document since when this is failing,
i.e which Buildroot commit introduced this regression?

Also, could you comment on how this will interact with:

ifeq ($(BR2_PACKAGE_ASSIMP),y)
QT53D_DEPENDENCIES += assimp
endif

that we have in qt53.mk. It seems like qt53d can use a system-provided
assimp instead of a bundled copy of assimp:

!ios:!tvos:!qcc:qtConfig(assimp):if(qtConfig(system-assimp)|android-clang|clang|win32-msvc|gcc) {
    SUBDIRS += assimp
}

(from src/plugins/sceneparsers/sceneparsers.pro). There is apparently a
-assimp config option that allows to chose between "system", "qt" and
"no".

Also, I see that src/3rdparty/patches/ has a bunch of patches for
assimp. Should these patches be applied? Are they important?

Thanks a lot for your additional investigations :-)

Thomas
Thomas Petazzoni Aug. 2, 2024, 5:18 p.m. UTC | #2
Hello Simon,

Gentle ping on the below questions, in order to be able to move forward
with resolving this qt53d build issue.

Thanks a lot for your contribution!

Thomas

On Wed, 24 Jul 2024 22:21:44 +0200
Thomas Petazzoni via buildroot <buildroot@buildroot.org> wrote:

> Hello Simon,
> 
> On Wed, 24 Jul 2024 10:54:44 +0200
> Simon Ruepp via buildroot <buildroot@buildroot.org> wrote:
> 
> > Compiling the qt53d package currently fails since the required
> > source files of the assimp library are missing. Because of this,
> > QT53D_EXTRA_DOWNLOADS along with a post extract hook is used
> > to separately download and extract the missing files.
> > 
> > Signed-off-by: Simon Ruepp <ruepp.simon@mailbox.org>  
> 
> Thanks for the patch. Could you document since when this is failing,
> i.e which Buildroot commit introduced this regression?
> 
> Also, could you comment on how this will interact with:
> 
> ifeq ($(BR2_PACKAGE_ASSIMP),y)
> QT53D_DEPENDENCIES += assimp
> endif
> 
> that we have in qt53.mk. It seems like qt53d can use a system-provided
> assimp instead of a bundled copy of assimp:
> 
> !ios:!tvos:!qcc:qtConfig(assimp):if(qtConfig(system-assimp)|android-clang|clang|win32-msvc|gcc) {
>     SUBDIRS += assimp
> }
> 
> (from src/plugins/sceneparsers/sceneparsers.pro). There is apparently a
> -assimp config option that allows to chose between "system", "qt" and
> "no".
> 
> Also, I see that src/3rdparty/patches/ has a bunch of patches for
> assimp. Should these patches be applied? Are they important?
> 
> Thanks a lot for your additional investigations :-)
> 
> Thomas
Simon Ruepp Aug. 4, 2024, 9:12 a.m. UTC | #3
Hello Thomas,

this fails since commit ca9e08277c473de1d0119768661ce0ba96559a7a. 

I am currently on vacation and will be back in three weeks. During that period I unfortunately don't have the time to look into the problem any further. 

Maybe someone can help me out? 

Best regards
Simon

> Thomas Petazzoni <thomas.petazzoni@bootlin.com> hat am 02.08.2024 19:18 CEST geschrieben:
> 
>  
> Hello Simon,
> 
> Gentle ping on the below questions, in order to be able to move forward
> with resolving this qt53d build issue.
> 
> Thanks a lot for your contribution!
> 
> Thomas
> 
> On Wed, 24 Jul 2024 22:21:44 +0200
> Thomas Petazzoni via buildroot <buildroot@buildroot.org> wrote:
> 
> > Hello Simon,
> > 
> > On Wed, 24 Jul 2024 10:54:44 +0200
> > Simon Ruepp via buildroot <buildroot@buildroot.org> wrote:
> > 
> > > Compiling the qt53d package currently fails since the required
> > > source files of the assimp library are missing. Because of this,
> > > QT53D_EXTRA_DOWNLOADS along with a post extract hook is used
> > > to separately download and extract the missing files.
> > > 
> > > Signed-off-by: Simon Ruepp <ruepp.simon@mailbox.org>  
> > 
> > Thanks for the patch. Could you document since when this is failing,
> > i.e which Buildroot commit introduced this regression?
> > 
> > Also, could you comment on how this will interact with:
> > 
> > ifeq ($(BR2_PACKAGE_ASSIMP),y)
> > QT53D_DEPENDENCIES += assimp
> > endif
> > 
> > that we have in qt53.mk. It seems like qt53d can use a system-provided
> > assimp instead of a bundled copy of assimp:
> > 
> > !ios:!tvos:!qcc:qtConfig(assimp):if(qtConfig(system-assimp)|android-clang|clang|win32-msvc|gcc) {
> >     SUBDIRS += assimp
> > }
> > 
> > (from src/plugins/sceneparsers/sceneparsers.pro). There is apparently a
> > -assimp config option that allows to chose between "system", "qt" and
> > "no".
> > 
> > Also, I see that src/3rdparty/patches/ has a bunch of patches for
> > assimp. Should these patches be applied? Are they important?
> > 
> > Thanks a lot for your additional investigations :-)
> > 
> > Thomas
> 
> 
> 
> -- 
> Thomas Petazzoni, co-owner and CEO, Bootlin
> Embedded Linux and Kernel engineering and training
> https://bootlin.com
Simon Ruepp Sept. 13, 2024, 9:26 a.m. UTC | #4
Hello Thomas, 

I did some further research and can now answer your remaining questions:

> It seems like qt53d can use a system-provided
> assimp instead of a bundled copy of assimp:
> 
> !ios:!tvos:!qcc:qtConfig(assimp):if(qtConfig(system-assimp)|android-clang|clang|win32-msvc|gcc) {
>     SUBDIRS += assimp
> }
> 
> (from src/plugins/sceneparsers/sceneparsers.pro). There is apparently a
> -assimp config option that allows to chose between "system", "qt" and
> "no".

I found the options you mentioned in the "config_help.txt" file located in the qt53d build directory and integrated them in the qt53d.mk with: 

ifeq ($(BR2_PACKAGE_ASSIMP),y)
QT53D_DEPENDENCIES += assimp
QT53D_CONF_OPTS += -system-assimp
else
QT53D_POST_EXTRACT_HOOKS += QT53D_ASSIMP_EXTRACT
QT53D_CONF_OPTS += -qt-assimp
endif

But the build still fails when trying to use the system-provided version:

make[4]: *** No rule to make target '/home/sr20608/src/buildroot/output/build/qt53d-9bf4d03e2515f7c454647d54542330b6e90f8191/src/3rdparty/assimp/src/code/Common/Assimp.cpp', needed by '.obj/Assimp.o'.  Stop.

> Also, I see that src/3rdparty/patches/ has a bunch of patches for
> assimp. Should these patches be applied? Are they important?

These patches don't seem to be important anymore since they already have been applied.

Best regards
Simon
diff mbox series

Patch

diff --git a/package/qt5/qt53d/qt53d.hash b/package/qt5/qt53d/qt53d.hash
index 65e6e8e380..49d6048eb0 100644
--- a/package/qt5/qt53d/qt53d.hash
+++ b/package/qt5/qt53d/qt53d.hash
@@ -1,5 +1,6 @@ 
 # Locally calculated
 sha256  31b3e52fb0b28f1e99dd25342a0204d239f7f42bcb25fb56393956904ef412ea  qt3d-9bf4d03e2515f7c454647d54542330b6e90f8191.tar.bz2
+sha256  00ec879857f511bed0c8b04ea4e7882a282051ec299245af487183c790e65539  qtquick3d-assimp-8f0c6b04b2257a520aaab38421b2e090204b69df.tar.bz2
 
 # Hashes for license files:
 sha256  edfe70e99be2a7c109d860b19204609e582720b211c50caedac729da372a1253  LICENSE.GPL
diff --git a/package/qt5/qt53d/qt53d.mk b/package/qt5/qt53d/qt53d.mk
index 8d9babd704..61e90b9360 100644
--- a/package/qt5/qt53d/qt53d.mk
+++ b/package/qt5/qt53d/qt53d.mk
@@ -11,6 +11,16 @@  QT53D_DEPENDENCIES = qt5declarative
 QT53D_INSTALL_STAGING = YES
 QT53D_SYNC_QT_HEADERS = YES
 
+QT53D_ASSIMP_VERSION = 8f0c6b04b2257a520aaab38421b2e090204b69df
+QT53D_ASSIMP_SOURCE = qtquick3d-assimp-$(QT53D_ASSIMP_VERSION).tar.bz2
+QT53D_EXTRA_DOWNLOADS = $(QT5_SITE)/qtquick3d-assimp/-/archive/$(QT53D_ASSIMP_VERSION)/$(QT53D_ASSIMP_SOURCE)
+
+define QT53D_ASSIMP_EXTRACT
+	$(call suitable-extractor,$(QT53D_ASSIMP_SOURCE)) $(QT53D_DL_DIR)/$(QT53D_ASSIMP_SOURCE) | \
+	$(TAR) --strip-components=1 -C $(@D)/src/3rdparty/assimp/src $(TAR_OPTIONS) -
+endef
+QT53D_POST_EXTRACT_HOOKS += QT53D_ASSIMP_EXTRACT
+
 ifeq ($(BR2_PACKAGE_ASSIMP),y)
 QT53D_DEPENDENCIES += assimp
 endif