What is the proper way to patch Wine for a custom PPA?
I've been manually applying patches to Wine for use on my own machine, but I want to put it in a PPA for my friends and relations.
Currently I follow this procedure:
- Get the latest source from an upstream PPA via
apt-get source
- Use
patch
to apply my unofficial, unsupported patches. - Create a package using
dpkg-buildpackage -rfakeroot -uc -b
This is fine for creating a package that will run on my local machine. However I now want to distribute this custom build to others via a PPA.
Is this procedure sufficient, or is there a more correct and/or easier to maintain procedure I should be following specifically for Wine?
Solution 1:
You're pretty close with your example steps, but here's what I'd suggest:
- Grab the sources with
apt-get source wine
andcd
into the new directory - Find what sort of patch system the wine package is based on:
what-patch
; in this case, it tells us we that the wine package usesquilt
for patch management - Since we're using quilt, add your custom patch(es) to the quilt series:
QUILT_PATCHES=debian/patches quilt import <your-patchfile.patch>
If you have multiple patches, do this for each patch, in the order that you want them applied. - Add a suitable entry to the
debian/changelog
file - you'll need to alter the version number to ensure that your PPA version is differentiated from the official version. Typically, you should increment the last version number, and add a tilde (~) followed by your custom version string (eg~jbowtie1
). Thedch -i
command can help with this too. - Build the source package:
debuild -S
- Upload your source package to the PPA build system:
dput ppa:<your-ppa> ../wine*.changes
The <your-ppa> parameter is specified on the launchpad page for the PPA you want to upload it to (you'll have to create this beforehand).
It's usually a good idea to do a test build before doing the dput - the pbuilder
command allows you to recreate what the PPA build system would do with your package (ie, start from a clean install, add required deps, then build).
In this case you would have to set up pbuilder first (see https://wiki.ubuntu.com/PbuilderHowto), then do this before the dput
:
sudo pbuilder build ../*.dsc
Solution 2:
The Ubuntu Packaging Guide has all the information how to package for Ubuntu including howto deal with patches.
Solution 3:
You need to first build a source package-
https://wiki.ubuntu.com/PackagingGuide/Basic#Building%20the%20Source%20Package
Pushing it to a PPA is very easy for Ubuntu 9.10 or later
Just go to Terminal and type
dput ppa:your-lp-id/ppa <source.changes>
Solution 4:
Jeremy's answer is straight to the point.
Alternatively, you can use bzr
to handle the source, patches and building/upload.
See https://wiki.ubuntu.com/DistributedDevelopment, starting with https://wiki.ubuntu.com/DistributedDevelopment/Documentation.
While is simplifies some steps, e.g. merging for new upstream versions (if you plan to get ahead of the original Ubuntu package), the original "apt-get source" approach is probably more straight and easier in the end.