would “$(INSTALL) -d -m 775 util” be a less evil hack?
> On Feb 26, 2017, at 7:51 AM, Theo Buehler <t...@math.ethz.ch> wrote:
>
> On Sun, Feb 26, 2017 at 04:37:57PM +0100, Antoine Jacoutot wrote:
>> 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!
>
> same here :)
>
>>> This is what seems to be the least evil hack:
>>
>> If that actually improves things, OK aja.
>> That bug makes me sad...
>
> Indeed...
>
> Before I commit that, I would appreciate if Jan or jmc could confirm
> that it actually works for their 'make build' setup, too.
>
> This thing had way too many failed attempts already.
>
>>
>>> 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