tech-pkg archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: kerberos is the new sqlite: disable, force mit, or ?



> Date: Tue, 03 Sep 2024 20:15:48 -0400
> From: Greg Troxel <gdt%lexort.com@localhost>
> 
> It turns out that pgsql16, rather than
> 
>   .  include "../../mk/krb5.buildlink3.mk"
> 
> has
> 
>   # This should be ../mk/krb5.buildlink3.mk. However, that may select
>   # security/heimdal as the Kerberos implementation, and it doesn't have
>   # gss_store_cred_into().
>   .  include "../../security/mit-krb5/buildlink3.mk"

FYI, gss_store_cred_into has been added to Heimdal, but it isn't out
in a release yet.

https://github.com/heimdal/heimdal/issues/451
https://github.com/heimdal/heimdal/commit/e0bb9c10cad0fd98245caecf8af8fca855b2df49

> I see multiple possible paths:
> 
>   1) Decide that with variant APIs, krb is messy, and few use it, so
>   disable gssapi by default in all packages.
> 
>   1A) Like 1, but disable it in most, especially curl.

It would be a pretty severe regression to remove what is almost
certainly the most widely deployed single-sign-on system on the
planet.  (Even TNF uses it internally, for web services.)

>   2) Decide that if even one package needs an API in mit-krb5 but not
>   heimdal, that krb5.buildlink3.mk should only allow mit-krb5.  Decide
>   that any base lib that includes any heimdal lib is not allowed as
>   builtin.  This is more or less what we did for sqlite3.
> 
>   3) Don't use base heimdal but patch in the new API to pkgsrc heimdal.
> 
>   4) Do nothing, leaving people who want to run qgis/postgis to do step
>   1 locally, and risking an increasing number of official binaries being
>   broken.

I don't think any of these answers is right.  Mixing gssapi
implementations is doomed to failure.  Instead, pkgsrc should have
some way to request krb5/gssapi extensions.  And if the implementation
chosen can't satisfy them, the package build should noisily fail.
Builders can change the _treewide_ krb5/gssapi implementation choice
in order to make this consistent.

For example, maybe something like:

GSSAPI_REQD+=	credstoreext
.include "../../mk/krb5.buildlink3.mk"


Home | Main Index | Thread Index | Old Index