--- /dev/null
+#!/usr/bin/env python
+# vi: encoding=utf-8 ts=8 sts=4 sw=4 et
+
+import sys, os, string, urllib, re
+
+sys.path.insert(0, os.environ['HOME']+'/pld-ftp-admin/modules')
+import config
+from ftptree import Pkg, FtpTree
+
+def direxists(path):
+ try:
+ os.stat(config.value['ftp_dir']+'/'+path)
+ except OSError, (errno, errmsg):
+ return False
+ else:
+ return True
+
+if len(sys.argv) < 3:
+ print "Not enough parameters given"
+ print "remove.py tree package1 [package2...]"
+ sys.exit(1)
+
+if not direxists(sys.argv[1]):
+ print config.value['ftp_dir']+'/'+sys.argv[1] + " does not exist"
+ sys.exit(1)
+
+tree=FtpTree(sys.argv[1])
+
+tree.mark4removal(sys.argv[2:])
+tree.removepkgs()
+
self.tree=tree
self.name=name
self.loaded=False
- self.marked=False
+ self.marked4removal=False
+ self.marked4moving=True
self.load()
def __repr__(self):
return self.name
- def mark(self):
- if not self.marked:
- self.tree.markedpkgs.append(self)
+ def mark4moving(self):
+ if not self.marked4moving:
+ self.tree.marked4moving.append(self)
+ self.marked4moving=True
+
+ def mark4removal(self):
+ if not self.marked4removal:
+ self.tree.marked4removal.append(self)
+ self.marked4removal=True
def load(self):
f=open(self.tree.basedir+'/SRPMS/.metadata/'+self.name+'.src.rpm.info', 'r')
f.close()
self.loaded=True
if self.info.has_key('move'):
- self.mark()
+ self.mark4moving()
def writeinfo(self):
f=open(self.tree.basedir+'/SRPMS/.metadata/'+name+'.src.rpm.info', 'w')
def __init__(self, tree, loadall=False):
self.basedir=config.value['ftp_dir']+'/'+tree
self.loadedpkgs={}
- self.markedpkgs=[]
+ self.marked4removal=[]
+ self.marked4moving=[]
def filter_pkgs(pkg):
if not pkg[-13:]=='.src.rpm.info':
return None
self.__rmolderfromsrc()
self.__rmotherfromdst(dsttree)
- for pkg in self.markedpkgs:
+ for pkg in self.marked4moving:
pkg.move(dsttree)
- def markpkgs(self, wannabepkgs):
+ def removepkgs(self):
+ for pkg in self.marked4removal:
+ pkg.remove()
+
+ def mark4removal(self, wannabepkgs):
+ self.__mark4something(wannabepkgs, Pkg.mark4removal)
+
+ def mark4moving(self, wannabepkgs):
+ self.__mark4something(wannabepkgs, Pkg.mark4moving)
+
+
+ # Internal functions below
+
+ def __mark4something(self, wannabepkgs, markfunction):
def chopoffextension(pkg):
found=pkg.find('.src.rpm')
if found==-1:
if pkgname in self.pkgnames:
if not pkgname in self.loadedpkgs.keys():
self.loadedpkgs[pkgname]=Pkg(pkgname, self)
- self.loadedpkgs[pkgname].mark()
+ markfunction(self.loadedpkgs[pkgname])
else:
perror(pkgname+" was not found in source tree")
bailoutonerror()
+
def __checkbuild(self):
#f=urllib.urlopen('http://ep09.pld-linux.org/~builderth/queue.txt')
f=open('queue.txt')
elif i[0]=='b':
requests[id]=requests[id]+i
f.close()
- for pkg in self.markedpkgs:
+ for pkg in self.marked4moving:
for bid in pkg.build.keys():
if requests.has_key(bid) and not requests[bid].find('?') == -1:
perror("Building of package %s (buildid %s) not finished" % (pkg,bid))
return None
return filter(filter_other_pkgs, tree.pkgnames)
self.find_other_pkgs=find_other_pkgs
- for pkg in self.markedpkgs:
+ for pkg in self.marked4moving:
otherpkgnames=find_other_pkgs(pkg, dsttree)
curarchs=[]
missingarchs=[]
return None
return filter(filter_older_pkgs, self.find_other_pkgs(pkg, self))
- for pkg in self.markedpkgs:
+ for pkg in self.marked4moving:
olderpkgnames=find_older_pkgs(pkg)
for i in olderpkgnames:
Pkg(i, self).remove()
def __rmotherfromdst(self, dsttree):
- for pkg in self.markedpkgs:
+ for pkg in self.marked4moving:
pkgnames=self.find_other_pkgs(pkg, dsttree)
for i in pkgnames:
Pkg(i, dsttree).remove()