updating /sys/sys

Gary Aitken freebsd at dreamchaser.org
Wed Jan 1 18:06:34 UTC 2014


On 01/01/14 03:41, Erich Dollansky wrote:
> Hi,
> 
> On Wed, 01 Jan 2014 01:04:40 -0700
> Gary Aitken <freebsd at dreamchaser.org> wrote:
> 
>> On 12/31/13 20:47, Erich Dollansky wrote:
>>
>>>> I just used freebsd-update to upgrade from 9.1 to 9.2. Everything
>>>> seemed to go properly, but if I look at /sys/sys all of the .h
>>>> files say something like: * $FreeBSD: release/9.0.0/sys/sys/cons.h
>>>> 196506 2009-08-24 10:53:30Z ed $
>>>>
>>>> /etc/freebsd-update looks like:
>>>>
>>>> ... Components src world kernel IgnorePaths ...
>>>>
>>>> Why aren't they updated?
>>>
>>> why should they? They define the 'interface' to the implementation.
>>> It is most important that these interfaces do change as little as
>>> possible especially in a STABLE version.
>>
>> If I think about it, it seems that what you say should be the case.
>> However, if you download the src tarball and do some diffs, you will
>> see that many of them are in fact different; how significant those
>> differences are, I'm not sure.  I hit this problem trying to build
>> sysutils/lsof quite a while ago.  It still doesn't build for me after
>> upgrading to 9.2.
> 
> I never used a 9.X, so I do not know. If .h files are changed - I mean
> not just the comments - it is not possible to run old binaries from the
> version before. But binaries from 9.0 should run on 9.2.
>>
>>> They can change when you update to 10 and they can change all the
>>> while on CURRENT but not on RELEASE versions like 8 and 9.
>>
>> Maybe that *should* be the situation, but it is not in actuality.
> 
> It happens for parts which under development.
>>
>>>> What's the best way to get them updated?
>>>
>>> You should have the current version if nothing is mentioned in
>>> UPDATING.
>>
>> I ended up getting them via the src.txz tarball:
>> ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/9.2-RELEASE/
>>
>> Moving the 9.0 /usr/src/sys/sys directory to the side and symlinking
>> to the usr/src/sys/sys directory from the 9.2 tarball allows it to
>> compile.
> 
> Sounds strange. Every RELEASE must compile. At least the world has to
> compile. It is a different story for a custom build kernel. There is
> the chance that you select a combination of options which will not
> result in a working kernel. Sometimes, this is documented, sometimes,
> it is not.

The release compiles with it's own (9.2-RELEASE) /usr/src/sys/sys.
The problem is that /usr/src is not updated under some conditions,
apparently, when freebsd-update is run, even if freebsd-update includes
"src" in the "Components" line.

Hmmm.  When I first installed 9.0, I don't think I had any source installed,
but /usr/src/sys is part of the base install.  This would be consistent
with the state of my system, which has a stubbed out directory tree for
everything in /usr/src except for /usr/src/sys.  The default for 
"StrictComponents" is no, and when it goes to determine whether or not to 
update it makes the decision based on whether or not more than 50% of the 
files that are supposed to be there are actually there.  I suspect the whole 
of src is considerably more than double /usr/src/sys, so it would decide not 
to update.

Unfortunately, it is not possible to rerun freebsd-update on the same
version to correct a problem such as this.

I am not sure whether /usr/src/sys is considered part of the "world" or
"kernel" components or not; if it is not, then the above would explain
the behavior.  If it is considered part of "world" or "kernel", then it
would not explain it.

Gary


More information about the freebsd-questions mailing list