tools/toolbox: Add build convenience script
We don't require any build steps other than the standard meson commands, but entering a toolbox and running 2-3 meson commands still adds some friction. Add a small convencience script that - finds the toplevel source directory (similar to `jhbuild make`) - enters the speficied toolbox (or the configured default) - automatically picks a build directory based on the toolbox name - builds and installs the project to /usr (inside the toolbox) It also allows specifying meson -D options to change the build configuration, and to optionally run `meson dist`. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2935>
This commit is contained in:
parent
b739375bbd
commit
c22574c9b9
99
tools/toolbox/meson-build.sh
Executable file
99
tools/toolbox/meson-build.sh
Executable file
@ -0,0 +1,99 @@
|
||||
#!/bin/bash
|
||||
|
||||
DEFAULT_TOOLBOX=gnome-shell-devel
|
||||
CONFIG_FILE=${XDG_CONFIG_HOME:-$HOME/.config}/gnome-shell-toolbox-tools.conf
|
||||
|
||||
usage() {
|
||||
cat <<-EOF
|
||||
Usage: $(basename $0) [OPTION…]
|
||||
|
||||
Build and install a meson project in a toolbox
|
||||
|
||||
Options:
|
||||
-t, --toolbox=TOOLBOX Use TOOLBOX instead of the default "$DEFAULT_TOOLBOX"
|
||||
|
||||
-Dkey=val Option to pass to meson setup
|
||||
--dist Run meson dist
|
||||
|
||||
-h, --help Display this help
|
||||
|
||||
EOF
|
||||
}
|
||||
|
||||
die() {
|
||||
echo "$@" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
find_toplevel() {
|
||||
while true; do
|
||||
grep -qs '\<project\>' meson.build && break
|
||||
[[ $(pwd) -ef / ]] && die "Error: No meson toplevel found"
|
||||
cd ..
|
||||
done
|
||||
}
|
||||
|
||||
needs_reconfigure() {
|
||||
[[ ${#MESON_OPTIONS[*]} > 0 ]] &&
|
||||
[[ -d $BUILD_DIR ]]
|
||||
}
|
||||
|
||||
# load defaults
|
||||
. $CONFIG_FILE
|
||||
TOOLBOX=$DEFAULT_TOOLBOX
|
||||
|
||||
TEMP=$(getopt \
|
||||
--name $(basename $0) \
|
||||
--options 't:D:h' \
|
||||
--longoptions 'toolbox:' \
|
||||
--longoptions 'dist' \
|
||||
--longoptions 'help' \
|
||||
-- "$@")
|
||||
|
||||
eval set -- "$TEMP"
|
||||
unset TEMP
|
||||
|
||||
MESON_OPTIONS=()
|
||||
|
||||
while true; do
|
||||
case $1 in
|
||||
-t|--toolbox)
|
||||
TOOLBOX=$2
|
||||
shift 2
|
||||
;;
|
||||
|
||||
--dist)
|
||||
RUN_DIST=1
|
||||
shift
|
||||
;;
|
||||
|
||||
-D)
|
||||
MESON_OPTIONS+=(-D$2)
|
||||
shift 2
|
||||
;;
|
||||
|
||||
-h|--help)
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
|
||||
--)
|
||||
shift
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
find_toplevel
|
||||
|
||||
BUILD_DIR=build-$TOOLBOX
|
||||
[[ $RUN_DIST ]] && DIST="meson dist -C $BUILD_DIR" || DIST=:
|
||||
|
||||
needs_reconfigure && RECONFIGURE=--reconfigure
|
||||
|
||||
toolbox run --container $TOOLBOX sh -c "
|
||||
meson setup --prefix=/usr $RECONFIGURE ${MESON_OPTIONS[*]} $BUILD_DIR &&
|
||||
meson compile -C $BUILD_DIR &&
|
||||
sudo meson install -C $BUILD_DIR &&
|
||||
$DIST
|
||||
"
|
Loading…
x
Reference in New Issue
Block a user