Here's a patch that implements a slight different approach. The idea
is to allow a user to specify an 'override suite' which is used as an
alternate/preferred suite for udebs.

The reason I chose this approach is its consistency with other aspects
of our derivative distribution, namely its layered approach.
We take an unmodified subset of a stable release, and pair it with
additional suites that include additional packages and some packages
of greater versions (e.g., backports). When we need to create a custom
version of a udeb (lkdi pieces, usually), we can simply add it to the
preseeded override suite and not have to make any changes to the
"pure-debian" main/debian-installer suite.

The changes are minimal, but because it wraps existing code in a loop,
the extra indention inflates the size of the patch. For review
purposes, I'll include the patch without indenting the inner loop[1],
and also with proper indention[2].

[1]
Index: net-retriever
===================================================================
--- net-retriever       (revision 49871)
+++ net-retriever       (working copy)
@@ -18,6 +18,8 @@
 directory="$RET"
 db_get mirror/$protocol/proxy
 proxy="$RET"
+db_get mirror/udeb/override_suite
+override_suite="$RET"
 if [ -n "$proxy" ]; then
        if [ "$protocol" = http ]; then
                export http_proxy="$proxy"
@@ -107,15 +109,16 @@
        codename="$RET"
 
        Release="/tmp/net-retriever-$$-Release"
-       fetch "dists/$codename/Release" "$Release" || exit $?
+       for suite in "$codename" "$override_suite"; 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"
                else
-                       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."
                        fi
                        if ! log-output -t net-retriever --pass-stdout \
                             gpgv --status-fd 1 --keyring "$keyring" \
@@ -143,7 +146,7 @@
                        fi
                        Packages="/tmp/net-retriever-$$-Packages"
                        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 +159,7 @@
                        break
                done
        done
+       done
        exit $ret
        ;;
 


[2]
Index: net-retriever
===================================================================
--- net-retriever       (revision 49871)
+++ net-retriever       (working copy)
@@ -18,6 +18,8 @@
 directory="$RET"
 db_get mirror/$protocol/proxy
 proxy="$RET"
+db_get mirror/udeb/override_suite
+override_suite="$RET"
 if [ -n "$proxy" ]; then
        if [ "$protocol" = http ]; then
                export http_proxy="$proxy"
@@ -107,53 +109,55 @@
        codename="$RET"
 
        Release="/tmp/net-retriever-$$-Release"
-       fetch "dists/$codename/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"
+       for suite in "$codename" "$override_suite"; 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"
+                       else
+                               if ! fetch "dists/$suite/Release.gpg" 
"$Release.gpg"; then
+                                       error "dists/$suite/Release is 
unsigned."
+                               fi
+                               if ! log-output -t net-retriever --pass-stdout \
+                                    gpgv --status-fd 1 --keyring "$keyring" \
+                                    --ignore-time-conflict \
+                                    "$Release.gpg" "$Release" | 
read_gpg_status; then
+                                       error "Bad signature on $Release."
+                               fi
+                       fi
                else
-                       if ! fetch "dists/$codename/Release.gpg" 
"$Release.gpg"; then
-                               error "dists/$codename/Release is unsigned."
-                       fi
-                       if ! log-output -t net-retriever --pass-stdout \
-                            gpgv --status-fd 1 --keyring "$keyring" \
-                            --ignore-time-conflict \
-                            "$Release.gpg" "$Release" | read_gpg_status; then
-                               error "Bad signature on $Release."
-                       fi
+                       log "Not verifying Release signature: gpgv not 
available"
                fi
-       else
-               log "Not verifying Release signature: gpgv not available"
-       fi
 
-       ARCH=`udpkg --print-architecture`
-       components="`grep ^Components: $Release | cut -d' ' -f2-`"
-       ret=1
-       if [ -z "$components" ]; then
-               error "No components listed in $Release."
-       fi
-       for comp in $components; do
-               for ext in '.gz' ''; do
-                       
pkgfile="$comp/debian-installer/binary-$ARCH/Packages$ext"
-                       line=`grep $pkgfile\$ $Release 2>/dev/null`
-                       if [ $? != 0 ]; then
-                               continue
-                       fi
-                       Packages="/tmp/net-retriever-$$-Packages"
-                       rm -f "$Packages"
-                       fetch "dists/$codename/$pkgfile" "$Packages" || continue
-                       checkmatch "$Release" "$pkgfile" \
-                               "$(md5sum "$Packages" | cut -d' ' -f1)" \
-                               "$(wc -c < "$Packages" | tr -d ' ')"
-                       if [ "$ext" = '' ]; then
-                               cat "$Packages" >> "$1"
-                       elif [ "$ext" = .gz ]; then
-                               zcat "$Packages" >> "$1"
-                       fi
-                       ret=0
-                       break
+               ARCH=`udpkg --print-architecture`
+               components="`grep ^Components: $Release | cut -d' ' -f2-`"
+               ret=1
+               if [ -z "$components" ]; then
+                       error "No components listed in $Release."
+               fi
+               for comp in $components; do
+                       for ext in '.gz' ''; do
+                               
pkgfile="$comp/debian-installer/binary-$ARCH/Packages$ext"
+                               line=`grep $pkgfile\$ $Release 2>/dev/null`
+                               if [ $? != 0 ]; then
+                                       continue
+                               fi
+                               Packages="/tmp/net-retriever-$$-Packages"
+                               rm -f "$Packages"
+                               fetch "dists/$suite/$pkgfile" "$Packages" || 
continue
+                               checkmatch "$Release" "$pkgfile" \
+                                       "$(md5sum "$Packages" | cut -d' ' -f1)" 
\
+                                       "$(wc -c < "$Packages" | tr -d ' ')"
+                               if [ "$ext" = '' ]; then
+                                       cat "$Packages" >> "$1"
+                               elif [ "$ext" = .gz ]; then
+                                       zcat "$Packages" >> "$1"
+                               fi
+                               ret=0
+                               break
+                       done
                done
        done
        exit $ret



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to