2015-05-07 GnuCash IRC logs

00:53:09 *** MechtiIde has joined #gnucash
01:26:54 *** MechtiIde has quit IRC
01:36:29 *** O01eg has quit IRC
01:47:06 *** lwells has quit IRC
02:12:58 *** StuM has quit IRC
03:11:13 *** GabrieleV_ has joined #gnucash
03:12:03 *** GabrieleV has quit IRC
03:12:04 *** GabrieleV_ is now known as GabrieleV
03:33:23 *** himaxx has joined #gnucash
03:36:00 *** himaxx has quit IRC
03:48:03 *** gjanssens has joined #gnucash
03:48:03 *** gncbot sets mode: +o gjanssens
03:58:42 *** Jimraehl1 has left #gnucash
04:24:37 *** fabior has joined #gnucash
04:26:26 *** StuM has joined #gnucash
05:00:49 *** fell has joined #gnucash
06:28:09 *** Jimraehl1 has joined #gnucash
06:52:48 *** Jimraehl1 has left #gnucash
07:00:38 *** Jimraehl1 has joined #gnucash
07:21:32 *** fabior has quit IRC
07:29:55 *** kraftb has joined #gnucash
07:57:40 *** rickoehn has joined #gnucash
08:12:09 *** andy has quit IRC
08:14:18 *** mlncn has joined #gnucash
08:18:32 *** andy has joined #gnucash
08:48:39 *** fabior has joined #gnucash
08:52:45 *** jchonig has quit IRC
08:54:53 *** jchonig has joined #gnucash
09:06:37 *** pieter has joined #gnucash
09:10:12 <pieter> I just switched to 2.6.6 from 2.6.4 and noticed that my custom report stopped working. Any chance there is an obvious big chang that would cause this? The final failure is with "<gnc.engine> xaccAccountGentName: assertion 'GNC_IS_ACCOUNT(acc)' failed
09:10:36 <pieter> sorry, clarification: custom eguile report
09:23:18 *** ErKa has joined #gnucash
09:27:03 <pieter> CRIT <gnc.engine> xaccAccountGetName: assertion 'GNC_IS_ACCOUNT(acc)' failed
09:34:50 *** kraftb has quit IRC
09:39:06 <pieter> ... and more digging turns out those CRIT messages appear regardless of whether I load the custom report on startup or not. It does not seem to affect normal GnuCash use.
09:44:59 *** ErKa has quit IRC
09:45:37 *** himaxx has joined #gnucash
09:52:47 <pieter> I guess the actual relevant error is: ERROR: In procedure module-lookup: Unbound variable: the-environment
09:57:43 <gjanssens> pieter: have you switched from using guile 1.8 to 2.0 at the same time as well ?
09:58:16 <gjanssens> When I was porting gnucash to run on guile 2 I ran into issues with "the-environment" as well
09:59:13 <gjanssens> You may have to add an extra code snippet in your report:
09:59:16 <gjanssens> (cond-expand
09:59:18 <gjanssens> (guile-2
09:59:19 <gjanssens> (eval-when
09:59:21 <gjanssens> (compile load eval)
09:59:22 <gjanssens> (use-modules (ice-9 local-eval)))) ; for the-environment
10:00:59 <gjanssens> You can check commit 8d50e55bcb (https://github.com/Gnucash/gnucash/commit/8d50e55bcb) for more details
10:01:15 <gjanssens> Or the bug it refers to.
10:01:40 <pieter> thanks! taking a look now
10:05:04 *** mlncn__ has joined #gnucash
10:07:44 <pieter> Yes, it was exactly that. I am running archlinux and it seems they used to compile gnucash with 1.8 and stopped doing so not too long ago
10:07:50 <pieter> thanks again :)
10:09:47 *** mlncn has quit IRC
10:11:01 <gjanssens> You're welcome :)
10:25:04 *** ErKa has joined #gnucash
10:28:25 *** himaxx has quit IRC
10:28:26 *** mlncn__ has quit IRC
10:29:42 *** mlncn has joined #gnucash
10:33:16 *** lmat has quit IRC
10:39:21 *** mlncn has quit IRC
10:46:29 *** lmat has joined #gnucash
10:58:36 *** StuM has quit IRC
11:02:36 *** mlncn has joined #gnucash
11:03:34 *** fabior has quit IRC
11:30:09 *** mlncn___ has joined #gnucash
11:36:34 *** mlncn has quit IRC
11:55:50 *** GabrieleV_ has joined #gnucash
11:55:55 *** GabrieleV has quit IRC
11:55:55 *** GabrieleV_ is now known as GabrieleV
12:00:21 *** MechtiIde has joined #gnucash
12:07:51 *** mlncn_ has joined #gnucash
12:10:36 *** mlncn___ has quit IRC
12:13:00 *** mlncn__ has joined #gnucash
12:19:37 *** mlncn_ has quit IRC
12:51:19 *** O01eg has joined #gnucash
13:00:43 *** MechtiIde has quit IRC
13:05:30 *** himaxx has joined #gnucash
13:09:47 *** himaxx has quit IRC
13:22:36 *** Krzysiek_K has joined #gnucash
13:34:02 *** mlncn__ has quit IRC
13:39:50 *** lmat has quit IRC
13:41:13 *** lmat has joined #gnucash
13:41:53 <jralls> gjanssens: About the guile cache problem: A new Gnucash release will force rewriting the cache because the .scm files will be newer than the .go ones, but then a new Guile version will break it again because the .go files won't be compatible with Guile itself. With the bleeding-edge distros like Ubuntu and Arch releasing every 6 months this will be a recurring headache.
13:46:02 *** mlncn has joined #gnucash
13:49:23 *** serrador has left #gnucash
13:51:11 <gjanssens> jralls: have you tried this ? As of gnucash 2.6.5 we are shipping our own .go files. IMO if the autocompiled ones are outdated guile will first look for our compiled ones (since we added them to the load path) and use those instead of recompiling.
13:51:36 <gjanssens> That's what I *thought* I saw happening on Fedora, which has run into exactly the same issue a couple of months back.
13:51:48 <gjanssens> I should retest to be sure though
14:03:15 *** mlncn___ has joined #gnucash
14:09:41 *** mlncn has quit IRC
14:10:40 <jralls> gjanssens: No, we don't ship our own .go files to unix distros, we only ship source tarballs. What gets passed into the distribution depends entirely upon what that particular distro's packager decides to include.
14:11:09 <jralls> I rather doubt many, if any, packagers are conversant with Guile's peculiarities.
14:17:47 <jralls> That said, one of the bugs was for GC 2.6.4 and the other didn't specify, so maybe I'm being overly pessimistic.
14:18:56 *** mlncn_ has joined #gnucash
14:22:58 *** mlncn___ has quit IRC
14:24:25 <jralls> But wait. Even if the packager includes the .go files in the distro, it will still break when the Guile packager pushes an upgrade, only now the workaround will require root permissions to fix, including running GnuCash as root, which will bork the permissions on the user's datafile.
14:26:56 *** ErnstNeger has joined #gnucash
14:29:01 <jralls> No, wait, running GC with the prebuilt .go files wouldn't build the files in /usr/lib/scm, it would just generate the ~/.cache/guile/ccache again. So root to delete /usr/lib/scm/.../gnucash, then run GC as usual until the next upgrade.
14:29:16 <jralls> s/with/without/
14:33:37 *** mlncn___ has joined #gnucash
14:38:03 *** mlncn_ has quit IRC
15:02:24 *** ErKa has quit IRC
15:27:52 *** Remo has quit IRC
15:28:02 <gjanssens> jralls: I have run the test to be sure
15:28:25 <gjanssens> 1. change a report (adjust title for easy spotting of the difference)
15:28:30 <gjanssens> 2. make && make install
15:28:45 <gjanssens> 3. remove the autocompiled .go file for the transaction report
15:28:48 <gjanssens> 4. Run gnucash
15:29:19 <gjanssens> => as expected due to a missing transaction.go file, it gets autocompiled
15:29:32 <gjanssens> => The report menu lists the report with the altered name
15:29:53 <gjanssens> 5. Quit gnucash, however don't remove the autocompile cache
15:30:14 <gjanssens> 6. Adjust the transaction report again (reset title to original state)
15:31:06 <gjanssens> 7. make && make install (which will regenerated transaction.scm during build, it will be installed where make install defines it, which is a different location from the autocompile cache)
15:31:16 <gjanssens> 8. run gnucash
15:31:41 <gjanssens> => although the source file is newer than the autocompiled version, no autocompilation takes place
15:32:07 <gjanssens> => instead guile finds transaction.go where make install has put it and uses that version instead
15:32:28 <gjanssens> => this is confirmed by the report name in the menu being reset to the original name
15:33:19 <gjanssens> So it does work as intented
15:35:30 <gjanssens> The fedora packages do ship the pre-built *.go files.
15:35:48 <gjanssens> I know because it was their bug (https://bugzilla.redhat.com/show_bug.cgi?id=1151870) which triggered me to fix this properly.
15:36:22 <gjanssens> If other distro's don't ship these files while building gnucash against guile 2.0, I'd consider this a packaging bug.
15:36:57 <gjanssens> Building these files is not optional in our build system (for building against guile 2.0 that is) for exactly that reason.
15:37:59 <gjanssens> There are some transient issues for people that have been using gnucash 2.6.4 and earlier with guile 2 when they upgrade to 2.6.5+ with guile 2
15:38:47 <gjanssens> These are a side effect of how package management works and difficult for us to anticipate.
15:38:55 <gjanssens> What happens for those users is this:
15:39:25 <gjanssens> 1. package manager builds gnucash 2.6.5+ on say May 1st.
15:40:58 <gjanssens> 2. This package still has to pass several distro qa tests, so it is only officially released on May 10th. The files in the package are dated May 1st because that's when the package was built.
15:41:09 *** mlncn___ has quit IRC
15:41:29 <gjanssens> 3. Meanwhile a user installs the currently shipped gnucash, for example 2.6.4 and runs it on May 8th
15:42:17 <gjanssens> 4. Since 2.6.4 didn't have precompiled *.go files yet, gnucash happily autocompiles all the scheme files. The autocompiled *.go files hence are dated May 8th
15:43:07 <gjanssens> 5. After the new package gets pushed to the repos, the user installs it on May 15th. And here is the tricky bit: the package manager maintains the build dates, so all new files will be dated May 1st !
15:44:10 <gjanssens> 6. As those files are older than May 8th, the autocompiled *.go files are newer and guile will assume they are valid. (Primitive checking by guile, I know)
15:44:21 <gjanssens> And there's the issue.
15:44:43 <gjanssens> Why I think it will fade out: the next gnucash package will only be release in a couple of months.
15:45:16 *** Unhammer has quit IRC
15:45:27 <gjanssens> So when it gets packaged, the files in the new package will definitely be newer than the autocompiled files that are still lingering.
15:50:01 <gjanssens> Note that I have also looked into altering the search order of *.go files on the path, but I haven't found a way
15:50:54 <gjanssens> There is the %load-compiled-path variable which we alter for our precompiled files, but the path to autocompiled files is not in there.
15:53:35 *** fabior has joined #gnucash
16:00:02 <gjanssens> Different topic - my main machine is running F21, 64-bit edition
16:00:19 <gjanssens> So most libraries are installed in /usr/lib64
16:00:43 <gjanssens> However when I run configure for gnucash it automatically selects /usr/lib as LIBDIR
16:00:48 <jralls> gjanssens: Right, I understand all of that. What you didn't test, and perhaps can't, is what happens when you upgrade Guile, which crashes when it encounters a .go file built by a previous version of Guile.
16:01:16 <gjanssens> jralls: no. I discussed this with the guile devs
16:01:31 <jralls> Oh?
16:01:40 <gjanssens> Minor versions are guaranteed to be abi compatible
16:01:56 <gjanssens> So a *.go file built by 2.0.8 will work with 2.0.10
16:02:09 <gjanssens> (or is that micro versions?)
16:02:10 *** mlncn has joined #gnucash
16:02:53 <gjanssens> Anyway whenever guile moves to 2.2, the load-compiled-paths will change as well from ccache/2.0 to ccache/2.2
16:03:03 <jralls> That would be a micro version. But https://bugzilla.gnome.org/show_bug.cgi?id=748331 suggests that their confidence is misplaced.
16:03:17 <gjanssens> So a guile 2.2.x will never see the compiled files by 2.0.x
16:03:45 <jralls> Or that the Ubuntu (Debian?) packager has managed to outsmart them.
16:04:02 * gjanssens is reading the bug now
16:06:22 *** aqua_ has joined #gnucash
16:10:19 <gjanssens> So what happened here IMO is something slightly different, yet related to autocompilation
16:10:42 <gjanssens> gnucash 2.6.3 and earlier carried a script to fetch yahoo quotes
16:10:56 <gjanssens> It wasn't in use anymore, but still in the tree
16:11:08 <gjanssens> That file was being installed even
16:11:42 <gjanssens> This file was depending on a guile module called www (to access the yahoo website)
16:12:24 <gjanssens> I removed all this for gnucash 2.6.4 (in commit https://github.com/Gnucash/gnucash/commit/25256c1ba7fa8)
16:13:41 <gjanssens> Looking back at the commit myself I'm talking about src/scm/price-quotes.scm
16:13:59 <gjanssens> I deleted the old function from that file together with the code to load the www module
16:14:44 <gjanssens> If the user had run gnucash 2.6.3 or earlier, there will also be an autocompiled price-quotes.go file
16:15:01 <gjanssens> That go file continues to exist after a gnucash update to 2.6.4
16:15:32 <gjanssens> Taking the timing issue explained above into account it may be that this obsolete go file is preferred over the precompiled version
16:15:53 <gjanssens> So that old go file still tries to load the www module, which we no longer ship
16:16:02 <gjanssens> Resulting in the error the user sees.
16:16:33 <gjanssens> The odd part here is that guile does check for source file presence before looking for a compiled version
16:16:54 <gjanssens> Missing source file == load error
16:17:13 <gjanssens> Even if the autocompiled version of the file is still around
16:19:07 <gjanssens> jralls: I seem to have missed the conversation on the bug. I have been out of town a couple of times the last few months.
16:19:22 <gjanssens> If I had seen the conversation I would have chimed in earlier.
16:19:24 <jralls> OK, that's plausible and doesn't seem all that odd. If it needs to check that the source file isn't newer than the compiled file it would naturally barf if the source isn't present. That does preclude loading a binary-only package, but IIUC that's the way Python works too.
16:20:24 <jralls> As for the bug itself, most of the conversation was about getting the reporter to get the right information to figure out what was going on.
16:20:24 *** mlncn___ has joined #gnucash
16:21:18 <jralls> I managed to miss the change in price-quotes.scm, or maybe just to miss understanding the implications.
16:22:54 <gjanssens> It's a big project and we all have our particular focuses...
16:23:25 <gjanssens> It has taken me quite some time and effort to grasp all the subtle changes that guile 2 brought.
16:23:37 <gjanssens> Luckily I had a lot of help from the guile community
16:23:50 * gjanssens still doesn't like the language itself though...
16:24:21 <jralls> Well, with just the two of us being active on most bugs we don't really have that luxury anymore. But I find the Guile learning curve steep and it seems I have to climb it every time I have to muck around in the guile code.
16:24:59 *** mlncn has quit IRC
16:25:09 <gjanssens> True. Each bit of guile that gets removed makes me happy
16:25:39 <jralls> Me too.
16:25:52 <gjanssens> I sure hope that a clean core in c++ will make the project more attractive to fresh blood
16:26:06 <gjanssens> (ooh, sounds vampire like ;)
16:26:23 <jralls> +1 on that as well. Except for the vampire part. ;-)
16:26:35 <gjanssens> btw you have any idea what's going on with my /usr/lib vs /usr/lib64 thing ?
16:26:57 <gjanssens> Why wouldn't configure automatically pick /usr/lib64 on a 64-bit build ?
16:28:31 <jralls> Because autotools need to be told that it's the default and the Fedora autotools packager didn't realize that he should tell it?
16:29:54 <jralls> The easy thing to do would be to add --libdir=/usr/lib64 to configure. On the other hand you don't really want to be installing self-built stuff into /usr anyway.
16:30:52 <jralls> It used to be that /usr/local was the preferred location but it seems some distros have appropriated that as well, so the preferred location nowadays is /opt.
16:32:39 <gjanssens> I'm obviously using a local prefix. /usr was just added to illustrate the path.
16:32:58 <gjanssens> So I'm looking at a fedora bug then ?
16:33:18 <gjanssens> Or at least I'll ask in Fedora circles how they view it.
16:34:04 <gjanssens> I remember I have run into this before and for some time I did have --libdir='$prefix'/lib64 appended to configure
16:34:39 <gjanssens> Due to a recent clean reset of my build system it got removed and I was reminded of it.
16:34:57 <gjanssens> It's just annoying I have to explicitly set it all the time...
16:35:12 *** fabior has quit IRC
16:35:48 <jralls> Ah, OK. Well, whether it's a bug is probably a matter of opinion. I'd think that there'd be an environment variable that you could set, but I don't immediately find one.
16:36:34 *** rickoehn has quit IRC
16:36:39 <jralls> Here's a discussion about it: http://comments.gmane.org/gmane.comp.sysutils.autoconf.general/11238
16:37:06 *** rickoehn has joined #gnucash
16:40:37 *** ErnstNeger has quit IRC
16:41:35 <jralls> Which has a solution for you: Add :: test "$libdir" = NONE && libdir='${prefix}/lib64' :: to $PREFIX/etc/config.site. See also http://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/Site-Defaults.html#Site-Defaults
16:48:01 <jralls> Oops, didn't read quite far enough. It should be :: test "$libdir" = '${exec_prefix}/lib' && libdir='${exec_prefix}/lib64' ::.
16:54:29 * gjanssens tried both incantations, but neither worked. Perhaps I have to rerun autogen.sh after the changes...
16:54:36 <gjanssens> Will try that tomorrow.
16:54:54 <gjanssens> Thanks for digging that up. My search foo didn't get me there
16:55:15 <gjanssens> Time for bed now, TTYL
16:57:52 <jralls> G'night.
17:00:32 *** gjanssens has quit IRC
17:20:14 *** Krzysiek_K1 has joined #gnucash
17:20:38 *** Krzysiek_K has quit IRC
17:39:30 *** mlncn___ has quit IRC
17:46:14 *** fell_ has joined #gnucash
17:51:25 *** fell has quit IRC
18:05:06 *** rickoehn has quit IRC
18:47:11 *** ErKa has joined #gnucash
19:09:32 *** himaxx has joined #gnucash
19:24:14 *** himaxx has quit IRC
19:33:20 *** mlncn has joined #gnucash
20:11:08 *** mlncn has quit IRC
20:56:02 *** ErKa has quit IRC
21:32:39 *** Coderjoe has quit IRC
21:37:52 *** Coderjoe has joined #gnucash
22:19:00 *** GabrieleV_ has joined #gnucash
22:19:33 *** GabrieleV has quit IRC
22:19:33 *** GabrieleV_ is now known as GabrieleV
22:24:04 *** fell_ has quit IRC
23:28:47 *** aqua__ has joined #gnucash
23:38:34 *** aqua_ has quit IRC