2009/12/18 Jiří Paleček <[email protected]>:
> On Sat, 05 Dec 2009 05:58:59 +0100, Mike Frysinger <[email protected]>
> wrote:
>
>> On Friday 04 December 2009 20:19:13 Jiří Paleček wrote:
>>> On Fri, 04 Dec 2009 20:06:40 +0100, Mike Frysinger <[email protected]>
>>>
>>> wrote:
>>> > On Friday 04 December 2009 11:58:13 Jiri Palecek wrote:
>>> >> the makefiles install all files with executable mode by default. This
>>> >> patch
>>> >>  changes it for some of the Makefiles, that install data files, which
>>> >>  should IMHO not be executable. The change makes INSTALL_MODE decide
>>> the
>>> >>  actual mode when it is expanded inside the install rule (depending
>>> on
>>> >> $@,
>>> >>  which is the install target name).
>>> >
>>> > that's pretty fugly way to go about it.  let's go the more natural
>>> route
>>> > and
>>> > have the common code default to $(INSTALL_MODE_$@) and if that's
>>> unset,
>>> > use
>>> > the default $(INSTALL_MODE).
>>>
>>> Sorry, but I don't agree with that. This is a function-like approach
>>> which
>>> is not any less "natural" than what you propose - and it makes no
>>> demands
>>> on anyone who doesn't need it, and gives great power to those who need
>>> it.
>>
>> your solution requires non-obvious delayed evaluation that isnt
>> straightforward.  mine is explicit, unambiguous, and already in use by
>> many
>> other projects that ltp is related to.
>
> ... and weak.
>
>>> The main reason I don't like the INSTALL_MODE_$@ thing, is that eg.
>>> INSTALL_TARGETS can contain wildcards (eg. dir/*.ext), and there cannot
>>> be
>>> any such thing as $(INSTALL_MODE_dir/*.ext). You would have to enumerate
>>> all data files - or all program files - which would be a chore esp. if
>>> any
>>> of these isn't known in the makefile until "make all" is ran.
>>
>> so fix install targets to expand the globs at make time and not shell
>> time.
>> i.e. something like INSTALL_TARGETS := $(wildcard $(INSTALL_TARGETS))
>
> We do that currently, but this doesn't change the problem in any way. The
> problem is that if I am able to write
>
> INSTALL_TARGETS := 1* 2*
>
> I want to be able to specify that the files in 1* are executables and
> files in 2* are not, without having to enumerate them all. This is
> impossible with your "explicit" solution.
>
> I would be happy with something like
>
> EXECUTABLES := 1*

    I like that proposal a lot :). Maybe have an extension to the
install define that defaults to 00644 by default, but can be
overridden by an optional argument added to the define, e.g.

define generate_install_rule

$(1)INSTALL_MODE ?= 00664

ifneq ($(4),)
$(1)INSTALL_MODE := $(4)
endef

#...

endef

Some of the testcases that require CAP_CHOWN for seteuid need
different install bits than the rest. Or maybe a different method of
installation should be used here?
Thanks,
-Garrett

------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to