On Wed, 11 Apr 2012 at 10:08:20 +0200, Svante Signell wrote:
> severity 657793 important

Please do not exaggerate bug severities.

I can *just about* see how running a Quake dedicated server on the FreeBSD
kernel might be a rational thing to do, if you're really, really keen on
FreeBSD's firewalling... but I don't see any way in which the inability to
run a Quake dedicated server on Hurd could be construed to have
"a major effect on the usability of a package".

Running the client side of quakespasm on either kFreeBSD or Hurd makes
very little sense unless either can do better than VESA graphics.

On Sun, 29 Apr 2012 at 12:47:43 +0200, Robert Millan wrote:
> NMU to fix this has been uploaded to DELAYED/10.  Debdiff is attached.

With that in mind, I don't think this is an appropriate use of an NMU.
Quakespasm has never been present on either of the affected architectures,
so there's certainly no regression here, and I doubt you can claim with
a straight face that any of our users have ever been disappointed to find
that they can't run their Quake server on non-Linux kernels.

Looking more closely at the code being patched, it's a workaround for
mis-design in Quakespasm, which makes it risky to apply patches to
fix the build without also testing thoroughly that the result actually works:

On Sat, 28 Jan 2012 at 21:31:53 +0000, Steven Chamberlain wrote:
> --- Quake/net_sys.h.orig      2012-01-28 21:28:41.000000000 +0000
> +++ Quake/net_sys.h   2012-01-28 21:28:46.000000000 +0000
> @@ -62,7 +62,7 @@
>  
>  #if defined(__FreeBSD__) || defined(__DragonFly__)   || \
>      defined(__OpenBSD__) || defined(__NetBSD__)              || \
> -    defined(__MACOSX__)
> +    defined(__MACOSX__) || defined(__FreeBSD_kernel__)
>  /* struct sockaddr has unsigned char sa_len as the first member in BSD
>   * variants and the family member is also an unsigned char instead of an
>   * unsigned short. This should matter only when PLATFORM_UNIX is defined,

I should have noticed that this was suspicious when I reviewed it before. Given
the structure of the Quakespasm code, it's a reasonable thing for porters
to do, but the right answer for high-quality code would be to make this list
of special cases irrelevant. Why would Quakespasm even care? Why would it be
relevant that Linux vs. BSD networking stacks have this difference?

It turns out that the reason this patch matters is that Quakespasm
defines "qsockaddr" to be a reinvention of struct sockaddr, then passes
a qsockaddr (with a cast, just to make sure there's no type-safety...) to
system functions that expect a struct sockaddr. It's not surprising that this
isn't portable.

Abstracting system differences can be useful if it actually abstracts things
(like GLib's GSocketAddress does), but this isn't abstraction, it's just
reinventing the system type, and then kludging around differences between
OSs by changing its redefinition to match theirs. The right way to be
portable would be to use the system's struct sockaddr as intended, perhaps by
replacing qsockaddr with something like this:

    typedef union {
        struct sockaddr sa;
        struct sockaddr_in sa_in;
    #ifdef HAVE_IPX
        struct sockaddr_ipx sa_ipx;
    #endif
        /* ... and maybe IPv6, sockaddr_storage, etc. too */
    } qsockaddr;

In the absence of a solution like that, we shouldn't blindly "fix the build"
without proper testing - if Quakespasm is making that sort of OS-specific
assumption, getting it to compile successfully on a particular kernel is
no guarantee that it'll work correctly, or fail without crashing, or for that
matter avoid having security vulnerabilities.

If what you're trying to achieve is to increase "proportion of Architecture:any
packages that compile" statistics, I wouldn't object to setting
Architecture: linux-any (or linux-any,kfreebsd-any with reasonable kFreeBSD
testing). I don't think it's to anyone's benefit to publish packages that
compile, have not been tested, and have a significant chance of not working.

    S



-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to