summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarco d'Itri <md@linux.it>2016-09-08 15:34:14 (GMT)
committerAnsgar Burchardt <ansgar@debian.org>2016-09-08 15:35:50 (GMT)
commit55e2452198840684e64b7aad549c2cc92261a7be (patch)
tree6dfaf4e05d814c10b8c58e1dcd368a3b9547c143
parent81ebc7df61e8a80915126351e01e016f6a57a52a (diff)
downloaddebootstrap-55e2452198840684e64b7aad549c2cc92261a7be.zip
debootstrap-55e2452198840684e64b7aad549c2cc92261a7be.tar.gz
debootstrap-55e2452198840684e64b7aad549c2cc92261a7be.tar.bz2
Merged /usr support for debootstrap
-rwxr-xr-xdebootstrap6
-rw-r--r--debootstrap.83
-rw-r--r--functions37
-rw-r--r--scripts/sid6
4 files changed, 52 insertions, 0 deletions
diff --git a/debootstrap b/debootstrap
index 4cea268..ea1d048 100755
--- a/debootstrap
+++ b/debootstrap
@@ -27,6 +27,7 @@ KEYRING=""
DISABLE_KEYRING=""
FORCE_KEYRING=""
VARIANT=""
+MERGED_USR=""
ARCH=""
HOST_ARCH=""
HOST_OS=""
@@ -100,6 +101,7 @@ usage()
--variant=X use variant X of the bootstrap scripts
(currently supported variants: buildd, fakechroot,
scratchbox, minbase)
+ --no-merged-usr do not make /{bin,sbin,lib}/ symlinks to /usr/
--keyring=K check Release files against keyring K
--no-check-gpg avoid checking Release file signatures
--force-check-gpg force checking Release file signatures
@@ -302,6 +304,10 @@ if [ $# != 0 ] ; then
error 1 NEEDARG "option requires an argument %s" "$1"
fi
;;
+ --no-merged-usr)
+ MERGED_USR=no
+ shift
+ ;;
--keyring|--keyring=?*)
if ! gpgv --version >/dev/null 2>&1; then
error 1 NEEDGPGV "gpgv not installed, but required for Release verification"
diff --git a/debootstrap.8 b/debootstrap.8
index 5864148..5eeaf04 100644
--- a/debootstrap.8
+++ b/debootstrap.8
@@ -84,6 +84,9 @@ The default, with no \fB\-\-variant=X\fP argument, is to create a base
Debian installation in
.IR TARGET .
.IP
+.IP "\fB\-\-no-merged-usr\fP"
+Do not create /{bin,sbin,lib}/ symlinks pointing to their conterparts in /usr/.
+.IP
.IP "\fB\-\-keyring=KEYRING\fP"
Override the default keyring for the distribution being bootstrapped,
and use
diff --git a/functions b/functions
index 336f220..f633f73 100644
--- a/functions
+++ b/functions
@@ -1136,6 +1136,43 @@ setup_dselect_method () {
esac
}
+# Find out where the runtime dynamic linker and the shared libraries
+# can be installed on each architecture: native, multilib and multiarch.
+# This data can be verified by checking the files in the debian/sysdeps/
+# directory of the glibc package.
+#
+# This function must be updated to support any new architecture which
+# either installs the RTLD in a directory different from /lib or builds
+# multilib library packages.
+setup_merged_usr() {
+ if [ "$MERGED_USR" = "no" ]; then return 0; fi
+
+ local link_dir
+ case $ARCH in
+ hurd-*) return 0 ;;
+ amd64) link_dir="lib32 lib64 libx32" ;;
+ i386) link_dir="lib64 libx32" ;;
+ mips|mipsel)
+ link_dir="lib32 lib64" ;;
+ mips64*|mipsn32*)
+ link_dir="lib32 lib64 libo32" ;;
+ powerpc) link_dir="lib64" ;;
+ ppc64) link_dir="lib32 lib64" ;;
+ ppc64el) link_dir="lib64" ;;
+ s390x) link_dir="lib32" ;;
+ sparc) link_dir="lib64" ;;
+ sparc64) link_dir="lib32 lib64" ;;
+ x32) link_dir="lib32 lib64 libx32" ;;
+ esac
+ link_dir="bin sbin lib $link_dir"
+
+ local dir
+ for dir in $link_dir; do
+ ln -s usr/$dir $TARGET/$dir
+ mkdir -p $TARGET/usr/$dir
+ done
+}
+
################################################################ pkgdetails
# NOTE
diff --git a/scripts/sid b/scripts/sid
index 7b32ac2..5866569 100644
--- a/scripts/sid
+++ b/scripts/sid
@@ -41,6 +41,12 @@ work_out_debs () {
}
first_stage_install () {
+ case $SUITE in
+ etch|etch-m68k|jessie|lenny|squeeze|wheezy) ;;
+ oldstable|stable) ;;
+ *) setup_merged_usr ;;
+ esac
+
extract $required
mkdir -p "$TARGET/var/lib/dpkg"