resdata icon indicating copy to clipboard operation
resdata copied to clipboard

Using pip install libecl on Window?

Open cuthbertng94 opened this issue 4 years ago • 31 comments

Hello, I am wondering if there is any clearer instruction of installing libecl on window? Thank you.

cuthbertng94 avatar Sep 10 '20 11:09 cuthbertng94

You need to have some C++ compiler (eg. Visual Studio 2015+), CMake, Python and git. Open a new command prompt (or powershell), make sure all are accessible, and then you should be able to follow the same steps as the Linux/macOS install.

Also see the appveyor config: https://github.com/equinor/libecl/blob/master/appveyor.yml

pinkwah avatar Sep 10 '20 12:09 pinkwah

If I am using jupyter notebook by Anaconda, then I just need to do the installation of Visual Studio 2015+, CMake, Python and git on the Anaconda prompt? Then after that I am able to pip install the libecl?

cuthbertng94 avatar Sep 17 '20 12:09 cuthbertng94

The simplest thing you can do is use WSL, which installs an Ubuntu VM that you can interact with as a Windows user. Then simply pip install libecl.

Unfortunately, you can't pip install libecl on normal Windows at this moment. You need to follow the Alternative 3 installation guide if you want to have a native solution. (If you do end up getting this working I'd be very happy to include the steps you used in the README)

pinkwah avatar Oct 16 '20 08:10 pinkwah

So I was able to get a pretty easy install going for v2.9.4. I have msvc.exe from VS 2017 installed and I edited the setup.py to include a windows platform specific link the compiled library.

    def dlopen_libecl():
        import ctypes
        import platform

        path = os.path.join(os.path.dirname(__file__), ".libs")
        if platform.system() == "Linux":
            path = os.path.join(path, "libecl.so")
        elif platform.system() == "Darwin":
            path = os.path.join(path, "libecl.dylib")
        elif platform.system() == "Windows":
            path = os.path.join(os.path.dirname(__file__), ".bin", "libecl.dll")**
        else:
            raise NotImplementedError("Invalid platform")

I'm not sure why but with the Windows compiler the dll ends up in the bin folder, not .libs.

This then works by running

python setup.py install

in the top level directory.

I've never had an issue with the ecl functionality under windows, is there a reason we can't add a windows wheel to pypi deployment pipeline?

trhallam avatar Nov 26 '20 14:11 trhallam

@trhallam The almost same patch for finding libecl on Windows is merged now as https://github.com/equinor/ecl/pull/752, and will be present in upcoming release(s). I definitely see the issue on Windows with EclKW, the same as your https://github.com/equinor/ecl/issues/604

crayxt avatar Dec 02 '20 07:12 crayxt

The reason we don't have a Windows wheel is because of lack of time really (and because internally nobody uses Windows for libecl-related stuff). I've recently acquired Windows 10 + Visual Studio licenses so I'll set it up it when time allows. It's in my backlog. :)

pinkwah avatar Dec 02 '20 09:12 pinkwah

Awesome, understand @dotfloat about the time thing. If I can help out somehow just let me know.

trhallam avatar Dec 02 '20 10:12 trhallam

I gave it another try and didn't get anywhere. Was trying to get the Python bindings to work at all. I have the Python from Windows 10 store (3.9, x64). Successfully built with pip install . using MSVC 2019. However, when importing ecl it fails when trying to load the libecl.dll file, complaining that it's not a valid DLL. I'm assuming there's a mismatch between the architectures, ie. libecl.dll is x86.

How did you get it to work?

For the record, in order to get automated PyPI builds I need to figure out:

  1. Compile and test libecl.dll by itself using the C Tests.
  2. Figure out whether I need to compile two different Windows packages, one for x86 and for x64.
  3. Build with pip wheel .
  4. Test using pytest python/tests -v

(Basically, I need add Windows to all of the steps in the Github Actions workflow, https://github.com/equinor/ecl/blob/master/.github/workflows/testing.yml)

pinkwah avatar Dec 17 '20 21:12 pinkwah

I'm on x64 windows. I'm not sure I have a 32bit MSVC compiler so it may just be suited to my system. I suspect you will need an architecture specific dll.

I'll make a fork and have a look at the Github Actions workflow.

trhallam avatar Dec 18 '20 10:12 trhallam

@dotfloat , so here is the rub. I don't think Github actions provides any 32bit images. So we can build a 32 bit windows lib, but we can't test it on the build system. Do you want to offer 32 bit libs? I don't think you do that for ubuntu or mac at the moment.

If you are happy to go with 64bit only I can modify the workflow and submit a pull request once it is tested in my fork.

trhallam avatar Dec 18 '20 11:12 trhallam

To my knowledge, MSVC provides both x86 and x64 compilers, and x86 Python should work on x64, so as long as Github provides a x64 image, then we're set.

We don't provide x86 Linux or macOS builds because both have had excellent x64 support. Whereas in the Windows world people still depend on x86 working. It could be my own bias though. It's not something that I want to support, but I'll have to ask around whether it's something we want to support.

The Python installed via the Microsoft store is x64, which is fine. Seems like either https://github.com/scikit-build/scikit-build or ninja have some bug that builds an x86 .dll, but I'm not certain.

If you can do the 64-bit then ye, would be great to have a PR on it!

pinkwah avatar Dec 18 '20 12:12 pinkwah

Oh ok,

Well, using the same setup as on Github (VS 2019 v16) I have to modify the cmake command like this.

mkdir cmake-build
cmake -S . -B cmake-build -G "Visual Studio 16 2019" -A "x64" -DBUILD_TESTS=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo
cmake --build cmake-build

Which passes fine. But then I get errors in ctest

PS C:\dev\source\ecl\cmake-build> $Env:ECL_SKIP_SIGNAL = "absolutely"
PS C:\dev\source\ecl\cmake-build> $Env:ERT_SHOW_BACKTRACE = "yes please!"
PS C:\dev\source\ecl\cmake-build> ctest --output-on-failure
Test project C:/dev/source/ecl/cmake-build
        Start   1: ert_util_alloc_file_components
Test not available without configuration.  (Missing "-C <config>"?)
  1/114 Test   #1: ert_util_alloc_file_components .......***Not Run   0.00 sec
        Start   2: ert_util_split_path
Test not available without configuration.  (Missing "-C <config>"?)
  2/114 Test   #2: ert_util_split_path ..................***Not Run   0.00 sec
        Start   3: ert_util_approx_equal
Test not available without configuration.  (Missing "-C <config>"?)
  3/114 Test   #3: ert_util_approx_equal ................***Not Run   0.00 sec
        Start   4: ert_util_before_after
Test not available without configuration.  (Missing "-C <config>"?)
  4/114 Test   #4: ert_util_before_after ................***Not Run   0.00 sec
        Start   5: ert_util_binary_split

trhallam avatar Dec 18 '20 12:12 trhallam

You're outside the build dir:

ctest -C cmake-build --output-on-failure

pinkwah avatar Dec 18 '20 12:12 pinkwah

The previous post was in the build dir cmake-build no? You have the line cd cmake-build in the run tests actions.

Anyway, I tried a few different configurations of the command in the project and build directory. Still no joy.

PS C:\dev\source\ecl> ctest -C cmake-build --output-on-failure
Test project C:/dev/source/ecl
No tests were found!!!
PS C:\dev\source\ecl> cd cmake-build
PS C:\dev\source\ecl\cmake-build> ctest -C cmake-build --output-on-failure
Test project C:/dev/source/ecl/cmake-build
        Start   1: ert_util_alloc_file_components
Test not available in configuration "cmake-build".
  1/114 Test   #1: ert_util_alloc_file_components .......***Not Run   0.00 sec
        Start   2: ert_util_split_path
Test not available in configuration "cmake-build".
...
Errors while running CTest
PS C:\dev\source\ecl\cmake-build> ctest --output-on-failure
Test project C:/dev/source/ecl/cmake-build
        Start   1: ert_util_alloc_file_components
Test not available without configuration.  (Missing "-C <config>"?)
  1/114 Test   #1: ert_util_alloc_file_components .......***Not Run   0.00 sec
        Start   2: ert_util_split_path
Test not available without configuration.  (Missing "-C <config>"?)

trhallam avatar Dec 18 '20 12:12 trhallam

Oh, it seems to be a build configuration. I think it's -C Release or -C "x64 Release" or something. It's the MSVC build configuration.

pinkwah avatar Dec 18 '20 13:12 pinkwah

Ok cool, making progress.

I had to add the dll directory to the path in powershell

cd cmake-build
$Env:Path += ";"+$pwd+"\lib\Debug"
ctests --output-on-failure -C Debug

There are some test failures:

PS C:\dev\source\ecl\cmake-build> ctest --output-on-failure -C Debug
Test project C:/dev/source/ecl/cmake-build
        Start   1: ert_util_alloc_file_components
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_alloc_file_components.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_alloc_file_components.exe
C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_alloc_file_components.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ert_util_alloc_file_components.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ert_util_alloc_file_components.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_alloc_file_components.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_alloc_file_components.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_alloc_file_components.exe
  1/114 Test   #1: ert_util_alloc_file_components .......***Not Run   0.00 sec
        Start   2: ert_util_split_path
  2/114 Test   #2: ert_util_split_path ..................***Failed    0.01 sec
Strings not equal atC:\dev\source\ecl\lib\util\tests\ert_util_split_path.cpp:31 (path != )

        Start   3: ert_util_approx_equal
  3/114 Test   #3: ert_util_approx_equal ................   Passed    0.01 sec
        Start   4: ert_util_before_after
  4/114 Test   #4: ert_util_before_after ................   Passed    0.01 sec
        Start   5: ert_util_binary_split
  5/114 Test   #5: ert_util_binary_split ................   Passed    0.01 sec
        Start   6: ert_util_buffer
  6/114 Test   #6: ert_util_buffer ......................   Passed    0.01 sec
        Start   7: ert_util_clamp
  7/114 Test   #7: ert_util_clamp .......................   Passed    0.01 sec
        Start   8: ert_util_chdir
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_chdir.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_chdir.exe
C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_chdir.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ert_util_chdir.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ert_util_chdir.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_chdir.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_chdir.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_chdir.exe
  8/114 Test   #8: ert_util_chdir .......................***Not Run   0.00 sec
        Start   9: ert_util_filename
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_filename.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_filename.exe
C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_filename.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ert_util_filename.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ert_util_filename.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_filename.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_filename.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_filename.exe
  9/114 Test   #9: ert_util_filename ....................***Not Run   0.00 sec
        Start  10: ert_util_hash_test
 10/114 Test  #10: ert_util_hash_test ...................   Passed    0.01 sec
        Start  11: ert_util_parent_path
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_parent_path.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_parent_path.exe
C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_parent_path.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ert_util_parent_path.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ert_util_parent_path.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_parent_path.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_parent_path.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_parent_path.exe
 11/114 Test  #11: ert_util_parent_path .................***Not Run   0.00 sec
        Start  12: ert_util_realpath
 12/114 Test  #12: ert_util_realpath ....................   Passed    0.01 sec
        Start  13: ert_util_relpath_test
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_relpath_test.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_relpath_test.exe
C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_relpath_test.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ert_util_relpath_test.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ert_util_relpath_test.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_relpath_test.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_relpath_test.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_relpath_test.exe
 13/114 Test  #13: ert_util_relpath_test ................***Not Run   0.00 sec
        Start  14: ert_util_rng
 14/114 Test  #14: ert_util_rng .........................   Passed    0.01 sec
        Start  15: ert_util_sscan_test
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_sscan_test.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_sscan_test.exe
C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_sscan_test.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ert_util_sscan_test.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ert_util_sscan_test.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_sscan_test.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_sscan_test.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_sscan_test.exe
 15/114 Test  #15: ert_util_sscan_test ..................***Not Run   0.00 sec
        Start  16: ert_util_statistics
 16/114 Test  #16: ert_util_statistics ..................   Passed    0.01 sec
        Start  17: ert_util_strcat_test
 17/114 Test  #17: ert_util_strcat_test .................   Passed    0.01 sec
        Start  18: ert_util_stringlist_test
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_stringlist_test.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_stringlist_test.exe
C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_stringlist_test.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ert_util_stringlist_test.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ert_util_stringlist_test.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_stringlist_test.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_stringlist_test.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_stringlist_test.exe
 18/114 Test  #18: ert_util_stringlist_test .............***Not Run   0.00 sec
        Start  19: ert_util_string_util
 19/114 Test  #19: ert_util_string_util .................   Passed    0.01 sec
        Start  20: ert_util_strstr_int_format
 20/114 Test  #20: ert_util_strstr_int_format ...........   Passed    0.01 sec
        Start  21: ert_util_type_vector_functions
 21/114 Test  #21: ert_util_type_vector_functions .......   Passed    0.02 sec
        Start  22: ert_util_vector_test
 22/114 Test  #22: ert_util_vector_test .................   Passed    0.01 sec
        Start  23: ert_util_datetime
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_datetime.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_datetime.exe
C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_datetime.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ert_util_datetime.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ert_util_datetime.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_datetime.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_datetime.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_datetime.exe
 23/114 Test  #23: ert_util_datetime ....................***Not Run   0.00 sec
        Start  24: ert_util_normal_path
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_normal_path.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_normal_path.exe
C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_normal_path.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ert_util_normal_path.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ert_util_normal_path.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_normal_path.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_normal_path.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_normal_path.exe
 24/114 Test  #24: ert_util_normal_path .................***Not Run   0.00 sec
        Start  25: ert_util_mkdir_p
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_mkdir_p.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_mkdir_p.exe
C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_mkdir_p.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ert_util_mkdir_p.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ert_util_mkdir_p.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_mkdir_p.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_mkdir_p.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_mkdir_p.exe
 25/114 Test  #25: ert_util_mkdir_p .....................***Not Run   0.00 sec
        Start  26: test_area
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/test_area.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/test_area.exe
C:/dev/source/ecl/cmake-build/bin/Debug/test_area.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/test_area.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/test_area.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/test_area.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/test_area.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/test_area.exe
 26/114 Test  #26: test_area ............................***Not Run   0.00 sec
        Start  27: ecl_smspec_node
 27/114 Test  #27: ecl_smspec_node ......................   Passed    0.01 sec
        Start  28: ert_util_work_area
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_work_area.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_work_area.exe
C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_work_area.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ert_util_work_area.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ert_util_work_area.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_work_area.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_work_area.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_work_area.exe
 28/114 Test  #28: ert_util_work_area ...................***Not Run   0.00 sec
        Start  29: ert_util_cwd_test
 29/114 Test  #29: ert_util_cwd_test ....................***Failed    8.47 sec

-----------------------------------------------------------------
A fatal error has been detected and the program will abort.

Current executable : <Not set>
Version info       : <Not set>

Error message: Abort called from: "????" (C:\dev\source\ecl\lib\util\util.c:728)
"????": Internal error - function not properly implmented on Windows
-----------------------------------------------------------------
Aborting ...
Assertion failed: 0, file C:\dev\source\ecl\lib\util\util_abort_simple.c, line 33

        Start  30: ert_util_copy_file
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_copy_file.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_copy_file.exe
C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_copy_file.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ert_util_copy_file.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ert_util_copy_file.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_copy_file.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_copy_file.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_copy_file.exe
 30/114 Test  #30: ert_util_copy_file ...................***Not Run   0.00 sec
        Start  31: ert_util_file_readable
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_file_readable.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_file_readable.exe
C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_file_readable.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ert_util_file_readable.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ert_util_file_readable.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_file_readable.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_file_readable.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_file_readable.exe
 31/114 Test  #31: ert_util_file_readable ...............***Not Run   0.00 sec
        Start  32: ert_util_path_stack_test
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_path_stack_test.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_path_stack_test.exe
C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_path_stack_test.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ert_util_path_stack_test.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ert_util_path_stack_test.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_path_stack_test.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_path_stack_test.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/ert_util_path_stack_test.exe
 32/114 Test  #32: ert_util_path_stack_test .............***Not Run   0.00 sec
        Start  33: ecl_alloc_cpgrid
 33/114 Test  #33: ecl_alloc_cpgrid .....................   Passed    0.01 sec
        Start  34: ecl_alloc_grid_dxv_dyv_dzv
 34/114 Test  #34: ecl_alloc_grid_dxv_dyv_dzv ...........   Passed    0.02 sec
        Start  35: ecl_fault_block_layer
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/ecl_fault_block_layer.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_fault_block_layer.exe
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_fault_block_layer.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_fault_block_layer.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_fault_block_layer.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_fault_block_layer.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_fault_block_layer.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/ecl_fault_block_layer.exe
 35/114 Test  #35: ecl_fault_block_layer ................***Not Run   0.00 sec
        Start  36: ecl_util_path_access
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/ecl_util_path_access.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_util_path_access.exe
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_util_path_access.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_util_path_access.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_util_path_access.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_util_path_access.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_util_path_access.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/ecl_util_path_access.exe
 36/114 Test  #36: ecl_util_path_access .................***Not Run   0.00 sec
        Start  37: ecl_grid_add_nnc
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/ecl_grid_add_nnc.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_grid_add_nnc.exe
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_grid_add_nnc.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_grid_add_nnc.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_grid_add_nnc.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_grid_add_nnc.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_grid_add_nnc.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/ecl_grid_add_nnc.exe
 37/114 Test  #37: ecl_grid_add_nnc .....................***Not Run   0.00 sec
        Start  38: ecl_grid_copy
 38/114 Test  #38: ecl_grid_copy ........................   Passed    0.01 sec
        Start  39: ecl_grid_create
 39/114 Test  #39: ecl_grid_create ......................   Passed    0.03 sec
        Start  40: ecl_grid_DEPTHZ
 40/114 Test  #40: ecl_grid_DEPTHZ ......................   Passed    0.11 sec
        Start  41: ecl_grid_fwrite
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/ecl_grid_fwrite.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_grid_fwrite.exe
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_grid_fwrite.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_grid_fwrite.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_grid_fwrite.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_grid_fwrite.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_grid_fwrite.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/ecl_grid_fwrite.exe
 41/114 Test  #41: ecl_grid_fwrite ......................***Not Run   0.00 sec
        Start  42: ecl_grid_unit_system
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/ecl_grid_unit_system.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_grid_unit_system.exe
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_grid_unit_system.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_grid_unit_system.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_grid_unit_system.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_grid_unit_system.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_grid_unit_system.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/ecl_grid_unit_system.exe
 42/114 Test  #42: ecl_grid_unit_system .................***Not Run   0.00 sec
        Start  43: ecl_grid_export
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/ecl_grid_export.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_grid_export.exe
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_grid_export.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_grid_export.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_grid_export.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_grid_export.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_grid_export.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/ecl_grid_export.exe
 43/114 Test  #43: ecl_grid_export ......................***Not Run   0.00 sec
        Start  44: ecl_grid_init_fwrite
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/ecl_grid_init_fwrite.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_grid_init_fwrite.exe
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_grid_init_fwrite.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_grid_init_fwrite.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_grid_init_fwrite.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_grid_init_fwrite.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_grid_init_fwrite.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/ecl_grid_init_fwrite.exe
 44/114 Test  #44: ecl_grid_init_fwrite .................***Not Run   0.00 sec
        Start  45: ecl_grid_reset_actnum
 45/114 Test  #45: ecl_grid_reset_actnum ................   Passed    0.01 sec
        Start  46: ecl_grid_ext_actnum
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/ecl_grid_ext_actnum.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_grid_ext_actnum.exe
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_grid_ext_actnum.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_grid_ext_actnum.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_grid_ext_actnum.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_grid_ext_actnum.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_grid_ext_actnum.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/ecl_grid_ext_actnum.exe
 46/114 Test  #46: ecl_grid_ext_actnum ..................***Not Run   0.00 sec
        Start  47: ecl_nnc_export_intersect
 47/114 Test  #47: ecl_nnc_export_intersect .............***Failed    1.04 sec

-----------------------------------------------------------------
A fatal error has been detected and the program will abort.

Current executable : <Not set>
Version info       : <Not set>

Error message: Abort called from: "????" (C:\dev\source\ecl\lib\util\util.c:2601)
"????": file is too small to automatically determine formatted/unformatted status
-----------------------------------------------------------------
Aborting ...
Assertion failed: 0, file C:\dev\source\ecl\lib\util\util_abort_simple.c, line 33

-----------------------------------------------------------------
A fatal error has been detected and the program will abort.

Current executable : <Not set>
Version info       : <Not set>

Error message: Abort called from: "????" (C:\dev\source\ecl\lib\util\util.c:4448)
Program received signal:22
-----------------------------------------------------------------
Aborting ...
Assertion failed: 0, file C:\dev\source\ecl\lib\util\util_abort_simple.c, line 33

        Start  48: ecl_sum_restart
 48/114 Test  #48: ecl_sum_restart ......................   Passed    0.25 sec
        Start  49: ecl_sum_data_intermediate_test
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/ecl_sum_data_intermediate_test.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_sum_data_intermediate_test.exe
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_sum_data_intermediate_test.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_sum_data_intermediate_test.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_sum_data_intermediate_test.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_sum_data_intermediate_test.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_sum_data_intermediate_test.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/ecl_sum_data_intermediate_test.exe
 49/114 Test  #49: ecl_sum_data_intermediate_test .......***Not Run   0.00 sec
        Start  50: ecl_grid_cell_contains
 50/114 Test  #50: ecl_grid_cell_contains ...............   Passed    0.02 sec
        Start  51: ecl_unsmry_loader_test
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/ecl_unsmry_loader_test.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_unsmry_loader_test.exe
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_unsmry_loader_test.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_unsmry_loader_test.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_unsmry_loader_test.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_unsmry_loader_test.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_unsmry_loader_test.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/ecl_unsmry_loader_test.exe
 51/114 Test  #51: ecl_unsmry_loader_test ...............***Not Run   0.00 sec
        Start  52: ecl_init_file
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/ecl_init_file.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_init_file.exe
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_init_file.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_init_file.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_init_file.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_init_file.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_init_file.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/ecl_init_file.exe
 52/114 Test  #52: ecl_init_file ........................***Not Run   0.00 sec
        Start  53: ecl_kw_space_pad
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/ecl_kw_space_pad.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_kw_space_pad.exe
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_kw_space_pad.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_kw_space_pad.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_kw_space_pad.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_kw_space_pad.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_kw_space_pad.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/ecl_kw_space_pad.exe
 53/114 Test  #53: ecl_kw_space_pad .....................***Not Run   0.00 sec
        Start  54: ecl_kw_cmp_string
 54/114 Test  #54: ecl_kw_cmp_string ....................   Passed    0.01 sec
        Start  55: ecl_kw_equal
 55/114 Test  #55: ecl_kw_equal .........................   Passed    0.01 sec
        Start  56: ecl_kw_fread
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/ecl_kw_fread.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_kw_fread.exe
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_kw_fread.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_kw_fread.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_kw_fread.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_kw_fread.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_kw_fread.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/ecl_kw_fread.exe
 56/114 Test  #56: ecl_kw_fread .........................***Not Run   0.00 sec
        Start  57: ecl_kw_grdecl
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/ecl_kw_grdecl.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_kw_grdecl.exe
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_kw_grdecl.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_kw_grdecl.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_kw_grdecl.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_kw_grdecl.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_kw_grdecl.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/ecl_kw_grdecl.exe
 57/114 Test  #57: ecl_kw_grdecl ........................***Not Run   0.00 sec
        Start  58: ecl_kw_init
 58/114 Test  #58: ecl_kw_init ..........................   Passed    0.01 sec
        Start  59: ecl_nnc_geometry
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/ecl_nnc_geometry.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_nnc_geometry.exe
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_nnc_geometry.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_nnc_geometry.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_nnc_geometry.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_nnc_geometry.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_nnc_geometry.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/ecl_nnc_geometry.exe
 59/114 Test  #59: ecl_nnc_geometry .....................***Not Run   0.00 sec
        Start  60: ecl_nnc_info_test
 60/114 Test  #60: ecl_nnc_info_test ....................   Passed    0.01 sec
        Start  61: ecl_nnc_vector
 61/114 Test  #61: ecl_nnc_vector .......................   Passed    0.01 sec
        Start  62: ecl_rft_cell
 62/114 Test  #62: ecl_rft_cell .........................   Passed    0.01 sec
        Start  63: ecl_sum_alloc_resampled_test
 63/114 Test  #63: ecl_sum_alloc_resampled_test .........   Passed    0.02 sec
        Start  64: ecl_file_view
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/ecl_file_view.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_file_view.exe
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_file_view.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_file_view.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_file_view.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_file_view.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_file_view.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/ecl_file_view.exe
 64/114 Test  #64: ecl_file_view ........................***Not Run   0.00 sec
        Start  65: test_ecl_file_index
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/test_ecl_file_index.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/test_ecl_file_index.exe
C:/dev/source/ecl/cmake-build/bin/Debug/test_ecl_file_index.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/test_ecl_file_index.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/test_ecl_file_index.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/test_ecl_file_index.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/test_ecl_file_index.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/test_ecl_file_index.exe
 65/114 Test  #65: test_ecl_file_index ..................***Not Run   0.00 sec
        Start  66: test_transactions
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/test_transactions.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/test_transactions.exe
C:/dev/source/ecl/cmake-build/bin/Debug/test_transactions.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/test_transactions.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/test_transactions.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/test_transactions.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/test_transactions.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/test_transactions.exe
 66/114 Test  #66: test_transactions ....................***Not Run   0.00 sec
        Start  67: ecl_rst_file
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/ecl_rst_file.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_rst_file.exe
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_rst_file.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_rst_file.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_rst_file.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_rst_file.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_rst_file.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/ecl_rst_file.exe
 67/114 Test  #67: ecl_rst_file .........................***Not Run   0.00 sec
        Start  68: ecl_sum_writer
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/ecl_sum_writer.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_sum_writer.exe
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_sum_writer.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_sum_writer.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_sum_writer.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_sum_writer.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_sum_writer.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/ecl_sum_writer.exe
 68/114 Test  #68: ecl_sum_writer .......................***Not Run   0.00 sec
        Start  69: ecl_util_filenames
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/ecl_util_filenames.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_util_filenames.exe
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_util_filenames.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_util_filenames.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_util_filenames.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_util_filenames.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_util_filenames.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/ecl_util_filenames.exe
 69/114 Test  #69: ecl_util_filenames ...................***Not Run   0.00 sec
        Start  70: ecl_util_make_date_no_shift
 70/114 Test  #70: ecl_util_make_date_no_shift ..........   Passed    0.02 sec
        Start  71: ecl_util_make_date_shift
 71/114 Test  #71: ecl_util_make_date_shift .............   Passed    0.01 sec
        Start  72: ecl_util_month_range
 72/114 Test  #72: ecl_util_month_range .................   Passed    0.01 sec
        Start  73: ecl_valid_basename
 73/114 Test  #73: ecl_valid_basename ...................   Passed    0.01 sec
        Start  74: test_ecl_nnc_data
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/test_ecl_nnc_data.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/test_ecl_nnc_data.exe
C:/dev/source/ecl/cmake-build/bin/Debug/test_ecl_nnc_data.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/test_ecl_nnc_data.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/test_ecl_nnc_data.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/test_ecl_nnc_data.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/test_ecl_nnc_data.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/test_ecl_nnc_data.exe
 74/114 Test  #74: test_ecl_nnc_data ....................***Not Run   0.00 sec
        Start  75: ecl_nnc_pair
 75/114 Test  #75: ecl_nnc_pair .........................   Passed    0.01 sec
        Start  76: well_conn_collection
 76/114 Test  #76: well_conn_collection .................   Passed    0.01 sec
        Start  77: well_branch_collection
 77/114 Test  #77: well_branch_collection ...............   Passed    0.01 sec
        Start  78: well_conn
 78/114 Test  #78: well_conn ............................   Passed    0.01 sec
        Start  79: well_state
 79/114 Test  #79: well_state ...........................   Passed    0.01 sec
        Start  80: well_segment
 80/114 Test  #80: well_segment .........................   Passed    0.01 sec
        Start  81: well_segment_conn
 81/114 Test  #81: well_segment_conn ....................   Passed    0.01 sec
        Start  82: well_segment_collection
 82/114 Test  #82: well_segment_collection ..............   Passed    0.01 sec
        Start  83: ecl_file
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/ecl_file.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_file.exe
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_file.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_file.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_file.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_file.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_file.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/ecl_file.exe
 83/114 Test  #83: ecl_file .............................***Not Run   0.00 sec
        Start  84: ecl_get_num_cpu
 84/114 Test  #84: ecl_get_num_cpu ......................   Passed    0.01 sec
        Start  85: geo_util_xlines
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/geo_util_xlines.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/geo_util_xlines.exe
C:/dev/source/ecl/cmake-build/bin/Debug/geo_util_xlines.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/geo_util_xlines.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/geo_util_xlines.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/geo_util_xlines.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/geo_util_xlines.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/geo_util_xlines.exe
 85/114 Test  #85: geo_util_xlines ......................***Not Run   0.00 sec
        Start  86: geo_polygon
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/geo_polygon.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/geo_polygon.exe
C:/dev/source/ecl/cmake-build/bin/Debug/geo_polygon.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/geo_polygon.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/geo_polygon.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/geo_polygon.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/geo_polygon.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/geo_polygon.exe
 86/114 Test  #86: geo_polygon ..........................***Not Run   0.00 sec
        Start  87: geo_polygon_collection
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/geo_polygon_collection.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/geo_polygon_collection.exe
C:/dev/source/ecl/cmake-build/bin/Debug/geo_polygon_collection.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/geo_polygon_collection.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/geo_polygon_collection.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/geo_polygon_collection.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/geo_polygon_collection.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/geo_polygon_collection.exe
 87/114 Test  #87: geo_polygon_collection ...............***Not Run   0.00 sec
        Start  88: ert_util_unique_ptr
 88/114 Test  #88: ert_util_unique_ptr ..................   Passed    0.01 sec
        Start  89: eclxx_kw
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/eclxx_kw.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/eclxx_kw.exe
C:/dev/source/ecl/cmake-build/bin/Debug/eclxx_kw.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/eclxx_kw.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/eclxx_kw.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/eclxx_kw.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/eclxx_kw.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/eclxx_kw.exe
 89/114 Test  #89: eclxx_kw .............................***Not Run   0.00 sec
        Start  90: eclxx_fortio
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/eclxx_fortio.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/eclxx_fortio.exe
C:/dev/source/ecl/cmake-build/bin/Debug/eclxx_fortio.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/eclxx_fortio.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/eclxx_fortio.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/eclxx_fortio.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/eclxx_fortio.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/eclxx_fortio.exe
 90/114 Test  #90: eclxx_fortio .........................***Not Run   0.00 sec
        Start  91: eclxx_filename
 91/114 Test  #91: eclxx_filename .......................***Failed    0.01 sec
C:\dev\source\ecl\lib\ecl\tests\eclxx_filename.cpp:24 => String are different s1:[PATH/BASE.X0067]  s2:[PATH\BASE.X0067]

        Start  92: eclxx_types
 92/114 Test  #92: eclxx_types ..........................   Passed    0.01 sec
        Start  93: ecl_fmt
Could not find executable C:/dev/source/ecl/cmake-build/bin/Debug/ecl_fmt.exe
Looked in the following places:
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_fmt.exe
C:/dev/source/ecl/cmake-build/bin/Debug/ecl_fmt.exe.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_fmt.exe
C:/dev/source/ecl/cmake-build/bin/Debug/Debug/ecl_fmt.exe.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_fmt.exe
Debug/C:/dev/source/ecl/cmake-build/bin/Debug/ecl_fmt.exe.exe
Unable to find executable: C:/dev/source/ecl/cmake-build/bin/Debug/ecl_fmt.exe
 93/114 Test  #93: ecl_fmt ..............................***Not Run   0.00 sec
        Start  94: ecl_grid_layer_contains_faarikaal1
 94/114 Test  #94: ecl_grid_layer_contains_faarikaal1 ...   Passed    0.03 sec
        Start  95: ecl_grid_layer_contains_faarikaal2
 95/114 Test  #95: ecl_grid_layer_contains_faarikaal2 ...   Passed    0.01 sec
        Start  96: ecl_grid_layer_contains_faarikaal3
 96/114 Test  #96: ecl_grid_layer_contains_faarikaal3 ...   Passed    0.01 sec
        Start  97: ecl_grid_layer_contains_faarikaal4
 97/114 Test  #97: ecl_grid_layer_contains_faarikaal4 ...   Passed    0.01 sec
        Start  98: ecl_grid_layer_contains_faarikaal5
 98/114 Test  #98: ecl_grid_layer_contains_faarikaal5 ...   Passed    0.01 sec
        Start  99: ecl_grid_layer_contains_faarikaal6
 99/114 Test  #99: ecl_grid_layer_contains_faarikaal6 ...   Passed    0.01 sec
        Start 100: ecl_grid_layer_contains_faarikaal7
100/114 Test #100: ecl_grid_layer_contains_faarikaal7 ...   Passed    0.01 sec
        Start 101: ecl_region_faarikaal1
101/114 Test #101: ecl_region_faarikaal1 ................   Passed    0.02 sec
        Start 102: ecl_region_faarikaal2
102/114 Test #102: ecl_region_faarikaal2 ................   Passed    0.01 sec
        Start 103: ecl_region_faarikaal3
103/114 Test #103: ecl_region_faarikaal3 ................   Passed    0.01 sec
        Start 104: ecl_region_faarikaal4
104/114 Test #104: ecl_region_faarikaal4 ................   Passed    0.01 sec
        Start 105: ecl_region_faarikaal5
105/114 Test #105: ecl_region_faarikaal5 ................   Passed    0.01 sec
        Start 106: ecl_region_faarikaal6
106/114 Test #106: ecl_region_faarikaal6 ................   Passed    0.01 sec
        Start 107: ecl_region_faarikaal7
107/114 Test #107: ecl_region_faarikaal7 ................   Passed    0.01 sec
        Start 108: ecl_grid_copy_faarikaal1
108/114 Test #108: ecl_grid_copy_faarikaal1 .............   Passed    0.02 sec
        Start 109: ecl_grid_copy_faarikaal2
109/114 Test #109: ecl_grid_copy_faarikaal2 .............   Passed    0.01 sec
        Start 110: ecl_grid_copy_faarikaal3
110/114 Test #110: ecl_grid_copy_faarikaal3 .............   Passed    0.01 sec
        Start 111: ecl_grid_copy_faarikaal4
111/114 Test #111: ecl_grid_copy_faarikaal4 .............   Passed    0.01 sec
        Start 112: ecl_grid_copy_faarikaal5
112/114 Test #112: ecl_grid_copy_faarikaal5 .............   Passed    0.01 sec
        Start 113: ecl_grid_copy_faarikaal6
113/114 Test #113: ecl_grid_copy_faarikaal6 .............   Passed    0.01 sec
        Start 114: ecl_grid_copy_faarikaal7
114/114 Test #114: ecl_grid_copy_faarikaal7 .............   Passed    0.01 sec

58% tests passed, 48 tests failed out of 114

Total Test time (real) =  11.13 sec

The following tests FAILED:
          1 - ert_util_alloc_file_components (Not Run)
          2 - ert_util_split_path (Failed)
          8 - ert_util_chdir (Not Run)
          9 - ert_util_filename (Not Run)
         11 - ert_util_parent_path (Not Run)
         13 - ert_util_relpath_test (Not Run)
         15 - ert_util_sscan_test (Not Run)
         18 - ert_util_stringlist_test (Not Run)
         23 - ert_util_datetime (Not Run)
         24 - ert_util_normal_path (Not Run)
         25 - ert_util_mkdir_p (Not Run)
         26 - test_area (Not Run)
         28 - ert_util_work_area (Not Run)
         29 - ert_util_cwd_test (Failed)
         30 - ert_util_copy_file (Not Run)
         31 - ert_util_file_readable (Not Run)
         32 - ert_util_path_stack_test (Not Run)
         35 - ecl_fault_block_layer (Not Run)
         36 - ecl_util_path_access (Not Run)
         37 - ecl_grid_add_nnc (Not Run)
         41 - ecl_grid_fwrite (Not Run)
         42 - ecl_grid_unit_system (Not Run)
         43 - ecl_grid_export (Not Run)
         44 - ecl_grid_init_fwrite (Not Run)
         46 - ecl_grid_ext_actnum (Not Run)
         47 - ecl_nnc_export_intersect (Failed)
         49 - ecl_sum_data_intermediate_test (Not Run)
         51 - ecl_unsmry_loader_test (Not Run)
         52 - ecl_init_file (Not Run)
         53 - ecl_kw_space_pad (Not Run)
         56 - ecl_kw_fread (Not Run)
         57 - ecl_kw_grdecl (Not Run)
         59 - ecl_nnc_geometry (Not Run)
         64 - ecl_file_view (Not Run)
         65 - test_ecl_file_index (Not Run)
         66 - test_transactions (Not Run)
         67 - ecl_rst_file (Not Run)
         68 - ecl_sum_writer (Not Run)
         69 - ecl_util_filenames (Not Run)
         74 - test_ecl_nnc_data (Not Run)
         83 - ecl_file (Not Run)
         85 - geo_util_xlines (Not Run)
         86 - geo_polygon (Not Run)
         87 - geo_polygon_collection (Not Run)
         89 - eclxx_kw (Not Run)
         90 - eclxx_fortio (Not Run)
         91 - eclxx_filename (Failed)
         93 - ecl_fmt (Not Run)
Errors while running CTest

trhallam avatar Dec 18 '20 14:12 trhallam

So from the build output I think there are some unix dependencies not available on Windows. For example unistd.h:

C:\dev\source\ecl\lib\ecl\tests\test_transactions.cpp(21,10): fatal error C1083: Cannot open include file: 'unistd.h': No such
 file or directory [C:\dev\source\ecl\cmake-build\lib\test_transactions.vcxproj]

I was having a look around and there are options like this https://github.com/robinrowe/libunistd but I'm not exactly sure how to include it in available path cmake searches for. Can I just add it to the system path?

Update 1:

Cloned libunistd to the ecl project directory and reran cmake and cmake --build. I don't get the include error but before the dll is built I get a different error.

  FortIO.cpp
  Auto build dll exports
     Creating library C:/dev/source/ecl/cmake-build/lib/Debug/ecl.lib and object C:/dev/source/ecl/cmake-build/lib/Debug/ecl.e
  xp
util.obj : error LNK2019: unresolved external symbol __imp_PathMatchSpecA referenced in function util_fnmatch [C:\dev\source\e
cl\cmake-build\lib\ecl.vcxproj]
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.18362.0\um\x86\ShLwApi.Lib : warning LNK4272: library machine type 'x86' conflicts with target machine type 'x64' [C:\dev\source\ecl\cmake-build\lib\ecl.vcxproj]
C:\dev\source\ecl\cmake-build\lib\Debug\libecl.dll : fatal error LNK1120: 1 unresolved externals [C:\dev\source\ecl\cmake-buil
d\lib\ecl.vcxproj]

Update 2:

Turns out I wasn't using the x64 build tools. So that fixed the last problem " library machine type 'x86' conflicts with target machine type 'x64' ".

New build errors look like this with the message unresolved external symbol "public: __cdecl ecl::util::TestArea::TestArea

ecl_file_view.obj : error LNK2019: unresolved external symbol "public: __cdecl ecl::util::TestArea::TestArea(class std::basic_
string<char,struct std::char_traits<char>,class std::allocator<char> > const &,bool)" (??0TestArea@util@ecl@@QEAA@AEBV?$basic_
string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_N@Z) referenced in function "void __cdecl test_create_file_kw(void)" (?t
est_create_file_kw@@YAXXZ) [C:\dev\source\ecl\cmake-build\lib\ecl_file_view.vcxproj]
ecl_file_view.obj : error LNK2019: unresolved external symbol "public: __cdecl ecl::util::TestArea::~TestArea(void)" (??1TestA
rea@util@ecl@@QEAA@XZ) referenced in function "void __cdecl test_create_file_kw(void)" (?test_create_file_kw@@YAXXZ) [C:\dev\source\ecl\cmake-build\lib\ecl_file_view.vcxproj]
C:\dev\source\ecl\cmake-build\bin\Debug\ecl_file_view.exe : fatal error LNK1120: 2 unresolved externals [C:\dev\source\ecl\cmake-build\lib\ecl_file_view.vcxproj]

Full Error List Attached. https://drive.google.com/drive/folders/1jI4RxsBjFelb1JvkSX7xgKN-T4SDiPPP?usp=sharing

trhallam avatar Dec 18 '20 14:12 trhallam

unistd.h should not be used by any Windows code. These probably come from the filesystem tests that failed. Today we bumped the C++ minimum standard version to 17 for tests only (hopefully other code soon too), added a Tmpdir class, and all around made the superior std::filesystem available for use. These failing tests should be rewritten with std::filesystem in mind.

Have you attempted pip installing the Python part of the library and getting anything from the ecl module to behave?

I reckon also that a lot of the utility functions are of little interest to anyone and should be deprecated. I'm planning to review them when I have time, and maybe we'll end up removing some tests.

Tmpdir: https://github.com/equinor/ecl/blob/382d2dbbce495a34acfcabf258833e82b345f064/lib/tests/tmpdir.hpp

pinkwah avatar Dec 18 '20 21:12 pinkwah

Just tried a few different things with the Python installer.

Built a wheel using python setup.py bdist_wheel in a separate env and installed the wheel in a fresh env. Tried python setup.py install and python setup.py develop in the fresh env.

All of these return an error on finding the libecl.dll.

Python 3.8.6 | packaged by conda-forge | (default, Nov 27 2020, 18:58:29) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import ecl
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\trhal\Anaconda3\envs\ecltest\lib\site-packages\ecl\__init__.py", line 95, in <module>
    class EclPrototype(Prototype):
  File "C:\Users\trhal\Anaconda3\envs\ecltest\lib\site-packages\ecl\__init__.py", line 96, in EclPrototype
    lib = dlopen_libecl()
  File "C:\Users\trhal\Anaconda3\envs\ecltest\lib\site-packages\ecl\__init__.py", line 92, in dlopen_libecl
    return ctypes.CDLL(path, ctypes.RTLD_GLOBAL)
  File "C:\Users\trhal\Anaconda3\envs\ecltest\lib\ctypes\__init__.py", line 373, in __init__
    self._handle = _dlopen(self._name, mode)
FileNotFoundError: Could not find module 'C:\Users\trhal\Anaconda3\envs\ecltest\lib\site-packages\ecl\.bin\libecl.dll' (or one of its dependencies). Try using the full path with constructor syntax.

I checked, and the dll is built and definitely in the folder. Tried a few configurations in the ecl\__init__.py file. No luck, tried adding the .bin folder to the path and that didn't work either. Not sure why it's not working now.

I did a dumpbin on the dll. I guess if these are not on the path it won't work. Not sure if they can be added as python deps or included in the dist_build process...

C:\Users\trhal\Anaconda3\envs\ecltest\Lib\site-packages\ecl\.bin>dumpbin /DEPENDENTS libecl.dll
Microsoft (R) COFF/PE Dumper Version 14.28.29335.0
Copyright (C) Microsoft Corporation.  All rights reserved.


Dump of file libecl.dll

File Type: DLL

  Image has the following dependencies:

    zlib.dll
    SHLWAPI.dll
    KERNEL32.dll
    MSVCP140.dll
    VCRUNTIME140.dll
    VCRUNTIME140_1.dll
    api-ms-win-crt-heap-l1-1-0.dll
    api-ms-win-crt-stdio-l1-1-0.dll
    api-ms-win-crt-math-l1-1-0.dll
    api-ms-win-crt-runtime-l1-1-0.dll
    api-ms-win-crt-utility-l1-1-0.dll
    api-ms-win-crt-string-l1-1-0.dll
    api-ms-win-crt-time-l1-1-0.dll
    api-ms-win-crt-filesystem-l1-1-0.dll
    api-ms-win-crt-convert-l1-1-0.dll
    api-ms-win-crt-locale-l1-1-0.dll

  Summary

        1000 .data
        D000 .pdata
      114000 .rdata
        1000 .reloc
        1000 .rsrc
       96000 .text

trhallam avatar Dec 19 '20 00:12 trhallam

Ok, sorted out the last issue, apparently there are some security controls for loading dll on Windows.

From the ctypes api: The winmode parameter is used on Windows to specify how the library is loaded (since mode is ignored). It takes any value that is valid for the Win32 API LoadLibraryEx flags parameter. When omitted, the default is to use the flags that result in the most secure DLL load to avoiding issues such as DLL hijacking. Passing the full path to the DLL is the safest way to ensure the correct library and dependencies are loaded.

After setting winmode=1 in the CDLL function of the __init__.py I was able to build install and import ecl functions.

The classes import ok but I get an access violation when trying to open the test data.

Python 3.8.6 | packaged by conda-forge | (default, Nov 27 2020, 18:58:29) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from ecl.grid import EclGrid
>>> EclGrid("faarikaal1.EGRID")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\trhal\Anaconda3\envs\ecltest\lib\site-packages\ecl\grid\ecl_grid.py", line 240, in __init__
    c_ptr = self._fread_alloc(filename, apply_mapaxes)
  File "C:\Users\trhal\Anaconda3\envs\ecltest\lib\site-packages\cwrap\prototype.py", line 218, in __call__
    return self._func(*args)
OSError: exception: access violation writing 0x00000000001A9FCE
>>> from ecl.eclfile import openEclFile
>>> openEclFile("farrikaal7.EGRID")
The function openEclFile is deprecated, use open_ecl_file.
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\trhal\Anaconda3\envs\ecltest\lib\site-packages\ecl\eclfile\ecl_file.py", line 711, in openEclFile
    return open_ecl_file(file_name, flags)
  File "C:\Users\trhal\Anaconda3\envs\ecltest\lib\site-packages\ecl\eclfile\ecl_file.py", line 715, in open_ecl_file
    return EclFileContextManager(EclFile(file_name, flags))
  File "C:\Users\trhal\Anaconda3\envs\ecltest\lib\site-packages\ecl\eclfile\ecl_file.py", line 212, in __init__
    c_ptr = self._open( filename , flags )
  File "C:\Users\trhal\Anaconda3\envs\ecltest\lib\site-packages\cwrap\prototype.py", line 218, in __call__
    return self._func(*args)
OSError: exception: access violation writing 0x00000000001AA2C6

Other Notes: Something was broken with numpy 1.19.4` reverting to 1.18 fixed this.

RuntimeError: The current Numpy installation ('C:\\Users\\trhal\\Anaconda3\\envs\\ecltest\\lib\\site-packages\\numpy\\__init__.py') fails to pass a sanity check due to a bug in the windows runtime. See this issue for more information: https://tinyurl.com/y3dm3h86

trhallam avatar Dec 19 '20 13:12 trhallam

Nice! Good find. With python setup.py develop or python setup.py build_ext, the DLLs should exist under python/res/.libs and .bin. This means you should be able to do pytest python/tests. I reckon it'll explode but should be fixable. There are no doubt functionality that tests for POSIX-only behaviour which I have no qualms about removing.

I'm away from my desktop with a Windows VM for the next two weeks so I won't be able to test any of this.

pinkwah avatar Dec 20 '20 12:12 pinkwah

This is the general gist of the pytest errors after using python setup.py develop

=========================================================================================== short test summary info ============================================================================================
ERROR ecl\util\test\test_area.py - cwrap.prototype.PrototypeError: Can not find function: test_work_area_alloc__ in library: <WinDLL 'C:\dev\source\ecl\python\ecl\.bin\libecl.dll', handle 7ffb25e70000 at 0x...
ERROR ecl\util\test\test_run.py - cwrap.prototype.PrototypeError: Type: 'test_area' already registered!
ERROR tests\bin_tests\test_summary_resample.py - cwrap.prototype.PrototypeError: Type: 'test_area' already registered!
ERROR tests\ecl_tests\test_cell.py - cwrap.prototype.PrototypeError: Type: 'test_area' already registered!
ERROR tests\ecl_tests\test_debug.py - cwrap.prototype.PrototypeError: Type: 'test_area' already registered!

I looked at the exports of .bin/libecl.dll and it doesn't contain any references to test_work_area_alloc__. But is referenced in the skbuild output.

trhallam avatar Dec 20 '20 14:12 trhallam

Oh, this could be due to incorrect exports on the functions used by Python. Both on Linux and macOS (and most everything else) every symbol gets exported, while on Windows with MSVC one has explicitly export with __declspec(dllexport). Likely this function doesn't have it set...

pinkwah avatar Dec 21 '20 00:12 pinkwah

What about this commit https://github.com/trhallam/ecl/commit/5d0e1ad15e8c9a4491d9a5f5169d3e12a0e6b02a "Disabled TestArea module with MSVC because it causes linker errors."

trhallam avatar Dec 21 '20 11:12 trhallam

Most likely, yes. I'll try rewriting it to use std::filesystem later today/tomorrow.

pinkwah avatar Dec 21 '20 12:12 pinkwah

A PR including a build for Windows using GitHub Actions has now been merged. Please note that no tests are executed. https://github.com/equinor/ecl/pull/806

magnesj avatar Feb 23 '21 10:02 magnesj

I tested this with a fresh install using scikit-build this afternoon and I was able to run my EclGrid EclSum and EclFile workflows OK. The same build errors as last time were not occurring.

I had a play around with the pytest suite but it's too closely wound up with the C tests and the reliance on linux only libraries. Pytest also seem to explicitly use the source instance of the code which means when using skbuild it can't find the DLL. This will either need to be pointed to manually or pytest could use an "installed" version of the library that had the dll in a findable location.

trhallam avatar Feb 23 '21 16:02 trhallam

I had another go at it, but had no luck. If we get funding for a Windows version then I'll be happy to try again, but as it stands now, the official suggestion is to use WSL if you're on Windows.

I had a play around with the pytest suite but it's too closely wound up with the C tests and the reliance on linux only libraries.

We're not relying on any non-Windows libraries (namely only zlib), but rather we're relying on the OS being POSIX-compatible. Frustratingly, Windows is the only modern operating system that doesn't support POSIX.

Pytest also seem to explicitly use the source instance of the code which means when using skbuild it can't find the DLL. This will either need to be pointed to manually or pytest could use an "installed" version of the library that had the dll in a findable location.

Yes. We get around this issue by creating a separate directory and symlinking some necessary directories over. See: https://github.com/equinor/ecl/blob/3d6d17e1470419fc5af0c891560fb2211b2eda0d/.github/workflows/testing.yml#L92-L114

pinkwah avatar Mar 15 '21 13:03 pinkwah

I've had another go at this today with success as far as I can tell.

Not sure if you want me to submit a pull request but the edits I've made are here: https://github.com/trhallam/ecl/commit/0c73bfa66413c29455fac5af5fbf9f3bfa152c57 and I've got a working wheel for Windows x64 available here https://github.com/trhallam/ecl/releases/tag/v2.10.1

Key Issues:

  • The libecl.dll ends up in ./.bin not ./libs.
  • When using ctypes.CDLL to load libecl.dll there were problems identifying where zlib.dll is stored. I don't quite understand why but if I use ctypes.OleDLL to load zlib.dll explicitly first, the problem with libecl.dll goes away. I'm a bit confused because zlib.dll is on the same path as all the other dependencies.
  • Getting zlib recognized means the winmode flag is not required.
  • As long as the development shell is active from Visual Studio building with scikit-build proceeds as usual via python setup.py bdist_wheel
  • Also had to enable the environment variable ECL_SKIP_SIGNAL although I'm not strictly sure if this is necessary.

trhallam avatar Jun 24 '21 11:06 trhallam

  • The libecl.dll ends up in ./.bin not ./libs.

CMake puts DLLs into the bin directory on Windows. You can change it here: https://github.com/equinor/ecl/blob/c361c259ee938d064b13e99065a6dbc01477cff0/setup.py#L75 Note that on Linux we need to have the binaries (from applications/) in the .bin directory. This is a Linux-only feature insofar that I couldn't figure out how to get RPATH to work properly on macOS.

  • When using ctypes.CDLL to load libecl.dll there were problems identifying where zlib.dll is stored. I don't quite understand why but if I use ctypes.OleDLL to load zlib.dll explicitly first, the problem with libecl.dll goes away. I'm a bit confused because zlib.dll is on the same path as all the other dependencies.

OLE is some Microsoft thing that this project should definitely not be using. From what I understand it's used to embed views into other programs, eg. inserting a chart from Microsoft Excel into Microsoft Word.

ctypes.WinDLL is probably what you're looking for. I would imagine that MSVC uses stdcall by default, so ctypes.WinDLL is the way to go.

As for not being able to find zlib.dll, you should try using auditwheel. It's the program that is used to finalise Python wheels. One of the things it does is that it embeds every non-standard library into the .whl, in a way that Python can later figure it out.

pip wheel . --no-deps -w dist  # Make a wheel for ecl (and only ecl due to --no-deps), write result into dist/
auditwheel repair dist/*  # Repair everything in the dist/ directory
  • Getting zlib recognized means the winmode flag is not required.

I'm not certain what this flag does.ecl already opens the library using an absolute path, so no hijacking can happen (I think).

  • Also had to enable the environment variable ECL_SKIP_SIGNAL although I'm not strictly sure if this is necessary.

The signal hijacking of ecl has given us so much headaches that I would like to have any excuse to rip it out. We already use ECL_SKIP_SIGNAL in our downstream projects, and we're only keeping it because we're scared that someone relies on this feature.

pinkwah avatar Jul 05 '21 18:07 pinkwah