Wireshark-dev: Re: [Wireshark-dev] Error when running "nmake -f makefile.nmake packaging" on wi
From: Gerald Combs <gerald@xxxxxxxxxxxxx>
Date: Mon, 11 Aug 2014 09:19:43 -0700
On 8/11/14 7:53 AM, Graham Bloice wrote:
> On 11 August 2014 15:21, Anders Broman <anders.broman@xxxxxxxxxxxx
> <mailto:anders.broman@xxxxxxxxxxxx>> wrote:
> 
>     __ __
> 
>     __ __
> 
>     *From:*wireshark-dev-bounces@xxxxxxxxxxxxx
>     <mailto:wireshark-dev-bounces@xxxxxxxxxxxxx>
>     [mailto:wireshark-dev-bounces@xxxxxxxxxxxxx
>     <mailto:wireshark-dev-bounces@xxxxxxxxxxxxx>] *On Behalf Of *Graham
>     Bloice
>     *Sent:* den 11 augusti 2014 15:18
> 
> 
>     *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 13:45, Anders Broman <anders.broman@xxxxxxxxxxxx
>     <mailto:anders.broman@xxxxxxxxxxxx>> wrote:____
> 
>      ____
> 
>      ____
> 
>     *From:*wireshark-dev-bounces@xxxxxxxxxxxxx
>     <mailto:wireshark-dev-bounces@xxxxxxxxxxxxx>
>     [mailto: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
>     <mailto: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"____
> 
>     __ __
> 
>     Looks like you've missed the ";" path separator that should be at
>     the front of the string.  Start with a new PS prompt (as you've
>     broken the path in that one) and try again.____
> 
>     __ __
> 
>     I'd really like to see what that 5.2.1 windeployqt gives out, but as
>     the others have said, windeployqt in < 5.3.x looks to be broken.____
> 
>     __ __
> 
>     Argh, Yes of course:____
> 
>     __ __
> 
>     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
>     rela____
> 
>     tive wireshark-qt-release\qtshark.exe____
> 
>     Unknown options: release, no-compiler-runtime, list.____
> 
>     __ __
> 
>     So now we are getting to the problem Alexis pointed out; windeployqt
>     does not have the same parameter sets in Qt 5.2.1____
> 
>     >...). or simply upgrade to Qt 5.3 :)____
> 
>     Last time I checked there was no Qt 5.3 for MSVC 2012, MSVC 2013
>     requires IE version(something) which I don’t have and I have a
>     company____
> 
>     Win7 version which I can’t (easily any way) influence the version of
>     the components…____
> 
>     __ __
> 
> 
> 
> Yes, I think for Qt < 5.3 we need to fallback to some other scheme, i.e.
> a hard-coded list of DLL's.

Is there a way to get nmake to compare version strings? We can get the
Qt version easily enough using `qmake -query QT_VERSION`. Otherwise
we'll probably have to add more DLL checks to
packaging/nsis/Makefile.nmake. According to the release notes
Qt5WebSockets.dll was added in 5.3. Although I suppose another
alternative might be to move the Qt version detection logic from
packaging/nsis/Makefile.nmake to windeployqt-to-nsis.