summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pyanaconda/kickstart.py51
-rw-r--r--pyanaconda/packaging/__init__.py5
-rw-r--r--pyanaconda/packaging/yumpayload.py30
-rw-r--r--tests/pyanaconda_test/backend_test.py1
4 files changed, 26 insertions, 61 deletions
diff --git a/pyanaconda/kickstart.py b/pyanaconda/kickstart.py
index fff0ff25c..87231e122 100644
--- a/pyanaconda/kickstart.py
+++ b/pyanaconda/kickstart.py
@@ -31,8 +31,6 @@ import storage.iscsi
import storage.fcoe
import storage.zfcp
-from pyanaconda.packaging import NoSuchGroup
-
import glob
import iutil
import isys
@@ -58,7 +56,6 @@ from pykickstart.base import KickstartCommand
from pykickstart.constants import *
from pykickstart.errors import formatErrorMsg, KickstartError, KickstartValueError
from pykickstart.parser import KickstartParser
-from pykickstart.parser import Group as PackageGroup
from pykickstart.parser import Script as KSScript
from pykickstart.sections import *
from pykickstart.version import returnClassForVersion
@@ -1548,54 +1545,6 @@ def runTracebackScripts(scripts):
script.run("/", flags.serial)
log.info("All kickstart %%traceback script(s) have been run")
-def selectPackages(ksdata, payload):
- # If no %packages header was seen, use the installclass's default group
- # selections. This can also be explicitly specified with %packages
- # --default. Otherwise, select whatever was given (even if it's nothing).
- if not packagesSeen or ksdata.packages.default:
- # FIXME: Set default packaging selections here.
- if not packagesSeen:
- return
-
- for pkg in ksdata.packages.packageList:
- try:
- payload.selectPackage(pkg)
- except NoSuchPackage as e:
- if ksdata.packages.handleMissing == KS_MISSING_IGNORE:
- continue
-
- if errorHandler.cb(e) == ERROR_RAISE:
- sys.exit(1)
-
- ksdata.packages.groupList.insert(0, PackageGroup("Core"))
-
- for grp in ksdata.packages.groupList:
- default = False
- optional = False
-
- if grp.include == GROUP_DEFAULT:
- default = True
- elif grp.include == GROUP_ALL:
- default = True
- optional = True
-
- try:
- payload.selectGroup(grp.name, default=default, optional=optional)
- except NoSuchGroup as e:
- if ksdata.packages.handleMissing == KS_MISSING_IGNORE:
- continue
-
- if errorHandler.cb(e) == ERROR_RAISE:
- sys.exit(1)
-
- map(payload.deselectPackage, ksdata.packages.excludedList)
-
- for grp in ksdata.packages.excludedGroupList:
- try:
- payload.deselectGroup(grp.name)
- except NoSuchGroup:
- continue
-
def doKickstartStorage(storage, ksdata, instClass):
""" Setup storage state from the kickstart data """
ksdata.clearpart.execute(storage, ksdata, instClass)
diff --git a/pyanaconda/packaging/__init__.py b/pyanaconda/packaging/__init__.py
index a4b42a9f9..3645ccf6c 100644
--- a/pyanaconda/packaging/__init__.py
+++ b/pyanaconda/packaging/__init__.py
@@ -659,7 +659,6 @@ class PackagePayload(Payload):
return kernels
def payloadInitialize(storage, ksdata, payload):
- from pyanaconda.kickstart import selectPackages
from pyanaconda.threads import threadMgr
storageThread = threadMgr.get("AnaStorageThread")
@@ -668,10 +667,6 @@ def payloadInitialize(storage, ksdata, payload):
payload.setup(storage)
- # And now that we've set up the payload, we need to apply any kickstart
- # selections. This could include defaults from an install class.
- selectPackages(ksdata, payload)
-
def show_groups(payload):
#repo = ksdata.RepoData(name="anaconda", baseurl="http://cannonball/install/rawhide/os/")
#obj.addRepo(repo)
diff --git a/pyanaconda/packaging/yumpayload.py b/pyanaconda/packaging/yumpayload.py
index a3b8288ad..bf8f4060e 100644
--- a/pyanaconda/packaging/yumpayload.py
+++ b/pyanaconda/packaging/yumpayload.py
@@ -38,6 +38,7 @@
import os
import shutil
+import sys
import time
import tempfile
@@ -79,6 +80,8 @@ from pyanaconda.errors import *
from pyanaconda.packaging import NoSuchGroup, NoSuchPackage
import pyanaconda.progress as progress
+from pykickstart.constants import KS_MISSING_IGNORE
+
default_repos = [productName.lower(), "rawhide"]
from threading import Lock
@@ -1006,6 +1009,13 @@ reposdir=%s
else:
self._yum._ts_save_file = None
+ def _handleMissing(self, exn):
+ if self.data.packages.handleMissing == KS_MISSING_IGNORE:
+ return
+
+ if errorHandler.cb(exn, str(exn)) == ERROR_RAISE:
+ sys.exit(1)
+
def _applyYumSelections(self):
""" Apply the selections in ksdata to yum.
@@ -1014,7 +1024,10 @@ reposdir=%s
self._selectYumGroup("core")
for package in self.data.packages.packageList:
- self._selectYumPackage(package)
+ try:
+ self._selectYumPackage(package)
+ except NoSuchPackage as e:
+ self._handleMissing(e)
for group in self.data.packages.groupList:
default = False
@@ -1025,13 +1038,22 @@ reposdir=%s
default = True
optional = True
- self._selectYumGroup(group.name, default=default, optional=optional)
+ try:
+ self._selectYumGroup(group.name, default=default, optional=optional)
+ except NoSuchGroup as e:
+ self._handleMissing(e)
for package in self.data.packages.excludedList:
- self._deselectYumPackage(package)
+ try:
+ self._deselectYumPackage(package)
+ except NoSuchPackage as e:
+ self._handleMissing(e)
for group in self.data.packages.excludedGroupList:
- self._deselectYumGroup(group.name)
+ try:
+ self._deselectYumGroup(group.name)
+ except NoSuchGroup as e:
+ self._handleMissing(e)
self.selectKernelPackage()
diff --git a/tests/pyanaconda_test/backend_test.py b/tests/pyanaconda_test/backend_test.py
index 85b5919ee..b09ee6950 100644
--- a/tests/pyanaconda_test/backend_test.py
+++ b/tests/pyanaconda_test/backend_test.py
@@ -208,7 +208,6 @@ class BackendTest(mock.TestCase):
pyanaconda.backend.doBasePackageSelect(anaconda)
self.assertTrue(anaconda.backend.resetPackageSelections.called)
- self.assertTrue(pyanaconda.backend.kickstart.selectPackages.called)
def do_base_package_select_2_test(self):
import pyanaconda.backend