Windows

From GnuCash
Revision as of 13:25, 15 December 2006 by Andi5 (talk | contribs) (Text reports crash)
Jump to: navigation, search

GnuCash on Microsoft Windows

This page collects various notes about compiling GnuCash on Microsoft Windows. See Windows/Old_Notes for old, solved issues.

Q: Is it possible to compile GnuCash on Windows?

A: Well, compiling is possible, and running as well, but so far not everything runs.

Q: So, where is the binary?

We do not (yet) provide a binary for Windows. The simple reason is already stated above: We know compiling is possible, but the runtime testing has just started, and we expect a lot of issues still need to be resolved. This means the source code will change quite quickly and those early testers are expected to follow those source code changes by getting the code from SVN. On the other hand, providing a binary would mean people wouldn't follow the source code changes quickly enough, making the testing almost useless. (That would change if someone volunteers to provide e.g. a nightly binary build. Volunteers, anyone?) That's why we still do not provide a binary, until we've received enough positive feedback to know the program can actually be distributed.

Instructions for an (almost) automated build

Copied from http://lists.gnucash.org/pipermail/gnucash-devel/2006-September/018588.html

Several people have now compiled and run GnuCash on MS Windows by the mingw32/gcc compiler environment. These instructions explain how everyone else can give it a try as well. We would be happy to hear any further feedback about problems or (hopefully) success in this matter.

We've created a shell script that will download, compile, and install all requirements of GnuCash on Windows and eventually GnuCash itself. It will even make sure to retrieve the most up-to-date gnucash source code directly from SVN. Running this script will probably download ~200MB of data (but all downloaded data will be cached) and will take anything between 0.5 through 5 hours of time. That shell script is located in packaging/win32/install.sh of the gnucash SVN sources.

Before you can execute this shell script (which will do everything else automatically), you have to complete these steps manually:

  • Get the content of the packaging/win32/ directory of gnucash SVN, most up-to-date from SVN, and copy it to some directory on your Windows machine. Do not use a directory that is one of the parent directories of the path you intend to use for the repository in the next step (c:\soft\repos by default).
  • Adapt the directory name variables in the custom.sh file according to your preferences; the defaults would install everything in subdirectories below c:\soft. (Note that due to shell syntax, every windows-style backslash has to be specified as two backslashes.)
  • Execute this downloaded package to install it into the chosen directory, say, C:\soft\msys (which is the $MSYS_DIR variable in custom.sh)
  • Start the MSYS commandline shell by double-clicking the "MSYS" icon on the desktop which should have been created when you installed the MSYS package.
  • Let the automated build begin by typing:
 $INSTALLER_DIR/install.sh   (the complete path to the install.sh)
  • Some of the downloaded packages are installed through graphical installer dialogs where you can choose an installation directory. In those cases, the install.sh script will tell you in the MSYS window the installation directory that you should choose, according to your settings in custom.sh. Please enter only those installation directory in the installer dialog because otherwise the install.sh script cannot find the newly installed software.
  • If there haven't been any errors, you should be able (after several hours of compiling and installing) to start gnucash from the MSYS command line by typing
 c:/soft/gnucash/bin/gnucash

or even without MSYS directly by "Start"-> "Run"-> "c:\soft\gnucash\bin\gnucash.bat"

Please spread the word and report back any problems you encounter. It is probably not too difficult anymore to create a full self-contained package of GnuCash on Windows as well! Some more information is also collected here on this wiki page.


A bit of history

This page used to collect random notes from the time when we manually tried to install each and every part of the requirements. They have been moved to Windows/Old Notes.

Notes

gdb

In addition to Stack Trace, here are a few instructions on how to run gnucash under gdb on Windows:

  • Install "gdb" from mingw.org
  • Modify the installed "gnucash" script to call "exec gdb gnucash-bin.exe" instead of "exec gnucash-bin.exe" at the end
  • Then start gnucash, which will give you the gdb prompt
  • Type "run" at the gdb prompt.
  • Then provoke the crash and type "backtrace" or shorthand "bt" at the gdb prompt to obtain the backtrace, as explained on Stack Trace as well.

You can provide even better stack traces if you tell gdb where in memory dynamically loaded modules got mapped to, because otherwise function calls into those are only written as '??'. See here and here for a way to do this.


Problems, issues, comments

For any problem that occurs now, you should add a new section below.

What is needed for providing a binary...

Hi all,

Since that gnucash works more or less nicely on windows, assuming that it might come even better in the future (big thanks to all developers and 'voluntaires') I said to my MS-friend he shall use gnucash. (sql-ledger would have been the other possibility).

Now I have the problem, what do I need to copy onto his machine now? The whole soft folder is 909M. It would be nice when it's possible to delete all not needed (just needs to run on his machine) stuff. I guess that will be about 85% maybe even?

Anyway, before doing quite some 'try and error' work to reduce that, I thought I would ask people (you :) with inside knowledge, maybe providing some hints to me.

Thanks a lot! Calmar

Assuming that you installed to different prefixes within soft, I will name a few directories that contain only build dependencies: active-perl (as long as finance::quote in non-functional), autotools, downloads, (expat?), indent, mingw, msys, pexports, repos, svn, swig, tmp, unzip and wget. There may be more we do not need to run GnuCash, but I think we do not have a better list right now. Maybe we should indeed start discussion some day :) -- andi5
Some stats of mine: c:\soft -> 4.15 GB, dirs above sum up to 2.64 GB. Did not expect that a high percentage, because I have a lot of stuff lying around :) Your mileage will vary.
Hi Andi. I had to include the autotools folder.I have now: gnome, gnucash, goffice, guile, readline, autotools, libgsf and regex. 193MB. Only 50MB zipped (just in case it's here: http://www.calmar.ws/toni.zip ). Can send to the friend now. thanks again! Calmar 16:04, 8 December 2006 (EST)
Yes, I guess you need libltdl-3.dll only. In case you can wait a few days, I will try to make a script that extracts the necessary files. That may at least be an intermediate solution. -- andi5
Hi Andi, it seems there is also the need for libssl32.dll libeay32.dll or so. Probably from the openssl package. Maybe the need to install the openssl package additionally , or maybe just the dll's in such a 'binary package'. I will check out somebit. Cheers Calmar
Additionally (still trying to install that on a friends computer without the long install.sh) I get that error:
procedure: primitive-load-path:
unable to find: ice-9/boot-9.scm
Gnucash actually quits suddenly after that. (That is with the folders (mentioned above) zipped on my computer, extracted on his, and additionally installed Win32OpenSSL-0_9_8d.exe. Cheers Calmar
Easy fix: Move these files to exactly the same position they have been on your computer, i.e. most likely guile@c:\soft\guile. Meanwhile, I am setting up a dist.sh that should produce a GnuCash installer package, including a fix for guile by setting GUILE_LOAD_PATH. -- andi5

DLL install error

I get an error like that:

'libgncmodule.la' 'c:/soft/gnucash/lib/libgncmodule.la'
/bin/install -c .libs/libgncmodule.dll.a
c:/soft/gnucash/lib/libgncmodule.dll.a
base_file=`basename ${file}`
  dlpath=`/bin/sh 2>&1 -c '. .libs/'${base_file}'i;echo $dlname'`
make[5]: *** [install-libLTLIBRARIES] Error 1
make[5]: Leaving directory `/c/soft/repos/src/gnc-module'
make[4]: *** [install-am] Error 2

This seems to be only an installation problem. Fine compiling it seems.

I saw this at "make install" when I stopped and restarted the preceding compiling several times. So to me this looks like an artifact of DLLs that somehow "don't fit" to each other. The solution was always to run "make clean" in the source directory so that all DLLs are being deleted, and then starting the compiling again. --Cstim 05:55, 4 December 2006 (EST)
'make clean' in the repos/ and afterwards a rerun of install.sh really worked! thanks a lot Calmar 08:47, 4 December 2006 (EST)
actually it seems to be necessary here: to make 'make clean' in the repos/src/ dir *and* afterwards 'make clean' in the repos/ directory. Cheer Calmar 08:14, 12 December 2006 (EST)
I don't think so. "make clean" in the repos/ directory calls the same thing in repos/src, but not vice versa. "make clean" in repos/ should clearly be enough. Anyway, this only concerns people who re-use an existing repos/ directory. --Cstim 04:53, 13 December 2006 (EST)
Yeah, that's the logical thing in my mind too. It just regurarly fails with a 'make clean' in repos only. Maybe it's only here anyway for some reason. I'm happy enough I can get it compiled/installed. (I get that error also after removing the repos directory completely and then an install.sh btw (win2000)) Cheers and thx Calmar 07:31, 13 December 2006 (EST)

cannot move on swigwin

Extracting swigwin-1.3.29.zip ... done mv: cannot move `mydir/Examples' to `./Examples'. I copied them manually then Calmar 08:48, 4 December 2006 (EST)

I guess the swig installation is not perfect with regard to updates. I will try to improve that. Meanwhile, removing the c:\soft\swig directory completely should solve the issue. -- andi5

Text reports crash

Some text report crashed instantly, but on some other machines they worked fine. Same for graphical reports. Debugging is ongoing. When you run gnucash in gdb, the crash does reliably not occur the text reports.

What we currently know: GnuCash spits a warning ([1]), but does not crash because of it. It crashes because of something different (in WinAPI?) we cannot detect in gdb. isDebuggerPresent() might be true, but a breakpoint will only be set for fatal errors, so we cannot set a breakpoint. We also cannot start gnucash with --g-fatal-warnings though, as a standard win32 glib build aborts the application after a critical error [2].
I have filed a bug. May somebody try to compile my demo against the packages from ftp.gnome.org and a self-compiled gtkhtml? Do the crashes disappear for you too? -- andi5
Hi Andi, I would do it (even so i'm linux user) but I guess you would need to be more specific. I wouldn't really understand actually what to do really. Have no insights really, unless ./install.sh :) Calmar 06:41, 11 December 2006 (EST)
No need to anymore, a fix is underway (conceptually it is there, but well, nobody has implemented it yet ;-)) See the bug for more information.
I have updated install.sh in r15213. Hopefully, these crashers are fixed now :) I think removal of c:\soft\regex, \guile, \tmp\guile-1.6.8 and \gnucash is necessary. -- andi5

GConf/ORBit COMM_FAILURE

On some computers (Windows 2000/SP4), the following error has been observed, but on other computers GConf runs fine. GConf shows plenty of error messages like these: "Failed to save key /apps/gnucash/window/pages/account_tree/name_visible: Adding client to server's list failed, CORBA error: IDL:omg.org/CORBA/COMM_FAILURE:1.0" and also the "Cannot find default values" dialog is shown on each startup, regardless whether the "setup" is done or not. Also, the startup of GnuCash might open dozens of shell windows one after the other, and the startup of GnuCash is incredibly slow.

This is being reported to the ORBit crew as bug#363648. As a quick workaround, you have to install ORBit2-2.13.3 from here instead of 2.14.2, as this seems to fix that problem.

Failed to fork

When starting GNUCash I receive the following message:

gnucash: [E] "Failed to fork child process."

It is not a fatal error (program continues to load). Is this something I can safely ignore? --Scbash 17:10, 3 December 2006 (EST)

This is from the file process.scm and it concerned with the Finance::Quote script for stock price retrieval. Chris wrote: "That's process.scm which is run during price-quote retrieval. Perhaps guile's (primitive-fork) doesn't work on win32." You can ignore this for now. On the other hand, this means Finance::Quote and price retrieval currently doesn't work yet. --Cstim 16:07, 4 December 2006 (EST)

Reading/writing compressed files

The current win32 SVN code doesn't read or write compressed (gzip'd) files. On Linux, gnucash forks gzip as a child process and pipes the file through it. On windows, there isn't an easy replacement for fork() and pipe(). See src/backend/file/io-gncxml-v2.c:1246 ff.

As a consequence, a linux-stored data file which, by default, is stored in compressed form cannot be read by the Windows version at the moment. If you want to use the linux datafile, you need to switch off file compression beforehand. Or 'mv datafile datafile.gz && gunzip datafile.gz #providing a .gz suffix, and finally enzipping it'

Todo

This section is intended mainly for developers to concisely specfiy what issues are open, assigned or closed (and can be removed then).

[ ] R  Text report crashers (Bug, Bug)
[ ] R  GConf/ORBit2
[ ] R  SWIG installation (minor)
[ ]    Finance::Quote
[ ]    AqBanking
[ ]    Packaging
[ ]    Randomness (Mail)
[ ]    Terminal encoding != Locale encoding
[ ] R  Compressed files
A lot more, fill me