On Mon, 23 Jul 2018 at 09:22:17 +0800, Sean Whitton wrote: > There are currently at least 18 source packages which use > vendor-specific series files. I have not been able to determine an > upper bound.
Here is a survey of packages that do this, based on this search from Stuart Prescott $ apt-file search --index-names dsc -x ^/debian/patches/.*\\.series and my parallel attempt: https://codesearch.debian.net/search?q=%28diff%7Cpatch%29+path%3Adebian%2Fpatches%2F%28.*%29%5C.series qjackctl and zlib (in the codesearch) are false positives caused by older versions existing in the search index. deluge switches on AppIndicator support by default but only in Ubuntu, presumably for Unity's benefit. This is in imperative Python code, so it could easily be runtime-conditional. I suspect this might be better implemented by detecting a Unity (or AppIndicator-supporting) session somehow, because people can run non-Unity desktops on Ubuntu, and can run AppIndicator-supporting desktops on Debian. fail2ban and libfreenect patch the contents of debian/ (!) to carry out a semi-automated backport for neurodebian. I think this might be more appropriately done by merging into a backports git branch, like I did for flatpak in jessie. Both of these packages also omit the rest of the patches from neurodebian-backport.series, so either they are actually using some other mechanism that is not the 3.0 (quilt) vendor patch series feature, or their backports are (incorrectly?) omitting the Debian patch series. filezilla, a file manager, changes how file sizes are displayed to follow <https://wiki.ubuntu.com/UnitsPolicy> when unpacked on Ubuntu. This could easily be done with cpp and a compile-time conditional in the patch if desired. hexchat, smuxi and xchat, IRC clients, use Ubuntu IRC servers and channels by default when unpacked on Ubuntu. Again, this could be done with cpp (for (he)?xchat) or a runtime conditional in C# code (for smuxi) if desired. smuxi seems to omit one Debian patch when unpacked on Ubuntu, which is probably a bug (the patch doesn't seem Debian-specific). libxfce4util uses X-Ubuntu-Gettext-Domain for l10n when unpacked on Ubuntu. An analogous patch in glib2.0 is applied unconditionally, even in Debian. I'm not sure which way is better. This is in C code and so could easily be done with cpp if desired. liferea, a RSS feed reader, uses Ubuntu RSS feeds by default when unpacked on Ubuntu. This is a patch to XML configuration files, so would not be trivial to do any other way while using the same source package for Ubuntu and Debian (the best idea I have would be to use xsltproc or xmlstarlet or something, at which point you have two problems). lilo adjusts user-visible vendor/version strings. This is C code and could easily be done with cpp, with the bonus that it would work for any other vendor; I sent a patch to #896081, although it fails to build (I don't understand why it fails, but I think it might be orthogonal to my changes). mate-power-manager hides a preference that, on Ubuntu, is handled by indicator-power. Like deluge, this seems to be based on an assumption that Ubuntu is strongly correlated with a desktop environment that uses particular indicator widgets. This is a patch to XML, so not trivially replaceable, although you could use xmlstarlet or something. mate-terminal and tilix, both terminals, have been adapted to Ubuntu having patched vte to stay with pcre instead of moving to pcre2. mate-terminal could easily use cpp; tilix is written in D, and I don't know whether that has a preprocessor. I think both of these would be better off looking for indications that the vte has been patched in this way, instead of checking for Ubuntu; otherwise, when Ubuntu eventually adds pcre2 to main and stops patching vte, they will get the opposite bug. mixxx, a DJ-mixing GUI, has a .desktop file that attempts to run under pasuspender so that it can play audio with direct ALSA, presumably for smaller/more predictable latency or some other benefit of a simpler audio path. There is a Debian patch to undo this and just run normally, and an Ubuntu patch series to undo the Debian patch and use pasupender, with the comment "Debian-specific as Ubuntu uses PulseAudio by default" in 2010. The observant will note that the majority of Debian desktops now use PulseAudio by default, too, so this reasoning might not be valid any more. numix-gtk-theme uses an Ubuntu-preferred icon theme by patching a declarative data file, with the comment that Ubuntu developers don't want this GTK theme to depend on a corresponding icon theme. This looks like it might indicate a missing (Debian) dependency, tbh... This change is not in imperative code, but would be easy to make with sed if desired. packagekit changes various repository and help URLs to be appropriate for Debian or Ubuntu. This is in declarative data files, so cannot be done with cpp, although it would probably be straightforward to do with sed. xfce4-smartbookmark-plugin changes the bug tracker URL to be appropriate for Ubuntu. This is in C code and could be done with cpp if desired. smcv