xbps-create: set root:root if e[gu]id == st.st_e[gu]id in package files.

The rational is that packages should have proper perms to be installed
globally in a system as root, and fakeroot is useless when generating
packages with xbps-create when it's statically build.
This commit is contained in:
Juan RP 2013-03-15 09:31:15 +01:00
parent dd9cf9737b
commit 7491c0e584
2 changed files with 8 additions and 0 deletions

4
NEWS
View File

@ -1,5 +1,9 @@
xbps-0.22 (???):
* xbps-create(8): if effective user/group is the same than files being
packaged in a package, set user/group to root:root. This way we don't
have to depend in an external tool to assume proper permissions (fakeroot).
* xbps-query(8): fix segfault when showing unexistent package files.
* When checking for obsolete files in upgrades, ignore unexistent files in

View File

@ -431,6 +431,10 @@ process_entry_file(struct archive *ar,
archive_entry_set_pathname(entry, xe->file);
archive_entry_copy_stat(entry, &st);
archive_entry_copy_sourcepath(entry, p);
if (st.st_uid == geteuid())
archive_entry_set_uname(entry, "root");
if (st.st_gid == getegid())
archive_entry_set_gname(entry, "root");
if (S_ISLNK(st.st_mode)) {
len = readlink(p, buf, sizeof(buf));