Index: bin/emerge =================================================================== --- bin/emerge +++ bin/emerge 2006-07-21 16:50:52.000000000 -0700 @@ -1026,6 +1026,8 @@ else: mydep["/"]=edepend["DEPEND"] mydep[myroot]=edepend["RDEPEND"] + if portage_const.PORTAGE_CYGWIN: + mydep[myroot]=mydep[myroot] + " " + edepend["DEPEND"] if not self.select_dep("/",mydep["/"],myparent=mp,myuse=myuse): return 0 if not self.select_dep(myroot,mydep[myroot],myparent=mp,myuse=myuse): @@ -1353,6 +1355,7 @@ portage.db[splitski[1]]["merge"].append(splitski) mygraph.delnode(mycurkey) for x in dolist: + if x == "/" and x != portage.root: continue for y in portage.db[x]["merge"]: retlist.append(y) return retlist @@ -2462,6 +2465,8 @@ procount=0 for x in string.split(portage.settings["CONFIG_PROTECT"]): if os.path.isdir(x): + if not x.startswith(portage_const.EPREFIX): + continue a=commands.getstatusoutput("cd "+x+"; find . -iname '._cfg????_*'") if a[0]!=0: print " "+red("*")+" error scanning",x Index: pym/portage.py =================================================================== --- pym/portage.py +++ pym/portage.py 2006-07-21 16:46:56.000000000 -0700 @@ -1051,7 +1051,9 @@ try: # XXX: Should depend on root? - self.mygcfg=getconfig("/"+MAKE_CONF_FILE,allow_sourcing=True) + ## Yes, Should depend on root!! (npac) + global root + self.mygcfg=getconfig(root+MAKE_CONF_FILE,allow_sourcing=True) if self.mygcfg == None: self.mygcfg = {} except SystemExit, e: @@ -2313,7 +2315,7 @@ kwargs = actionmap[mydo]["args"] phase_retval = spawn(actionmap[mydo]["cmd"] % mydo, mysettings, debug=debug, logfile=logfile, **kwargs) if phase_retval == os.EX_OK: - if mydo == "install": + if mydo == "install" and not portage_const.PORTAGE_CYGWIN: mycommand = " ".join([MISC_SH_BINARY, "install_qa_check"]) qa_retval = spawn(mycommand, mysettings, debug=debug, logfile=logfile, **kwargs) if qa_retval: @@ -2620,7 +2622,7 @@ mysettings["LOG_PF"] != mysettings["PF"]: mysettings["LOG_PF"] = mysettings["PF"] mysettings["LOG_COUNTER"] = \ - str(db[myroot]["vartree"].dbapi.get_counter_tick_core("/")) + str(db[myroot]["vartree"].dbapi.get_counter_tick_core(root)) if not logging_enabled: writemsg("!!! Permission issues with PORT_LOGDIR='%s'\n" % mysettings["PORT_LOGDIR"]) @@ -4839,7 +4841,8 @@ writemsg("Uncaught handled exception: %(exception)s\n" % {"exception":str(e)}) raise - myret=doebuild(myebuild,"depend","/",self.mysettings,dbkey=mydbkey,tree="porttree") + # Use root, instead of "/" (npac) + myret=doebuild(myebuild,"depend",root,self.mysettings,dbkey=mydbkey,tree="porttree") if myret: portage_locks.unlockfile(mylock) self.lock_held = 0 @@ -6482,6 +6485,9 @@ return returnme # XXX Fix this +# Cygwin hack (npac) +if portage_const.PORTAGE_ROOT and portage_const.PORTAGE_CYGWIN: + os.environ['ROOT'] = portage_const.PORTAGE_ROOT if os.environ.has_key("ROOT"): root=os.environ["ROOT"] if not len(root): Index: pym/portage_const.py =================================================================== --- pym/portage_const.py +++ pym/portage_const.py 2006-07-21 16:42:53.000000000 -0700 @@ -57,6 +57,9 @@ MANIFEST2_HASH_FUNCTIONS = ["SHA1","SHA256","RMD160"] MANIFEST2_IDENTIFIERS = ["AUX","MISC","DIST","EBUILD"] +## Cygwin hack (npac) +PORTAGE_ROOT = "" +PORTAGE_CYGWIN = False # =========================================================================== # END OF CONSTANTS -- END OF CONSTANTS -- END OF CONSTANTS -- END OF CONSTANT # =========================================================================== Index: pym/portage_data.py =================================================================== --- pym/portage_data.py +++ pym/portage_data.py 2006-07-21 16:43:20.000000000 -0700 @@ -12,7 +12,7 @@ ostype=os.uname()[0] lchown = None -if ostype=="Linux" or ostype.lower().endswith("gnu"): +if ostype=="Linux" or ostype.lower().endswith("gnu") or ostype.lower().startswith("cygwin"): userland="GNU" os.environ["XARGS"]="xargs -r" elif ostype == "Darwin": Index: pym/portage_locks.py =================================================================== --- pym/portage_locks.py +++ pym/portage_locks.py 2006-07-21 16:44:22.000000000 -0700 @@ -160,7 +160,14 @@ if myfd == None: myfd = os.open(lockfilename, os.O_WRONLY,0660) unlinkfile = 1 - locking_method(myfd,fcntl.LOCK_UN) + if portage_const.PORTAGE_CYGWIN: + ## Unlocking does not work on Cygwin + try: + locking_method(myfd,fcntl.LOCK_UN) + except: + pass + else: + locking_method(myfd,fcntl.LOCK_UN) except SystemExit, e: raise except Exception, e: Index: pym/portage_util.py =================================================================== --- pym/portage_util.py +++ pym/portage_util.py 2006-07-21 16:45:47.000000000 -0700 @@ -3,6 +3,7 @@ # $Id: /var/cvsroot/gentoo-src/portage/pym/portage_util.py,v 1.11.2.6 2005/04/23 07:26:04 jstubbs Exp $ from portage_exception import PortageException, FileNotFound, OperationNotPermitted +import portage_const import sys,string,shlex,os,errno try: @@ -633,7 +634,18 @@ pass else: raise - os.rename(self.name, self._real_name) + ## Cygwin fix - cannot rename file if it exists on Windows + ## Gives permission denied error + if portage_const.PORTAGE_CYGWIN: + try: + if os.path.exists(self._real_name): + pass + os.rename(self.name, self._real_name) + except: + #print "Failed to move file " + self.name + " to " + self._real_name + pass + else: + os.rename(self.name, self._real_name) finally: # Make sure we cleanup the temp file # even if an exception is raised.