new package: sysprop

This commit is contained in:
Tee KOBAYASHI 2022-12-13 19:43:46 +09:00 committed by xtkoba
parent a453fe75d8
commit 7c7674c03b
3 changed files with 156 additions and 0 deletions

105
packages/sysprop/build.sh Normal file
View File

@ -0,0 +1,105 @@
TERMUX_PKG_HOMEPAGE=https://android.googlesource.com/platform/system/tools/sysprop
TERMUX_PKG_DESCRIPTION="Generates cpp / java sysprop"
TERMUX_PKG_LICENSE="Apache-2.0"
TERMUX_PKG_MAINTAINER="@termux"
_TAG_VERSION=13.0.0
_TAG_REVISION=15
TERMUX_PKG_VERSION=${_TAG_VERSION}.${_TAG_REVISION}
TERMUX_PKG_SRCURL=(https://android.googlesource.com/platform/system/tools/sysprop
https://android.googlesource.com/platform/system/core
https://android.googlesource.com/platform/system/libbase)
TERMUX_PKG_GIT_BRANCH=android-${_TAG_VERSION}_r${_TAG_REVISION}
TERMUX_PKG_SHA256=(SKIP_CHECKSUM
SKIP_CHECKSUM
SKIP_CHECKSUM)
TERMUX_PKG_SKIP_SRC_EXTRACT=true
TERMUX_PKG_BUILD_IN_SRC=true
# aapt is for libandroid-base.so
TERMUX_PKG_DEPENDS="aapt, libc++, libprotobuf"
TERMUX_PKG_BUILD_DEPENDS="fmt"
termux_step_post_get_source() {
# FIXME: We would like to enable checksums when downloading
# tar files, but they change each time as the tar metadata
# differs: https://github.com/google/gitiles/issues/84
for i in $(seq 0 $(( ${#TERMUX_PKG_SRCURL[@]}-1 ))); do
git clone --depth 1 --single-branch \
--branch $TERMUX_PKG_GIT_BRANCH \
${TERMUX_PKG_SRCURL[$i]}
done
}
termux_step_pre_configure() {
termux_setup_protobuf
CXXFLAGS+=" -fPIC -std=c++17"
CPPFLAGS+=" -DNDEBUG -D__ANDROID_SDK_VERSION__=__ANDROID_API__"
_TMP_LIBDIR=$TERMUX_PKG_SRCDIR/_lib
rm -rf $_TMP_LIBDIR
mkdir -p $_TMP_LIBDIR
_TMP_BINDIR=$TERMUX_PKG_SRCDIR/_bin
rm -rf $_TMP_BINDIR
mkdir -p $_TMP_BINDIR
LDFLAGS+=" -L$_TMP_LIBDIR"
}
termux_step_make() {
. $TERMUX_PKG_BUILDER_DIR/sources.sh
local LIBBASE_SRCDIR=$TERMUX_PKG_SRCDIR/libbase
local LIBPROPERTYINFOPARSER_SRCDIR=$TERMUX_PKG_SRCDIR/core/property_service/libpropertyinfoparser
local LIBPROPERTYINFOSERIALIZER_SRCDIR=$TERMUX_PKG_SRCDIR/core/property_service/libpropertyinfoserializer
local SYSPROP_SRCDIR=$TERMUX_PKG_SRCDIR/sysprop
CPPFLAGS+=" -I. -I./include"
# Build libpropertyinfoparser:
cd $LIBPROPERTYINFOPARSER_SRCDIR
for f in $libpropertyinfoparser_sources; do
$CXX $CXXFLAGS $CPPFLAGS $f -c
done
$AR cru $_TMP_LIBDIR/libpropertyinfoparser.a *.o
CPPFLAGS+=" -I$LIBPROPERTYINFOPARSER_SRCDIR/include"
CPPFLAGS+=" -I$LIBBASE_SRCDIR/include"
# Build libpropertyinfoserializer:
cd $LIBPROPERTYINFOSERIALIZER_SRCDIR
for f in $libpropertyinfoserializer_sources; do
$CXX $CXXFLAGS $CPPFLAGS $f -c
done
$AR cru $_TMP_LIBDIR/libpropertyinfoserializer.a *.o
CPPFLAGS+=" -I$LIBPROPERTYINFOSERIALIZER_SRCDIR/include"
# Build sysprop:
cd $SYSPROP_SRCDIR
for f in $sysprop_proto; do
protoc --cpp_out=. $f
done
local _LDFLAGS_SYSPROP="$LDFLAGS
-landroid-base
-lfmt
-lpropertyinfoparser
-lpropertyinfoserializer
-lprotobuf"
$CXX $CXXFLAGS $CPPFLAGS \
$sysprop_sources \
$sysprop_cpp_sources \
$_LDFLAGS_SYSPROP \
-o $_TMP_BINDIR/sysprop_cpp
$CXX $CXXFLAGS $CPPFLAGS \
$sysprop_sources \
$sysprop_java_sources \
$_LDFLAGS_SYSPROP \
-o $_TMP_BINDIR/sysprop_java
}
termux_step_make_install() {
install -Dm700 -t $TERMUX_PREFIX/bin \
$_TMP_BINDIR/sysprop_{cpp,java}
}

View File

@ -0,0 +1,20 @@
--- a/libbase/include/android-base/unique_fd.h
+++ b/libbase/include/android-base/unique_fd.h
@@ -46,7 +46,7 @@
// unique_fd is also known as ScopedFd/ScopedFD/scoped_fd; mentioned here to help
// you find this class if you're searching for one of those names.
-#if defined(__BIONIC__)
+#if defined(__BIONIC__) && __ANDROID_API__ >= 29
#include <android/fdsan.h>
#endif
@@ -54,7 +54,7 @@
namespace base {
struct DefaultCloser {
-#if defined(__BIONIC__)
+#if defined(__BIONIC__) && __ANDROID_API__ >= 29
static void Tag(int fd, void* old_addr, void* new_addr) {
if (android_fdsan_exchange_owner_tag) {
uint64_t old_tag = android_fdsan_create_owner_tag(ANDROID_FDSAN_OWNER_TYPE_UNIQUE_FD,

View File

@ -0,0 +1,31 @@
# libpropertyinfoparser
local libpropertyinfoparser_sources="
property_info_parser.cpp
"
# libpropertyinfoserializer
local libpropertyinfoserializer_sources="
property_info_file.cpp
property_info_serializer.cpp
trie_builder.cpp
trie_serializer.cpp
"
# sysprop
local sysprop_proto="
sysprop.proto
"
local sysprop_sources="
${sysprop_proto//.proto/.pb.cc}
Common.cpp
CodeWriter.cpp
"
local sysprop_cpp_sources="
CppGen.cpp
CppMain.cpp
"
local sysprop_java_sources="
JavaGen.cpp
JavaMain.cpp
"