Up until a couple of days ago, I was blissfully ignorant of the fact that some packages need to have different distropatches depending on which arch the package is built for. Unfortunately, the following debian/rules snippet has come to my attention:
http://paste.ubuntu.com/6214717/ This can currently be found in lp:cordova-ubuntu, lp:cordova-ubuntu-tests, lp:signon, and possibly others. Does anybody know where this originated? Everybody I've asked so far has admitted that they just copied it from somebody else. I would *hope* that it is obvious to everybody why this is a horrible abomination that needs to be killed with fire, but just in case you don't see the problem here, I'll explain. It is an enormous maintainability nightmare. It re-invents precisely what it is that quilt is supposed to be doing for you, in a way that is sensitive to the implementation details of quilt itself. What if quilt's behavior changes in the future? This snippet will have to be found and updated everywhere that it exists. What if a bug is found in this snippet? Again it will have to be found and fixed everywhere. It becomes a sloppy copy&paste hackjob. Instead, I would like to propose an alternative that is superior because it does not rely on any quilt implementation details, and is written in half as many lines of code: http://paste.ubuntu.com/6214750/ The only change necessary to make this work is to rename the existing debian/patches/series to debian/patches/series.all, and make sure that the debian directory does not ship with a debian/patches/series file (its presence in the source tree would prevent it from being generated at build time). This works because debian/rules is really a Makefile. So we allow dh_quilt_* rules to run unmodified, but we tell `make` that it needs to create debian/patches/series first, and we tell it that that file can be created by concatenating series.all with series.[arch]. Better yet, this implementation ignores missing files, so if you have no patches that apply to all arches, you can omit the 'series.all' file harmlessly. If you only have one patch and it's only for armhf, you need only a 'series.armhf' file. if you were then to try and build on amd64, you'd get an empty debian/patches/series file, because series.all and series.amd64 could not be found, so cat created an empty series file for you. Quilt then goes on to harmlessly not apply any patches. What does the community think about this? Can anybody find a flaw with my proposed method? Improvements are welcome ;-) -- ubuntu-devel mailing list ubuntu-devel@lists.ubuntu.com Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel