push sheeet
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s

This commit is contained in:
Dark Steveneq
2025-10-09 14:15:47 +02:00
commit 646b892680
49168 changed files with 5897842 additions and 0 deletions

View File

@@ -0,0 +1,59 @@
From e4fe87427f24aa9b506c15c0f73f298e8909aabe Mon Sep 17 00:00:00 2001
From: OPNA2608 <opna2608@protonmail.com>
Date: Fri, 31 May 2024 21:31:46 +0200
Subject: [PATCH] Inject current-system PATH
---
liblomiri-app-launch/jobs-systemd.cpp | 16 ++++++++++++++++
liblomiri-app-launch/jobs-systemd.h | 1 +
2 files changed, 17 insertions(+)
diff --git a/liblomiri-app-launch/jobs-systemd.cpp b/liblomiri-app-launch/jobs-systemd.cpp
index e9be801..246bea8 100644
--- a/liblomiri-app-launch/jobs-systemd.cpp
+++ b/liblomiri-app-launch/jobs-systemd.cpp
@@ -574,6 +574,20 @@ void SystemD::copyEnvByPrefix(const std::string& prefix, std::list<std::pair<std
}
}
+/* We don't have a normal PATH, so we need to inject our special one as a fallback & propagate it */
+void SystemD::setupNixosPath(std::list<std::pair<std::string, std::string>>& env)
+{
+ std::string newPath { "/run/current-system/sw/bin" };
+ char* oldPath = getenv("PATH");
+ if (oldPath != NULL && oldPath[0] != '\0')
+ {
+ newPath.insert(0, 1, ':');
+ newPath.insert(0, oldPath);
+ }
+ setenv("PATH", newPath.c_str(), true);
+ copyEnv("PATH", env);
+}
+
std::shared_ptr<Application::Instance> SystemD::launch(
const AppID& appId,
const std::string& job,
@@ -625,6 +639,8 @@ std::shared_ptr<Application::Instance> SystemD::launch(
copyEnv("DISPLAY", env);
+ setupNixosPath(env);
+
for (const auto& prefix : {"DBUS_", "MIR_", "LOMIRI_APP_LAUNCH_"})
{
copyEnvByPrefix(prefix, env);
diff --git a/liblomiri-app-launch/jobs-systemd.h b/liblomiri-app-launch/jobs-systemd.h
index fe35932..19bf44e 100644
--- a/liblomiri-app-launch/jobs-systemd.h
+++ b/liblomiri-app-launch/jobs-systemd.h
@@ -136,6 +136,7 @@ private:
static void copyEnv(const std::string& envname, std::list<std::pair<std::string, std::string>>& env);
static void copyEnvByPrefix(const std::string& prefix, std::list<std::pair<std::string, std::string>>& env);
static int envSize(std::list<std::pair<std::string, std::string>>& env);
+ static void setupNixosPath(std::list<std::pair<std::string, std::string>>& env);
static std::vector<std::string> parseExec(std::list<std::pair<std::string, std::string>>& env);
static void application_start_cb(GObject* obj, GAsyncResult* res, gpointer user_data);
--
2.42.0

View File

@@ -0,0 +1,156 @@
{
stdenv,
lib,
fetchFromGitLab,
gitUpdater,
testers,
cmake,
cmake-extras,
curl,
dbus,
dbus-test-runner,
dpkg,
gobject-introspection,
gtest,
json-glib,
libxkbcommon,
lomiri-api,
lttng-ust,
pkg-config,
properties-cpp,
python3,
systemd,
ubports-click,
validatePkgConfig,
zeitgeist,
withDocumentation ? true,
doxygen,
python3Packages,
sphinx,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "lomiri-app-launch";
version = "0.1.12";
outputs = [
"out"
"dev"
]
++ lib.optionals withDocumentation [
"doc"
];
src = fetchFromGitLab {
owner = "ubports";
repo = "development/core/lomiri-app-launch";
tag = finalAttrs.version;
hash = "sha256-vlSlQJysKmoGNmRtJ34FCI3p5bL7GDc8TjOljnKSiAE=";
};
patches = [
# Use /run/current-system/sw/bin fallback for desktop file Exec= lookups, propagate to launched applications
./2001-Inject-current-system-PATH.patch
];
postPatch = ''
patchShebangs tests/{desktop-hook-test.sh.in,repeat-until-pass.sh}
# used pkg_get_variable, cannot replace prefix
substituteInPlace data/CMakeLists.txt \
--replace-fail 'pkg_get_variable(SYSTEMD_USER_UNIT_DIR systemd systemduserunitdir)' 'pkg_get_variable(SYSTEMD_USER_UNIT_DIR systemd systemduserunitdir DEFINE_VARIABLES prefix=''${CMAKE_INSTALL_PREFIX})'
substituteInPlace tests/jobs-systemd.cpp \
--replace-fail '^(/usr)?' '^(/nix/store/\\w+-bash-.+)?'
'';
strictDeps = true;
nativeBuildInputs = [
cmake
dpkg # for setting LOMIRI_APP_LAUNCH_ARCH
gobject-introspection
lttng-ust
pkg-config
validatePkgConfig
]
++ lib.optionals withDocumentation [
doxygen
python3Packages.breathe
sphinx
];
buildInputs = [
cmake-extras
curl
dbus
json-glib
libxkbcommon
lomiri-api
lttng-ust
properties-cpp
systemd
ubports-click
zeitgeist
];
nativeCheckInputs = [
dbus
(python3.withPackages (
ps: with ps; [
python-dbusmock
]
))
];
checkInputs = [
dbus-test-runner
gtest
];
cmakeFlags = [
(lib.cmakeBool "ENABLE_MIRCLIENT" false)
(lib.cmakeBool "ENABLE_TESTS" finalAttrs.finalPackage.doCheck)
(lib.cmakeFeature "CMAKE_CTEST_ARGUMENTS" (
lib.concatStringsSep ";" [
# Exclude tests
"-E"
(lib.strings.escapeShellArg "(${
lib.concatStringsSep "|" [
# Flaky, randomly hangs
# https://gitlab.com/ubports/development/core/lomiri-app-launch/-/issues/19
"^helper-handshake-test"
]
})")
]
))
];
postBuild = lib.optionalString withDocumentation ''
make -C ../docs html
'';
doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
postInstall = lib.optionalString withDocumentation ''
mkdir -p $doc/share/doc/lomiri-app-launch
mv ../docs/_build/html $doc/share/doc/lomiri-app-launch/
'';
passthru = {
tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
updateScript = gitUpdater { };
};
meta = {
description = "System and associated utilities to launch applications in a standard and confined way";
homepage = "https://gitlab.com/ubports/development/core/lomiri-app-launch";
changelog = "https://gitlab.com/ubports/development/core/lomiri-app-launch/-/blob/${finalAttrs.version}/ChangeLog";
license = lib.licenses.gpl3Only;
teams = [ lib.teams.lomiri ];
platforms = lib.platforms.linux;
pkgConfigModules = [
"lomiri-app-launch-0"
];
};
})