summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorPanu Matilainen <pmatilai@redhat.com>2008-10-29 10:49:25 +0200
committerPanu Matilainen <pmatilai@redhat.com>2008-10-29 10:49:25 +0200
commita792c55ffae23f483121401fe4ca6724abc57bb5 (patch)
tree20117b61769bfcd54aa4d081770e01aa1c5b007c /lib
parentdaf28d3bf452a1d8daa8f5a70b860ce91b76fffd (diff)
downloadrpm-a792c55ffae23f483121401fe4ca6724abc57bb5.tar.gz
rpm-a792c55ffae23f483121401fe4ca6724abc57bb5.tar.bz2
rpm-a792c55ffae23f483121401fe4ca6724abc57bb5.zip
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...
Diffstat (limited to 'lib')
-rw-r--r--lib/rpmds.c5
-rw-r--r--lib/rpmtag.h1
2 files changed, 6 insertions, 0 deletions
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;