Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 30 Jun 2016 15:22:29 -0700
From:      "Simon J. Gerraty" <sjg@juniper.net>
To:        Bryan Drewery <bdrewery@freebsd.org>
Cc:        <arch@freebsd.org>, <sjg@juniper.net>
Subject:   Re: Build work 11.0 plans status update
Message-ID:  <2094.1467325349@kaos.jnpr.net>
In-Reply-To: <84851e7b-60b9-b3dc-7410-45dc2b3ba1c1@FreeBSD.org>
References:  <201605270001.u4R01mKT087678@repo.freebsd.org> <fb451ad5-da16-cdbe-6106-8b67705600b3@FreeBSD.org> <20160527182543.GB4025@FreeBSD.org> <0d639d52-3ed4-a86d-3d45-b93c02939ce7@FreeBSD.org> <99714.1467316694@kaos.jnpr.net> <84851e7b-60b9-b3dc-7410-45dc2b3ba1c1@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Bryan Drewery <bdrewery@freebsd.org> wrote:
> Maybe.  I'd rather not introduce something like this since it is invoked
> from sys.mk.  I really hate adding more executions.  To bad there is no

Yes but you need only do it once - ie. if .MAKE.LEVEL=3D=3D0
the result isn't going to change.

.if ${.MAKE.LEVEL} =3D=3D 0
x !=3D test -w ${OBJROOT:U${MAKEOBJDIRPREFIX:U/usr/obj}}/.; echo $$?
if ${x} !=3D 0 && defined(WITH_AUTO_OBJ)
# they explicitly asked for it and we cannot do it
.error cannot write ${OBJROOT:U${MAKEOBJDIRPREFIX:U/usr/obj}} fix that or =
set WITHOUT_AUTO_OBJ
.endif
.endif

> # The above test is not really enough either since we want to test every
> component of the directory which is what mkdir -p is already doing in
> auto.obj.mk...

If you are allowed to write /usr/obj/.
you should be able to write anything below it.

Of course using a OBJROOT private to the tree, avoids such problems.

SRCTOP=3D/some/where/src
OBJROOT=3D/some/where/obj

which is what we use....

> What seems more efficient to me is to default AUTO_OBJ to on and then
> have auto.obj.mk consider an EPERM to just disable the feature for some
> cases.  The 'for some cases' is where it becomes murky since we want to
> force auto obj on for things like buildworld/DIRDEPS regardless of
> writability as those should error and stop.  Building a user or in a
> subdir (not DIRDEPS) may be fine to ignore the EPERM and build in source
> tree since that's a historical behavior.

auto.obj.mk will already throw an error if it cannot do what it was
asked to.

I like brutal simplicity.

That is much safer than soldiering on dribbling all over src for an hour
when that is not what the user wanted.





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?2094.1467325349>