On Wed, Oct 12, 2016 at 10:30:26PM +0200, Theo Buehler wrote:
> Several people noticed that a few files from libstdc++-v3 in /usr/obj
> end up being owned by root, namely:
>
> c++config.h gthr.h gthr-single.h gthr-posix.h gthr-tpf.h gthr-default.h
>
> The problem is that they are regenerated by root when beforeinstall does
> 'make includes' directly from /usr/src/includes. A cheap fix is to call
> make includes from the main Makefile, which was already fixed to
> de-escalate the prereq step.
>
> Fixing that directly in gnu/lib/libstdc++-v3/Makefile would also be
> possible, but it seems to be quite a bit messier since one would have to
> touch quite a few targets to do the proper de-escalation.
>
> With that, /usr/obj contains no root-owned files after 'make build'.
>
Here's an improved version of the patch that doesn't interrupt
'make release' by asking for BUILDUSER's password because of trying
to do 'sh -c ${BUILDUSER}' as BUILDUSER.
Index: Makefile
===================================================================
RCS file: /var/cvs/src/Makefile,v
retrieving revision 1.129
diff -u -p -r1.129 Makefile
--- Makefile 6 Oct 2016 18:56:17 -0000 1.129
+++ Makefile 13 Oct 2016 00:19:13 -0000
@@ -57,7 +57,11 @@ includes:
beforeinstall:
cd ${.CURDIR}/etc && exec ${MAKE} DESTDIR=${DESTDIR} distrib-dirs
cd ${.CURDIR}/etc && exec ${MAKE} DESTDIR=${DESTDIR} install-mtree
- cd ${.CURDIR}/include && exec ${MAKE} includes
+ @if [[ `id -u` -ne 0 ]]; then \
+ cd ${.CURDIR}/include && exec ${MAKE} includes; \
+ else \
+ exec ${MAKE} includes; \
+ fi
afterinstall:
.ifndef NOMAN