Package: debootstrap
Version: 0.3.1.3
Severity: wishlist
Tags: patch

The attached patch adds support for the Ubuntu breezy distribution,
which I've now set up to be determined mostly dynamically (the buildd
variant is still hardcoded because we haven't set up Build-Essential
extraoverrides yet).

The breezy script is very similar to sid, although differs in a few
places:

--- sid 2005-06-16 09:48:23.000000000 +0100
+++ breezy      2005-06-26 18:39:44.000000000 +0100
@@ -14,7 +14,16 @@
       #  ^^ should be getting debconf here somehow maybe
       base="$(get_debs Priority: important)"
     elif doing_variant buildd; then
-      base="$(get_debs Build-Essential: yes)"
+      # TODO: add Build-Essential: yes extraoverrides
+      #base="$(get_debs Build-Essential: yes)"
+
+      add () { if [ "$ARCH" = "$1" ]; then eval "$2=\"\$$2 $3\""; fi; }
+
+      base="apt binutils cpio cpp cpp-4.0 dpkg-dev g++ g++-4.0 gcc gcc-4.0 
${LIBC6}-dev libdb4.2 libgdbm3 libstdc++6-4.0-dev linux-kernel-headers make 
patch perl perl-modules"
+
+      add ia64 "libunwind7-dev"
+      add sparc "lib64gcc1"
+      add sparc "libc6-dev-sparc64"
     fi
 }
 
@@ -68,7 +77,8 @@
     in_target /sbin/ldconfig
 
     DEBIAN_FRONTEND=noninteractive
-    export DEBIAN_FRONTEND
+    DEBCONF_NONINTERACTIVE_SEEN=true
+    export DEBIAN_FRONTEND DEBCONF_NONINTERACTIVE_SEEN
 
     baseprog=0
     bases=7

Thanks,

-- 
Colin Watson                                       [EMAIL PROTECTED]
diff -Nru /tmp/eN8i04Oph4/debootstrap-0.3.1.3/Makefile 
/tmp/xLNDAjxtQ2/debootstrap-0.3.1.3ubuntu1/Makefile
--- /tmp/eN8i04Oph4/debootstrap-0.3.1.3/Makefile        2005-06-16 
13:28:52.000000000 +0100
+++ /tmp/xLNDAjxtQ2/debootstrap-0.3.1.3ubuntu1/Makefile 2005-06-26 
19:02:52.000000000 +0100
@@ -36,6 +36,7 @@
        install -o root -g root -m 0644 warty.buildd $(DSDIR)/scripts/
        install -o root -g root -m 0644 hoary $(DSDIR)/scripts/
        install -o root -g root -m 0644 hoary.buildd $(DSDIR)/scripts/
+       install -o root -g root -m 0644 breezy $(DSDIR)/scripts/
        install -o root -g root -m 0644 functions $(DSDIR)/
 
        install -o root -g root -m 0755 debootstrap.8 
$(DESTDIR)/usr/share/man/man8/
diff -Nru /tmp/eN8i04Oph4/debootstrap-0.3.1.3/breezy 
/tmp/xLNDAjxtQ2/debootstrap-0.3.1.3ubuntu1/breezy
--- /tmp/eN8i04Oph4/debootstrap-0.3.1.3/breezy  1970-01-01 01:00:00.000000000 
+0100
+++ /tmp/xLNDAjxtQ2/debootstrap-0.3.1.3ubuntu1/breezy   2005-06-26 
18:39:44.000000000 +0100
@@ -0,0 +1,161 @@
+mirror_style release
+download_style apt
+finddebs_style from-indices
+variants - buildd
+
+work_out_debs () {
+    LIBC6=libc6
+    if [ "$ARCH" = "alpha" -o "$ARCH" = "ia64" ]; then LIBC6="libc6.1"; fi
+
+    required="$(get_debs Priority: required)"
+
+    if doing_variant -; then 
+      #required="$required $(get_debs Priority: important)"
+      #  ^^ should be getting debconf here somehow maybe
+      base="$(get_debs Priority: important)"
+    elif doing_variant buildd; then
+      # TODO: add Build-Essential: yes extraoverrides
+      #base="$(get_debs Build-Essential: yes)"
+
+      add () { if [ "$ARCH" = "$1" ]; then eval "$2=\"\$$2 $3\""; fi; }
+
+      base="apt binutils cpio cpp cpp-4.0 dpkg-dev g++ g++-4.0 gcc gcc-4.0 
${LIBC6}-dev libdb4.2 libgdbm3 libstdc++6-4.0-dev linux-kernel-headers make 
patch perl perl-modules"
+
+      add ia64 "libunwind7-dev"
+      add sparc "lib64gcc1"
+      add sparc "libc6-dev-sparc64"
+    fi
+}
+
+first_stage_install () {
+    extract $required
+
+    mkdir -p "$TARGET/var/lib/dpkg"
+    : >"$TARGET/var/lib/dpkg/status"
+    : >"$TARGET/var/lib/dpkg/available"
+
+    setup_etc
+    if [ ! -e "$TARGET/etc/fstab" ]; then
+        echo '# UNCONFIGURED FSTAB FOR BASE SYSTEM' > "$TARGET/etc/fstab"
+        chown 0.0 "$TARGET/etc/fstab"; chmod 644 "$TARGET/etc/fstab"
+    fi
+
+    setup_devices
+
+    x_feign_install () {
+        local pkg="$1"
+        local deb="$(debfor $pkg)"
+        local ver="$(
+            ar -p "$TARGET/$deb" control.tar.gz | zcat |
+                tar -O -xf - control ./control 2>/dev/null |
+                sed -ne 's/^Version: *//Ip' | head -n 1
+        )"
+
+        mkdir -p "$TARGET/var/lib/dpkg/info"
+
+        echo \
+"Package: $pkg
+Version: $ver
+Status: install ok installed" >> "$TARGET/var/lib/dpkg/status"
+
+        touch "$TARGET/var/lib/dpkg/info/${pkg}.list"
+    }
+
+    x_feign_install dpkg
+}
+
+second_stage_install () {
+    x_core_install () {
+       smallyes '' | in_target dpkg --force-depends --install $(debfor "$@")
+    }
+
+    p () {
+       baseprog="$(($baseprog + ${1:-1}))"
+    }
+
+    setup_proc
+    in_target /sbin/ldconfig
+
+    DEBIAN_FRONTEND=noninteractive
+    DEBCONF_NONINTERACTIVE_SEEN=true
+    export DEBIAN_FRONTEND DEBCONF_NONINTERACTIVE_SEEN
+
+    baseprog=0
+    bases=7
+
+    p; progress $baseprog $bases INSTCORE "Installing core packages" #1
+    info INSTCORE "Installing core packages..."
+
+    p; progress $baseprog $bases INSTCORE "Installing core packages" #2
+    ln -sf mawk $TARGET/usr/bin/awk
+    x_core_install base-files base-passwd
+    p; progress $baseprog $bases INSTCORE "Installing core packages" #3
+    x_core_install dpkg
+
+    if [ ! -e "$TARGET/etc/localtime" ]; then
+        ln -sf /usr/share/zoneinfo/UTC "$TARGET/etc/localtime"
+    fi
+
+    p; progress $baseprog $bases INSTCORE "Installing core packages" #4
+    x_core_install $LIBC6
+
+    p; progress $baseprog $bases INSTCORE "Installing core packages" #5
+    x_core_install perl-base
+
+    p; progress $baseprog $bases INSTCORE "Installing core packages" #6
+    rm $TARGET/usr/bin/awk
+    x_core_install mawk
+
+    p; progress $baseprog $bases INSTCORE "Installing core packages" #7
+    if doing_variant -; then
+      x_core_install debconf
+    fi
+
+    baseprog=0
+    bases=$(set -- $required; echo $#)
+
+    info UNPACKREQ "Unpacking required packages..."
+
+    smallyes '' | 
+      (repeat 5 in_target_failmsg UNPACK_REQ_FAIL_FIVE "Failure while 
unpacking required packages.  This will be attempted up to five times." "" \
+      dpkg --status-fd 8 --force-depends --unpack $(debfor $required) 8>&1 
1>&7 |
+      dpkg_progress $baseprog $bases UNPACKREQ "Unpacking required packages" 
UNPACKING) 7>&1
+
+    info CONFREQ "Configuring required packages..."
+
+    mv "$TARGET/sbin/start-stop-daemon" "$TARGET/sbin/start-stop-daemon.REAL"
+    echo \
+"#!/bin/sh
+echo
+echo \"Warning: Fake start-stop-daemon called, doing nothing\"" > 
"$TARGET/sbin/start-stop-daemon"
+    chmod 755 "$TARGET/sbin/start-stop-daemon"
+
+    setup_dselect_method apt
+
+    smallyes '' | 
+      (in_target_failmsg CONF_REQ_FAIL "Failure while configuring required 
packages." "" \
+      dpkg --status-fd 8 --configure --pending --force-configure-any 
--force-depends 8>&1 1>&7 |
+      dpkg_progress $baseprog $bases CONFREQ "Configuring required packages" 
CONFIGURING) 7>&1
+
+    baseprog=0
+    bases="$(set -- $base; echo $#)"
+
+    info UNPACKBASE "Unpacking the base system..."
+
+    smallyes '' | 
+      (repeat 5 in_target_failmsg INST_BASE_FAIL_FIVE "Failure while 
installing base packages.  This will be re-attempted up to five times." "" \
+      dpkg --status-fd 8 --force-auto-select --force-overwrite --force-confold 
--skip-same-version --unpack $(debfor $base) 8>&1 1>&7 |
+      dpkg_progress $baseprog $bases UNPACKBASE "Unpacking base system" 
UNPACKING) 7>&1
+
+    info CONFBASE "Configuring the base system..."
+
+    smallyes '' |
+      (repeat 5 in_target_failmsg CONF_BASE_FAIL_FIVE "Failure while 
configuring base packages.  This will be attempted 5 times." "" \
+      dpkg --status-fd 8 --force-confold --skip-same-version --configure -a 
8>&1 1>&7 |
+      dpkg_progress $baseprog $bases CONFBASE "Configuring base system" 
CONFIGURING) 7>&1
+
+    mv "$TARGET/sbin/start-stop-daemon.REAL" "$TARGET/sbin/start-stop-daemon"
+
+    progress $bases $bases CONFBASE "Configuring base system"
+    info BASESUCCESS "Base system installed successfully."
+}

Reply via email to