同步操作将从 anolis/龙蜥社区开发者文档 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
acc 的软件维护者 程斌 同学,在准备好公开策略(公开的频率和方式)之后,联系法务同学,申请了二进制披露序和开源软件合规扫描。这里要注意一点,如果涉及版本更新,则该流程需要重新走一遍。
流程申请之后,获取法务许可,增加一个 Alibaba-Cloud-Compiler-End-User-Agreement.docx 文件,该文件表示用户安装此软件的同意许可。该文件和软件本身的 License 文件必须包含在 rpm 的 filelist 内。
需要定义软件的基本信息。
包括:name、version、summary、url、descriotion。
注意:version 代表软件版本,release 仅代表构建次数。如果同一个版本,不做源码变更(此处叫二进制变更),仅仅是 spec 的修改,需要保证 version 不变、递增 release;如果在正式发布之后版本发生变更,比如二进制更新了,此处应该变更 version,release 重新从 1 开始。
软件维护者准备编译环境。
发布的版本尽量和本地的构建环境保持一致,因为构建依赖的版本不同可能会导致 so 运行不起来。即:发布到 Anolis OS 23 的 rpm 尽量使用 Anolis OS 23 的环境编译,发布到 Anolis OS 8 的 rpm 尽量使用 Anolis OS 8 的环境进行编译。
acc 这个包比较特殊,特殊在仅对 glibc 的 so 有依赖,且 an8 提供的 glibc.so 在 Anolis OS 23 上也能通用,所以仅构建一次,采用 Anolis OS 8 上构建出来的结果同步发布到 Anolis OS 23 版本。
新建 spec(参考 spec 模版),并在本地编译出闭源软件的 rpm。
rpmbuild 过程出现问题,可以查看 构建指导手册
此处直接给出 rpm 样例:
[root@localhost acc]# ls
alibaba-cloud-compiler-13.0.1-2.fix.an8.aarch64.rpm
alibaba-cloud-compiler-13.0.1-2.fix.an8.src.rpm
alibaba-cloud-compiler-13.0.1-2.fix.an8.x86_64.rpm
[root@localhost acc]# mkdir alibaba-cloud-compiler-13.0.1
[root@localhost acc]# cd alibaba-cloud-compiler-13.0.1
[root@localhost alibaba-cloud-compiler-13.0.1]# mkdir x86_64
[root@localhost alibaba-cloud-compiler-13.0.1]# mkdir aarch64
[root@localhost alibaba-cloud-compiler-13.0.1]# ls
aarch64 x86_64
[root@localhost acc]# tree alibaba-cloud-compiler-13.0.1
alibaba-cloud-compiler-13.0.1
├── aarch64
└── x86_64
3 directories, 0 files
[root@localhost acc]# rpm2cpio alibaba-cloud-compiler-13.0.1-2.fix.an8.x86_64.rpm | cpio -divm -D alibaba-cloud-compiler-13.0.1/x86_64
[root@localhost acc]# ls alibaba-cloud-compiler-13.0.1
aarch64 x86_64
[root@localhost acc]# ls alibaba-cloud-compiler-13.0.1/x86_64/
opt
[root@localhost acc]# ls alibaba-cloud-compiler-13.0.1/x86_64/opt/
alibaba-cloud-compiler
[root@localhost acc]# ls alibaba-cloud-compiler-13.0.1/x86_64/opt/alibaba-cloud-compiler/
bin FLANG-LICENSE.TXT include JEMALLOC.COPYING lib64 libexec LICENSE.TXT README share
[root@localhost acc]# tar -xvf 20221117-161007-543-#75-anolis8.6.aarch64.release.rpm-13-rpm.tar.gz
alibaba-cloud-compiler-13.0.1-2.fix.an8.aarch64.rpm
alibaba-cloud-compiler-13.0.1-2.fix.an8.src.rpm
summary_message.txt
[root@localhost acc]# rpm2cpio alibaba-cloud-compiler-13.0.1-2.fix.an8.aarch64.rpm | cpio -divm -D alibaba-cloud-compiler-13.0.1/aarch64/
[root@localhost acc]# ls alibaba-cloud-compiler-13.0.1/aarch64/opt/alibaba-cloud-compiler/
bin FLANG-LICENSE.TXT include JEMALLOC.COPYING lib64 libexec LICENSE.TXT README share
[root@localhost acc]# tar -cvf alibaba-cloud-compiler-13.0.1.tar.gz alibaba-cloud-compiler-13.0.1
[root@localhost acc]# ls | grep tar.gz
20221117-161007-047-#75-anolis8.6.x86_64.release.rpm-13-rpm.tar.gz
20221117-161007-543-#75-anolis8.6.aarch64.release.rpm-13-rpm.tar.gz
alibaba-cloud-compiler-13.0.1.tar.gz
软件维护者创建 issue,按照模版填写需求背景、收益、维护者和目标。写清楚闭源软件的引入背景和原因、闭源的 License 信息等。
由橘悦审核 issue 并通过之后,进行建立仓库。仓库地址:https://gitee.com/src-anolis-nonfree/<package name> , a8 分支对应 Anolis OS 8,a23 分支对应 Anolis OS 23。
软件维护者在 ospkg-list 仓库中提交代码,参照指导,提交软件信息
打开 gitee 的仓库地址:https://gitee.com/src-anolis-nonfree/<package name>
将软件仓库 fork 到个人仓库
将准备好的 source.tar.gz 和 spec 文件提交到个人仓库的版本分支(a8或a23)
发起 pr,等待门禁通过,如果门禁失败,则需要查看错误原因,并进行解决,重新提交代码后,门禁会重新触发
提交者下载门禁构建的 rpm 包,并自行进行功能测试
等待 maintainer 或者发行版同学审核通过,合入代码,由发行版同学触发正式构建
发行版同学将 rpm 发布到 epao-nonfree 仓库,维护者安装 anolis-epao-nonfree-release 包之后,即可通过 yum install 的方式进行安装对应闭源组件。
alibaba-cloud-compiler
spec 样例:https://gitee.com/src-anolis-sig/alibaba-cloud-compiler/blob/a23/alibaba-cloud-compiler.spec
[root@localhost acc]# ls
20221117-161007-047-#75-anolis8.6.x86_64.release.rpm-13-rpm.tar.gz summary_message.txt
20221117-161007-543-#75-anolis8.6.aarch64.release.rpm-13-rpm.tar.gz
[root@localhost acc]# tar -xvf 20221117-161007-047-#75-anolis8.6.x86_64.release.rpm-13-rpm.tar.gz
alibaba-cloud-compiler-13.0.1-2.fix.an8.src.rpm
alibaba-cloud-compiler-13.0.1-2.fix.an8.x86_64.rpm
[root@localhost acc]# ls
20221117-161007-047-#75-anolis8.6.x86_64.release.rpm-13-rpm.tar.gz alibaba-cloud-compiler-13.0.1-2.fix.an8.x86_64.rpm
20221117-161007-543-#75-anolis8.6.aarch64.release.rpm-13-rpm.tar.gz summary_message.txt
alibaba-cloud-compiler-13.0.1-2.fix.an8.src.rpm
[root@localhost acc]# rpm -ivh alibaba-cloud-compiler-13.0.1-2.fix.an8.x86_64.rpm
error: Failed dependencies:
perl(File::Copy) is needed by alibaba-cloud-compiler-13.0.1-2.fix.an8.x86_64
perl(FindBin) is needed by alibaba-cloud-compiler-13.0.1-2.fix.an8.x86_64
perl(Hash::Util) is needed by alibaba-cloud-compiler-13.0.1-2.fix.an8.x86_64
perl(Sys::Hostname) is needed by alibaba-cloud-compiler-13.0.1-2.fix.an8.x86_64
[root@localhost acc]# yum localinstall alibaba-cloud-compiler-13.0.1-2.fix.an8.x86_64.rpm
Last metadata expiration check: 0:42:27 ago on Thu 03 Aug 2023 01:18:16 PM CST.
Dependencies resolved.
=====================================================================================================================================
Package Architecture Version Repository Size
=====================================================================================================================================
Upgrading:
perl-Errno x86_64 1.36-11.an23 os 14 k
perl-interpreter x86_64 4:5.36.1-11.an23 os 70 k
perl-libs x86_64 4:5.36.1-11.an23 os 2.1 M
Installing dependencies:
perl-File-Copy noarch 2.39-11.an23 os 19 k
perl-FindBin noarch 1.53-11.an23 os 13 k
perl-Hash-Util x86_64 0.28-11.an23 os 33 k
perl-Hash-Util-FieldHash x86_64 1.26-11.an23 os 37 k
perl-Sys-Hostname x86_64 1.24-11.an23 os 16 k
Downgrading:
alibaba-cloud-compiler x86_64 13.0.1-2.fix.an8 @commandline 651 M
Transaction Summary
=====================================================================================================================================
Install 5 Packages
Upgrade 3 Packages
Downgrade 1 Package
Total size: 653 M
Total download size: 2.3 M
Is this ok [y/N]: y
Downloading Packages:
(1/8): perl-FindBin-1.53-11.an23.noarch.rpm 60 kB/s | 13 kB 00:00
(2/8): perl-Hash-Util-0.28-11.an23.x86_64.rpm 127 kB/s | 33 kB 00:00
(3/8): perl-File-Copy-2.39-11.an23.noarch.rpm 69 kB/s | 19 kB 00:00
(4/8): perl-Hash-Util-FieldHash-1.26-11.an23.x86_64.rpm 260 kB/s | 37 kB 00:00
(5/8): perl-Sys-Hostname-1.24-11.an23.x86_64.rpm 105 kB/s | 16 kB 00:00
(6/8): perl-Errno-1.36-11.an23.x86_64.rpm 82 kB/s | 14 kB 00:00
(7/8): perl-interpreter-5.36.1-11.an23.x86_64.rpm 551 kB/s | 70 kB 00:00
(8/8): perl-libs-5.36.1-11.an23.x86_64.rpm 4.3 MB/s | 2.1 MB 00:00
-------------------------------------------------------------------------------------------------------------------------------------
Total 2.6 MB/s | 2.3 MB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running
Preparing : 1/1
Upgrading : perl-libs-4:5.36.1-11.an23.x86_64 1/13
Installing : perl-File-Copy-2.39-11.an23.noarch 2/13
Installing : perl-FindBin-1.53-11.an23.noarch 3/13
Installing : perl-Hash-Util-FieldHash-1.26-11.an23.x86_64 4/13
Installing : perl-Hash-Util-0.28-11.an23.x86_64 5/13
Installing : perl-Sys-Hostname-1.24-11.an23.x86_64 6/13
Upgrading : perl-interpreter-4:5.36.1-11.an23.x86_64 7/13
Downgrading : alibaba-cloud-compiler-13.0.1-2.fix.an8.x86_64 8/13
Upgrading : perl-Errno-1.36-11.an23.x86_64 9/13
Cleanup : perl-Errno-1.36-10.an23.x86_64 10/13
Cleanup : perl-interpreter-4:5.36.0-10.an23.x86_64 11/13
Cleanup : perl-libs-4:5.36.0-10.an23.x86_64 12/13
Cleanup : alibaba-cloud-compiler-13.0.1.3-1.an23.x86_64 13/13
Running scriptlet: alibaba-cloud-compiler-13.0.1.3-1.an23.x86_64 13/13
Verifying : alibaba-cloud-compiler-13.0.1-2.fix.an8.x86_64 1/13
Verifying : alibaba-cloud-compiler-13.0.1.3-1.an23.x86_64 2/13
Verifying : perl-File-Copy-2.39-11.an23.noarch 3/13
Verifying : perl-FindBin-1.53-11.an23.noarch 4/13
Verifying : perl-Hash-Util-0.28-11.an23.x86_64 5/13
Verifying : perl-Hash-Util-FieldHash-1.26-11.an23.x86_64 6/13
Verifying : perl-Sys-Hostname-1.24-11.an23.x86_64 7/13
Verifying : perl-Errno-1.36-11.an23.x86_64 8/13
Verifying : perl-Errno-1.36-10.an23.x86_64 9/13
Verifying : perl-interpreter-4:5.36.1-11.an23.x86_64 10/13
Verifying : perl-interpreter-4:5.36.0-10.an23.x86_64 11/13
Verifying : perl-libs-4:5.36.1-11.an23.x86_64 12/13
Verifying : perl-libs-4:5.36.0-10.an23.x86_64 13/13
Upgraded:
perl-Errno-1.36-11.an23.x86_64 perl-interpreter-4:5.36.1-11.an23.x86_64 perl-libs-4:5.36.1-11.an23.x86_64
Downgraded:
alibaba-cloud-compiler-13.0.1-2.fix.an8.x86_64
Installed:
perl-File-Copy-2.39-11.an23.noarch perl-FindBin-1.53-11.an23.noarch perl-Hash-Util-0.28-11.an23.x86_64
perl-Hash-Util-FieldHash-1.26-11.an23.x86_64 perl-Sys-Hostname-1.24-11.an23.x86_64
Complete!
卸载测试:
卸载时不仅要测试包有没有卸载掉,更需要确认安装的文件或者路径是否被清除。
这个版本的 acc 在卸载时文件虽然被清除干净,但是路径没清除,该问题需要解决。解决方案:在 %files 中增加对路径的定义:
%files
%dir /opt
%dir /opt/alibaba-cloud-compiler
#
[root@localhost acc]# rpm -ql alibaba-cloud-compiler | grep txt
/opt/alibaba-cloud-compiler/lib64/clang/13.0.1/share/asan_ignorelist.txt
/opt/alibaba-cloud-compiler/lib64/clang/13.0.1/share/cfi_ignorelist.txt
/opt/alibaba-cloud-compiler/lib64/clang/13.0.1/share/dfsan_abilist.txt
/opt/alibaba-cloud-compiler/lib64/clang/13.0.1/share/hwasan_ignorelist.txt
/opt/alibaba-cloud-compiler/lib64/clang/13.0.1/share/msan_ignorelist.txt
[root@localhost acc]# rpm -qa alibaba-cloud-compiler
alibaba-cloud-compiler-13.0.1-2.fix.an8.x86_64
[root@localhost acc]# rpm -e alibaba-cloud-compiler
[root@localhost acc]# rpm -qa alibaba-cloud-compiler
[root@localhost acc]# ls ///opt/alibaba-cloud-compiler/lib64/
#### 注意 !!!!这里有问题!!!!
[root@localhost acc]# ls /opt/alibaba-cloud-compiler
bin include lib64 libexec share
[root@localhost acc]# ls alibaba-cloud-compiler-13.0.1-2.fix.an8.x86_64.rpm
alibaba-cloud-compiler-13.0.1-2.fix.an8.x86_64.rpm
[root@localhost acc]# rpm -qP alibaba-cloud-compiler-13.0.1-2.fix.an8.x86_64.rpm
alibaba-cloud-compiler = 13.0.1-2.fix.an8
alibaba-cloud-compiler(x86-64) = 13.0.1-2.fix.an8
lib64/LLVMgold.so(LLVM_13)(64bit)
libRemarks.so.13()(64bit)
libRemarks.so.13(LLVM_13)(64bit)
libclang_rt.asan-x86_64.so()(64bit)
libclang_rt.dyndd-x86_64.so()(64bit)
libclang_rt.hwasan-x86_64.so()(64bit)
libclang_rt.hwasan_aliases-x86_64.so()(64bit)
libclang_rt.memprof-x86_64.so()(64bit)
libclang_rt.scudo-x86_64.so()(64bit)
libclang_rt.scudo_minimal-x86_64.so()(64bit)
libclang_rt.scudo_standalone-x86_64.so()(64bit)
libclang_rt.ubsan_minimal-x86_64.so()(64bit)
libclang_rt.ubsan_standalone-x86_64.so()(64bit)
libflang.so()(64bit)
libflangrti.so()(64bit)
libpgmath.so()(64bit)
pkgconfig(jemalloc) = 5.3.0_0
# 应该对每个能力进行检测,这里使用 libflang.so()(64bit) 给个样例.这里没有查到,结果正确。
[root@localhost acc]# yum repoquery --whatprovides 'libflang.so()(64bit)'
Last metadata expiration check: 1:46:37 ago on Thu 03 Aug 2023 01:18:16 PM CST.
[root@localhost acc]#
发现上述存在问题,去除相同能力提供方式。
如果存在包名相同,该问题需要重新定义软件名称
如果存在提供相同的 bin ,则需要在构建时,重新创建绝对路径,将二进制存放对应目录,或者在源码中更改生成的 bin 名称,避免产生相同的 bin
如果存在相同的 so,不仅需要生成到不同目录,也需要去除 so 的对外提供。
spec 中添加如下代码,将其去除:
%global _privatelibs (libclang.*|libflang.*|libLTO|libomp.*|libc++.*|libRemarks.*|libpgmath)[.]so.*|(.*jemalloc.*)
%global __provides_exclude ^(%{_privatelibs})$
该测试文档可以添加到 pr 的评论中同步提交。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。