Commit Graph

586 Commits

Author SHA1 Message Date
reddevillg 62a34749ec feat: support build extension
Introduce RunContext to unify runtime layer resolution, requiring
changes across the builder, CLI, and PM.

Signed-off-by: reddevillg <reddevillg@gmail.com>
2025-05-20 17:18:42 +08:00
reddevillg 6ee4e1f45d feat: add extension interface
Signed-off-by: reddevillg <reddevillg@gmail.com>
2025-05-20 17:18:42 +08:00
reddevillg 49c6660326 feat: add extension schema
Signed-off-by: reddevillg <reddevillg@gmail.com>
2025-05-20 17:18:42 +08:00
ComixHe 642f64365e fix: returns only if creating directories failed
std::filesystem::creat_directories does not treated this as an error

Signed-off-by: ComixHe <heyuming@deepin.org>
2025-05-15 22:08:27 +08:00
dengbo 5249e61543 fix: ll-cli failed to start app
Improve error handling for filesystem existence checks.
2025-05-15 15:48:39 +08:00
ice909 ca321628aa feat: add support for installing packages from specific repositories
1. Added a new --repo option to the install command to specify a
repository for installation
2. Enhanced repository management with priority-based package resolution
3. Implemented methods to get, promote and recover repository priorities
4. Updated package installation logic to respect repository selection
5. Improved error handling for module not found cases
6. Added ReferenceWithRepo struct to track package references with their
source repositories
2025-05-15 12:23:25 +08:00
ice909 0d5c60c13f feat: implement printMessage method for JSONPrinter
Added implementation for JSONPrinter::printMessage method to output
messages
in JSON format. The method serializes the message as a JSON object with
a
"message" property. This enhances the JSON output capability by properly
handling messages alongside other data types.
2025-05-14 13:14:31 +08:00
ComixHe dbe988add5 style: format whole project
based on clang-format 19.1.7

Signed-off-by: ComixHe <heyuming@deepin.org>
2025-05-14 11:35:50 +08:00
ice909 eac643f380 feat: sort search results
Sort results of ll-cli search and list.

Signed-off-by: ice909 <gaochang1@uniontech.com>
2025-05-14 10:42:11 +08:00
ice909 92bd730be8 fix: improve package version filtering logic
This change optimizes the version filtering process by:
1. Replacing QString::fromStdString() with direct c_str() calls to
eliminate unnecessary string conversions
2. Directly updating existing entries instead of creating temporary maps
3. Adding proper checks when updating package repositories to prevent
overwriting existing entries
2025-05-13 16:24:21 +08:00
ice909 ef42541df1 refactor: search no longer supports specifying a version
Signed-off-by: ice909 <gaochang1@uniontech.com>
2025-05-12 15:31:56 +08:00
dengbo 8b2d49a6f1 refactor: adjust the default display type
The default display type is changed from app to all.
2025-05-12 10:27:23 +08:00
ice909 bb3624da8e feat: enhance package search with multi-repository support
1. Added repository field to search parameters requiring specifying
repos to search
2. Modified search implementation to support searching in multiple
repositories
3. Restructured search results to group packages by repository source
4. Added --repo option to the CLI search command
5. Updated display format to show repository information in search
results
6. Improved filtering logic to work with the repository-grouped package
structure
7. Added PackageManager1PruneResult type to separate it from search
results
2025-05-09 17:05:28 +08:00
ComixHe a784389854 refactor: improve installing from uab/layer
Signed-off-by: ComixHe <heyuming@deepin.org>
2025-05-08 21:08:45 +08:00
ice909 2628ef3873 refactor: simplify repository priority management
1. Remove automatic priority calculation when adding new repos
2. Remove automatic priority adjustment when setting default repo
3. Allow multiple repositories to have the same priority value
4. Use stable sort when displaying repositories to maintain order for
equal priorities
5. Set new repositories' default priority to 0 instead of calculated
value

refactor: 简化仓库优先级管理

1. 移除添加新仓库时的自动优先级计算
2. 移除设置默认仓库时的自动优先级调整
3. 允许多个仓库具有相同的优先级值
4. 使用稳定排序显示仓库,以维持优先级相同时的原始顺序
5. 设置新仓库的默认优先级为0,取代之前的计算值
2025-05-08 17:44:27 +08:00
ice909 b90a8abd53 style: improve repository information display formatting
Enhance CLI repository information display with dynamic column widths
and URL truncation:
1. Calculate maximum lengths for name, URL, and alias columns
dynamically
2. Limit URL display length to 100 characters with ellipsis for longer
URLs
3. Use calculated widths instead of fixed column widths for better
alignment
4. Truncate long URLs with "..." to improve readability

style: 改进仓库信息显示格式

增强命令行界面仓库信息显示,使用动态列宽和 URL 截断:
1. 动态计算名称、URL 和别名列的最大长度
2. 限制 URL 显示长度为 100 个字符,超长时添加省略号
3. 使用计算出的宽度而非固定列宽,以获得更好的对齐效果
4. 为长 URL 添加"..."截断,提高可读性
2025-05-08 17:44:27 +08:00
ComixHe 34a5d847f3 refactor(semver): remove C++20 code
Signed-off-by: ComixHe <heyuming@deepin.org>
2025-05-08 16:34:39 +08:00
ice909 0d6f12c49e chore: format semver_increment_test.cpp
Signed-off-by: ice909 <gaochang1@uniontech.com>
2025-05-08 16:11:03 +08:00
reddevillg 9946fa8d54 fix: make /sys, /proc, /dev and /tmp default
Signed-off-by: reddevillg <reddevillg@gmail.com>
2025-05-08 16:07:03 +08:00
ice909 9785d14127 refactor: remove unused VersionRange class and related code
This change removes the VersionRange class which was marked with a TODO
comment
as "currently not used". Also removes the unused PreRelease struct from
version.cpp that was marked as having "no practical use". Deleted
associated
test files and updated CMake configuration files to reflect these
removals.

refactor: 移除未使用的 VersionRange 类及相关代码

此更改移除了标记为"当前未使用"的 VersionRange 类。同时删除了 version.cpp
中被标记为"无实际用途"的未使用 PreRelease 结构体。删除了相关的测试文件,
并更新了 CMake 配置文件以反映这些移除。
2025-05-08 15:05:32 +08:00
ice909 a9c83dbef8 refactor: implement semantic version matching
1. Added semanticMatch functionality to VersionV1, VersionV2, and
FallbackVersion classes
2. Added semanticMatching flag to clearReferenceOption struct
3. Updated clearReference implementations to use semantic version
matching
4. Modified package filtering to support semantic versioning
5. Replaced version tweak handling with more robust semantic matching
6. Enabled semantic matching in Builder, PackageManager and CLI
components

refactor: 实现语义化版本匹配

1. 为 VersionV1、VersionV2 和 FallbackVersion 类添加 semanticMatch 功能
2. 在 clearReferenceOption 结构体中添加 semanticMatching 标志
3. 更新 clearReference 实现以使用语义化版本匹配
4. 修改包过滤功能以支持语义化版本控制
5. 用更健壮的语义匹配替代版本补丁处理
6. 在 Builder、PackageManager 和 CLI 组件中启用语义化匹配
2025-05-08 15:05:32 +08:00
ice909 349230d544 feat: add a fallback parsing solution for version
Ensure that when the version number changes in the future, the old client will not throw an exception.
2025-05-08 15:05:32 +08:00
ice909 71a8e8041d feat: support semver sepc
Supports semver specification version numbers.
2025-05-08 15:05:32 +08:00
ice909 574c0db46c fix: restrict content command to app type layers only
Added validation to ensure the content command can only be used with
application layers by checking the layer kind. If the layer is not an
app,
an error message is displayed to inform the user that only app content
viewing is supported. This prevents potential issues when trying to view
content of non-application layers.

fix: 限制内容命令仅用于应用类型层

添加验证以确保内容命令只能用于应用层,方法是检查层的类型。
如果该层不是应用类型,则显示错误消息,通知用户只支持查看应用内容。
这可以防止尝试查看非应用层内容时可能出现的问题。
2025-05-07 14:41:48 +08:00
reddevillg 2eebc546a7 fix: make the mount adjustment behavior clearer
Signed-off-by: reddevillg <reddevillg@gmail.com>
2025-05-07 13:21:17 +08:00
dengbo ca9cbe7449 fix: app can not open url
Update URL prefix to use Correct file path.
2025-04-29 16:11:32 +08:00
dengbo 8c8ba9ae10 fix: build error in ci build
Correct string formatting.
2025-04-29 16:00:04 +08:00
reddevillg 3e0a9d8ca5 feat: use ll-box in ll-builder-utils when export UAB
Signed-off-by: reddevillg <reddevillg@gmail.com>
2025-04-28 15:13:11 +08:00
ComixHe d8b25b4b7c fix: remove binding host certs for now
Certificate name resolvtion is very complicated
we shouldn't bind /etc/ssl/certs to container directly

Signed-off-by: ComixHe <heyuming@deepin.org>
2025-04-28 15:07:46 +08:00
ice909 d9d0a802c6 feat: support specifying the desktop installation directory
Specify 'LINGLONG_DESKTOP_EXPORT_PATH' during compilation.

Signed-off-by: ice909 <gaochang1@uniontech.com>
2025-04-27 14:21:10 +08:00
reddevillg c3d407e004 fix: fix /tmp bind in multiple users envrionment
Signed-off-by: reddevillg <reddevillg@gmail.com>
2025-04-27 11:31:34 +08:00
reddevillg 0a17cb711f feat: generate ld cache in a separate running container
Signed-off-by: reddevillg <reddevillg@gmail.com>
2025-04-25 13:26:22 +08:00
ComixHe 5f78b356e2 fix: remove option 'nosymfollow'
'nosymfollow' doesn't satisfying with our purpose

Signed-off-by: ComixHe <heyuming@deepin.org>
2025-04-25 09:33:14 +08:00
ComixHe be075cc7b0 fix: skip binding XauthFile if it not exists
Signed-off-by: ComixHe <heyuming@deepin.org>
2025-04-24 18:18:42 +08:00
ComixHe 1840243f59 refactor: fix compiling warnings
Signed-off-by: ComixHe <heyuming@deepin.org>
2025-04-24 13:53:45 +08:00
ice909 52ae54a70d fix: cannot set priority
Signed-off-by: ice909 <gaochang1@uniontech.com>
2025-04-22 19:08:07 +08:00
reddevillg 06cdb32115 refactor: refactor ll-builder main function
Signed-off-by: reddevillg <reddevillg@gmail.com>
2025-04-21 16:00:57 +08:00
ice 5eb436842a
feat: print builder version when building the project (#1131)
Signed-off-by: ice909 <gaochang1@uniontech.com>
2025-04-17 19:19:14 +08:00
dengbo 9e05fb32d2 fix: unable to start the app normally when switching accounts
Do not use lock file to ensure cache generate, only determine whether the cache directory exists.
2025-04-17 15:10:58 +08:00
ComixHe ec5352d860 fix: correct container's hook
Signed-off-by: ComixHe <heyuming@deepin.org>
2025-04-16 16:50:29 +08:00
ice909 fb09ada313 feat: optimization error message
Define error codes to identify different errors.
The cli displays error information to users based on error codes.
Add -v,--verbose option to display detailed error information.

Signed-off-by: ice909 <gaochang1@uniontech.com>
2025-04-16 10:56:11 +08:00
ice909 83507c5b52 feat: optimized error msgs for base and runtime mismatches
Signed-off-by: ice909 <gaochang1@uniontech.com>
2025-04-15 16:15:10 +08:00
reddevillg f4503384d0 feat: use ll-builder-utils to export UAB
try to use uab-header, uab-loader and mkfs.erofs from ll-builder-utils

Signed-off-by: reddevillg <reddevillg@gmail.com>
2025-04-15 10:14:35 +08:00
reddevillg b8705353a6 feat: Add output file option and improve compressor handling
Signed-off-by: reddevillg <reddevillg@gmail.com>
2025-04-15 10:14:35 +08:00
reddevillg 0f76f9f006 feat: Bind host statics to container config builder
Signed-off-by: reddevillg <reddevillg@gmail.com>
2025-04-14 15:21:07 +08:00
reddevillg 71fb063e1c fix: clear project working directory
Set the directory containing the YAML file as the project working
directory

Signed-off-by: reddevillg <reddevillg@gmail.com>
2025-04-14 15:21:07 +08:00
ice 5821e5c4ef
chore: update translate (#1114)
add ca、fi、pl、pt_BR、uk translates.
fix some typo.

Signed-off-by: ice909 <gaochang1@uniontech.com>
2025-04-14 14:44:09 +08:00
ice909 44e1457705 fix: builder build crash
Signed-off-by: ice909 <gaochang1@uniontech.com>
2025-04-11 17:16:45 +08:00
ComixHe 306ff229f5 fix: failed to generate ldcache
remove 'RootfsPropagation' which cause to container failed to start

Signed-off-by: ComixHe <heyuming@deepin.org>
2025-04-11 17:14:58 +08:00
ice909 ab7a147d6a chore: adjust the builder output format
Increase the width of the packge under the builder Processing Dependency.

Signed-off-by: ice909 <gaochang1@uniontech.com>
2025-04-11 13:29:19 +08:00
ComixHe efc5f9d331 refactor: bind mount init to container
change the way of starting container

Signed-off-by: ComixHe <heyuming@deepin.org>
2025-04-10 16:52:23 +08:00
ComixHe 963e00d928 feat: vendoring 'dumb-init' as container init
project source: https://github.com/Yelp/dumb-init

We need an init process to forwarding signal and cleaning orphaned zombie processes.
In above cases, it is more convenent that replacing bash with dumb-init

Signed-off-by: ComixHe <heyuming@deepin.org>
2025-04-10 16:52:23 +08:00
reddevillg b67fc5c348 feat: add isolate network option for build
use --isolate-network to build in an isolated network environment
2025-04-08 10:08:43 +08:00
reddevillg 672f23f0d3 refactor: separate build process into several stages
separate build process into several stages
2025-04-08 10:08:43 +08:00
reddevillg 761d44f5ad refactor: make builder and pm use ContainerCfgBuiler
Make builder and pm use ContainerCfgBuiler
2025-04-08 10:08:43 +08:00
reddevillg 4524903d93 refactor: Introduce class ContainerCfgBuiler
Use builder design pattern to generate container config
2025-04-08 10:08:43 +08:00
ice909 4eaac1fe9a chore: change the connection timeout period to 5 seconds
Users can set the timeout period using environment variables `LINGLONG_CONNECT_TIMEOUT`.

Signed-off-by: ice909 <gaochang1@uniontech.com>
2025-04-07 17:30:11 +08:00
ice909 33f5913209 feat: extract the export paths as a config file
Signed-off-by: ice909 <gaochang1@uniontech.com>
2025-04-07 17:14:27 +08:00
reddevillg 5ab119abae fix: merge runtime module also
old runtime module is equal to binary module
2025-04-07 13:14:57 +08:00
ComixHe 6cdc6ca73d fix: failed to compile with qt 6.9
Signed-off-by: ComixHe <heyuming@deepin.org>
2025-04-03 15:14:47 +08:00
dengbo 2fb12eca32 feat: support Qt6 packaging
Support Qt6 packaging according to the method recommended by the Qt official.
2025-04-02 15:56:22 +08:00
ice909 337e42022f feat: support don't export the develop module
When exporting layer, add --no-develop to avoid exporting the develop module.

Signed-off-by: ice909 <gaochang1@uniontech.com>
2025-04-02 14:28:22 +08:00
ComixHe 6bfebe8e0c fix: compatible with qt 5.11
Signed-off-by: ComixHe <heyuming@deepin.org>
2025-04-02 14:24:07 +08:00
ice909 e8227994de chore: adjust the builder output format
Increase the width of the packge under the builder Processing Dependency.

Signed-off-by: ice909 <gaochang1@uniontech.com>
2025-04-02 14:22:22 +08:00
dengbo 9dad8536a6 feat: add share/templates dir to whitelist
Templates file should be exported, add it to whitelist.
2025-03-31 13:19:27 +08:00
dengbo bd5f7ebeee refactor: use the new unmount command to unmount the directory
Use fusermount -u to replace umount.
2025-03-28 13:16:51 +08:00
dengbo c6afc10ee2 fix: failed to umount layer dir
Layer dir has been umount in unpack,
so do not need to umount again in LayerPackager destructor.
2025-03-28 13:16:51 +08:00
ice909 e5010969ac fix: ll-builder build failed
Symbolic should only be created for directories.

Signed-off-by: ice909 <gaochang1@uniontech.com>
2025-03-28 12:25:40 +08:00
ice909 619a93ea5c fix: version comparison error
Direct string comparisons should not be used.

Signed-off-by: ice909 <gaochang1@uniontech.com>
2025-03-27 17:56:15 +08:00
myml b332bbd5df fix: exporting systemd service may cause system error
builder不再将systemd service导出到share目录,
避免因share优先级过高影响系统功能
2025-03-26 13:43:30 +08:00
reddevillg a7a8cf5efa fix: skip whiteout files
skip fuse-overlayfs whiteout files which name starts with ".wh."
2025-03-26 13:12:33 +08:00
reddevillg c7ba19a611 fix: fix compiler error
fix compiler error when use nlohmann from CPM
2025-03-26 11:09:08 +08:00
ComixHe 917e7f0977 fix: correct path deduplication while fixmount
only need to skip strictly equivalent path

Signed-off-by: ComixHe <heyuming@deepin.org>
2025-03-24 14:21:02 +08:00
dengbo 06dc2a06f8 fix: empty directory exists after app uninstall
Delete empty directories after uninstalling the app.
2025-03-20 17:40:25 +08:00
myml a11b66d9e3 fix: no free space when installing dependencies
tmp目录被挂载成tmpfs并且设置了64M大小, 导致安装deb依赖时报错
现在会在宿主机的tmp目录创建新的临时文件夹做为容器的tmp目录
2025-03-18 20:09:59 +08:00
myml 0450a2726c feat: supports selecting compression algorithm
在导出时传递参数自选压缩算法
layer默认使用lzma有更高压缩率
uab默认使用lz4可以更快解压速度,避免影响应用自运行
2025-03-18 15:16:36 +08:00
dengbo 534fb1b0f8 fix: dsg config not effective
DSG_APP_ID should be add to environment.
2025-03-18 14:52:14 +08:00
dengbo 05655fc764 feat: support export dsg config file
Support export dsg config file for self-developed applications.
2025-03-18 14:52:14 +08:00
ice909 4fa4148801 fix: Invalid symbolic links should also be copied
Signed-off-by: ice909 <gaochang1@uniontech.com>
2025-03-14 10:36:27 +08:00
ice909 52479429ae fix: relative symlinks to directories from becoming empty folders
When copying relative symlinks pointing to existing directories, they were incorrectly turned into empty folders.

Issue: https://github.com/OpenAtom-Linyaps/linyaps/issues/1039

Signed-off-by: ice909 <gaochang1@uniontech.com>
2025-03-14 10:36:27 +08:00
ice909 f72413cdd3 fix: ostree init failed
Signed-off-by: ice909 <gaochang1@uniontech.com>
2025-03-13 14:07:41 +08:00
ice909 f5cb7a22c0 fix: preserve packages with different modules while filtering by version
Previously, packages with the same id but different module values were incorrectly treated as the same package, causing some to be lost.
This fix ensures that (id, module) is used as the unique key, preserving all distinct packages while still filtering by version.

Signed-off-by: ice909 <gaochang1@uniontech.com>
2025-03-13 11:37:35 +08:00
ice909 1e9c45de71 fix: ostree repo config is not initialized
Signed-off-by: ice909 <gaochang1@uniontech.com>
2025-03-12 17:27:07 +08:00
dengbo a0f68ba652 refactor: adust the behavior of install UAB
Do not Execute UAB when install UAB.
2025-03-12 16:30:56 +08:00
ice909 cb3a81d50b fix: builder push crash
Push crashes when getting the default repository.
2025-03-10 17:46:17 +08:00
reddevillg 6ffb64124d fix: fix mapping file
fix an unintentional change made by commit d7cea3443a
2025-03-10 16:59:38 +08:00
ComixHe 278bbc63e4 fix: correct mount option for distribution.info
Signed-off-by: ComixHe <heyuming@deepin.org>
2025-03-10 10:28:02 +08:00
reddevillg abe82f68e2 fix: fix missing environment variable
Merge environment variable if possible
2025-03-06 12:02:53 +08:00
ice909 bbc864d9cd fix: repo output is not aligned
Fix repo's output title and value do not align.
2025-03-05 10:53:40 +08:00
ice909 904e726f12 fix: upgrade progress abnormal
Fix upgrade progress will exceed 100%.
2025-03-05 10:52:59 +08:00
ComixHe caf8886ed4 fix: container root must exist at the declared path
Signed-off-by: ComixHe <heyuming@deepin.org>
2025-03-05 10:52:04 +08:00
dengbo11 4c66ed5a85 feat(cli): ll-cli add dir sub command
ll-cli add dir sub command to support get layer director by appid.
2025-03-04 09:59:10 +08:00
myml 2805551ec7 feat: use getLayerDir when exporting
导出entires时不需要获取modules目录
2025-03-04 09:53:43 +08:00
ice909 6eb10ec317 fix: ostree config doesn't have the correct update
When adding and removing a repository, ostree's repo config isn't updated.
2025-03-03 21:22:37 +08:00
ice909 59d5af4116 feat: optimizing cli output
Optimize ps and list --upgrade's output.
2025-02-28 11:44:00 +08:00
reddevillg 3a08a6f794 fix: Fix export empty app layer
Fix export empty app layer
2025-02-27 20:32:12 +08:00
myml 52720d5fc8 fix: builder does not use the channel field of linglong.yaml
构建工具未使用linglong.yaml的channel字段

Log:
2025-02-27 20:31:33 +08:00
ComixHe d7cea3443a refactor: optimize starting container
Signed-off-by: ComixHe <heyuming@deepin.org>
2025-02-27 19:42:27 +08:00
reddevillg ba59b2239e fix: Dont't mapping the file under /home
Fix some applications can't write to files or delete files under home
directory
2025-02-27 19:22:08 +08:00
dengbo 34da329288 fix: rewrite file error
Should use complete base name rather than base name.
2025-02-27 16:16:42 +08:00