* [gentoo-portage-dev] PATCH: Make lchown a no-op rather than aliasing to chown on Darwin (#98827) @ 2005-07-18 3:13 Jason Stubbs 2005-07-19 14:27 ` [gentoo-portage-dev] PATCH: Only use lchown on symlinks (#98827) Jason Stubbs 0 siblings, 1 reply; 2+ messages in thread From: Jason Stubbs @ 2005-07-18 3:13 UTC (permalink / raw To: gentoo-portage-dev [-- Attachment #1.1: Type: text/plain, Size: 595 bytes --] http://bugs.gentoo.org/show_bug.cgi?id=98827 Author: Jason Stubbs Portage presently alters permissions of the target of a symlink rather than the symlink itself on Darwin. As well as the possibility that the target's permissions are modified incorrectly, there is also the case that the symlink points somewhere on the live filesystem or doesn't point anywhere at all. The former case will is definately incorrect and the latter case will cause portage to fail with a traceback. Making lchown a no-op should fix all these cases without any regressions. -- Jason Stubbs [-- Attachment #1.2: 98827_darwin_noop_lchown.patch --] [-- Type: text/x-diff, Size: 550 bytes --] diff -uNr portage-stable/pym/portage_data.py portage-fixed/pym/portage_data.py --- portage-stable/pym/portage_data.py 2005-05-15 19:20:58.000000000 +0900 +++ portage-fixed/pym/portage_data.py 2005-07-18 11:27:09.096800056 +0900 @@ -16,8 +16,9 @@ os.environ["XARGS"]="xargs -r" elif ostype == "Darwin": userland="Darwin" - os.environ["XARGS"]="xargs" - lchown=os.chown + os.environ["XARGS"]="xargs" + def lchown(*pos_args, **key_args): + pass elif ostype in ["FreeBSD","OpenBSD"]: userland="BSD" os.environ["XARGS"]="xargs" [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 2+ messages in thread
* [gentoo-portage-dev] PATCH: Only use lchown on symlinks (#98827) 2005-07-18 3:13 [gentoo-portage-dev] PATCH: Make lchown a no-op rather than aliasing to chown on Darwin (#98827) Jason Stubbs @ 2005-07-19 14:27 ` Jason Stubbs 0 siblings, 0 replies; 2+ messages in thread From: Jason Stubbs @ 2005-07-19 14:27 UTC (permalink / raw To: gentoo-portage-dev [-- Attachment #1.1: Type: text/plain, Size: 432 bytes --] On Monday 18 July 2005 12:13, Jason Stubbs wrote: > http://bugs.gentoo.org/show_bug.cgi?id=98827 > > Making lchown a no-op should fix all these cases without any regressions. Marius pointed out that lchown is currently used on regular files as well as symlinks. This patch separates the usage of os.chown and lchown such that os.chown is only used on non-symlinks and lchown is only used on symlinks. -- Jason Stubbs [-- Attachment #1.2: 98827_lchown_normal_files.patch --] [-- Type: text/x-diff, Size: 1173 bytes --] --- /usr/lib/portage/pym/portage.py 2005-07-15 23:53:30.843708096 +0900 +++ portage.py 2005-07-19 00:57:43.169904000 +0900 @@ -2866,7 +2866,10 @@ return None # failure try: if didcopy: - lchown(dest,sstat[stat.ST_UID],sstat[stat.ST_GID]) + if stat.S_ISLNK(sstat[stat.ST_MODE]): + lchown(dest,sstat[stat.ST_UID],sstat[stat.ST_GID]) + else + os.chown(dest,sstat[stat.ST_UID],sstat[stat.ST_GID]) os.chmod(dest, stat.S_IMODE(sstat[stat.ST_MODE])) # Sticky is reset on chown os.unlink(src) except SystemExit, e: @@ -6739,7 +6742,7 @@ if bsd_chflags: bsd_chflags.lchflags(mydest, dflags) os.chmod(mydest,mystat[0]) - lchown(mydest,mystat[4],mystat[5]) + os.chown(mydest,mystat[4],mystat[5]) print ">>>",mydest+"/" else: #destination doesn't exist @@ -6751,7 +6754,7 @@ os.chmod(mydest,mystat[0]) if bsd_chflags: bsd_chflags.lchflags(mydest, bsd_chflags.lgetflags(mysrc)) - lchown(mydest,mystat[4],mystat[5]) + os.chown(mydest,mystat[4],mystat[5]) print ">>>",mydest+"/" outfile.write("dir "+myrealdest+"\n") # recurse and merge this directory [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2005-07-19 14:28 UTC | newest] Thread overview: 2+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2005-07-18 3:13 [gentoo-portage-dev] PATCH: Make lchown a no-op rather than aliasing to chown on Darwin (#98827) Jason Stubbs 2005-07-19 14:27 ` [gentoo-portage-dev] PATCH: Only use lchown on symlinks (#98827) Jason Stubbs
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox