From a792c55ffae23f483121401fe4ca6724abc57bb5 Mon Sep 17 00:00:00 2001 From: Panu Matilainen Date: Wed, 29 Oct 2008 10:49:25 +0200 Subject: Start adding POSIX 1.e draft file capability support for real - Parse %caps() from spec filelists, making best-guess verification of capability string sanity by passing to cap_from_text() - The posix draft specifies capability export presentation through cap_copy_ext() which would be fine, except that we don't have support for arrays of binary data. So we simply store the textual representation of the capabilities in a string array which we do have. - Only add capability tag on packages which actually have capabilities to avoid unnecessary header bloat. - Add a new rpmlib() dependency for file capabilities, packages relying on file capabilities wont work correctly unless the capabilities are set. To be fully correct, support for on-filesystem file capabilities should be checked at runtime, as this depends on kernel versions and such... --- lib/rpmds.c | 5 +++++ lib/rpmtag.h | 1 + 2 files changed, 6 insertions(+) (limited to 'lib') diff --git a/lib/rpmds.c b/lib/rpmds.c index 383c21f9e..14c5aa586 100644 --- a/lib/rpmds.c +++ b/lib/rpmds.c @@ -1034,6 +1034,11 @@ static const struct rpmlibProvides_s rpmlibProvides[] = { { "rpmlib(FileDigests)", "4.4.90-1", ( RPMSENSE_EQUAL), N_("file checksum digest algorithm is per package configurable") }, +#ifdef WITH_CAP + { "rpmlib(FileCaps)", "4.6.1-1", + ( RPMSENSE_EQUAL), + N_("support for POSIX.1e file capabilities") }, +#endif { NULL, NULL, 0, NULL } }; diff --git a/lib/rpmtag.h b/lib/rpmtag.h index b66cbabae..efcbd0088 100644 --- a/lib/rpmtag.h +++ b/lib/rpmtag.h @@ -280,6 +280,7 @@ typedef enum rpmTag_e { RPMTAG_ORIGFILENAMES = 5007, /* s[] extension */ RPMTAG_LONGFILESIZES = 5008, /* l[] */ RPMTAG_LONGSIZE = 5009, /* l */ + RPMTAG_FILECAPS = 5010, /* s[] */ RPMTAG_FIRSTFREE_TAG /*!< internal */ } rpmTag; -- cgit v1.2.3