Browse Source

Remove dependency on mounted /home from the wrapper script

pull/77/head
matt335672 2 years ago
parent
commit
6ebbdc632f
1 changed files with 38 additions and 12 deletions
  1. +38
    -12
      scripts/install_pulseaudio_sources_apt_wrapper.sh

+ 38
- 12
scripts/install_pulseaudio_sources_apt_wrapper.sh View File

@ -37,9 +37,9 @@
# ---------------------------------------------------------------------------
# G L O B A L S
# ---------------------------------------------------------------------------
# Where the output files are going. Must be under $HOME as schroot
# assumes this.
PULSE_DIR=$HOME/pulseaudio.src
# Where the output files are going
PULSE_DIRNAME=pulseaudio.src
PULSE_DIR=$HOME/$PULSE_DIRNAME
# Absolute path to the script we're wrapping. This picks it up from
# the same directory this file is in
@ -100,23 +100,29 @@ InstallRequiredPackages()
#
# This function definition uses () rather than {} to create an extra
# sub-process where we can run 'set -e' without affecting the parent
#
# Parameters : <script> [<script params>...]
# -----------------------------------------------------------------------------
RunWrappedScript()
(
# In this sub-process, fail on error
set -e
# Define default args for running program
# -c : Define the schroot config to use
# -d : Directory to switch to before running command
schroot="schroot -c pa-build-$USER -d /build"
# Install extra dependencies
schroot -c pa-build-$USER -u root -- \
apt-get install -y $WRAPPED_SCRIPT_DEPS
$schroot -u root -- apt-get install -y $WRAPPED_SCRIPT_DEPS
# Allow normal user to sudo without a password
schroot -c pa-build-$USER -u root -- \
$schroot -u root -- \
/bin/sh -c "echo '$USER ALL=(ALL) NOPASSWD:ALL'>/etc/sudoers.d/nopasswd-$USER"
schroot -c pa-build-$USER -u root -- chmod 400 /etc/sudoers.d/nopasswd-$USER
$schroot -u root -- chmod 400 /etc/sudoers.d/nopasswd-$USER
# Call the wrapped script
schroot -c pa-build-$USER -- /wrapped_script -d $PULSE_DIR
$schroot -- "$@"
)
# -----------------------------------------------------------------------------
@ -209,19 +215,39 @@ echo "- Creating schroot config file $schroot_conf"
echo "type=directory"
} | sudo tee $schroot_conf >/dev/null || exit $?
# Copy some files to the build root
for file in /etc/apt/sources.list; do
echo "- Copying $file to the root"
sudo install -m 0644 $file $BUILDROOT/$file || exit $?
done
# Create a separate directory in $BUILDROOT to hold the build
# artefacts.
#
# We used to do the build on the user's home directory, but this
# isn't supported by schroot out-of-the-box on all configurations -
# see https://github.com/neutrinolabs/pulseaudio-module-xrdp/issues/76
echo "- Creating the build directory /build"
sudo install -d --mode=0775 --owner=$USER --group=$(id -g) \
$BUILDROOT/build || exit $?
# Copy the wrapped script to the buildroot root
echo "- Copying the wrapped script to the root"
sudo install -m 755 $WRAPPED_SCRIPT $BUILDROOT/wrapped_script || exit $?
echo "- Copying the wrapped script to the build directory"
sudo install -m 755 $WRAPPED_SCRIPT $BUILDROOT/build/wrapped_script || exit $?
# Run the wrapped script
log=/var/tmp/pa-build-$USER-schroot.log
echo "- Building PA sources. Log file in $log"
RunWrappedScript >$log 2>&1 || {
RunWrappedScript /build/wrapped_script -d /build/$PULSE_DIRNAME >$log 2>&1 || {
echo "** schroot failed. Check log file $log" >&2
exit 1
}
# Done! Remove the schroot config file as its no longer needed
# Done! Copy the resulting directory out of the build root
echo "- Copying sources out of the build root"
cp -pr $BUILDROOT/build/$PULSE_DIRNAME $PULSE_DIR || exit $?
# Remove the schroot config file as its no longer needed
echo "- Removing schroot config file and build root"
sudo rm -rf $schroot_conf $BUILDROOT


Loading…
Cancel
Save