blob: 29e38ce429ba38a4ec3e6c05490ae0e4e1857c41 [file] [log] [blame]
#!/usr/bin/env -S bash -e
gcc=$(gcc -dumpmachine)
DIST="$(dirname $0)/../dist"
BIN="$(basename $0)"
COMMAND="$1"
ARGUMENT="$2"
DBUSPOLICY="/usr/share/dbus-1/system.d/org.freedesktop.fwupd.conf"
PKPOLICY="/usr/share/polkit-1/actions/org.freedesktop.fwupd.policy"
export FWUPD_LOCALSTATEDIR=${DIST}
export FWUPD_SYSCONFDIR=${DIST}/etc
export LD_LIBRARY_PATH=${DIST}/lib/${gcc}:${DIST}/lib64:${DIST}/lib
if [ -n "${DEBUG}" ]; then
if ! which gdbserver 1>/dev/null 2>&1; then
echo "install gdbserver to enable debugging"
exit 1
fi
DEBUG="gdbserver localhost:9091"
fi
if [ -f ${DIST}/libexec/fwupd/${BIN} ]; then
EXE=${DIST}/libexec/fwupd/${BIN}
else
EXE=${DIST}/bin/${BIN}
fi
if [ ! -f ${EXE} ]; then
echo "Not yet built! Please run:"
echo ""
echo "# build-fwupd"
exit 1
fi
if [ -z "${G_DEBUG}" ]; then
G_DEBUG="fatal-criticals"
fi
if [ -z "${GLIBC_TUNABLES}" ]; then
GLIBC_TUNABLES=glibc.cpu.hwcaps=SHSTK
fi
ENV="FWUPD_POLKIT_NOCHECK=1 \
G_DEBUG=${G_DEBUG} \
GLIBC_TUNABLES=${GLIBC_TUNABLES} \
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}"
for var in $(env | grep FWUPD | cut -d= -f1); do
ENV="${ENV} ${var}=${!var}"
done
SUDO=$(which sudo)
if [ "${BIN}" = "fwupd" ] &&
[ -d "$(dirname ${DBUSPOLICY})" ] &&
[ ! -f ${DBUSPOLICY} ]; then
echo "Missing D-Bus policy in ${DBUSPOLICY}"
echo "Copy into filesystem? [y/N]"
read -r answer
if [ "${answer}" != "y" ]; then
exit 1
fi
${SUDO} cp ${DIST}/share/dbus-1/system.d/org.freedesktop.fwupd.conf ${DBUSPOLICY}
fi
if [ "${BIN}" = "fwupdmgr" ] &&
[ -d "$(dirname ${PKPOLICY})" ] &&
! grep "org.freedesktop.fwupd.emulation-save" $PKPOLICY 1>/dev/null 2>&1; then
echo "Missing or outdated PolicyKit policy in ${PKPOLICY}"
echo "Copy into filesystem? [y/N]"
read -r answer
if [ "${answer}" != "y" ]; then
exit 1
fi
${SUDO} cp ${DIST}/share/polkit-1/actions/org.freedesktop.fwupd.policy ${PKPOLICY}
fi
${SUDO} ${ENV} ${DEBUG} ${EXE} "$@"
if [ "${BIN}" = "fwupdmgr" ] && [ "${COMMAND}" = "emulation-save" ]; then
${SUDO} chown "$(id -u)":"$(id -g)" ${ARGUMENT}
fi