Package: debootstrap
Version: 1.0.34
Severity: normal
Tags: patch
User: debian-...@lists.debian.org

While cross-deboostraping a linux-i386 chroot using kfreebsd-amd64 host:

$ sudo debootstrap --foreign --arch=i386 squeeze /tmp/test
/usr/sbin/debootstrap: 425: cannot create /tmp/test/test-dev-null: Invalid 
argument
E: Cannot install into target '/tmp/test' mounted with noexec or nodev

the problem here is that $ARCH stores the target architecture, but it is used
for tests where only the host architecture is relevant.

Please consider attached patch to fix the problem by adding a new variable,
$HOST_ARCH, for the host architecture.

-- System Information:
Debian Release: 6.0.2
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable')
Architecture: kfreebsd-amd64 (x86_64)

Kernel: kFreeBSD 8.1-1-amd64
Locale: LANG=ca_AD.utf8, LC_CTYPE=ca_AD.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages debootstrap depends on:
ii  wget                          1.12-2.1   retrieves files from the web

Versions of packages debootstrap recommends:
ii  debian-archive-keyring        2010.08.28 GnuPG archive keys of the Debian a
ii  gnupg                         1.4.10-4   GNU privacy guard - a free PGP rep

debootstrap suggests no packages.

-- no debconf information
=== modified file 'debootstrap'
--- debootstrap 2011-08-10 10:28:36 +0000
+++ debootstrap 2011-08-10 10:48:04 +0000
@@ -28,6 +28,7 @@ KEYRING=""
 DISABLE_KEYRING=""
 VARIANT=""
 ARCH=""
+HOST_ARCH=""
 KEEP_DEBOOTSTRAP_DIR=""
 USE_DEBIANINSTALLER_INTERACTION=""
 SECOND_STAGE_ONLY=""
@@ -389,20 +390,24 @@ fi
 
 ###########################################################################
 
-if [ "$ARCH" != "" ]; then
-       true
-elif [ -x /usr/bin/dpkg ] && \
+if [ -x /usr/bin/dpkg ] && \
      /usr/bin/dpkg --print-architecture >/dev/null 2>&1; then
-       ARCH=`/usr/bin/dpkg --print-architecture`
+       HOST_ARCH=`/usr/bin/dpkg --print-architecture`
 elif type udpkg >/dev/null 2>&1 && \
      udpkg --print-architecture >/dev/null 2>&1; then
-       ARCH=`/usr/bin/udpkg --print-architecture`
+       HOST_ARCH=`/usr/bin/udpkg --print-architecture`
 elif [ -e $DEBOOTSTRAP_DIR/arch ]; then
-       ARCH=`cat $DEBOOTSTRAP_DIR/arch`
+       HOST_ARCH=`cat $DEBOOTSTRAP_DIR/arch`
 else
        error 1 WHATARCH "Couldn't work out current architecture"
 fi
 
+if [ "$ARCH" != "" ]; then
+       true
+else
+       ARCH=$HOST_ARCH
+fi
+
 if [ "$TARGET" = "/" ]; then
        CHROOT_CMD=""
 elif doing_variant scratchbox; then

=== modified file 'functions'
--- functions   2011-08-10 10:28:36 +0000
+++ functions   2011-08-10 10:47:04 +0000
@@ -938,7 +938,7 @@ clear_mtab () {
 }
 
 setup_proc () {
-       case "$ARCH" in
+       case "$HOST_ARCH" in
            kfreebsd-*)
                umount_on_exit /dev
                umount_on_exit /proc
@@ -977,7 +977,7 @@ setup_devices () {
                return 0
        fi
 
-       case "$ARCH" in
+       case "$HOST_ARCH" in
            kfreebsd-*)
                in_target mount -t devfs devfs /dev ;;
            hurd-*)
@@ -1198,7 +1198,7 @@ get_next_predep () {
 check_sane_mount () {
        mkdir -p "$1"
 
-       case "$ARCH" in
+       case "$HOST_ARCH" in
            kfreebsd-*|hurd-*)
                ;;
            *)

Reply via email to