I finally got fed up of rebuilding the initrd to include new versions of udebs I was hacking on, so I bodged up something in net-retriever to allow me to just throw udebs into a reprepro archive on a local web dir and have them be used. So now I just need to build the initrd once with this included and I can preseed a location to get devel udebs from. It fits in quite nicely with apt-setup/local0 for debs to install on the target system. Patch is below. I've also thrown it onto gitorious at: https://gitorious.org/ijc-debian/net-retriever/commit/34e4eb1e972dfbcec757b815f81b7d42447dfad7 This is by no means a proper thing and apart from being a massive hack it has no support for checking the gpg sigs, release files etc. But here it is in case it is useful to someone... (this is somebodies cue to tell me there has been an easy way to do this all along...) Ian. 8<--------------- From 34e4eb1e972dfbcec757b815f81b7d42447dfad7 Mon Sep 17 00:00:00 2001 From: Ian Campbell <ijc@hellion.org.uk> Date: Sun, 19 Jan 2014 13:19:21 +0000 Subject: [PATCH] Development udeb retrieval support. Use via preseeding: d-i retriever/devel-udeb/url string http://www-int./~ijc/debian/devel-udeb or on the command line: retriever/devel-udeb/url=http://www-int./~ijc/debian/devel-udeb --- debian/changelog | 6 ++++++ debian/net-retriever.templates | 7 +++++++ net-retriever | 37 ++++++++++++++++++++++++++++++++++++- 3 files changed, 49 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index e74d768..6681e99 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +net-retriever (1.38+ijc1) UNRELEASED; urgency=low + + * Add hack to allow preseeding a URL to retrieve development udebs from. + + -- Ian Campbell <ijc@hellion.org.uk> Sun, 05 Jan 2014 12:43:24 +0000 + net-retriever (1.37) unstable; urgency=low [ Updated translations ] diff --git a/debian/net-retriever.templates b/debian/net-retriever.templates index d3da8a9..8b33adf 100644 --- a/debian/net-retriever.templates +++ b/debian/net-retriever.templates @@ -11,3 +11,10 @@ _Description: Downloading a file failed: problem with your network, or with the mirror. You can choose to retry the download, select a different mirror, or cancel and choose another installation method. + +Template: retriever/devel-udeb/url +Type:string +_Description: Additional udeb mirror for development + FOR DEVELOPMENT USE ONLY + . + No authentication of the mirror is performed. Use at your own risk. diff --git a/net-retriever b/net-retriever index 347fefc..4c2ac8f 100755 --- a/net-retriever +++ b/net-retriever @@ -16,6 +16,8 @@ db_get mirror/$protocol/hostname hostname="$RET" db_get mirror/$protocol/directory directory="$RET" +db_get retriever/devel-udeb/url +dev_url="$RET" keyring=/usr/share/keyrings/archive.gpg @@ -23,6 +25,15 @@ fetch() { fetch-url -c "${protocol}://${hostname}${directory}/$1" "$2" } +dev_fetch() { + if [ -z "$dev_url" ]; then + error "dev_fetch with no retriever/devel-udeb/url active -- something untoward is going on" + fi + + p=${1#@@devel@@} + fetch-url -c "${dev_url}/$p" "$2" +} + checkmatch() { release="$1" packages="$2" @@ -63,7 +74,17 @@ shift case "$cmd" in retrieve) - fetch "$@" + case $1 in + @@devel@@*) + log "devel: $@" + dev_fetch "$@" + ;; + *) + log "regular: $@" + fetch "$@" + ;; + esac + exit $? ;; @@ -127,6 +148,20 @@ case "$cmd" in elif [ "$ext" = .gz ]; then zcat "$Packages" >> "$1" fi + if [ -n "$dev_url" ]; then + DevelPackages="/tmp/net-retriever-$$-Devel-Packages" + log "Checking $dev_url for DevelPackages" + if dev_fetch "dists/$codename/$pkgfile" "$DevelPackages" ; then + log "Got devel Packages from dists/$codename/$pkgfile" + if [ "$ext" = '' ]; then + cat "$DevelPackages" | sed -e 's/^Filename: /&@@devel@@/g' >> "$1" + elif [ "$ext" = .gz ]; then + zcat "$DevelPackages" | sed -e 's/^Filename: /&@@devel@@/g' >> "$1" + fi + else + log "No devel Packages from dists/$codename/$pkgfile" + fi + fi ret=0 break done -- 1.7.10.4
Attachment:
signature.asc
Description: This is a digitally signed message part