Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

I'm an old hand at software development, but not so experienced with packaging. I've built one dpkg before, but it wasn't a source package.

I'm working on getting an application submitted to the Ubuntu app store. The documentation on packaging is a bit on the vague side, saying not much more than that it needs to be packaged in the "Debian source package format":

http://developer.ubuntu.com/publish/my-apps-packages/

I'm sure I could muddle through putting a Debian source package tarball together, but there are a few things I wonder about:

  • How is the 32-vs-64 bit thing handled? Do they take source and build apps from both?
  • How is supporting different versions of Ubuntu handled -- 10.04, 10.10, 11.04, 11.10, etc?
  • How are dependencies handled. If, for instance, my app depends on SDL, how do I specify that?
  • If I don't want to distribute source code for my application (which is a proprietary license), is there a clean way to indicate that source shouldn't go with the app?
  • If I'm not using autoconf/automake, does my Makefile need to be set up in a particular way, or are the autotools required?

I imagine that the Ubuntu folks probably take the source and build it for each of the different platforms and architectures that they support buying apps for, but since there's no apparent way in the submit process to indicate what the app runs with (i.e. requires GTK3 and 64-bit support, or Intel-only with no ARM support), I can only hope that stuff can be specified in the source format.

Is there any good, thorough documentation specifically on source package creation you can point me to?

share|improve this question
    
You do not have to provide a deb source package, or the source code. Just a tarball. More detail in answers (hopefully forthcoming from a tried hand at the process). –  Jacob Johan Edwards Dec 3 '11 at 21:51
add comment

2 Answers

up vote 7 down vote accepted

On the page you link to it says:

Canonical provides this packaging service to you free of charge.

and goes on to explain how to lay out the tarball containing your binaries.

If you create such a tarball and submit it via MyApps then all the packaging will be done for you. As it says at the bottom you can provide a source package if you like, but it's not required. Note that this is specific to closed-source or for-pay apps, anything that is libre and gratis has a different process currently.

As for your other questions:

How is the 32-vs-64 bit thing handled?

You can just upload 32-bit if you like as that works on 64-bit too. If you want to upload 32-bit and 64-bit then build it twice and put the results in "i386" and "amd64" subdirectories.

How is supporting different versions of Ubuntu handled -- 10.04, 10.10, 11.04, 11.10, etc?

You can specify which versions of Ubuntu your uploaded binaries work for as part of the submission process.

How are dependencies handled. If, for instance, my app depends on SDL, how do I specify that?

That will be added as part of the packaging process. If you want to add a comment specifying the dependencies then it will likely speed things up.

If I don't want to distribute source code for my application (which is a proprietary license), is there a clean way to indicate that source shouldn't go with the app?

As stated you don't have to provide the source at all.

If I'm not using autoconf/automake, does my Makefile need to be set up in a particular way, or are the autotools required?

Any build system supported in Ubuntu is allowed. If you are using plain Makefiles then that's fine. However, if you're only uploading binaries that's not an issue.

share|improve this answer
    
Excellent answer, thank you. –  Jason Champion Dec 6 '11 at 2:07
    
But if I have made my app in Java & using NetBeans, what should I provide? Is it the source files or only the .jar or a ZIP of the complete NetBeans folder? –  Roshnal Jan 13 '12 at 12:27
add comment

It is best to start by learning to use the ppa

https://help.launchpad.net/Packaging/PPA

When you upload a source, the packages (arch) are build for you.

You can also look at

https://wiki.ubuntu.com/MOTU/GettingStarted

https://wiki.ubuntu.com/PackagingGuide/Complete

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.