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

Reply via email to