Bug 780827

Summary: gnucash no longer working after upgrade by zypper
Product: [openSUSE] openSUSE 12.2 Reporter: Forgotten User 99jW5vq2hJ <forgotten_99jW5vq2hJ>
Component: OtherAssignee: Dominique Leuenberger <dimstar>
Status: RESOLVED FIXED QA Contact: E-mail List <qa-bugs>
Severity: Major    
Priority: P2 - High CC: andrei, dimstar, mls, pgajdos, ran.rubin, sault.don
Version: Final   
Target Milestone: ---   
Hardware: x86-64   
OS: openSUSE 12.2   
Whiteboard:
Found By: --- Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---
Attachments: zypper in --debug-solver gnucash (with a cleaned out system)

Description Forgotten User 99jW5vq2hJ 2012-09-17 19:26:43 UTC
User-Agent:       Mozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20100101 Firefox/15.0

On a fresh install of openSUSE 12.2, gnucash works after installation of libguile-srfi-srfi-1-v-3-3-1.8.8-4.2.1.x86_64

However, when using "zypper up" on the system, it installs some other libguile libraries which do not work together with gnucash.



Reproducible: Always

Steps to Reproduce:
1. install openSUSE 12.2, install libguile -> gnucash works
2. do zypper up
3. gnucash no longer works
Actual Results:  
~>gnucash
gnc.bin-Message: main: binreloc relocation support was disabled at configure time.

Backtrace:
In unknown file:
   ?: 0* [primitive-load-path "slib/guile.init"]

<unnamed port>: In procedure primitive-load-path in expression (primitive-load-path name):
<unnamed port>: Unable to find file "slib/guile.init" in load path



zypper up does this:

Installation von: git-core-1.7.10.4-2.4.1 .........................................................................................[fertig]
Installation von: libglib-2_0-0-2.32.4-4.8.1 ......................................................................................[fertig]
Installation von: libguile-srfi-srfi-13-14-v-3-3-1.8.8-4.5.1 ......................................................................[fertig]
Installation von: libguile-srfi-srfi-4-v-3-3-1.8.8-4.5.1 ..........................................................................[fertig]
Installation von: libguile17-1.8.8-4.5.1 ..........................................................................................[fertig]
Installation von: SuSEfirewall2-3.6.295-1.6.1 .....................................................................................[fertig]
Installation von: opensuse-manuals_en-12.2-3.11.1 .................................................................................[fertig]
Installation von: gitk-1.7.10.4-2.4.1 .............................................................................................[fertig]
Installation von: git-web-1.7.10.4-2.4.1 ..........................................................................................[fertig]
Installation von: git-svn-1.7.10.4-2.4.1 ..........................................................................................[fertig]
Installation von: git-gui-1.7.10.4-2.4.1 ..........................................................................................[fertig]
Installation von: git-email-1.7.10.4-2.4.1 ........................................................................................[fertig]
Installation von: git-cvs-1.7.10.4-2.4.1 ..........................................................................................[fertig]
Installation von: git-1.7.10.4-2.4.1 ..............................................................................................[fertig]
Installation von: libgthread-2_0-0-2.32.4-4.8.1 ...................................................................................[fertig]
Installation von: libgobject-2_0-0-2.32.4-4.8.1 ...................................................................................[fertig]
Installation von: libgmodule-2_0-0-2.32.4-4.8.1 ...................................................................................[fertig]
Installation von: libguilereadline-v-17-17-1.8.8-4.5.1 ............................................................................[fertig]
Installation von: libguile-srfi-srfi-60-v-2-2-1.8.8-4.5.1 .........................................................................[fertig]
Installation von: libguile-srfi-srfi-1-v-3-3-1.8.8-4.5.1 ..........................................................................[fertig]
Installation von: icedtea-web-1.3-1.5.1 ...........................................................................................[fertig]
Installation von: libgio-2_0-0-2.32.4-4.8.1 .......................................................................................[fertig]
Installation von: guile1-1.8.8-4.5.1 ..............................................................................................[fertig]
Installation von: glib2-tools-2.32.4-4.8.1 ........................................................................................[fertig]
Installation von: glib2-devel-2.32.4-4.8.1 ........................................................................................[fertig]
Comment 1 Donovan Cameron 2012-09-18 20:07:37 UTC
I get the same error. Looks like something got broke during the attempt to fix the original bug with the missing libguile-srfi-srfi dependency.

Gnucash is broken in both Oss and Update repos for 12.2.
Comment 2 Ran Rubin 2012-09-18 21:14:07 UTC
Same here.

After downgrading all guile and gnucash related packages (form Update to OSS) I still get the above error.

guile and gnucash are always an issue, it was the same in 12.1 (not complaining just saying.. :-))
Comment 3 Dominique Leuenberger 2012-09-18 21:24:32 UTC
Thanks for reporting this issue..

The fix was mainly bringing gnucash back to the fix of 12.1, where guile-devel was being pulled in (which, in turn, required all it's sub libraries).

Having too many guile libs being installed causing a problem is severe, as any other app might consequently rely on one of those libs, causing hughe issues if they are to be operated on the same system.
Comment 4 Dominique Leuenberger 2012-09-18 21:28:53 UTC
Actually, this looks like one of the additional libs tries to trigger a more optimized path.

Can you please verify if you have the package called 'slib' installed? And if not, if installing this package resolves the issue for you?
Comment 5 Donovan Cameron 2012-09-18 21:36:53 UTC
saultdon@d830:~> zypper se -si slib
Loading repository data...
Warning: Repository 'openSUSE-12.2-Update-Non-Oss' appears to outdated. Consider using a different mirror or server.
Reading installed packages...

S | Name | Type    | Version   | Arch   | Repository       
--+------+---------+-----------+--------+------------------
i | slib | package | 3b3-9.1.1 | noarch | openSUSE-12.2-Oss


I didn't need to install slib, it's already there =)
Comment 6 Ran Rubin 2012-09-18 21:39:24 UTC
same here.
I also have it.

Tahnks,
Ran
Comment 7 Dominique Leuenberger 2012-09-18 21:45:51 UTC
Tested on a almost fresh VM and this works.. eeks..

Are you running GNOME Desktops or KDE? (just to see if anything here might just have pulled in some more deps).

Also, can you please show me the output of:
 ls -la /usr/share/guile/site/
 ls -la /usr/share/guile/site/slib
Comment 8 Ran Rubin 2012-09-18 22:14:45 UTC
I'm running KDE

I don't have either of these folders.
I only have /usr/share/guile/1.8

ranr@xxxx:/usr/share/guile/1.8> ls -la
total 328
drwxr-xr-x 7 root root   4096 Sep 19 00:19 .
drwxr-xr-x 3 root root   4096 Sep 19 00:19 ..
-rw-r--r-- 1 root root 293214 Sep 11 16:26 guile-procedures.txt
drwxr-xr-x 4 root root   4096 Sep 19 00:19 ice-9
drwxr-xr-x 3 root root   4096 Sep 11 16:26 lang
drwxr-xr-x 3 root root   4096 Sep 19 00:19 oop
drwxr-xr-x 2 root root   4096 Sep 19 00:19 scripts
-rw-r--r-- 1 root root   9456 Sep 19 00:19 slibcat
drwxr-xr-x 2 root root   4096 Sep 19 00:19 srfi
Comment 9 Donovan Cameron 2012-09-18 22:30:26 UTC
(In reply to comment #8)
> I'm running KDE
> 
> I don't have either of these folders.
> I only have /usr/share/guile/1.8
> 
> ranr@xxxx:/usr/share/guile/1.8> ls -la
> total 328
> drwxr-xr-x 7 root root   4096 Sep 19 00:19 .
> drwxr-xr-x 3 root root   4096 Sep 19 00:19 ..
> -rw-r--r-- 1 root root 293214 Sep 11 16:26 guile-procedures.txt
> drwxr-xr-x 4 root root   4096 Sep 19 00:19 ice-9
> drwxr-xr-x 3 root root   4096 Sep 11 16:26 lang
> drwxr-xr-x 3 root root   4096 Sep 19 00:19 oop
> drwxr-xr-x 2 root root   4096 Sep 19 00:19 scripts
> -rw-r--r-- 1 root root   9456 Sep 19 00:19 slibcat
> drwxr-xr-x 2 root root   4096 Sep 19 00:19 srfi

Same here. Running KDE 4.9

I'm wondering if users who followed this comment: https://bugzilla.novell.com/show_bug.cgi?id=779458#c6 (like me) have some extra deps in their system now?
Comment 10 Ran Rubin 2012-09-19 03:47:34 UTC
I'm running KDE 4.8.
I did not do anything special. I think I chose GNUCash during installation (or imidiatly after), it worked after the fresh install and stooped working after the first update.
Comment 11 Dominique Leuenberger 2012-09-19 09:04:15 UTC
(In reply to comment #8)
> I'm running KDE
> 
> I don't have either of these folders.

Ok, that sounds like an issue... likely a racing condition in the installations of guile vs slib originally.

Can you try to:
  zypper in --force slib
? This should run the scripts needed to create the folders as expected.
If that works, the big question will be how to do the fix :)
Comment 12 Ran Rubin 2012-09-19 09:44:48 UTC
(In reply to comment #11)

> Can you try to:
>   zypper in --force slib

That did not work (it did not create the folder /usr/share/guile/site).

However I removed all the guile packages, the slib packages and gnucash and then reinstalled them with:

zypper in guile1 libguile-srfi-srfi-1-v-3-3 libguile-srfi-srfi-13-14-v-3-3 libguile-srfi-srfi-4-v-3-3 libguile-srfi-srfi-60-v-2-2  libguile1-devel libguile17 libguilereadline-v-17-17 

zypper in slib

zypper in gnucash

and this worked!

I get:

ranr@xxxx:~> ls -la /usr/share/guile/site/
total 8
drwxr-xr-x 2 root root 4096 Sep 19 12:31 .
drwxr-xr-x 4 root root 4096 Sep 19 12:28 ..
lrwxrwxrwx 1 root root   10 Sep 19 12:31 slib -> ../../slib

ranr@xxxx:~> ls -la /usr/share/guile/site/slib
lrwxrwxrwx 1 root root 10 Sep 19 12:31 /usr/share/guile/site/slib -> ../../slib

and as far as I can see gnucash works fine (not tested extensively)

Regarding how to fix this, I really don't know but I'll be happy to provide any info you might need. 

Thanks for your help,
Ran
Comment 13 Dominique Leuenberger 2012-09-19 09:56:23 UTC
Thanks.. that means the good news is: we're on the right track.

As for installing:
zypper in guile1 libguile-srfi-srfi-1-v-3-3 libguile-srfi-srfi-13-14-v-3-3
libguile-srfi-srfi-4-v-3-3 libguile-srfi-srfi-60-v-2-2  libguile1-devel
libguile17 libguilereadline-v-17-17

=> only guile1 should be needed; the rest should be pulled as dependency (minus libguile1-devel... this is not required to run an app.. or it's an error)

now, actually, 

gnucash requires slib, and slib requires guile1... so all the deps should be in place.

/usr/share/guile/site and the symlink in there should have been created by slib's %post scritplets...

CCing Petr, the slib and guile maintainer
Comment 14 Donovan Cameron 2012-09-19 16:35:14 UTC
saultdon@d830:~> sudo zypper rm gnucash *guile* slib

The following packages are going to be REMOVED:
  gnucash gnucash-lang guile1 libguile17 libguile1-devel libguilereadline-v-17-17 libguile-srfi-srfi-13-14-v-3-3 libguile-srfi-srfi-1-v-3-3 libguile-srfi-srfi-4-v-3-3 libguile-srfi-srfi-60-v-2-2 slib 

Look at all those srfi-srfi packages! Are they causing a conflict somewhere?

So after that, I re-installed just gnucash:

saultdon@d830:~> sudo zypper in gnucash

The following NEW packages are going to be installed:
  gnucash gnucash-lang guile1 libguile17 slib 

The following recommended package was automatically selected:
  gnucash-lang 

The following package is recommended, but will not be installed:
  bundle-lang-gnome-extras-ar 

5 new packages to install.
Overall download size: 6.4 MiB. After the operation, additional 34.7 MiB will be used.
Continue? [y/n/?] (y): y


Trying to run gnucash gives the same original error now:
saultdon@d830:~> gnucash
gnc.bin-Message: main: binreloc relocation support was disabled at configure time.

ERROR: In procedure dynamic-link:
ERROR: file: "libguile-srfi-srfi-1-v-3", message: "file not found"


So I did a search for the srfi packages and installed the closest matching one:
sudo zypper in libguile-srfi-srfi-1-v-3-3

And now gnucash will run!

A `sudo zypper ve` after all that says "Dependencies of all installed packages are satisfied."
Comment 15 Donovan Cameron 2012-09-19 16:37:26 UTC
Here is where zypper pulled the packages from:


saultdon@d830:~> zypper se -si gnucash *srfi* slib

i | gnucash                    | package | 2.4.11-2.5.5 | x86_64 | openSUSE-12.2-Update
i | libguile-srfi-srfi-1-v-3-3 | package | 1.8.8-4.5.1  | x86_64 | openSUSE-12.2-Update
i | slib                       | package | 3b3-9.1.1    | noarch | openSUSE-12.2-Oss

Where slib is the only package from the OSS repo and the rest from the Update repo.
Comment 16 Donovan Cameron 2012-09-19 16:44:29 UTC
I THINK I FOUND IT!

It's a patch: openSUSE-2012-614



It installed all the other srfi packages and that broke Gnucash:

sudo zypper patch
The following NEW packages are going to be installed:
  libguilereadline-v-17-17 libguile-srfi-srfi-13-14-v-3-3 libguile-srfi-srfi-4-v-3-3 libguile-srfi-srfi-60-v-2-2 

The following NEW patch is going to be installed:
  openSUSE-2012-614



So I had to do this again to re-fix:
sudo zypper rm *guile* gnucash slib
sudo zypper in gnucash libguile-srfi-srfi-1-v-3-3
# Below command will mask/lock out the patch, optional
sudo zypper al -t patch openSUSE-2012-614

And it is back to working again.
Comment 17 Donovan Cameron 2012-09-19 16:49:17 UTC
Here is the patch info, and it says it was suppose to make it so you could install Gnucash without having to install other packages manually:


saultdon@d830:~> zypper info -t patch openSUSE-2012-614
Loading repository data...
Reading installed packages...


Information for patch openSUSE-2012-614:

Name: openSUSE-2012-614
Version: 1
Arch: noarch
Vendor: maint-coord@suse.de
Status: Needed
Category: recommended
Created On: Tue 11 Sep 2012 06:27:53 AM MST
Reboot Required: No
Package Manager Restart Required: No
Interactive: No
Summary: guile1: Fix package requirements of guile1 - Make gnucash work without having to install packages manually
Description: 
This update fixes the following issue for guile1:
- bnc#779458: Require the library packages from the main package: having the *.so symlinks in the main package forces us to install the libs as well, or we end up with dangling symlinks (thus, failing to actually dlopen the .so file, which was the main reason to move them to the main package)
Provides:
patch:openSUSE-2012-614 == 1

Conflicts:
guile1.i586 < 1.8.8-4.5.1
srcpackage:guile1 < 1.8.8-4.5.1
guile1-debuginfo.i586 < 1.8.8-4.5.1
guile1-debugsource.i586 < 1.8.8-4.5.1
libguile-srfi-srfi-1-v-3-3.i586 < 1.8.8-4.5.1
libguile-srfi-srfi-1-v-3-3-debuginfo.i586 < 1.8.8-4.5.1
libguile-srfi-srfi-13-14-v-3-3.i586 < 1.8.8-4.5.1
libguile-srfi-srfi-13-14-v-3-3-debuginfo.i586 < 1.8.8-4.5.1
libguile-srfi-srfi-4-v-3-3.i586 < 1.8.8-4.5.1
libguile-srfi-srfi-4-v-3-3-debuginfo.i586 < 1.8.8-4.5.1
libguile-srfi-srfi-60-v-2-2.i586 < 1.8.8-4.5.1
libguile-srfi-srfi-60-v-2-2-debuginfo.i586 < 1.8.8-4.5.1
libguile1-devel.i586 < 1.8.8-4.5.1
libguile17.i586 < 1.8.8-4.5.1
libguile17-debuginfo.i586 < 1.8.8-4.5.1
libguilereadline-v-17-17.i586 < 1.8.8-4.5.1
libguilereadline-v-17-17-debuginfo.i586 < 1.8.8-4.5.1
guile1.x86_64 < 1.8.8-4.5.1
guile1-debuginfo.x86_64 < 1.8.8-4.5.1
guile1-debugsource.x86_64 < 1.8.8-4.5.1
libguile-srfi-srfi-1-v-3-3.x86_64 < 1.8.8-4.5.1
libguile-srfi-srfi-1-v-3-3-debuginfo.x86_64 < 1.8.8-4.5.1
libguile-srfi-srfi-13-14-v-3-3.x86_64 < 1.8.8-4.5.1
libguile-srfi-srfi-13-14-v-3-3-debuginfo.x86_64 < 1.8.8-4.5.1
libguile-srfi-srfi-4-v-3-3.x86_64 < 1.8.8-4.5.1
libguile-srfi-srfi-4-v-3-3-debuginfo.x86_64 < 1.8.8-4.5.1
libguile-srfi-srfi-60-v-2-2.x86_64 < 1.8.8-4.5.1
libguile-srfi-srfi-60-v-2-2-debuginfo.x86_64 < 1.8.8-4.5.1
libguile1-devel.x86_64 < 1.8.8-4.5.1
libguile17.x86_64 < 1.8.8-4.5.1
libguile17-debuginfo.x86_64 < 1.8.8-4.5.1
libguilereadline-v-17-17.x86_64 < 1.8.8-4.5.1
libguilereadline-v-17-17-debuginfo.x86_64 < 1.8.8-4.5.1
Comment 18 Dominique Leuenberger 2012-09-19 18:09:09 UTC
Ok.. here is something going on which I do not (yet) understand...

with all repos available (and cleaned up with zypper rm *guile*)
- zypper in gnucash
 => this pulls in
    gnucash    from Update,
    guile1     from OSS
    libguile17 from OSS
    slib       from OSS 
(This I somewhat understand, is based on zypper trying to be smart and minimize impacts)
=> The result is non-working gnucash, missing guile libs, so far so good.

- zypper patch
  => This pulls in (all from Update)
  libguile-srfi-srfi-1-v-3-3
  libguile-srfi-srfi-13-14-v-3-3
  libguile-srfi-srfi-4-v-3-3
  libguile-srfi-srfi-60-v-2-2 
  libguilereadline-v-17-17
=> This is expected.

BUT: "rpm -qV guile1" now lists a missing folder /usr/share/guile/site; and exactly THIS missing folder is the cause for all of this.

executing zypper in --force guile1; to trigger a reinstall of this package, solves the issue with non-working gnucash; and with all patches applied...

CCing MLS: Do you happen to hav ANY clue what is going on here? There are no scripts in guile1 that should nag around (only very old cleanups, none affecting this folder); yet, updating from guile1-1.8.8-4.2.1 to guile1-1.8.8-4.5.1 (either zypper patch or zypper up) resolves in a 'broken' installation...
Comment 19 Dominique Leuenberger 2012-09-19 18:21:10 UTC
Small correction for the initial zypper in ru

> with all repos available (and cleaned up with zypper rm *guile*)
> - zypper in gnucash
>  => this pulls in
>     gnucash    from Update,
>     guile1     from OSS
>     libguile17 from Update
>     slib       from OSS 

=> libguile17 is being installed from the Update tree, not as stated in comment 18 from OSS.
Comment 20 Dominique Leuenberger 2012-09-19 18:25:39 UTC
Created attachment 506319 [details]
zypper in --debug-solver gnucash (with a cleaned out system)
Comment 21 Forgotten User 99jW5vq2hJ 2012-09-22 08:20:11 UTC
Doing "rpm -qV guile1" as suggested by Dominique solves the problem on my system, too.
Comment 22 Michael Schröder 2012-09-26 13:32:30 UTC
I think the slib package is to blame, it contains:

%triggerpostun -- guile1
# Delete slib library files, only if guile was uninstalled.
if ! test -e usr/bin/guile ; then
    rm -f usr/share/guile/site/slib
    rm -f usr/share/guile/site/slibcat
    rmdir --ignore-fail-on-non-empty usr/share/guile/site
    rmdir --ignore-fail-on-non-empty usr/share/guile
fi
exit 0

This seems to be wrong, it should test for /usr/bin/guile1 instead of /usr/bin/guile. As an update consists of the installation of the new version followed by the uninstall of the old version, the postun trigger gets run.
Comment 23 Dominique Leuenberger 2012-09-26 13:45:50 UTC
mls: Nice: so a package can trigger a script when another one is being uninstalled? Nice one... and good luck in debugging...

In this case, the right thing seems to be to add slib (fixed) to the update stack as well. Having the %post script putting the link bank in place should work.. and %triggerpostung checking on the right file should also help.. 

(Hope I got this all right)
Comment 24 Dominique Leuenberger 2012-09-27 15:57:12 UTC
home:dimstar:bnc780827 contains a fixed slib package, which triggers this issue in first place.

After having the system 'broken' like this, installing this slib package recovers the machine and gnucash works.

Having this version of slib installed before the guile1 update dripples in also works and no longer breaks the install.

This has been submitted as SR 136267 to the maintenance team.
Comment 25 Swamp Workflow Management 2012-10-06 13:09:45 UTC
openSUSE-RU-2012:1298-1: An update that has one recommended fix can now be installed.

Category: recommended (low)
Bug References: 780827
CVE References: 
Sources used:
openSUSE 12.2 (src):    slib-3b3-9.4.1
Comment 26 Dominique Leuenberger 2012-10-15 19:05:10 UTC
This should be solved now.. let's close.

All, THANKS for your patience and help in debugging this