Summary: | sys-apps/portage-2.2.0_alpha186 with FEATURES=xattr fails with system.nfs4_acl attribute | ||
---|---|---|---|
Product: | Portage Development | Reporter: | Malte Starostik <bugs> |
Component: | Core | Assignee: | Portage team <dev-portage> |
Status: | RESOLVED FIXED | ||
Severity: | normal | Keywords: | InVCS |
Priority: | Normal | ||
Version: | 2.2 | ||
Hardware: | All | ||
OS: | Linux | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Bug Depends on: | |||
Bug Blocks: | 472632 | ||
Attachments: | Build log from sys-fs/lvm2-2.02.97-r1 |
Description
Malte Starostik
2013-07-02 12:27:46 UTC
Created attachment 352450 [details]
Build log from sys-fs/lvm2-2.02.97-r1
Just as an example, problem is not specific to sys-fs/lvm2
(In reply to Malte Starostik from comment #0) > When installing from a repository and thus $FILESDIR on NFS, doins fails. > $PORTAGE_TMPDIR and $ROOT do have proper xattr support and I'd prefer not to > simply set FEATURES=-xattr. $FILESDIR should probably be exempted from this. The error from your build log refers to PORTAGE_TMPDIR though. I see no indication that it applies to FILESDIR. > This log entry: > * doins: /mnt/portage/repo/gentoo/sys-fs/lvm2/files/dmtab does not > exist > is actually wrong: Yes, this message needs to be fixed. (In reply to Zac Medico from comment #2) > (In reply to Malte Starostik from comment #0) > > When installing from a repository and thus $FILESDIR on NFS, doins fails. > > $PORTAGE_TMPDIR and $ROOT do have proper xattr support and I'd prefer not to > > simply set FEATURES=-xattr. $FILESDIR should probably be exempted from this. > > The error from your build log refers to PORTAGE_TMPDIR though. I see no > indication that it applies to FILESDIR. Right, as /usr/lib64/portage/pym/portage/util/movefile.py :114 reads: raise OperationNotSupported("Filesystem containing file '%s' does not support extended attributes" % dest) So the error message complains about dest, while in fact in this case the exception seems to occur because the source doesn't allow reading EAs. The ebuild line leading to this is: doins "${FILESDIR}"/dmtab I'd *guess* xattr.get(src, attr) in line 109 of util/movefile.py errors out but the message in line 114 assumes it's the xattr.set() call: xattr.set(dest, attr, xattr.get(src, attr)) (In reply to Malte Starostik from comment #3) > /usr/lib64/portage/pym/portage/util/movefile.py :114 reads: > > raise OperationNotSupported("Filesystem containing file '%s' does not > support extended attributes" % dest) > > So the error message complains about dest, while in fact in this case the > exception seems to occur because the source doesn't allow reading EAs. > The ebuild line leading to this is: > > doins "${FILESDIR}"/dmtab This error in fact has nothing to do with FILESDIR. The problem is that doins copies the file to PORTAGE_TMPDIR where there is no xattr support. > I'd *guess* xattr.get(src, attr) in line 109 of util/movefile.py errors out > but the message in line 114 assumes it's the xattr.set() call: > > xattr.set(dest, attr, xattr.get(src, attr)) The message correctly refers to line 114. (In reply to Zac Medico from comment #4) > This error in fact has nothing to do with FILESDIR. The problem is that > doins copies the file to PORTAGE_TMPDIR where there is no xattr support. Well, PORTAGE_TMPDIR is /var/tmp/portage which is the same fs as / on this box. Same thing happens when /var/tmp/portage is a tmpfs (also with xattr support). # getfattr -d /var/tmp/portage/sys-fs/lvm2-2.02.97-r1/image/etc/dmtab # setfattr -n user.test -v works /var/tmp/portage/sys-fs/lvm2-2.02.97-r1/image/etc/dmtab # getfattr -d /var/tmp/portage/sys-fs/lvm2-2.02.97-r1/image/etc/dmtab getfattr: Removing leading '/' from absolute path names # file: var/tmp/portage/sys-fs/lvm2-2.02.97-r1/image/etc/dmtab user.test="works" Granted, my conclusion was wrong. It's not because the source doesn't support xattr, it's actually because it has a particular xattr, system.nfs4_acl: Changing the error message to raise OperationNotSupported("Filesystem containing file '%s' does not support extended attributes (%s)" % (dest, attr)) yields OperationNotSupported: Filesystem containing file '/var/tmp/portage/sys-fs/lvm2-2.02.97-r1/image//etc/dmtab' does not support extended attributes (system.nfs4_acl) As a workaround, you can set this in make.conf: PORTAGE_XATTR_EXCLUDE="${PORTAGE_XATTR_EXCLUDE} system.*" Confirmed, Thanks! I've fixed the error message to include the attribute name: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=c2f13f5539a08b8b4a9dc881226ed4632fbe24f8 At this point, I'm not sure whether it makes sense to exclude the entire system.* namespace. You might just want to exclude system.nfs4_* or something like that. (In reply to Zac Medico from comment #8) > I've fixed the error message to include the attribute name: > > http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit; > h=c2f13f5539a08b8b4a9dc881226ed4632fbe24f8 This is fixed in 2.1.12.12 and 2.2.0_alpha187. > At this point, I'm not sure whether it makes sense to exclude the entire > system.* namespace. You might just want to exclude system.nfs4_* or > something like that. I'm still not sure if it makes sense to change the default PORTAGE_XATTR_EXCLUDE setting. At least the error message shows which attributes are causing problems, so people can easily adjust PORTAGE_XATTR_EXCLUDE themselves as necessary. I've added system.nfs4_acl to the default PORTAGE_XATTR_EXCLUDE setting: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=c0645806fc61db76498c9ec8ccd4ba54d71eeb6a This is fixed in 2.1.13 and 2.2.0_alpha189. |