wrapGAppsHook: add wrapGApp helper (#68402)
wrapGAppsHook: add wrapGApp helper
This commit is contained in:
commit
a0ec91d69f
@ -210,7 +210,7 @@ mkDerivation {
|
||||
dontWrapGApps = true;
|
||||
|
||||
# Arguments to be passed to `makeWrapper`, only used by qt5’s mkDerivation
|
||||
qtWrapperArgs [
|
||||
qtWrapperArgs = [
|
||||
"\${gappsWrapperArgs[@]}"
|
||||
];
|
||||
}
|
||||
@ -258,6 +258,16 @@ mkDerivation {
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry xml:id="ssec-gnome-common-issues-weird-location">
|
||||
<term>
|
||||
I need to wrap a binary outside <filename>bin</filename> and <filename>libexec</filename> directories.
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
You can manually trigger the wrapping with <function>wrapGApp</function> in <literal>preFixup</literal> phase. It takes a path to a program as a first argument; the remaining arguments are passed directly to <function xlink:href="#fun-wrapProgram">wrapProgram</function> function.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</section>
|
||||
</section>
|
||||
|
@ -102,7 +102,7 @@ stdenv.mkDerivation rec {
|
||||
'';
|
||||
|
||||
postFixup = ''
|
||||
wrapProgram "${placeholder "installedTests"}/libexec/installed-tests/gnome-photos/basic.py" "''${gappsWrapperArgs[@]}"
|
||||
wrapGApp "${placeholder "installedTests"}/libexec/installed-tests/gnome-photos/basic.py"
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
|
@ -85,8 +85,8 @@ in stdenv.mkDerivation rec {
|
||||
find -L "$out/bin" -type f -executable -print0 \
|
||||
| while IFS= read -r -d ''' file; do
|
||||
if [[ "''${file}" != *-bin ]]; then
|
||||
echo "Wrapping program ''${file}"
|
||||
wrapProgram "''${file}" "''${gappsWrapperArgs[@]}"
|
||||
echo "Wrapping program $file"
|
||||
wrapGApp "$file"
|
||||
fi
|
||||
done
|
||||
'';
|
||||
|
@ -107,7 +107,7 @@ in stdenv.mkDerivation rec {
|
||||
buildPythonPath "$out $pythonPath"
|
||||
gappsWrapperArgs+=(--set PYTHONPATH "$program_PYTHONPATH")
|
||||
|
||||
wrapProgram "$out/bin/kicad" "''${gappsWrapperArgs[@]}"
|
||||
wrapGApp "$out/bin/kicad"
|
||||
'';
|
||||
|
||||
meta = {
|
||||
|
@ -1,12 +1,19 @@
|
||||
# shellcheck shell=bash
|
||||
gappsWrapperArgs=()
|
||||
|
||||
find_gio_modules() {
|
||||
if [ -d "$1"/lib/gio/modules ] && [ -n "$(ls -A $1/lib/gio/modules)" ] ; then
|
||||
if [ -d "$1/lib/gio/modules" ] && [ -n "$(ls -A "$1/lib/gio/modules")" ] ; then
|
||||
gappsWrapperArgs+=(--prefix GIO_EXTRA_MODULES : "$1/lib/gio/modules")
|
||||
fi
|
||||
}
|
||||
|
||||
addEnvHooks "$targetOffset" find_gio_modules
|
||||
addEnvHooks "${targetOffset:?}" find_gio_modules
|
||||
|
||||
wrapGApp() {
|
||||
local program="$1"
|
||||
shift 1
|
||||
wrapProgram "$program" "${gappsWrapperArgs[@]}" "$@"
|
||||
}
|
||||
|
||||
# Note: $gappsWrapperArgs still gets defined even if $dontWrapGApps is set.
|
||||
wrapGAppsHook() {
|
||||
@ -26,20 +33,19 @@ wrapGAppsHook() {
|
||||
gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH")
|
||||
fi
|
||||
|
||||
if [ -d "$prefix/share" ]; then
|
||||
if [ -d "${prefix:?}/share" ]; then
|
||||
gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "$prefix/share")
|
||||
fi
|
||||
|
||||
if [ -d "$prefix/lib/gio/modules" ] && [ -n "$(ls -A $prefix/lib/gio/modules)" ] ; then
|
||||
if [ -d "$prefix/lib/gio/modules" ] && [ -n "$(ls -A "$prefix/lib/gio/modules")" ] ; then
|
||||
gappsWrapperArgs+=(--prefix GIO_EXTRA_MODULES : "$prefix/lib/gio/modules")
|
||||
fi
|
||||
|
||||
for v in $wrapPrefixVariables GST_PLUGIN_SYSTEM_PATH_1_0 GI_TYPELIB_PATH GRL_PLUGIN_PATH; do
|
||||
eval local dummy="\$$v"
|
||||
gappsWrapperArgs+=(--prefix $v : "$dummy")
|
||||
for v in ${wrapPrefixVariables:-} GST_PLUGIN_SYSTEM_PATH_1_0 GI_TYPELIB_PATH GRL_PLUGIN_PATH; do
|
||||
gappsWrapperArgs+=(--prefix "$v" : "${!v}")
|
||||
done
|
||||
|
||||
if [[ -z "$dontWrapGApps" ]]; then
|
||||
if [[ -z "${dontWrapGApps:-}" ]]; then
|
||||
targetDirsThatExist=()
|
||||
targetDirsRealPath=()
|
||||
|
||||
@ -52,7 +58,7 @@ wrapGAppsHook() {
|
||||
find "${targetDir}" -type f -executable -print0 \
|
||||
| while IFS= read -r -d '' file; do
|
||||
echo "Wrapping program '${file}'"
|
||||
wrapProgram "${file}" "${gappsWrapperArgs[@]}"
|
||||
wrapGApp "${file}"
|
||||
done
|
||||
fi
|
||||
done
|
||||
@ -71,7 +77,7 @@ wrapGAppsHook() {
|
||||
fi
|
||||
done
|
||||
echo "Wrapping link: '$linkPath'"
|
||||
wrapProgram "${linkPath}" "${gappsWrapperArgs[@]}"
|
||||
wrapGApp "${linkPath}"
|
||||
done
|
||||
fi
|
||||
fi
|
||||
|
@ -115,7 +115,7 @@ buildGoPackage rec {
|
||||
postFixup = ''
|
||||
# wrapGAppsHook does not work with binaries outside of $out/bin or $out/libexec
|
||||
for binary in $out/lib/deepin-daemon/*; do
|
||||
wrapProgram $binary "''${gappsWrapperArgs[@]}"
|
||||
wrapGApp "$binary"
|
||||
done
|
||||
|
||||
searchHardCodedPaths $out # debugging
|
||||
|
@ -64,7 +64,7 @@ stdenv.mkDerivation rec {
|
||||
sed -e $"2iimports.package._findEffectiveEntryPointName = () => \'$(basename $file)\' " \
|
||||
-i $file
|
||||
|
||||
wrapProgram $file "''${gappsWrapperArgs[@]}"
|
||||
wrapGApp "$file"
|
||||
done
|
||||
'';
|
||||
|
||||
|
@ -76,8 +76,8 @@ stdenv.mkDerivation rec {
|
||||
postFixup = ''
|
||||
# Let’s wrap the daemons
|
||||
for file in $out/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/{{daemon,nativeMessagingHost}.js,components/folks.py}; do
|
||||
echo "Wrapping program ''${file}"
|
||||
wrapProgram "''${file}" "''${gappsWrapperArgs[@]}"
|
||||
echo "Wrapping program $file"
|
||||
wrapGApp "$file"
|
||||
done
|
||||
'';
|
||||
|
||||
|
@ -237,9 +237,9 @@ stdenv.mkDerivation rec {
|
||||
postFixup = ''
|
||||
find -L "$out/bin" "$out/libexec" -type f -executable -print0 \
|
||||
| while IFS= read -r -d ''' file; do
|
||||
if [[ "''${file}" != *.efi ]]; then
|
||||
echo "Wrapping program ''${file}"
|
||||
wrapProgram "''${file}" "''${gappsWrapperArgs[@]}"
|
||||
if [[ "$file" != *.efi ]]; then
|
||||
echo "Wrapping program $file"
|
||||
wrapGApp "$file"
|
||||
fi
|
||||
done
|
||||
'';
|
||||
|
@ -8,6 +8,7 @@
|
||||
, qtbase
|
||||
, qtx11extras
|
||||
, wrapQtAppsHook
|
||||
, wrapGAppsHook
|
||||
, gtk3
|
||||
, xmlto
|
||||
, docbook_xsl
|
||||
@ -36,6 +37,7 @@ stdenv.mkDerivation rec {
|
||||
autoreconfHook
|
||||
docbook_xsl
|
||||
wrapQtAppsHook
|
||||
wrapGAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
@ -68,7 +70,7 @@ stdenv.mkDerivation rec {
|
||||
dontWrapGApps = true;
|
||||
|
||||
postFixup = lib.optionalString enableVideo ''
|
||||
wrapProgram "$out/bin/zbarcam-gtk" "''${gappsWrapperArgs[@]}"
|
||||
wrapGApp "$out/bin/zbarcam-gtk"
|
||||
wrapQtApp "$out/bin/zbarcam-qt"
|
||||
'';
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user