Bug 225749

Summary: scim-32bit and scim-qtimm-32bit are not installed
Product: [openSUSE] openSUSE 10.3 Reporter: Mike Fabian <mfabian>
Component: InstallationAssignee: Fan Jun Kong <fjkong>
Status: VERIFIED NORESPONSE QA Contact: Jiri Srain <jsrain>
Severity: Major    
Priority: P5 - None CC: aj, coolo, forgotten_Xh41Ao4q6j, kkaempf, koenig, ma, mls, ro
Version: unspecified   
Target Milestone: ---   
Hardware: All   
OS: Linux   
Whiteboard: libzypp2
Found By: Development Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---

Description Mike Fabian 2006-12-04 15:04:24 UTC
scim-32bit and scim-qtimm-32bit are not installed.
Comment 1 Mike Fabian 2006-12-04 15:12:10 UTC
Stefan Dirsch told me that in openSUSE 10.1, a package "foo-32bit" was
always installed by default if the package "foo" was installed by
default.

Apparently this is no longer the case. Why not?

Comment 2 Mike Fabian 2006-12-04 15:17:36 UTC
scim-32bit and scim-qtimm-32bit are necessary to use scim in 32bit
applications like firefox or OpenOffice.

Therefore I think these packages should always be installed by default
on a 64bit system if the 64bit parent packages scim and scim-qtimm are
installed by default.

How to achieve that?

One possibility would be to always install foo-32bit packages if foo is installed.

Another possibility would be to make scim-32bit and scim-qtimm-32bit provide
some locales. Currently:

mfabian@magellan:~$ rpm -q --queryformat "%{provides}\n" scim
locale(ja;ko;zh)
mfabian@magellan:~$ rpm -q --queryformat "%{provides}\n" scim-32bit
aaa-frontend-setup.so
mfabian@magellan:~$ rpm -q --queryformat "%{provides}\n" scim-qtimm
locale(qt3:ja;ko;zh)
mfabian@magellan:~$ rpm -q --queryformat "%{provides}\n" scim-qtimm-32bit
libqscim.so
mfabian@magellan:~$ 

I.e. the parent packages are installed by default for CJK because they
provide locale ja;ko;zh. But as the -32bit packages don't provide
these locales and there is no other mechanism which causes them to be
installed, they are never installed at all by default.
Comment 3 Mike Fabian 2006-12-04 15:18:51 UTC
This bug was found by Zhe Su in openSUSE 10.2. But as openSUSE 10.2 is
already released I guess we cannot fix this for openSUSE 10.2 anymore,
therefore I entered this as a bug against openSUSE 10.3.
Comment 4 Mike Fabian 2006-12-04 15:21:19 UTC
Assign to Andreas Jaeger <aj@novell.com> because he takes care of the patterns.
Comment 5 Michael Schröder 2006-12-04 17:04:53 UTC
As for comment #1, I hope this is wrong for 10.1. Always installing the -32bit packages seems to be a bad idea to me.
Comment 6 Stefan Dirsch 2006-12-21 18:21:49 UTC
(In reply to comment #5)
> As for comment #1, I hope this is wrong for 10.1. Always installing
> the -32bit packages seems to be a bad idea to me.
We did this since we began to ship x86_64. I did never hear a single complain about this.

Comment 7 Michael Schröder 2006-12-21 18:30:56 UTC
Are you sure? I don't think we ever did this. Why would there be a 32bit packages in the selections if that was true? Or are you talking about whether the 32bit packages are in the patterns? That's a different issue.
Comment 8 Stefan Dirsch 2006-12-21 18:50:01 UTC
Mike and me are talking about patterns - formerly known as selections.
Comment 9 Michael Schröder 2006-12-21 19:12:15 UTC
Ok, so comment #1 is just misleading.
Comment 10 Andreas Jaeger 2007-01-17 10:42:30 UTC
Just talked with Klaus.  We want a generic solution for this for 10.3 and he's going to design it.
Comment 11 Klaus Kämpf 2007-01-17 10:52:21 UTC
We already have parts of the solution, call "conjunctions" and described at
http://en.opensuse.org/Software_Management/Dependencies/Conjunctions

The basic functionality is identical to how locales (comment #2) are handled: Conditional dependencies.

For locales, the package says "if this parent package and this locale are installed, install me also". The same semantics should be applicable to -32bit packages, i.e. expressing "if this parent package is installed and a 32 bit runtime environment is requested, install me also."

We could handle this in patterns already. However, this is the wrong place as it needs adoption of the pattern every time a -32bit package is introduced. This simply doesn't work for 3rd party -32bit packages.

More flexible conditional dependencies are a major feature for the next generation of libzypp (targeted for 10.3). So please be patient ;-)
Comment 12 Michael Schröder 2007-01-17 10:57:02 UTC
If it's going to be generic, please make it configurable (i.e. some users don't want all 32bit libs installed, just the ones dragged in by library dependencies).

The biggest problem I see is that rpm has no way to tag dependencies with an architecture. Real life has two types of dependencies:
1) "feature" dep: I want this program/feature to work
2) "extension" dep: I am an extension for a program/lib with a specific architecture.

As an example, our perl modules have "Require: perl = <version>", but in reality it is perl with a specific version *and architecture*.
Another example are -devel and -debuginfo packages, they also need the exact architecture.

Yet another example: My brother upgraded a x86_64 host from 10.0 to 10.2, 10.0 has a i386 only Firefix. He then did an YOU update that installed the "MozillaFirefox-translations" translations package, but with architecture x86_64! The package was not installed before, so libzypp happily selected the x86_64 architecture.
Comment 15 Christoph Thiel 2007-08-08 09:26:42 UTC
Stano, what's the status on this bug?
Comment 16 Stanislav Visnovsky 2007-08-09 08:07:15 UTC
The generic solution was not done for 10.3.

Klaus, any proposed workaround?
Comment 17 Klaus Kämpf 2007-09-24 09:09:04 UTC
No, such functionalty is not covered by the current dependency solver.

The easiest workaround is probably providing per-architecture repositories.

Comment 18 Klaus Kämpf 2007-10-05 09:10:30 UTC
Revisit in preparation of Code11
Comment 19 Mike Fabian 2007-10-12 17:16:43 UTC
Adding Peng Wu <pwu@novell.com> to CC: because he encountered problems
with input methods in Firefox because scim-bridge-gtk-32bit wasn’t
installed by default.

Comment 20 Klaus Kämpf 2008-02-22 11:50:58 UTC
Micheal, how to handle this in sat-solver ?
Comment 21 Michael Schröder 2008-02-22 14:16:35 UTC
Dunno, it's more about specifying dependencies in rpm. The sat solver is not an issue.
Comment 22 Klaus Kämpf 2008-04-09 08:52:28 UTC
rpm5 uses name.arch to specify architecture in dependencies. (see rpm5/lib/rpmns.c in rpm5 source code).
The arch part is compared against this list:
    "i386", "i486", "i586", "i686", "athlon", "pentium3", "pentium4",
    "x86_64", "amd64", "ia32e",
    "alpha", "alphaev5", "alphaev56", "alphapca56", "alphaev6", "alphaev67",
    "sparc", "sun4", "sun4m", "sun4c", "sun4d", "sparcv8",
    "sparcv9", "sparcv9b", "sparcv9v", "sparcv9v2",
    "sparc64", "sun4u", "sparc64v",
    "mips", "mipsel", "IP",
    "ppc", "ppciseries", "ppcpseries",
    "ppc64", "ppc64iseries", "ppc64pseries",
    "m68k",
    "rs6000",
    "ia64",
    "armv3l", "armv4b", "armv4l",
    "armv5teb", "armv5tel", "armv5tejl",
    "armv6l",
    "s390", "i370", "s390x",
    "sh", "sh3", "sh4", "sh4a", "xtensa",
    "noarch", "fat",

If its not in this list, ".arch" is considered part of the name.

Back to rpm and sat-solver maintainer to support this notation in both tools.
Comment 23 Michael Schröder 2008-04-10 09:55:26 UTC
This bug is actually about two things:
- having the 32bit packages in a pattern
- supporting .arch dependencies.

I don't know if we have a solution for the first topic.
Regarding the second, we can't support .arch deps for 11.0, as this must be supported by rpm.
Comment 24 Mike Fabian 2008-04-24 10:57:08 UTC
bug #382523 might be related to this bug.
Comment 25 Forgotten User Xh41Ao4q6j 2010-11-27 23:19:45 UTC
Is this solved in current versions 11.3 and 11.4? 

(just shaking old bugs during openSUSE Bug Day)
Comment 26 Stephan Kulow 2010-11-29 09:44:36 UTC
for other such problems we add recommends to the -32bit package. Because it's not normally needed.
Comment 27 Fan Jun Kong 2012-11-09 08:23:47 UTC
close as noresponse