diff options
author | Bryan Drewery <bdrewery@FreeBSD.org> | 2014-09-30 16:22:05 +0000 |
---|---|---|
committer | Bryan Drewery <bdrewery@FreeBSD.org> | 2014-09-30 16:22:05 +0000 |
commit | 9576bda6137e0b862682abb07840ea1da57f104b (patch) | |
tree | 7d8babfa14cfeff32d5fe0bcb1ca2735cecd0652 /CHANGES | |
parent | 04b3cf366b9858a3f23aee1b6323bd40d4521871 (diff) |
If either of OSVERSION or UNAME_r is improperly set when building in a
jail/chroot, a number of unexpected errors can occur.
1. autotools fixup may not run when needed. This could be avoided by always
running it [PR 177980, 177403].
2. Not having UNAME_r set will cause many unknown
errors. Many ports use OSREL (derived from UNAME_r) to determine the name
of files. This is usually also due to the port build itself using uname -r
to derive filenames or 'built for' messages. [PR 192449, 191943] Without
having these sanity checks it is very easy for users to get into
situations where "everything worked" until they touch a certain port that
reads uname(1) output or OSVERSION. It has always been necessary to define
all of the UNAME_ vars and OSVERSION (or have a proper sys/param.h
present), but many users do not know this.
Remove the fallback on the kernel for kern.osreldate as it easily gets the
answer wrong.
I have added sanity checks to ensure OSVERSION==OSREL==UNAME_r as these are the
most critical vars to have set properly.
Differential Revision: https://reviews.freebsd.org/D869
PR: 177980, 177403, 192449, 191943
Reviewed by: antoine, bapt, gjb
With hat: portmgr
Notes
Notes:
svn path=/head/; revision=369644
Diffstat (limited to 'CHANGES')
-rw-r--r-- | CHANGES | 30 |
1 files changed, 30 insertions, 0 deletions
@@ -10,6 +10,36 @@ in the release notes and/or placed into UPDATING. All ports committers are allowed to commit to this file. +20140930: +AUTHOR: bdrewery@FreeBSD.org + + Building ports in a chroot or jail have always required a particular + environment be setup. This was not clear though and the ports framework + did not enforce it. These requirements are: + 1. Either a SRC_BASE/sys/sys/param.h, or /usr/include/sys/param.h be + present with the __FreeBSD_version_ number of the target system, + or OSVERSION be set in the environment. Lack of these would fallback + on kern.osreldate before, which is no longer the case. + 2. UNAME_r,UNAME_v,UNAME_s all must be set for the target system. + + Not having these values in sync will now cause the build to error until it is + resolved. + + Setting these in the environment can be done via your own wrapper scripts, + or /etc/login.conf (along with cap_mkdb /etc/login.conf) or + via /etc/make.conf using appropriate values. Note that OSVERSION is redundant + if a proper param.h is in the environment: + + OSVERSION+= 1100036 + UNAME_ENV+= OSVERSION=${OSVERSION} + UNAME_ENV+= UNAME_s=FreeBSD + UNAME_ENV+= UNAME_r=11.0-CURRENT + UNAME_ENV+= UNAME_v="${UNAME_s} ${UNAME_r}" + .MAKEFLAGS: ${UNAME_ENV} + MAKE_ENV+= ${UNAME_ENV} + CONFIGURE_ENV+= ${UNAME_ENV} + SCRIPTS_ENV+= ${UNAME_ENV} + 20140922: AUTHOR: bapt@FreeBSD.org |