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 0000000000000000000000000000000000000000..b9f83d37fef786742213dd98748d04032840fcfa --- /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/0001-commonlibrary-c_utils.patch b/0001-commonlibrary-c_utils.patch new file mode 100644 index 0000000000000000000000000000000000000000..48c6c17ebeb9744c26f8418a79b31d464b73a2ac --- /dev/null +++ b/0001-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/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 Binary files /dev/null and b/commonlibrary_c_utils-OpenHarmony-v3.2-Release.tar.gz differ diff --git a/commonlibrary_c_utils.spec b/commonlibrary_c_utils.spec new file mode 100644 index 0000000000000000000000000000000000000000..fd8fade9a743ecc7c909c1147e060eb584d792b1 --- /dev/null +++ b/commonlibrary_c_utils.spec @@ -0,0 +1,94 @@ +# 不输出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 +# 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包名称 +Source0: https://gitee.com/openharmony/commonlibrary_c_utils/repository/archive/%{oh_version}.tar.gz #/%{name}-%{oh_version}.tar.gz +# 补丁定义 +Patch0001: 0001-commonlibrary-c_utils.patch +Patch0002: 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路径下 +rm -rf %{_builddir}/* +%autosetup -p1 -n %{name}-%{oh_version} + +cd %{_builddir} +mkdir -p %{_builddir}/commonlibrary +mv %{name}-%{oh_version} %{_builddir}/commonlibrary/c_utils + +mkdir %{name}-%{oh_version} + +# build directory +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}/ + +# 拷贝依赖的组件的gn文件 +mkdir -p %{_builddir}/base/hiviewdfx + +cp -rf %{_builddir}/build/openeuler/compiler_gn/base/hiviewdfx/hilog %{_builddir}/base/hiviewdfx + +# 编译阶段 +%build +cd %{_builddir} +# rm -rf %{_builddir}/out + +%ifarch x86_64 +bash build.sh --product-name openeuler --target-cpu x86_64 +%endif + +%ifarch aarch64 +bash build.sh --product-name openeuler --target-cpu arm64 +%endif + +# 安装阶段 +%install +install -d %{buildroot}/%{_includedir}/c_utils +install -d %{buildroot}/%{_includedir}/c_utils/linux + +install -d %{buildroot}/%{_libdir} + +install -m 0755 %{_builddir}/out/openeuler/packages/phone/system/lib64/libutils.z.so %{buildroot}/%{_libdir} +# 到源码路径下拷贝头文件及其目录到%{buildroot}/usr/include/eventhandler下,保持目录结构相同 +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 + +# rpm安装后需要安装到系统中的文件,及上面说的so和头文件 +%files +%{_libdir}/*.so +%{_includedir}/c_utils/* +%{_includedir}/c_utils/linux/* + +# 变更日志 +%changelog +* Thu Jun 15 2023 chrisshangguan - 1.0.0-1 +- Init and adapt to openeuler