Adds translations for the authentication check message and description
in the polkit policy file. This provides a better user experience
by displaying authentication prompts and descriptions in the user's
preferred language. The addition covers a wide range of languages to
ensure broad accessibility.
Influence:
1. Verify that the authentication prompts are displayed in the correct
language based on the system locale.
2. Test the authentication process with different language settings to
ensure that all translations are correctly loaded and displayed.
3. Ensure that untranslated strings fallback gracefully to a default
language (e.g., English).
feat: 为 polkit 策略添加翻译
为 polkit 策略文件中的身份验证检查消息和描述添加翻译。这通过以用户首选的
语言显示身份验证提示和描述来提供更好的用户体验。 添加涵盖了广泛的语言,
以确保广泛的可访问性。
Influence:
1. 验证身份验证提示是否根据系统区域设置以正确的语言显示。
2. 使用不同的语言设置测试身份验证过程,以确保所有翻译都正确加载和显示。
3. 确保未翻译的字符串可以优雅地回退到默认语言(例如,英语)。
1. Add environment variable support to Cmd class for process execution
2. Set GIT_SUBMODULES=true when executing source fetch scripts
3. Conditionally execute git submodule commands based on GIT_SUBMODULES
env var
4. Fix member variable naming in Cmd class (command -> m_command)
5. Pass environment variables to command existence checking process
This change allows git submodules to be fetched only when explicitly
enabled through the GIT_SUBMODULES environment variable, providing
better control over the source fetching process. The environment
variable mechanism was added to the Cmd utility class to support this
feature, and existing command execution logic was updated to use proper
member variable naming conventions.
Log: Added conditional git submodule fetching support in source fetcher
Influence:
1. Test git repository fetching with submodules enabled
2. Verify git repository fetching without submodules (default behavior)
3. Test environment variable passing in command execution
4. Verify command existence checking with environment variables
5. Test source fetching for projects with and without submodules
6. Validate that existing git fetch functionality remains unchanged
feat: 通过环境变量控制启用 git 子模块获取
1. 为 Cmd 类添加环境变量支持以执行进程
2. 在执行源码获取脚本时设置 GIT_SUBMODULES=true
3. 基于 GIT_SUBMODULES 环境变量条件性执行 git 子模块命令
4. 修正 Cmd 类中的成员变量命名(command -> m_command)
5. 将环境变量传递给命令存在性检查进程
此变更允许仅在通过 GIT_SUBMODULES 环境变量明确启用时才获取 git 子模块,
从而更好地控制源码获取过程。为支持此功能,向 Cmd 工具类添加了环境变量机
制,并更新了现有命令执行逻辑以使用正确的成员变量命名约定。
Log: 在源码获取器中添加条件性 git 子模块获取支持
Influence:
1. 测试启用子模块的 git 仓库获取
2. 验证不带子模块的 git 仓库获取(默认行为)
3. 测试命令执行中的环境变量传递
4. 验证带环境变量的命令存在性检查
5. 测试带和不带子模块的项目源码获取
6. 验证现有 git 获取功能保持不变
1. Changed the method for copying cached files to the output file from
`cp` to `cp --remove-destination --link`.
2. This introduces hard links instead of full copies, significantly
improving performance when fetching files from the cache. A fallback
`cp` is included to handle cases where hard linking might fail (e.g.,
due to filesystem limitations).
3. The `--remove-destination` option ensures that if the destination
file already exists, it's removed before creating the hard link,
preventing errors.
Log: Improved file fetching performance by utilizing hard links for
cached files
Influence:
1. Verify that files fetched from the cache are functionally identical
before and after the change.
2. Measure the performance of file fetching (time taken) with and
without the hard link optimization.
3. Test the fallback `cp` mechanism by simulating scenarios where hard
linking might fail (e.g., by mounting a filesystem that doesn’t support
it).
4. Confirm that the fallback `cp` still correctly copies the file in
case of hard link failure.
修复: 使用硬链接优化文件获取
1. 将从缓存复制文件的写入方式从 `cp` 改为 `cp --remove-destination
--link`。
2. 这样可引入硬链接,而不是完整复制,从而显著提高性能,尤其是在从缓存获
取文件时。 包含一个备用 `cp` 以处理硬链接可能失败的场景(例如,由于文件
系统限制)。
3. `--remove-destination` 选项可确保如果目标文件已存在,则在创建硬链接之
前将其删除,从而防止错误。
Log: 通过使用硬链接来改善文件获取性能
Influence:
1. 验证在更改前后,从缓存获取的文件在功能上是否相同。
2. 测量带和不带硬链接优化时文件获取的性能(耗时)。
3. 测试通过模拟无法进行硬链接的场景(例如,挂载不支持它的文件系统)来测
试备用 `cp` 机制。
4. 确认在硬链接失败时,备用 `cp` 仍然可以正确复制文件。
Update installation paths for shell scripts to use
`CMAKE_INSTALL_FULL_SYSCONFDIR` instead of `CMAKE_INSTALL_SYSCONFDIR`.
This ensures that the scripts are installed in the correct location,
even when the installation prefix is not the root directory. This fixes
issues where linglong related scripts were not correctly installed in
non-standard installation paths.
Influence:
1. Verify that linglong.sh is installed to the correct path, both when
installing to /usr and to a non-standard prefix.
2. Check that the environment variables set in the script are correctly
sourced when a new session starts.
1. Replace hardcoded /etc paths with CMAKE_INSTALL_SYSCONFDIR variable
2. Fix two installation destinations in the CMakeLists.txt file:
- Changed /etc/profile.d to ${CMAKE_INSTALL_SYSCONFDIR}/profile.d
- Changed /etc/X11/Xsession.d to ${CMAKE_INSTALL_SYSCONFDIR}/X11/
Xsession.d
3. This makes the installation paths configurable through CMake rather
than hardcoded
4. The change ensures better compatibility across different Linux
distributions and packaging systems
Influence:
1. Test installation on target system to verify script placement
2. Check that environment variables are properly set in both profile.d
and Xsession.d locations
3. Verify package builds work correctly with custom
CMAKE_INSTALL_SYSCONFDIR values
fix: 使用 CMAKE_INSTALL_SYSCONFDIR 变量替代配置路径中的硬编码值
1. 将原有的硬编码路径 /etc 替换为 CMAKE_INSTALL_SYSCONFDIR 变量
2. 修改了 CMakeLists.txt 中的两个安装路径:
- 将 /etc/profile.d 替换为 ${CMAKE_INSTALL_SYSCONFDIR}/profile.d
- 将 /etc/X11/Xsession.d 替换为 ${CMAKE_INSTALL_SYSCONFDIR}/X11/
Xsession.d
3. 这使得安装路径可以通过 CMake 配置而非固定写死
4. 此修改提升了不同 Linux 发行版和打包系统的兼容性
Influence:
1. 在目标系统上测试安装以验证脚本位置的正确性
2. 检查 profile.d 和 Xsession.d 中的环境变量是否正确设置
3. 验证使用自定义 CMAKE_INSTALL_SYSCONFDIR 值时的包构建过程
This commit adds a new application icon for Linyaps and integrates it
into the desktop entry.
The `linyaps.svg` file contains the vector graphic for the icon. The
CMakeLists.txt file is updated to install the icon to the correct
location in the file system (`/usr/share/icons/hicolor/scalable/apps`).
The `linyaps.desktop` file is modified to use the new icon by setting
the `Icon` field to "linyaps".
This change improves the visual presentation of the Linyaps application
in the desktop environment.
Log: Added application icon for Linyaps
Influence:
1. Verify that the Linyaps icon is displayed correctly in application
launchers and desktop environments.
2. Check that the icon is visually appealing and consistent with the
application's branding.
3. Test the icon at different sizes to ensure it remains clear and
recognizable.
4. Confirm that the icon is correctly installed to the system's icon
directory.
This change hides the `linyaps.desktop` file by setting `Hidden=true`.
This is necessary because the application is not intended to be launched
directly by the user through the desktop environment. The intended
use is via command line invocation through `ll-cli install`. Preventing
direct launching reduces potential user confusion, as it requires
specific arguments only provided via the command line interface.
Influence:
1. Verify that the application is not visible in the desktop environment
application launcher or file manager.
2. Confirm that the application can still be invoked through the command
line using `ll-cli install`.
chore: 隐藏如意玲珑桌面文件
此更改通过设置 `Hidden=true` 来隐藏 `linyaps.desktop` 文件。 这是必要
的,因为该应用程序不打算由用户通过桌面环境直接启动。 预期用途是通过 `ll-
cli install` 的命令行调用。 阻止直接启动可减少潜在的用户困惑,因为它需要
仅通过命令行界面提供的特定参数。
Influence:
1. 验证该应用程序在桌面环境应用程序启动器或文件管理器中不可见。
2. 确认仍然可以使用 `ll-cli install` 通过命令行调用该应用程序。
1. Removed debug logging code that was checking for script readability
2. Changed from direct export to echo output for systemd environment
handling
3. Simplified the logic by removing redundant checks since systemd
generators expect echo output
4. The change aligns better with systemd's environment generator
expectations where variables should be echoed rather than exported
directly
refactor: 简化 systemd 生成器中的环境变量处理
1. 移除了检查脚本可读性的调试日志代码
2. 将直接导出改为 echo 输出以适配 systemd 环境处理
3. 通过移除冗余检查简化了逻辑,因为 systemd 生成器期望 echo 输出
4. 此变更更符合 systemd 环境生成器的预期,变量应该通过 echo 输出而非直接
导出
Previously, app-specific patches were identified by matching the patch
filename (without the extension) against the application ID. This
approach was flawed as it caused patch conflicts between different
applications. For example, a patch named `com.app.A.json`, intended
only for `com.app.A`, would be incorrectly applied as a global patch
to `com.app.B`.
This commit introduces a directory-based mechanism to correctly isolate
application-specific patches. All patches for a specific app must now
reside within a subdirectory named after the app ID.
Signed-off-by: reddevillg <reddevillg@gmail.com>
1. provide application level patches
2. application level patches will apply after global patches
move configure.h.in to src root, becasue lib utils depends on QT,
we don't want to introduce QT in certain scenarios.
Signed-off-by: reddevillg <reddevillg@gmail.com>
1. The custom desktop exported directory(CUSTOM_DATA_DIR) should only be in the share dir, not in the subdirectory;
2. LINGLONG_DATA_DIR should be exported;
3. need to update LINGLONG_EXPORT_VERSION to fix export.
This change enhances both bash and zsh completions for the ll-cli tool
by:
1. Adding a new function to specifically list installed applications
2. Updating the run, uninstall, and content commands to show only apps
in their tab completion suggestions instead of all installed
components
3. Making the completion more contextually relevant for these commands
Option --loader=<app_loader> can be used to run app without container
involved. With custom loader, only app's layer will be exported. When
custom loader get started, environment variable LINGLONG_UAB_APPROOT
is the app directory.
The default priority for the stable repository is 0.
When adding a new repository, its priority will be set to the current minimum priority minus 100.
If the new repository is set as the default repository, its priority will be set to the current maximum priority plus 100.
Added the set-priority subcommand to allow manual specification of priorities (duplicates are not allowed).
Provide "build depends" and "depends" for apt build extension, build
phase seperate into build phase and prepare phase. "build depends"
to be installed in build environment before build phase starting, and
preserve in overlayfs. "depends" to be installed in prepare phase, and
will be merged to apps output.
Add the --alias option to set aliases for the 'll-cli repo add' and 'll-builder repo add' commands.
So update, remove, and set-default also need to pass alias instead of name.
* Add dbus method GenerateCache, signal GenerateCacheFinished. (PM)
* Add an exclusive write lock to the application cache in
ensureCache to ensure that the container runs after the cache
is generated. (cli)
Log:
The caches that have been processed are ld.so.cache and font cache.
Code:
* Add a new member ContainerBuilder to PackageManager. (package_manager)
* Add a new scripts to gererate cache in container. (ld-cache-generator/font-cache-generator)
* Add new func generateCache() to execute app-cache-generator. (pacakge_manager)
* Add new func removeCache() to remove cache. (package_manager)
* Mount the cache during running application. (cli)
Mount:(host->container)
* Remove /var/cache/fontconfig -> /var/cache/fontconfig
* Add /usr/local/share/fonts -> /usr/local/share/fonts
* Add /var/lib/linglong/cache/[hash] -> /run/linglong/cache
* Add /var/lib/linglong/cache/[hash]/fontconfig -> /var/cache/fontconfig
Config: (config.json)
* Remove the hooks part.
* Change env LINGLONG_LD_SO_CACHE to /run/linglong/cache/ld.so.cache.
Log:
Configuration() and setConfiguration() could be failed. Due to
the limit of dbus permission policy, we should call runningAsRoot()
before setConfiguration().
Log:
ll-package-manager will delay the uninstall process of application
if there are running containers that are using the application that
will be uninstalled and ll-package-manager may not daemonlize anymore
in the future.
So we need a mecanism to sync states and let ll-package-manager to know
how many running container there are and whether container is building
or not.
ll-cli should touch a file under /run/linglong/UID which named
with current pid and left empty to present initialization of ll-cli is
incomplete, ll-package-manager should waiting until all file are valid
(or exit immediately) if ll-package-manager want to uninstalling
package.
Signed-off-by: ComixHe <heyuming@deepin.org>
* Add some rules to the dbus conf of PM:
For deepin-linglong and root, allow to call any method.
For other users, they should not call any method instead of Search.
* Capture the error of dbus reply which is from PM. If the error type is 'AccessDenied',
notify pepole and return.
Log:
Modify the mount permissions of a root filesystem, so that it allows applications to read and write files to the host file system.
For example, deepin calendar needs to create a systemd timer in the ~/.cache/systemd directory, but ~/.cache directory is overlay by linglong, you can use /run/hosts/rootfs/home/xxx/.cache/systemd.
Bug: https://pms.uniontech.com/bug-view-271647.html
This patch deprecate the linglong-upgrade script, linglong-upgrade
systemd service and systemd timer.
Check comments in linglong-upgrade.service for more information.
This patch does two things:
- Adjust linglong data directory order in XDG_DATA_DIRS;
See comments in
/misc/lib/systemd/system-environment-generators/61-linglong
for more information.
- Remove user level linglong data directory in XDG_DATA_DIRS;
We are not going to implement user level installation in linyaps.
Signed-off-by: black-desk <me@black-desk.cn>
* Updates to base and runtime need to be separated
from applications. Temporarily handle this in the
automatic update script.
* installedAppFuzzyRef should parse from paras->package.
Log:
systemd-tmpfiles-setup.service will call systemd-tmpfiles with --remove
at boot, which will remove all D directories.
So we should use d to make --remove not effect on /var/lib/linglong
1. Use tmpfiles.d to create /var/lib/linglong instead of ExecPre of
systemd service;
2. Run wrap-and-sort;
3. Sort files to configure in misc/CMakeLists.txt.
Refer to manpage of systemd.service:
> For bus-activatable services,
> do not include a [Install] section in the systemd service file,
> but use the SystemdService= option
> in the corresponding DBus service file,
> for example ...
We should not have an Install section here.
Also remove some unused capability limit.