[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#274307: partman-ext3 not available in lowmem level 2



an new polished anna.c patch
Index: anna.c
===================================================================
--- anna.c	(révision 36041)
+++ anna.c	(copie de travail)
@@ -65,20 +65,24 @@
 }
 
 static int choose_modules(di_packages *status, di_packages **packages) {
-	char *choose_modules_question;
+	char *choose_modules_question = "anna/choose_modules" ;
+	char *question_priority = "medium";
 	char *choices;
 	int package_count = 0;
-	di_package *package, *status_package, **package_array, *test_package;
-	di_slist_node *node, *node1, *node2;
-	int reverse_depend=0;
-	int lowmem=get_lowmem_level();
+	di_package *package, *status_package, **package_array;
+	di_slist_node *node, *node1;
 	bool standard_modules = true;
-	
-	if (lowmem < 2) {
-		choose_modules_question="anna/choose_modules";
-	}
-	else {
+	bool lowmem_mode = false;
+
+	/* Test lowmem level to know if packages with want_install status
+	   will be shown */
+	if ( get_lowmem_level() >= 2) {
+		lowmem_mode = true;
 		choose_modules_question="anna/choose_modules_lowmem";
+		/* force priority to show question even in a non expert mode */
+		question_priority = "high";
+		di_log (DI_LOG_LEVEL_DEBUG, 
+			"lowmem_mode, want_install status packages will be shown");
 	}
 
 	for (node = status->list.head; node; node = node->next) {
@@ -134,28 +138,6 @@
 			}
 		}
  
-		if (lowmem > 1) {
-			if (package->priority == di_package_priority_standard
-			    && ! ((di_system_package *)package)->installer_menu_item) {
-				/* get only packages which are not dependencies of other packages */
-				reverse_depend=0;
-				for (node1 = (*packages)->list.head; node1; node1 = node1->next) {
-					test_package = node1->data;
-					for (node2 = test_package->depends.head; node2; node2 = node2->next) {
-						di_package_dependency *d = node2->data;
-						if (d->ptr == package) {
-							reverse_depend=1;
-						}
-					}
-				}
-				if (reverse_depend == 0 && !
-				    ((di_system_package *)package)->kernel_version) {
-					package->status_want = di_package_status_want_unknown;
-				}
-				package->priority = di_package_priority_optional;
-			}
-		}
-
 		if (package->priority >= di_package_priority_standard) {
 			if (standard_modules || ((di_system_package *)package)->kernel_version) {
 				package->status_want = di_package_status_want_install;
@@ -184,6 +166,19 @@
 	/* Drop packages in udeb_exclude */
 	drop_excludes(*packages);
 
+	/* in lowmem mode, we add all packages in the instlist by setting
+	   status to want_unknown except those which are menu item and
+	   their dependencies (calculated by the next function) */
+	if (lowmem_mode) {
+		for (node = (*packages)->list.head; node; node = node->next) {
+			package = node->data;
+			if ( package->status_want == di_package_status_want_install &&
+			     ((di_system_package *)package)->installer_menu_item == 0) {
+				package->status_want = di_package_status_want_unknown;
+			}
+		}	  
+	}
+
 	di_system_packages_resolve_dependencies_mark_anna(*packages, subarchitecture, running_kernel);
 
 	/* Slight over-allocation, but who cares */
@@ -199,12 +194,9 @@
 	qsort(package_array, package_count, sizeof(di_package *), package_name_compare);
 	choices = list_to_choices(package_array);
 	debconf_subst(debconf, choose_modules_question, "CHOICES", choices);
-	if (lowmem < 2) {
-		debconf_input(debconf, "medium", choose_modules_question);
-	}
-	else {
-		debconf_input(debconf, "high", choose_modules_question);
-	}
+	
+	debconf_input(debconf, question_priority, choose_modules_question);
+	
 	di_free(choices);
 	di_free(package_array);
 	

Reply to: