Index: univention-system-setup/umc/js/setup/BasisPage.js =================================================================== --- univention-system-setup/umc/js/setup/BasisPage.js (Revision 37753) +++ univention-system-setup/umc/js/setup/BasisPage.js (Arbeitskopie) @@ -246,7 +246,7 @@ } if (!values.root_password) { var widget = this._form.getWidget('root_password'); - if (!widget.required) { + if (!widget.get('required')) { warnings.push(_('Root password empty. Continue?')); } // else it is invalid and will be caught in save() } Index: univention-system-setup/umc/js/setup/LanguagePage.js =================================================================== --- univention-system-setup/umc/js/setup/LanguagePage.js (Revision 37753) +++ univention-system-setup/umc/js/setup/LanguagePage.js (Arbeitskopie) @@ -126,7 +126,7 @@ return this._localesDeferred.then(function(locales) { return array.map(ids, function(id) { if (typeof id == "string") { - return { id: id, label :locales[id] }; + return { id: id, label: locales[id] }; } return id; }); Index: univention-system-setup/umc/js/setup/SystemRolePage.js =================================================================== --- univention-system-setup/umc/js/setup/SystemRolePage.js (Revision 37753) +++ univention-system-setup/umc/js/setup/SystemRolePage.js (Arbeitskopie) @@ -73,8 +73,7 @@ { id: 'domaincontroller_master', label: _('Domain controller master') }, { id: 'domaincontroller_backup', label: _('Domain controller backup') }, { id: 'domaincontroller_slave', label: _('Domain controller slave') }, - // Disable memberserver selection: Bug #29757 - // { id: 'memberserver', label: _('Member server') } + { id: 'memberserver', label: _('Member server') } // { id: 'basesystem', label: _('Base system') } ] }, { Index: univention-system-setup/umc/python/setup/setup_script.py =================================================================== --- univention-system-setup/umc/python/setup/setup_script.py (Revision 37753) +++ univention-system-setup/umc/python/setup/setup_script.py (Arbeitskopie) @@ -361,9 +361,12 @@ def reopen_cache(self): self.package_manager.reopen_cache() + def mark_auto(self, auto, *pkgs): + self.package_manager.mark_auto(auto, *pkgs) + def commit(self, install=None, remove=None, msg_if_failed=''): with self.noninteractive(): - self.package_manager.commit(install, remove, msg_if_failed) + self.package_manager.commit(install, remove, msg_if_failed=msg_if_failed) def install(self, *pkg_names): with self.noninteractive(): @@ -383,7 +386,7 @@ return self.package_manager.cache[pkg_name] except KeyError: self.error(_('Failed to get package for Role %s') % role_name) - return False + return None def autoremove(self): with self.noninteractive(): Index: univention-system-setup/usr/lib/univention-system-setup/scripts/role/10role =================================================================== --- univention-system-setup/usr/lib/univention-system-setup/scripts/role/10role (Revision 37753) +++ univention-system-setup/usr/lib/univention-system-setup/scripts/role/10role (Arbeitskopie) @@ -30,7 +30,6 @@ # License with the Debian GNU/Linux or Univention distribution in file # /usr/share/common-licenses/AGPL-3; if not, see # . -import sys import os.path import shutil import glob @@ -89,15 +88,14 @@ self.finish_task() + self.install(wanted_server_role_package) if current_server_role_package: - self.commit(install=[wanted_server_role_package], remove=[current_server_role_package]) - else: - self.commit(install=[wanted_server_role_package]) - + self.uninstall(current_server_role_package) self.finish_task() # mark these packages as manually installed - self.install('univention-pam', 'univention-management-console') + self.mark_auto(False, 'univention-pam', 'univention-management-console') + self.reopen_cache() # apt-get autoremove self.autoremove() Index: univention-lib/python/package_manager.py =================================================================== --- univention-lib/python/package_manager.py (Revision 37753) +++ univention-lib/python/package_manager.py (Arbeitskopie) @@ -309,11 +309,11 @@ self.unlock() def _set_apt_pkg_config(self, options): - revert_options = {} - for option_name, option_value in options.iteritems(): + revert_options = [] + for option_name, option_value in options: old_value = apt_pkg.config.get(option_name) apt_pkg.config[option_name] = option_value - revert_options[option_name] = old_value + revert_options.append((option_name, old_value)) return revert_options def add_hundred_percent(self): @@ -347,12 +347,12 @@ @contextmanager def brutal_noninteractive(self): with self.noninteractive(): - options = { - 'DPkg::Options::': '--force-overwrite', - 'DPkg::Options::': '--force-overwrite-dir', - 'APT::Get::Trivial-Only': 'no', - 'quiet': '1', - } + options = [ + ('DPkg::Options::', '--force-overwrite'), + ('DPkg::Options::', '--force-overwrite-dir'), + ('APT::Get::Trivial-Only', 'no'), + ('quiet', '1'), + ] revert_options = self._set_apt_pkg_config(options) try: yield @@ -364,12 +364,12 @@ ''' dont ever ask for user input ''' old_debian_frontend = os.environ.get('DEBIAN_FRONTEND') os.environ['DEBIAN_FRONTEND'] = 'noninteractive' - options = { - 'APT::Get::Assume-Yes': 'true', - 'APT::Get::force-yes': 'true', - 'APT::Get::AllowUnauthenticated': '1', - 'DPkg::Options::': '--force-confold', - } + options = [ + ('APT::Get::Assume-Yes', 'true'), + ('APT::Get::force-yes', 'true'), + ('APT::Get::AllowUnauthenticated', '1'), + ('DPkg::Options::', '--force-confold'), + ] revert_options = self._set_apt_pkg_config(options) try: yield @@ -440,6 +440,14 @@ for pkg in self.cache: yield pkg + def mark_auto(self, auto, *pkgs): + '''Immediately sets packages to automatically + installed (or not). Calls commit()!''' + for pkg in self.get_packages(pkgs): + pkg.mark_auto(auto) + self.commit() + self.reopen_cache() + def mark(self, install, remove, dry_run=False): '''Marks packages, returns all installed, removed or broken packages. @@ -464,8 +472,12 @@ for pkg in self.cache.get_changes(): if pkg.marked_install or pkg.marked_upgrade: to_be_installed.add(pkg.name) + if pkg in remove: + broken.add(pkg.name) if pkg.marked_delete: to_be_removed.add(pkg.name) + if pkg in install: + broken.add(pkg.name) if pkg.is_inst_broken: broken.add(pkg.name) # some actions can change flags in other pkgs, @@ -572,7 +584,7 @@ pkg = self.cache[pkg_name] if pkg.is_auto_removable: self.progress_state.info(_('Deleting unneeded %s') % pkg.name) - # dont autofix. maybe some errors magically + # dont auto_fix. maybe some errors magically # disappear if we just remove # enough packages... pkg.mark_delete(auto_fix=False)