Chris Lumens wrote:
diff --git a/yuminstall.py b/yuminstall.py
index 13c56af..4fd4954 100644
--- a/yuminstall.py
+++ b/yuminstall.py
@@ -243,6 +243,7 @@ class AnacondaYumRepo(YumRepository):
def __init__(self, *args, **kwargs):
YumRepository.__init__(self, *args, **kwargs)
self.enablegroups = True
+ self._anacondabaseurls = []
def needsNetwork(self):
def _isURL(s):
@@ -267,6 +268,18 @@ class AnacondaYumRepo(YumRepository):
if os.path.exists("%s/packages" % cachedir):
shutil.rmtree("%s/packages" % cachedir)
+ # needed to store nfs: repo url that yum doesn't know
+ @property
+ def anacondabaseurls(self):
+ return (self._anacondabaseurls or self.baseurl or
+ (type(self.mirrorlist) is type([]) and self.mirrorlist) or
+ [self.mirrorlist])
+
+
+ @anacondabaseurls.setter
+ def anacondabaseurls(self, value):
+ self._anacondabaseurls = value
+
class YumSorter(yum.YumBase):
def _transactionDataFactory(self):
return SplitMediaTransactionData()
I think adding the URL to the AnacondaRepo object is a good idea, but I
don't really like a couple things here. First, we only used the
@whatever.setter syntax in one other place, and we got rid of it because
it was the only place we did that. So you should probably use the other
property syntax here for consistency.
Second, the name should probably be something a little more readable -
anacondaBaseURL would be the obvious choice, but something shorter might
be nice too.
Third, the getter is a pretty gross conditional. mirrorlist is never a
list - not in anaconda, and not in yum. If it is ever a list, we're
going to hit tracebacks in a bunch of places. So you can kill that part
of the test and instead make it something like:
return self._anacondabaseurls or self.baseurl or [self.mirrorlist]
Incidentally since you control what self._anacondabaseurls gets set to,
you could add a check to the setter to make sure it's always set to a
list.
@@ -475,6 +488,9 @@ class AnacondaYum(YumSorter):
return
# add default repos
+ anacondabaseurl = (self.anaconda.methodstr or
+ "cdrom:%s" % (self.anaconda.mediaDevice))
+ anacondabasepaths = self.anaconda.id.instClass.getPackagePaths(anacondabaseurl)
for (name, uri) in self.anaconda.id.instClass.getPackagePaths(self._baseRepoURL).items():
rid = name.replace(" ", "")
See my previous comment about the format of the method parameter when
referring to a CD device.
Anyway, is this a valid assumption here? Have you ensured that you can
never get to this point without your two choices being (1) having a
methodstr, or (2) installing from a CD/DVD? In the code right now, it's
very possible to have neither of these be the case, since in
configBaseURL you can hit that situation. What that means is that you
didn't provide any method=/repo= parameter on the command line AND that
you are not installing from media. So, basically you're booting off
boot.iso and using the default mirror list.
My reading is that in this case (and only in this case) _baseRepoURL is
None and we leave
the function few lines above. If _baseRepoURL is not None, the
assumption is valid
- we either have methodstr, or local media was found.
I don't like that it is so obscure and dependent on configBaseURL, but
actually it is the only way we
can know here that the method is implicit local media (and so
anacondabaseurl should be cdrom:XXX).
unless we want to set methodstr to cdrom:XXX in configBasrURL if
methodstr was None and local media was
found there, but it didn't seem "correct" to me.
Radek
_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/anaconda-devel-list