-
-
Notifications
You must be signed in to change notification settings - Fork 782
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add mechanism to install binary package from archive #1338
Comments
一种办法,吧构建这些包过程中所有用到需要下载的包,从 cache 目录下提取下载的原始tar包到一个 固定目录,比如 packages_tarball(不需要目录结构,按原样下载名放置即可,名字不知道,可以 xmake require --info 查看 search names/dirs) 然后打包发给其他用户,然后对方机器上通过下面的命令,指定tar搜索目录,比如 xmake g --pkg_searchdirs=/xxxx/packages_tarball 这个时候,不过对方原样使用 add_requires 还是走 xrepo 。。都会优先从这个本地目录下 找寻所有 tar 包,直接解压编译安装,完全离线的。。 所以用户对 工程xmake.lua 不用做任何改动,你发给它,也仅仅只是个 汇总了所有原始 tar 包的整个目录包 packages_tarball 给它。。也很方便,这原本就是支持的,本地包搜索目录可以设置多个,原本就是用于无网和弱网环境 |
这个有缺陷的,一个是除了网络问题还有编译时间问题,有些包可能编译时间过长,编译期间会占满cpu几个小时,这样影响到工作;第二是除了下载的tarball还有resource,甚至有的包会在CMakeLists.txt里面自己封装网络接口下载文件,仅仅解决tarball下载的问题并不足够 |
那就自己 export 导出装好的包 ,再放回对方 packages安装目录 就行了 |
对,就是这样,xmake放package的路径默认是隐藏的而且带有一串hash,所以需要一个从manifest生成hash并安装到package安装目录的api,这样对新用户更友好,解释起来也方便 |
不需要重新生成,整个带hash目录结构原样打包copy过去就行了 |
将xrepo export的包放入一个目录,在xmake.lua引用不成功呢。
在
拷贝目录
能否提供一个xrepo import命令,将export生成的包导入到另外的机器中呢? |
还有一种需求是用户自己修改了第三方包的源码,想要用修改的第三方包代替原始的第三方包编译并与原始对比。如果支持安装本地包则可以用户手写manifest.txt来生成包供xrepo安装,而无需改动构建文件xmake.lua |
export/import 可以搞,manifest属于内部文件,不对外开放,安装本地包 不走源码编译,就是 import ,走源码编译本地按装,同样有 on_install内部网络问题 |
我加上 import 支持了,并且改进了 export 导出导入当前项目 add_requires() 配置的所有包,需要进入特定 xmake 项目 $ xrepo export -o /xxx/packagedir
$ xrepo import -i /xxx/packagedir 导出导入特定包,不依赖当前项目 $ xrepo export -o /xxx/packagedir zlib
$ xrepo import -i /xxx/packagedir zlib 目前是整包目录输出,我就不归档了,自己压缩下分发,也要不了多少时间 |
你在什么场景下需要该功能?
某些包由于网络环境、编译速度等原因不太方便从xmake-repo安装(remote resource无法连接、构建中途需要下载数据等等),希望已经安装了此包的用户能打成离线包传给网络不佳的用户安装。
使用localpkg也是一种办法,但这样就必须在xmake.lua里面
add_requires
的时候加判断、让用户输入本地包放置位置、每个项目都要重新指定一遍,非常麻烦描述可能的解决方案
把包安装后的的manifest.txt等文件打包成一个压缩文件(例如opencv-4.5.2.zip),执行
则把文件解压到对应位置,如果存在manifest.txt,初始化references.txt,将包与从xmake-repo中下载的包一并处理。在写
时自动引用离线安装的包
描述你认为的候选方案
或者不压缩,
The text was updated successfully, but these errors were encountered: