[PATCH 2/7] Clean up chroot.sh and setcrossarch.sh
---
cross/setcrossarch.sh | 41 +++++++++++++++++++++------------------
examples/chroot.sh | 51 +++++++++++++++++++++++++++++--------------------
2 filer ändrade, 52 tillägg(+), 40 borttagningar(-)
diff --git a/cross/setcrossarch.sh b/cross/setcrossarch.sh
index 756c2e6c..f6afdd10 100755
--- a/cross/setcrossarch.sh
+++ b/cross/setcrossarch.sh
@@ -18,42 +18,45 @@ set -e
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# meant to be called from multistrap with directory arch variables.
-dir=$1
-hostarch=$2
-if [ -z "$dir" ]; then
+TARGET="$1"
+HOSTARCH="$2"
+
+if [ -z "${TARGET}" ]; then
echo "No directory specified."
exit 1
fi
#run chroot script to ensure no unwanted system interactions (e.g. startup scripts)
if [ -x /usr/share/multistrap/chroot.sh ]; then
- /usr/share/multistrap/chroot.sh $dir $hostarch
+ /usr/share/multistrap/chroot.sh "${TARGET}" "${HOSTARCH}"
fi
-cfg="/etc/pdebuild-cross/pdebuild-cross.rc"
-if [ -f $cfg ]; then
- . $cfg
+CFG="/etc/pdebuild-cross/pdebuild-cross.rc"
+if [ -f "${CFG}" ]; then
+ . "${CFG}"
fi
-if [ -z "$CROSSARCH" ]; then
+if [ -z "${CROSSARCH}" ]; then
# get crossarch from dpkg-cross - check if it is not None
if [ -f /etc/dpkg-cross/cross-compile ]; then
- DEFARCH=`grep "^default_arch" /etc/dpkg-cross/cross-compile|sed -e 's/default_arch *= *\(.*\)/\1/'`
- if [ -n "$DEFARCH" -a "$DEFARCH" != "None" ]; then
- CROSSARCH="$DEFARCH"
+ DEFARCH="$(grep "^default_arch" /etc/dpkg-cross/cross-compile | sed -e 's/default_arch *= *\(.*\)/\1/')"
+ if [ -n "${DEFARCH}" -a "${DEFARCH}" != "None" ]; then
+ CROSSARCH="${DEFARCH}"
fi
else
- echo "No CROSSARCH set in '$cfg' and no dpkg-cross default: using armel."
+ echo "No CROSSARCH set in '${CFG}' and no dpkg-cross default: using armel."
CROSSARCH="armel"
fi
fi
# set the value inside the chroot
-echo "#!/bin/sh" > $dir/tmp/set.sh
-echo >> $dir/tmp/set.sh
-echo "export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true LC_ALL=C LANGUAGE=C LANG=C" >> $dir/tmp/set.sh
-echo "echo debconf dpkg-cross/default-arch select $CROSSARCH|debconf-set-selections" >> $dir/tmp/set.sh
-echo "Setting debconf dpkg-cross/default-arch to $CROSSARCH"
-sudo chroot $dir sh /tmp/set.sh
-sudo rm $dir/tmp/set.sh
+echo "Setting debconf dpkg-cross/default-arch to ${CROSSARCH}"
+cat > "${TARGET}"/tmp/setcrossarch.sh << EOF
+#!/bin/sh
+export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true LC_ALL=C LANGUAGE=C LANG=C
+echo debconf dpkg-cross/default-arch select "${CROSSARCH}" | debconf-set-selections
+EOF
+chmod 0755 "${TARGET}"/tmp/setcrossarch.sh
+sudo chroot "${TARGET}" /tmp/setcrossarch.sh
+rm "${TARGET}"/tmp/setcrossarch.sh
diff --git a/examples/chroot.sh b/examples/chroot.sh
index e8f84c72..006fe34d 100755
--- a/examples/chroot.sh
+++ b/examples/chroot.sh
@@ -2,40 +2,49 @@
set -e
+# This setup script is an alternative method of adjusting the tarball
+# contents immediately after multistrap has unpacked the packages.
+
+# At this stage, any operations inside the rootfs must not try to
+# execute any binaries within the rootfs.
+
# The script is called with the following arguments:
+
# $1 = $DIR - the top directory of the bootstrapped system
# $2 = $ARCH - the specified architecture, already checked with dpkg-architecture.
+
# setup.sh needs to be executable.
TARGET=$1
+
# upstart support
-if [ -x "$TARGET/sbin/initctl" ]; then
- echo "initctl: Trying to prevent daemons from starting in $TARGET"
- mv "$TARGET/sbin/start-stop-daemon" "$TARGET/sbin/start-stop-daemon.REAL"
- echo \
-"#!/bin/sh
-echo
-echo echo \"Warning: Fake start-stop-daemon called, doing nothing\"" > "$TARGET/sbin/start-stop-daemon"
- chmod 755 "$TARGET/sbin/start-stop-daemon"
+if [ -x "${TARGET}"/sbin/initctl ]; then
+ echo "initctl: Trying to prevent daemons from starting in ${TARGET}"
+ mv "${TARGET}"/sbin/initctl "${TARGET}"/sbin/initctl.REAL
+ cat > "${TARGET}"/sbin/initctl << EOF
+#!/bin/sh
+echo "Warning: Fake initctl called, doing nothing"
+EOF
+ chmod 0755 "${TARGET}"/sbin/initctl
fi
-if [ -x "$TARGET/sbin/initctl" ]; then
- echo "initctl: Trying to prevent daemons from starting in $TARGET"
- mv "$TARGET/sbin/initctl" "$TARGET/sbin/initctl.REAL"
- echo \
-"#!/bin/sh
-echo
-echo \"Warning: Fake initctl called, doing nothing\"" > "$TARGET/sbin/initctl"
- chmod 755 "$TARGET/sbin/initctl"
+if [ -x "${TARGET}"/sbin/initctl -a -x "${TARGET}"/sbin/start-stop-daemon ]; then
+ echo "start-stop-daemon: Trying to prevent daemons from starting in ${TARGET}"
+ mv "${TARGET}"/sbin/start-stop-daemon "${TARGET}"/sbin/start-stop-daemon.REAL
+ cat > "${TARGET}"/sbin/start-stop-daemon << EOF
+#!/bin/sh
+echo "Warning: Fake start-stop-daemon called, doing nothing"
+EOF
+ chmod 0755 "${TARGET}"/sbin/start-stop-daemon
fi
# sysvinit support - exit value of 101 is essential.
-if [ -x "$TARGET/sbin/init" -a ! -f "$TARGET/usr/sbin/policy-rc.d" ]; then
- echo "sysvinit: Using policy-rc.d to prevent daemons from starting in $TARGET"
- mkdir -p $TARGET/usr/sbin/
- cat > $TARGET/usr/sbin/policy-rc.d << EOF
+if [ -x "${TARGET}"/sbin/init -a ! -f "${TARGET}"/usr/sbin/policy-rc.d ]; then
+ echo "sysvinit: Using policy-rc.d to prevent daemons from starting in ${TARGET}"
+ mkdir -p "${TARGET}"/usr/sbin/
+ cat > "${TARGET}"/usr/sbin/policy-rc.d << EOF
#!/bin/sh
echo "sysvinit: All runlevel operations denied by policy" >&2
exit 101
EOF
- chmod a+x $TARGET/usr/sbin/policy-rc.d
+ chmod 0755 "${TARGET}"/usr/sbin/policy-rc.d
fi
--
1.7.10.4
Reply to: