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

Bug#389430: Updated patch; make mirror/udeb/suite support multiple suites

Frans, Joey: thanks for your beedback, and sorry for the latency - I
was travelling/offline quite a bit in the past week.

Here's an updated patch that implements Joey's suggestion of extending
mirror/udeb/suite to support multiple suites. Again I've omitted the
indention of the inner loop to make it clear what has changed.

What I don't like about it:
 * I'd prefer mirror/udeb/suites to mirror/udeb/suite, but I don't think
   its a good enough reason to break an interface that's already part of
   a stable release. One option would be to deprecate the singular
   version, but support it for one more release - in the meantime we
   could use one as an alias for the other, giving precedence to the
   plural version.
 * I don't like how nested things are getting; if this is accepted,
   I'd probably want to follow up with a patch that moves some of the
   inner code into its own function.
 * It doesn't solve the issue Frans highlighted about components
   coming from separate mirrors. A proper solution for that problem
   would probably involve letting users preseed with arbitrary sets of
   sources.list style entries, meaning components can be fetched from
   multiple types of media within one installation instance. That'd
   certainly be a better paradigm, but would require much more
   invasive changes.

Index: debian/changelog
--- debian/changelog	(revision 50009)
+++ debian/changelog	(working copy)
@@ -1,3 +1,12 @@
+net-retriever (1.19) UNRELEASED-unstable; urgency=low
+  * Let mirror/udeb/suite support multiple values. Components from each
+    of these suites will be accessible by anna. In the case that a package
+    is available from multiple places, anna's current behavior is to use
+    the last one, not necessarily the one with the greatest version.
+ -- dann frazier <dannf@debian.org>  Fri, 02 Nov 2007 17:41:47 -0600
 net-retriever (1.18) unstable; urgency=low
   * Use /etc/udebs-source as the default release from which to fetch udebs.
Index: net-retriever
--- net-retriever	(revision 50009)
+++ net-retriever	(working copy)
@@ -96,7 +96,6 @@
 	rm -f "$1"
 	touch "$1"
-	# Setting codename to a suite is not very nice, but can do no harm
 	if ! db_get mirror/udeb/suite || [ -z "$RET" ]; then
 		if [ -f /etc/udebs-source ]; then
 			RET=$(cat /etc/udebs-source)
@@ -104,18 +103,19 @@
 			db_get mirror/codename
-	codename="$RET"
+	udebsuites="$RET"
-	fetch "dists/$codename/Release" "$Release" || exit $?
+	for suite in $udebsuites; do
+	fetch "dists/$suite/Release" "$Release" || exit $?
 	# If gpgv and a keyring are installed, authentication is
 	# mandatory by default.
 	if type gpgv >/dev/null && [ -f "$keyring" ]; then
 		if db_get debian-installer/allow_unauthenticated && [ "$RET" = true ]; then
 			log "Not verifying Release signature: unauthenticated mode enabled"
-			if ! fetch "dists/$codename/Release.gpg" "$Release.gpg"; then
-				error "dists/$codename/Release is unsigned."
+			if ! fetch "dists/$suite/Release.gpg" "$Release.gpg"; then
+				error "dists/$suite/Release is unsigned."
 			if ! log-output -t net-retriever --pass-stdout \
 			     gpgv --status-fd 1 --keyring "$keyring" \
@@ -143,7 +143,7 @@
 			rm -f "$Packages"
-			fetch "dists/$codename/$pkgfile" "$Packages" || continue
+			fetch "dists/$suite/$pkgfile" "$Packages" || continue
 			checkmatch "$Release" "$pkgfile" \
 				"$(md5sum "$Packages" | cut -d' ' -f1)" \
 				"$(wc -c < "$Packages" | tr -d ' ')"
@@ -156,6 +156,8 @@
+	rm -f "$Release"
+	done
 	exit $ret

Reply to: