aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AUTHORS2
-rw-r--r--ChangeLog36
-rw-r--r--Documentation/pbuilder-doc.xml8
-rw-r--r--debian/TODO6
-rw-r--r--debian/changelog8
-rwxr-xr-xpbuilder1
-rwxr-xr-xpbuilder-checkparams4
-rw-r--r--pbuilder-modules13
-rwxr-xr-xpbuilder-user-mode-linux2
-rw-r--r--pbuilder-user-mode-linux.14
-rw-r--r--pbuilder.83
-rwxr-xr-xpbuilderrc6
-rw-r--r--pbuilderrc.510
13 files changed, 92 insertions, 11 deletions
diff --git a/AUTHORS b/AUTHORS
index 92124a4..9ffe334 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -7,6 +7,6 @@ Daniel Kobras -- Patches and bugfixes for non-interactive building, and
Dagfinn Ilmari Manns?er <ilmari@ping.uio.no> -- devfs support.
Henrique de Moraes Holschuh <hmh@debian.org> -- portion of pbuilder-satisfydepends (version dependency check)
Daniel Schepler <schepler@math.berkeley.edu> -- many patches, --preserve-buildplace
-
+Sam Hartman <hartmans@debian.org> -- bind-mount patch
$Id$ \ No newline at end of file
diff --git a/ChangeLog b/ChangeLog
index b053b54..9d4628a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,39 @@
+2003-04-06 Junichi Uekawa <dancer@debian.org>
+
+ * Documentation/pbuilder-doc.xml (EXTRAPACKAGES): document
+ bindmounts option.
+
+ * pbuilderrc: add reference to the manual page in the example
+ configuration file.
+
+ * pbuilder-user-mode-linux (UML_DEBUGMODE): --bindmounts option.
+
+ * debian/TODO: remove bind-mount from TODO.
+
+ * pbuilder.8: document --bindmounts.
+
+ * pbuilder-modules (pbuilder-options): add --bindmounts option
+
+ * pbuilder-checkparams (PRESERVE_BUILDPLACE): add --bindmounts option
+
+ * AUTHORS: update
+
+ * pbuilderrc.5: document BINDMOUNTS option
+
+2003-04-05 Sam Hartman <hartmans@debian.org>
+
+ * pbuilder: Remove warning about bind filesystems as it is no
+ longer true.
+
+ * pbuilder-modules : Support Bind mounts
+
+ * pbuilderrc (BINDMOUNTS): New option
+
+2003-04-05 Sam Hartman <hartmans@debian.org>
+
+ * pbuilder-modules (cleanbuildplace): Use find not rm -rf to
+ clean up; avoid crossing out of the chroot on bind mounts.
+
2003-03-30 Junichi Uekawa <dancer@debian.org>
* Documentation/pbuilder-doc.xml (PBUILDER_UML_IMAGE): spell-checked
diff --git a/Documentation/pbuilder-doc.xml b/Documentation/pbuilder-doc.xml
index e4680e5..a5680f3 100644
--- a/Documentation/pbuilder-doc.xml
+++ b/Documentation/pbuilder-doc.xml
@@ -401,7 +401,7 @@ export DEBIAN_BUILDGCCVER=3.2
</para>
</sect1>
<sect1>
- <title>Specialized requirement on apt sources list</title>
+ <title>Using special apt sources list other than the default</title>
<para>
If you have some very specialized requirements on your
apt setup inside pbuilder,
@@ -411,6 +411,12 @@ export DEBIAN_BUILDGCCVER=3.2
Try something like:
<command><option>--othermirror "deb http://local/mirror stable main|deb-src http://local/source/repository ./"</option></command>
</para>
+ <para>
+ To use the local filesystem instead of http, it is necessary to do
+ bind-mounting.
+ <command><option>--bindmounts</option></command>
+ is a command-line option useful for such cases.
+ </para>
</sect1>
<sect1>
<title>How to get pbuilder to run apt-get update before trying to satisfy build-dependency</title>
diff --git a/debian/TODO b/debian/TODO
index 2c1ea04..07126a9 100644
--- a/debian/TODO
+++ b/debian/TODO
@@ -22,16 +22,10 @@ TODO and possible bugs:
- using policy-rc.d ? Get people to use invoke-rc.d?
- Killing any processes that are left over ?
-* Supporting arbitrary mount --bind for inside chroot.
- - some critical checking.
- - how to clean up afterwards safely.
-
* Do not install Build-*-Indep: targets for binary-arch building.
* $HOME, $TMP, $TMPDIR, etc. environment vars are set to bogus values
-* Lock-filing of $BASETGZ between processes.
-
* check cross-compile support, maybe adding support for dpkg-cross into build-depends checker?
* potato su does not like dpkg-source, executes as a bash script.
diff --git a/debian/changelog b/debian/changelog
index e572bff..b0e5d24 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+pbuilder (0.70) unstable; urgency=low
+
+ * Support bind-mount, patch from Sam Hartman, thanks.
+ To allow file:/// apt lines, and other things.
+ (closes: #178589, 131210, 178408)
+
+ -- Junichi Uekawa <dancer@debian.org> Sun, 6 Apr 2003 19:11:29 +0900
+
pbuilder (0.69) unstable; urgency=low
* fix hand-applying mistakes in --preserve-buildplace patch
diff --git a/pbuilder b/pbuilder
index 3ca75dc..adeff46 100755
--- a/pbuilder
+++ b/pbuilder
@@ -43,7 +43,6 @@ case "$1" in
echo " -> entering the shell"
else
echo " -> entering the shell
-DO NOT bind mount file system inside, they will be cleaned.
File extracted to: $BUILDPLACE
"
fi
diff --git a/pbuilder-checkparams b/pbuilder-checkparams
index c96b2a8..57617f2 100755
--- a/pbuilder-checkparams
+++ b/pbuilder-checkparams
@@ -125,6 +125,10 @@ while [ -n "$1" ]; do
PRESERVE_BUILDPLACE="yes"
shift;
;;
+ --bindmounts)
+ BINDMOUNTS="$2"
+ shift; shift;
+ ;;
## pdebuild option
--auto-debsign)
AUTO_DEBSIGN="yes"
diff --git a/pbuilder-modules b/pbuilder-modules
index 315e069..ad833d9 100644
--- a/pbuilder-modules
+++ b/pbuilder-modules
@@ -65,6 +65,7 @@ pbuilder-options:
--override-config
--binary-arch
--preserve-buildplace
+ --bindmounts [bind-mount-point]
pdebuild-specific pbuilder-options
--pbuilderroot [command to obtain root privilege for pbuilder]
@@ -102,6 +103,9 @@ function umountproc () {
if [ "$USEDEVFS" = "yes" ]; then
umount_one "dev"
fi
+ for mnt in $BINDMOUNTS; do
+ umount_one "$mnt"
+ done
}
function mountproc () {
@@ -120,6 +124,11 @@ function mountproc () {
mkdir -p $BUILDPLACE/dev || true
mount -t devfs /dev "$BUILDPLACE/dev"
fi
+ for mnt in $BINDMOUNTS; do
+ echo "-> Mounting $mnt"
+ mkdir -p "$BUILDPLACE/$mnt"
+ mount -obind "$mnt" "$BUILDPLACE/$mnt"
+ done
}
function cleanbuildplace () {
@@ -129,7 +138,9 @@ function cleanbuildplace () {
if [ "${INTERNAL_BUILD_UML}" != "yes" ]; then
if [ -d "$BUILDPLACE" ]; then
echo " -> cleaning the build env "
- rm -rf "$BUILDPLACE"
+ find "$BUILDPLACE" \( \! -type d \) -a -xdev -print0 |xargs -0 rm -f
+ find "$BUILDPLACE" -type d -xdev -depth -print0 |(xargs -0 \
+ rmdir || true)
fi;
fi
}
diff --git a/pbuilder-user-mode-linux b/pbuilder-user-mode-linux
index 0d1432a..66b23fe 100755
--- a/pbuilder-user-mode-linux
+++ b/pbuilder-user-mode-linux
@@ -194,7 +194,7 @@ while [ -n "$1" ] ; do
UML_EXTRAOPT="${UML_EXTRAOPT} $1"
shift;;
#things that can be passed through with options
- --timeout|--http-proxy|--configfile|--hookdir|--aptconfdir)
+ --timeout|--http-proxy|--configfile|--hookdir|--aptconfdir|--bindmounts)
UML_EXTRAOPT="${UML_EXTRAOPT} $1 $2"
shift; shift;;
--buildresult)
diff --git a/pbuilder-user-mode-linux.1 b/pbuilder-user-mode-linux.1
index 0508018..b461cf5 100644
--- a/pbuilder-user-mode-linux.1
+++ b/pbuilder-user-mode-linux.1
@@ -134,6 +134,10 @@ The directory where build result is placed to
.BI "--uml-debugmode"
Enable tracing of shell scripts used by pbuilder-user-mode-linux.
+.TP
+.BI "--bindmounts " "/dir/to/bind-mount"
+Bind-mount the directory inside the chroot inside the user-mode-linux.
+
.SH "NOTES"
This software is in early stage of development.
Reading the source may help you in case this software doesn't work for you.
diff --git a/pbuilder.8 b/pbuilder.8
index ef78c11..e68c92d 100644
--- a/pbuilder.8
+++ b/pbuilder.8
@@ -375,6 +375,9 @@ This is useful if you want to attempt to build a large number of
packages successively, but you expect that many of them cannot have
their build dependencies satisfied.
+.TP
+.BI "--bindmounts " "bind-mount-points"
+Bind-mount the specified directories to inside the chroot.
.SH "FILES"
diff --git a/pbuilderrc b/pbuilderrc
index 1587e7f..a3c66fa 100755
--- a/pbuilderrc
+++ b/pbuilderrc
@@ -1,6 +1,8 @@
# this is your configuration file for pbuilder.
# the file in /usr/share/pbuilder/pbuilderrc is the default template.
# /etc/pbuilderrc is the one meant for editing.
+#
+# read pbuilderrc.5 document for notes on specific options.
BASETGZ=/var/cache/pbuilder/base.tgz
#EXTRAPACKAGES=gcc3.0-athlon-builder
@@ -43,3 +45,7 @@ APTCONFDIR=""
# the username and ID used by pbuilder, inside chroot. Needs fakeroot, really
BUILDUSERID=1234
#BUILDUSERNAME=pbuilder
+
+# BINDMOUNTS is a space separated list of things to mount
+# inside the chroot.
+BINDMOUNTS=""
diff --git a/pbuilderrc.5 b/pbuilderrc.5
index b99c81c..f161689 100644
--- a/pbuilderrc.5
+++ b/pbuilderrc.5
@@ -255,6 +255,16 @@ When this value is set to yes,
will invoke debsign command after building.
+.TP
+.BI "BINDMOUNTS=" "directories-to-bind-mount"
+When this value is set, pbuilder will mount these directories using
+bind-mount.
+
+.B "BINDMOUNTS=""/home /mnt/test """
+
+Do not bind-mount
+.B "/"
+
.SH "AUTHOR"
Initial coding, and main maintenance is done by
Junichi Uekawa <dancer@debian.org>.