gnucash-2.6.4-1.fc20.x86_64, to which I upgraded today, won't launch. Backtrace (the output of /usr/bin/gnucash) is below. "sudo yum downgrade gnucash" to 2.4.13-5.fc20 makes the problem go away. So does installing 2.6.3-1.fc20. Backtrace: In ice-9/boot-9.scm: 157: 16 [catch #t #<catch-closure 1149100> ...] In unknown file: ?: 15 [apply-smob/1 #<catch-closure 1149100>] In ice-9/boot-9.scm: 3597: 14 [process-use-modules (((gnucash price-quotes)))] 702: 13 [map #<procedure 10e9540 at ice-9/boot-9.scm:3597:25 (mif-args)> ((#))] 3598: 12 [#<procedure 10e9540 at ice-9/boot-9.scm:3597:25 (mif-args)> (#)] 2864: 11 [resolve-interface (gnucash price-quotes) #:select ...] 2789: 10 [#<procedure f9d400 at ice-9/boot-9.scm:2777:4 (name #:optional autoload version #:key ensure)> # ...] 3065: 9 [try-module-autoload (gnucash price-quotes) #f] 2401: 8 [save-module-excursion #<procedure 283d480 at ice-9/boot-9.scm:3066:17 ()>] 3085: 7 [#<procedure 283d480 at ice-9/boot-9.scm:3066:17 ()>] In unknown file: ?: 6 [primitive-load-path "gnucash/price-quotes" ...] In gnucash/price-quotes.scm: 41: 5 [#<procedure 289efe0 ()>] In ice-9/boot-9.scm: 3597: 4 [process-use-modules (((www main)))] 702: 3 [map #<procedure 10e9540 at ice-9/boot-9.scm:3597:25 (mif-args)> ((#))] 3598: 2 [#<procedure 10e9540 at ice-9/boot-9.scm:3597:25 (mif-args)> ((www main))] 2867: 1 [resolve-interface (www main) #:select ...] In unknown file: ?: 0 [scm-error misc-error #f "~A ~S" ("no code for module" (www main)) #f] ERROR: In procedure scm-error: ERROR: no code for module (www main)
Haven't seen this problem here on F20 x86_64. What guile do you have installed?
guile-2.0.11-1.fc20.x86_64
I can reproduce this and confirm that downgrading resolves the issue. With 2.4.13-5 installed I see the www/main.scm module: $ rpm -ql gnucash | grep www /usr/share/gnucash/guile-modules/www /usr/share/gnucash/guile-modules/www/cgi.scm /usr/share/gnucash/guile-modules/www/http.scm /usr/share/gnucash/guile-modules/www/main.scm /usr/share/gnucash/guile-modules/www/url.scm The gnucash-2.6.4-1 RPM does not contain any of these files but still seems to still have a dependency on www/main.scm?
Just cleanup local guile cache before run: rm -rf ~/.cache/guile.
>Just cleanup local guile cache before run: rm -rf ~/.cache/guile. Yes, I tried this and it worked, but it should not be necessary. The RPM upgrade scripts need to do the necessary cleanup.
(In reply to Jonathan Kamens from comment #5) > >Just cleanup local guile cache before run: rm -rf ~/.cache/guile. > > Yes, I tried this and it worked, but it should not be necessary. The RPM > upgrade scripts need to do the necessary cleanup. In this case it's more a gnucash itself work, or a guile autocompilation issue, than rpm or upgrade process. I don't think upgrade process will touch somehow any user files.
CC'ing Geert, who knows more about this than I do. We certainly can't muck around in the user cache dir on upgrade. What would seem to be the proper thing to do would be to ship precompiled guile objects; however, I'm not having a lot of success figuring out how this would be packaged. For everything in guile-modules, this is easily done by placing the .go files in %{libdir}/guile/2.0/site-ccache/gnucash. But for the scheme files under /scm, Guile seems to only want to load precompiled versions from the user's homedir cache, regardless of the setting of GUILE_LOAD_COMPILED_PATH. Am I missing something?
(In reply to Bill Nottingham from comment #7) > CC'ing Geert, who knows more about this than I do. > I'm flattered :) > We certainly can't muck around in the user cache dir on upgrade. > > What would seem to be the proper thing to do would be to ship precompiled > guile objects; however, I'm not having a lot of success figuring out how > this would be packaged. > Agreed. This has been on the back of my mind for a while but so far I haven't gotten around to implement this. > For everything in guile-modules, this is easily done by placing the .go > files in %{libdir}/guile/2.0/site-ccache/gnucash. But for the scheme files > under /scm, Guile seems to only want to load precompiled versions from the > user's homedir cache, regardless of the setting of GUILE_LOAD_COMPILED_PATH. > Am I missing something? I tried locally and got the same results. After some fiddling it turns out to be an issue with how we are loading the files in gnucash. We typically use (load-from-path "<name>.scm") It appears this prevents guile from using <name>.go as compiled file for <name>.scm This can be fixed by using (load-from-paht "<name>") Now <name>.go will properly be used. I'm whipping up a patch for this and will push it into maint soon. I still need to test if this change doesn't cause any issues on the other platforms we support (particularly Windows, which is still using guile 1.8).
Bill, this commit fixes the issue that you can't use pre-compiled scheme files in scm. This is actually a bug in guile, but I've worked around it. If you apply this patch to your tarball, you should be able to complete the pre-compile work. I am looking at doing this straight in the gnucash build scripts. That will take me some time however. And as an aside I was also thinking there may be another way around this issue that doesn't need the pre-compiled scheme files at all: If the rpm's post-install step would touch each scm file it installs, these files would be guaranteed to be newer than the existing autocompiled files and hence an autocompile would always be triggered on the next gnucash run. I don't know very much about rpm packaging though. So perhaps such a workaround is simply "not done".
Oops - I seem to have forgotten to add the link to the commit: https://github.com/Gnucash/gnucash/commit/283dfa2d8317dada0ec494f2fe933dc38320a604
Update: I have reworked this for the upcoming 2.6.5. Guile 2 precompilation is now part of the build system.
Thank you!
Awesome, apologies for being so slow in trying to get this going on the Fedora side.
Scratch build (F21) at: http://koji.fedoraproject.org/koji/taskinfo?taskID=8313521 if others would like to test.
So this bug should go away the upgrade to 2.6.5 (bug 1176892) is pushed? Just being curious because 2.6.5 also contains some bug fixes I'm waiting for (https://bugzilla.gnome.org/show_bug.cgi?id=726891).
Yes, should get to that this week sometime.
gnucash-2.6.5-1.fc21 has been submitted as an update for Fedora 21. https://admin.fedoraproject.org/updates/gnucash-2.6.5-1.fc21
gnucash-2.6.5-1.fc20 has been submitted as an update for Fedora 20. https://admin.fedoraproject.org/updates/gnucash-2.6.5-1.fc20
gnucash-2.6.5-1.el7 has been submitted as an update for Fedora EPEL 7. https://admin.fedoraproject.org/updates/gnucash-2.6.5-1.el7
Package gnucash-2.6.5-1.fc20: * should fix your issue, * was pushed to the Fedora 20 testing repository, * should be available at your local mirror within two days. Update it with: # su -c 'yum update --enablerepo=updates-testing gnucash-2.6.5-1.fc20' as soon as you are able to. Please go to the following url: https://admin.fedoraproject.org/updates/FEDORA-2015-0474/gnucash-2.6.5-1.fc20 then log in and leave karma (feedback).
gnucash-2.6.5-1.fc20, gnucash-docs-2.6.5-1.fc20 has been pushed to the Fedora 20 stable repository. If problems still persist, please make note of it in this bug report.
gnucash-2.6.5-1.fc21, gnucash-docs-2.6.5-1.fc21 has been pushed to the Fedora 21 stable repository. If problems still persist, please make note of it in this bug report.
gnucash-2.6.5-1.el7, gnucash-docs-2.6.5-1.el7 has been pushed to the Fedora EPEL 7 stable repository. If problems still persist, please make note of it in this bug report.