Unknown source: SEVERE: You must specify a valid main manifest file: %s [SOLVED !]

Hi,

I’m trying to build my project for macos with defold 1.2.184, after some code refactoring, I got now this error :

Unknown source
  [i] SEVERE: You must specify a valid main manifest file: %s

I’ve checked my Mac OSX related settings under my game project file, the Info.plist field is set to the default one (aka /builtins/manifests/osx/Info.plist).

Here last lines of my editor log :

.../...
2021-07-17 22:07:54.213 1460306 [JavaFX Application Thread] WARN  editor.app-view - {:line 819}
clojure.lang.ExceptionInfo: Failed to build engine, status 422: java -jar /opt/local/bin/manifestmergetool.jar --platform osx --main /tmp/job15724308601068843620/upload/Info.plist  --lib /tmp/job15724308601068843620/upload/camera/manifests/osx/Info.plist  --out /tmp/job15724308601068843620/build/Info.plist
Jul 17, 2021 8:07:54 PM com.defold.manifestmergetool.ManifestMergeTool merge
SEVERE: You must specify a valid main manifest file: %s
	at editor.engine.build_errors$build_error.invokeStatic(build_errors.clj:463)
	at editor.engine.native_extensions$build_engine_archive.invokeStatic(native_extensions.clj:266)
	at editor.engine.native_extensions$get_engine_archive.invokeStatic(native_extensions.clj:310)
	at editor.engine$get_engine.invokeStatic(engine.clj:197)
	at editor.app_view$async_build_BANG_$fn__45856$fn__45862.invoke(app_view.clj:769)
	at editor.app_view$async_build_BANG_$fn__45856.invoke(app_view.clj:767)
	at clojure.core$binding_conveyor_fn$fn__5739.invoke(core.clj:2030)
	at clojure.lang.AFn.call(AFn.java:18)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:834)

According to you, what is broken in my project (I don’t understand how the settings of the native camera extension I plan to use, are merged with my project and I don’t think I changed anything here by the way…) ?

Thanks for your help.

To make it easier for our users to add in functionality from libraries, we have a feature where we merge the different manifest stubs from the libraries. Here’s the one in the camera extension: Info.plist. In this case, it automatically adds the key NSCameraUsageDescription. (Otherwise you’d have to do it manually)

As for the actual error, it’s stemming from that the main manifest file doesn’t exist. (code is here)
The error should ofc list the path, but there’s obviously a bug in that error reporting.

I don’t really understand what it’s complaining about actually, especially if you have the original Info.plist selected as the manifest file. :thinking:

What did you change?

The problem, like @jcash point out, seems to be related to the info.plist file and how it is merged with any extra values from your extensions.

Can you please double check that the Info.plist file is the original one from builtins? Also try restarting the editor. Which extensions and versions are you using?

As I try to use and understand how to use the monarch and the druid extensions together, I’ve added new extensions in my game project, I’ve opened several instances of the Defold editor to keep an eye on examples…

I’ve restarted my editor (and laptop) without any success. But, when I’ve removed, I’ve added again the native camera extension (this extension was mentioned in the editor log) and I’ve restarted the editor, this fixed the error (hurrah ! :smiley: :sweat_smile: ).

Thanks again for your quick help !

1 Like

Fake joy :disappointed_relieved: (Mathias you can remove your like :wink:)

I thought I was out of the woods but in fact the extension had not yet been added to my project. I restarted my editor again to see it added correctly. I launched a build and got the same error again.

So precisely, the error occurs when I add the extension https://github.com/defold/extension-camera/archive/master.zip to my project. My project already contains the following extensions :

https://github.com/defold/extension-qrcode/archive/1.1.zip
https://github.com/Insality/druid/archive/master.zip
https://github.com/defold/extension-webview/archive/master.zip
https://github.com/britzl/monarch/archive/master.zip

I have a doubt: I assumed that I had to add the camera extension for the qrcode extension to work, is this the case? Is there some kind of interdependence mechanism between external dependencies?

The qrcode extension needs a texture to work.
One way to get a texture of a qrcode is to use the camera extension.

Is there some kind of interdependence mechanism between external dependencies?

If so, it’s usually documented in the Readme.md

I have a lead : I made a mistake, I did not use the correct native camera extension. The QRCode extension (I plan to use) uses this extension :

https://github.com/defold/extension-camera/archive/dev-android.zip

While I was looking to use the extension :

https://github.com/defold/extension-camera/archive/master.zip 

If I use the correct extension, I no longer have the error (editor restarted).

However, I noticed a weird thing: if I remove the qrcode extension and use the “wrong” one, I still get the error in question. This does not bother me because this extension is only compatible with ios and macos, I prefer the other which is supposed to work with QRCode on the majority of ios*, android platforms.
(*) : despite its filename !

1 Like