Multiarch strategy for software-center-agent
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Software Center Agent |
Fix Released
|
Medium
|
Anthony Lenton |
Bug Description
I worked on the multiarch support for software-center apps coming from the agent today and after some poking
and experimenting I think the best (and most reliable) solution involves using the software-
The problem is that a foreign architecture application in the client (and in the python-apt cache) needs to be
postfixed with a ":arch", e.g. skype:i386 otherwise the client will not find it. We could do that automatically for
apps that are not available for the native architecture and try to guess the pkgname. The downside of this approach
is that we may simply guess incorrectly and present applications that may not be mutliarch ready or that are not
availalbe for the native architecture yet because of e.g. amd64 taking longer to build than i386.
So I would like to propose that we add a new architecture "amd64-multiarch" to the agent. If the app-developer uploads
a i386 application he may check "this will work on a multiarch amd64 system too" and in this case the software-
needs to send the pkgname postfixed with a ":i386" to the client. The client will then do the right thing with the pkgname
because its unambiguous.
Alternatively (but not quite as elegant) is to simply add nothing to the server but instead build the packages so that there
is a "pkgname" package on both i386 and amd64 and a "pkgname-bin" on i386 only. The "pkgname" package needs to depend
on "pkgname-bin" and in this case software-
QA steps:
1) Publish an app, setting the architecture as multiarch
2) Verify that the app appears in USC for both i386 and amd64 (or check /api/2.
3) Verify that the package name in the amd64 link above is postfixed with :i386
4) Verify that you can install the app from USC on both architectures.
Changed in software-center-agent: | |
status: | New → Confirmed |
importance: | Undecided → Medium |
Changed in software-center-agent: | |
assignee: | nobody → Anthony Lenton (elachuni) |
status: | Confirmed → In Progress |
Changed in software-center-agent: | |
status: | In Progress → Fix Committed |
description: | updated |
Changed in software-center-agent: | |
status: | Fix Committed → Fix Released |
Changed in software-center-agent: | |
milestone: | none → 12.08 |
A couple of questions to spec this out better:
- If you select *only* "amd64-multiarch", which archs should include the package in the list of available apps for purchase?
- If you select *only* "amd64-multiarch", which archs (of the ones answered in the previous point) should suffix the package name with ":i386"?
- Which arch combinations would make sense? That is, if you select "amd64-multiarch", should also be able to select "amd64" and/or "i386" for the same distroseries? If any, how would that affect the arches that include the app, and which of them get the suffixed package name?
As I understand it, this would be either (A):
- If you select "amd64-multiarch", both "i386" the and "amd64" lists will include the package.
- Only "amd64" will have the package name suffixed.
- If you select "amd64-multiarch", then you can't select any other arch (the review form validation would prevent it).
Or (B):
- If you select "amd64-multiarch", then only the "amd64" list will include the package.
- "amd64" will have the package name suffixed.
- If you select "amd64-multiarch", then you can (and usually will!) also select "i386", that would behave as "i386" usually does.
Could you confirm if either of these sound right, or let us know what you would expect?