GithubHelp home page GithubHelp logo

Comments (45)

alexeyignatiev avatar alexeyignatiev commented on August 16, 2024

Hi @sschnug, thank you for letting us know about the problem! Actually, we have never tried to install the toolkit on Microsoft Windows, nor to test it there. But we agree that supporting this platform is important.

I added a note on the requirements on the installation page and also in the README. Please, check it out. Hopefully, this helps.

Regarding the issue itself, I will check how hard it would be to add support for the Microsoft Windows platform but some input from users of Windows may be crucial as I do not have access to this operating system at this point.

from pysat.

WonJayne avatar WonJayne commented on August 16, 2024

Hey @alexeyignatiev, is there any news on making this library running in Windows? If you are still looking for some Windows users which could provide you with feedback, I would be glad to assist.

from pysat.

alexeyignatiev avatar alexeyignatiev commented on August 16, 2024

Hi @WonJayne, well, there is no news regarding Windows except for the fact that you should be able to install it under WSL. At least, I heard it was working just fine on Windows 10. However, I do not have any details. Could you try to install it using WSL?

from pysat.

WonJayne avatar WonJayne commented on August 16, 2024

Ok, thanks @alexeyignatiev for the hint with WSL. I will give it a shot and let you know about the result. Seems like a clever solution!

from pysat.

alexeyignatiev avatar alexeyignatiev commented on August 16, 2024

Sure, no problem. From what I heard, you can install PySAT with WSL from PyPI by simply doing pip install python-sat. This suggests that some sort of Python should be installed in WSL beforehand.

from pysat.

rjungbeck avatar rjungbeck commented on August 16, 2024

python-sat with WSL works (at least for me).

But it would be much easier to distribute software based on python-sat if it would run under native Windows (WSL is a optional subsystem for Windows and requires its own setup). A GUI application there is not officially supported and needs to be X based (and an extra X-server must be installed on Windows).

I see that installation of python-sat on native Windows does not run (even pypblib does not).

Do you see a chance of fixing this?

from pysat.

alexeyignatiev avatar alexeyignatiev commented on August 16, 2024

I totally agree with you that native Windows support would be much easier and way more convenient for a user but I do not expect to find time for this in the near future. Sorry. Also, I still don't have a Windows machine to work on this.

@rjungbeck, a PR would be helpful. :) The main thing to do here is to adapt signal handling used in the C extensions so that they work under UNIX-like and Windows systems in a unified way (if any adaptation is needed at all!). Also, the solvers should be guaranteed to compile under Windows. Maybe they can already be compiled but this has to be checked.

from pysat.

alexeyignatiev avatar alexeyignatiev commented on August 16, 2024

Actually, I am not sure where to get the compiler and all the necessary stuff on Windows for a typical user who wants to install PySAT. This crucial part does not look trivial.

from pysat.

rjungbeck avatar rjungbeck commented on August 16, 2024

The idea of Windows is to distribute everything compiled.
For Python libraries this means to use wheels (.whl).
For applications we use either PyInstaller (or py2exe) or another way (like distribution of e the complete venv) to include everything needed and prevent any version conflict with other software.

from pysat.

alexeyignatiev avatar alexeyignatiev commented on August 16, 2024

OK, I understand that.

The problem is that I cannot set this up myself. I wish I could do it but I cannot. For this, we would need an expert who knows how to set up Python with all the necessary components on Windows, and is willing to create the wheels or whatever binary distributions for Windows.

If I was to do it, I would have to invest a huge amount of time to get a Windows machine and understand how things should be set up there. So we really need volunteers here. :)

from pysat.

rjungbeck avatar rjungbeck commented on August 16, 2024

I now know to to correct pypblib (at least to make it compile (but with with countless warnings)).

Basically we have to

  • change some header file names (eg sys/time.h -> time.h...) on Windows
  • remove some header references (sys/resource.h)
  • #undef stderr
  • #define uint unsigned int
  • change some compiler options on Windows (in setup.py)
elif platform.system() == 'Windows':
    EXTENSIONS.append(
        Extension('pypblib.pblib', sources=PBLIB_MOD_SRCS,
                  include_dirs=[ PBLIB_ROOT_DIR, PBLIB_MOD_ROOT_DIR],
                  libraries=[], extra_compile_args=[]))

But I can' find any upstream repository where I can submit a PR to. (I took the source code from PyPI, but PyPI is not under version control). The home page link in PyPI points to a private server that requires a login.

Adapting python-sat is more complicated because setup.py downloads all the solvers, patches and compiles them (with there own makefiles) .
Some of the solvers contain additional libraries (like zlib or pthread)

  • Patching can be done via WSL on Windows (modification to prepare.py)
  • zlib is needed for some solvers
  • pthread is needed for some solvers

from pysat.

rjungbeck avatar rjungbeck commented on August 16, 2024

pypblib:
And there is a buildin compiler function that is missing on Windows:

  • __builtin_clzll which has to be replaced (with a commonly available implementation)

from pysat.

alexeyignatiev avatar alexeyignatiev commented on August 16, 2024

Thanks for checking this out. Unfortunately, we cannot directly send a PR for pypblib to any repository. However, we can either send it by email to the authors or invite them to this thread. Let me ask Carlos Ansótegui to give his opinion about your suggestions.

from pysat.

rjungbeck avatar rjungbeck commented on August 16, 2024

I have a working Windows version including most of the solvers (cadical and lingeling are still not compiling on Windows)
I have only tested some of the solvers with my app.

My idea for a PR would:

  • I have moved all compiles into setup.py (previously prepare.py compiled the solvers, setup.py compiled pysolvers.cc and pycard.cc and linked them). So the standard compiler configuration is used everywhere.
  • I have (at least now) disabled the the download/patch (to keep my modified source versions) during setup.py
  • We might need another (or no) technique for patching (WSL is not available on most Windows systems):
    ** Either use something like the pure Python diff-match-patch library (requires Python 3.4+) for diff and patch
    ** Or (much simpler) distribute the solvers in source form with pysat as they are needed (ie fully patched and cleaned). (This does not prevent you from having a tool to modify a new solver version. It is just not part of the standard installation process.)

What do you think?

from pysat.

alexeyignatiev avatar alexeyignatiev commented on August 16, 2024

Thank you for the effort!

I have a working Windows version including most of the solvers (cadical and lingeling are still not compiling on Windows)

Can you elaborate on what the problem is with cadical and lingeling?

I have moved all compiles into setup.py (previously prepare.py compiled the solvers, setup.py compiled pysolvers.cc and pycard.cc and linked them). So the standard compiler configuration is used everywhere.

Well, I don't see how we can get rid of prepare.py because downloading the solvers is necessary (see below).

I have (at least now) disabled the download/patch (to keep my modified source versions) during setup.py
We might need another (or no) technique for patching (WSL is not available on most Windows systems):

From what you wrote previously, my understanding is that we need just one machine properly set up in order to prepare binary wheels. So if a user does not have the compilers/patch/make/whatever, it is not a problem since he/she will not need to compile the toolkit anyway.

** Either use something like the pure Python diff-match-patch library (requires Python 3.4+) for diff and patch

I apologize but I am not familiar with this technology. However, I have to say that PySAT supports both Py2 and Py3 and so we need to make sure it can be compiled for both versions of Python. I know that Python 2 will become officially unsupported in a month but I still believe supporting both versions is important...

** Or (much simpler) distribute the solvers in source form with pysat as they are needed (ie fully patched and cleaned). (This does not prevent you from having a tool to modify a new solver version. It is just not part of the standard installation process.)

Some may find it debatable, but not distributing the solvers with PySAT was an intentional decision made by all the authors of PySAT. I do not like the idea of having prepare.py, but I had to do it because of this decision and I could not see any other way to go. Given that the solvers cannot be distributed with PySAT, the current solution downloading and patching the solvers is a hard constraint, which we can't get rid of.

To conclude, if we could make changes in such a way that one is able to compile a binary wheel for Windows (with no dependency to WSL) that includes all the solvers and all the functionality of the toolkit, then it would be perfect. It seems to me, you are quite close to that goal.

from pysat.

rjungbeck avatar rjungbeck commented on August 16, 2024

lingeling does a lot of non trivial C macros with a variable number of arguments, that have a slightly different syntax in Visual Studio. Changing the syntax to Microsoft style which is not compatible with Linux of course) requires copying a lot of code (the complete macro definitions) . I think we might need a tool to modify the source code automatically

cadical has a problem with signal handlers and some C macro expansions (I need to look into it deeper to understand it)

Do you have a script that creates the patches (ie creates the files in the original form and diffs them)?

from pysat.

alexeyignatiev avatar alexeyignatiev commented on August 16, 2024

No, I don't have a script to create patches. I created them manually from the command line. :) Regarding incompatible versions of code that can be needed because of the sophisticated macros, we can have various patches for the same solver, which can be chosen in prepare.py depending on the target system.

from pysat.

alexeyignatiev avatar alexeyignatiev commented on August 16, 2024

Hi @rjungbeck,

Thanks a lot for porting the toolkit to Windows. Unfortunately, I can't try it myself but supporting Windows is crucial.

I updated the library to version 0.1.5dev1. Please, try to make a wheel, which we can then upload to PyPI. Also, I made the dependency on pypblib optional until the authors come to see this thread and the fact that your patch ports pypblib to Windows. Therefore, at this point, there is no need to provide a wheel for pypblib.

from pysat.

alexeyignatiev avatar alexeyignatiev commented on August 16, 2024

Hi all,

So it seems to me Windows is now finally supported (thanks to @rjungbeck!).

The only problem I see now is to maintain the wheels for Windows up to date. I am unable to do so, because I am Windows-challenged and it seems non-trivial to set up all the components required for the compilation. :) Any volunteers to update the wheels when new versions arrive?

from pysat.

rjungbeck avatar rjungbeck commented on August 16, 2024

I guess the normal way would be to have a GitHub triggered build. Whenever change is made there a new build is run automatically.

I have never setup one myself and I don't know if the special build requirements (download and wsl based patch) can be fulfilled this way. But I can look into it next week.

from pysat.

alexeyignatiev avatar alexeyignatiev commented on August 16, 2024

Yes, having GitHub-based builds would be great. if it was possible in our case. I have not done this myself too. Thank you for checking.

from pysat.

rjungbeck avatar rjungbeck commented on August 16, 2024

Normally a continuous integration service like Appveyor or Travis does the actual build, some unit tests (to make sure the version runs), and uploads to PyPI. They can be build a matrix of configurations (you need a different wheel for each Python version and cpu architecture (e.g. 64 or 32 bit) which multiplies quickly)

from pysat.

alexeyignatiev avatar alexeyignatiev commented on August 16, 2024

Right. The question is whether or not this solution would work given the complicated installation process. Let's see.

from pysat.

rjungbeck avatar rjungbeck commented on August 16, 2024

Seems like the automatic build via AppVeyor is going to work.
I have it running in my forked repos. It is creating the wheels needed (and even installs pypblib from the other build for building pysat)
I still need to look into version numbering, build initiation and automatic tests before I can give you a PR.

from pysat.

alexeyignatiev avatar alexeyignatiev commented on August 16, 2024

It's good to know that automatic builds can be done, @rjungbeck! Thank you!

from pysat.

alexeyignatiev avatar alexeyignatiev commented on August 16, 2024

Hi @rjungbeck,

I have finally found some time to invest in setting up AppVeyor. And I copied your configuration except for the deployment step -- I hope you don't see it as a problem.

However, AppVeyor's builds fail when compiling lingeling:

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -Isolvers -IC:\Python38-x64\include -IC:\Python38-x64\include "-IC:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\ATLMFC\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\include" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" "-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)\Windows Kits\10\include\10.0.18362.0\cppwinrt" /EHsc /Tcsolvers/lingeling/lglib.c /Fobuild\temp.win-amd64-3.8\Release\solvers/lingeling/lglib.obj -DNBUILD -DNLGLYALSAT /DINCREMENTAL -DNLGLOG -DNDEBUG -DNCHKSOL -DNLGLFILES -DNLGLDEMA /experimental:preprocessor -I./zlib -DWITH_CADICAL -DWITH_GLUCOSE30 -DWITH_GLUCOSE41 -DWITH_LINGELING -DWITH_MAPLECHRONO -DWITH_MAPLECM -DWITH_MAPLESAT -DWITH_MINICARD -DWITH_MINISAT22 -DWITH_MINISATGH
lglib.c
C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um\winbase.h(9305): warning C5105: macro expansion producing 'defined' has undefined behavior
solvers/lingeling/lglib.c(1091): warning C4244: 'initializing': conversion from 'Flt' to 'Exp', possible loss of data
solvers/lingeling/lglib.c(1154): warning C4244: '=': conversion from 'Mnt' to 'double', possible loss of data
solvers/lingeling/lglib.c(1160): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
solvers/lingeling/lglib.c(1248): warning C4996: 'getpid': The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: _getpid. See online help for details.
solvers/lingeling/lglib.c(1250): warning C4996: '_sleep': This function or variable has been superceded by newer library or operating system functionality. Consider using Sleep instead. See online help for details.
solvers/lingeling/lglib.c(1348): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(1399): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(1416): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(1417): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(1418): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(1483): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
solvers/lingeling/lglib.c(1497): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(1504): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(1511): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(1520): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(1528): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(1536): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(1545): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(1553): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(1560): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(1567): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(1576): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(1584): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(1633): warning C4267: 'function': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(1679): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(1693): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(1683): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
solvers/lingeling/lglib.c(1688): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
solvers/lingeling/lglib.c(1697): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(1698): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(1700): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(1720): warning C4244: 'return': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(1722): warning C4244: 'return': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(1757): warning C4244: 'return': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(1759): warning C4244: 'return': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(1847): warning C4996: 'getenv': This function or variable may be unsafe. Consider using _dupenv_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
solvers/lingeling/lglib.c(1869): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(1947): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(1951): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(1959): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(1963): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(2021): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(2046): warning C4996: 'getenv': This function or variable may be unsafe. Consider using _dupenv_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
solvers/lingeling/lglib.c(2169): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(2171): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(2180): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(2181): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(2190): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(2199): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(2201): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
solvers/lingeling/lglib.c(2230): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(2239): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(2248): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(2301): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(2325): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(2411): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(2456): warning C4267: 'function': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(2465): warning C4267: 'function': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(2606): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(2645): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(2668): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(2704): warning C4267: 'initializing': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(2741): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(2898): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(3276): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(3534): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(3805): warning C4267: '=': conversion from 'size_t' to 'long', possible loss of data
solvers/lingeling/lglib.c(3809): warning C4267: '=': conversion from 'size_t' to 'long', possible loss of data
solvers/lingeling/lglib.c(3993): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(4048): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(4138): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(4532): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(4539): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(4618): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(4625): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(4632): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(4637): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(4641): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(4663): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(4731): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(4870): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(4899): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(4901): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(4908): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(4910): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(4932): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(4934): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(4990): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(4993): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(5007): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(5022): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(5023): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(5112): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(5147): warning C4244: 'function': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(5323): warning C4244: 'function': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(5428): warning C4244: 'function': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(5467): warning C4244: 'function': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(5495): warning C4244: 'function': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(5746): warning C4244: 'function': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(5789): warning C4244: 'function': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(5851): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(6009): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(6075): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(6080): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(6085): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(6135): warning C4244: 'function': conversion from 'int64_t' to 'double', possible loss of data
solvers/lingeling/lglib.c(6353): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(6439): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(6444): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(6516): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(6531): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(6624): warning C4244: 'function': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(6673): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(6674): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(6743): warning C4244: 'function': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(6767): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(6768): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(6801): warning C4244: 'function': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(6816): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(6883): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(6910): warning C4244: 'function': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(7101): warning C4267: 'initializing': conversion from 'size_t' to 'const int', possible loss of data
solvers/lingeling/lglib.c(7110): warning C4267: 'initializing': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(7182): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(7223): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(7687): warning C4267: 'initializing': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(7790): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(7838): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(7946): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(8008): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(8049): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(8108): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(8183): warning C4244: '/=': conversion from 'int64_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(8267): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(8283): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(8290): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(8293): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(8340): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(8411): warning C4267: '=': conversion from 'size_t' to 'long', possible loss of data
solvers/lingeling/lglib.c(8519): warning C4244: 'function': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(8575): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(8576): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(8608): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(8822): warning C4244: '+=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(9190): warning C4244: 'function': conversion from 'int64_t' to 'double', possible loss of data
solvers/lingeling/lglib.c(9190): warning C4244: 'function': conversion from 'int64_t' to 'double', possible loss of data
solvers/lingeling/lglib.c(9191): warning C4244: 'function': conversion from 'int64_t' to 'double', possible loss of data
solvers/lingeling/lglib.c(9191): warning C4244: 'function': conversion from 'int64_t' to 'double', possible loss of data
solvers/lingeling/lglib.c(9227): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(9238): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(9244): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(9370): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(9997): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(9999): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(10058): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(10071): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(10457): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(10508): warning C4244: '/=': conversion from 'int64_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(10552): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(10716): warning C4267: 'initializing': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(10749): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(10962): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(11083): warning C4267: 'initializing': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(11125): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(11169): warning C4244: 'return': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(11197): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(11204): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(11476): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(11865): warning C4244: 'initializing': conversion from 'int64_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(11999): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(12014): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(12102): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(12139): warning C4267: 'initializing': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(12530): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(12838): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(12988): warning C4018: '>=': signed/unsigned mismatch
solvers/lingeling/lglib.c(13071): warning C4244: '=': conversion from 'int64_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(13067): warning C4267: 'initializing': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(13180): warning C4244: 'function': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(13193): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(13231): warning C4244: '=': conversion from 'int64_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(13266): warning C4244: 'function': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(13290): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(13341): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(13474): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(13494): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(13568): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(13848): warning C4244: 'function': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(14035): warning C4244: 'function': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(14048): warning C4244: '-=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(14145): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(14625): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(15007): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(15014): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(15067): warning C4267: 'function': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(15606): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(15782): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(15889): warning C4244: 'function': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(15901): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(16106): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(16204): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(16211): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(16215): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(16615): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(16620): warning C4244: '=': conversion from '__int64' to 'long', possible loss of data
solvers/lingeling/lglib.c(16643): warning C4244: '=': conversion from 'int64_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(16658): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(16756): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(16816): warning C4244: 'function': conversion from 'size_t' to 'double', possible loss of data
solvers/lingeling/lglib.c(16877): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(16887): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(17162): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(17310): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(17315): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(17511): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(17515): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(17519): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(17865): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(18135): warning C4244: 'return': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(18137): warning C4244: 'return': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(18472): warning C4244: 'function': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(18630): warning C4244: 'function': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(18687): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(18691): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(18965): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(18975): warning C4244: '-=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(19058): warning C4244: 'function': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(19155): warning C4244: 'function': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(19369): warning C4244: '=': conversion from 'uint64_t' to 'unsigned int', possible loss of data
solvers/lingeling/lglib.c(19472): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(19519): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(19536): warning C4267: 'initializing': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(19583): warning C4244: '=': conversion from 'int64_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(19620): warning C4267: 'initializing': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(19672): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(19683): warning C4267: 'return': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(19695): warning C4267: 'initializing': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(19728): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(19777): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(19807): warning C4267: 'initializing': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(19921): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(20057): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(20064): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(20104): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(20111): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(20142): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(20151): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(20197): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(20237): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(20251): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(20302): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(20306): warning C4244: '=': conversion from 'int64_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(20346): warning C4018: '>': signed/unsigned mismatch
solvers/lingeling/lglib.c(20377): warning C4267: 'return': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(20392): warning C4267: 'initializing': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(20394): warning C4267: 'initializing': conversion from 'size_t' to 'const int', possible loss of data
solvers/lingeling/lglib.c(20400): warning C4267: 'initializing': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(20487): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(20532): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(20609): warning C4244: '=': conversion from 'int64_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(20614): warning C4244: '=': conversion from 'int64_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(20630): warning C4244: 'function': conversion from 'int64_t' to 'double', possible loss of data
solvers/lingeling/lglib.c(20654): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(20679): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(20795): warning C4244: '=': conversion from 'int64_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(20800): warning C4244: '=': conversion from 'int64_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(20816): warning C4244: 'function': conversion from 'int64_t' to 'double', possible loss of data
solvers/lingeling/lglib.c(20853): warning C4244: '=': conversion from 'int64_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(20934): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(20984): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(21296): warning C4244: '=': conversion from 'int64_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(21212): warning C4244: 'initializing': conversion from 'int64_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(21454): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(21920): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(21969): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(21975): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(22010): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(22018): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(22300): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(22168): warning C4267: 'initializing': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(22444): warning C4244: 'function': conversion from 'int64_t' to 'double', possible loss of data
solvers/lingeling/lglib.c(22449): warning C4244: 'function': conversion from 'int64_t' to 'double', possible loss of data
solvers/lingeling/lglib.c(22528): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(22547): warning C4267: 'initializing': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(22599): warning C4244: '=': conversion from 'double' to 'int', possible loss of data
solvers/lingeling/lglib.c(22604): warning C4244: '=': conversion from 'int64_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(22607): warning C4244: '=': conversion from 'int64_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(22608): warning C4244: '=': conversion from 'int64_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(22640): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
solvers/lingeling/lglib.c(22693): warning C4267: 'function': conversion from 'size_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(22698): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
solvers/lingeling/lglib.c(22706): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
solvers/lingeling/lglib.c(22923): warning C4244: '=': conversion from 'int64_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(22934): warning C4244: '=': conversion from 'int64_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(23147): warning C4244: '=': conversion from 'int64_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(23148): warning C4244: '/=': conversion from 'int64_t' to 'int', possible loss of data
solvers/lingeling/lglib.c(23507): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23508): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23509): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23563): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23564): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23565): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23567): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23569): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23579): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23596): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23597): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23656): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23658): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23794): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23795): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23798): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23809): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23810): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23811): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23812): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23814): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23854): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23855): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23856): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23865): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23867): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23868): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23883): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23884): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23892): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23893): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23902): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23905): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23906): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23917): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23920): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23921): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23923): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23927): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23940): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23959): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23962): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23970): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23981): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23984): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23986): error C2059: syntax error: ')'
solvers/lingeling/lglib.c(23986): fatal error C1003: error count exceeds 100; stopping compilation
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.25.28610\\bin\\HostX86\\x64\\cl.exe' failed with exit status 2
Command exited with code 1

The problems seem to be caused by the macros. I wonder how it works in your case? Do you know what could be a solution?

from pysat.

alexeyignatiev avatar alexeyignatiev commented on August 16, 2024

Also, the full log says that it first patches the files and then downloads the source archives. How come? :) Can this be the issue?

from pysat.

rjungbeck avatar rjungbeck commented on August 16, 2024

The whole build process is complicated because it first has to download the solvers, patch them and later compile them (instead of simply compiling them from version control).
Same with the commit process: We have to take the modified source code, compare it to the original source, create the patch and put that into GIT.
For analysis we now need the actual source tree (after patching) used for compile (so that I can compare them to what the sources should be)
NB: I do not believe that the complete sequence (eg download after patch) is wrong because most of the compiles don't have any errors)

from pysat.

alexeyignatiev avatar alexeyignatiev commented on August 16, 2024

Well, I understand how the original installation process works on Linux/macOS -- I wrote it. I mean I see that (1) the source archive of a solver is downloaded, (2) some files are moved/removed, (3) the result source directory is patched and (4) the solver gets finally compiled.

My question is: is this process different on Windows? If yes, how? Also, in either case I don't understand how come a solver's files are patched before the original source code is downloaded. As far as I understand, there is nothing to compile before the source code is downloaded. :)

from pysat.

rjungbeck avatar rjungbeck commented on August 16, 2024

The difference is that the actual compile on Windows is done through setup as an Extension (ie ignoring the Makefiles) (and not in prepare.py as on Linux).
But, as I said before: Many files are compiled without errors before lglib.c is failing. So the download and patch process must work in principal (and only fail for this file).

from pysat.

alexeyignatiev avatar alexeyignatiev commented on August 16, 2024

Thank you.

But then how do you manage to build the wheels for Windows using the same AppVeyor config?

from pysat.

rjungbeck avatar rjungbeck commented on August 16, 2024

AppVeyor does the complete build for each environment matrix PYTHON entry in appveyour.yaml.

from pysat.

alexeyignatiev avatar alexeyignatiev commented on August 16, 2024

Sure, I get it. The problem is that in my case it fails to build wheels for any of the Python entries. And notice that I am using the same config of yours. By any chance, do you have an idea of why it can fail (it works for you)?

from pysat.

rjungbeck avatar rjungbeck commented on August 16, 2024

The C compile of lglib.c fails with a syntax error. It can be because either the source file lglib.c is wrong, or the compiler switches are wrong, a header file is wrong, the environment is somehow different to the one I compiled in.

That is why I asked for the source tree (which of course is difficult to get from AppVeyor...)

I have attached my build.log (for one of the wheels).

I had the problem that AppVeyor did not really stop building after successfully building all the wheels (it starts another build process after building all wheels again and again).

log (2).txt

from pysat.

alexeyignatiev avatar alexeyignatiev commented on August 16, 2024

Thank you. When was this build made? Can you try to recompile it (to see what kind of output you would get now)?

from pysat.

rjungbeck avatar rjungbeck commented on August 16, 2024

Same problem as you. But the commit id did not change. So it has nothing to do with the files in the repository. Either AppVeyor has changes something in the environment or the downloaded file for lingeling is different.

from pysat.

alexeyignatiev avatar alexeyignatiev commented on August 16, 2024

Then I presume it must have something to do with the AppVeyor environment.

The source archive of lingeling looks the same. I have just managed to download/patch/build lingeling in PySAT for macOS.

from pysat.

rjungbeck avatar rjungbeck commented on August 16, 2024

I see the same. They changed the compiler version from 14.24.28314 to 14.25.28610 (and maybe other things of course)

from pysat.

alexeyignatiev avatar alexeyignatiev commented on August 16, 2024

I see. It is a bit strange that changing a compiler results in such differences. Maybe more things in the environment were affected as well.

Do you know if there a way to "fix" a concrete compiler version?

from pysat.

rjungbeck avatar rjungbeck commented on August 16, 2024

No, I don't know. But I guess we have adapt software to the compiler version...

from pysat.

rjungbeck avatar rjungbeck commented on August 16, 2024

The problems were (once again) the C macros with variable number of arguments. Microsoft has changed it's implementation . I think we do not need the -experimental:preprocessor command line switch. I commited (and pushed) the change to setup.py and at least my AppVeyor build is working again.

from pysat.

alexeyignatiev avatar alexeyignatiev commented on August 16, 2024

I see. The change works for me as well. Thank you!

from pysat.

rjungbeck avatar rjungbeck commented on August 16, 2024

I have now included an (extremely simple) test (it uses each solver with a trivial problem) in my AppVeyor build. It verifies that the wheel file is actually usable. (appveyor.yaml, runtest.py test/test_sat.py). Someone can write more tests in the future. The infrastructure is now available.

from pysat.

alexeyignatiev avatar alexeyignatiev commented on August 16, 2024

Thank you, @rjungbeck. I agree that there should be some testing done, ideally upon completion of every build. I will try to integrate this shortly.

from pysat.

alexeyignatiev avatar alexeyignatiev commented on August 16, 2024

OK, I integrated your ideas on how the tests should be organized but modified it a bit. I think the the thread on this original issue is too long now and it is better to close it for now since the library should be working on Windows. If you spot any related issue, feel free to reopen.

from pysat.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.