Commit Graph

378 Commits

Author SHA1 Message Date
Comix ed7dd782e9
refactor(uab): skip fc-cahce hook if uab file was exported in OnlyApp (#966)
Signed-off-by: ComixHe <heyuming@deepin.org>
2025-01-16 16:51:14 +08:00
Comix 27ea143990
refactor: only create runtime directory before container running (#965)
Signed-off-by: ComixHe <heyuming@deepin.org>
2025-01-16 16:12:01 +08:00
dengbo 5db9d54b40 fix: error to export applications entries directory
1. we must fix export entries when in no dbus mode;
2. we must copy application entries directorys to the root entries
   directorys before rewrite file;
2025-01-10 22:00:11 +08:00
ComixHe ba889e2c46 chore: fix some compiler warnings
Signed-off-by: ComixHe <heyuming@deepin.org>
2025-01-10 12:08:59 +08:00
ComixHe ec86bf68f1 fix: remove unneeded template disambiguator
After llvm 19, the program is ill-formed if the name prefixed by the template keyword is not followed by a template-argument-list.
Original cwg defects : https://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#96

Signed-off-by: ComixHe <heyuming@deepin.org>
2025-01-10 12:08:59 +08:00
ComixHe 3c475dea5f fix: add runtimeCheck method for builder
all checkers should execute at the container which
based on binary layer

Signed-off-by: ComixHe <heyuming@deepin.org>
2025-01-09 14:50:27 +08:00
dengbo c7c3c6bb92 feat: add some translation
1. ll-dialog need to load translation file when running.
2. add some notification message translation.
2025-01-09 14:07:59 +08:00
ComixHe 67afecfb42 refactor(uab): adjust the process of creating container
to support self-running uab which is exported in 'onlyApp' mode

Signed-off-by: ComixHe <heyuming@deepin.org>
2025-01-07 11:54:08 +08:00
ComixHe 137fe30110 feat(builder): support exporting uab in 'onlyApp' mode
Signed-off-by: ComixHe <heyuming@deepin.org>
2025-01-07 11:54:08 +08:00
ComixHe a28330e1e4 refactor(uab): use fd with fchdir in pivotRoot instead of ll-host
Signed-off-by: ComixHe <heyuming@deepin.org>
2025-01-07 11:54:08 +08:00
ComixHe 30aaa4785b feat(box): skip creation process if some dev symbolic links existing
ll-box wouldn't treat EEXIST as an error during creating
some dev symbolic links.

Signed-off-by: ComixHe <heyuming@deepin.org>
2025-01-07 11:54:08 +08:00
ComixHe 6ec4093aa7 feat(box): check some needed kernel settings at runtime
Signed-off-by: ComixHe <heyuming@deepin.org>
2024-12-27 09:34:11 +08:00
ComixHe a3a04ef4e9 feat(box): support capabilities manipulation
Signed-off-by: ComixHe <heyuming@deepin.org>
2024-12-26 15:36:56 +08:00
ComixHe 11ce80835b feat: change the compression algorithm to zstd
erofsfuse use fuse3 after 1.8.3

Signed-off-by: ComixHe <heyuming@deepin.org>
2024-12-25 16:43:04 +08:00
myml 8e8bd7b0d7 feat: no need to export all entries on startup
不需要在每次启动package-manager时都执行一遍全量导出
2024-12-25 09:45:19 +08:00
ComixHe e1c9652009 fix: Correcting file mappings when there is no file path passing
Signed-off-by: ComixHe <heyuming@deepin.org>
2024-12-24 17:47:57 +08:00
ComixHe 53814760e8 fix(uab): use 'fusermount' to unmount erofs
Older versions of umount require root privileges

Signed-off-by: ComixHe <heyuming@deepin.org>
2024-12-24 17:47:57 +08:00
ComixHe 85cc8ea8ee build(uab): correct cmake file
Signed-off-by: ComixHe <heyuming@deepin.org>
2024-12-24 12:29:46 +08:00
myml 6abd470586 feat: ll-builder supports import directory
ll-builder import命令支持传递目录, 这便于制作base和手动修改app
2024-12-24 09:37:44 +08:00
myml 0b7d27fc0b fix: getRemoteModuleList for incompatibility with runtime modules
获取远程模块列表时, 应该考虑兼容旧版本的runtime modules
优化安装和升级流程, 只安装单个模块时, 不需要提前获取远程模块列表
2024-12-20 10:39:18 +08:00
ComixHe a39015081c refactor(gen): make all generator as a static library
Signed-off-by: ComixHe <heyuming@deepin.org>
2024-12-18 15:28:04 +08:00
myml 090c9613eb fix: incorrect official website display in the DTK About dialog
dtk的关于对话框中显示的网址信息是从系统文件中读取的,
需要将宿主机的文件挂载到容器中, 才能正常显示

Bug: https://pms.uniontech.com/bug-view-282565.html
2024-12-16 13:17:36 +08:00
ComixHe 4c5184d444 fix: QDesktopWidget is deprecated after Qt 6
Signed-off-by: ComixHe <heyuming@deepin.org>
2024-12-12 17:26:10 +08:00
kamiyadm 01babce152 fix: error message displayed when generating cache
If LINGLONG_SKIP_HOME_GENERATE is set, don't mount the home dir of host.

Log:
2024-12-12 17:26:10 +08:00
kamiyadm 429bd1cc7c refactor: adjust some cache generation and usage behaviors
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:
2024-12-12 17:26:10 +08:00
ComixHe 644c0c4c48 refactor(uab): remove dependency 'libelf'
implement needed functions in light_elf

Signed-off-by: ComixHe <heyuming@deepin.org>
2024-12-12 15:03:04 +08:00
kamiyadm 5682152a1d feat: add new dialog to show cache generation
-

Log:
2024-12-11 15:05:26 +08:00
ComixHe d2e37dc5cf feat: add permission dialog
Signed-off-by: ComixHe <heyuming@deepin.org>
2024-12-10 18:13:49 +08:00
ComixHe ee85b850b2 fix: exit when the destination of 'extract' isn't specific
Signed-off-by: ComixHe <heyuming@deepin.org>
2024-12-06 15:47:34 +08:00
ComixHe ac3fedcca1 fix(uab): Correct the creation of the directory where the destination is being unpacked
Signed-off-by: ComixHe <heyuming@deepin.org>
2024-12-05 14:10:11 +08:00
ComixHe f976ec0507 fix: correct error while parsing args of subCommand 'run' and 'kill'
Signed-off-by: ComixHe <heyuming@deepin.org>
2024-12-02 17:39:33 +08:00
ComixHe 44c9b617c2 fix: include filesystem due to compatible with old gcc
Signed-off-by: ComixHe <heyuming@deepin.org>
2024-12-02 16:29:15 +08:00
ComixHe 2c66e0feb2 refactor(uab): remove openssl
Signed-off-by: ComixHe <heyuming@deepin.org>
2024-12-02 16:29:15 +08:00
ComixHe 9281bffb39 feat(ll-box): support global option 'root'
refactor the way of parsing and executing command
now parsing all args at first

Signed-off-by: ComixHe <heyuming@deepin.org>
2024-12-02 09:57:25 +08:00
ComixHe 01eb8ab22b feat: add sha256 implementation for uab
Signed-off-by: ComixHe <heyuming@deepin.org>
2024-11-29 17:58:00 +08:00
myml 572d384e89 feat: add list and remove commands to builder
builder添加应用列表和删除应用的命令, 便于开发者清理构建缓存
2024-11-29 17:17:03 +08:00
dengbo11 cbe4bf2f57 fix(pm): migration not performed when update from old version
tryMigrate should performe before construction ostree repo.
2024-11-29 17:15:27 +08:00
ComixHe c65555e3fe fix: resolve the real path of symlink
Signed-off-by: ComixHe <heyuming@deepin.org>
2024-11-27 18:01:35 +08:00
ComixHe a740f474d1 fix: correct the source of error message in ll-box
Signed-off-by: ComixHe <heyuming@deepin.org>
2024-11-26 17:47:42 +08:00
ComixHe 851e178d3f refactor: move migrating process to ll-package-manager
Signed-off-by: ComixHe <heyuming@deepin.org>
2024-11-26 14:27:39 +08:00
dengbo11 db54a5f645 fix(cli): ll-cli kill can not stop app by reference
1. Compatible with old versions to stop running app container using fuzz reference.
2. Only support enter running app container by fuzz reference.
2024-11-23 17:24:25 +08:00
ComixHe 6ae5725e2c fix: add fallback channel "main" to earlier packageInfo
Signed-off-by: ComixHe <heyuming@deepin.org>
2024-11-23 16:03:16 +08:00
dengbo11 f533e6690e fix(build): ll-builder push can not working fine
Option --repo-name should use correct variable.
2024-11-23 15:25:17 +08:00
dengbo11 c6b0bdcc0d fix(build): ll-builder build compatible with '-f' option
Some packaging build platforms use the '-f' option, we must
provide for compatibility.
2024-11-23 15:05:54 +08:00
dengbo11 e6aea9d998 feat(cli): support kill or enter container by appid
Support kill or enter application by appid.
2024-11-22 17:20:22 +08:00
ComixHe 57ea9cb404 feat: filepathMapping supports multiple files or urls
Signed-off-by: ComixHe <heyuming@deepin.org>
2024-11-22 15:15:50 +08:00
ComixHe 7a45551fd9 refactor(migrate): try to migrate builder repo
Signed-off-by: ComixHe <heyuming@deepin.org>
2024-11-21 17:34:58 +08:00
myml 4bea611f7b feat: re-export all application entries after migrate
在迁移后重新导出所有应用的entries, 避免数据残留影响功能
2024-11-21 16:55:36 +08:00
dengbo11 ce9545dd78 fix(ll-cli): cli sub command will error when use --json flag
Use fallthrough to allow list,search,info,content sub command to support --json flags.
2024-11-21 14:52:18 +08:00
dengbo11 5e39b2ad8e refactor(ll-build): use build optios to replace variable
Use BuilderBuildOptions to replace variable directly.
2024-11-21 09:29:07 +08:00
dengbo11 124bc72721 fix(cli): add some options back for compatibility
--prune and --all options should be provided for compatibility with older command line parsing.

Bug: https://pms.uniontech.com/bug-view-288097.html
2024-11-20 17:16:00 +08:00
ComixHe ca4f8bc7c7 refactor: re-implement migrate
Signed-off-by: ComixHe <heyuming@deepin.org>
2024-11-19 17:46:22 +08:00
ComixHe ebf272ce2c refactor(gen): add blackList for hide some directory all the time
std::exist will follow symlink
so we should get status at first

Signed-off-by: ComixHe <heyuming@deepin.org>
2024-11-15 13:59:09 +08:00
myml e9fbcc4edb feat: auth push the develop module
现在develop会自动构建, 在push的时候也应该自动推送
2024-11-15 10:51:15 +08:00
kamiyadm c9d59d653d fix: adjust error output level
-

Log:
2024-11-14 17:17:33 +08:00
dengbo11 2d561fcab3 fix: subcommand help information display error
Subcommand should add usage, or will inherited the parent command.
2024-11-13 11:30:23 +08:00
dengbo11 dc2c18ee73 chore: code clear
Old command is not use, delete it.
2024-11-12 15:48:28 +08:00
dengbo11 71fe2c0e4b feat(cli): cli version support json format output
Cli version add json format output.
2024-11-12 15:48:28 +08:00
kamiyadm 06cd6d955e fix: cli returned if no avilable notifier
Fallback to DummyNotifier if no avilable notifier.

Log:
2024-11-11 17:07:59 +08:00
myml a85107ae40 feat: not use the host machine PATH variable
目前会通过profile.d/00env.sh将宿主机的PATH变量传递到容器中并覆盖profile文件设置的默认值
目前看来并没有好处, 反而会导致预料之外的问题, 比如在一些系统上PATH没有包含/bin目录, 但玲珑的base有可能需要
2024-11-11 09:32:41 +08:00
myml 286121b4a2 fix: ll-builder build command parameter error
ll-builder build的命令参数有重复的变量, 导致部分参数不生效
网络库在断网时没有返回准确的错误信息
2024-11-08 17:56:03 +08:00
kamiyadm 7d848ab3a5 fix: some buildflag has uncertain value
Fully initialize those options.

Log:
2024-11-07 09:56:12 +08:00
dengbo11 f9ae16f25d feat(builder): linglong builder help information internationalization
Add ll-builder chinese, en_US, en_GB and spanish help information.
2024-11-06 18:16:45 +08:00
kamiyadm 97e0898bbf fix: can not do the migration
* If there need migrate and the current operation is
  not 'll-cli migrate', notify the message.
* Call runningAsRoot() before call migrate().

Log:
2024-11-06 10:43:11 +08:00
dengbo11 583ad9d024 feat(cli): linglong cli help information internationalization
Add ll-cli chinese and spanish help information.
2024-11-05 20:12:08 +08:00
kamiyadm c482eef998 fix(ll-cli): used a moved object
-

Log:
2024-11-05 20:10:10 +08:00
kamiyadm a769dbcb9b fix: build error because of wrong namespace
-

Log:
2024-11-05 16:05:40 +08:00
kamiyadm 21ce364aea fix: no permission to migrate
* Not doing interact before migration, only notification.
* Allow anyone to call WaitForAvailable() by dbus.

Log:
2024-11-05 15:33:04 +08:00
kamiyadm c647ad834d fix(ll-builder): some minor bugs
* We should keep the output format of 'll-builder repo show' as ll-cli.
* The command 'll-builder repo show' should return after print info.
* The linglong.yaml is not necessary to 'll-builder import'.

Log:
2024-11-05 14:36:39 +08:00
dengbo11 4ed4c07ec6 fix(cli): cli command output show abnormal
Do not use '\n' in command description, or it will show abnormal.
2024-11-04 13:39:27 +08:00
dengbo11 d724f434b4 feat(ll-builder): optimize cli command line parsing function
Use CLI11 to optimize Qt command line parsing.
2024-11-04 13:39:08 +08:00
kamiyadm c056e3959a fix: auth_admin_keep is not worked
-

Log:
2024-11-01 17:37:54 +08:00
dengbo11 e8a17cd9c3 chore: misspelling of word
Word spelling inaccurate.
2024-11-01 10:56:18 +08:00
dengbo11 73d4db59e6 feat(cli): optimize cli command line parsing function
Use CLI11 to optimize cli command line parsing.
2024-11-01 10:56:18 +08:00
ComixHe b205d107eb fix: resolving conflicts and compilation errors after rebasing from master branch
Signed-off-by: ComixHe <heyuming@deepin.org>
2024-10-31 13:35:32 +08:00
ComixHe c65ef008b9 fix(ll-builder): correct behavior of subCommand 'repo'
Signed-off-by: ComixHe <heyuming@deepin.org>
2024-10-31 13:35:32 +08:00
ComixHe ec4e2ecd44 feat: implement the 'deferred uninstallation' feature
Signed-off-by: ComixHe <heyuming@deepin.org>
2024-10-31 13:35:32 +08:00
kamiyadm 715105aaa9 refactor(ll-cli): the initialization of notifier
Original behavior is use the DBusNotifier first if it can be initialized.
For now, if ll-cli is running in tty, we should use the terminalNotifier.

Log:
2024-10-31 13:35:32 +08:00
ComixHe 032627936c feat: add syncing mecanism between ll-cli and ll-package-manager
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>
2024-10-31 13:35:32 +08:00
kamiyadm 670e82dd76 refactor: change some api of ll-cli/ll-package-manager
* Change dbus return type to QVariantMap.
* Add new dbus method SetRunningState, Prune.
* Add new subcommand prune.
* Change the parameters in TaskChange.
* Add task for Uninstall.
* Set correct Status and SubStatus.

Log:
2024-10-31 13:35:32 +08:00
dengbo11 09e0ce0ea5 feat(ll-cli): add ll-cli list --upgradable feature
Add ll-cli list --upgradable to show the latest version list of the
currently installed apps.

Log: add ll-cli list --upgradable feature
2024-10-25 16:09:26 +08:00
ComixHe 10763a1485 feat: support for hiding some directories in a user's home directory via configuration
Signed-off-by: ComixHe <heyuming@deepin.org>
2024-10-25 04:04:01 +00:00
myml ca6551e634 fix: unable to push a single module
修复因命令行解析配置错误导致无法推送单个模块
修复混用new和free
修复source没有url时报错信息不明
改进debug参数的说明
在pull依赖后应该执行一次模块合并操作
2024-10-23 15:01:17 +08:00
myml 6fe39d6040 feat: ll-builder add debug argument
ll-builder添加debug参数, 方便调试应用
debug环境使用develop模块, 可使用 gdb 调试应用
添加了模块拆分功能的文档, 更新了调试应用的文档
2024-10-22 11:21:39 +08:00
myml e13e855369 feat: ll-cli support install and uninstall modules
ll-cli添加安装卸载模块的功能, 在运行时会自动使用已安装的所有模块
在安装, 卸载, 更新时会扫描全部已安装的应用,
然后将应用和模块文件合并到merged目录, 在运行应用时优先查找merged目录

卸载binary时会自动将其他模块删除, 在安装模块前要求用户先安装binary
如果需要调试应用, 要先安装base的develop模块, 再安装应用的develop模块
2024-10-22 11:21:39 +08:00
myml 6d5425545e feat: support module split files
实现了调试符号剥离的功能, 在编译前给gcc添加全局-g参数, 在编译后剥离调试符号到$PREFIX/lib/debug目录
实现了按模块拆分文件的功能, 在linglong.yaml中使用modules字段将构建产物拆分到不同的模块中

Log:
2024-10-15 14:18:40 +08:00
dengbo11 972475473b feat(linglong_builder): add build option to skip ldd check
Some appimage packages use libraries in packages(LD_LIBRARY_PATH),
it will cause the ldd check fails. so add build option to skip ldd
check.
2024-10-10 15:47:31 +08:00
myml 76f9b3c62b fix: ll-box create mount point for nosymfollow
当前ll-box运行容器时会报错ld.so.cache target不存在, 但base里面是存在这个文件的
排查后发现当前的ld.so.cache有两个挂载项, 一个是fix mount创建的base文件挂载, 另一个是为支持ldconfig功能的软链接挂载
因为fixmount最后会检查target重复的挂载项, 并进行删除, 这导致第一个fix mount创建的挂载记录被删除, 另一个则没有了挂载点

现在为设置nosymfollow的挂载项预先创建挂载点(如果挂载点不存在的话), 这和其他挂载行为保持一致, 避免挂载点不存在时ll-box报错
2024-10-09 17:38:05 +08:00
dengbo11 56400783b5 refactor: code refactor
1. Remove the redundant header files included.
2. Remove redundant code(file.h,file.cpp).
3. remove ll-store-installer

Log: Code optimization
2024-10-09 15:01:51 +08:00
ComixHe b203d63996 feat: support migrating data interactively
Signed-off-by: ComixHe <heyuming@deepin.org>
2024-10-08 17:40:34 +08:00
ComixHe 4507034871 fix: failed to modify repo config
incorrect usage of docopt

Signed-off-by: ComixHe <heyuming@deepin.org>
2024-10-08 17:40:34 +08:00
kamiyadm 63fa3687a2 fix: some errors during migration
-

Log:
2024-10-08 17:40:34 +08:00
kamiyadm 3c8541ff39 feat(ll-cli): call WaitForAvailable before init PackageManager
Wait for the migration to complete, maybe ll-package-manager
is busy now.

Log:
2024-10-08 17:40:34 +08:00
ComixHe 6f7b243ec2 feat: add new dbus object for migrating underlying storage
Adding version '1' to dbus service 'org.deepin.linglong.PackageManager' and it's dbus object.

Signed-off-by: ComixHe <heyuming@deepin.org>
2024-10-08 17:40:34 +08:00
ComixHe 51065863af refactor!: use command to operate configuration of builder and cli
1. We shouldn't operate repository of ll-build mannually by editing
configuration file.
2. Deprecate command 'll-cli repo modify' due to functional confusion of this command.

ll-cli use below commands to operate repository:
  - ll-cli repo add NAME URL
  - ll-cli repo remove NAME
  - ll-cli repo update NAME URL
  - ll-cli repo set-default NAME

ll-builder use below commands to operate repository:
  - ll-builder repo add --name=NAME --url=URL
  - ll-builder repo remove --name=NAME
  - ll-builder repo update --name=NAME --url=URL
  - ll-builder repo set-default --name=NAME

Signed-off-by: ComixHe <heyuming@deepin.org>
2024-10-08 17:40:34 +08:00
black-desk bd04c74f3d fix(box): default to follow symbol link when parse mount source
When we lookup the source of a mount, unless we get a mount option tell
us to not follow symbol link, which means to treat the link it self as
a regular file, we should always follow the link.

For example, if the /etc in runtime namespace is a symbol link to
/usr/etc, and config.json tell us to perform a bind mount from runtime
namespace /etc to container namespace /etc, then the old code will
create /etc in container namespace as a file, which leads to an ENOTDIR
error when doing the bind mount.

Bug: https://pms.uniontech.com/bug-view-274969.html
2024-09-26 17:33:22 +08:00
dengbo11 fd0699cd00 fix: (temporary solution)the app cannot display normally due to font cache
bind /var/cache/fontconfig to container when run app

Log: fix app cannot display normally due to font cache
2024-09-26 14:41:05 +08:00
myml e259b4582c fix: unable to run and build applications using crun
挂载软链接时添加copy-symlink参数,

修复使用crun作为运行时, 在执行build和run时报错的问题

Log:
2024-09-18 15:01:47 +08:00
ComixHe f4e79c2947 fix(box): adjust 'nosymfollow' priority to highest
when declare option 'copy-symlink' and 'nosymfollow' at the same time,
box will apply 'nosymfollow' and ignore 'copy-symlink'.

Signed-off-by: ComixHe <heyuming@deepin.org>
2024-09-14 02:34:02 +00:00
dengbo11 71caecb838 chore: adujust include guards
Use #pragma once to replace #ifndef
reference https://includeguardian.io/article/pragma-once-vs-ifndef.

Log: use #pragma once to guard include
2024-09-05 14:55:38 +08:00