Frans Pop wrote: > Attached are two patches that implement this. > One patch is for the build system and will include two files in most D-I > initrds in a directory /.installer/: > - default_release: contains the default release to use for the _target_ > system; currently unused, but intended to replace the hardcoded > PREFERRED_DISTRIBUTION in choose-mirror which will mean one less thing > needed to update after a stable release > - udebs_source: normally contains the codename of the release from which > udebs were taken when images were built; for daily built images this > will be set to "unstable" Good design. Why put it in /.installer and not in /etc though? Here's a choose-mirror patch. (untested) -- see shy jo
Index: mirrors.h
===================================================================
--- mirrors.h (revision 47012)
+++ mirrors.h (working copy)
@@ -10,7 +10,8 @@
};
/* This is the codename of the preferred distribution; the one that the
- * current version of d-i is targeted at installing. */
+ * current version of d-i is targeted at installing. This is overridden
+ * by /.installer/default_release, unless the file is somehow missing. */
#define PREFERRED_DISTRIBUTION "lenny"
/* The two strings defined below must match the strings used in the
Index: choose-mirror.c
===================================================================
--- choose-mirror.c (revision 47012)
+++ choose-mirror.c (working copy)
@@ -4,6 +4,9 @@
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
#include "mirrors.h"
#ifdef WITH_HTTP
#include "mirrors_http.h"
@@ -138,6 +141,7 @@
int nbr_suites = sizeof(suites)/SUITE_LENGTH;
int i;
int ret = 0;
+ char buf[SUITE_LENGTH];
if (show_progress) {
debconf_progress_start(debconf, 0, 1,
@@ -166,8 +170,16 @@
suite = strdup(debconf->value);
}
else {
- continue;
+ /* Read /.installer/default_release to
+ * find the default suite to use. */
+ int i = open("/.installer/default_release", O_RDONLY);
+ if (i == -1 ||
+ read(i, buf, SUITE_LENGTH - 1) == -1 ||
+ close(i) == -1)
+ continue;
+ suite = strdup(buf);
}
+
}
else {
suite = strdup(suites[i - 1]);
@@ -180,7 +192,6 @@
free(command);
if (f != NULL) {
- char buf[SUITE_LENGTH];
if (fgets(buf, SUITE_LENGTH - 1, f)) {
if (buf[strlen(buf) - 1] == '\n')
buf[strlen(buf) - 1] = '\0';
Attachment:
signature.asc
Description: Digital signature