macOS: Remove flags
In particular, UF_IMMUTABLE (uchg) needs to be cleared to allow the path to be garbage-collected or optimised. See https://github.com/NixOS/nixpkgs/issues/25819. + the file from being garbage-collected.
This commit is contained in:
		
							parent
							
								
									a10951de08
								
							
						
					
					
						commit
						b5bdfdef73
					
				
					 1 changed files with 10 additions and 0 deletions
				
			
		| 
						 | 
					@ -400,6 +400,16 @@ static void canonicalisePathMetaData_(const Path & path, uid_t fromUid, InodesSe
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    checkInterrupt();
 | 
					    checkInterrupt();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if __APPLE__
 | 
				
			||||||
 | 
					    /* Remove flags, in particular UF_IMMUTABLE which would prevent
 | 
				
			||||||
 | 
					       the file from being garbage-collected. FIXME: Use
 | 
				
			||||||
 | 
					       setattrlist() to remove other attributes as well. */
 | 
				
			||||||
 | 
					    if (lchflags(path.c_str(), 0)) {
 | 
				
			||||||
 | 
					        if (errno != ENOTSUP)
 | 
				
			||||||
 | 
					            throw SysError(format("clearing flags of path ‘%1%’") % path);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    struct stat st;
 | 
					    struct stat st;
 | 
				
			||||||
    if (lstat(path.c_str(), &st))
 | 
					    if (lstat(path.c_str(), &st))
 | 
				
			||||||
        throw SysError(format("getting attributes of path ‘%1%’") % path);
 | 
					        throw SysError(format("getting attributes of path ‘%1%’") % path);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue