View | Details | Raw Unified | Return to bug 29759 | Differences between
and this patch

Collapse All | Expand All

(-)univention-system-setup/umc/js/setup/BasisPage.js (-1 / +1 lines)
 Lines 246-252    Link Here 
246
			}
246
			}
247
			if (!values.root_password) {
247
			if (!values.root_password) {
248
				var widget = this._form.getWidget('root_password');
248
				var widget = this._form.getWidget('root_password');
249
				if (!widget.required) {
249
				if (!widget.get('required')) {
250
					warnings.push(_('Root password empty. Continue?'));
250
					warnings.push(_('Root password empty. Continue?'));
251
				} // else it is invalid and will be caught in save()
251
				} // else it is invalid and will be caught in save()
252
			}
252
			}
(-)univention-system-setup/umc/js/setup/LanguagePage.js (-1 / +1 lines)
 Lines 126-132    Link Here 
126
					return this._localesDeferred.then(function(locales) {
126
					return this._localesDeferred.then(function(locales) {
127
						return array.map(ids, function(id) {
127
						return array.map(ids, function(id) {
128
							if (typeof id == "string") {
128
							if (typeof id == "string") {
129
								return { id: id, label :locales[id] };
129
								return { id: id, label: locales[id] };
130
							}
130
							}
131
							return id;
131
							return id;
132
						});
132
						});
(-)univention-system-setup/umc/js/setup/SystemRolePage.js (-2 / +1 lines)
 Lines 73-80    Link Here 
73
					{ id: 'domaincontroller_master', label: _('Domain controller master') },
73
					{ id: 'domaincontroller_master', label: _('Domain controller master') },
74
					{ id: 'domaincontroller_backup', label: _('Domain controller backup') },
74
					{ id: 'domaincontroller_backup', label: _('Domain controller backup') },
75
					{ id: 'domaincontroller_slave', label: _('Domain controller slave') },
75
					{ id: 'domaincontroller_slave', label: _('Domain controller slave') },
76
					// Disable memberserver selection: Bug #29757
76
					{ id: 'memberserver', label: _('Member server') }
77
					// { id: 'memberserver', label: _('Member server') }
78
					// { id: 'basesystem', label: _('Base system') }
77
					// { id: 'basesystem', label: _('Base system') }
79
 				]
78
 				]
80
			}, {
79
			}, {
(-)univention-system-setup/umc/python/setup/setup_script.py (-2 / +5 lines)
 Lines 361-369    Link Here 
361
	def reopen_cache(self):
361
	def reopen_cache(self):
362
		self.package_manager.reopen_cache()
362
		self.package_manager.reopen_cache()
363
363
364
	def mark_auto(self, auto, *pkgs):
365
		self.package_manager.mark_auto(auto, *pkgs)
366
364
	def commit(self, install=None, remove=None, msg_if_failed=''):
367
	def commit(self, install=None, remove=None, msg_if_failed=''):
365
		with self.noninteractive():
368
		with self.noninteractive():
366
			self.package_manager.commit(install, remove, msg_if_failed)
369
			self.package_manager.commit(install, remove, msg_if_failed=msg_if_failed)
367
370
368
	def install(self, *pkg_names):
371
	def install(self, *pkg_names):
369
		with self.noninteractive():
372
		with self.noninteractive():
 Lines 383-389    Link Here 
383
			return self.package_manager.cache[pkg_name]
386
			return self.package_manager.cache[pkg_name]
384
		except KeyError:
387
		except KeyError:
385
			self.error(_('Failed to get package for Role %s') % role_name)
388
			self.error(_('Failed to get package for Role %s') % role_name)
386
			return False
389
			return None
387
390
388
	def autoremove(self):
391
	def autoremove(self):
389
		with self.noninteractive():
392
		with self.noninteractive():
(-)univention-system-setup/usr/lib/univention-system-setup/scripts/role/10role (-6 / +4 lines)
 Lines 30-36    Link Here 
30
# License with the Debian GNU/Linux or Univention distribution in file
30
# License with the Debian GNU/Linux or Univention distribution in file
31
# /usr/share/common-licenses/AGPL-3; if not, see
31
# /usr/share/common-licenses/AGPL-3; if not, see
32
# <http://www.gnu.org/licenses/>.
32
# <http://www.gnu.org/licenses/>.
33
import sys
34
import os.path
33
import os.path
35
import shutil
34
import shutil
36
import glob
35
import glob
 Lines 89-103    Link Here 
89
88
90
		self.finish_task()
89
		self.finish_task()
91
90
91
		self.install(wanted_server_role_package)
92
		if current_server_role_package:
92
		if current_server_role_package:
93
			self.commit(install=[wanted_server_role_package], remove=[current_server_role_package])
93
			self.uninstall(current_server_role_package)
94
		else:
95
			self.commit(install=[wanted_server_role_package])
96
97
		self.finish_task()
94
		self.finish_task()
98
95
99
		# mark these packages as manually installed
96
		# mark these packages as manually installed
100
		self.install('univention-pam', 'univention-management-console')
97
		self.mark_auto(False, 'univention-pam', 'univention-management-console')
98
		self.reopen_cache()
101
99
102
		# apt-get autoremove
100
		# apt-get autoremove
103
		self.autoremove()
101
		self.autoremove()
(-)univention-lib/python/package_manager.py (-16 / +28 lines)
 Lines 309-319    Link Here 
309
			self.unlock()
309
			self.unlock()
310
310
311
	def _set_apt_pkg_config(self, options):
311
	def _set_apt_pkg_config(self, options):
312
		revert_options = {}
312
		revert_options = []
313
		for option_name, option_value in options.iteritems():
313
		for option_name, option_value in options:
314
			old_value = apt_pkg.config.get(option_name)
314
			old_value = apt_pkg.config.get(option_name)
315
			apt_pkg.config[option_name] = option_value
315
			apt_pkg.config[option_name] = option_value
316
			revert_options[option_name] = old_value
316
			revert_options.append((option_name, old_value))
317
		return revert_options
317
		return revert_options
318
318
319
	def add_hundred_percent(self):
319
	def add_hundred_percent(self):
 Lines 347-358    Link Here 
347
	@contextmanager
347
	@contextmanager
348
	def brutal_noninteractive(self):
348
	def brutal_noninteractive(self):
349
		with self.noninteractive():
349
		with self.noninteractive():
350
			options = {
350
			options = [
351
					'DPkg::Options::': '--force-overwrite',
351
				('DPkg::Options::', '--force-overwrite'),
352
					'DPkg::Options::': '--force-overwrite-dir',
352
				('DPkg::Options::', '--force-overwrite-dir'),
353
					'APT::Get::Trivial-Only': 'no',
353
				('APT::Get::Trivial-Only', 'no'),
354
					'quiet': '1',
354
				('quiet', '1'),
355
			}
355
			]
356
			revert_options = self._set_apt_pkg_config(options)
356
			revert_options = self._set_apt_pkg_config(options)
357
			try:
357
			try:
358
				yield
358
				yield
 Lines 364-375    Link Here 
364
		''' dont ever ask for user input '''
364
		''' dont ever ask for user input '''
365
		old_debian_frontend = os.environ.get('DEBIAN_FRONTEND')
365
		old_debian_frontend = os.environ.get('DEBIAN_FRONTEND')
366
		os.environ['DEBIAN_FRONTEND'] = 'noninteractive'
366
		os.environ['DEBIAN_FRONTEND'] = 'noninteractive'
367
		options = {
367
		options = [
368
				'APT::Get::Assume-Yes': 'true',
368
			('APT::Get::Assume-Yes', 'true'),
369
				'APT::Get::force-yes': 'true',
369
			('APT::Get::force-yes', 'true'),
370
				'APT::Get::AllowUnauthenticated': '1',
370
			('APT::Get::AllowUnauthenticated', '1'),
371
				'DPkg::Options::': '--force-confold',
371
			('DPkg::Options::', '--force-confold'),
372
		}
372
		]
373
		revert_options = self._set_apt_pkg_config(options)
373
		revert_options = self._set_apt_pkg_config(options)
374
		try:
374
		try:
375
			yield
375
			yield
 Lines 440-445    Link Here 
440
		for pkg in self.cache:
440
		for pkg in self.cache:
441
			yield pkg
441
			yield pkg
442
442
443
	def mark_auto(self, auto, *pkgs):
444
		'''Immediately sets packages to automatically
445
		installed (or not). Calls commit()!'''
446
		for pkg in self.get_packages(pkgs):
447
			pkg.mark_auto(auto)
448
		self.commit()
449
		self.reopen_cache()
450
443
	def mark(self, install, remove, dry_run=False):
451
	def mark(self, install, remove, dry_run=False):
444
		'''Marks packages, returns all
452
		'''Marks packages, returns all
445
		installed, removed or broken packages.
453
		installed, removed or broken packages.
 Lines 464-471    Link Here 
464
		for pkg in self.cache.get_changes():
472
		for pkg in self.cache.get_changes():
465
			if pkg.marked_install or pkg.marked_upgrade:
473
			if pkg.marked_install or pkg.marked_upgrade:
466
				to_be_installed.add(pkg.name)
474
				to_be_installed.add(pkg.name)
475
				if pkg in remove:
476
					broken.add(pkg.name)
467
			if pkg.marked_delete:
477
			if pkg.marked_delete:
468
				to_be_removed.add(pkg.name)
478
				to_be_removed.add(pkg.name)
479
				if pkg in install:
480
					broken.add(pkg.name)
469
			if pkg.is_inst_broken:
481
			if pkg.is_inst_broken:
470
				broken.add(pkg.name)
482
				broken.add(pkg.name)
471
		# some actions can change flags in other pkgs,
483
		# some actions can change flags in other pkgs,
 Lines 572-578    Link Here 
572
			pkg = self.cache[pkg_name]
584
			pkg = self.cache[pkg_name]
573
			if pkg.is_auto_removable:
585
			if pkg.is_auto_removable:
574
				self.progress_state.info(_('Deleting unneeded %s') % pkg.name)
586
				self.progress_state.info(_('Deleting unneeded %s') % pkg.name)
575
				# dont autofix. maybe some errors magically
587
				# dont auto_fix. maybe some errors magically
576
				# disappear if we just remove
588
				# disappear if we just remove
577
				# enough packages...
589
				# enough packages...
578
				pkg.mark_delete(auto_fix=False)
590
				pkg.mark_delete(auto_fix=False)

Return to bug 29759