代码拉取完成,页面将自动刷新
同步操作将从 src-openEuler/commonlibrary_c_utils 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
# 不输出debug信息,不产生debug包
%define debug_package %{nil}
# 定义openHarmony软件包的版本变量,所有包应该都是OpenHarmony-v3.2-Release
%global oh_version OpenHarmony-v3.2-Release
# 定义下编译根目录变量,作为编译根目录
%global build_opt /opt/distributed-middleware-build
%global c_utils_path %{_builddir}/commonlibrary
%global bundle_dir %{build_opt}/openeuler/compiler_gn/commonlibrary/c_utils
%global gn_dir %{build_opt}/openeuler/compiler_gn/commonlibrary/c_utils/base
# rpm包名称
Name: commonlibrary_c_utils
# rpm包版本号
Version: 1.0.0
# rpm包Release号,每次修改需要+1,changelog同步修改
Release: 2
# rpm简介
Summary: C++ common basic library for distributed module construction and operation
# License openHarmony的应该都是Apache License 2.0
License: Apache License 2.0
# 软件包上游社区
Url: https://gitee.com/openharmony/commonlibrary_c_utils
# tar包的下载地址,由于gitee下载路径是不带软件包名的,会导致和name不匹配,
# 所以此处在后面用注释方式修改spec识别的tar包名称
Source1: https://gitee.com/openharmony/commonlibrary_c_utils/repository/archive/%{oh_version}.tar.gz #/%{name}-%{oh_version}.tar.gz
Source2: c_utils.bundle.json
Source3: c_utils.BUILD.gn
#Source4: bounds_checking_function.BUILD.gn
# 补丁定义
Patch1: 0000-commonlibrary-c_utils.patch
Patch2: 0001-commonlibrary-c_utils-linux-ashmem.h.patch
# 编译依赖,提交代码时需要分析依赖层级,从底往上提交代码。
BuildRequires: distributed-build, hilog
BuildRequires: python3-jinja2 python3-pyyaml
BuildRequires: libatomic libicu-devel libxml2-devel compat-openssl11-devel
# 软件包的详细描述
%description
Provide some commonly used C++ development tool classes for standard systems, This repository is compatible with compilation on the OpenEuler operating system
# 软件包编译前的准备阶段
%prep
# 解压tar包到commonlibrary_c_utils-OpenHarmony-v3.2-Release路径下
# build directory
rm -rf %{_builddir}/*
cd %{_builddir}
cp -a %{build_opt} %{_builddir}/build
[ ! -L "%{_builddir}/build.sh" ] && ln -s %{_builddir}/build/build_scripts/build.sh %{_builddir}/build.sh
[ ! -L "%{_builddir}/.gn" ] && ln -s %{_builddir}/build/core/gn/dotfile.gn %{_builddir}/.gn
[ ! -L "%{_builddir}/build.py" ] && ln -s %{_builddir}/build/lite/build.py %{_builddir}/build.py
cp -r %{_builddir}/build/openeuler/vendor %{_builddir}/
cp -r %{_builddir}/build/openeuler/compiler_gn/third_party %{_builddir}/
mkdir -p %{c_utils_path}
# 统一用setup,不用autosetup,distributed-build除外
%setup -q -D -T -a 1 -c -n %{c_utils_path}
mv %{name}-%{oh_version} %{_builddir}/commonlibrary/c_utils
# patch命令统一使用-P来指定第几个patch
%patch -P1 -p1 -d %{c_utils_path}/c_utils
%patch -P2 -p1 -d %{c_utils_path}/c_utils
# 拷贝依赖的组件的gn文件
mkdir -p %{_builddir}/base/hiviewdfx
cp -rf %{_builddir}/build/openeuler/compiler_gn/base/hiviewdfx/hilog %{_builddir}/base/hiviewdfx
# 编译阶段
%build
# rm -rf %{_builddir}/out
%ifarch x86_64
bash %{_builddir}/build.sh --product-name openeuler --target-cpu x86_64
%endif
%ifarch aarch64
bash %{_builddir}/build.sh --product-name openeuler --target-cpu arm64
%endif
# 安装阶段
%install
install -d -m 0755 %{buildroot}/%{_includedir}/c_utils
install -d -m 0755 %{buildroot}/%{_includedir}/c_utils/linux
install -d -m 0755 %{buildroot}/%{_includedir}/src
install -d -m 0755 %{buildroot}%{build_opt}/openeuler/compiler_gn/commonlibrary/c_utils/base/
install -d -m 0755 %{buildroot}%{build_opt}/openeuler/compiler_gn/third_party/bounds_checking_function/
install -d -m 0755 %{buildroot}/%{_libdir}
install -d -m 0755 %{buildroot}/%{bundle_dir}
install -d -m 0755 %{buildroot}/%{gn_dir}
%ifarch aarch64
%define module_out_path out/openeuler/linux_clang_arm64
%endif
%ifarch x86_64
%define module_out_path out/openeuler/linux_clang_x86_64
%endif
install -m 0755 %{_builddir}/%{module_out_path}/commonlibrary/c_utils/libutils.z.so %{buildroot}/%{_libdir}
# 到源码路径下拷贝头文件及其目录到%{buildroot}/usr/include/c_utils,保持目录结构相同
install -m 554 %{_builddir}/commonlibrary/c_utils/base/include/*.h %{buildroot}/%{_includedir}/c_utils
install -m 554 %{_builddir}/commonlibrary/c_utils/base/include/linux/*.h %{buildroot}/%{_includedir}/c_utils/linux
install -m 554 %{_builddir}/commonlibrary/c_utils/base/src/event_reactor.h %{buildroot}/%{_includedir}/src
# copy bundle.json and BUILD.gn
cp %{SOURCE2} %{buildroot}/%{bundle_dir}/bundle.json
cp %{SOURCE3} %{buildroot}/%{gn_dir}/BUILD.gn
# create soft link
ln -s /usr/include/c_utils %{buildroot}%{build_opt}/openeuler/compiler_gn/commonlibrary/c_utils/base/include
# rpm安装后需要安装到系统中的文件,及上面说的so和头文件
%files
%{_libdir}/*.so
%{_includedir}/c_utils/*
%{_includedir}/c_utils/linux/*
%{_includedir}/src/*
%{build_opt}/*
# 变更日志
%changelog
* Fri Mar 15 2024 s_c_c <shichuchao@huawei.com> - 1.0.0-2
- Fix sysroot path for embedded
* Thu Jun 15 2023 chrisshangguan <shangguanjingshi@huawei.com> - 1.0.0-1
- Init and adapt to openeuler
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。