Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Problem reading FAR file from farcompilestrings #16

Open
mmcauliffe opened this issue Sep 20, 2018 · 7 comments
Open

Problem reading FAR file from farcompilestrings #16

mmcauliffe opened this issue Sep 20, 2018 · 7 comments
Assignees

Comments

@mmcauliffe
Copy link

mmcauliffe commented Sep 20, 2018

Hello,

I'm using the latest commit generated from CMake (version 3.12.2) along with OpenGRM-ngram 1.3.4 (https://github.com/MontrealCorpusTools/opengrm-ngram), both compiled using VS 2017. When I generate a FAR file using farcompilestrings, it completes successfully, but using it as input to any of the ngram binaries such as ngramcount ( etc gives the following error:

ERROR: Fst::Read: Unknown FST type vector (arc type = standard): <unspecified>

From the OpenFST changelog (http://www.openfst.org/twiki/pub/FST/FstDownload/NEWS) it looks like this was addressed somewhat in 1.6.8 (or at least the reporting), and the same versions of everything work on Linux, and the OpenGRM-ngram binaries compiled on Linux can read the generated FAR just fine, so I'm a bit stumped.

@kkm000
Copy link
Owner

kkm000 commented Sep 21, 2018 via email

@kkm000
Copy link
Owner

kkm000 commented Sep 23, 2018

I'm using the latest commit generated from CMake

@mmcauliffe, I am a little bit unclear: are you using CMake to build OpenFST from this repo? Or VS projects/solutions?

@kkm000
Copy link
Owner

kkm000 commented Sep 23, 2018

/cc @jtrmal
Yenda, if you have some spare cycles, could you please chime in? I am not building the far extensions binaries at all (yet? I probably should as it appears there is a demand out there). So I am almost sure this is CMake-related. Do you understand what is going on? I was getting almost exactly the same error before we added the /WHOLEARCHIVE trick last time. But that was different: the mainstream library tore off a file with static initialization only, so the library member was never pulled into executables on link. With FAR, it's different, the declarations are in a file that also has some code. I do not understand though if these functions, FarReaderClass::Open and others in the same source file, are in fact dependency of something that is actually compiled in. If not, we have the same problem with the FAR executables.

@jtrmal
Copy link
Collaborator

jtrmal commented Sep 23, 2018 via email

@mmcauliffe
Copy link
Author

@kkm000 Right, so the VS projects/solutions checked into the repo don't include the FAR extensions, so I was following the CMake instructions from the kaldi/windows (https://github.com/kaldi-asr/kaldi/blob/master/windows/INSTALL.md#compiling-openfst) as those do generate the FAR extensions (and they seem to work alright with each other).

@kkm000
Copy link
Owner

kkm000 commented Sep 24, 2018 via email

@kkm000
Copy link
Owner

kkm000 commented Oct 6, 2018

I finally got come breathing space to work on this. @mmcauliffe, I'd really appreciate if you could check if the version I have so far works for you. It builds far extensions with Visual Studio.

Extensions are compiled into the same libfst and libfstscript libraries, and binaries go into the same build_output/ directory as the fst*.exe executables.

The branch name is wip-build-optional-features. far is an optional feature that is currently enabled in this branch, check openfst.user.props. You can just build and see if it does the trick for you. My quick command-line checks apparently worked:

c:\projects\openfst\src>..\build_output\x64\Debug\bin\farcreate mdy_nosym.fst number_nosym.fst test.far

c:\projects\openfst\src>..\build_output\x64\Debug\bin\farinfo test.far
far type                                          sttable
arc type                                          standard
fst type                                          vector
# of FSTs                                         2
total # of states                                 24805
total # of arcs                                   54994
total # of final states                           2

I changed the MSBuild build process quite significantly. The project files are moved to src/ from its subdirectories, and all objects are placed into a tree under an obj/ directory under project root. If you are reusing the working directory, it makes sense to delete the whole src/ directory then do a git reset --hard to resurrect it in clean state--so you won't end up with 2G of orphaned object files. Then do git fetch and git checkout wip-build-optional-features.

@kkm000 kkm000 self-assigned this Jul 18, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants