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