diff --git a/extensions/desktop/command-chain-kde/Makefile b/extensions/desktop/command-chain-kde/Makefile new file mode 100644 index 0000000000..4ace2fd0de --- /dev/null +++ b/extensions/desktop/command-chain-kde/Makefile @@ -0,0 +1,13 @@ +#!/usr/bin/make -f + +BIN_DIR := $(DESTDIR)/snap/command-chain +GPU_WRAPPER := + +scripts = hooks-configure-fonts desktop-launch run $(GPU_WRAPPER) + +*: + install -D -m755 "$@" "$(BIN_DIR)"/"$@" + +install: $(scripts) + +.PHONY: $(scripts) diff --git a/extensions/desktop/command-chain-kde/desktop-launch b/extensions/desktop/command-chain-kde/desktop-launch new file mode 100644 index 0000000000..c32ad5b867 --- /dev/null +++ b/extensions/desktop/command-chain-kde/desktop-launch @@ -0,0 +1,5 @@ +#!/bin/bash + +set -- "${SNAP}/kf6/command-chain/desktop-launch6" "$@" +# shellcheck source=/dev/null +source "${SNAP}/snap/command-chain/run" diff --git a/extensions/desktop/command-chain-kde/gpu-2404-wrapper b/extensions/desktop/command-chain-kde/gpu-2404-wrapper new file mode 100644 index 0000000000..997466660d --- /dev/null +++ b/extensions/desktop/command-chain-kde/gpu-2404-wrapper @@ -0,0 +1,5 @@ +#!/bin/bash + +set -- "${SNAP}/gpu-2404/bin/gpu-2404-provider-wrapper" "$@" +# shellcheck source=/dev/null +source "${SNAP}/snap/command-chain/run" diff --git a/extensions/desktop/command-chain-kde/hooks-configure-fonts b/extensions/desktop/command-chain-kde/hooks-configure-fonts new file mode 100644 index 0000000000..3431e6c80d --- /dev/null +++ b/extensions/desktop/command-chain-kde/hooks-configure-fonts @@ -0,0 +1,5 @@ +#!/bin/bash + +set -- "${SNAP}/kf6/command-chain/hooks-configure-fonts" "$@" +# shellcheck source=/dev/null +source "${SNAP}/snap/command-chain/run" diff --git a/extensions/desktop/command-chain-kde/run b/extensions/desktop/command-chain-kde/run new file mode 100644 index 0000000000..f9d2282f0b --- /dev/null +++ b/extensions/desktop/command-chain-kde/run @@ -0,0 +1,25 @@ +#!/bin/bash + +if [ -z "$1" ]; then + echo "run " + exit 1 +fi + +if [ -z "${SNAP}" ]; then + echo "Not running inside a snap context: SNAP not declared" + exit +fi + + +if [ ! -f "$1" ]; then + echo "Content snap command-chain for $1 not found: ensure slot is connected" + exit +fi + +# emulate "exec $@" using "source" +# have to disable "unused variables" because checkshell doesn't know that $BASH_ARGV0 is $0 +# shellcheck disable=SC2034 # Unused variables left for readability +BASH_ARGV0=$1 +shift +# shellcheck source=/dev/null +source "$0" diff --git a/snapcraft/extensions/kde_neon_6.py b/snapcraft/extensions/kde_neon_6.py index 505b6b525c..21ea4c57b0 100644 --- a/snapcraft/extensions/kde_neon_6.py +++ b/snapcraft/extensions/kde_neon_6.py @@ -93,7 +93,7 @@ def is_experimental(base: Optional[str]) -> bool: @overrides def get_app_snippet(self) -> Dict[str, Any]: - command_chain = ["snap/command-chain/desktop-launch6"] + command_chain = ["snap/command-chain/desktop-launch"] if self.yaml_data["base"] == "core24": command_chain.insert(0, "snap/command-chain/gpu-2404-wrapper") return { @@ -352,7 +352,7 @@ def get_parts_snippet(self) -> Dict[str, Any]: # We can change this to the lightweight command-chain when # the content snap includes the desktop-launch from # https://github.com/canonical/snapcraft-desktop-integration - source = get_extensions_data_dir() / "desktop" / "kde-neon-6" + source = get_extensions_data_dir() / "desktop" / "command-chain-kde" gpu_opts = {} if self.yaml_data["base"] == "core24": diff --git a/tests/unit/extensions/test_kde_neon_6.py b/tests/unit/extensions/test_kde_neon_6.py index ba19a6b205..99bc9bcdeb 100644 --- a/tests/unit/extensions/test_kde_neon_6.py +++ b/tests/unit/extensions/test_kde_neon_6.py @@ -134,7 +134,7 @@ def test_is_experimental(): def test_get_app_snippet(kde_neon_6_extension): assert kde_neon_6_extension.get_app_snippet() == { - "command-chain": ["snap/command-chain/desktop-launch6"], + "command-chain": ["snap/command-chain/desktop-launch"], "plugs": [ "desktop", "desktop-legacy", @@ -153,7 +153,7 @@ def test_get_app_snippet_core24(kde_neon_6_extension_core24): assert kde_neon_6_extension_core24.get_app_snippet() == { "command-chain": [ "snap/command-chain/gpu-2404-wrapper", - "snap/command-chain/desktop-launch6", + "snap/command-chain/desktop-launch", ], "plugs": [ "desktop", @@ -705,7 +705,7 @@ def assert_get_part_snippet(kde_neon_6_instance): def test_get_parts_snippet(kde_neon_6_extension): - source = get_extensions_data_dir() / "desktop" / "kde-neon-6" + source = get_extensions_data_dir() / "desktop" / "command-chain-kde" assert kde_neon_6_extension.get_parts_snippet() == { "kde-neon-6/sdk": { @@ -729,7 +729,7 @@ def test_get_parts_snippet(kde_neon_6_extension): def test_get_parts_snippet_core24(kde_neon_6_extension_core24): - source = get_extensions_data_dir() / "desktop" / "kde-neon-6" + source = get_extensions_data_dir() / "desktop" / "command-chain-kde" assert kde_neon_6_extension_core24.get_parts_snippet() == { "kde-neon-6/sdk": { @@ -755,7 +755,7 @@ def test_get_parts_snippet_core24(kde_neon_6_extension_core24): def test_get_parts_snippet_with_external_sdk(kde_neon_6_extension_with_build_snap): - source = get_extensions_data_dir() / "desktop" / "kde-neon-6" + source = get_extensions_data_dir() / "desktop" / "command-chain-kde" assert kde_neon_6_extension_with_build_snap.get_parts_snippet() == { "kde-neon-6/sdk": { @@ -769,7 +769,7 @@ def test_get_parts_snippet_with_external_sdk(kde_neon_6_extension_with_build_sna def test_get_parts_snippet_with_external_sdk_different_channel( kde_neon_6_extension_with_default_build_snap_from_latest_edge_core24, ): - source = get_extensions_data_dir() / "desktop" / "kde-neon-6" + source = get_extensions_data_dir() / "desktop" / "command-chain-kde" assert kde_neon_6_extension_with_default_build_snap_from_latest_edge_core24.get_parts_snippet() == { "kde-neon-6/sdk": { "source": str(source),