On Sun, Feb 26, 2017 at 04:30:38PM +0100, Theo Buehler wrote:
> On Sun, Feb 26, 2017 at 02:33:14PM +0100, Jan Stary wrote:
> > Cleaning up /usr/obj/ before a kernel build
> > as a regular user who's in the wobj group,
> > I get the following
> > 
> >   rm: /usr/obj/usr.sbin/unbound/util/configparser.h: Permission denied
> >   rm: /usr/obj/usr.sbin/unbound/util/configparser.c: Permission denied
> >   rm: /usr/obj/usr.sbin/unbound/util/configlexer.c: Permission denied
> >   rm: /usr/obj/usr.sbin/unbound/util: Directory not empty
> >   rm: /usr/obj/usr.sbin/unbound: Directory not empty
> >   rm: /usr/obj/usr.sbin: Directory not empty
> > 
> > 
> > $ find /usr/obj/ | xargs ls -ld
> > drwxrwx---  3 build  wobj     512 Feb 26 14:19 /usr/obj/
> > drwxrwx---  3 build  wobj    2560 Feb 26 14:19 /usr/obj/usr.sbin
> > drwxrwx---  3 build  wobj    4096 Feb 26 14:19 /usr/obj/usr.sbin/unbound
> > drwxr-xr-x  2 build  wobj     512 Feb 23 20:43 
> > /usr/obj/usr.sbin/unbound/util
> > -rw-rw----  1 build  wobj  166639 Feb 23 20:43 
> > /usr/obj/usr.sbin/unbound/util/configlexer.c
> > -rw-rw----  1 build  wobj  122438 Feb 23 20:43 
> > /usr/obj/usr.sbin/unbound/util/configparser.c
> > -rw-rw----  1 build  wobj    6016 Feb 23 20:43 
> > /usr/obj/usr.sbin/unbound/util/configparser.h
> > 
> > Everything is 770 build:wobj, except the single directory
> > /usr/obj/usr.sbin/unbound/util which is 755 build:wobj.
> > 
> > This is on four different -current machines.
> > Is this intended?

Aaarrghhhh... no not this again!
;-)

> Of course it is not intended. It was discussed during the last hackathon
> and aja hunted the problem down to a quirk of install -d. We tried a fix
> in Makefile.bsd-wrapper, but it turned out to be racy, so I had to back
> it out: it could write to the src/ tree in some circumstances.

It's the kind of stupid oddities that make you loose half a day and make you
feel even more stupid than you are... best memory of Australia!

> This is what seems to be the least evil hack:

If that actually improves things, OK aja.
That bug makes me sad...

> Index: usr.sbin/unbound/Makefile.in
> ===================================================================
> RCS file: /var/cvs/src/usr.sbin/unbound/Makefile.in,v
> retrieving revision 1.20
> diff -u -p -r1.20 Makefile.in
> --- usr.sbin/unbound/Makefile.in      17 Feb 2017 18:53:31 -0000      1.20
> +++ usr.sbin/unbound/Makefile.in      26 Feb 2017 15:04:38 -0000
> @@ -408,7 +408,7 @@ _unbound.la:      libunbound_wrap.lo libunbou
>  
>  util/config_file.c:  util/configparser.h
>  util/configlexer.c:  $(srcdir)/util/configlexer.lex util/configparser.h
> -     @-if test ! -d util; then $(INSTALL) -d util; fi
> +     @-if test ! -d util; then mkdir -p util; fi
>       if test "$(LEX)" != ":"; then \
>               echo "#include \"config.h\"" > $@ ;\
>               echo "#include \"util/configyyrename.h\"" >> $@ ;\
> @@ -416,7 +416,7 @@ util/configlexer.c:  $(srcdir)/util/conf
>       fi
>  
>  util/configparser.c util/configparser.h:  $(srcdir)/util/configparser.y
> -     @-if test ! -d util; then $(INSTALL) -d util; fi
> +     @-if test ! -d util; then mkdir -p util; fi
>       $(YACC) -d -o util/configparser.c $(srcdir)/util/configparser.y
>  
>  clean:
> 

-- 
Antoine

Reply via email to