Can't compile MeTA on Windows (missing libuv-1.dll)


#1

Hi all,

I am having some troubles getting MeTA to compile on Windows 10. I am using MSYS2 and have followed the setup guide here pretty much exactly with one exception: after git clone I used git reset --hard v2.2.0 to grab an older version of MeTA because that’s the version the book I am reading is using. Anyway, when I finally run the cmake command:

cmake .. -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release

CMake instead complains about not being able to find libuv:

C:/msys64/mingw64/bin/cmake.exe: error while loading shared libraries: libuv-1.dll: cannot open shared object file: No such file or directory

I have checked C:/msys64/mingw64/bin and libuv-1.dll is definitely there. The said directory is also listed as the first item in my $PATH, so what sorcery is this? :frowning: Compiling MeTA on Ubuntu is a breeze in comparison.

All of these are of course done using the MINGW64 shell.


#2

Hmm… I can’t reproduce this when going through the Windows Setup Guide step-by-step myself on a Windows 8.1 install.

It looks like some packages may have been very recently updated by MSYS2 though, so perhaps there was a broken package pushed at some point? Does the issue resolve itself if you run a

pacman -Syu

in a mingw64 shell and try again?


#3

I’m actually trying to compile again on another computer with a fresh MSYS2 install. This time the problem seems to be the bottom half of this.

I will revisit the first computer by reinstalling MSYS2 and see if I can get further.


#4

Some updates:

The first problem (missing libuv-1.dll) is caused by a bad MSYS2 install. A complete reinstall of MSYS2 fixed it.

The second problem (can’t find ICU 56.1) is caused by trying to compile an older version of MeTA, specifically v2.2.0. This is kind of weird as the current compiler message implies any newer version of ICU would do but that’s not true. Also the thread I linked to suggests that MSYS2 should be able to compile the required version for us now. That is also not the case. It just quits exactly the same way as in the thread. The simplest fix for this is just check out the newest MeTA code instead. That’s unfortunate since I wanted to use the older version to stay consistent with my textbook.

The third and brand new problem is that after all compilations finally finish the unit test fails as soon as describe [topics] starts with a segmentation fault. See here.

I was able to reproduce problem 2 & 3 on two different computers. Both are running Windows 10.


#5

OK, good to hear.

The code to build a static version of ICU when building on Windows was added in v2.3.0, so anything older than that won’t support it unfortunately.

I’ve just been able to reproduce this issue locally. I’m working on a hotfix now. This appears to be due to the newer version of cmake adding some additional (and I must assume erroneous) implicitly linked libraries. I had to work around this in a pinch when trying to get some libraries built for our tutorial at KDD in Halifax by simply downgrading the cmake version (see this commit for more info). You can do that as a temporary workaround until I can push a new patched v3.0.x version to master by running the following:

wget http://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-cmake-3.8.2-2-any.pkg.tar.xz
pacman -U mingw-w64-x86_64-cmake-3.8.2-2-any.pkg.tar.xz

Quite annoying that this breakage is caused by things updating outside of our control… I should hopefully have a fixed v3.0.x series release by tonight (though, if you stick with using an older version, you’ll probably have to just keep using the above workaround).

Are you following the Massung and Zhai textbook? @smassung, do you know if there is anything specifically in that book that would be out of date as of v3.0.x that would prevent @Keh-Harng_Feng from following the book but using the master branch instead?


#6

Thank you for your very quick and useful reply! Yes I am indeed using the book by Massung & Zhai. The problem with older version is not the end of the world to me personally because I dual boot Ubuntu and the compilation error for 2.2.0 doesn’t exist on Linux. However for others that only have access to Windows it may indeed be a problem.