Projects/Edu/KStars/Building KStars on Windows: Difference between revisions
Line 43: | Line 43: | ||
But since I already had cmake installed, I commented out lines 15-17 and then rehit emerge cmake, and there was no problem. | But since I already had cmake installed, I commented out lines 15-17 and then rehit emerge cmake, and there was no problem. | ||
Continued emerge qtbase. | Continued emerge qtbase. Despite a few errors (patch did not apply), the build continues. The mysterious "DirectX devel kit not found" error that started it all off did not reappear. |
Revision as of 07:41, 31 December 2015
Introduction
This is an attempt at keeping a log of what needs to be done to build KStars from source on Windows using the emerge tool.
Some quick explanations of GNU on Windows projects
Cygwin: Cygwin provides a kind of emulation layer for UNIX APIs on Windows. It has almost everything of GNU/Linux distros (X11/GNOME/KDE/whatever), including the Qt libraries and KDE Frameworks 5 libraries in its distribution. However, compiling and linking against these libraries means that you are essentially running a binary that uses X and UNIX APIs on Windows. The end result is a KStars binary that needs a running X-server, is very slow, and does not work very well.
MinGW: Provides a native build toolchain for GNU apps on Windows, that does not involve an emulation layer like cygwin1.dll MSYS: Provides a "cygwin-lite" set of Windows GNU binaries so as to have a minimal working GNU system with things like bash etc. This only provides tools, and although they come from cygwin-land, if one compiles with MinGW, it doesn't produce cygwin-binaries.
According to Nicolas Alvarez: If you want to compile a program that uses autotools, you either use cygwin (and get a cygwin binary) or you use mingw to get a native binary, but then you still need the cygwin-ish msys bash to run the ./configure script
Moral of the story: Avoid Cygwin to build. Use MinGW + MSYS.
Initial steps
This article: https://techbase.kde.org/Getting_Started/Build/Windows/emerge is great for almost all things.
If you are using Windows 10, please see the notes at the very bottom of the page
Also, do not try to use Cygwin to get python and git. The entire process does not want you to have the standard GNU tools in path etc. Instead, get them from the standard installers at python.org and git-scm.com
When installing git using the installer from git-scm.com, make sure you choose the option where git is accessible from command line, but the MinGW tools are not added to the path (Second option out of the three as of this writing). Adding the MinGW32 tools to the path ends up causing trouble while building with the MinGW compiler.
Please note that emerge has a verbose mode (emerge --verbose) which is very helpful for diagnosing any problems.
Building Qt packages
First build Qt Base by emerging it
emerge qtbase
For some strange reason, emerge may get stuck half way in powershell. It looks like hitting enter periodically ensures that the process goes on (why????). Of course this could just be coincidence but it seems unlikely. (This could be due to a virtualbox feature -- the author of this blurb is running the Windows OS in virtualbox)
This is a very long process. emerge will download 7zip, other developer utils, cmake and then download MSYS (binaries), and then build a few libraries like OpenSSL, libexpat, DBus... from sources, which took about an hour on my system (hardware-assisted emulated Windows with 2 cores / 2GB RAM). Then actually getting to building the Qt libraries.
Troubleshooting
The Qt build failed in my case, but in attempting to re-run to see what the error really was, I had trouble getting past emerge's checking if cmake was installed or not.
The offending lines seemed to be in python script R:\emerge\portage\dev-util\cmake lines containing nightlyVer. It's possible that something changed on the cmake.org website and this script itself needs to be updated.
But since I already had cmake installed, I commented out lines 15-17 and then rehit emerge cmake, and there was no problem.
Continued emerge qtbase. Despite a few errors (patch did not apply), the build continues. The mysterious "DirectX devel kit not found" error that started it all off did not reappear.