Michael Tokarev <m...@tls.msk.ru> writes:

> 18.12.2010 00:12, Michael Tokarev wrote:
> []
>> Capabilities (libcap2) is a tiny library (on my i386
>> userspace it's just a 13Kb shared object), it has _no_
>> external dependencies whatsoever - neither at build nor
>> at run time (it does not use perl for one)
>
> And this is, in turn, incorrect.  libcap2 does use
> perl at build time, in order to create list of
> currently defined capabilities from linux/capability.h.
> Two trivial inline perl scripts which are not
> architecture-dependent.

$(GPERF_OUTPUT): cap_names.list.h
        perl -e 'print "struct __cap_token_s { const char *name; int index; 
};\n%{\nconst struct __cap_token_s *__cap_lookup_name(const char *, unsigned 
int);\n%}\n%%\n"; while ($$l = <>) { $$l =~ s/[\{\"]//g; $$l =~ s/\}.*// ; 
print $$l; }' < $< | gperf --ignore-case --language=ANSI-C --readonly 
--null-strings --global-table --hash-function-name=__cap_hash_name 
--lookup-function-name="__cap_lookup_name" -c -t -m20 $(INDENT) > $@

cap_names.list.h: Makefile $(KERNEL_HEADERS)/linux/capability.h
        @echo "=> making $@ from $(KERNEL_HEADERS)/linux/capability.h"
        perl -e 'while ($$l=<>) { if ($$l =~ /^\#define[ \t](CAP[_A-Z]+)[ 
\t]+([0-9]+)\s+$$/) { $$tok=$$1; $$val=$$2; $$tok =~ tr/A-Z/a-z/; print 
"{\"$$tok\",$$val},\n"; } }' $(KERNEL_HEADERS)/linux/capability.h | fgrep -v 0x 
> $@

First one becomes

    sed -e '1i strict __cap...' -e 's/[{"]//g' -e 's/}.*//'

Second one becomes

    sed -rne 'y/A-Z/a-z/' -e 
's/^#define[[:space:]]+(cap[_a-z]+)[[:space:]]+([[:digit:]]+)[[:space:]]+$/{"\1",\2},/p'

Untested, may contain GNUisms.  YMMV, etc.


------------------------------------------------------------------------------
Lotusphere 2011
Register now for Lotusphere 2011 and learn how
to connect the dots, take your collaborative environment
to the next level, and enter the era of Social Business.
http://p.sf.net/sfu/lotusphere-d2d
_______________________________________________
Lxc-devel mailing list
Lxc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lxc-devel

Reply via email to