diff --git a/client/equoTools.py b/client/equoTools.py index c2b7550f7..8765b64b1 100644 --- a/client/equoTools.py +++ b/client/equoTools.py @@ -29,8 +29,11 @@ sys.path.append('../libraries') from entropyConstants import * from outputTools import * from remoteTools import downloadData -from entropyTools import unpackGzip,compareMd5,bytesIntoHuman,convertUnixTimeToHumanTime,askquestion,getRandomNumber +from entropyTools import unpackGzip, compareMd5, bytesIntoHuman, convertUnixTimeToHumanTime, askquestion, getRandomNumber, dep_getcpv +# Logging initialization +import logTools +equoLog = logTools.LogFile(level = etpConst['equologlevel'],filename = etpConst['equologfile'], header = "[Equo]") ######################################################## #### @@ -211,6 +214,40 @@ def backupClientDatabase(): return dest return "" +######################################################## +#### +## Dependency handling functions +# + +''' + @description: matches the user chosen package name+ver, if possibile + @input atom: string + @input dbconn: database connection + @output: the package id, if found, otherwise -1 +''' +def packageMatch(atom, dbconn): + + # check for direction + strippedAtom = dep_getcpv(atom) + direction = atom[0:len(atom)-len(strippedAtom)] + + # strip tag + # strip revision + # get version + # get name + + # check for category + if (not strippedAtom.find("/")) or (len(strippedAtom.split("/")) != 2): + # we need to append category + packageCategory = "" + # FIXME: search for category + + else: + packageCategory = strippedAtom.split("/")[0] + + # query the database using category and name (without version+tag) + # strip version + ######################################################## #### ## Database Tools diff --git a/libraries/reagentTools.py b/libraries/reagentTools.py index d79bb001a..71460d0c4 100644 --- a/libraries/reagentTools.py +++ b/libraries/reagentTools.py @@ -145,11 +145,13 @@ def extractPkgData(package): print_info(yellow(" * ")+red("Getting package name/version..."),back = True) tbz2File = package package = package.split(".tbz2")[0] - package = package.split("-unstable")[0] - package = package.split("-stable")[0] - # strip revision tag - package = package.split("-tag")[0] - package = package.split("-linux-core")[0] + if package.split("-")[len(package.split("-"))-1].startswith("unstable"): + package = string.join(package.split("-unstable")[:len(package.split("-unstable"))-1],"-unstable") + if package.split("-")[len(package.split("-"))-1].startswith("stable"): + package = string.join(package.split("-stable")[:len(package.split("-stable"))-1],"-stable") + if package.split("-")[len(package.split("-"))-1].startswith("t"): + package = string.join(package.split("-t")[:len(package.split("-t"))-1],"-t") + package = package.split("-") pkgname = "" pkglen = len(package) @@ -263,7 +265,25 @@ def extractPkgData(package): # get the version of the modules kmodver = file.split("/lib/modules/")[1] kmodver = kmodver.split("/")[0] + # substitute "-" with "_" + kmodver = re.subn("-","_", kmodver) + if len(kmodver) >= 2: + kmodver = kmodver[0] + + lp = kmodver.split("-")[len(kmodver.split("-"))-1] + if lp.startswith("r"): + kname = kmodver.split("_")[len(kmodver.split("_"))-2] + kver = kmodver.split("_")[0]+"-"+kmodver.split("_")[len(kmodver.split("_"))-1] + else: + kname = kmodver.split("_")[len(kmodver.split("_"))-1] + kver = kmodver.split("_")[0] break + # validate the results above + if (kernelDependentModule): + matchatom = "linux-"+kname+"-"+kver + if (matchatom == etpData['name']+"-"+etpData['version']): + # discard + kernelDependentModule = False # add strict kernel dependency # done below @@ -274,8 +294,8 @@ def extractPkgData(package): print_info(yellow(" * ")+red("Getting package download URL..."),back = True) # Fill download relative URI if (kernelDependentModule): - etpData['versiontag'] = kmodver - versiontag = "-tag-"+etpData['versiontag'] + etpData['versiontag'] = "t"+kmodver + versiontag = "-t"+etpData['versiontag'] else: versiontag = "" etpData['download'] = etpConst['binaryurirelativepath']+etpData['name']+"-"+etpData['version']+versiontag+".tbz2" @@ -465,17 +485,8 @@ def extractPkgData(package): etpData['conflicts'].append(i) if (kernelDependentModule): - # 2.6.22-sabayon-r2 - rev = '' - lp = kmodver.split("-")[len(kmodver.split("-"))-1] - if lp.startswith("r"): - kname = kmodver.split("-")[len(kmodver.split("-"))-2] - kmodver = kmodver.split("-")[0]+"-"+kmodver.split("-")[len(kmodver.split("-"))-1] - else: - kname = kmodver.split("-")[len(kmodver.split("-"))-1] - kmodver = kmodver.split("-")[0] # add kname to the dependency - etpData['dependencies'].append("sys-kernel/linux-"+kname+"-"+kmodver) + etpData['dependencies'].append("sys-kernel/linux-"+kname+"-"+kver) # etpData['rdependencies'] # Now we need to add environmental dependencies