neuronsimulator / nrn

NEURON Simulator
http://nrn.readthedocs.io
Other
392 stars 115 forks source link

How to build NEURON on windows? #319

Closed pramodk closed 1 year ago

pramodk commented 4 years ago

This issues is to document process to build Windows instructions.

Here are brief steps (WIP):

msys2.org
download x86_64 installer and follow instructions. i.e.
  run the installer
    tick the "run MSYS now" at end
  in the terminal ---
  pacman -Syu
  close msysw terminal and open any msys2 terminal again from start menu.
  pacman -Su #until no further installations
  pacman -S git
  pacman -S zip unzip

after installing from above
pacman -S --needed base-devel mingw-w64-x86_64-toolchain
(I chose default=all for the first group and '3' for the toolchain)

for complete mpi see mingw_notes
for more or less complete python
pacman -S mingw-w64-x86_64-cython
#note above failed at end. Succeeded with
#pacman -R mingw-w64-x86_64-cython
#pacman -S mingw-w64-x86_64-cython2
#and add to configure, CYTHON=cython2

#pacman -S mingw64/mingw-w64-x86_64-python3-scipy  #python 3.6.4
Note: the pacman installed version of python has a library naming
convention that is similar to linux versions and so is not compatible
with windows versions. i.e. python3.6m.dll instead of python36.dll .
For this reason it is best to download and install windows versions of
python from python.org. In my case I installed (into drive E:)
python27, python35, and python36 respectively from
python-2.7.14.amd64.msi
python-3.5.4-amd64.exe
python-3.6.4-amd64.exe
and the "howto" file assumes this. These do not have scipy, so for
testing rxd, I also have a version of anaconda installed.

Installed msmpisdk.msi and MsMpiSetup.exe in c:\ms-mpi (version 10.0)

version 10 Lib is already lib

Change Bin, Lib, Include to bin, lib, include

cp c:/Windows/System32/msmpi.dll c:/ms-mpi/lib/x64 cp c:/Windows/SysWoW64/msmpi.dll c:/ms-mpi/lib/x86 #optional

stdint.h now in version 10 so next not needed.

add #include in /c/ms-mpi/include/mpi.h

important. Wasted a day because I did not do this. the symptom is a

crash in libnrnmpi.dll

I don't know if this is needed anymore or not for version 10 as

libmsmpi.a does exist.

gendef msmpi.dll # creates msmpi.def

x86_64-w64-mingw32-dlltool -d msmpi.def -l libmsmpi.a -D msmpi.dll

dlltool -d msmpi.def -l libmsmpi.a -D msmpi.dll # creates libmsmpi.a

gendef can be built from mingw source via

git clone https://github.com/msys2-contrib/mingw-w64

cd mingw-w64/mingw-w64-tools/gendef

./configure --prefix=pwd

make # may have to get rid of the -Werror

cp gendef.exe /mingw64/bin



- https://github.com/neuronsimulator/nrn/blob/master/mingw_files/nrnmingwenv.sh
nrnhines commented 4 years ago

Install latest Visual Studio

It will be nice to get to this point but there is a current issue in that the nrn/mingw_files/vcenv.sh file that sets the environment assumes Visual Studio 2015. In particular, use of Visual Studio 2017 will generate an "Error: Unable to find vcvarsall.bat" when processing the cython generated extension files in share/lib/python/neuron/rxd/geometry3d (those extensions are the only place where visual c is used). I suspect the same issue will occur with Visual Studio 2019 and I do not know if an update to vcenv.sh would fix the issue. This whole area is worrisome because of https://stackoverflow.com/questions/2817869/error-unable-to-find-vcvarsall-bat and https://devblogs.microsoft.com/python/unable-to-find-vcvarsall-bat/ The main reason visual c is used at this place is to avoid a crash when building against python 3.5. Ironically, I have not been able to use visual c to build against python 2.7 and in that case we are using the mingw compiler. For Python 3.6 and greater, visual c successfully compiles the cython generated cpp files without change and it is also possible with the minor cpp changes done by the CMakeLists.txt in that folder, to compile with gcc.

ramcdougal commented 4 years ago

Is there an implicit policy for how long NEURON supports a given Python version?

We could continue supporting 3.5 using a more complicated compilation process, but given that the current version is 3.8:

Should we provide simple compile instructions that work in the 3.6+ case?

I'm guessing almost anyone who needs to compile on Windows would be using a more recent Python?

nrnhines commented 4 years ago

There are no statistics on usage. The question is a good one. At the moment I don't know with complete clarity all the issues surrounding mingw gcc, visual c, python-x.x setup.py, and the bit of hacking of cython generated cpp files. I spent several weeks in October in an attempt to simplify the build of the geometry3d extensions and after myriad failures ended up with the exact same substantive work arounds as was used by the autotools build. One detail for a mingw gcc build of those extensions is the requirement to observe the MSC version number that Python was built with and correspondingly modify the, eg, Python37/Lib/distutils/cygwincompiler.py accordingly. in the Python37 case that means the addition of the lines

  elif msc_ver == '1915':
    return ['msvcrt']

Perhaps the happy day that all this has been settled is already here and it only suffices to abandon 3.5 (and someday 2.7)

nrnhines commented 4 years ago

I see from https://packaging.python.org/guides/packaging-binary-extensions/#id9 Note that from Python 3.5 onwards, Visual Studio works in a backward compatible way, which means that any future version of Visual Studio will be able to build Python extensions for all Python versions from 3.5 onwards.

so an update of vcenv.sh sounds promising

pramodk commented 4 years ago

Ok.

I am going through the old instructions and documenting the process. I will post an update once done (bit slow progress as I am attending conference).

pramodk commented 4 years ago

Last year I followed the windows build process. I don't have detailed instructions (yet) but uploading screenshots that I took step-by-step:

Configuration of VirtualBox with Windows

Screenshot 2019-11-14 at 13 58 57 Screenshot 2019-11-14 at 13 59 30 Screenshot 2019-11-14 at 13 59 46 Screenshot 2019-11-14 at 13 59 54 Screenshot 2019-11-14 at 14 00 04 Screenshot 2019-11-14 at 14 00 20 Screenshot 2019-11-14 at 14 00 36 Screenshot 2019-11-14 at 14 01 20 Screenshot 2019-11-14 at 14 01 30

Visual Studio Installation

Screenshot 2019-11-17 at 15 42 29 Screenshot 2019-11-17 at 15 43 45 Screenshot 2019-11-17 at 15 48 57

MSYS2 Installation

Screenshot 2019-11-17 at 17 18 43 Screenshot 2019-11-17 at 17 20 06 Screenshot 2019-11-17 at 17 20 25 Screenshot 2019-11-17 at 17 24 55 Screenshot 2019-11-18 at 13 11 30

MSYS2 Package Installation Using Pacman

Screenshot 2019-11-17 at 17 23 35 Screenshot 2019-11-17 at 17 25 57 Screenshot 2019-11-17 at 17 30 13 Screenshot 2019-11-17 at 17 33 55

Microsoft MPI and MPI SDK Installation

Screenshot 2019-11-17 at 17 40 39 Screenshot 2019-11-17 at 17 40 54 Screenshot 2019-11-17 at 17 42 11 Screenshot 2019-11-17 at 17 42 27 Screenshot 2019-11-17 at 17 43 17 Screenshot 2019-11-17 at 17 57 59 Screenshot 2019-11-17 at 17 58 16

Python Installation

Screenshot 2019-11-18 at 13 05 07 Screenshot 2019-11-18 at 13 05 52 Screenshot 2019-11-18 at 13 07 31 Screenshot 2019-11-18 at 13 08 51

NEURON Repository Clone

Screenshot 2019-11-18 at 13 15 51 Screenshot 2019-11-18 at 13 17 13

Realised CMake was missing

Screenshot 2019-11-18 at 13 22 06

Trying to build NEURON

Screenshot 2019-11-18 at 13 33 02 Screenshot 2019-11-18 at 13 33 29 Screenshot 2019-11-18 at 13 35 58

Readline and ncurses was missing

Screenshot 2019-11-18 at 13 50 18 Screenshot 2019-11-18 at 14 24 59

Trying to build again

Screenshot 2019-11-18 at 14 55 16 Screenshot 2019-11-18 at 14 59 58

Cython was missing

Screenshot 2019-11-18 at 15 03 22

Trying to build again, distutils is not updated for newer visual studio toolchain

Screenshot 2019-11-18 at 15 13 16

Manually modify cygwincompiler.py

Screenshot 2019-11-18 at 15 14 48

Finally managed to complete CMake configure stage

Screenshot 2019-11-18 at 15 19 22

Trying to build the project

Screenshot 2019-11-18 at 15 20 37 Screenshot 2019-11-18 at 15 25 56

TODO : Additional changes missing here!

pramodk commented 4 years ago
Translating release.mod into release.c
Thread Safe
+ rm cabpump.o cachan1.o camchan.o capump.o invlfire.o khhchan.o mcna.o mod_func.o nacaex.o nachan.o release.o cabpump.c cachan1.c camchan.c capump.c invlfire.c khhchan.c mcna.c mod_func.c nacaex.c nachan.c release.c
+ test '!' -f nrnmech.dll
Processing config: C:\Program Files (x86)\NSIS\nsisconf.nsh
Processing script file: "C:/msys64/home/kumbhar/nrn/build/src/mswin/nrnsetupmingw.nsi" (ACP)
Error: unterminated string parsing line at macro:_IncludeStrFunction:7
Error in macro _IncludeStrFunction on macroline 7
!include: error in script: "EnvVarUpdate.nsh" on line 49
Error in script "C:/msys64/home/kumbhar/nrn/build/src/mswin/nrnsetupmingw.nsi" on line 25 -- aborting creation process
make[3]: *** [src/mswin/CMakeFiles/setup_exe.dir/build.make:81: src/mswin/CMakeFiles/setup_exe] Error 1
make[2]: *** [CMakeFiles/Makefile2:834: src/mswin/CMakeFiles/setup_exe.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:841: src/mswin/CMakeFiles/setup_exe.dir/rule] Error 2
make: *** [Makefile:444: setup_exe] Error 2

File C:/msys64/home/kumbhar/nrn/build/src/mswin/nrnsetupmingw.nsi has:

!include "EnvVarUpdate.nsh"

And EnvVarUpdate.nsh looks like:

$ cat ./src/mswin/EnvVarUpdate.nsh
/**
 *  EnvVarUpdate.nsh
 *    : Environmental Variables: append, prepend, and remove entries
 *
 *     WARNING: If you use StrFunc.nsh header then include it before this file
 *              with all required definitions. This is to avoid conflicts
 *
 *  Usage:
 *    ${EnvVarUpdate} "ResultVar" "EnvVarName" "Action" "RegLoc" "PathString"
 *
 *  Credits:
 *  Version 1.0
 *  * Cal Turney (turnec2)
 *  * Amir Szekely (KiCHiK) and e-circ for developing the forerunners of this
 *    function: AddToPath, un.RemoveFromPath, AddToEnvVar, un.RemoveFromEnvVar,
 *    WriteEnvStr, and un.DeleteEnvStr
 *  * Diego Pedroso (deguix) for StrTok
 *  * Kevin English (kenglish_hi) for StrContains
 *  * Hendri Adriaens (Smile2Me), Diego Pedroso (deguix), and Dan Fuhry
 *    (dandaman32) for StrReplace
 *
 *  Version 1.1 (compatibility with StrFunc.nsh)
 *  * techtonik
 *
 *  http://nsis.sourceforge.net/Environmental_Variables:_append%2C_prepend%2C_and_remove_entries
 *
 */

!ifndef ENVVARUPDATE_FUNCTION
!define ENVVARUPDATE_FUNCTION
!verbose push
!verbose 3
!include "LogicLib.nsh"
!include "WinMessages.NSH"
!include "StrFunc.nsh"

; ---- Fix for conflict if StrFunc.nsh is already includes in main file -----------------------
!macro _IncludeStrFunction StrFuncName
  !ifndef ${StrFuncName}_INCLUDED
    ${${StrFuncName}}
  !endif
  !ifndef Un${StrFuncName}_INCLUDED
    ${Un${StrFuncName}}
  !endif
  !define un.${StrFuncName} "${Un${StrFuncName}}"
!macroend

!insertmacro _IncludeStrFunction StrTok
!insertmacro _IncludeStrFunction StrStr
!insertmacro _IncludeStrFunction StrRep

; ---------------------------------- Macro Definitions ----------------------------------------
!macro _EnvVarUpdateConstructor ResultVar EnvVarName Action Regloc PathString
  Push "${EnvVarName}"
  Push "${Action}"
  Push "${RegLoc}"
  Push "${PathString}"
    Call EnvVarUpdate
  Pop "${ResultVar}"
!macroend
!define EnvVarUpdate '!insertmacro "_EnvVarUpdateConstructor"'

!macro _unEnvVarUpdateConstructor ResultVar EnvVarName Action Regloc PathString
  Push "${EnvVarName}"
  Push "${Action}"
  Push "${RegLoc}"
  Push "${PathString}"
    Call un.EnvVarUpdate
  Pop "${ResultVar}"
!macroend
!define un.EnvVarUpdate '!insertmacro "_unEnvVarUpdateConstructor"'
; ---------------------------------- Macro Definitions end-------------------------------------

;----------------------------------- EnvVarUpdate start----------------------------------------
!define hklm_all_users     'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"'
!define hkcu_current_user  'HKCU "Environment"'

!macro EnvVarUpdate UN

Function ${UN}EnvVarUpdate

  Push $0
  Exch 4
  Exch $1
  Exch 3
  Exch $2
  Exch 2
  Exch $3
  Exch
  Exch $4
  Push $5
  Push $6
  Push $7
  Push $8
  Push $9
  Push $R0

  /* After this point:
  -------------------------
     $0 = ResultVar     (returned)
     $1 = EnvVarName    (input)
     $2 = Action        (input)
     $3 = RegLoc        (input)
     $4 = PathString    (input)
     $5 = Orig EnvVar   (read from registry)
     $6 = Len of $0     (temp)
     $7 = tempstr1      (temp)
     $8 = Entry counter (temp)
     $9 = tempstr2      (temp)
     $R0 = tempChar     (temp)  */

  ; Step 1:  Read contents of EnvVarName from RegLoc
  ;
  ; Check for empty EnvVarName
  ${If} $1 == ""
    SetErrors
    DetailPrint "ERROR: EnvVarName is blank"
    Goto EnvVarUpdate_Restore_Vars
  ${EndIf}

  ; Check for valid Action
  ${If}    $2 != "A"
  ${AndIf} $2 != "P"
  ${AndIf} $2 != "R"
    SetErrors
    DetailPrint "ERROR: Invalid Action - must be A, P, or R"
    Goto EnvVarUpdate_Restore_Vars
  ${EndIf}

  ${If} $3 == HKLM
    ReadRegStr $5 ${hklm_all_users} $1     ; Get EnvVarName from all users into $5
  ${ElseIf} $3 == HKCU
    ReadRegStr $5 ${hkcu_current_user} $1  ; Read EnvVarName from current user into $5
  ${Else}
    SetErrors
    DetailPrint 'ERROR: Action is [$3] but must be "HKLM" or HKCU"'
    Goto EnvVarUpdate_Restore_Vars
  ${EndIf}

  ; Check for empty PathString
  ${If} $4 == ""
    SetErrors
    DetailPrint "ERROR: PathString is blank"
    Goto EnvVarUpdate_Restore_Vars
  ${EndIf}

  ;;khc - here check if length is going to be greater then max string length
  ;;      and abort if so - also abort if original path empty - may mean
  ;;      it was too long as well- write message to say set it by hand

  Push $6
  Push $7
  Push $8
  StrLen $7 $4
  StrLen $6 $5
  IntOp $8 $6 + $7
  ;${If} $5 == ""
  ;${OrIf} $8 >= ${NSIS_MAX_STRLEN}
  ${If} $8 >= ${NSIS_MAX_STRLEN}
    SetErrors
    DetailPrint "Current $1 length ($6) too long to modify in NSIS; set manually if needed"
    Pop $8
    Pop $7
    Pop $6
    Goto EnvVarUpdate_Restore_Vars
  ${EndIf}
  Pop $8
  Pop $7
  Pop $6
  ;;khc

  ; Make sure we've got some work to do
  ${If} $5 == ""
  ${AndIf} $2 == "R"
    SetErrors
    DetailPrint "$1 is empty - Nothing to remove"
    Goto EnvVarUpdate_Restore_Vars
  ${EndIf}

  ; Step 2: Scrub EnvVar
  ;
  StrCpy $0 $5                             ; Copy the contents to $0
  ; Remove spaces around semicolons (NOTE: spaces before the 1st entry or
  ; after the last one are not removed here but instead in Step 3)
  ${If} $0 != ""                           ; If EnvVar is not empty ...
    ${Do}
      ${${UN}StrStr} $7 $0 " ;"
      ${If} $7 == ""
        ${ExitDo}
      ${EndIf}
      ${${UN}StrRep} $0  $0 " ;" ";"         ; Remove '<space>;'
    ${Loop}
    ${Do}
      ${${UN}StrStr} $7 $0 "; "
      ${If} $7 == ""
        ${ExitDo}
      ${EndIf}
      ${${UN}StrRep} $0  $0 "; " ";"         ; Remove ';<space>'
    ${Loop}
    ${Do}
      ${${UN}StrStr} $7 $0 ";;"
      ${If} $7 == ""
        ${ExitDo}
      ${EndIf}
      ${${UN}StrRep} $0  $0 ";;" ";"
    ${Loop}

    ; Remove a leading or trailing semicolon from EnvVar
    StrCpy  $7  $0 1 0
    ${If} $7 == ";"
      StrCpy $0  $0 "" 1                   ; Change ';<EnvVar>' to '<EnvVar>'
    ${EndIf}
    StrLen $6 $0
    IntOp $6 $6 - 1
    StrCpy $7  $0 1 $6
    ${If} $7 == ";"
     StrCpy $0  $0 $6                      ; Change ';<EnvVar>' to '<EnvVar>'
    ${EndIf}
    ; DetailPrint "Scrubbed $1: [$0]"      ; Uncomment to debug
  ${EndIf}

  /* Step 3. Remove all instances of the target path/string (even if "A" or "P")
     $6 = bool flag (1 = found and removed PathString)
     $7 = a string (e.g. path) delimited by semicolon(s)
     $8 = entry counter starting at 0
     $9 = copy of $0
     $R0 = tempChar      */

  ${If} $5 != ""                           ; If EnvVar is not empty ...
    StrCpy $9 $0
    StrCpy $0 ""
    StrCpy $8 0
    StrCpy $6 0

    ${Do}
      ${${UN}StrTok} $7 $9 ";" $8 "0"      ; $7 = next entry, $8 = entry counter

      ${If} $7 == ""                       ; If we've run out of entries,
        ${ExitDo}                          ;    were done
      ${EndIf}                             ;

      ; Remove leading and trailing spaces from this entry (critical step for Action=Remove)
      ${Do}
        StrCpy $R0  $7 1
        ${If} $R0 != " "
          ${ExitDo}
        ${EndIf}
        StrCpy $7   $7 "" 1                ;  Remove leading space
      ${Loop}
      ${Do}
        StrCpy $R0  $7 1 -1
        ${If} $R0 != " "
          ${ExitDo}
        ${EndIf}
        StrCpy $7   $7 -1                  ;  Remove trailing space
      ${Loop}
      ${If} $7 == $4                       ; If string matches, remove it by not appending it
        StrCpy $6 1                        ; Set 'found' flag
      ${ElseIf} $7 != $4                   ; If string does NOT match
      ${AndIf}  $0 == ""                   ;    and the 1st string being added to $0,
        StrCpy $0 $7                       ;    copy it to $0 without a prepended semicolon
      ${ElseIf} $7 != $4                   ; If string does NOT match
      ${AndIf}  $0 != ""                   ;    and this is NOT the 1st string to be added to $0,
        StrCpy $0 $0;$7                    ;    append path to $0 with a prepended semicolon
      ${EndIf}                             ;

      IntOp $8 $8 + 1                      ; Bump counter
    ${Loop}                                ; Check for duplicates until we run out of paths
  ${EndIf}

  ; Step 4:  Perform the requested Action
  ;
  ${If} $2 != "R"                          ; If Append or Prepend
    ${If} $6 == 1                          ; And if we found the target
      DetailPrint "Target is already present in $1. It will be removed and"
    ${EndIf}
    ${If} $0 == ""                         ; If EnvVar is (now) empty
      StrCpy $0 $4                         ;   just copy PathString to EnvVar
      ${If} $6 == 0                        ; If found flag is either 0
      ${OrIf} $6 == ""                     ; or blank (if EnvVarName is empty)
        DetailPrint "$1 was empty and has been updated with the target"
      ${EndIf}
    ${ElseIf} $2 == "A"                    ;  If Append (and EnvVar is not empty),
      StrCpy $0 $0;$4                      ;     append PathString
      ${If} $6 == 1
        DetailPrint "appended to $1"
      ${Else}
        DetailPrint "Target was appended to $1"
      ${EndIf}
    ${Else}                                ;  If Prepend (and EnvVar is not empty),
      StrCpy $0 $4;$0                      ;     prepend PathString
      ${If} $6 == 1
        DetailPrint "prepended to $1"
      ${Else}
        DetailPrint "Target was prepended to $1"
      ${EndIf}
    ${EndIf}
  ${Else}                                  ; If Action = Remove
    ${If} $6 == 1                          ;   and we found the target
      DetailPrint "Target was found and removed from $1"
    ${Else}
      DetailPrint "Target was NOT found in $1 (nothing to remove)"
    ${EndIf}
    ${If} $0 == ""
      DetailPrint "$1 is now empty"
    ${EndIf}
  ${EndIf}

  ; Step 5:  Update the registry at RegLoc with the updated EnvVar and announce the change
  ;
  ClearErrors
  ${If} $3  == HKLM
    WriteRegExpandStr ${hklm_all_users} $1 $0     ; Write it in all users section
  ${ElseIf} $3 == HKCU
    WriteRegExpandStr ${hkcu_current_user} $1 $0  ; Write it to current user section
  ${EndIf}

  IfErrors 0 +4
    MessageBox MB_OK|MB_ICONEXCLAMATION "Could not write updated $1 to $3"
    DetailPrint "Could not write updated $1 to $3"
    Goto EnvVarUpdate_Restore_Vars

  ; "Export" our change
  SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000

  EnvVarUpdate_Restore_Vars:
  ;
  ; Restore the user's variables and return ResultVar
  Pop $R0
  Pop $9
  Pop $8
  Pop $7
  Pop $6
  Pop $5
  Pop $4
  Pop $3
  Pop $2
  Pop $1
  Push $0  ; Push my $0 (ResultVar)
  Exch
  Pop $0   ; Restore his $0

FunctionEnd

!macroend   ; EnvVarUpdate UN
!insertmacro EnvVarUpdate ""
!insertmacro EnvVarUpdate "un."
;----------------------------------- EnvVarUpdate end----------------------------------------

!verbose pop
!endif

NSIS version is : image

And I came across this : https://github.com/HaxeFoundation/haxe/issues/9158

pramodk commented 4 years ago

I replaced

choco install nsis

with

choco install --no-progress nsis.portable --version 3.02 -y

NSIS needs to use from:

diff --git a/mingw_files/cpmxe.sh b/mingw_files/cpmxe.sh
index 994aad91..1e19a66b 100644
--- a/mingw_files/cpmxe.sh
+++ b/mingw_files/cpmxe.sh
@@ -37,5 +37,5 @@ done
 cp c:/ms-mpi/lib/x64/msmpi.dll $m

 mv $m/hocmodule.dll $m/../lib/python/neuron/hoc.pyd
-(cd src/mswin ; /c/Program\ Files\ \(x86\)/NSIS/makensis nrnsetupmingw.nsi)
+(cd src/mswin ;  /c/ProgramData/chocolatey/lib/nsis.portable/tools/nsis-3.02/Bin/makensis nrnsetupmingw.nsi)
nrnhines commented 4 years ago

The version of NSIS I have is 3.04. I don't know if that is pertinant to your issue.

When you do get setup.exe... One can run the neuron setup.exe from an msys bash shell in silent (unattended) mode in the build folder with

cmd //c "src\mswin\nrn8.0setup-AMD64 /S"

or more simply (as we later found out) with a double / to indicate an arg

src/mswin/nrn8.0setup-AMD64 //S

One can uninstall with

cmd //c "c:\nrn\uninstall /S"

but you need to wait for a few seconds as the cmd exits quickly and I guess uninstall runs in the background.

nrnhines commented 4 years ago

From within a bash terminal and from there running the nrn...setup.exe from cmd. Further invocations of cmd do not see the new environment variables such as PYTHONPATH and the modified PATH. However, starting a completely new command prompt with a new window (which does have those environement variables), one can successfully...

bash
e:/python37/python -c "import neuron; neuron.test()"
pramodk commented 4 years ago

The version of NSIS I have is 3.04. I don't know if that is pertinant to your issue.

I now installed 3.04 and it's working fine!

choco install --no-progress nsis --version 3.04 -y
nrnhines commented 4 years ago

Perhaps my EnvVarUpdate.nsh.in needs to be abandoned because of the warning at https://nsis.sourceforge.io/Environmental_Variables:_append,_prepend,_and_remove_entries What is now suggested is a plugin called EnVar_plugin.zip that gets extracted into where NSIS is installed.

pramodk commented 4 years ago

I also see :

1 warning:
  7010: File: "C:\nrn-install\..\nrnhtml" -> no files found. (C:/msys64/home/kumbhar/nrn/build/src/mswin/nrnsetupmingw.nsi:191)
[100%] Built target setup_exe
nrnhines commented 4 years ago

Yes. That is for the documentation Section which I purposely have made nonfatal. That nrnhtml folder needs to be extracted from a zip file and is currently way out of date. It is basically a copy of the old web documentation prior to Robert's conversion to the new format. Let's ignore for now. I'm not sure this is even needed as I expect the python help still is being installed.

pramodk commented 4 years ago

@nrnhines : what are paths we expect to have on windows system? i.e. what are hardcoded paths in our build scripts? For example, I see following file:

→ cat mingw_files/vcenv.sh

export UCRTContentRoot='C:\Program Files (x86)\Windows Kits\10\'
export INCLUDE='C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE;C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt;C:\Program Files (x86)\Windows Kits\8.1\include\shared;C:\Program Files (x86)\Windows Kits\8.1\include\um;C:\Program Files (x86)\Windows Kits\8.1\include\winrt;'
export curDir='C:\Program Files (x86)\Microsoft Visual C++ Build Tools\'
export FrameworkVersion64='v4.0.30319'
export WindowsLibPath='References\CommonConfiguration\Neutral'
export FrameworkDIR64='C:\Windows\Microsoft.NET\Framework64'
export VCTargetsPath='C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140\'
export Platform='X64'
export CommandPromptType='Native'
export FrameworkDir='C:\Windows\Microsoft.NET\Framework64'
export WindowsSDKLibVersion='winv6.3\'
export VCINSTALLDIR='C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\'
export LIB='C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\LIB\amd64;C:\Program Files (x86)\Windows Kits\10\lib\10.0.10240.0\ucrt\x64;C:\Program Files (x86)\Windows Kits\8.1\lib\winv6.3\um\x64;'
export LIBPATH='C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\LIB\amd64;C:\Windows\Microsoft.NET\Framework64\v4.0.30319;C:\Windows\Microsoft.NET\Framework64\;References\CommonConfiguration\Neutral;\Microsoft.VCLibs\14.0\References\CommonConfiguration\neutral;'
export CurrentDir='C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC'
export WindowsSdkDir='C:\Program Files (x86)\Windows Kits\8.1\'
export UCRTVersion='10.0.10240.0'
export FrameworkVersion='v4.0.30319'
export UniversalCRTSdkDir='C:\Program Files (x86)\Windows Kits\10'
export PATH='/c/Program Files (x86)/MSBuild/14.0/bin/amd64:/c/Program Files (x86)/Microsoft Visual Studio 14.0/VC/BIN/amd64:/c/Windows/Microsoft.NET/Framework64/v4.0.30319:/c/Windows/Microsoft.NET/Framework64:/c/Program Files (x86)/Windows Kits/8.1/bin/x64:/c/Program Files (x86)/Windows Kits/8.1/bin/x86':$PATH

I assume this is used. If so, which of these paths are required or can be removed?

Also, what are other paths that we have hardcoded in our mingw scripts?

For Azure CI, I have following output using Get-Childitem 'C:\' -depth 1 -directory on PowerShell:

2020-05-18T21:32:41.0081812Z ##[command]"C:\Program Files\PowerShell\7\pwsh.exe" -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command ". 'D:\a\_temp\ab267313-1d19-4971-b134-cfa518dc60fc.ps1'"
2020-05-18T21:32:41.6563734Z 
2020-05-18T21:32:41.6570373Z 
2020-05-18T21:32:41.6578555Z     Directory: C:\
2020-05-18T21:32:41.6580095Z 
2020-05-18T21:32:41.6582354Z Mode                 LastWriteTime         Length Name
2020-05-18T21:32:41.6583089Z ----                 -------------         ------ ----
2020-05-18T21:32:41.6584790Z d----           5/18/2020  9:19 PM                agents
2020-05-18T21:32:41.6591407Z d----            5/1/2020 12:46 AM                cf-cli
2020-05-18T21:32:41.6595816Z d----           4/30/2020 10:45 PM                cobertura-2.1.1
2020-05-18T21:32:41.6601449Z d----           4/30/2020 10:02 PM                Go1.10.8
2020-05-18T21:32:41.6605261Z d----           4/30/2020 10:06 PM                Go1.11.13
2020-05-18T21:32:41.6610461Z d----           4/30/2020 10:10 PM                Go1.12.17
2020-05-18T21:32:41.6613212Z d----           4/30/2020 10:13 PM                Go1.13.10
2020-05-18T21:32:41.6617473Z d----           4/30/2020 10:17 PM                Go1.14.2
2020-05-18T21:32:41.6620917Z d----           4/30/2020  9:59 PM                Go1.9.7
2020-05-18T21:32:41.6626072Z d----           4/30/2020  9:32 PM                hostedtoolcache
2020-05-18T21:32:41.6628555Z d----           4/30/2020  7:22 PM                image
2020-05-18T21:32:41.6632555Z d----           4/30/2020  7:26 PM                inetpub
2020-05-18T21:32:41.6636540Z d----           4/30/2020 10:21 PM                Julia
2020-05-18T21:32:41.6640418Z d----           4/30/2020  8:31 PM                Microsoft
2020-05-18T21:32:41.6644305Z d----            5/1/2020 12:44 AM                Miniconda
2020-05-18T21:32:41.6648136Z d----            5/1/2020 12:41 AM                Modules
2020-05-18T21:32:41.6651684Z d----           5/18/2020  9:23 PM                ms-mpi
2020-05-18T21:32:41.6662259Z d----           5/18/2020  9:22 PM                msys64
2020-05-18T21:32:41.6662921Z d----           4/30/2020 11:14 PM                mysql-5.7.21-winx64
2020-05-18T21:32:41.6668680Z d----           4/30/2020  9:27 PM                npm
2020-05-18T21:32:41.6673429Z d----           4/30/2020  7:22 PM                Packages
2020-05-18T21:32:41.6676866Z d----           9/15/2018  7:19 AM                PerfLogs
2020-05-18T21:32:41.6683134Z d-r--            5/1/2020 12:45 AM                Program Files
2020-05-18T21:32:41.6686231Z d----            5/1/2020 12:46 AM                Program Files (x86)
2020-05-18T21:32:41.6689848Z d----           5/18/2020  9:25 PM                python354
2020-05-18T21:32:41.6693506Z d----           5/18/2020  9:26 PM                python368
2020-05-18T21:32:41.6696955Z d----           4/30/2020 10:18 PM                Rust
2020-05-18T21:32:41.6701551Z d----           4/30/2020 10:25 PM                selenium
2020-05-18T21:32:41.6705316Z d----           4/30/2020 10:26 PM                SeleniumWebDrivers
2020-05-18T21:32:41.6709202Z d----           4/30/2020  9:55 PM                Strawberry
2020-05-18T21:32:41.6712354Z d----            5/1/2020 12:28 AM                Temp
2020-05-18T21:32:41.6716144Z d----           4/30/2020 10:18 PM                tools
2020-05-18T21:32:41.6720200Z d-r--           5/18/2020  4:36 PM                Users
2020-05-18T21:32:41.6724660Z d----            5/1/2020 12:47 AM                vcpkg
2020-05-18T21:32:41.6728212Z d-r--           5/18/2020  4:34 PM                Windows
2020-05-18T21:32:41.6735303Z d----           4/30/2020  7:22 PM                WindowsAzure
2020-05-18T21:32:41.6748881Z 
2020-05-18T21:32:41.6752086Z     Directory: C:\agents
2020-05-18T21:32:41.6753020Z 
2020-05-18T21:32:41.6753720Z Mode                 LastWriteTime         Length Name
2020-05-18T21:32:41.6756096Z ----                 -------------         ------ ----
2020-05-18T21:32:41.6756836Z d----           5/18/2020  9:19 PM                2.168.2
2020-05-18T21:32:41.6778186Z d----           5/18/2020  9:19 PM                perflog
2020-05-18T21:32:41.6782990Z d----           5/18/2020  2:55 PM                settings
2020-05-18T21:32:41.6792872Z 
2020-05-18T21:32:41.6793595Z     Directory: C:\cobertura-2.1.1
2020-05-18T21:32:41.6795653Z 
2020-05-18T21:32:41.6796267Z Mode                 LastWriteTime         Length Name
2020-05-18T21:32:41.6797746Z ----                 -------------         ------ ----
2020-05-18T21:32:41.6799555Z d----           4/30/2020 10:45 PM                examples
2020-05-18T21:32:41.6803510Z d----           4/30/2020 10:45 PM                lib
2020-05-18T21:32:41.6821407Z 
2020-05-18T21:32:41.6821940Z     Directory: C:\Go1.10.8
2020-05-18T21:32:41.6822219Z 
2020-05-18T21:32:41.6824296Z Mode                 LastWriteTime         Length Name
2020-05-18T21:32:41.6826181Z ----                 -------------         ------ ----
2020-05-18T21:32:41.6826973Z d----           4/30/2020  9:59 PM                api
2020-05-18T21:32:41.6830887Z d----           4/30/2020  9:59 PM                bin
2020-05-18T21:32:41.6853671Z d----           4/30/2020  9:59 PM                lib
2020-05-18T21:32:41.6861502Z d----           4/30/2020  9:59 PM                misc
2020-05-18T21:32:41.6867994Z d----           4/30/2020 10:00 PM                pkg
2020-05-18T21:32:41.6889396Z d----           4/30/2020 10:02 PM                src
2020-05-18T21:32:41.6890342Z d----           4/30/2020 10:02 PM                test
2020-05-18T21:32:41.6905293Z 
2020-05-18T21:32:41.6909548Z     Directory: C:\Go1.11.13
2020-05-18T21:32:41.6910390Z 
2020-05-18T21:32:41.6911181Z Mode                 LastWriteTime         Length Name
2020-05-18T21:32:41.6912265Z ----                 -------------         ------ ----
2020-05-18T21:32:41.6914070Z d----           4/30/2020 10:02 PM                api
2020-05-18T21:32:41.6918810Z d----           4/30/2020 10:02 PM                bin
2020-05-18T21:32:41.6922492Z d----           4/30/2020 10:02 PM                lib
2020-05-18T21:32:41.6926332Z d----           4/30/2020 10:03 PM                misc
2020-05-18T21:32:41.6933847Z d----           4/30/2020 10:03 PM                pkg
2020-05-18T21:32:41.6939326Z d----           4/30/2020 10:05 PM                src
2020-05-18T21:32:41.6943315Z d----           4/30/2020 10:06 PM                test
2020-05-18T21:32:41.6951695Z 
2020-05-18T21:32:41.6955287Z     Directory: C:\Go1.12.17
2020-05-18T21:32:41.6956086Z 
2020-05-18T21:32:41.6957663Z Mode                 LastWriteTime         Length Name
2020-05-18T21:32:41.6958279Z ----                 -------------         ------ ----
2020-05-18T21:32:41.6959878Z d----           4/30/2020 10:06 PM                api
2020-05-18T21:32:41.6964451Z d----           4/30/2020 10:06 PM                bin
2020-05-18T21:32:41.6968473Z d----           4/30/2020 10:06 PM                lib
2020-05-18T21:32:41.6972839Z d----           4/30/2020 10:06 PM                misc
2020-05-18T21:32:41.6977666Z d----           4/30/2020 10:06 PM                pkg
2020-05-18T21:32:41.6982410Z d----           4/30/2020 10:09 PM                src
2020-05-18T21:32:41.6987202Z d----           4/30/2020 10:09 PM                test
2020-05-18T21:32:41.6996580Z 
2020-05-18T21:32:41.6997331Z     Directory: C:\Go1.13.10
2020-05-18T21:32:41.6998295Z 
2020-05-18T21:32:41.6998987Z Mode                 LastWriteTime         Length Name
2020-05-18T21:32:41.7000821Z ----                 -------------         ------ ----
2020-05-18T21:32:41.7003567Z d----           4/30/2020 10:10 PM                api
2020-05-18T21:32:41.7007529Z d----           4/30/2020 10:10 PM                bin
2020-05-18T21:32:41.7011232Z d----           4/30/2020 10:10 PM                lib
2020-05-18T21:32:41.7016992Z d----           4/30/2020 10:10 PM                misc
2020-05-18T21:32:41.7021012Z d----           4/30/2020 10:10 PM                pkg
2020-05-18T21:32:41.7024546Z d----           4/30/2020 10:12 PM                src
2020-05-18T21:32:41.7028409Z d----           4/30/2020 10:13 PM                test
2020-05-18T21:32:41.7036131Z 
2020-05-18T21:32:41.7037607Z     Directory: C:\Go1.14.2
2020-05-18T21:32:41.7037991Z 
2020-05-18T21:32:41.7038385Z Mode                 LastWriteTime         Length Name
2020-05-18T21:32:41.7039294Z ----                 -------------         ------ ----
2020-05-18T21:32:41.7040221Z d----           4/30/2020 10:13 PM                api
2020-05-18T21:32:41.7044204Z d----           4/30/2020 10:13 PM                bin
2020-05-18T21:32:41.7049996Z d----           4/30/2020 10:13 PM                lib
2020-05-18T21:32:41.7050610Z d----           4/30/2020 10:14 PM                misc
2020-05-18T21:32:41.7055196Z d----           4/30/2020 10:14 PM                pkg
2020-05-18T21:32:41.7058779Z d----           4/30/2020 10:16 PM                src
2020-05-18T21:32:41.7064991Z d----           4/30/2020 10:17 PM                test
2020-05-18T21:32:41.7076068Z 
2020-05-18T21:32:41.7077336Z     Directory: C:\Go1.9.7
2020-05-18T21:32:41.7078526Z 
2020-05-18T21:32:41.7078948Z Mode                 LastWriteTime         Length Name
2020-05-18T21:32:41.7081871Z ----                 -------------         ------ ----
2020-05-18T21:32:41.7084180Z d----           4/30/2020  9:56 PM                api
2020-05-18T21:32:41.7090054Z d----           4/30/2020  9:56 PM                bin
2020-05-18T21:32:41.7094915Z d----           4/30/2020  9:56 PM                lib
2020-05-18T21:32:41.7099842Z d----           4/30/2020  9:56 PM                misc
2020-05-18T21:32:41.7103350Z d----           4/30/2020  9:57 PM                pkg
2020-05-18T21:32:41.7107685Z d----           4/30/2020  9:58 PM                src
2020-05-18T21:32:41.7110778Z d----           4/30/2020  9:59 PM                test
2020-05-18T21:32:41.7118938Z 
2020-05-18T21:32:41.7121353Z     Directory: C:\hostedtoolcache
2020-05-18T21:32:41.7121872Z 
2020-05-18T21:32:41.7123993Z Mode                 LastWriteTime         Length Name
2020-05-18T21:32:41.7124577Z ----                 -------------         ------ ----
2020-05-18T21:32:41.7124926Z d----           4/30/2020  9:48 PM                windows
2020-05-18T21:32:41.7134184Z 
2020-05-18T21:32:41.7135904Z     Directory: C:\inetpub
2020-05-18T21:32:41.7136236Z 
2020-05-18T21:32:41.7137607Z Mode                 LastWriteTime         Length Name
2020-05-18T21:32:41.7138297Z ----                 -------------         ------ ----
2020-05-18T21:32:41.7140129Z d----           5/18/2020  4:37 PM                history
2020-05-18T21:32:41.7145414Z d----           4/30/2020  7:26 PM                logs
2020-05-18T21:32:41.7149287Z d----           4/30/2020  7:26 PM                temp
2020-05-18T21:32:41.7152965Z d----           4/30/2020  7:26 PM                wwwroot
2020-05-18T21:32:41.7160964Z 
2020-05-18T21:32:41.7161672Z     Directory: C:\Julia
2020-05-18T21:32:41.7162997Z 
2020-05-18T21:32:41.7165292Z Mode                 LastWriteTime         Length Name
2020-05-18T21:32:41.7166754Z ----                 -------------         ------ ----
2020-05-18T21:32:41.7167450Z d----           4/30/2020 10:21 PM                bin
2020-05-18T21:32:41.7172476Z d----           4/30/2020 10:21 PM                etc
2020-05-18T21:32:41.7176185Z d----           4/30/2020 10:21 PM                include
2020-05-18T21:32:41.7179643Z d----           4/30/2020 10:21 PM                lib
2020-05-18T21:32:41.7183304Z d----           4/30/2020 10:21 PM                libexec
2020-05-18T21:32:41.7186986Z d----           4/30/2020 10:21 PM                share
2020-05-18T21:32:41.7196759Z 
2020-05-18T21:32:41.7197357Z     Directory: C:\Microsoft
2020-05-18T21:32:41.7198984Z 
2020-05-18T21:32:41.7199855Z Mode                 LastWriteTime         Length Name
2020-05-18T21:32:41.7200350Z ----                 -------------         ------ ----
2020-05-18T21:32:41.7203076Z d----           4/30/2020  8:31 PM                AndroidNDK64
2020-05-18T21:32:41.7206458Z d----           4/30/2020  8:30 PM                AndroidSDK
2020-05-18T21:32:41.7211525Z d----           4/30/2020  8:28 PM                Xamarin
2020-05-18T21:32:41.7226828Z 
2020-05-18T21:32:41.7229574Z     Directory: C:\Miniconda
2020-05-18T21:32:41.7231053Z 
2020-05-18T21:32:41.7233171Z Mode                 LastWriteTime         Length Name
2020-05-18T21:32:41.7233802Z ----                 -------------         ------ ----
2020-05-18T21:32:41.7236505Z d----            5/1/2020 12:44 AM                condabin
2020-05-18T21:32:41.7240847Z d----            5/1/2020 12:44 AM                conda-meta
2020-05-18T21:32:41.7245296Z d----            5/1/2020 12:44 AM                DLLs
2020-05-18T21:32:41.7251333Z d----            5/1/2020 12:44 AM                envs
2020-05-18T21:32:41.7254852Z d----            5/1/2020 12:44 AM                etc
2020-05-18T21:32:41.7258684Z d----            5/1/2020 12:44 AM                include
2020-05-18T21:32:41.7262146Z d----            5/1/2020 12:44 AM                Lib
2020-05-18T21:32:41.7265514Z d----            5/1/2020 12:44 AM                Library
2020-05-18T21:32:41.7268994Z d----            5/1/2020 12:44 AM                libs
2020-05-18T21:32:41.7273589Z d----            5/1/2020 12:44 AM                Menu
2020-05-18T21:32:41.7278384Z d----            5/1/2020 12:44 AM                pkgs
2020-05-18T21:32:41.7283282Z d----            5/1/2020 12:44 AM                Scripts
2020-05-18T21:32:41.7286387Z d----            5/1/2020 12:44 AM                shell
2020-05-18T21:32:41.7290028Z d----            5/1/2020 12:44 AM                tcl
2020-05-18T21:32:41.7294386Z d----            5/1/2020 12:44 AM                Tools
2020-05-18T21:32:41.7305917Z 
2020-05-18T21:32:41.7309645Z     Directory: C:\Modules
2020-05-18T21:32:41.7309963Z 
2020-05-18T21:32:41.7310369Z Mode                 LastWriteTime         Length Name
2020-05-18T21:32:41.7310919Z ----                 -------------         ------ ----
2020-05-18T21:32:41.7312280Z d----            5/1/2020 12:38 AM                az_1.0.0
2020-05-18T21:32:41.7317211Z d----            5/1/2020 12:38 AM                az_1.6.0
2020-05-18T21:32:41.7322582Z d----            5/1/2020 12:39 AM                az_2.3.2
2020-05-18T21:32:41.7327973Z d----            5/1/2020 12:39 AM                az_2.6.0
2020-05-18T21:32:41.7330804Z d----            5/1/2020 12:40 AM                az_3.1.0
2020-05-18T21:32:41.7334340Z d----            5/1/2020 12:41 AM                az_3.5.0
2020-05-18T21:32:41.7337856Z d----            5/1/2020 12:42 AM                az_3.8.0
2020-05-18T21:32:41.7341743Z d----            5/1/2020 12:35 AM                azure_2.1.0
2020-05-18T21:32:41.7346470Z d----            5/1/2020 12:36 AM                azure_3.8.0
2020-05-18T21:32:41.7349845Z d----            5/1/2020 12:36 AM                azure_4.2.1
2020-05-18T21:32:41.7353691Z d----            5/1/2020 12:37 AM                azure_5.1.1
2020-05-18T21:32:41.7358291Z d----            5/1/2020 12:37 AM                azure_5.3.0
2020-05-18T21:32:41.7362028Z d----            5/1/2020 12:31 AM                azurerm_2.1.0
2020-05-18T21:32:41.7368358Z d----            5/1/2020 12:32 AM                azurerm_3.8.0
2020-05-18T21:32:41.7376325Z d----            5/1/2020 12:33 AM                azurerm_4.2.1
2020-05-18T21:32:41.7377345Z d----            5/1/2020 12:34 AM                azurerm_5.1.1
2020-05-18T21:32:41.7380324Z d----            5/1/2020 12:35 AM                azurerm_6.13.1
2020-05-18T21:32:41.7384358Z d----            5/1/2020 12:34 AM                azurerm_6.7.0
2020-05-18T21:32:41.7393449Z 
2020-05-18T21:32:41.7394170Z     Directory: C:\ms-mpi
2020-05-18T21:32:41.7397031Z 
2020-05-18T21:32:41.7397704Z Mode                 LastWriteTime         Length Name
2020-05-18T21:32:41.7398414Z ----                 -------------         ------ ----
2020-05-18T21:32:41.7401707Z d----           5/18/2020  9:23 PM                Benchmarks
2020-05-18T21:32:41.7406216Z d----           5/18/2020  9:23 PM                bin
2020-05-18T21:32:41.7411698Z da---           5/18/2020  9:23 PM                include
2020-05-18T21:32:41.7412325Z da---           5/18/2020  9:23 PM                lib
2020-05-18T21:32:41.7416305Z d----           5/18/2020  9:23 PM                License
2020-05-18T21:32:41.7480542Z d----           5/18/2020  9:23 PM                Redist
2020-05-18T21:32:41.7480941Z 
2020-05-18T21:32:41.7482680Z     Directory: C:\msys64
2020-05-18T21:32:41.7485823Z 
2020-05-18T21:32:41.7486276Z Mode                 LastWriteTime         Length Name
2020-05-18T21:32:41.7488594Z ----                 -------------         ------ ----
2020-05-18T21:32:41.7489138Z d----           5/24/2019 11:53 AM                clang32
2020-05-18T21:32:41.7489444Z d----           5/24/2019 11:53 AM                clang64
2020-05-18T21:32:41.7490100Z d----           5/18/2020  9:22 PM                dev
2020-05-18T21:32:41.7496067Z d----           5/18/2020  9:29 PM                etc
2020-05-18T21:32:41.7498096Z d----           5/18/2020  9:22 PM                home
2020-05-18T21:32:41.7498566Z d----           5/24/2019 11:53 AM                mingw32
2020-05-18T21:32:41.7499090Z d----           5/18/2020  9:31 PM                mingw64
2020-05-18T21:32:41.7499564Z d----          12/15/2018  6:46 PM                opt
2020-05-18T21:32:41.7500023Z d----           5/18/2020  9:31 PM                tmp
2020-05-18T21:32:41.7501394Z d----           5/24/2019 11:53 AM                usr
2020-05-18T21:32:41.7501915Z d----           5/24/2019 11:53 AM                var
2020-05-18T21:32:41.7502164Z 
2020-05-18T21:32:41.7502560Z     Directory: C:\mysql-5.7.21-winx64
2020-05-18T21:32:41.7502721Z 
2020-05-18T21:32:41.7502970Z Mode                 LastWriteTime         Length Name
2020-05-18T21:32:41.7503253Z ----                 -------------         ------ ----
2020-05-18T21:32:41.7503809Z d----           4/30/2020 11:15 PM                bin
2020-05-18T21:32:41.7504390Z d----           4/30/2020 11:14 PM                docs
2020-05-18T21:32:41.7504851Z d----           4/30/2020 11:14 PM                include
2020-05-18T21:32:41.7505147Z d----           4/30/2020 11:15 PM                lib
2020-05-18T21:32:41.7508639Z d----           4/30/2020 11:15 PM                share
2020-05-18T21:32:41.7517006Z 
2020-05-18T21:32:41.7517611Z     Directory: C:\npm
2020-05-18T21:32:41.7518983Z 
2020-05-18T21:32:41.7520910Z Mode                 LastWriteTime         Length Name
2020-05-18T21:32:41.7521442Z ----                 -------------         ------ ----
2020-05-18T21:32:41.7524221Z d----            5/1/2020 12:48 AM                cache
2020-05-18T21:32:41.7527433Z d----            5/1/2020 12:48 AM                prefix
2020-05-18T21:32:41.7548678Z 
2020-05-18T21:32:41.7549260Z     Directory: C:\Program Files
2020-05-18T21:32:41.7553945Z 
2020-05-18T21:32:41.7554946Z Mode                 LastWriteTime         Length Name
2020-05-18T21:32:41.7556638Z ----                 -------------         ------ ----
2020-05-18T21:32:41.7558655Z d----           4/30/2020  9:31 PM                7-Zip
2020-05-18T21:32:41.7563009Z d----           4/30/2020 10:46 PM                Amazon
2020-05-18T21:32:41.7566792Z d----           4/30/2020  8:28 PM                Android
2020-05-18T21:32:41.7570416Z d----           4/30/2020  8:09 PM                Application Verifier
2020-05-18T21:32:41.7588184Z d----            5/1/2020 12:44 AM                Azure Cosmos DB Emulator
2020-05-18T21:32:41.7622830Z l----           4/30/2020  9:46 PM                Boost -> C:\hostedtoolcache\windows\Boost
2020-05-18T21:32:41.7624742Z d----           4/30/2020 10:45 PM                CMake
2020-05-18T21:32:41.7625265Z d----           4/30/2020  9:53 PM                Common Files
2020-05-18T21:32:41.7626688Z d----           4/30/2020  7:33 PM                Docker
2020-05-18T21:32:41.7629545Z d----           4/30/2020  7:58 PM                dotnet
2020-05-18T21:32:41.7644862Z d----           4/30/2020  9:56 PM                Git
2020-05-18T21:32:41.7650819Z d----           4/30/2020  8:05 PM                IIS
2020-05-18T21:32:41.7654653Z d----           4/30/2020  8:02 PM                IIS Express
2020-05-18T21:32:41.7658734Z d----           4/13/2020  6:46 PM                internet explorer
2020-05-18T21:32:41.7663502Z d----           4/30/2020 10:43 PM                Java
2020-05-18T21:32:41.7666426Z d----            5/1/2020 12:45 AM                Mercurial
2020-05-18T21:32:41.7670108Z d----           4/30/2020  9:21 PM                Microsoft SDKs
2020-05-18T21:32:41.7673659Z d----           4/30/2020  9:21 PM                Microsoft Service Fabric
2020-05-18T21:32:41.7677178Z d----           4/30/2020  8:03 PM                Microsoft SQL Server
2020-05-18T21:32:41.7681014Z d----           4/30/2020 10:24 PM                Mozilla Firefox
2020-05-18T21:32:41.7684669Z d----           4/30/2020  7:26 PM                MSBuild
2020-05-18T21:32:41.7688612Z d----           4/30/2020  9:27 PM                nodejs
2020-05-18T21:32:41.7693069Z d----           4/30/2020  9:53 PM                OpenSSL
2020-05-18T21:32:41.7696933Z d----           4/30/2020  7:22 PM                PackageManagement
2020-05-18T21:32:41.7701456Z d----           4/30/2020  7:33 PM                PowerShell
2020-05-18T21:32:41.7705212Z d----           4/30/2020  7:26 PM                Reference Assemblies
2020-05-18T21:32:41.7708909Z d----           4/30/2020  8:34 PM                Unity
2020-05-18T21:32:41.7712627Z d----           4/30/2020  8:04 PM                VS2010Schemas
2020-05-18T21:32:41.7716590Z d----           4/30/2020  8:04 PM                VS2012Schemas
2020-05-18T21:32:41.7720530Z d-r--           4/13/2020  6:46 PM                Windows Defender
2020-05-18T21:32:41.7724428Z d----           4/13/2020  6:46 PM                Windows Defender Advanced Threat Protection
2020-05-18T21:32:41.7730632Z d----           9/15/2018  7:19 AM                Windows Mail
2020-05-18T21:32:41.7731799Z d----           4/13/2020  6:46 PM                Windows Media Player
2020-05-18T21:32:41.7735755Z d----           9/15/2018  7:19 AM                Windows Multimedia Platform
2020-05-18T21:32:41.7739098Z d----           9/15/2018  7:28 AM                windows nt
2020-05-18T21:32:41.7742854Z d----           4/13/2020  6:46 PM                Windows Photo Viewer
2020-05-18T21:32:41.7746464Z d----           9/15/2018  7:19 AM                Windows Portable Devices
2020-05-18T21:32:41.7750350Z d----           9/15/2018  7:19 AM                Windows Security
2020-05-18T21:32:41.7754217Z d----           9/15/2018  7:19 AM                WindowsPowerShell
2020-05-18T21:32:41.7763543Z 
2020-05-18T21:32:41.7765572Z     Directory: C:\Program Files (x86)
2020-05-18T21:32:41.7767119Z 
2020-05-18T21:32:41.7769683Z Mode                 LastWriteTime         Length Name
2020-05-18T21:32:41.7771013Z ----                 -------------         ------ ----
2020-05-18T21:32:41.7771730Z d----           4/30/2020  8:30 PM                Android
2020-05-18T21:32:41.7776693Z d----           4/30/2020  8:09 PM                Application Verifier
2020-05-18T21:32:41.7780346Z d----           4/30/2020  8:24 PM                Common Files
2020-05-18T21:32:41.7783778Z d----           4/30/2020  7:58 PM                dotnet
2020-05-18T21:32:41.7787831Z d----           4/30/2020  8:37 PM                Epic Games
2020-05-18T21:32:41.7791234Z d----           4/30/2020 10:22 PM                Google
2020-05-18T21:32:41.7794542Z d----           4/30/2020  8:16 PM                HTML Help Workshop
2020-05-18T21:32:41.7798820Z d----           4/30/2020  8:05 PM                IIS
2020-05-18T21:32:41.7802033Z d----           4/30/2020  8:02 PM                IIS Express
2020-05-18T21:32:41.7806010Z d----            5/1/2020 12:45 AM                Inno Setup 6
2020-05-18T21:32:41.7809727Z d----           4/13/2020  6:46 PM                Internet Explorer
2020-05-18T21:32:41.7813308Z d----           4/30/2020 10:23 PM                Microsoft
2020-05-18T21:32:41.7817074Z d----           4/30/2020  9:07 PM                Microsoft Analysis Services
2020-05-18T21:32:41.7820717Z d----           5/18/2020  9:23 PM                Microsoft SDKs
2020-05-18T21:32:41.7824655Z d----           4/30/2020  9:07 PM                Microsoft SQL Server
2020-05-18T21:32:41.7830706Z d----           4/30/2020  7:51 PM                Microsoft Visual Studio
2020-05-18T21:32:41.7836390Z d----           4/30/2020  9:03 PM                Microsoft Visual Studio 10.0
2020-05-18T21:32:41.7840555Z d----           4/30/2020  9:03 PM                Microsoft Visual Studio 11.0
2020-05-18T21:32:41.7844186Z d----           4/30/2020  9:04 PM                Microsoft Visual Studio 12.0
2020-05-18T21:32:41.7847751Z d----           4/30/2020  8:47 PM                Microsoft Visual Studio 14.0
2020-05-18T21:32:41.7851395Z d----           4/30/2020  8:33 PM                Microsoft Visual Studio Tools for Unity
2020-05-18T21:32:41.7854860Z d----           4/30/2020  8:01 PM                Microsoft Web Tools
2020-05-18T21:32:41.7858358Z d----           4/30/2020  8:03 PM                Microsoft.NET
2020-05-18T21:32:41.7862032Z d----           4/30/2020 10:24 PM                Mozilla Maintenance Service
2020-05-18T21:32:41.7866072Z d----           4/30/2020  8:25 PM                MSBuild
2020-05-18T21:32:41.7870304Z d----            5/1/2020 12:46 AM                NSIS
2020-05-18T21:32:41.7874910Z d----           4/30/2020  8:06 PM                NuGet
2020-05-18T21:32:41.7875759Z d----           4/30/2020  8:38 PM                Open XML SDK
2020-05-18T21:32:41.7879992Z d----           4/30/2020  7:26 PM                Reference Assemblies
2020-05-18T21:32:41.7883633Z d----           4/30/2020 10:22 PM                sbt
2020-05-18T21:32:41.7887869Z d----           4/30/2020 10:22 PM                Subversion
2020-05-18T21:32:41.7891073Z d----           4/30/2020 10:26 PM                Windows Application Driver
2020-05-18T21:32:41.7895129Z d----           9/15/2018  9:07 AM                Windows Defender
2020-05-18T21:32:41.7898779Z d----           4/30/2020  8:08 PM                Windows Kits
2020-05-18T21:32:41.7902508Z d----           9/15/2018  7:19 AM                Windows Mail
2020-05-18T21:32:41.7906199Z d----           4/13/2020  6:46 PM                Windows Media Player
2020-05-18T21:32:41.7909872Z d----           9/15/2018  7:19 AM                Windows Multimedia Platform
2020-05-18T21:32:41.7913620Z d----           9/15/2018  7:28 AM                windows nt
2020-05-18T21:32:41.7917417Z d----           4/13/2020  6:46 PM                Windows Photo Viewer
2020-05-18T21:32:41.7921079Z d----           9/15/2018  7:19 AM                Windows Portable Devices
2020-05-18T21:32:41.7924554Z d----           9/15/2018  7:19 AM                WindowsPowerShell
2020-05-18T21:32:41.7928793Z d----           4/30/2020  8:47 PM                WiX Toolset v3.11
2020-05-18T21:32:41.7932459Z d----           4/30/2020  8:38 PM                Workflow Manager Tools
2020-05-18T21:32:41.7936599Z d----           4/30/2020  8:29 PM                Xamarin
2020-05-18T21:32:41.7946635Z 
2020-05-18T21:32:41.7949105Z     Directory: C:\python354
2020-05-18T21:32:41.7949719Z 
2020-05-18T21:32:41.7953366Z Mode                 LastWriteTime         Length Name
2020-05-18T21:32:41.7954516Z ----                 -------------         ------ ----
2020-05-18T21:32:41.7955583Z d----           5/18/2020  9:25 PM                DLLs
2020-05-18T21:32:41.7961928Z d----           5/18/2020  9:24 PM                Doc
2020-05-18T21:32:41.7965847Z d----           5/18/2020  9:23 PM                include
2020-05-18T21:32:41.7969387Z d----           5/18/2020  9:25 PM                Lib
2020-05-18T21:32:41.7973679Z d----           5/18/2020  9:23 PM                libs
2020-05-18T21:32:41.7978138Z d----           5/18/2020  9:25 PM                Scripts
2020-05-18T21:32:41.7979666Z d----           5/18/2020  9:25 PM                tcl
2020-05-18T21:32:41.7984024Z d----           5/18/2020  9:24 PM                Tools
2020-05-18T21:32:41.7993652Z 
2020-05-18T21:32:41.7994301Z     Directory: C:\python368
2020-05-18T21:32:41.7996101Z 
2020-05-18T21:32:41.7996706Z Mode                 LastWriteTime         Length Name
2020-05-18T21:32:41.7998521Z ----                 -------------         ------ ----
2020-05-18T21:32:41.8000831Z d----           5/18/2020  9:26 PM                DLLs
2020-05-18T21:32:41.8076741Z d----           5/18/2020  9:26 PM                Doc
2020-05-18T21:32:41.8077423Z d----           5/18/2020  9:25 PM                include
2020-05-18T21:32:41.8077913Z d----           5/18/2020  9:26 PM                Lib
2020-05-18T21:32:41.8078428Z d----           5/18/2020  9:25 PM                libs
2020-05-18T21:32:41.8078870Z d----           5/18/2020  9:26 PM                Scripts
2020-05-18T21:32:41.8079362Z d----           5/18/2020  9:26 PM                tcl
2020-05-18T21:32:41.8079897Z d----           5/18/2020  9:26 PM                Tools
2020-05-18T21:32:41.8080183Z 
2020-05-18T21:32:41.8080607Z     Directory: C:\Rust
2020-05-18T21:32:41.8080825Z 
2020-05-18T21:32:41.8081392Z Mode                 LastWriteTime         Length Name
2020-05-18T21:32:41.8086577Z ----                 -------------         ------ ----
2020-05-18T21:32:41.8086901Z d----           4/30/2020 10:19 PM                .cargo
2020-05-18T21:32:41.8087429Z d----           4/30/2020 10:18 PM                .rustup
2020-05-18T21:32:41.8087827Z 
2020-05-18T21:32:41.8088234Z     Directory: C:\SeleniumWebDrivers
2020-05-18T21:32:41.8088460Z 
2020-05-18T21:32:41.8088663Z Mode                 LastWriteTime         Length Name
2020-05-18T21:32:41.8089403Z ----                 -------------         ------ ----
2020-05-18T21:32:41.8090197Z d----           4/30/2020 10:23 PM                ChromeDriver
2020-05-18T21:32:41.8090716Z d----           4/30/2020 10:24 PM                EdgeDriver
2020-05-18T21:32:41.8091087Z d----           4/30/2020 10:24 PM                GeckoDriver
2020-05-18T21:32:41.8091545Z d----           4/30/2020 10:26 PM                IEDriver
2020-05-18T21:32:41.8092047Z 
2020-05-18T21:32:41.8092267Z     Directory: C:\Strawberry
2020-05-18T21:32:41.8092426Z 
2020-05-18T21:32:41.8092671Z Mode                 LastWriteTime         Length Name
2020-05-18T21:32:41.8093164Z ----                 -------------         ------ ----
2020-05-18T21:32:41.8093786Z d----           4/30/2020  9:54 PM                c
2020-05-18T21:32:41.8101728Z d----           4/30/2020  9:54 PM                cpan
2020-05-18T21:32:41.8115304Z d----           4/30/2020  9:54 PM                licenses
2020-05-18T21:32:41.8115845Z d----           4/30/2020  9:54 PM                perl
2020-05-18T21:32:41.8130520Z d----           4/30/2020  9:54 PM                win32
2020-05-18T21:32:41.8170063Z 
2020-05-18T21:32:41.8171891Z     Directory: C:\tools
2020-05-18T21:32:41.8174176Z 
2020-05-18T21:32:41.8176370Z Mode                 LastWriteTime         Length Name
2020-05-18T21:32:41.8176993Z ----                 -------------         ------ ----
2020-05-18T21:32:41.8177846Z d----           4/30/2020 10:18 PM                php
2020-05-18T21:32:41.8188645Z 
2020-05-18T21:32:41.8190725Z     Directory: C:\Users
2020-05-18T21:32:41.8191085Z 
2020-05-18T21:32:41.8192345Z Mode                 LastWriteTime         Length Name
2020-05-18T21:32:41.8193027Z ----                 -------------         ------ ----
2020-05-18T21:32:41.8195920Z d----           4/30/2020  7:27 PM                .NET v4.5
2020-05-18T21:32:41.8199979Z d----           4/30/2020  7:27 PM                .NET v4.5 Classic
2020-05-18T21:32:41.8203744Z d----           4/30/2020  8:47 PM                installer
2020-05-18T21:32:41.8207256Z d-r--           4/13/2020  7:31 PM                Public
2020-05-18T21:32:41.8213017Z d----           5/18/2020  4:36 PM                TempAdmin
2020-05-18T21:32:41.8217936Z d----           5/18/2020  5:21 PM                VssAdministrator
2020-05-18T21:32:41.8224876Z 
2020-05-18T21:32:41.8230261Z     Directory: C:\vcpkg
2020-05-18T21:32:41.8230614Z 
2020-05-18T21:32:41.8243826Z Mode                 LastWriteTime         Length Name
2020-05-18T21:32:41.8244495Z ----                 -------------         ------ ----
2020-05-18T21:32:41.8244998Z d----            5/1/2020 12:46 AM                .github
2020-05-18T21:32:41.8246170Z d----            5/1/2020 12:46 AM                docs
2020-05-18T21:32:41.8246542Z d----            5/1/2020 12:46 AM                ports
2020-05-18T21:32:41.8247060Z d----            5/1/2020 12:46 AM                scripts
2020-05-18T21:32:41.8249140Z d----            5/1/2020 12:46 AM                toolsrc
2020-05-18T21:32:41.8253668Z d----            5/1/2020 12:46 AM                triplets
2020-05-18T21:32:41.8263973Z 
2020-05-18T21:32:41.8266872Z     Directory: C:\Windows
2020-05-18T21:32:41.8267261Z 
2020-05-18T21:32:41.8271178Z Mode                 LastWriteTime         Length Name
2020-05-18T21:32:41.8272955Z ----                 -------------         ------ ----
2020-05-18T21:32:41.8276179Z d----           9/15/2018  7:19 AM                ADFS
2020-05-18T21:32:41.8280056Z d----           9/15/2018  7:19 AM                appcompat
2020-05-18T21:32:41.8283865Z d----           4/13/2020  6:46 PM                apppatch
2020-05-18T21:32:41.8287565Z d----           5/18/2020  5:21 PM                AppReadiness
2020-05-18T21:32:41.8291227Z d-r--           4/30/2020 11:16 PM                assembly
2020-05-18T21:32:41.8294733Z d----           9/15/2018  7:19 AM                bcastdvr
2020-05-18T21:32:41.8298355Z d----           9/15/2018  7:19 AM                Boot
2020-05-18T21:32:41.8303657Z d----           9/15/2018  7:19 AM                Branding
2020-05-18T21:32:41.8306921Z d----           4/30/2020  9:16 PM                CbsTemp
2020-05-18T21:32:41.8311857Z d----           9/15/2018  7:19 AM                Containers
2020-05-18T21:32:41.8315433Z d----           9/15/2018  7:19 AM                Cursors
2020-05-18T21:32:41.8319215Z d----           4/13/2020  7:31 PM                debug
2020-05-18T21:32:41.8323020Z d----           9/15/2018  7:19 AM                diagnostics
2020-05-18T21:32:41.8327209Z d----           9/15/2018  9:07 AM                DigitalLocker
2020-05-18T21:32:41.8330544Z d---s           9/15/2018  7:19 AM                Downloaded Program Files
2020-05-18T21:32:41.8383982Z d----           9/15/2018  7:19 AM                drivers
2020-05-18T21:32:41.8386174Z d----           9/15/2018  9:07 AM                en-US
2020-05-18T21:32:41.8386521Z d-r-s           4/30/2020  7:26 PM                Fonts
2020-05-18T21:32:41.8387218Z d----           9/15/2018  7:19 AM                Globalization
2020-05-18T21:32:41.8389148Z d----           9/15/2018  9:07 AM                Help
2020-05-18T21:32:41.8391218Z d----           9/15/2018  7:19 AM                IdentityCRL
2020-05-18T21:32:41.8391911Z d----           9/15/2018  9:07 AM                IME
2020-05-18T21:32:41.8392864Z d-r--           4/13/2020  7:30 PM                ImmersiveControlPanel
2020-05-18T21:32:41.8397661Z d----           5/18/2020  9:22 PM                INF
2020-05-18T21:32:41.8398632Z d----           9/15/2018  7:19 AM                InputMethod
2020-05-18T21:32:41.8402546Z d----           9/15/2018  7:19 AM                L2Schemas
2020-05-18T21:32:41.8429991Z d----           9/15/2018  7:19 AM                LiveKernelReports
2020-05-18T21:32:41.8441043Z d----           5/18/2020  4:38 PM                Logs
2020-05-18T21:32:41.8448730Z d-r-s           9/15/2018  7:19 AM                media
2020-05-18T21:32:41.8453178Z d-r--           4/30/2020 11:16 PM                Microsoft.NET
2020-05-18T21:32:41.8485644Z d----           9/15/2018  7:19 AM                Migration
2020-05-18T21:32:41.8489434Z d----           9/15/2018  7:19 AM                ModemLogs
2020-05-18T21:32:41.8493201Z d----           9/15/2018  9:08 AM                OCR
2020-05-18T21:32:41.8496687Z d-r--           4/30/2020  7:20 PM                OEM
2020-05-18T21:32:41.8500601Z d-r--           9/15/2018  7:19 AM                Offline Web Pages
2020-05-18T21:32:41.8504574Z d----           5/18/2020  4:34 PM                Panther
2020-05-18T21:32:41.8508472Z d----           9/15/2018  7:19 AM                Performance
2020-05-18T21:32:41.8511768Z d----           9/15/2018  7:19 AM                PLA
2020-05-18T21:32:41.8555806Z d----           4/13/2020  6:46 PM                PolicyDefinitions
2020-05-18T21:32:41.8559633Z d----           4/13/2020  7:30 PM                Prefetch
2020-05-18T21:32:41.8564104Z d-r--           4/13/2020  7:30 PM                PrintDialog
2020-05-18T21:32:41.8568416Z d----           9/15/2018  7:19 AM                Provisioning
2020-05-18T21:32:41.8573214Z d----           9/15/2018  7:19 AM                Registration
2020-05-18T21:32:41.8579176Z d----           9/15/2018  7:19 AM                RemotePackages
2020-05-18T21:32:41.8593090Z d----           9/15/2018  7:19 AM                rescache
2020-05-18T21:32:41.8593733Z d----           9/15/2018  7:19 AM                Resources
2020-05-18T21:32:41.8610221Z d----           9/15/2018  7:19 AM                SchCache
2020-05-18T21:32:41.8610879Z d----           9/15/2018  7:19 AM                schemas
2020-05-18T21:32:41.8611436Z d----           9/15/2018  7:19 AM                security
2020-05-18T21:32:41.8616376Z d----           4/13/2020  7:29 PM                ServiceProfiles
2020-05-18T21:32:41.8625376Z d----           4/13/2020  7:30 PM                ServiceState
2020-05-18T21:32:41.8628258Z d----           4/13/2020  6:46 PM                servicing
2020-05-18T21:32:41.8632316Z d-r--           4/13/2020  7:28 PM                Setup
2020-05-18T21:32:41.8636236Z d----           4/13/2020  6:46 PM                ShellComponents
2020-05-18T21:32:41.8641923Z d----           4/13/2020  6:46 PM                ShellExperiences
2020-05-18T21:32:41.8644828Z d----           9/15/2018  7:19 AM                SKB
2020-05-18T21:32:41.8661197Z d----           5/18/2020  4:34 PM                SoftwareDistribution
2020-05-18T21:32:41.8664728Z d----           9/15/2018  7:19 AM                Speech
2020-05-18T21:32:41.8668464Z d----           9/15/2018  7:19 AM                Speech_OneCore
2020-05-18T21:32:41.8672168Z d----           4/30/2020  8:38 PM                symbols
2020-05-18T21:32:41.8675677Z d----           9/15/2018  7:19 AM                System
2020-05-18T21:32:41.8679252Z d----           5/18/2020  9:23 PM                System32
2020-05-18T21:32:41.8682812Z d----           9/15/2018  7:19 AM                SystemApps
2020-05-18T21:32:41.8686411Z d----           9/15/2018  7:19 AM                SystemResources
2020-05-18T21:32:41.8689897Z d----           5/18/2020  9:23 PM                SysWOW64
2020-05-18T21:32:41.8693441Z d----           9/15/2018  7:19 AM                TAPI
2020-05-18T21:32:41.8699057Z d----           4/13/2020  7:30 PM                Tasks
2020-05-18T21:32:41.8711866Z d----           5/18/2020  9:26 PM                temp
2020-05-18T21:32:41.8712279Z d----           4/13/2020  6:46 PM                TextInput
2020-05-18T21:32:41.8714631Z d----           9/15/2018  7:19 AM                tracing
2020-05-18T21:32:41.8718338Z d----           9/15/2018  7:19 AM                twain_32
2020-05-18T21:32:41.8738310Z d----           9/15/2018  7:19 AM                Vss
2020-05-18T21:32:41.8743634Z d----           9/15/2018  7:19 AM                WaaS
2020-05-18T21:32:41.8747204Z d----           9/15/2018  7:19 AM                Web
2020-05-18T21:32:41.8750823Z d----            5/1/2020 12:55 AM                WinSxS
2020-05-18T21:32:41.8762270Z 
2020-05-18T21:32:41.8764423Z     Directory: C:\WindowsAzure
2020-05-18T21:32:41.8764727Z 
2020-05-18T21:32:41.8766713Z Mode                 LastWriteTime         Length Name
2020-05-18T21:32:41.8767892Z ----                 -------------         ------ ----
2020-05-18T21:32:41.8768963Z d----           4/30/2020  7:22 PM                Applications
2020-05-18T21:32:41.8773136Z d----            5/1/2020 12:57 AM                CollectGuestLogsTemp
2020-05-18T21:32:41.8776757Z d----           4/30/2020  7:22 PM                Config
2020-05-18T21:32:41.8780287Z d----            5/1/2020 12:56 AM                Logs
2020-05-18T21:32:41.8783832Z d----           4/30/2020  7:21 PM                Packages
2020-05-18T21:32:41.8789550Z d----           4/30/2020  7:22 PM                SecAgent
nrnhines commented 4 years ago

vcenv.sh is used for the autotools build (nrn/mingw_files/howto) but not for the cmake build (nrn/mingw_files/howto-cmake). Now that we know how to pass visual-c to the python setup.py files with cmake, I'm not sure the same strategy can't be used with autotools. However, I consider autotools build on windows to be even more deprecated than for mac and linux. People have successfully built from sources on mac and linux with autotools. I'm not aware of anyone but myself and one or two other people who have successfully built on windows with autotools. Otherwise no scripts should have machine dependent paths. The exceptions I recall are my distribution build scripts which always at the end scp to specific places.

pramodk commented 4 years ago

vcenv.sh is used for the autotools build (nrn/mingw_files/howto) but not for the cmake build (nrn/mingw_files/howto-cmake).

Ok, thats great then!

Now that we know how to pass visual-c to the python setup.py files with cmake

Could you remind me where this is done in the current Cmake implementation? Is that done by distutils automatically? (I haven't looked at windows aspects carefully!)

However, I consider autotools build on windows to be even more deprecated than for mac and linux.

I agree! With the instructions I am putting, I am pretty confident that people will be able to build on windows if they need.

People have successfully built from sources on mac and linux with autotools. I'm not aware of anyone but myself and one or two other people who have successfully built on windows

I am just curious about other users who have built on windows. I consider those as brave NEURON users :)

Otherwise no scripts should have machine dependent paths.

Ok, thats good then!

nrnhines commented 4 years ago

Oops. Looks like I was mistaken. I see the fragment in nrn/share/lib/python/neuron/rxd/geometry3d/CMakeLists.txt

  if test x$pyver = x3 ; then # python3.x builds with msvc\n\
    . ${PROJECT_SOURCE_DIR}/mingw_files/vcenv.sh\n\
    $pyexe setup.py build_ext --build-lib=${NRN_PYTHON_BUILD_LIB}\n\
  else # python2.7 builds with gcc\n\

I guess this was consistent with a comment I had made somehwhere that after a lot of effort with cmake I ended up with exactly the same strategy as was used with autotools.

The only other person I know who has built with autotools is @adamjhn . I think he is now using cmake.

pramodk commented 4 years ago

Oops. Looks like I was mistaken. I see the fragment in nrn/share/lib/python/neuron/rxd/geometry3d/CMakeLists.txt

Oops! Can we then review which paths are required / not required in vcenv.sh, cleanup a bit and see if https://github.com/neuronsimulator/nrn/issues/319#issuecomment-630448527 has all paths required?

nrnhines commented 4 years ago

Unfortunately I do not recall where vcenv.sh came from and several attempts at a google search were not successful. However, a different approach sounds promising with https://stackoverflow.com/questions/61548591/how-to-get-visual-studio-to-execute-build-commands-in-a-msys2-shell although things may be even simpler since I guess we are using visual studio code.

Google results for 'visual studio code from msys2' all seem to go in the wrong direction.

http://anadoxin.org/blog/bringing-visual-studio-compiler-into-msys2-environment.html looks to be very helpful

pramodk commented 4 years ago

@nrnhines : But some or many variables from that vcenv.sh might be not needed anymore?

nrnhines commented 4 years ago

That is a possibility.

pramodk commented 4 years ago

Yesterdays problem of following command doing nothing:

 ~/nrn/build/share/lib/python/neuron/rxd/geometry3d
$  c:/python368/python.exe setup.py -v build_ext  -v --build-lib=C:/msys64/home/kumbhar/nrn/build/lib/python

because numpy was not installed and it was raising an exception. And hence else block was not executed!!

try:
    import numpy
except:
    setup()
else:

After installing numpy, I have arrived at quite famous error:

$  c:/python368/python.exe setup.py -v build_ext  -v --build-lib=C:/msys64/home/kumbhar/nrn/build/lib/python
cl
running build_ext
building 'neuron.rxd.geometry3d.graphicsPrimitives' extension
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat cannot be found
error: Unable to find vcvarsall.bat

@nrnhines : we came across this in the past. Did we install windows specific microsoft VC++? I don't remember what we did last time.

nrnhines commented 4 years ago

vcenv.sh is specific to visual studio code 2014. I think you have 2019 installed on your virtual box guest. But instead of dropping back, perhaps vcenv.sh can be modified to be consistent with 2019 paths.

pramodk commented 4 years ago

No, I have installed visual studio 2014 now:

image

My understanding is that the vcvarsall.bat cannot be found error is unrelated to vcenv.sh but visual studio itself. See discussion here.

My installation doesn't have vcvarsall.bat:

$ find /c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio\ 14.0/ -name vcvarsall.bat

By the way, I have installed this visual studio via chocolaty.

pramodk commented 4 years ago

A good read on this issue from microsoft: https://devblogs.microsoft.com/python/unable-to-find-vcvarsall-bat/

pramodk commented 4 years ago

Hit the issue with pacman upgrade : https://github.com/msys2/MSYS2-packages/issues/1962 and https://github.com/microsoft/vcpkg/issues/11438

Pacman retrieving packages error after a few seconds : https://github.com/msys2/MSYS2-packages/issues/1658

pramodk commented 4 years ago

For the above issue I skipped pacman upgrade (as it seems not necessary for neuron).

Next issue on Azure CI:

running build_ext
building 'neuron.rxd.geometry3d.graphicsPrimitives' extension
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -ID:/a/1/s/share/lib/python/neuron/rxd/geometry3d -I. -IC:\python354\lib\site-packages\numpy\core\include -IC:\python354\include -IC:\python354\include "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE" "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\INCLUDE" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\winrt" "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\8.1\include\shared" "-IC:\Program Files (x86)\Windows Kits\8.1\include\um" "-IC:\Program Files (x86)\Windows Kits\8.1\include\winrt" /EHsc /TpgraphicsPrimitives.cpp /Fobuild\temp.win-amd64-3.5\Release\graphicsPrimitives.obj -Od
cl : Command line warning D9025 : overriding '/Ox' with '/Od'
graphicsPrimitives.cpp
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\link.exe /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:C:\python354\libs /LIBPATH:C:\python354\PCbuild\amd64 "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\LIB\amd64" "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\LIB\amd64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.18362.0\ucrt\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.18362.0\um\x64" "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\LIB\amd64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.10240.0\ucrt\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\8.1\lib\winv6.3\um\x64" /EXPORT:PyInit_graphicsPrimitives build\temp.win-amd64-3.5\Release\graphicsPrimitives.obj /OUT:D:/a/1/s/build/lib/python\neuron\rxd\geometry3d\graphicsPrimitives.cp35-win_amd64.pyd /IMPLIB:build\temp.win-amd64-3.5\Release\graphicsPrimitives.cp35-win_amd64.lib
graphicsPrimitives.obj : warning LNK4197: export 'PyInit_graphicsPrimitives' specified multiple times; using first specification
   Creating library build\temp.win-amd64-3.5\Release\graphicsPrimitives.cp35-win_amd64.lib and object build\temp.win-amd64-3.5\Release\graphicsPrimitives.cp35-win_amd64.exp
Generating code
Finished generating code
LINK : fatal error LNK1158: cannot run 'rc.exe'
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\x86_amd64\\link.exe' failed with exit status 1158
make[2]: *** [share/lib/python/neuron/rxd/geometry3d/CMakeFiles/rx3dextensions_0.dir/build.make:57: share/lib/python/neuron/rxd/geometry3d/CMakeFiles/rx3dextensions_0] Error 1
make[1]: *** [CMakeFiles/Makefile2:739: share/lib/python/neuron/rxd/geometry3d/CMakeFiles/rx3dextensions_0.dir/all] Error 2
make: *** [Makefile:130: all] Error 2
 Volume in drive D is Temporary Storage
 Volume Serial Number is CE2B-EA0D

Going to try solution mentioned in : https://stackoverflow.com/questions/43858836/python-installing-clarifai-vs14-0-link-exe-failed-with-exit-status-1158

pramodk commented 4 years ago

@nrnhines : two questions:

Edit: answering first one myself :

  • Is there way to print progress during installer creation?

Documentation says: The /V switch followed by a number between 0 and 4 will set the verbosity of output accordingly. 0=no output, 1=errors only, 2=warnings and errors, 3=info, warnings, and errors, 4=all output.

nrnhines commented 4 years ago

On my virtualbox windows guest, it takes less than a minute to create the setup.exe. I hope azure is not using tape drives for intermediate storage:)

pramodk commented 4 years ago

After discussion with Michael, we found that

 ; optional section
Section /o "Documentation"
  SetOutPath "$INSTDIR"
  File /nonfatal /r "${MARSHALNRN}\..\nrnhtml"
  IfFileExists "$INSTDIR\lib\smsinst.dat" +1 next
    CreateShortCut "$SMPROGRAMS\${NEURON}\Documentation.lnk" "$INSTDIR\nrnhtml\helpfils.html"
next:
  IfFileExists "$INSTDIR\lib\deskinst.dat" +1 next2
    CreateShortCut "$DESKTOP\${NEURON}\Documentation.lnk" "$INSTDIR\nrnhtml\helpfils.html"
next2:
SectionEnd

@nrnhines : we have to decide about Documentation section when I will create pull request. Should this be commented?

nrnhines commented 4 years ago

I think we should comment this out for now.

pramodk commented 4 years ago

Just FYI : that crazy C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat appears after selecting the below checkbox which is not selected by default and you have to scroll down to see that! image The issue here has good discussion : https://github.com/benfred/implicit/issues/76

And there is very apt comment:

image

pramodk commented 4 years ago

Also, when I try to run installer created then I see:

image

I have to click on More Info to get

image

nrnhines commented 4 years ago

Yes. This seems to be the latest behavior of windows.

pramodk commented 4 years ago

@nrnhines : I am seeing bellow behaviour:

  1. If I start nrniv on new command prompt:
C:\Users\kumbhar>nrniv
NEURON -- VERSION 8.0.dev-124-ge7a60e1c+ HEAD (e7a60e1c+) 2020-05-23
Duke, Yale, and the BlueBrain Project -- Copyright 1984-2019
See http://neuron.yale.edu/neuron/credits

Could not load libnrnpython27
pyver10=0 pylib=C:/ProgramData/chocolatey/lib/mingw/tools/install/mingw64/opt/bin/libpython2.7.dll
oc>
  1. Start python and running basic tests is fine:
C:\Users\kumbhar>C:/python27/python
Python 2.7.17 (v2.7.17:c2f86d86e6, Oct 19 2019, 21:01:17) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from neuron import h
>>> import neuron
>>> neuron.test()
testBytesize (neuron.tests.test_vector.VectorTestCase)
Test that Vector.__array_interface__ returns the proper bytesize (of a double) ... ok
testEndian (neuron.tests.test_vector.VectorTestCase)
Test that Vector.__array_interface__ returns the proper byteorder (endian) ... ok
testNumpyInteraction (neuron.tests.test_vector.VectorTestCase)
Testing numpy.array <=> hoc.Vector interaction ... ok
testPerformance (neuron.tests.test_vector.VectorTestCase)
Test performance of Vector<->list,array ...

Executed "l = range(1000000)".  Elapsed = 0.021800 s
Executed "v = h.Vector(l)".  Elapsed = 0.022000 s
inplace:
Executed "v.from_python(l)".  Elapsed = 0.019000 s
Executed "a = numpy.array(v)".  Elapsed = 0.003600 s
inplace:
Executed "v.to_python(a)".  Elapsed = 0.000000 s
Executed "v2 = h.Vector(a)".  Elapsed = 0.006800 s
inplace:
Executed "v2.from_python(a)".  Elapsed = 0.000000 s
Executed "l2 = list(v2)".  Elapsed = 0.027800 s
inplace:
Executed "v.to_python(l2)".  Elapsed = 0.009600 s
Executed "v2 = h.Vector(a[::-1])".  Elapsed = 0.006000 s
Executed "a2 = numpy.array(v2)".  Elapsed = 0.006200 s
ok
testABI (neuron.tests.test_neuron.NeuronTestCase)
Test use of some  Py_LIMITED_API for python3. ... ok
testExtendedSection (neuron.tests.test_neuron.NeuronTestCase) ... test:  ok
testHClass (neuron.tests.test_neuron.NeuronTestCase)
Test subclass of hoc class. ... ok
testHelp (neuron.tests.test_neuron.NeuronTestCase) ... Syntax:
    .. code-block::
        python

        h.xpanel('name')
        h.xpanel('name', [0-1])
        h.xpanel()
        h.xpanel(x, y)
        h.xpanel(scroll)
        h.xpanel(scroll, x, y)

Description:

    ``h.xpanel("name")``

    ``h.xpanel("name", [0-1])``
        Title of a new panel. Every
        button, menu, and value between this and a closing ``xpanel()`` command
        with no arguments (or placement args) belongs to this panel.
        If the form is used with a second argument equal to 1, then
        the panel is laid out horizontally. Otherwise the default is vertically.

    ``h.xpanel()``

    ``h.xpanel(x, y)``
        done constructing the panel. so map it to the screen with position
        optionally specified.

    ``h.xpanel(scroll)``

    ``h.xpanel(scroll, x, y)``
        as above but if the first arg is a number, then the value determines
        whether the panel will be inside a scrollbox. Scroll = 0 means a scrollbox
        will NOT be used. Scroll = 1 means the panel will be inside a scrollbox.
        Scroll = -1 is the default value and whether or not a scrollbox is used
        is determined by the number of panel items in comparison with the
        value of the panel_scroll property in the nrn.defaults file.

ok
testIterators (neuron.tests.test_neuron.NeuronTestCase)
Test section, segment, mechanism, rangevar iterators. ... ok
testRxDexistence (neuron.tests.test_neuron.NeuronTestCase) ... scipy not available
ok
testpsection (neuron.tests.test_neuron.NeuronTestCase) ... ok

----------------------------------------------------------------------
Ran 11 tests in 1.578s

OK
True
>>>
  1. See issue while running rxd tests though:
>C:/python27/python -c "import neuron; neuron.test(); neuron.test_rxd(); quit();"

image

pramodk commented 4 years ago

Locally I did $ cp /ming264/bin/libzstd.dll /c/nrn/bin/ and it seems to be working. So I assume I have to do the same during build time somewhere in the script? where that would be?

nrnhines commented 4 years ago

It took several hours for me to upgrade msys2 yesterday and I have not gotten a chance yet to build NEURON. What often happens though is that new msys2 versions often require some different exe and .h files for the tiny development environment and therefore some slight changes to nrn/mingw_files/nrnmingwenv.sh . If the exe list is complete, the script usually gets all the dlls automatically. But maybe there are exceptions if the exe dlopens a dll. The dlls are determined from an analysis of cygcheck output on all the exe.

pramodk commented 4 years ago

Ok. For now, I am trying following:

→ git diff --cached
diff --git a/mingw_files/nrnmingwenv.sh b/mingw_files/nrnmingwenv.sh
index daaa3db3..312d77b4 100644
--- a/mingw_files/nrnmingwenv.sh
+++ b/mingw_files/nrnmingwenv.sh
@@ -86,6 +86,7 @@ ld.exe
 libgmp-10.dll
 x86_64-w64-mingw32-gcc.exe
 zlib1.dll
+libzstd.dll
nrnhines commented 4 years ago

makes me wonder if zlib1.dll is needed with latest msys2.

pramodk commented 4 years ago

Removing zlib I get following. So it seems to be needed: image

nrnhines commented 4 years ago

Yes, I just looked at cygcheck and see

hines@DESKTOP-V84UL21 MINGW64 ~/neuron/nrncmake
$  cygcheck C:\msys64\mingw64\lib\gcc\x86_64-w64-mingw32\10.1.0\cc1.exe
  C:\msys64\mingw64\bin\libgmp-10.dll
    C:\WINDOWS\system32\KERNEL32.dll
      C:\WINDOWS\system32\ntdll.dll
      C:\WINDOWS\system32\KERNELBASE.dll
    C:\WINDOWS\system32\msvcrt.dll
  C:\msys64\mingw64\bin\zlib1.dll
  C:\msys64\mingw64\bin\libzstd.dll
  C:\msys64\mingw64\bin\libwinpthread-1.dll

so the question becomes, why am I not lookinf for these dlls automatically from nrnmingwenv.sh?

nrnhines commented 4 years ago

Looks like we need a cp_dlls mingw64/bin and cp_dlls mingw64/lib/gcc/x86_64-w64-mingw32/$gccver at the proper places. The problem is that it appears that the dlls in this case are not is the same folder as the exe. So cp_dlls would have to be modified to take this into account. Maybe something to do for later.

pramodk commented 4 years ago

With this https://github.com/neuronsimulator/nrn/issues/319#issuecomment-633044702, libzstd problem is solved.

What about issue 1. that I mentioned in https://github.com/neuronsimulator/nrn/issues/319#issuecomment-633040733? i.e. when I launch nrniv we see:

image

bin dir has all necessary dlls:

image

pramodk commented 4 years ago

Additional question:

I am trying to run created installer under Azure CI for testing and I see that it hangs / doesn't progress after launching exe:

nrn8.0setup-AMD64.exe /S /D=D:\a\1\s\tmp

OR

nrn8.0setup-AMD64.exe /S

The same binary works fine when I am installing under VM. I wonder if this issue is because of stricter security policy (?) on Azure hosts for unsigned binary.

@nrnhines : any suggestions for this? Have you tried self signing exe on windows using signtool?

pramodk commented 4 years ago

Another question I have in my mind is whether somehow /S (silent install) is not working under CI and it’s simply waiting for user input.

I have no way to check this and hence wonder if we can update nsi script to build installer that doesn’t have any user interaction at all. That will help us to quickly verify if it’s silent installation problem or unsigned installer problem.

nrnhines commented 4 years ago

you should try //S and //D Or was that executed natively in a command batch script instead of a bash script?

pramodk commented 4 years ago

Tried that as well without success. Also I am running this under windows command prompt and not bash shell:

    - script: |
        nrn.exe //S
nrnhines commented 4 years ago

I have to admit that I only typed the /S command and did not actually execute in a script. I need to test whether success occurs when running in a script. I guess it is also worth testing the request for silent in the nsi script itself.

4.9.14.17 SetSilent
silent | normal
Sets the installer to silent mode or normal mode. See SilentInstall for more information about silent installations. Can only be used in .onInit.

and also

4.8.1.41 SilentInstall
normal|silent|silentlog
Specifies whether or not the installer should be silent. If it is 'silent' or 'silentlog', all sections that have the SF_SELECTED flag are installed quietly (you can set this flag using SectionSetFlags), with no screen output from the installer itself (the script can still display whatever it wants, use MessageBox's /SD to specify a default for silent installers). Note that if this is set to 'normal' and the user runs the installer with /S (case sensitive) on the command line, it will behave as if SilentInstall 'silent' was used. Note: see also LogSet.

See section 4.12 for more information.

See the example here https://nsis.sourceforge.io/Examples/silent.nsi I think that you just need

SetSilent silent

in the .onInit function

nrnhines commented 4 years ago

It occurs to me that it could hang if in fact one of my error message boxes pops up.