Bug 457148

Summary: digiKam Windows bundles build from Binary Factory with Craft : MSVC version can be signed but not MinGW
Product: [Unmaintained] Craft Reporter: caulier.gilles
Component: BlueprintsAssignee: Hannah von Reth <vonreth>
Status: REPORTED ---    
Severity: normal CC: bcooksley, kde-windows, thomas.friedrichsmeier
Priority: NOR    
Version: master   
Target Milestone: ---   
Platform: Microsoft Windows   
OS: Microsoft Windows   
URL: https://binary-factory.kde.org/view/Windows%20MingW/job/Digikam_Nightly_mingw64/
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description caulier.gilles 2022-07-26 06:00:01 UTC
Hi,

digiKam compile fine for Windows with Craft in Binary Factory using MSVC and MinGW targets.

MVSC version is signed and packaging is complete. Installer and application work fine.
MinGW version cannot be signed. See the log file:

...
04:07:14  Delete symbols: C:\Craft\BinaryFactory\windows-mingw_64-gcc\build\extragear\digikam\archive\bin\designer\sonnetui5widgets.dll.debug
04:07:14  Delete symbols: C:\Craft\BinaryFactory\windows-mingw_64-gcc\build\extragear\digikam\archive\bin\bearer\qgenericbearer.dll.debug
04:07:14  Delete symbols: C:\Craft\BinaryFactory\windows-mingw_64-gcc\build\extragear\digikam\archive\bin\audio\qtaudio_windows.dll.debug
04:07:14  Overriding:	C:\Craft\BinaryFactory\windows-mingw_64-gcc\build\extragear\digikam\archive\Assets\128-apps-digikam.png with
04:07:14  		C:\_\9b0777e7\digikam\core\data\icons\apps\128-apps-digikam.png
04:07:14  executing command: makeappx pack /d C:\Craft\BinaryFactory\windows-mingw_64-gcc\build\extragear\digikam\archive /p C:\Craft\BinaryFactory\windows-mingw_64-gcc\build\extragear\digikam\artifacts\digikam-master-946-windows-mingw_64-gcc.appx
04:07:14  *** Craft package succeeded: extragear/digikam after 1 minute 17 seconds ***
04:07:14  [WinError 2] The system cannot find the file specified
04:07:14  Traceback (most recent call last):
04:07:14    File "C:\Craft\BinaryFactory\windows-mingw_64-gcc\craft\bin\craft.py", line 274, in <module>
04:07:14      success = main(timer)
04:07:14    File "C:\Craft\BinaryFactory\windows-mingw_64-gcc\craft\bin\craft.py", line 264, in main
04:07:14      if not CraftCommands.run(package, action, tempArgs):
04:07:14    File "C:\Craft\BinaryFactory\windows-mingw_64-gcc\craft\bin\CraftCommands.py", line 431, in run
04:07:14      if not handlePackage(info, action, directTargets=directTargets):
04:07:14    File "C:\Craft\BinaryFactory\windows-mingw_64-gcc\craft\bin\CraftCommands.py", line 94, in handlePackage
04:07:14      success = doExec(package, action)
04:07:14    File "C:\Craft\BinaryFactory\windows-mingw_64-gcc\craft\bin\CraftCommands.py", line 58, in doExec
04:07:14      ret = package.instance.runAction(action)
04:07:14    File "C:\Craft\BinaryFactory\windows-mingw_64-gcc\craft\bin\Package\PackageBase.py", line 247, in runAction
04:07:14      if not getattr(self, step)():
04:07:14    File "C:\Craft\BinaryFactory\blueprints\craft-blueprints-kde\extragear\digikam\digikam.py", line 288, in createPackage
04:07:14      return TypePackager.createPackage(self)
04:07:14    File "C:\Craft\BinaryFactory\windows-mingw_64-gcc\craft\bin\Packager\TypePackager.py", line 85, in createPackage
04:07:14      return self.__packager.createPackage(self)
04:07:14    File "C:\Craft\BinaryFactory\windows-mingw_64-gcc\craft\bin\Packager\AppxPackager.py", line 253, in createPackage
04:07:14      if not self.__createAppX(defines):
04:07:14    File "C:\Craft\BinaryFactory\windows-mingw_64-gcc\craft\bin\Packager\AppxPackager.py", line 214, in __createAppX
04:07:14      utils.system(["makeappx", "pack", "/d", self.archiveDir(), "/p", archive]))
04:07:14    File "C:\Craft\BinaryFactory\windows-mingw_64-gcc\craft\bin\utils.py", line 204, in system
04:07:14      return systemWithoutShell(cmd, displayProgress=displayProgress, logCommand=logCommand, acceptableExitCodes=acceptableExitCodes, **kw)
04:07:14    File "C:\Craft\BinaryFactory\windows-mingw_64-gcc\craft\bin\utils.py", line 294, in systemWithoutShell
04:07:14      proc = subprocess.Popen(cmd, **kw)
04:07:14    File "C:\Program Files\Python38\lib\subprocess.py", line 854, in __init__
04:07:14      self._execute_child(args, executable, preexec_fn, close_fds,
04:07:14    File "C:\Program Files\Python38\lib\subprocess.py", line 1307, in _execute_child
04:07:14      hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
04:07:14  FileNotFoundError: [WinError 2] The system cannot find the file specified
04:07:14  Generate Settings
04:07:14  Command C:\Program Files\Python38\python.exe -u C:\Craft\BinaryFactory\windows-mingw_64-gcc\craft\bin\craft.py --options libs/ffmpeg.version=4.4 --options [Packager]PackageType=AppxPackager 
04:07:14  --target master --package digikam failed with exit code: 1
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
04:07:14  ERROR: script returned exit code 1
[Pipeline] // catchError
[Pipeline] deleteDir
[Pipeline] }
[Pipeline] // timestamps
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: FAILURE

Why ? It miss something ?

Best

Gilles Caulier
Comment 1 Ben Cooksley 2022-07-26 11:17:14 UTC
From my understanding appx bundles can only be made when using MSVC as your compiler so this is expected behaviour.
Comment 2 Hannah von Reth 2022-07-26 11:21:42 UTC
Yes only msvc, mingw might work some how but...

For now it should print a better error message.
Comment 3 Thomas Friedrichsmeier 2022-07-26 11:26:07 UTC
FWIW, we ran into the same problem in RKWard. Since MingW builds are more oft an emergency-fallback option for us, the solution was this:

https://invent.kde.org/sysadmin/binary-factory-tooling/-/commit/1d3c456b3ad6ee4556acc2b90a9980f7f845c5bd

Note that this was after first proposing to disable AppX-building on MinGW:

https://invent.kde.org/sysadmin/binary-factory-tooling/-/merge_requests/289
Comment 4 caulier.gilles 2022-07-26 13:59:06 UTC
Thanks Thomas, i will take a look in your code...

Gilles