From 001eab70a6929da5d21c394b9f219bbe79fdb7c1 Mon Sep 17 00:00:00 2001 From: zxstty Date: Fri, 10 Nov 2023 11:31:33 +0800 Subject: [PATCH] add c_utils.BUILD.gn and c_utils.bundle.json and create soft link to /usr/include/c_utils --- 0000-commonlibrary-c_utils.patch | 92 +++++++++++++ ...commonlibrary-c_utils-linux-ashmem.h.patch | 67 ++++++++++ bounds_checking_function.BUILD.gn | 30 +++++ c_utils.BUILD.gn | 34 +++++ c_utils.bundle.json | 103 +++++++++++++++ ...ry_c_utils-OpenHarmony-v3.2-Release.tar.gz | Bin 0 -> 86845 bytes commonlibrary_c_utils.spec | 121 ++++++++++++++++++ 7 files changed, 447 insertions(+) create mode 100644 0000-commonlibrary-c_utils.patch create mode 100644 0001-commonlibrary-c_utils-linux-ashmem.h.patch create mode 100644 bounds_checking_function.BUILD.gn create mode 100644 c_utils.BUILD.gn create mode 100644 c_utils.bundle.json create mode 100644 commonlibrary_c_utils-OpenHarmony-v3.2-Release.tar.gz create mode 100644 commonlibrary_c_utils.spec diff --git a/0000-commonlibrary-c_utils.patch b/0000-commonlibrary-c_utils.patch new file mode 100644 index 0000000..48c6c17 --- /dev/null +++ b/0000-commonlibrary-c_utils.patch @@ -0,0 +1,92 @@ +From e9a2e27d96e8951cb5a55601102def04e93ae4b3 Mon Sep 17 00:00:00 2001 +From: heppen +Date: Fri, 26 May 2023 09:52:04 +0800 +Subject: [PATCH] =?UTF-8?q?commonlibrary/c=5Futils:=20=E5=A4=B4=E6=96=87?= + =?UTF-8?q?=E4=BB=B6=E7=BC=BA=E5=A4=B1/=E7=B1=BB=E5=9E=8B=E8=BD=AC?= + =?UTF-8?q?=E6=8D=A2=E4=B8=8D=E5=8C=B9=E9=85=8D=E4=B8=A4=E7=B1=BB=E7=BC=96?= + =?UTF-8?q?=E8=AF=91=E9=97=AE=E9=A2=98=E8=A7=A3=E5=86=B3?= +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +--- + base/src/event_reactor.h | 1 + + base/src/file_ex.cpp | 3 ++- + base/src/parcel.cpp | 1 + + base/src/string_ex.cpp | 2 ++ + base/src/thread_pool.cpp | 1 + + 5 files changed, 7 insertions(+), 1 deletion(-) + +diff --git a/base/src/event_reactor.h b/base/src/event_reactor.h +index 794e44a5..1a282ec5 100644 +--- a/base/src/event_reactor.h ++++ b/base/src/event_reactor.h +@@ -21,6 +21,7 @@ + #include + #include + #include ++#include + + namespace OHOS { + namespace Utils { +diff --git a/base/src/file_ex.cpp b/base/src/file_ex.cpp +index 578b1bea..a9e05727 100644 +--- a/base/src/file_ex.cpp ++++ b/base/src/file_ex.cpp +@@ -24,6 +24,7 @@ + #include + #include + #include ++#include + #include "directory_ex.h" + #include "utils_log.h" + +@@ -262,7 +263,7 @@ bool SaveBufferToFile(const string& filePath, const vector& content, bool + } + + // if the file is not exist,create it first! +- uint32_t mode = truncated ? (ios::out | ios::binary | ios::trunc) : (ios::out | ios::binary | ios::app); ++ ios_base::openmode mode = truncated ? (ios::out | ios::binary | ios::trunc) : (ios::out | ios::binary | ios::app); + ofstream file; + file.open(filePath.c_str(), mode); + if (!file.is_open()) { +diff --git a/base/src/parcel.cpp b/base/src/parcel.cpp +index 4d623532..b0012bc8 100644 +--- a/base/src/parcel.cpp ++++ b/base/src/parcel.cpp +@@ -16,6 +16,7 @@ + #include "parcel.h" + #include "securec.h" + #include "utils_log.h" ++#include + + namespace OHOS { + +diff --git a/base/src/string_ex.cpp b/base/src/string_ex.cpp +index 32340ae1..782e4193 100644 +--- a/base/src/string_ex.cpp ++++ b/base/src/string_ex.cpp +@@ -20,6 +20,8 @@ + #include + #include + #include ++#include ++#include + using namespace std; + + namespace OHOS { +diff --git a/base/src/thread_pool.cpp b/base/src/thread_pool.cpp +index 9951929f..b4e663c2 100644 +--- a/base/src/thread_pool.cpp ++++ b/base/src/thread_pool.cpp +@@ -19,6 +19,7 @@ + + #include + #include ++#include + + namespace OHOS { + +-- +2.33.0 + diff --git a/0001-commonlibrary-c_utils-linux-ashmem.h.patch b/0001-commonlibrary-c_utils-linux-ashmem.h.patch new file mode 100644 index 0000000..b9f83d3 --- /dev/null +++ b/0001-commonlibrary-c_utils-linux-ashmem.h.patch @@ -0,0 +1,67 @@ +From 87ec1e798711ffca7a18fed9ad1ef9b6485f6cc7 Mon Sep 17 00:00:00 2001 +From: liheavy +Date: Sat, 27 May 2023 09:57:50 +0800 +Subject: [PATCH] =?UTF-8?q?commonlibrary/c=5Futils:=20=E5=A2=9E=E5=8A=A0li?= + =?UTF-8?q?nux=E7=9A=84ashmem.h=E5=A4=B4=E6=96=87=E4=BB=B6?= +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +--- + .../c_utils/base/include/linux/ashmem.h | 44 +++++++++++++++++++ + 1 file changed, 44 insertions(+) + create mode 100644 base/include/linux/ashmem.h + +diff --git a/base/include/linux/ashmem.h b/base/include/linux/ashmem.h +new file mode 100644 +index 00000000..174667f9 +--- /dev/null ++++ b/base/include/linux/ashmem.h +@@ -0,0 +1,44 @@ ++/**************************************************************************** ++ **************************************************************************** ++ *** ++ *** This header was automatically generated from a Linux kernel header ++ *** of the same name, to make information necessary for userspace to ++ *** call into the kernel available to libc. It contains only constants, ++ *** structures, and macros generated from the original header, and thus, ++ *** contains no copyrightable information. ++ *** ++ *** To edit the content of this header, modify the corresponding ++ *** source file (e.g. under external/kernel-headers/original/) then ++ *** run bionic/libc/kernel/tools/update_all.py ++ *** ++ *** Any manual change here will be lost the next time this script will ++ *** be run. You've been warned! ++ *** ++ **************************************************************************** ++ ****************************************************************************/ ++#ifndef _UAPI_LINUX_ASHMEM_H ++#define _UAPI_LINUX_ASHMEM_H ++#include ++#include ++#define ASHMEM_NAME_LEN 256 ++#define ASHMEM_NAME_DEF "dev/ashmem" ++#define ASHMEM_NOT_PURGED 0 ++#define ASHMEM_WAS_PURGED 1 ++#define ASHMEM_IS_UNPINNED 0 ++#define ASHMEM_IS_PINNED 1 ++struct ashmem_pin { ++ __u32 offset; ++ __u32 len; ++}; ++#define __ASHMEMIOC 0x77 ++#define ASHMEM_SET_NAME _IOW(__ASHMEMIOC, 1, char[ASHMEM_NAME_LEN]) ++#define ASHMEM_GET_NAME _IOR(__ASHMEMIOC, 2, char[ASHMEM_NAME_LEN]) ++#define ASHMEM_SET_SIZE _IOW(__ASHMEMIOC, 3, size_t) ++#define ASHMEM_GET_SIZE _IO(__ASHMEMIOC, 4) ++#define ASHMEM_SET_PROT_MASK _IOW(__ASHMEMIOC, 5, unsigned long) ++#define ASHMEM_GET_PROT_MASK _IO(__ASHMEMIOC, 6) ++#define ASHMEM_PIN _IOW(__ASHMEMIOC, 7, struct ashmem_pin) ++#define ASHMEM_UNPIN _IOW(__ASHMEMIOC, 8, struct ashmem_pin) ++#define ASHMEM_GET_PIN_STATUS _IO(__ASHMEMIOC, 9) ++#define ASHMEM_PURGE_ALL_CACHES _IO(__ASHMEMIOC, 10) ++#endif +-- +2.33.0 + diff --git a/bounds_checking_function.BUILD.gn b/bounds_checking_function.BUILD.gn new file mode 100644 index 0000000..cc72607 --- /dev/null +++ b/bounds_checking_function.BUILD.gn @@ -0,0 +1,30 @@ +# Copyright (c) 2021 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import("//build/ohos.gni") + +config("libsec_public_config") { + include_dirs = [ "include" ] + libs = [ "boundscheck" ] +} + +group("libsec_static") { + #libs = [ "boundscheck" ] + public_configs = [ ":libsec_public_config" ] + all_dependent_configs = [ ":libsec_public_config" ] +} + +group("libsec_shared") { + #libs = [ "boundscheck" ] + public_configs = [ ":libsec_public_config" ] + all_dependent_configs = [ ":libsec_public_config" ] +} diff --git a/c_utils.BUILD.gn b/c_utils.BUILD.gn new file mode 100644 index 0000000..d9d4246 --- /dev/null +++ b/c_utils.BUILD.gn @@ -0,0 +1,34 @@ +# Copyright (c) 2021 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import("//build/ohos.gni") + +config("utils_configs") { + include_dirs = [ "include" ] + libs = [ "utils.z" ] +} + +config("utilsbase_config") { + include_dirs = [ "include" ] + libs = [ "utilsbase.z" ] +} + +group("utilsbase") { + all_dependent_configs = [ ":utilsbase_config" ] + public_configs = [ ":utilsbase_config" ] +} + +group("utils") { + all_dependent_configs = [ ":utils_configs" ] + public_configs = [ ":utils_configs" ] + public_deps = [ "//third_party/bounds_checking_function:libsec_shared" ] +} diff --git a/c_utils.bundle.json b/c_utils.bundle.json new file mode 100644 index 0000000..3983446 --- /dev/null +++ b/c_utils.bundle.json @@ -0,0 +1,103 @@ +{ + "name": "@openharmony/c_utils", + "version": "3.1.0", + "description": "c_utils", + "publishAs": "code-segment", + "segment": { + "destPath": "commonlibrary/c_utils" + }, + "scripts": { + "install": "DEST_PATH=${DEP_BUNDLE_BASE}/commonlibrary/c_utils/base && mkdir -p $DEST_PATH && cp -r ./* $DEST_PATH" + }, + "author": {}, + "repository": "", + "license": "Apache License 2.0", + "component": { + "name": "c_utils", + "subsystem": "commonlibrary", + "adapted_system_type": [ "standard" ], + "deps": { + "components": [ + "hilog_native" + ], + "third_party": [] + }, + "build": { + "sub_component": [ + ], + "inner_kits": [ + { + "name": "//commonlibrary/c_utils/base:utils", + "header": { + "header_files": [ + "ashmem.h", + "common_errors.h", + "common_timer_errors.h", + "datetime_ex.h", + "directory_ex.h", + "errors.h", + "file_ex.h", + "flat_obj.h", + "nocopyable.h", + "observer.h", + "parcel.h", + "pubdef.h", + "refbase.h", + "rwlock.h", + "safe_block_queue.h", + "safe_map.h", + "safe_queue.h", + "securec.h", + "securectype.h", + "semaphore_ex.h", + "singleton.h", + "sorted_vector.h", + "string_ex.h", + "thread_ex.h", + "thread_pool.h", + "timer.h", + "unique_fd.h" + ], + "header_base": "//commonlibrary/c_utils/base/include" + } + }, + { + "name": "//commonlibrary/c_utils/base:utilsbase", + "header": { + "header_files": [ + "ashmem.h", + "common_errors.h", + "common_timer_errors.h", + "datetime_ex.h", + "directory_ex.h", + "errors.h", + "file_ex.h", + "flat_obj.h", + "nocopyable.h", + "observer.h", + "parcel.h", + "pubdef.h", + "refbase.h", + "rwlock.h", + "safe_block_queue.h", + "safe_map.h", + "safe_queue.h", + "securec.h", + "securectype.h", + "semaphore_ex.h", + "singleton.h", + "sorted_vector.h", + "string_ex.h", + "thread_ex.h", + "thread_pool.h", + "timer.h", + "unique_fd.h" + ], + "header_base": "//commonlibrary/c_utils/base/include" + } + } + ] + } + } + } + \ No newline at end of file diff --git a/commonlibrary_c_utils-OpenHarmony-v3.2-Release.tar.gz b/commonlibrary_c_utils-OpenHarmony-v3.2-Release.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..d3c910da497626d5ad9c1128c4444c1be12e8881 GIT binary patch literal 86845 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

5C>>8+K*heoEjO+Vq!z- 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 literal 0 HcmV?d00001 diff --git a/commonlibrary_c_utils.spec b/commonlibrary_c_utils.spec new file mode 100644 index 0000000..72f51f2 --- /dev/null +++ b/commonlibrary_c_utils.spec @@ -0,0 +1,121 @@ +# 不输出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: 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,不用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 +* Thu Jun 15 2023 chrisshangguan - 1.0.0-1 +- Init and adapt to openeuler -- Gitee