commonlibrary_c_utils/commonlibrary_c_utils.spec

122 lines
5.0 KiB
RPMSpec
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 不输出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号每次修改需要+1changelog同步修改
Release: 1
# 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, clang15, llvm15, lld15, python3, ninja-build, gn
BuildRequires: python3-jinja2 python3-pyyaml
BuildRequires: libatomic libicu-devel libxml2-devel openssl-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不用autosetupdistributed-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
* Thu Jun 15 2023 chrisshangguan <shangguanjingshi@huawei.com> - 1.0.0-1
- Init and adapt to openeuler