I already published my proprietary app on Ubuntu Software Centre (https://myapps.developer.ubuntu.com), and now I want to update it with the new version.

This time I wanted to upload multiple builds for a single app (one for Ubuntu 12.04 i386, one for Ubuntu 12.04. amd64, one for Ubuntu 11.10 i386, ...)
The problem is that it doesn't seem possible. New upload overwrites the old one.

Is it correct that the Software Centre only supports a single binary package per application ?
I could try creating the new app per build, but that seems like a wrong solution.

6 Answers
6

MyApps isn't setup to handle the situation of separate binaries per arch/series.

I'd suggest just ensuring that all your binaries get to the reviewer and they'll handle uploading the correct binaries to the PPA for you (until myapps is updated to handle this situation).

Option 1: If your binaries are small, gzip them together to a single file and use the package upload field

Option 2: If they're large, it'll be easier to upload them somewhere else (Ubuntu1 or dropbox) and share them via a url, noting that in your myapps submission.

Option 3: (I need to check if this'd be OK, policy-wise) If your binaries will build fine on Launchpad's build service, create a PPA, find me on IRC (noodles775 on freenode) and we can privatise your PPA, then you can dput your source and have them built by LP for the distroseries/arches automatically.

It looks to me like the myapps site is designed to cater mainly for Python/GTK applications - cross platform apps of only the latest version. For these reasons there is no facility to allow selections based on CPU and version, although obviously that facility does exist for Software Centre and automatic updates using the repositories.

I think that myapps is the wrong tool for the job if you want to publish compiled versions (binaries) of your program for different releases and CPUs. You might need to look at setting up a project on Launchpad and going mainstream with the development.

Alternately, I believe the PPAs should be able to be set up to do what you want with regards to 32 and 64 bit versions, however it's not the same as publishing with myapps because they would not be accessible until someone adds the PPA to their sources.

Michael Nelson's answer should be considered, ahem, "canonical", but since I had a draft almost done, here's my two cents :)

I think the Dev Portal's policy on how to upload proprietary packages pretty much explains why you have this problem and what your alternatives are:

Let's break it down:

Sources or binaries

It appears you want to upload multiple binaries. Generally, proprietary binary apps are either statically linked, or bundle their necessary dependencies with relative paths, so that nothing extra needs to be installed via apt-get, except perhaps ia32-libs.

It would be up to you to make sure that such a binary runs on Ubuntu 11.04/11.10/12.04 (whichever you're targeting), without failing on any platform; AFAIK the core requirement is that the libc used to compile your app/libraries be backwards-compatible with the oldest-possible kernel you wish to target; I believe anything that is Lucid or newer is fine with the current libc 2.15 on Precise.

I don't know how extensive Canonical's packaging services to commercial devs are if you submit a non-debianized source, but I assume it would have to be compile-able to something similar to the above "universal" binary.

Debian Source Package:

If you go with this option, all you need to do is (a) ensure that any dependencies are available in the repos for the oldest release you want to target, and that (b) your app does not use any new-fangled functions/API/ABI in those dependencies such that it works on say, 12.04 but fails on 11.04.

In this case, I believe Canonical/Soyuz (the build system) will take care of creating multiple packages for each release.

Get a human involved - pack all your different binaries into a giant tarball and contact noodles775 ;p

Use either Synaptic or aptitude instead of the Ubuntu Software Centre. This way, you will have more control over exactly which packages are going to be installed and you will be able to check the dependencies, recommends packages, etc. before the packages are installed.