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: