Compare commits

..

No commits in common. "lineage-20_mondrian" and "lineage-20_lte" have entirely different histories.

26 changed files with 378 additions and 441 deletions

110
.drone.yml Normal file
View File

@ -0,0 +1,110 @@
kind: pipeline
type: docker
name: mondrianwifi
environment:
device: mondrianwifi
version: 20.0
steps:
- name: sync
pull: always
image: docker.nyyu.dev/lineage/android:latest
commands:
- cd /build
- rm -rf .repo/repo
- repo init -u https://github.com/LineageOS-UL/android.git -b lineage-$version
- mkdir -p .repo/local_manifests
- cp $DRONE_WORKSPACE_BASE/$device.xml .repo/local_manifests/roomservice.xml
- bash $DRONE_WORKSPACE_BASE/sync.sh
volumes:
- name: build
path: /build
- name: build
pull: always
image: docker.nyyu.dev/lineage/android:latest
commands:
- cd /build
- bash -c ". build/envsetup.sh && lunch lineage_$device-userdebug && mka bacon -j6"
volumes:
- name: build
path: /build
- name: tools
path: /tools
- name: copy
pull: always
image: docker.nyyu.dev/lineage/android:latest
commands:
- rm -f /http/lineage-$version-*-UNOFFICIAL-$device.zip*
- mv -f /build/out/target/product/$device/lineage-$version-*-UNOFFICIAL-$device.zip* /http/
- cat /build/changelog-$device-$version.md >> /http/changelog-$device-$version.md
- ls -lh /http/lineage-$version-*-UNOFFICIAL-$device.zip*
volumes:
- name: build
path: /build
- name: http
path: /http
- name: clean
pull: always
image: docker.nyyu.dev/lineage/android:latest
commands:
- rm -f /build/out/target/product/$device/lineage-$version-*-UNOFFICIAL-$device.zip_* /build/out/target/product/$device/lineage_$device-ota-eng.*.zip
- rm -f /build/changelog-$device-$version.md
volumes:
- name: build
path: /build
trigger:
event:
- custom
- cron
volumes:
- name: http
host:
path: /srv/http/drone
- name: build
host:
path: /media/fast/lineage/lineage-20.0
- name: tools
host:
path: /media/fast/lineage/tools
image_pull_secrets:
- dockerconfig
---
kind: pipeline
type: docker
name: mondrianwifi-publish
environment:
device: mondrianwifi
version: 20.0
steps:
- name: publish
pull: always
image: docker.nyyu.dev/lineage/android:latest
commands:
- mv /http/lineage-$version-*-UNOFFICIAL-$device.zip* /publish/$version/$device/
- cat /http/changelog-$device-$version.md >> /publish/$version/$device/changelog.md
- rm -f /http/changelog-$device-$version.md
- ls -lh /publish/$version/$device/
volumes:
- name: http
path: /http
- name: publish
path: /publish
trigger:
event:
- promote
volumes:
- name: http
host:
path: /srv/http/drone
- name: publish
host:
path: /mnt/android/lineage
image_pull_secrets:
- dockerconfig

View File

@ -1,5 +0,0 @@
{
"yaml.schemas": {
"https://raw.githubusercontent.com/woodpecker-ci/woodpecker/master/pipeline/schema/schema.json": "file:///home/nyyu/dev/lineage/build/.woodpecker/.build.yml"
}
}

89
.woodpecker.yml Normal file
View File

@ -0,0 +1,89 @@
variables:
- &build_vol '/media/fast/lineage/lineage-20.0:/build'
- &tools_vol '/media/fast/lineage/tools:/tools'
- &http_vol '/srv/http/drone:/http'
- &pub_vol '/mnt/android/lineage:/publish'
matrix:
include:
- device: mondrianlte
version: 20.0
pipeline:
sync:
pull: true
image: docker.nyyu.dev/lineage/android
commands:
- HOME=/home/drone
- git config --global user.email 'drone@nyyu.dev'
- git config --global user.name 'drone'
- cd /build
- rm -rf .repo/repo
- repo init -u https://github.com/LineageOS-UL/android.git -b lineage-$version
- mkdir -p .repo/local_manifests
- cp $CI_WORKSPACE/$device.xml .repo/local_manifests/roomservice.xml
- bash $CI_WORKSPACE/sync.sh
volumes:
- *build_vol
when:
event:
- manual
- cron
build:
pull: true
image: docker.nyyu.dev/lineage/android
environment:
- BUILD_HOSTNAME=docker
commands:
- cd /build
- bash -c ". build/envsetup.sh && lunch lineage_$device-userdebug && mka bacon -j6"
volumes:
- *build_vol
- *tools_vol
when:
event:
- manual
- cron
copy:
pull: true
image: alpine
commands:
- rm -f /http/lineage-$version-*-UNOFFICIAL-$device.zip*
- mv -f /build/out/target/product/$device/lineage-$version-*-UNOFFICIAL-$device.zip* /http/
- cat /build/changelog-$device-$version.md >> /http/changelog-$device-$version.md
- ls -lh /http/lineage-$version-*-UNOFFICIAL-$device.zip*
volumes:
- *build_vol
- *http_vol
when:
event:
- manual
- cron
clean:
pull: true
image: alpine
commands:
- rm -f /build/out/target/product/$device/lineage-$version-*-UNOFFICIAL-$device.zip_* /build/out/target/product/$device/lineage_$device-ota-eng.*.zip
- rm -rf /build/out/target/product/$device/obj/PACKAGING/target_files_intermediates/*
- find /build/out/target/product/$device -type f -name '*.prop' -exec rm -vf {} +
- rm -f /build/changelog-$device-$version.md
volumes:
- *build_vol
when:
event:
- manual
- cron
publish:
pull: true
image: alpine
commands:
- mv /http/lineage-$version-*-UNOFFICIAL-$device.zip* /publish/$version/$device/
- cat /http/changelog-$device-$version.md >> /publish/$version/$device/changelog.md
- rm -f /http/changelog-$device-$version.md
- ls -lh /publish/$version/$device/
volumes:
- *http_vol
- *pub_vol
when:
event:
- deployment

View File

@ -1,33 +0,0 @@
variables:
- &build_vol '/media/fast/lineage/lineage-20.0:/build'
- &tools_vol '/media/fast/lineage/tools:/tools'
matrix:
include:
- device: mondrianlte
version: 20.0
skip_clone: true
pipeline:
build:
pull: true
image: docker.nyyu.dev/lineage/android
environment:
- BUILD_HOSTNAME=docker
commands:
- export HOME=/build
- cd /build
- find /build/out/target/product/$device -type f -name '*.prop' -exec rm -vf {} + || true
- bash -c ". build/envsetup.sh && lunch lineage_$device-userdebug && (mka bacon -j6 || (cat out/build_error && exit 1))"
volumes:
- *build_vol
- *tools_vol
when:
event:
- manual
- cron
depends_on:
- sync
- build-wifi

View File

@ -1,32 +0,0 @@
variables:
- &build_vol '/media/fast/lineage/lineage-20.0:/build'
- &tools_vol '/media/fast/lineage/tools:/tools'
matrix:
include:
- device: mondrianwifi
version: 20.0
skip_clone: true
pipeline:
build:
pull: true
image: docker.nyyu.dev/lineage/android
environment:
- BUILD_HOSTNAME=docker
commands:
- export HOME=/build
- cd /build
- find /build/out/target/product/$device -type f -name '*.prop' -exec rm -vf {} + || true
- bash -c ". build/envsetup.sh && lunch lineage_$device-userdebug && (mka bacon -j6 || (cat out/build_error && exit 1))"
volumes:
- *build_vol
- *tools_vol
when:
event:
- manual
- cron
depends_on:
- sync

View File

@ -1,24 +0,0 @@
variables:
- &build_vol '/media/fast/lineage/lineage-20.0:/build'
matrix:
include:
- device: mondrian
version: 20.0
pipeline:
sync:
image: docker.nyyu.dev/lineage/android
commands:
- cd /build
- bash $CI_WORKSPACE/changelog.sh
volumes:
- *build_vol
when:
event:
- manual
- cron
depends_on:
- build-wifi
- build-lte

View File

@ -1,45 +0,0 @@
variables:
- &build_vol '/media/fast/lineage/lineage-20.0:/build'
- &http_vol '/srv/http/drone:/http'
matrix:
include:
- device: mondrianwifi
version: 20.0
- device: mondrianlte
version: 20.0
skip_clone: true
pipeline:
copy:
pull: true
image: alpine
commands:
- rm -f /http/lineage-$version-*-UNOFFICIAL-$device.zip*
- mv -f /build/out/target/product/$device/lineage-$version-*-UNOFFICIAL-$device.zip* /http/
- cat /build/changelog-mondrian-$version.md >> /http/changelog-$device-$version.md
- ls -lh /http/lineage-$version-*-UNOFFICIAL-$device.zip*
volumes:
- *build_vol
- *http_vol
when:
event:
- manual
- cron
clean:
pull: true
image: alpine
commands:
- rm -f /build/out/target/product/$device/lineage-$version-*-UNOFFICIAL-$device.zip_* /build/out/target/product/$device/lineage_$device-ota-eng.*.zip
- rm -rf /build/out/target/product/$device/obj/PACKAGING/target_files_intermediates/*
- rm -f /build/changelog-$device-$version.md
volumes:
- *build_vol
when:
event:
- manual
- cron
depends_on:
- changelog

View File

@ -1,28 +0,0 @@
variables:
- &http_vol '/srv/http/drone:/http'
- &pub_vol '/mnt/android/lineage:/publish'
matrix:
include:
- device: mondrianwifi
version: 20.0
- device: mondrianlte
version: 20.0
skip_clone: true
pipeline:
publish:
pull: true
image: alpine
commands:
- mv /http/lineage-$version-*-UNOFFICIAL-$device.zip* /publish/$version/$device/
- cat /http/changelog-$device-$version.md >> /publish/$version/$device/changelog.md
- rm -f /http/changelog-$device-$version.md
- ls -lh /publish/$version/$device/
volumes:
- *http_vol
- *pub_vol
when:
event:
- deployment

View File

@ -1,32 +0,0 @@
variables:
- &build_vol '/media/fast/lineage/lineage-20.0:/build'
matrix:
include:
- device: mondrian
version: 20.0
pipeline:
sync:
pull: true
image: docker.nyyu.dev/lineage/android
commands:
- HOME=/home/drone
- git config --global user.email 'drone@nyyu.dev'
- git config --global user.name 'drone'
- cd /build
- rm -rf .repo/repo
- rm -f .repo/local_manifests/roomservice.xml
- repo init -u https://github.com/LineageOS-UL/android.git -b lineage-$version -g default,-darwin --git-lfs
- mkdir -p .repo/local_manifests
- cp -f $CI_WORKSPACE/$device.xml .repo/local_manifests/roomservice.xml
- repo forall -c 'git reset --hard --quiet' || true
- bash $CI_WORKSPACE/sync.sh
environment:
version: '20.0'
volumes:
- *build_vol
when:
event:
- manual
- cron

View File

@ -1,41 +0,0 @@
#!/bin/bash -e
# shellcheck disable=SC2154,SC2207,SC2016,SC2086,SC2250,SC2312,SC2162
TOPDIR=$(pwd)
changelog=${TOPDIR}/changelog-${device}-${version}.md
declare -A before
if [[ -f gitstate-${device}-${version}.txt ]]
then
read -a tmp < gitstate-${device}-${version}.txt
else
tmp=($(repo forall -c 'echo "${REPO_PATH}:$(git rev-parse --short HEAD)"'))
fi
for i in "${tmp[@]}"; do
IFS=: read -r folder commit <<<"${i}"
before[${folder}]=${commit}
done
echo -e "# Build $(date '+%Y-%m-%d %H:%M:%S %Z')\n" >>"${changelog}"
tmp=($(repo forall -c 'echo "${REPO_PATH}:$(git rev-parse --short HEAD)"'))
for i in "${tmp[@]}"; do
IFS=: read -r folder commit <<<"${i}"
if [[ "${folder}" != lineage/* && "${before[${folder}]}" != "${commit}" ]]; then
cd "${folder}" || continue
log=$(git --no-pager log --pretty=format:"- %s" "${before[${folder}]}".."${commit}" | grep -v XXXHIDEXXX)
if [[ $(echo -n "$log" | wc -c) != 0 ]]; then
{
echo "## ${folder} ${before[${folder}]}..${commit}"
echo "$log"
echo
} >>"${changelog}"
fi
cd "${TOPDIR}" || continue
fi
done
cat "${changelog}"
echo "${tmp[@]}" > gitstate-${device}-${version}.txt

View File

@ -1,7 +1,7 @@
From 50173432aab792769a56d2a7d451d1a65e831532 Mon Sep 17 00:00:00 2001
From: nyyu <mail@nyyu.dev>
Date: Sun, 25 Dec 2022 22:35:09 +0100
Subject: [PATCH] XXXHIDEXXX NetworkStats: disable BPF
Subject: [PATCH] NetworkStats: disable BPF
---
.../native/libs/libnetworkstats/BpfNetworkStats.cpp | 10 +++++-----

View File

@ -1,7 +1,7 @@
From 1b45884632a10093d455eb6aa09ebda35a0919f0 Mon Sep 17 00:00:00 2001
From: nyyu <mail@nyyu.dev>
Date: Sun, 18 Sep 2022 11:44:26 +0200
Subject: [PATCH] XXXHIDEXXX fix: always enable taskbar toggle
Subject: [PATCH] fix: always enable taskbar toggle
Change-Id: I247db667bec92fabcdbe7bd84946e79bae7e0bb6
---

54
fix-bt-1.patch Normal file
View File

@ -0,0 +1,54 @@
From 56c318bf3cc9208c772c7e6d01e88380d2155c67 Mon Sep 17 00:00:00 2001
From: "tzu-hsien.huang" <tzu-hsien.huang@mediatek.com>
Date: Fri, 26 Aug 2022 11:22:03 +0200
Subject: [PATCH] Additionally check le_set_event_mask command resturn status
with UNSUPPORTED_LMP_OR_LL_PARAMETER
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
In GD BT stack, stack will check each return status of HCI Commands. E.g. reset , le_set_event_mask, set_event_mask …etc.
In BT spec 5.2, SIG add some parameters for le_set_event_mask for le audio, like LE Terminate BIG Complete event: Supported.
However, some legacy chips do not support LE Audio feature, and controller will return Status: Unsupported LMP Parameter Value when it receives this HCI Command
When it checks the return value and find the status is not SUCCESS, it will cause FAIL and cannot be compatible with old legacy chip.
After brushing GSI, Bluetooth will turn off automatically when it is turned on.
So all CTS test will always fail.
Check le_set_event_mask command return status with SUCCESS or UNSUPPORTED_LMP_OR_LL_PARAMETER
Bug: 239662211
Test: CtsBluetoothTestCases
Change-Id: I2b0cede7f47eecd2124a386e958773289eb6f11c
---
system/gd/hci/controller.cc | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/system/gd/hci/controller.cc b/system/gd/hci/controller.cc
index da5986fcb7..8be21a20a3 100644
--- a/system/gd/hci/controller.cc
+++ b/system/gd/hci/controller.cc
@@ -540,7 +540,7 @@ struct Controller::impl {
void le_set_event_mask(uint64_t le_event_mask) {
std::unique_ptr<LeSetEventMaskBuilder> packet = LeSetEventMaskBuilder::Create(le_event_mask);
hci_->EnqueueCommand(std::move(packet), module_.GetHandler()->BindOnceOn(
- this, &Controller::impl::check_status<LeSetEventMaskCompleteView>));
+ this, &Controller::impl::check_event_mask_status<LeSetEventMaskCompleteView>));
}
template <class T>
@@ -551,6 +551,15 @@ struct Controller::impl {
ASSERT(status_view.GetStatus() == ErrorCode::SUCCESS);
}
+ template <class T>
+ void check_event_mask_status(CommandCompleteView view) {
+ ASSERT(view.IsValid());
+ auto status_view = T::Create(view);
+ ASSERT(status_view.IsValid());
+ ASSERT(status_view.GetStatus() == ErrorCode::SUCCESS ||
+ status_view.GetStatus() == ErrorCode::UNSUPPORTED_LMP_OR_LL_PARAMETER);
+ }
+
#define OP_CODE_MAPPING(name) \
case OpCode::name: { \
uint16_t index = (uint16_t)OpCodeIndex::name; \

40
fix-bt-2.patch Normal file
View File

@ -0,0 +1,40 @@
From bf9a555f96cceb9ce49344e5055c2afa479df21d Mon Sep 17 00:00:00 2001
From: Peter Cai <peter@typeblog.net>
Date: Fri, 26 Aug 2022 11:23:30 +0200
Subject: [PATCH] gd: hci: Ignore unexpected status events
For some reason, on some old devices, the controller will report a
remote to support SNIFF_SUBRATING even when it does not. Just ignore the
error here (the status event comes from the failure response).
Change-Id: Ifb9a65fd77f21d15a8dc1ced9240194d38218ef6
---
system/gd/hci/hci_layer.cc | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/system/gd/hci/hci_layer.cc b/system/gd/hci/hci_layer.cc
index 57d7e55fff..b5a9d065be 100644
--- a/system/gd/hci/hci_layer.cc
+++ b/system/gd/hci/hci_layer.cc
@@ -195,14 +195,13 @@ struct HciLayer::impl {
EventView::Create(PacketView<kLittleEndian>(std::make_shared<std::vector<uint8_t>>(std::vector<uint8_t>()))));
command_queue_.front().GetCallback<CommandCompleteView>()->Invoke(move(command_complete_view));
} else {
- ASSERT_LOG(
- command_queue_.front().waiting_for_status_ == is_status,
- "0x%02hx (%s) was not expecting %s event",
- op_code,
- OpCodeText(op_code).c_str(),
- logging_id.c_str());
-
- command_queue_.front().GetCallback<TResponse>()->Invoke(move(response_view));
+ if (command_queue_.front().waiting_for_status_ == is_status) {
+ command_queue_.front().GetCallback<TResponse>()->Invoke(move(response_view));
+ } else {
+ CommandCompleteView command_complete_view = CommandCompleteView::Create(
+ EventView::Create(PacketView<kLittleEndian>(std::make_shared<std::vector<uint8_t>>(std::vector<uint8_t>()))));
+ command_queue_.front().GetCallback<CommandCompleteView>()->Invoke(move(command_complete_view));
+ }
}
command_queue_.pop_front();

33
fix-bt-3.patch Normal file
View File

@ -0,0 +1,33 @@
From 6c794ea2b4247a3359453cb178cfd0f8e2d38f56 Mon Sep 17 00:00:00 2001
From: Sugakesshaa <83747297+bheatleyyy@users.noreply.github.com>
Date: Fri, 9 Sep 2022 03:35:26 +0800
Subject: [PATCH] Nuke condition check for controller
---
system/gd/hci/controller.cc | 13 +++----------
1 file changed, 3 insertions(+), 10 deletions(-)
diff --git a/system/gd/hci/controller.cc b/system/gd/hci/controller.cc
index 8be21a20a3..dbece21c6e 100644
--- a/system/gd/hci/controller.cc
+++ b/system/gd/hci/controller.cc
@@ -66,16 +66,9 @@ struct Controller::impl {
hci_->EnqueueCommand(ReadBufferSizeBuilder::Create(),
handler->BindOnceOn(this, &Controller::impl::read_buffer_size_complete_handler));
-
- if (is_supported(OpCode::LE_READ_BUFFER_SIZE_V2)) {
- hci_->EnqueueCommand(
- LeReadBufferSizeV2Builder::Create(),
- handler->BindOnceOn(this, &Controller::impl::le_read_buffer_size_v2_handler));
- } else {
- hci_->EnqueueCommand(
- LeReadBufferSizeV1Builder::Create(),
- handler->BindOnceOn(this, &Controller::impl::le_read_buffer_size_handler));
- }
+
+ hci_->EnqueueCommand(LeReadBufferSizeV1Builder::Create(),
+ handler->BindOnceOn(this, &Controller::impl::le_read_buffer_size_handler));
hci_->EnqueueCommand(
LeReadFilterAcceptListSizeBuilder::Create(),

View File

@ -1,7 +1,7 @@
From 6ad0718fa87dfbaa2bd95ab23f60f485a896e84b Mon Sep 17 00:00:00 2001
From: nyyu <mail@nyyu.dev>
Date: Fri, 30 Sep 2022 22:40:43 +0200
Subject: [PATCH] XXXHIDEXXX bt: disable le
Subject: [PATCH] bt: disable le
Change-Id: I5c258b1401fcd6fbfa98c98849db209688f52d3c
---

View File

@ -1,7 +1,7 @@
From 74d6bf5b114dfe94ca84e94d111d191ae5155a8e Mon Sep 17 00:00:00 2001
From: nyyu <mail@nyyu.dev>
Date: Sat, 10 Dec 2022 10:46:10 +0100
Subject: [PATCH] XXXHIDEXXX fix: enable more grids for tablet
Subject: [PATCH] fix: enable more grids for tablet
Change-Id: I18c617760f5ad94d0baca06865525d7e73ee45ca
---
@ -14,7 +14,7 @@ index 8105afaa24..eef99d49bb 100644
+++ b/res/xml/device_profiles.xml
@@ -103,7 +103,7 @@
launcher:dbFile="launcher_4_by_5.db"
launcher:inlineNavButtonsEndSpacing="@dimen/taskbar_button_margin_split"
launcher:inlineNavButtonsEndSpacing="@dimen/taskbar_button_margin_4_5"
launcher:defaultLayoutId="@xml/default_workspace_4x5"
- launcher:deviceCategory="phone|multi_display" >
+ launcher:deviceCategory="phone|tablet|multi_display" >
@ -23,7 +23,7 @@ index 8105afaa24..eef99d49bb 100644
launcher:name="Short Stubby"
@@ -167,7 +167,7 @@
launcher:dbFile="launcher.db"
launcher:inlineNavButtonsEndSpacing="@dimen/taskbar_button_margin_split"
launcher:inlineNavButtonsEndSpacing="@dimen/taskbar_button_margin_5_5"
launcher:defaultLayoutId="@xml/default_workspace_5x5"
- launcher:deviceCategory="phone|multi_display" >
+ launcher:deviceCategory="phone|tablet|multi_display" >

View File

@ -1,7 +1,7 @@
From d2022bc573e304388ec55b8f2ba710e8d960c18b Mon Sep 17 00:00:00 2001
From: nyyu <mail@nyyu.dev>
Date: Sun, 4 Dec 2022 10:25:36 +0100
Subject: [PATCH] XXXHIDEXXX fix: rear camera rotation
Subject: [PATCH] fix: rear camera rotation
---
camera/CameraUtils.cpp | 2 +-

View File

@ -1,38 +0,0 @@
From 497ae885d6a92d473ec3c603bd39e4510380240d Mon Sep 17 00:00:00 2001
From: nyyu <mail@nyyu.dev>
Date: Sat, 7 Jan 2023 10:54:05 +0100
Subject: [PATCH] XXXHIDEXXX releasetools: Store the build.prop file in the OTA zip
Change-Id: I81825a8a4633dff294a372ccf4de8e3aef99750c
---
tools/releasetools/non_ab_ota.py | 3 +++
tools/releasetools/ota_utils.py | 2 +-
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/tools/releasetools/non_ab_ota.py b/tools/releasetools/non_ab_ota.py
index ad9cbcc82..91492ad76 100644
--- a/tools/releasetools/non_ab_ota.py
+++ b/tools/releasetools/non_ab_ota.py
@@ -308,6 +308,9 @@ endif;
script.AddToZip(input_zip, output_zip, input_path=OPTIONS.updater_binary)
metadata.required_cache = script.required_cache
+ common.ZipWriteStr(output_zip, "system/build.prop",
+ input_zip.read("SYSTEM/build.prop").decode())
+
# We haven't written the metadata entry, which will be done in
# FinalizeMetadata.
common.ZipClose(output_zip)
diff --git a/tools/releasetools/ota_utils.py b/tools/releasetools/ota_utils.py
index ff98ba9fb..1fb78db61 100644
--- a/tools/releasetools/ota_utils.py
+++ b/tools/releasetools/ota_utils.py
@@ -39,7 +39,7 @@ OPTIONS.boot_variable_file = None
METADATA_NAME = 'META-INF/com/android/metadata'
METADATA_PROTO_NAME = 'META-INF/com/android/metadata.pb'
-UNZIP_PATTERN = ['IMAGES/*', 'INSTALL/*', 'META/*', 'OTA/*', 'RADIO/*']
+UNZIP_PATTERN = ['IMAGES/*', 'INSTALL/*', 'META/*', 'OTA/*', 'RADIO/*', 'SYSTEM/build.prop']
SECURITY_PATCH_LEVEL_PROP_NAME = "ro.build.version.security_patch"

View File

@ -1,7 +1,7 @@
From 6fde482e5b5d0dd0adc7617c334f0bb0c0482c7d Mon Sep 17 00:00:00 2001
From: nyyu <mail@nyyu.dev>
Date: Fri, 23 Dec 2022 19:20:55 +0100
Subject: [PATCH] XXXHIDEXXX fix: trebuchet taskbar
Subject: [PATCH] fix: trebuchet taskbar
Change-Id: I566e6a3cf799cdd8ee5d4f07221b9d6bb80d41cb
---

View File

@ -1,141 +0,0 @@
From 437d7b1ee54df480d212ca97ddc3b8acd2944966 Mon Sep 17 00:00:00 2001
From: maxwen <max.weninger@gmail.com>
Date: Tue, 25 Sep 2018 09:44:26 +0200
Subject: [PATCH] XXXHIDEXXX base: use better solution for MicroG FAKE_PACKAGE_SIGNATURE
make it a privileged permission instead of a runtime one
to add extra safety dont trust the signature coming from the
package but limit to the microg signature and only allow
from FakeStore and GmsCore package names
https://github.com/microg/GmsCore/blob/master/play-services-core/src/main/res/values/signature.xml
thanks for the inspiration from Chirayu Desai <chirayudesai1@gmail.com>
Reference:
https://gitlab.com/CalyxOS/platform_frameworks_base/-/commit/ba8cff41aaaafec0982f29dcb1869c1ea61a6cb4
Only diff is that we keep original permission name so we can
continue to use upstream prebuilt microg for now
Change-Id: I394990d89ab427b94b04db7ca7e06206a476965b
---
core/res/AndroidManifest.xml | 5 +++
core/res/res/values/custom_strings.xml | 22 +++++++++++
.../com/android/server/pm/ComputerEngine.java | 37 ++++++++++++++++++-
3 files changed, 62 insertions(+), 2 deletions(-)
create mode 100644 core/res/res/values/custom_strings.xml
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 7439b2f0921ff..9b89297348992 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -3534,6 +3534,11 @@
android:description="@string/permdesc_getPackageSize"
android:protectionLevel="normal" />
+ <!-- @hide Allows an application to change the package signature as
+ seen by applications -->
+ <permission android:name="android.permission.FAKE_PACKAGE_SIGNATURE"
+ android:protectionLevel="signature|privileged" />
+
<!-- @deprecated No longer useful, see
{@link android.content.pm.PackageManager#addPackageToPreferred}
for details. -->
diff --git a/core/res/res/values/custom_strings.xml b/core/res/res/values/custom_strings.xml
new file mode 100644
index 0000000000000..aa2d50b869fec
--- /dev/null
+++ b/core/res/res/values/custom_strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/* //device/apps/common/assets/res/any/strings.xml
+**
+** Copyright 2006, The Android Open Source Project
+**
+** 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.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+
+</resources>
diff --git a/services/core/java/com/android/server/pm/ComputerEngine.java b/services/core/java/com/android/server/pm/ComputerEngine.java
index 259ca655d2b9f..d029fbf30d37a 100644
--- a/services/core/java/com/android/server/pm/ComputerEngine.java
+++ b/services/core/java/com/android/server/pm/ComputerEngine.java
@@ -426,6 +426,15 @@ protected ApplicationInfo androidApplication() {
return mLocalAndroidApplication;
}
+ /**
+ * The Google signature faked by microG.
+ */
+ private static final String MICROG_FAKE_SIGNATURE = "308204433082032ba003020102020900c2e08746644a308d300d06092a864886f70d01010405003074310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e205669657731143012060355040a130b476f6f676c6520496e632e3110300e060355040b1307416e64726f69643110300e06035504031307416e64726f6964301e170d3038303832313233313333345a170d3336303130373233313333345a3074310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e205669657731143012060355040a130b476f6f676c6520496e632e3110300e060355040b1307416e64726f69643110300e06035504031307416e64726f696430820120300d06092a864886f70d01010105000382010d00308201080282010100ab562e00d83ba208ae0a966f124e29da11f2ab56d08f58e2cca91303e9b754d372f640a71b1dcb130967624e4656a7776a92193db2e5bfb724a91e77188b0e6a47a43b33d9609b77183145ccdf7b2e586674c9e1565b1f4c6a5955bff251a63dabf9c55c27222252e875e4f8154a645f897168c0b1bfc612eabf785769bb34aa7984dc7e2ea2764cae8307d8c17154d7ee5f64a51a44a602c249054157dc02cd5f5c0e55fbef8519fbe327f0b1511692c5a06f19d18385f5c4dbc2d6b93f68cc2979c70e18ab93866b3bd5db8999552a0e3b4c99df58fb918bedc182ba35e003c1b4b10dd244a8ee24fffd333872ab5221985edab0fc0d0b145b6aa192858e79020103a381d93081d6301d0603551d0e04160414c77d8cc2211756259a7fd382df6be398e4d786a53081a60603551d2304819e30819b8014c77d8cc2211756259a7fd382df6be398e4d786a5a178a4763074310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e205669657731143012060355040a130b476f6f676c6520496e632e3110300e060355040b1307416e64726f69643110300e06035504031307416e64726f6964820900c2e08746644a308d300c0603551d13040530030101ff300d06092a864886f70d010104050003820101006dd252ceef85302c360aaace939bcff2cca904bb5d7a1661f8ae46b2994204d0ff4a68c7ed1a531ec4595a623ce60763b167297a7ae35712c407f208f0cb109429124d7b106219c084ca3eb3f9ad5fb871ef92269a8be28bf16d44c8d9a08e6cb2f005bb3fe2cb96447e868e731076ad45b33f6009ea19c161e62641aa99271dfd5228c5c587875ddb7f452758d661f6cc0cccb7352e424cc4365c523532f7325137593c4ae341f4db41edda0d0b1071a7c440f0fe9ea01cb627ca674369d084bd2fd911ff06cdbf2cfa10dc0f893ae35762919048c7efc64c7144178342f70581c9de573af55b390dd7fdb9418631895d5f759f30112687ff621410c069308a";
+ /**
+ * List of packages which require signature spoofing.
+ */
+ private static final List<String> MICROG_FAKE_SIGNATURE_PACKAGES = List.of("com.google.android.gms", "com.android.vending");
+
ComputerEngine(PackageManagerService.Snapshot args, int version) {
mVersion = version;
mSettings = new Settings(args.settings);
@@ -1619,15 +1628,26 @@ public final PackageInfo generatePackageInfo(PackageStateInternal ps,
// Compute GIDs only if requested
final int[] gids = (flags & PackageManager.GET_GIDS) == 0 ? EMPTY_INT_ARRAY
: mPermissionManager.getGidsForUid(UserHandle.getUid(userId, ps.getAppId()));
+
+ // Allow microG GmsCore and FakeStore to spoof signature
+ final boolean isMicroG = MICROG_FAKE_SIGNATURE_PACKAGES.contains(p.getPackageName());
+
// Compute granted permissions only if package has requested permissions
- final Set<String> permissions = ((flags & PackageManager.GET_PERMISSIONS) == 0
- || ArrayUtils.isEmpty(p.getRequestedPermissions())) ? Collections.emptySet()
+ // or we matched a microg package
+ final Set<String> permissions = (((flags & PackageManager.GET_PERMISSIONS) == 0
+ || ArrayUtils.isEmpty(p.getRequestedPermissions()))
+ && !isMicroG)
+ ? Collections.emptySet()
: mPermissionManager.getGrantedPermissions(ps.getPackageName(), userId);
PackageInfo packageInfo = PackageInfoUtils.generate(p, gids, flags,
state.getFirstInstallTime(), ps.getLastUpdateTime(), permissions, state, userId,
ps);
+ if (isMicroG) {
+ packageInfo = mayFakeSignature(p, packageInfo, permissions);
+ }
+
if (packageInfo == null) {
return null;
}
@@ -1667,6 +1687,19 @@ public final PackageInfo generatePackageInfo(PackageStateInternal ps,
}
}
+ private PackageInfo mayFakeSignature(AndroidPackage p, PackageInfo pi,
+ Set<String> permissions) {
+ try {
+ if (permissions.contains("android.permission.FAKE_PACKAGE_SIGNATURE")) {
+ pi.signatures = new Signature[] {new Signature(MICROG_FAKE_SIGNATURE)};
+ }
+ } catch (Throwable t) {
+ // We should never die because of any failures, this is system code!
+ Log.w("PackageManagerService.FAKE_PACKAGE_SIGNATURE", t);
+ }
+ return pi;
+ }
+
public final PackageInfo getPackageInfo(String packageName,
@PackageManager.PackageInfoFlagsBits long flags, int userId) {
return getPackageInfoInternal(packageName, PackageManager.VERSION_CODE_HIGHEST,

View File

@ -9,5 +9,8 @@
<project name="lineage/android_device_samsung_msm8974-common" path="device/samsung/msm8974-common" remote="nyyu" revision="lineage-20" />
<project name="LineageOS/android_device_samsung_qcom-common" path="device/samsung/qcom-common" remote="github" revision="lineage-20" />
<project name="LineageOS/android_hardware_samsung" path="hardware/samsung" remote="github" revision="lineage-20" />
<project name="lineage/proprietary_vendor_samsung" path="vendor/samsung" remote="nyyu" revision="lineage-20" />
<project name="LineageOS-UL/android_hardware_sony_timekeep" path="hardware/sony/timekeep" remote="losul" />
<project name="TheMuppets/proprietary_vendor_samsung" path="vendor/samsung" remote="github" revision="lineage-18.1" />
<remove-project name="platform/prebuilts/clang/host/darwin-x86" />
</manifest>

View File

@ -1,7 +1,7 @@
From c9a37a5a5a9e63fda74f6fcf45bc9f164957f295 Mon Sep 17 00:00:00 2001
From: Danny Lin <danny@kdrag0n.dev>
Date: Wed, 7 Oct 2020 00:24:54 -0700
Subject: [PATCH] XXXHIDEXXX init: Set properties to make SafetyNet pass
Subject: [PATCH] init: Set properties to make SafetyNet pass
Google's SafetyNet integrity checks will check the values of these
properties when performing basic attestation. Setting fake values helps

View File

@ -1,7 +1,7 @@
From 3db46053ca0547c175fa591075a67b8d76c4b906 Mon Sep 17 00:00:00 2001
From: Danny Lin <danny@kdrag0n.dev>
Date: Mon, 11 Oct 2021 19:59:51 -0700
Subject: [PATCH] XXXHIDEXXX Alter model name to avoid SafetyNet HW attestation
Subject: [PATCH] Alter model name to avoid SafetyNet HW attestation
enforcement
As of September 2, Google is enforcing SafetyNet's previously

View File

@ -1,7 +1,7 @@
From ae57183500bb34032ec426fcae2b9a14e028ce12 Mon Sep 17 00:00:00 2001
From: Danny Lin <danny@kdrag0n.dev>
Date: Mon, 11 Oct 2021 20:00:44 -0700
Subject: [PATCH] XXXHIDEXXX keystore: Block key attestation for SafetyNet
Subject: [PATCH] keystore: Block key attestation for SafetyNet
SafetyNet (part of Google Play Services) opportunistically uses
hardware-backed key attestation via KeyStore as a strong integrity

47
sync.sh Executable file → Normal file
View File

@ -1,18 +1,46 @@
#!/bin/bash -e
# shellcheck disable=SC2250,SC2154,SC2086,SC2207,SC2016
# shellcheck disable=SC2250,SC2154,SC2086,SC1091,SC2312
if [[ -z "$CI_WORKSPACE" ]]; then
CI_WORKSPACE=$DRONE_WORKSPACE_BASE
fi
TOPDIR=$(pwd)
changelog=${TOPDIR}/changelog-${device}-${version}.md
repo sync -q -c -j 6 --fail-fast --force-sync --no-tags || repo sync -q -c -j 6 --fail-fast --force-sync --no-tags || exit 1
declare -A before
tmp=($(repo forall -c 'echo "${REPO_PATH}:$(git rev-parse --short HEAD)"'))
for i in "${tmp[@]}"; do
IFS=: read -r folder commit <<<"${i}"
before[${folder}]=${commit}
done
cd build/tools
git am $CI_WORKSPACE/fix-store-build-prop-zip.patch || git am --abort
cd $TOPDIR
repo sync -q -c -j 6 --fail-fast --force-sync --no-tags
echo -e "# Build $(date '+%Y-%m-%d %H:%M:%S') UTC\n" >>"${changelog}"
tmp=($(repo forall -c 'echo "${REPO_PATH}:$(git rev-parse --short HEAD)"'))
for i in "${tmp[@]}"; do
IFS=: read -r folder commit <<<"${i}"
if [[ "${folder}" != lineage/* && "${before[${folder}]}" != "${commit}" ]]; then
cd "${folder}" || continue
log=$(git --no-pager log --pretty=format:"- %s" "${before[${folder}]}".."${commit}")
if [[ $(echo -n "$log" | wc -c) != 0 ]]; then
{
echo "## ${folder} ${before[${folder}]}..${commit}"
echo "$log"
echo
} >>"${changelog}"
fi
cd "${TOPDIR}" || continue
fi
done
echo -e "\n" >>"${changelog}"
cat "${changelog}"
cd packages/apps/LineageParts
git am $CI_WORKSPACE/fix-always-enable-taskbar-toggle.patch || git am --abort
cd $TOPDIR
cd packages/apps/Trebuchet
git am $CI_WORKSPACE/fix-enable-more-grids-for-tablet.patch || git am --abort
git am $CI_WORKSPACE/fix-trebuchet-taskbar.patch || git am --abort
@ -20,6 +48,9 @@ cd $TOPDIR
#bluetooth
cd packages/modules/Bluetooth
git am $CI_WORKSPACE/fix-bt-1.patch || git am --abort
git am $CI_WORKSPACE/fix-bt-2.patch || git am --abort
git am $CI_WORKSPACE/fix-bt-3.patch || git am --abort
git am $CI_WORKSPACE/fix-bt-le.patch || git am --abort
cd $TOPDIR
@ -42,11 +73,7 @@ cd frameworks/base
#334343 334344
git am $CI_WORKSPACE/snet20-2.patch || git am --abort
git am $CI_WORKSPACE/snet20-3.patch || git am --abort
git am $CI_WORKSPACE/microg.patch || git am --abort
cd $TOPDIR
cd hardware/qcom-caf/wlan
git reset --hard e0f934b
cd $TOPDIR
#. build/envsetup.sh
#repopick