tech-pkg archive

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

Determining certificate directory without including openssl



I'm working on a new release for mktool. Up until this point I've simply bundled the webpki-roots crate so that the mozilla rootcerts are bundled in the binary, and this continues to be the default for users like me who just 'cargo install mktool' and use that external binary for all fetching, etc, to avoid circular dependencies.

However I want to also support users who would like to use the system certificate store. Unfortunately the pkgsrc support for this is a mess.

reqwest, the HTTP backend for mktool, uses rustls, a native Rust TLS implementation, and so I do not want to include OpenSSL. However, I do want to determine where the certificate store is so that rustls can use it.

The way that builtin.mk files are written make this impossible to do without falling foul of pkglint, i.e. the "correct" way to do this and what some packages do is:

  CHECK_BUILTIN.foo=	yes
  .include foo/builtin.mk
  CHECK_BUILTIN.foo=	no

but the settings for SSLDIR, SSLCERTS, etc are all hidden behind CHECK_BUILTIN.openssl=no.

mk/ssl.mk, which I think was an attempt to consolidate this, is no good because it defines the wrong directory, and has a warning at the top that it shouldn't be included directly.

Some packages just depend on mozilla-rootcerts and hardcode paths to ${PREFIX}/share bundle, which is just wrong for users who use native openssl.

It feels like my best option is to just ignore pkglint, include openssl builtin.mk directly, and then just pass SSL_CERT_DIR=${SSLCERTS}, but I'm not happy about breaking pkglint.

Does anyone have a plan for cleaning this up? Is there a reason why mk/ssl.mk doesn't Just Work? I think it will become more of an issue as more Rust software moves to rustls.

--
Jonathan Perkin                    pkgsrc.smartos.org
Open Source Complete Cloud   www.tritondatacenter.com


Home | Main Index | Thread Index | Old Index