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