Merge pull request #249268 from Enzime/remmina-bundle
writeDarwinBundle: use binary wrapper
This commit is contained in:
commit
924efe5313
@ -1,4 +1,5 @@
|
|||||||
{ lib, stdenv, fetchFromGitLab, cmake, ninja, pkg-config, wrapGAppsHook
|
{ lib, stdenv, fetchFromGitLab, fetchpatch, cmake, ninja, pkg-config, wrapGAppsHook
|
||||||
|
, desktopToDarwinBundle
|
||||||
, glib, gtk3, gettext, libxkbfile, libX11, python3
|
, glib, gtk3, gettext, libxkbfile, libX11, python3
|
||||||
, freerdp, libssh, libgcrypt, gnutls, vte
|
, freerdp, libssh, libgcrypt, gnutls, vte
|
||||||
, pcre2, libdbusmenu-gtk3, libappindicator-gtk3
|
, pcre2, libdbusmenu-gtk3, libappindicator-gtk3
|
||||||
@ -23,7 +24,16 @@ stdenv.mkDerivation (finalAttrs: {
|
|||||||
sha256 = "sha256-oEgpav4oQ9Sld9PY4TsutS5xEnhQgOHnpQhDesRFTeQ=";
|
sha256 = "sha256-oEgpav4oQ9Sld9PY4TsutS5xEnhQgOHnpQhDesRFTeQ=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake ninja pkg-config wrapGAppsHook ];
|
patches = [
|
||||||
|
# https://gitlab.com/Remmina/Remmina/-/merge_requests/2525
|
||||||
|
(fetchpatch {
|
||||||
|
url = "https://gitlab.com/Remmina/Remmina/-/commit/2ce153411597035d0f3db5177d703541e09eaa06.patch";
|
||||||
|
hash = "sha256-RV/8Ze9aN4dW49Z+y3z0jFs4dyEWu7DK2FABtmse9Hc=";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
nativeBuildInputs = [ cmake ninja pkg-config wrapGAppsHook ]
|
||||||
|
++ lib.optionals stdenv.isDarwin [ desktopToDarwinBundle ];
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
gsettings-desktop-schemas
|
gsettings-desktop-schemas
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{ writeScriptBin, lib, ... }:
|
{ writeScriptBin, lib, makeBinaryWrapper }:
|
||||||
|
|
||||||
let
|
let
|
||||||
pListText = lib.generators.toPlist { } {
|
pListText = lib.generators.toPlist { } {
|
||||||
@ -17,23 +17,31 @@ in writeScriptBin "write-darwin-bundle" ''
|
|||||||
|
|
||||||
readonly prefix=$1
|
readonly prefix=$1
|
||||||
readonly name=$2
|
readonly name=$2
|
||||||
readonly exec=$3
|
# TODO: support executables with spaces in their names
|
||||||
|
readonly execName=''${3%% *} # Before the first space
|
||||||
|
[[ $3 =~ " " ]] && readonly execArgs=''${3#* } # Everything after the first space
|
||||||
readonly icon=$4.icns
|
readonly icon=$4.icns
|
||||||
readonly squircle=''${5:-1}
|
readonly squircle=''${5:-1}
|
||||||
readonly plist=$prefix/Applications/$name.app/Contents/Info.plist
|
readonly plist=$prefix/Applications/$name.app/Contents/Info.plist
|
||||||
|
readonly binary=$prefix/bin/$execName
|
||||||
|
readonly bundleExecutable=$prefix/Applications/$name.app/Contents/MacOS/$name
|
||||||
|
|
||||||
cat > "$plist" <<EOF
|
cat > "$plist" <<EOF
|
||||||
${pListText}
|
${pListText}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
if [[ $squircle == 0 || $squircle == "false" ]]; then
|
if [[ $squircle == 0 || $squircle == "false" ]]; then
|
||||||
sed '/CFBundleIconFiles/,\|</array>|d' -i "$plist"
|
sed '/CFBundleIconFiles/,\|</array>|d' -i "$plist"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cat > "$prefix/Applications/$name.app/Contents/MacOS/$name" <<EOF
|
if [[ -n "$execArgs" ]]; then
|
||||||
#!/bin/bash
|
(
|
||||||
exec $prefix/bin/$exec
|
source ${makeBinaryWrapper}/nix-support/setup-hook
|
||||||
EOF
|
# WORKAROUND: makeBinaryWrapper fails when -u is set
|
||||||
|
set +u
|
||||||
chmod +x "$prefix/Applications/$name.app/Contents/MacOS/$name"
|
makeBinaryWrapper "$binary" "$bundleExecutable" --add-flags "$execArgs"
|
||||||
|
)
|
||||||
|
else
|
||||||
|
ln -s "$binary" "$bundleExecutable"
|
||||||
|
fi
|
||||||
''
|
''
|
||||||
|
@ -204,8 +204,8 @@ processExecFieldCodes() {
|
|||||||
local -r execNoKC="${execNoK/\%c/$(getDesktopParam "${file}" "Name")}"
|
local -r execNoKC="${execNoK/\%c/$(getDesktopParam "${file}" "Name")}"
|
||||||
local -r icon=$(getDesktopParam "${file}" "Icon")
|
local -r icon=$(getDesktopParam "${file}" "Icon")
|
||||||
local -r execNoKCI="${execNoKC/\%i/${icon:+--icon }${icon}}"
|
local -r execNoKCI="${execNoKC/\%i/${icon:+--icon }${icon}}"
|
||||||
local -r execNoKCIfu="${execNoKCI/\%[fu]/\$1}"
|
local -r execNoKCIfu="${execNoKCI/ \%[fu]/}"
|
||||||
local -r exec="${execNoKCIfu/\%[FU]/\$@}"
|
local -r exec="${execNoKCIfu/ \%[FU]/}"
|
||||||
if [[ "$exec" != "$execRaw" ]]; then
|
if [[ "$exec" != "$execRaw" ]]; then
|
||||||
echo 1>&2 "desktopToDarwinBundle: Application bundles do not understand desktop entry field codes. Changed '$execRaw' to '$exec'."
|
echo 1>&2 "desktopToDarwinBundle: Application bundles do not understand desktop entry field codes. Changed '$execRaw' to '$exec'."
|
||||||
fi
|
fi
|
||||||
|
Loading…
Reference in New Issue
Block a user