Wireshark-dev: Re: [Wireshark-dev] Error when running "nmake -f makefile.nmake packaging" on wi

From: Pascal Quantin <pascal.quantin@xxxxxxxxx>
Date: Mon, 11 Aug 2014 15:09:18 +0200



2014-08-11 15:07 GMT+02:00 Pascal Quantin <pascal.quantin@xxxxxxxxx>:

2014-08-11 15:02 GMT+02:00 Alexis La Goutte <alexis.lagoutte@xxxxxxxxx>:

On Mon, Aug 11, 2014 at 2:45 PM, Anders Broman
<anders.broman@xxxxxxxxxxxx> wrote:
>
>
>
>
> From: wireshark-dev-bounces@xxxxxxxxxxxxx
> [mailto:wireshark-dev-bounces@xxxxxxxxxxxxx] On Behalf Of Graham Bloice
> Sent: den 11 augusti 2014 14:04
>
>
> To: Developer support list for Wireshark
> Subject: Re: [Wireshark-dev] Error when running "nmake -f makefile.nmake
> packaging" on win7 64 with MSVC 2012
>
>
>
> On 11 August 2014 11:51, Anders Broman <anders.broman@xxxxxxxxxxxx> wrote:
>
> Invalid command: Split-Path
>
> !include: error in script: "qt-dll-manifest.nsh" on line 1
>
> Error in script "wireshark.nsi" on line 791 -- aborting creation process
>
>
>
> qt-dll-manifest.nsh:
>
>
>
> Split-Path : Cannot bind argument to parameter 'Path' because it is null.
>
> At C:\xxx\trunk\packaging\nsis\windeployqt-to-nsis.ps1:23 char:22
>
> +     $dir = Split-Path <<<<  -Parent $entry
>
>     + CategoryInfo          : InvalidData: (:) [Split-Path],
> ParameterBindingV
>
>    alidationException
>
>     + FullyQualifiedErrorId :
> ParameterArgumentValidationErrorNullNotAllowed,M
>
>    icrosoft.PowerShell.Commands.SplitPathCommand
>
> File "..\..\wireshark-qt-release\"
>
> File /r "..\..\wireshark-qt-release\"
>
>
>
> Ideas?
>
>
>
> Regards
>
> Anders
>
>
>
>
>
>
> packagins\nsis\Makefile.nmake calls windeployqt-to-nsis.ps1 to create the
> qt-dll-manifest.nsh file listing all the qt dlls required for the installer.
>
>
>
> In the script, windeployqt is called to return the list of DLL's and then on
> Line 23 of the script calls split-path to get the path component of the DLL.
> From the error it seems that one of the entries is null.
>
>
>
> Try this:
>
>
>
> In a Powershell prompt at your top level source directory:
>
>
>
> <code>
>
> $env:Path += ";PATH\TO\QT\BIN"
>
> windeployqt --release --no-compiler-runtime --list relative
> wireshark-qt-release\qtshark.exe
>
> </code>
>
>
>
> --
>
> Graham Bloice
>
>
>
> Hi,
>
> Not sure I got I right:
>
>
>
> C:\xxx\trunk>powershell
>
> Windows PowerShell
>
> Copyright (C) 2009 Microsoft Corporation. All rights reserved.
>
>
>
> PS C:\xxx\trunk> $env:path+="C:\Qt\Qt5.2.1\5.2.1\msvc2012_64\bin"
>
> PS C:\xxx\trunk> windeployqt --release --no-compiler-runtime --list relative
> wireshark-qt-release\qtshark.exe
>
> The term 'windeployqt' is not recognized as the name of a cmdlet, function,
> script file, or operable program. Check the spelling of the name, or if a
> path was
>
> included, verify that the path is correct and try again.
>
> At line:1 char:12
>
> + windeployqt <<<<  --release --no-compiler-runtime --list relative
> wireshark-q
>
> t-release\qtshark.exe
>
>     + CategoryInfo          : ObjectNotFound: (windeployqt:String) [],
> Command
>
>    NotFoundException
>
>     + FullyQualifiedErrorId : CommandNotFoundException
>
>
>
> Just running the command without parameters and the full path gives
>
> PS C:\xxx\trunk> C:\Qt\Qt5.2.1\5.2.1\msvc2012_64\bin\windeployqt.exe
>
> Please specify the binary or folder.
>
>
>
> Usage: C:\Qt\Qt5.2.1\5.2.1\msvc2012_64\bin\windeployqt.exe [options] [file]
>
> Qt Deploy Tool 5.2.1
>
>
>
> Options:
>
>   -?, -h, --help            Displays this help.
>
>   -v, --version             Displays version information.
>
>   --dir <directory>         Use directory instead of binary directory.
>
>   --libdir <path>           Copy libraries to path.
>
>   --force                   Force updating files.
>
>   --no-plugins              Skip plugin deployment.
>
>   --no-libraries            Skip library deployment.
>
>   --qmldir <directory>      Scan for QML-imports starting from directory.
>
>   --no-quick-import         Skip deployment of Qt Quick imports.
>
>   --no-translations         Skip deployment of translations.
>
>   --no-system-d3d-compiler  Skip deployment of the system D3D compiler.
>
>   --webkit2                 Deployment of WebKit2 (web process).
>
>   --no-webkit2              Skip deployment of WebKit2.
>
>   --json                    Print to stdout in JSON format.
>
>   --verbose <level>         Verbose level.
>
>   --bluetooth               Add Qt5Bluetooth module.
>
>   --no-bluetooth            Remove Qt5Bluetooth module.
>
>   --clucene                 Add Qt5CLucene module.
>
>   --no-clucene              Remove Qt5CLucene module.
>
>   --concurrent              Add Qt5Concurrent module.
>
>   --no-concurrent           Remove Qt5Concurrent module.
>
>
>
> Qt libraries can be added by passing their name (-xml) or removed by passing
>
> the name prepended by --no- (--no-xml). Available libraries:
>
> bluetooth clucene concurrent core declarative designercomponents designer
> gui
>
> clucene qthelp multimedia multimediawidgets network nfc opengl positioning
>
> printsupport qml quick quickparticles script scripttools sensors serialport
> sql
>
> svg test widgets winextras xml xmlpatterns webkit
>
>
>
> Arguments:
>
>   [file]                    Binary or directory containing the binary.
>
>
There is no some issue with Qt 5.2.x ? and windeployqt ?
>

You are right, in QtShark.pro we use windeployqt only when Qt >= 5.3 but this test is missing from the NSIS installer.

In case we cannot guees the Qt version from the NSIS makefile, dhe easiest could be to remove windeployqt.exe from C:\Qt\Qt5.2.1\5.2.1\msvc2012_64\bin. This way the NSIS Makefile.nmake will fallback to an old method (that might not work with Qt 5.2.1...). or simply upgrade to Qt 5.3 :)