Proper way to detect kernel / userland sources?

Dmitry Marakasov amdmi3 at
Tue Nov 9 21:13:27 UTC 2010

* Lev Serebryakov (lev at wrote:

>   I'm  preparing port which depends both on kernel source (it contains
> kernel module) and userland sources (it needs GEOM sources).
>   I   see,   that  ports  with  kernel  modules  check  for  hardcoded
>   "/usr/src/sys/Makefile".  But it doesn't look good: sources could be
>   perfectly valid, but placed in other directory!
>   Is  here  any  standerd  variable  which  should  be used instead of
>   hardcoded "/usr/src"?

Oh, that reminded me. For now, there's no other way than to hardcode
/usr/src (however some ports make that overridable). I've though
of that too and made a patch that has been lying here for some time
without purpose. As this topic is risen, I'd like to discuss it,
possibly improve and push into Mk.

- Introduces SRC_BASE which defaults to /usr/src and may be used in
  ports to access system sources
- Introduces USE_SRC (to be set in ports that require kernel source)
  that checks whether system sources are installed and whether their
  version corresponds to system version (overridable)
- Corrects a typo

While here, I'm worried about the fact that /usr/src is used as a
possible source for OSVERSION. Currently, in presence of freebsd-update,
it's really likely that system sources are out-of sync with installed
system, so getting OSVERSION from /usr/src should likely be removed.
osreldate is enough fallback if /usr/include/sys/param.h is absent
for some reason.

Dmitry Marakasov   .   55B5 0596 FF1E 8D84 5F56  9510 D35A 80DD F9D2 F77D
amdmi3 at  ..:  jabber: amdmi3 at

More information about the freebsd-ports mailing list