Quantcast

PORTS_MODULES in src.conf: make: don't know how to make instclean. Stop

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

PORTS_MODULES in src.conf: make: don't know how to make instclean. Stop

David Wolfskill
Huh??!?

At least as far back as 06 Jan (based on the mtime of /etc/src.conf), I
had set up src.conf to read:

PORTS_MODULES=x11/nvidia-driver

as I use that driver on my laptop.

Further (as some of you may recall), I maintain private mirrors of the
src & ports repositories on the laptop, which I re-sync overnight.  Then,
each morning, I update the /usr/ports working directory, and I also
update the /usr/src working copies -- on each of the 4 slices that's
bootable:

* slice 1 -- stable/8 i386 (gcc)
* slice 2 -- stable/9 i386 (clang)
* slice 3 -- stable/9 i386 (gcc)
* slice 4 -- head i386 (gcc)

and boot each slice in turn and perform an in-place source update.

Through symlinks, /usr/local is actually shared among all 4
environments, so I build & update installed ports immediately after
smoke-testing the newly-built stable/8.

By setting up src.conf as above, the nvidia.ko module gets built for
each environment; since the module is stored in /boot/modules, it
remains specific to each environment.

This has been working rather uneventfully for some time... until this
morning.

Yesterday, I built & booted:

FreeBSD g1-227.catwhisker.org 8.3-STABLE FreeBSD 8.3-STABLE #419 237918M: Sun Jul  1 04:14:48 PDT 2012     [hidden email]:/common/S1/obj/usr/src/sys/CANARY  i386

After updating /usr/src to r237994 this morning, the buildworld &
buildkernel proceeded without incident.  installkernel got through
the usual base kernel install and started in on the PORTS_MODULES
stuff, when BLAM!  I was rather surprised to see:

...
kldxref /boot/kernel
cd ${PORTSDIR:-/usr/ports}/x11/nvidia-driver; PATH=/usr/obj/usr/src/tmp/legacy/usr/sbin:/usr/obj/usr/src/tmp/legacy/usr/bin:/usr/obj/usr/src/tmp/legacy/usr/games:/usr/obj/usr/src/tmp/usr/sbin:/usr/obj/usr/src/tmp/usr/bin:/usr/obj/usr/src/tmp/usr/games:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin  SRC_BASE=/usr/src  OSVERSION=803500  WRKDIRPREFIX=/usr/obj/usr/src/sys/CANARY /usr/obj/usr/src/make.i386/make -B instclean all
make: don't know how to make instclean. Stop
*** Error code 2

Stop in /common/S1/obj/usr/src/sys/CANARY.
*** Error code 1

Stop in /usr/src.
*** Error code 1

Stop in /usr/src.


Errr... (I repeat): Huh??!?

I circumvented this for now by moving /etc/src.conf aside, but that
rather defeats the purpose of having created it. :-/

As a bit of a reality check (at that point), I ran "portmaster
x11/nvidia-driver", and that ran to completion successfully, but
another attempt at "make installkernel" (before I moved src.conf
aside) still failed in the same way.


It turns out that I encountered precisely the same mode of failure
for each of the 4 slices this morning.  (Each had been running
@r237918M; each was updated to r237994.  The "M" suffix on the GRN
is merely for my local changes to newvers.sh to make it VCS-agnostic,
rather than cluttering it with code for various VCSen that seem to
be of interest to some folks.)

A quick look for the word "instclean" in /usr/share/mk, /usr/ports/Mk,
and /usr/src came up empty.

So:  What's going on?  What is "instclean" supposed to do for us?  Was
this an error on my part?  What sort of evasive action should I be taking
to avoid a recurrence (while still keeping my machines up-to-date)?

Thanks....

Peace,
david
--
David H. Wolfskill [hidden email]
Depriving a girl or boy of an opportunity for education is evil.

See http://www.catwhisker.org/~david/publickey.gpg for my public key.

attachment0 (203 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: PORTS_MODULES in src.conf: make: don't know how to make instclean. Stop

Benjamin Kaduk-2
On Mon, 2 Jul 2012, David Wolfskill wrote:

> Huh??!?
>
> At least as far back as 06 Jan (based on the mtime of /etc/src.conf), I
> had set up src.conf to read:
>
> PORTS_MODULES=x11/nvidia-driver

"Don't do that."
PORTS_MODULES is documented to belong in make.conf, not src.conf.

That said, dougb has tweaked the behavior of PORTS_MODULES recently, so
you could look more carefully at those changes. (r237090 and r237958, both
have been merged back to 7/8/9.)

-Ben Kaduk
_______________________________________________
[hidden email] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[hidden email]"
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: PORTS_MODULES in src.conf: make: don't know how to make instclean. Stop

dougb
On 07/02/2012 09:25, Benjamin Kaduk wrote:

> On Mon, 2 Jul 2012, David Wolfskill wrote:
>
>> Huh??!?
>>
>> At least as far back as 06 Jan (based on the mtime of /etc/src.conf), I
>> had set up src.conf to read:
>>
>> PORTS_MODULES=x11/nvidia-driver
>
> "Don't do that."
> PORTS_MODULES is documented to belong in make.conf, not src.conf.

It works fine in src.conf. Please point to the documentation you speak
of so that it can be fixed.

> That said, dougb has tweaked the behavior of PORTS_MODULES recently

Yes, this is my mistake, I'll fix it.


--

    This .signature sanitized for your protection


_______________________________________________
[hidden email] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[hidden email]"
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: PORTS_MODULES in src.conf: make: don't know how to make instclean. Stop

Benjamin Kaduk-2
On Mon, 2 Jul 2012, Doug Barton wrote:

> On 07/02/2012 09:25, Benjamin Kaduk wrote:
>> On Mon, 2 Jul 2012, David Wolfskill wrote:
>>
>>> Huh??!?
>>>
>>> At least as far back as 06 Jan (based on the mtime of /etc/src.conf), I
>>> had set up src.conf to read:
>>>
>>> PORTS_MODULES=x11/nvidia-driver
>>
>> "Don't do that."
>> PORTS_MODULES is documented to belong in make.conf, not src.conf.
>
> It works fine in src.conf. Please point to the documentation you speak
> of so that it can be fixed.

PORTS_MODULES is listed in make.conf.5, and is not listed in src.conf.5.
>From src.conf:
      The only purpose of src.conf is to control the compilation of the FreeBSD
      source code, which is usually located in /usr/src.
This would seem to not include Ports code (which is usually located in
/usr/ports).

I'm pretty sure it's come up in the past that src.conf should only be used
for those build options explicitly documented in it, and not other
settings, and the implementation may be subject to change (so that other
settings would no longer work) in the future.  If you would like me to go
search for those previous discussions, I can try, but my reading of these
man pages is that it's pretty clear-cut.

-Ben
_______________________________________________
[hidden email] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[hidden email]"
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: PORTS_MODULES in src.conf: make: don't know how to make instclean. Stop

dougb
In reply to this post by dougb
The problem is fixed now. This time I tested build and install with the
same code. :(

Sorry for the breakage,

Doug

--

    This .signature sanitized for your protection


_______________________________________________
[hidden email] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[hidden email]"
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: PORTS_MODULES in src.conf: make: don't know how to make instclean. Stop

David Wolfskill
On Mon, Jul 02, 2012 at 03:21:07PM -0700, Doug Barton wrote:
> The problem is fixed now. This time I tested build and install with the
> same code. :(

Ah; I see.  Cool; thanks! :-)

> Sorry for the breakage,
> ...

Eh; let's hope that's the worst thing that happens for the rest of the
month, shall we?  :-)  (If it is, we will truly be blessed!)

Peace,
david
--
David H. Wolfskill [hidden email]
Depriving a girl or boy of an opportunity for education is evil.

See http://www.catwhisker.org/~david/publickey.gpg for my public key.

attachment0 (203 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: PORTS_MODULES in src.conf: make: don't know how to make instclean. Stop

dougb
In reply to this post by Benjamin Kaduk-2
On 07/02/2012 13:41, Benjamin Kaduk wrote:

> On Mon, 2 Jul 2012, Doug Barton wrote:
>
>> On 07/02/2012 09:25, Benjamin Kaduk wrote:
>>> On Mon, 2 Jul 2012, David Wolfskill wrote:
>>>
>>>> Huh??!?
>>>>
>>>> At least as far back as 06 Jan (based on the mtime of /etc/src.conf), I
>>>> had set up src.conf to read:
>>>>
>>>> PORTS_MODULES=x11/nvidia-driver
>>>
>>> "Don't do that."
>>> PORTS_MODULES is documented to belong in make.conf, not src.conf.
>>
>> It works fine in src.conf. Please point to the documentation you speak
>> of so that it can be fixed.
>
> PORTS_MODULES is listed in make.conf.5, and is not listed in src.conf.5.

I see. That's a side effect of the wacky way in which src.conf.5 is
built, combined with the fact that no one has yet migrated the things in
make.conf.5 that predated the creation of src.conf altogether. There are
numerous other examples, including KERNCONF and MODULES_OVERRIDE that I
have in my src.conf just off the top of my head.

Fixing this would be a great task for a doc person who wanted to get
more exposure to src stuff. :)

> From src.conf:
>      The only purpose of src.conf is to control the compilation of the
> FreeBSD
>      source code, which is usually located in /usr/src.
> This would seem to not include Ports code (which is usually located in
> /usr/ports).

I think the first "usually" is the one that is more relevant. However,
that sentence is badly phrased to start with. It should probably say
something like, "The /etc/src.conf file is used for make options that
are exclusive to the build process for the base OS." Since PORTS_MODULES
falls into that category (even though the code lives in ports, it's part
of the base build process), it qualifies.

Also, and much more importantly, putting it in src.conf actually works,
which you probably should have checked first before commenting. :)

> I'm pretty sure it's come up in the past that src.conf should only be
> used for those build options explicitly documented in it, and not other
> settings

Unfortunately, there has been confusion on this point in the past, I
agree. However it's important to note that "the documentation" is not
necessarily the final appeal to authority, since "we" wrote the
documentation, and "we" get it wrong sometimes. :)

Doug

--

    This .signature sanitized for your protection


_______________________________________________
[hidden email] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[hidden email]"
Loading...