355 Commits

Author SHA1 Message Date
Joey
c694a8dbd8 config: Update PIF to latest caiman_beta
Signed-off-by: MOVZX <movzx@yahoo.com>
2025-12-19 00:15:56 +07:00
f44c1bd73b Merge remote-tracking branch 'evo/bka' into evolution
Signed-off-by: MOVZX <movzx@yahoo.com>
2025-12-11 07:22:49 +07:00
TechPanelGM
3d167a7651 version: Uprev to 11.4.2 2025-12-10 00:00:44 +09:00
Joey
e8c25c957a component-overrides: Add more google components 2025-12-10 00:00:26 +09:00
Pranav Vashi
ce72147292 component-overrides: Force disable various google components
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-12-10 00:00:26 +09:00
minaripenguin
6a9e8f166c config: properties: Add pihooks default values
* A16 QPR2 Beta 3.3

Spoof BuildFingerprint as Pixel Beta

* It is necessary to pass integrity with the built-in Keybox Importer, as our stock fingerprint is not "Valid"

Co-authored-by: Joel Lucas <joelcba57@gmail.com>
Co-authored-by: Joey <joey@evolution-x.org>
Signed-off-by: minaripenguin <minaripenguin@users.noreply.github.com>
2025-12-10 00:00:26 +09:00
Pranav Vashi
d0d2a2baf0 overlay: Use google sans flex for lockscreen clock
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-12-10 00:00:26 +09:00
Joey
e12323db58 Update default wallpaper from Pixel 10 Pro XL 2025-12-10 00:00:25 +09:00
aswin7469
0126eefc8c device_config: enable new now playing QS tile and updated lockscreen UI
preview: https://t.me/aswinaskurup/729

Signed-off-by: aswin7469 <aswinas@pixysos.com>
2025-12-10 00:00:25 +09:00
aswin7469
40996b0ec2 device_config: cleanup and update from 16 QPR2
* set only whatever we need gms will handle rest

Signed-off-by: aswin7469 <aswinas@pixysos.com>
2025-12-10 00:00:25 +09:00
minaripenguin
3e012054c5 config: Dexpreopt pixel launcher 2025-12-10 00:00:25 +09:00
Ghosuto
cdc40b49d3 release: Wifi multiuser flag
Change-Id: I72205b7762d6052ed0c22a6e44ceb68545a14831
Signed-off-by: Ghosuto <clash.raja10@gmail.com>
2025-12-10 00:00:25 +09:00
Joey
fe8680cc88 version: Uprev to 11.4.1
* After adding pixel-fw
2025-12-10 00:00:25 +09:00
rmp22
f938500551 config: add target_ims_override flag
Change-Id: Ib386515e21c6cabeb8c3bacd5b82f63e7796ef94
2025-12-10 00:00:25 +09:00
Dhina17
4222bb2257 config: Build LMO systemui clock plugin
Change-Id: If4f6431bdbab5c9f4f75b8116d445a0f83c39ee9
2025-12-10 00:00:25 +09:00
Joey
dd49bf5586 config: Don't build OmniJaws 2025-12-10 00:00:25 +09:00
Joey
870a8fe790 version: Uprev to 11.4
* November 2025 patches
2025-12-10 00:00:25 +09:00
rmp22
ec97cd9901 config: disabling hwc composition strategy on perf anim targets
perfetto shows a lot of wasted time done on hwc composition strategy on mtk targets

Change-Id: I88c810c954ae689f5ecd5c8f03e5130c356ae631
Signed-off-by: rmp22 <195054967+rmp22@users.noreply.github.com>
2025-12-10 00:00:25 +09:00
rmp22
5f1c729e35 config/common: preopt extracted apk always 2025-12-10 00:00:25 +09:00
Mathieu Chartier
2c683a6e84 config/common: Reduce system server verbosity
Enable it only with user builds

Test: lunch statix_cannon-user && m
Change-Id: I58d2e993ae9a7213e94661d22b47c28b0a2243e8
Signed-off-by: Vaisakh Murali <mvaisakh@statixos.com>
Reviewed-on: https://review.statixos.com/c/android_vendor_statix/+/13531
2025-12-10 00:00:25 +09:00
Mathieu Chartier
248f49d60e config/common: Disable dexpreopt debug info on user builds
Test: lunch statix_cannon-user && m
Change-Id: I9e4b4c9907b92fea764cf07e218541bb33937b3c
Signed-off-by: Vaisakh Murali <mvaisakh@statixos.com>
Reviewed-on: https://review.statixos.com/c/android_vendor_statix/+/13530
2025-12-10 00:00:25 +09:00
minaripenguin
270324c575 config: Load boot image profile from frameworks/base
[YAAP:] art boot image profile is only intended for thin art builds
without frameworks/base.

Change-Id: I60f3117c6ba948311af9f3fe048d0cf304fc283a
2025-12-10 00:00:25 +09:00
Pranav Vashi
c138d69750 vendor: Do not clone default AudioFX app
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-12-10 00:00:25 +09:00
rmp22
76beb102b0 config: adding flashlight strength flag
Change-Id: I69f051676d6e3048307c48aead46a1b04d7b872d
2025-12-10 00:00:25 +09:00
Ghosuto
0a74a5c8c2 release: Enable move_transition_animation_layer
- Enables moving the launching window on top of the origin window in the Animation library

Change-Id: I9b383064253cd44026932182161bfc96b36daeaf
Signed-off-by: Ghosuto <clash.raja10@gmail.com>
2025-12-10 00:00:25 +09:00
minaripenguin
b56bbff5d2 aconfig: Disable FRP enforcement
Change-Id: I77f990d2187b4afa3d106a79361a8dc340d09065
2025-12-10 00:00:25 +09:00
rmp22
b9b6331318 overlay: disable dreams feature
Change-Id: Iac6460e742aa11e175008db4b891d1b4768d5aec
2025-12-10 00:00:25 +09:00
Pranav Vashi
85e046ccf0 Revert "overlay: Default to Seedvault backup transport"
* If we never set up SeedVault, we get error notification every boot.

This reverts commit a88d06f120.
2025-12-10 00:00:25 +09:00
Pranav Vashi
fd122ea34b overlay: Drop now playing customization
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-12-10 00:00:25 +09:00
rmp22
6bcaa7d896 vendor: overlay: enable ambient burn in protection
Change-Id: I479491bae09e089aba646ade34d7bff5d460e12f
2025-12-10 00:00:25 +09:00
Oliver Scott
910c084b85 Disable nfc by default
Issue: calyxos#3038
Change-Id: Ifd8a9e4826b0c48c58d923086cf0aaea3e945722
2025-12-10 00:00:25 +09:00
minaripenguin
7914ff3197 overlay: frameworks: Suppress ASI system crash dialogs
* this issue started from u beta and some users on t also reported ASI crash upon reboot or so.  this is probably google side since the crash happens when ASI tries to update its text classifier flags but ended up triggering bad base-64 due to a bad/malformed string.

Change-Id: Id33679c48585ced550ba005ef99f19694bb27bf4
Signed-off-by: minaripenguin <minaripenguin@users.noreply.github.com>
2025-12-10 00:00:25 +09:00
Henrique Silva
e337645258 overlay: Don't warn user about FC in Google TTS
This happens on almost all FDE devices, I don't see any workaround other than hiding these dialogs
2025-12-10 00:00:25 +09:00
Danny Lin
de58de3d30 overlay: core: Suppress System UI ANRs
It looks like Android 12 qpr1 still has the bug where "System UI not
responding" dialogs appear sporadically after taking a screenshot. Just
suppress the ANRs for now.
2025-12-10 00:00:25 +09:00
Danny Lin
5aad200cc4 HACK: overlay: core: Suppress Intent Filter Verification Service crashes
Intent Filter Verification Service, the AOSP service that verifies
app link domains, is crashing for some users depending on their
installed apps. Temporarily suppress the crashes until we have a better
solution.
2025-12-10 00:00:25 +09:00
Joey Huab
2c0851ca60 config: Set new audio from mustang BD3A.250721.001.B7 as default 2025-12-10 00:00:25 +09:00
rmp22
bad2ec70f5 config: add PERF_ANIM_OVERRIDE flag
Change-Id: I7d264207abef968739b57c9fce19e8f65466ee8c
2025-12-10 00:00:25 +09:00
Adithya R
cc35f6908d overlay: SystemUI: Tune new biometric dialog UI
Change-Id: Idcc5995f657b61647facd8d147a346e4898d677a
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-12-10 00:00:25 +09:00
Saikrishna1504
bd8bc701f7 build: Skip ABI Checks
Signed-off-by: Saikrishna1504 <saikrishna26918@gmail.com>
2025-12-10 00:00:25 +09:00
rmp22
b519a08ecb overlay: Enable split shade for notifications in landscape
default landscape is so ugly

Change-Id: Ida1fdc8199070ede063c394942cabdff1d7f4fb8
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-12-10 00:00:25 +09:00
Abhay Singh Gill
a21bd138fe release: Disable apply_picture_profiles
We do not have a media quality service set up yet.

Change-Id: If32e802eddac7464d98685f15aa86eb8f8228b6a
Signed-off-by: Abhay Singh Gill <abhaygill017@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-12-10 00:00:25 +09:00
Abhay Singh Gill
c248a7367b release: Generate themed/monochrome icons for all apps
Signed-off-by: Abhay Singh Gill <abhaygill017@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-12-10 00:00:25 +09:00
Abhay Singh Gill
71e8e6040f release: Remove glanceable hub
Broken atm.

Signed-off-by: Abhay Singh Gill <abhaygill017@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-12-10 00:00:25 +09:00
Abhay Singh Gill
84dcb920a4 release: Remove some useless notification flags
Signed-off-by: Abhay Singh Gill <abhaygill017@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-12-10 00:00:25 +09:00
Pranav Vashi
e4a3b510ff release: Remove flag for using emphasized font family for shade header
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-12-10 00:00:25 +09:00
Pranav Vashi
aedbe2bce1 release: Remove glitchy depth push scaling effect
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-12-10 00:00:25 +09:00
Abhay Singh Gill
7bb4fb59d1 release: Disable lpp squeeze effect
Causes crash on power button hold when using assistant.

Signed-off-by: Abhay Singh Gill <abhaygill017@gmail.com>
2025-12-10 00:00:25 +09:00
Sourajit Karmakar
66383a987e overlay: Make Google Sans the default headline font
Change-Id: I60fd95e4fa73335a01f187f74b7ded6bb16067ce
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-12-10 00:00:25 +09:00
Abhay Singh Gill
52769f46ab release: Disable codec_availability flags
Signed-off-by: Abhay Singh Gill <abhaygill017@gmail.com>
2025-12-10 00:00:25 +09:00
Joey Huab
04432fb9e8 vendor: Drop notification themed icons
* Users cannot distinguish each app from one another, apparently.
2025-12-10 00:00:25 +09:00
Dmitrii
2defcd3e0c vendor: drop more launcher flags
expressive dimiss is bugged, and launcher icon shapes is unused
Signed-off-by: Dmitrii <bankersenator@gmail.com>
2025-12-10 00:00:25 +09:00
Dmitrii
3208af661e vendor: drop more flags
Signed-off-by: Dmitrii <bankersenator@gmail.com>
2025-12-10 00:00:25 +09:00
Pranav Vashi
3f80b26ba2 build: Ship adb_root only WITH_SU
* TBH - hardly any user uses adb root.
* adb root poses root detection risks.
* Most devices are user or userbuild type.

Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-12-10 00:00:25 +09:00
ahnet-69
5e5a0ed197 vendor: Disable thumbnail_block_model flag
Change-Id: Iebd8a44c2591031c02096402bcec8a513c1da1ac
Signed-off-by: Frost <frost.github@proton.me>
2025-12-10 00:00:25 +09:00
Vaisakh Murali
c34cae45cb release: Enable android.app flags
Change-Id: I9f3e4416ead6f65d138002775a29ad7b5498a651
Signed-off-by: Dmitrii <bankersenator@gmail.com>
2025-12-10 00:00:25 +09:00
Dmitrii
ace6d7a918 release: more flag changes
Signed-off-by: Dmitrii <bankersenator@gmail.com>
2025-12-10 00:00:25 +09:00
Dmitrii
a8de57c739 release: enable more flags
Signed-off-by: Dmitrii <bankersenator@gmail.com>
2025-12-10 00:00:25 +09:00
Dmitrii
fa18d9f681 release: drop low_light_clock_dream
06-24 16:53:23.418  2021  2021 E AndroidRuntime: java.lang.RuntimeException: Unable to create service com.google.android.systemui.lowlightclock.LowLightClockDreamService: java.lang.RuntimeException: Couldn't call constructor
06-24 16:53:23.418  2021  2021 E AndroidRuntime: 	at android.app.ActivityThread.handleCreateService(ActivityThread.java:5317)
06-24 16:53:23.418  2021  2021 E AndroidRuntime: 	at android.app.ActivityThread.-$$Nest$mhandleCreateService(Unknown Source:0)
06-24 16:53:23.418  2021  2021 E AndroidRuntime: 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2606)
06-24 16:53:23.418  2021  2021 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:110)
06-24 16:53:23.418  2021  2021 E AndroidRuntime: 	at android.os.Looper.loopOnce(Looper.java:248)
06-24 16:53:23.418  2021  2021 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:338)
06-24 16:53:23.418  2021  2021 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:9102)
06-24 16:53:23.418  2021  2021 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
06-24 16:53:23.418  2021  2021 E AndroidRuntime: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:598)
06-24 16:53:23.418  2021  2021 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:932)
06-24 16:53:23.418  2021  2021 E AndroidRuntime: Caused by: java.lang.RuntimeException: Couldn't call constructor
06-24 16:53:23.418  2021  2021 E AndroidRuntime: 	at com.android.systemui.SystemUIAppComponentFactoryBase.instantiateService(go/retraceme 4d9244815cb2a8db26361f6e20f13b475cc86e8d80733cfefb09c7ddee4d5759:66)
06-24 16:53:23.418  2021  2021 E AndroidRuntime: 	at android.app.ActivityThread.handleCreateService(ActivityThread.java:5274)
06-24 16:53:23.418  2021  2021 E AndroidRuntime: 	... 9 more
06-24 16:53:23.418  2021  2021 E AndroidRuntime: Caused by: java.lang.NoSuchMethodException: com.google.android.systemui.lowlightclock.LowLightClockDreamService.<init> []

Signed-off-by: Dmitrii <bankersenator@gmail.com>
2025-12-10 00:00:25 +09:00
Dmitrii
720b64b6fe release: drop some flags
Signed-off-by: Dmitrii <bankersenator@gmail.com>
2025-12-10 00:00:25 +09:00
Dmitrii
82bca4346f release: drop new sb icons
buggy and dont work well with customizations atm
Signed-off-by: Dmitrii <bankersenator@gmail.com>
2025-12-10 00:00:25 +09:00
ralph950412
2d1abcb339 release: Enable WallpaperPicker2 flags
Change-Id: I7f389e8bdb6e9998681cf7abb561d5aaf6b8d909
2025-12-10 00:00:25 +09:00
ralph950412
51e5ca18f9 release: Enable SystemUI flags (com.android.systemui.shared)
Change-Id: I7a4b4fa22e3f3c6f5b2eceea9e3fde573a937e9c
2025-12-10 00:00:25 +09:00
ralph950412
4f66c6ca39 release: Enable SystemUI flags
Change-Id: Id7b6b7ec61363c9a90a4354ec78215c7ce697652
2025-12-10 00:00:25 +09:00
ralph950412
5f04e45f34 release: Enable SettingsLib flags
Change-Id: Ide729f28d84e05063b961c504e52dc2249febe98
2025-12-10 00:00:25 +09:00
ralph950412
8f4aff7f10 release: Enable Settings flags
Change-Id: I4aacdc60d799a139941783dc69fd03cb591ec84a
2025-12-10 00:00:25 +09:00
ralph950412
c86148e1f1 release: Enable Launcher3 flags
Change-Id: I06cb64470805c579619fe2512ae79d60a746d65c
2025-12-10 00:00:25 +09:00
techyminati
aca33c3349 config: Enable Material Design 3 Expressive
Change-Id: Ib6d3ac2e0f3d76768c508e1b00efc51e141c1b09
Signed-off-by: techyminati <sinha.aryan03@gmail.com>
2025-12-10 00:00:25 +09:00
rmp22
9775ee20ab config: Add bypass charging prop
Change-Id: Iee2e99e9ec929221336fea361ab516b00f47bb7e
2025-12-10 00:00:25 +09:00
rmp22
7004acff27 overlay: add applock whitelist
Change-Id: I491f05eb300285adf453d35954c35080ec1207cf
Signed-off-by: rmp22 <195054967+rmp22@users.noreply.github.com>
2025-12-10 00:00:25 +09:00
rmp22
4d0ee65e6a common: Disable art debug builds
Change-Id: I44e16c12c70e30dea8e85a9751cc94e4ff329898
Signed-off-by: rmp22 <195054967+rmp22@users.noreply.github.com>
2025-12-10 00:00:25 +09:00
rmp22
eecb421245 config: add blur support
Change-Id: I5fabdbbdfe812346f17dbba5d4bf9abe7344e0ca
2025-12-10 00:00:25 +09:00
Dyneteve
dd21781b9b overlay: Allow ShannonIMS to access ServiceState
Change-Id: Ic43f212f81e6a53daf6879a7110effafbc000ec4
Signed-off-by: Dyneteve <dyneteve@hentaios.com>
2025-12-10 00:00:25 +09:00
rmp22
fe4664e23e overlay: Update circle to search overlays for vanilla builds
Change-Id: Id72c2e81494f793d773cfc5de24cb15eeaaaf5e9
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-12-10 00:00:25 +09:00
Ido Ben-Hur
7e9ad70d27 overlay: Enable circle to search 2025-12-10 00:00:25 +09:00
rmp22
06f77082c1 Enable ThinLTO cache
Change-Id: I8438591a418fc4f9ce3ceead84cda9b6870758ff
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: rmp22 <195054967+rmp22@users.noreply.github.com>
2025-12-10 00:00:25 +09:00
rmp22
f575611d9a build: Override host metadata
reference taken from
https://grapheneos.social/@GrapheneOS/113870255397154703

instead of fixed host number, use a random generated host number that follows google's host number format to bypass revolut's host checks

Change-Id: I72feafd663a551eb0c6c4146d52137ed0dc7456d
Co-authored-by: Terminator-J <terminator_j@hotbutteredmonkey.com>
Signed-off-by: rmp22 <195054967+rmp22@users.noreply.github.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-12-10 00:00:25 +09:00
Terminator-J
827e376212 kernel: Set "safe" default values for kernel build host & user
Take all the fun out of the game and set sanitized values by default.
2025-12-10 00:00:25 +09:00
Dyneteve
055d583b2b overlay: Enable keyboard vibration
Change-Id: Ibb162e8ce74ce566f326b8d21951a3eaec0113d8
Signed-off-by: Dyneteve <dyneteve@hentaios.com>
2025-12-10 00:00:25 +09:00
Dyneteve
7079bd0d26 overlay: SystemUI: Add plugin whitelist
Change-Id: I38e6a5c5eb9ceaee13e0cd8ab1c3d858d72aa19c
Signed-off-by: Dyneteve <dyneteve@hentaios.com>
2025-12-10 00:00:25 +09:00
John Galt
7aff929a68 DeviceConfig: drop smartspace flashlight action chip (again)
Accidentally made it back recently
2025-12-10 00:00:25 +09:00
John Galt
0a8d901a2e DeviceConfig: update nearby flags
Fixes gms find my device drain on some devices such as waffle, found
on new pixel configs
2025-12-10 00:00:25 +09:00
Pranav Vashi
1239c2fe8c config: Conditionally build ColumbusService
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-12-10 00:00:25 +09:00
rmp22
16a49934ef Add option to ship viperfx
Change-Id: I35cea2206d098a53e03c54f462b59db991c891bb
Signed-off-by: rmp22 <195054967+rmp22@users.noreply.github.com>
2025-12-10 00:00:25 +09:00
Asriadi Rahim
b69c1b3a9d vendor: Make BCR optional 2025-12-10 00:00:25 +09:00
tejas101k
93f4346d72 config: Build Updater for all
* Local update could still be helpful
2025-12-10 00:00:25 +09:00
Danny Lin
7da4a6fe33 config: Disable RescueParty
RescueParty's aggressive approach to error recovery almost never helps
with the problems we're likely to face, and its risk of data loss is far
too high. Force-disable it entirely and remove all other conditions,
especially those that depend on data integrity in the first place, to
reduce the risk of RescueParty triggering falsely and causing data loss.

Note that it is still possible to force-enable RescueParty for testing
purposes using the persist.sys.enable_rescue property.
2025-12-10 00:00:25 +09:00
Adithya R
46670d30c5 config: Build LMO Freeform app and sidebar
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: GXC 2356 <gxcdev2356@gmail.com>
2025-12-10 00:00:25 +09:00
Pranav Vashi
02a1bbb9b2 config: Build OmniJaws service
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-12-10 00:00:25 +09:00
Pranav Vashi
b8edd4d97c config: Build OmniStyle
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-12-10 00:00:25 +09:00
someone5678
4a6375bdf0 config: Build BtHelper 2025-12-10 00:00:25 +09:00
Pranav Vashi
395fbdb085 config: Build GameSpace
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-12-10 00:00:25 +09:00
minaripenguin
5d9936187d config: Build tensorflow lite jni
Signed-off-by: clarencelol <clarencekuiek@proton.me>
2025-12-10 00:00:25 +09:00
HeCheng Yu
718e836637 config: Disable default frame rate limit for games
Android 15 limits refresh rate to 60hz for games unless we enable the developer option 'Disable default frame rate for games' manually.
Adding this prop enables it by default.
2025-12-10 00:00:24 +09:00
minaripenguin
181e9e7d40 vendor: Introduce bootanimation styles [2/3]
vendor: Add more bootanimation styles [2/3]

vendor: Add ctOS bootanimation [2/3]

by benmeroff - https://xdaforums.com/t/boot-animation-ctos-boot-animation.2843830/

vendor: Add Evolution X Reveal boot animation [2/3]

vendor: Add more classic boot animation styles [2/3]

* Remove anniv bootanimation as it takes a lot of space.

Co-authored-by: 0xsharkboy <achille@0xsharkboy.dev>
Co-authored-by: AnierinB <anierin@evolution-x.org>
Signed-off-by: minaripenguin <minaripenguin@users.noreply.github.com>
Signed-off-by: 0xsharkboy <achille@0xsharkboy.dev>
Signed-off-by: AnierinB <anierin@evolution-x.org>
2025-12-10 00:00:24 +09:00
Andrzej Perczak
4bd9a756f8 common: Optimize Launcher3 and Settings for speed
Signed-off-by: Andrzej Perczak <linux@andrzejperczak.com>
2025-12-10 00:00:23 +09:00
someone5678
e619be3bd7 config: props: Set default wifi country code
* To 00
* Make it overridable

Change-Id: I2025fc927363baf547b36ecd6ebe9c7fbc4d7611
2025-12-10 00:00:23 +09:00
Le Hong Duc
b6fa508501 config: Don't dexpreopt prebuilt apps
Pre-optimizing prebuilt Gapps is not needed because they are mostly
updated via Play Store and device will optimize them on install.

Save some space on /product partition and reduce build time.

Signed-off-by: Le Hong Duc <hongducthbk123@gmail.com>
2025-12-10 00:00:23 +09:00
Pranav Vashi
227ba9a4c9 common: Inherit pixel-fw when available
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-12-10 00:00:23 +09:00
minaripenguin
0acce350a6 config: Disable memtag for different processes
* it defaults to async if not specified

Signed-off-by: minaripenguin <minaripenguin@users.noreply.github.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-12-10 00:00:23 +09:00
ShevT
598eb3083b config: Adding an option to build DeviceAsWebcam 2025-12-10 00:00:23 +09:00
Pranav Vashi
39157a51aa overlay: Set AOSP webview as fallback
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-12-10 00:00:23 +09:00
DarkJoker360
3cdf1dda7f Drop custom adb drawable
Signed-off-by: DarkJoker360 <simoespo159@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-12-10 00:00:23 +09:00
Jyotiraditya Panda
ba61c1ebbf overlay: Update default keyguard affordance setup
- Left affordance: flashlight
 - Right affordance: camera

Change-Id: I3295007e351d6e17b6efb13cacd9665475f4f34a
Signed-off-by: Jyotiraditya Panda <jyotiraditya@aospa.co>
2025-12-10 00:00:23 +09:00
Adithya R
66788309c6 overlay: Remove bouncer delay when face unlock is enabled
No idea why was this annoying thing made a "feature" in the first place.

Suggested-by: Omkar Chandorkar <gotenksIN@aospa.co>
Change-Id: Iefd47099c48586dd97644e90fadf93707617a74e
(cherry picked from commit ec3160865ccb36fb8c02a5f447f670b3176c0601)
Signed-off-by: clarencelol <clarencekuiek@proton.me>
2025-12-10 00:00:23 +09:00
someone5678
6c77a4511e overlay: device_config: Updates
From gms device config:
- textclassifier: set manifests + needed options
- window manager: set splash screen exemption list

Co-authored-by: John Galt <johngaltfirstrun@gmail.com>
Co-authored-by: Joey Huab <joey@evolution-x.org>
2025-12-10 00:00:23 +09:00
cyberknight777
c2aed9c4d0 overlay: device_config: Add values required for Speech Recognition
Dumped from whatever gms sets as a configurator
2025-12-10 00:00:23 +09:00
Ido Ben-Hur
7ce04ab78f overlay: device_config: Escape special characters 2025-12-10 00:00:23 +09:00
aswin7469
67ee633278 overlay: device_config: animate navbar on long press
Signed-off-by: aswin7469 <aswinas@pixysos.com>
2025-12-10 00:00:23 +09:00
Ionut Gherman
3952d23f92 overlay: update configs for AiAi
* taken from LineageOS/android_device_google_zumapro@9d1b0cf
Signed-off-by: Ionut Gherman <ghermanionut96@gmail.com>
2025-12-10 00:00:23 +09:00
Pranav Vashi
f06d205d9c overlay: Use google-sans for font config overlays
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-12-10 00:00:23 +09:00
Pranav Vashi
e989dde1ed overlay: Add gms location history to extra location packages
* From pixel dump. Suggested by @nikhilmenghani.
* Nikgapps will remove this overlay as it conflicts here.

Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-12-10 00:00:23 +09:00
Pranav Vashi
447570d484 overlay: Add tethering to location exemption
Ref: 404b4778ec

Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-12-10 00:00:23 +09:00
Pranav Vashi
7686d980cb overlay: Add SystemUI to location extra packages
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-12-10 00:00:23 +09:00
Pranav Vashi
5787d9f321 overlay: Add OmniJaws to location extra packages
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-12-10 00:00:23 +09:00
Danny Lin
cd42a3078b overlay: Offload WM shell to another thread
Android 12 added this config to offload some window management to a
dedicated thread. Enable it to improve performance when the main System
UI thread is busy.

Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-12-10 00:00:23 +09:00
Pranav Vashi
90a36910bc overlay: Update SettingsProvider defaults
* Reduce default screen off timeout to 30 sec.
* Turn on automation brightness mode by default.
* Turn on vibrate when ringing by default.

Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-12-10 00:00:23 +09:00
Pranav Vashi
cbcffbf473 common: Allow OTA downgrade regardless build type
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-12-10 00:00:23 +09:00
Dhina17
c3ac1d235e soong: Add libcameraservice extension config
Change-Id: Id20f782c1008fed1f15250129618326091f61bf8
2025-12-10 00:00:23 +09:00
Adithya R
faa7d20e7b soong: Add support for miui camera mode [2/2]
Change-Id: I0c912a1c7056bb204a24bd5f0a08308cae71f3f3
2025-12-10 00:00:23 +09:00
AnierinB
ce53198051 soong: Conditionally spoof ro.product.first_api_level to 32 [1/2]
Devices that shipped on API 33 or higher need to set
ro.product.first_api_level to 32 in order to pass integrity.

Set SPOOF_FIRST_API_LEVEL_32 := true in BoardConfig*.mk to enable.

Signed-off-by: AnierinB <anierin@evolution-x.org>
2025-12-10 00:00:23 +09:00
Jake Weinstein
c590a805b1 soong: Add support to set vendor tag with client package name
* OEMs like OnePlus and Nothing detect camera package name to unlock features like 48mp.
* Use TARGET_CAMERA_PACKAGE_NAME to specify the package name.

Signed-off-by: AnierinB <anierin@evolution-x.org>
2025-12-10 00:00:23 +09:00
ponces
58694be85f evolution: Switch to AOSPA's face unlock implementation
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: AnierinB <anierin@evolution-x.org>
2025-12-10 00:00:23 +09:00
Dyneteve
a27e1e1522 overlay: Update device configs global overrides
Co-authored-by: Joey <joey@evolution-x.org>
Co-authored-by: AnierinB <anierin@evolution-x.org>
Co-authored-by: aswin7469 <aswinas@pixysos.com>
Co-authored-by: someone5678 <someone5678@users.noreply.github.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: AnierinB <anierin@evolution-x.org>
2025-12-10 00:00:23 +09:00
Dyneteve
52f2f6a6d4 overlay: Allow new SystemUI clocks
Co-authored-by: Pranav Vashi <neobuddy89@gmail.com>
Change-Id: I51ab1eb06b1e77bd8048d5064f811e8e69884b24
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: AnierinB <anierin@evolution-x.org>
2025-12-10 00:00:23 +09:00
Danny Lin
168a7257bc overlay: Settings: Show memory usage in app info
The system tracks memory usage for each app, so we might as well show it
to the user so that users can track down which apps are hogging their
memory. This shouldn't be a developer-only feature that was previously
only exposed in Developer Options.

Change-Id: Ib900438f856369286b7621208020c5c8da73765f
Signed-off-by: AnierinB <anierin@evolution-x.org>
2025-12-10 00:00:23 +09:00
aswin7469
564d2194f7 evolution: Enable Cloned App
Co-authored-by: Pranav Vashi <neobuddy89@gmail.com>
Co-authored-by: John Galt <johngaltfirstrun@gmail.com>
Co-authored-by: minaripenguin <minaripenguin@users.noreply.github.com>

Signed-off-by: AnierinB <anierin@evolution-x.org>
2025-12-10 00:00:23 +09:00
Pranav Vashi
a27d521172 overlay: Use google-sans for remaining font configs
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: AnierinB <anierin@evolution-x.org>
2025-12-10 00:00:23 +09:00
AnierinB
6eae7c78e3 evolution: Configure support for Evolution X Vanilla
Signed-off-by: AnierinB <anierin@evolution-x.org>
2025-12-10 00:00:23 +09:00
Dyneteve
e6070f27e8 evolution: Inherit Pixel additions via WITH_GMS
* GMS
* Audio
* Charger
* RRO overlays

Co-authored-by: Joey <joey@evolution-x.org>
Co-authored-by: AnierinB <anierin@evolution-x.org>
Co-authored-by: someone5678 <nemui3353@gmail.com>
Signed-off-by: AnierinB <anierin@evolution-x.org>
2025-12-10 00:00:22 +09:00
AnierinB
66084de289 lineage: Initial Evolution X rebrand
Co-authored-by: Joey Huab <joey@evolution-x.org>
Co-authored-by: Pranav Vashi <neobuddy89@gmail.com>
Co-authored-by: Lup Gabriel <gwolf2u.website@gmail.com>
Co-authored-by: Hemant Sachdeva <hemant.evolver@gmail.com>
Signed-off-by: AnierinB <anierin@evolution-x.org>
2025-12-09 23:59:33 +09:00
Joey Huab
5ee062d790 Revert "config: Use add_soong_config_namespace/add_soong_config_var macros"
This reverts commit c2dd68f84a.
2025-12-09 23:59:33 +09:00
Joey Huab
5938954e81 Revert "Revert "Add product_launched_with_j{,_mr1,mr2}.mk""
This reverts commit e1e121bea4.
2025-12-09 23:59:33 +09:00
Joey Huab
7edb656bf3 Revert "bootanimation: Convert to Android.bp"
This reverts commit 3b29ed3826.
2025-12-09 23:59:33 +09:00
Joey Huab
3cebf44d8f Revert "charger: Convert to Android.bp"
This reverts commit b3e6f3ad7e.
2025-12-09 23:59:22 +09:00
Michael Bestas
418ab429bc Disable yet another gms update component
Change-Id: If8104a9e75a6fdd46a7fb4da164c81fbdd5f748b
2025-12-07 19:07:10 +00:00
76b4b8c38e Add my custom boot animation
Signed-off-by: MOVZX <movzx@yahoo.com>
2025-12-05 18:19:58 +07:00
Michael Bestas
2128bc72f1 release: Bump Security String to 2025-12-01
Implemented:
============
CVE:            References:    Type:  Severity:  Updated AOSP versions:
CVE-2025-32319  A-291281543    EoP    High       16
CVE-2025-48572  A-385736540    EoP    High       13, 14, 15, 16
CVE-2025-48573  A-339637822    EoP    High       13, 14, 15, 16
CVE-2025-48575  A-417463103    EoP    High       13, 14, 15, 16
CVE-2025-48576  A-426205822    DoS    High       13, 14, 15, 16
CVE-2025-48580  A-393582077    EoP    High       13, 14, 15, 16
CVE-2025-48583  A-381885240    EoP    High       14, 15, 16
CVE-2025-48584  A-425662627    DoS    High       16
CVE-2025-48586  A-337784859    EoP    High       15, 16
CVE-2025-48589  A-362492829    EoP    High       13, 14, 15, 16
CVE-2025-48590  A-417987184    DoS    High       13, 14, 15, 16
CVE-2025-48592  A-427113482    ID     High       15, 16
CVE-2025-48594  A-427206637    EoP    High       14, 15, 16
CVE-2025-48596  A-438098181    EoP    High       13, 14, 15, 16
CVE-2025-48597  A-436270922    EoP    High       14, 15, 16
CVE-2025-48598  A-418774489    EoP    High       16
CVE-2025-48600  A-435188844    ID     High       15, 16
CVE-2025-48601  A-426207912    EoP    High       13, 14, 15, 16
CVE-2025-48603  A-416259832    DoS    High       13, 14, 15, 16
CVE-2025-48604  A-305710989    ID     High       13, 14, 15, 16
CVE-2025-48607  A-416490321    DoS    High       15, 16
CVE-2025-48612  A-429417453    EoP    High       13, 14, 15, 16
CVE-2025-48614  A-430568718    DoS    High       13, 14, 15, 16
CVE-2025-48615  A-433250316    EoP    High       13, 14, 15, 16
CVE-2025-48617  A-441823943    EoP    High       13, 14, 15, 16
CVE-2025-48618  A-404254549    EoP    High       13, 14, 15, 16
CVE-2025-48620  A-352024705    EoP    High       13, 14, 15, 16
CVE-2025-48621  A-266433089    EoP    High       13, 14, 15, 16
CVE-2025-48622  A-412662901    ID     High       13, 14, 15, 16
CVE-2025-48626  A-381339822    EoP    High       13, 14, 15, 16
CVE-2025-48628  A-376462130    ID     High       13, 14, 15, 16
CVE-2025-48629  A-352518318    EoP    High       13, 14, 15, 16
CVE-2025-48631  A-444671303    DoS    Critical   13, 14, 15, 16
CVE-2025-48632  A-443742829    EoP    High       14, 15, 16
CVE-2025-48633  A-417988098    ID     High       13, 14, 15, 16
CVE-2025-48639  A-301952571    EoP    High       13, 14, 15, 16

Previously Implemented:
================
CVE:            References:    Type:  Severity:  Updated AOSP versions:
CVE-2023-40130  A-289809991    EoP    High       13, 14, 15, 16
CVE-2025-22420  A-337775777    EoP    High       13, 14, 15, 16
CVE-2025-22432  A-376461726    EoP    High       13, 14, 15, 16
CVE-2025-48525  A-391895151    EoP    High       13, 14, 15, 16
CVE-2025-48536  A-388034510    EoP    High       13, 14, 15, 16
CVE-2025-48555  A-396666065    ID     High       13, 14, 15, 16
CVE-2025-48564  A-403565650    EoP    High       13, 14, 15, 16
CVE-2025-48565  A-407763772    EoP    High       13, 14, 15, 16
CVE-2025-48566  A-397216638    EoP    High       13, 14, 15, 16

Not Implemented:
================
None

Not Applicable (platform source):
=================================
CVE:            References:    Type:  Severity:  Updated AOSP versions:
CVE-2025-32328  A-327137311    EoP    High       13, 14, 15
CVE-2025-32329  A-326926596    EoP    High       13, 14, 15
CVE-2025-48588  A-303408193    EoP    High       13, 14, 15
CVE-2025-48591  A-305710469    ID     High       13, 14, 15
CVE-2025-48599  A-299633613    EoP    High       13, 14
CVE-2025-48627  A-326571066    EoP    High       13, 14

Change-Id: I6dac6f7431f5ac075be2e1be03d7ddc0c6b0908d
2025-12-04 20:14:51 +02:00
d3e7a8141d Add my signature
Signed-off-by: MOVZX <movzx@yahoo.com>
2025-12-04 18:20:03 +07:00
Thomas Makin
bec0fb162f kernel: Prevent creating any files in kernel platform source tree
Original command redirected output to the android build out. However, a
handful of configs were still generated in the source tree. Set the
bazel flag output_root to redirect these configs to the android build
out as well.

Change-Id: I5181270b773a49d74eab00b89eaaf1187471a144
2025-12-03 07:01:35 +00:00
TechPanelGM
81c768ce9a version: Uprev to 11.4.2 2025-12-02 21:52:27 +08:00
TechPanelGM
01e7c8761b release: Bump Security String to 2025-12-01 2025-12-02 21:52:27 +08:00
Nick Reuter
60444c0dcd lineage: Move device_framework_matrix.xml to hardware/lineage/interfaces
Follows AOSP structure that exists in hardware/interfaces.

Change-Id: I3ebbd53d4e9920e8a56afd78e18022b06a7b3826
2025-11-28 23:00:41 +00:00
Joey
fb79d1435d component-overrides: Add more google components 2025-11-23 23:35:12 +09:00
Pranav Vashi
224cfc1f94 component-overrides: Force disable various google components
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-11-23 23:35:12 +09:00
minaripenguin
eb1b2d3d8e config: properties: Add pihooks default values
* A16 QPR2 Beta 3.3

Spoof BuildFingerprint as Pixel Beta

* It is necessary to pass integrity with the built-in Keybox Importer, as our stock fingerprint is not "Valid"

Co-authored-by: Joel Lucas <joelcba57@gmail.com>
Co-authored-by: Joey <joey@evolution-x.org>
Signed-off-by: minaripenguin <minaripenguin@users.noreply.github.com>
2025-11-23 23:35:04 +09:00
Pranav Vashi
ac59c4d7fd overlay: Use google sans flex for lockscreen clock
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-11-23 23:35:04 +09:00
Joey
954727c25c Update default wallpaper from Pixel 10 Pro XL 2025-11-23 23:35:04 +09:00
aswin7469
8111829ca6 device_config: enable new now playing QS tile and updated lockscreen UI
preview: https://t.me/aswinaskurup/729

Signed-off-by: aswin7469 <aswinas@pixysos.com>
2025-11-23 23:35:04 +09:00
aswin7469
7683716477 device_config: cleanup and update from 16 QPR2
* set only whatever we need gms will handle rest

Signed-off-by: aswin7469 <aswinas@pixysos.com>
2025-11-23 23:35:04 +09:00
minaripenguin
7519fa43a5 config: Dexpreopt pixel launcher 2025-11-23 23:35:04 +09:00
Ghosuto
1c8abc55da release: Wifi multiuser flag
Change-Id: I72205b7762d6052ed0c22a6e44ceb68545a14831
Signed-off-by: Ghosuto <clash.raja10@gmail.com>
2025-11-23 23:35:04 +09:00
Joey
6f5cfaebfa version: Uprev to 11.4.1
* After adding pixel-fw
2025-11-23 23:35:04 +09:00
rmp22
09b417ac18 config: add target_ims_override flag
Change-Id: Ib386515e21c6cabeb8c3bacd5b82f63e7796ef94
2025-11-23 23:35:04 +09:00
Dhina17
760136fd8a config: Build LMO systemui clock plugin
Change-Id: If4f6431bdbab5c9f4f75b8116d445a0f83c39ee9
2025-11-23 23:32:24 +09:00
Joey
c2e7ecc1f3 config: Don't build OmniJaws 2025-11-23 23:32:24 +09:00
Joey
51654e0509 version: Uprev to 11.4
* November 2025 patches
2025-11-23 23:32:24 +09:00
rmp22
8f9782a25a config: disabling hwc composition strategy on perf anim targets
perfetto shows a lot of wasted time done on hwc composition strategy on mtk targets

Change-Id: I88c810c954ae689f5ecd5c8f03e5130c356ae631
Signed-off-by: rmp22 <195054967+rmp22@users.noreply.github.com>
2025-11-23 23:32:24 +09:00
rmp22
b4c1bc89f7 config/common: preopt extracted apk always 2025-11-23 23:32:24 +09:00
Mathieu Chartier
7ed9b8eea8 config/common: Reduce system server verbosity
Enable it only with user builds

Test: lunch statix_cannon-user && m
Change-Id: I58d2e993ae9a7213e94661d22b47c28b0a2243e8
Signed-off-by: Vaisakh Murali <mvaisakh@statixos.com>
Reviewed-on: https://review.statixos.com/c/android_vendor_statix/+/13531
2025-11-23 23:32:24 +09:00
Mathieu Chartier
5d12187ecf config/common: Disable dexpreopt debug info on user builds
Test: lunch statix_cannon-user && m
Change-Id: I9e4b4c9907b92fea764cf07e218541bb33937b3c
Signed-off-by: Vaisakh Murali <mvaisakh@statixos.com>
Reviewed-on: https://review.statixos.com/c/android_vendor_statix/+/13530
2025-11-23 23:32:24 +09:00
minaripenguin
e4be5b1b1b config: Load boot image profile from frameworks/base
[YAAP:] art boot image profile is only intended for thin art builds
without frameworks/base.

Change-Id: I60f3117c6ba948311af9f3fe048d0cf304fc283a
2025-11-23 23:32:24 +09:00
Pranav Vashi
1f048d0691 vendor: Do not clone default AudioFX app
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-11-23 23:32:24 +09:00
rmp22
226c4948e3 config: adding flashlight strength flag
Change-Id: I69f051676d6e3048307c48aead46a1b04d7b872d
2025-11-23 23:32:24 +09:00
Ghosuto
149e5093aa release: Enable move_transition_animation_layer
- Enables moving the launching window on top of the origin window in the Animation library

Change-Id: I9b383064253cd44026932182161bfc96b36daeaf
Signed-off-by: Ghosuto <clash.raja10@gmail.com>
2025-11-23 23:32:24 +09:00
minaripenguin
9036906863 aconfig: Disable FRP enforcement
Change-Id: I77f990d2187b4afa3d106a79361a8dc340d09065
2025-11-23 23:32:24 +09:00
rmp22
30fdccb2f7 overlay: disable dreams feature
Change-Id: Iac6460e742aa11e175008db4b891d1b4768d5aec
2025-11-23 23:32:24 +09:00
Pranav Vashi
d2ba0fde94 Revert "overlay: Default to Seedvault backup transport"
* If we never set up SeedVault, we get error notification every boot.

This reverts commit a88d06f120.
2025-11-23 23:32:24 +09:00
Pranav Vashi
d684193d3d overlay: Drop now playing customization
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-11-23 23:32:23 +09:00
rmp22
5d8df83a16 vendor: overlay: enable ambient burn in protection
Change-Id: I479491bae09e089aba646ade34d7bff5d460e12f
2025-11-23 23:32:23 +09:00
Oliver Scott
3d0836ba2b Disable nfc by default
Issue: calyxos#3038
Change-Id: Ifd8a9e4826b0c48c58d923086cf0aaea3e945722
2025-11-23 23:32:23 +09:00
minaripenguin
337b528636 overlay: frameworks: Suppress ASI system crash dialogs
* this issue started from u beta and some users on t also reported ASI crash upon reboot or so.  this is probably google side since the crash happens when ASI tries to update its text classifier flags but ended up triggering bad base-64 due to a bad/malformed string.

Change-Id: Id33679c48585ced550ba005ef99f19694bb27bf4
Signed-off-by: minaripenguin <minaripenguin@users.noreply.github.com>
2025-11-23 23:32:23 +09:00
Henrique Silva
c99be54e9f overlay: Don't warn user about FC in Google TTS
This happens on almost all FDE devices, I don't see any workaround other than hiding these dialogs
2025-11-23 23:32:23 +09:00
Danny Lin
fee01c616e overlay: core: Suppress System UI ANRs
It looks like Android 12 qpr1 still has the bug where "System UI not
responding" dialogs appear sporadically after taking a screenshot. Just
suppress the ANRs for now.
2025-11-23 23:32:23 +09:00
Danny Lin
3d75a613d2 HACK: overlay: core: Suppress Intent Filter Verification Service crashes
Intent Filter Verification Service, the AOSP service that verifies
app link domains, is crashing for some users depending on their
installed apps. Temporarily suppress the crashes until we have a better
solution.
2025-11-23 23:32:23 +09:00
Joey Huab
3837bde522 config: Set new audio from mustang BD3A.250721.001.B7 as default 2025-11-23 23:32:23 +09:00
rmp22
156f6b18f8 config: add PERF_ANIM_OVERRIDE flag
Change-Id: I7d264207abef968739b57c9fce19e8f65466ee8c
2025-11-23 23:32:23 +09:00
Adithya R
fa1f2887c6 overlay: SystemUI: Tune new biometric dialog UI
Change-Id: Idcc5995f657b61647facd8d147a346e4898d677a
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-11-23 23:32:23 +09:00
Saikrishna1504
505d3c295b build: Skip ABI Checks
Signed-off-by: Saikrishna1504 <saikrishna26918@gmail.com>
2025-11-23 23:32:23 +09:00
rmp22
0d78b1e917 overlay: Enable split shade for notifications in landscape
default landscape is so ugly

Change-Id: Ida1fdc8199070ede063c394942cabdff1d7f4fb8
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-11-23 23:32:23 +09:00
Abhay Singh Gill
e6223ea349 release: Disable apply_picture_profiles
We do not have a media quality service set up yet.

Change-Id: If32e802eddac7464d98685f15aa86eb8f8228b6a
Signed-off-by: Abhay Singh Gill <abhaygill017@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-11-23 23:32:23 +09:00
Abhay Singh Gill
6e3382bd5c release: Generate themed/monochrome icons for all apps
Signed-off-by: Abhay Singh Gill <abhaygill017@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-11-23 23:32:23 +09:00
Abhay Singh Gill
f56e580047 release: Remove glanceable hub
Broken atm.

Signed-off-by: Abhay Singh Gill <abhaygill017@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-11-23 23:32:23 +09:00
Abhay Singh Gill
b6349d5564 release: Remove some useless notification flags
Signed-off-by: Abhay Singh Gill <abhaygill017@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-11-23 23:32:23 +09:00
Pranav Vashi
859b6b75e0 release: Remove flag for using emphasized font family for shade header
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-11-23 23:32:23 +09:00
Pranav Vashi
2709818ccd release: Remove glitchy depth push scaling effect
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-11-23 23:32:23 +09:00
Abhay Singh Gill
d7ade17ca2 release: Disable lpp squeeze effect
Causes crash on power button hold when using assistant.

Signed-off-by: Abhay Singh Gill <abhaygill017@gmail.com>
2025-11-23 23:32:23 +09:00
Sourajit Karmakar
eca7e4b626 overlay: Make Google Sans the default headline font
Change-Id: I60fd95e4fa73335a01f187f74b7ded6bb16067ce
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-11-23 23:32:23 +09:00
Michael Bestas
c4e86b6e4a build: Fix sourcing envsetup from anywhere
Change-Id: Id1ee24e89a554c8de42366f9f0f5da03d3c86143
2025-11-17 19:26:41 +02:00
Abhay Singh Gill
cd9a9775e9 release: Disable codec_availability flags
Signed-off-by: Abhay Singh Gill <abhaygill017@gmail.com>
2025-11-12 23:50:54 +09:00
Joey Huab
2a8268aa75 vendor: Drop notification themed icons
* Users cannot distinguish each app from one another, apparently.
2025-11-12 23:50:54 +09:00
Dmitrii
8a846ecdb2 vendor: drop more launcher flags
expressive dimiss is bugged, and launcher icon shapes is unused
Signed-off-by: Dmitrii <bankersenator@gmail.com>
2025-11-12 23:50:54 +09:00
Dmitrii
c4ed6c7a11 vendor: drop more flags
Signed-off-by: Dmitrii <bankersenator@gmail.com>
2025-11-12 23:50:54 +09:00
Pranav Vashi
936a907306 build: Ship adb_root only WITH_SU
* TBH - hardly any user uses adb root.
* adb root poses root detection risks.
* Most devices are user or userbuild type.

Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-11-12 23:50:54 +09:00
ahnet-69
2f91c76b79 vendor: Disable thumbnail_block_model flag
Change-Id: Iebd8a44c2591031c02096402bcec8a513c1da1ac
Signed-off-by: Frost <frost.github@proton.me>
2025-11-12 23:50:54 +09:00
Vaisakh Murali
137b17b608 release: Enable android.app flags
Change-Id: I9f3e4416ead6f65d138002775a29ad7b5498a651
Signed-off-by: Dmitrii <bankersenator@gmail.com>
2025-11-12 23:50:54 +09:00
Dmitrii
ffdde2ec12 release: more flag changes
Signed-off-by: Dmitrii <bankersenator@gmail.com>
2025-11-12 23:50:54 +09:00
Dmitrii
77c639ea69 release: enable more flags
Signed-off-by: Dmitrii <bankersenator@gmail.com>
2025-11-12 23:50:54 +09:00
Dmitrii
5ab102ae80 release: drop low_light_clock_dream
06-24 16:53:23.418  2021  2021 E AndroidRuntime: java.lang.RuntimeException: Unable to create service com.google.android.systemui.lowlightclock.LowLightClockDreamService: java.lang.RuntimeException: Couldn't call constructor
06-24 16:53:23.418  2021  2021 E AndroidRuntime: 	at android.app.ActivityThread.handleCreateService(ActivityThread.java:5317)
06-24 16:53:23.418  2021  2021 E AndroidRuntime: 	at android.app.ActivityThread.-$$Nest$mhandleCreateService(Unknown Source:0)
06-24 16:53:23.418  2021  2021 E AndroidRuntime: 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2606)
06-24 16:53:23.418  2021  2021 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:110)
06-24 16:53:23.418  2021  2021 E AndroidRuntime: 	at android.os.Looper.loopOnce(Looper.java:248)
06-24 16:53:23.418  2021  2021 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:338)
06-24 16:53:23.418  2021  2021 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:9102)
06-24 16:53:23.418  2021  2021 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
06-24 16:53:23.418  2021  2021 E AndroidRuntime: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:598)
06-24 16:53:23.418  2021  2021 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:932)
06-24 16:53:23.418  2021  2021 E AndroidRuntime: Caused by: java.lang.RuntimeException: Couldn't call constructor
06-24 16:53:23.418  2021  2021 E AndroidRuntime: 	at com.android.systemui.SystemUIAppComponentFactoryBase.instantiateService(go/retraceme 4d9244815cb2a8db26361f6e20f13b475cc86e8d80733cfefb09c7ddee4d5759:66)
06-24 16:53:23.418  2021  2021 E AndroidRuntime: 	at android.app.ActivityThread.handleCreateService(ActivityThread.java:5274)
06-24 16:53:23.418  2021  2021 E AndroidRuntime: 	... 9 more
06-24 16:53:23.418  2021  2021 E AndroidRuntime: Caused by: java.lang.NoSuchMethodException: com.google.android.systemui.lowlightclock.LowLightClockDreamService.<init> []

Signed-off-by: Dmitrii <bankersenator@gmail.com>
2025-11-12 23:50:54 +09:00
Dmitrii
0f47463020 release: drop some flags
Signed-off-by: Dmitrii <bankersenator@gmail.com>
2025-11-12 23:50:54 +09:00
Dmitrii
761b3a1d0b release: drop new sb icons
buggy and dont work well with customizations atm
Signed-off-by: Dmitrii <bankersenator@gmail.com>
2025-11-12 23:50:54 +09:00
ralph950412
970e210182 release: Enable WallpaperPicker2 flags
Change-Id: I7f389e8bdb6e9998681cf7abb561d5aaf6b8d909
2025-11-12 23:50:54 +09:00
ralph950412
fe386ac300 release: Enable SystemUI flags (com.android.systemui.shared)
Change-Id: I7a4b4fa22e3f3c6f5b2eceea9e3fde573a937e9c
2025-11-12 23:50:54 +09:00
ralph950412
3af13fdedd release: Enable SystemUI flags
Change-Id: Id7b6b7ec61363c9a90a4354ec78215c7ce697652
2025-11-12 23:50:54 +09:00
ralph950412
819b342ae1 release: Enable SettingsLib flags
Change-Id: Ide729f28d84e05063b961c504e52dc2249febe98
2025-11-12 23:50:54 +09:00
ralph950412
f10598cc6b release: Enable Settings flags
Change-Id: I4aacdc60d799a139941783dc69fd03cb591ec84a
2025-11-12 23:50:54 +09:00
ralph950412
3cb3539504 release: Enable Launcher3 flags
Change-Id: I06cb64470805c579619fe2512ae79d60a746d65c
2025-11-12 23:50:54 +09:00
techyminati
190b0db80c config: Enable Material Design 3 Expressive
Change-Id: Ib6d3ac2e0f3d76768c508e1b00efc51e141c1b09
Signed-off-by: techyminati <sinha.aryan03@gmail.com>
2025-11-12 23:50:54 +09:00
rmp22
f63d3ed3c5 config: Add bypass charging prop
Change-Id: Iee2e99e9ec929221336fea361ab516b00f47bb7e
2025-11-12 23:50:54 +09:00
rmp22
8d659b540a overlay: add applock whitelist
Change-Id: I491f05eb300285adf453d35954c35080ec1207cf
Signed-off-by: rmp22 <195054967+rmp22@users.noreply.github.com>
2025-11-12 23:50:54 +09:00
rmp22
d607bf656a common: Disable art debug builds
Change-Id: I44e16c12c70e30dea8e85a9751cc94e4ff329898
Signed-off-by: rmp22 <195054967+rmp22@users.noreply.github.com>
2025-11-12 23:50:54 +09:00
rmp22
6aaad33937 config: add blur support
Change-Id: I5fabdbbdfe812346f17dbba5d4bf9abe7344e0ca
2025-11-12 23:50:54 +09:00
Dyneteve
8c010e59f8 overlay: Allow ShannonIMS to access ServiceState
Change-Id: Ic43f212f81e6a53daf6879a7110effafbc000ec4
Signed-off-by: Dyneteve <dyneteve@hentaios.com>
2025-11-12 23:50:54 +09:00
rmp22
07fdacd660 overlay: Update circle to search overlays for vanilla builds
Change-Id: Id72c2e81494f793d773cfc5de24cb15eeaaaf5e9
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-11-12 23:50:54 +09:00
Ido Ben-Hur
328506e398 overlay: Enable circle to search 2025-11-12 23:50:54 +09:00
rmp22
1f2fbb09e3 Enable ThinLTO cache
Change-Id: I8438591a418fc4f9ce3ceead84cda9b6870758ff
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: rmp22 <195054967+rmp22@users.noreply.github.com>
2025-11-12 23:50:54 +09:00
rmp22
9dec6f3798 build: Override host metadata
reference taken from
https://grapheneos.social/@GrapheneOS/113870255397154703

instead of fixed host number, use a random generated host number that follows google's host number format to bypass revolut's host checks

Change-Id: I72feafd663a551eb0c6c4146d52137ed0dc7456d
Co-authored-by: Terminator-J <terminator_j@hotbutteredmonkey.com>
Signed-off-by: rmp22 <195054967+rmp22@users.noreply.github.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-11-12 23:50:54 +09:00
Terminator-J
61ff48b0d2 kernel: Set "safe" default values for kernel build host & user
Take all the fun out of the game and set sanitized values by default.
2025-11-12 23:50:54 +09:00
Dyneteve
973f65e10a overlay: Enable keyboard vibration
Change-Id: Ibb162e8ce74ce566f326b8d21951a3eaec0113d8
Signed-off-by: Dyneteve <dyneteve@hentaios.com>
2025-11-12 23:50:54 +09:00
Dyneteve
30857c244e overlay: SystemUI: Add plugin whitelist
Change-Id: I38e6a5c5eb9ceaee13e0cd8ab1c3d858d72aa19c
Signed-off-by: Dyneteve <dyneteve@hentaios.com>
2025-11-12 23:50:54 +09:00
John Galt
5e36dee4dc DeviceConfig: drop smartspace flashlight action chip (again)
Accidentally made it back recently
2025-11-12 23:50:54 +09:00
John Galt
63f3cd3d02 DeviceConfig: update nearby flags
Fixes gms find my device drain on some devices such as waffle, found
on new pixel configs
2025-11-12 23:50:54 +09:00
Pranav Vashi
56251e2e96 config: Conditionally build ColumbusService
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-11-12 23:50:54 +09:00
rmp22
17cdd72eb7 Add option to ship viperfx
Change-Id: I35cea2206d098a53e03c54f462b59db991c891bb
Signed-off-by: rmp22 <195054967+rmp22@users.noreply.github.com>
2025-11-12 23:50:54 +09:00
Asriadi Rahim
0cdfe18b28 vendor: Make BCR optional 2025-11-12 23:50:54 +09:00
tejas101k
a35a0de6ac config: Build Updater for all
* Local update could still be helpful
2025-11-12 23:50:54 +09:00
Danny Lin
165131380b config: Disable RescueParty
RescueParty's aggressive approach to error recovery almost never helps
with the problems we're likely to face, and its risk of data loss is far
too high. Force-disable it entirely and remove all other conditions,
especially those that depend on data integrity in the first place, to
reduce the risk of RescueParty triggering falsely and causing data loss.

Note that it is still possible to force-enable RescueParty for testing
purposes using the persist.sys.enable_rescue property.
2025-11-12 23:50:54 +09:00
Adithya R
e9d8aa27f1 config: Build LMO Freeform app and sidebar
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: GXC 2356 <gxcdev2356@gmail.com>
2025-11-12 23:50:54 +09:00
Pranav Vashi
1fe97222f7 config: Build OmniJaws service
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-11-12 23:50:54 +09:00
Pranav Vashi
79f18bbb4a config: Build OmniStyle
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-11-12 23:50:54 +09:00
someone5678
0f57665ea8 config: Build BtHelper 2025-11-12 23:50:53 +09:00
Pranav Vashi
230a9ce7ed config: Build GameSpace
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-11-12 23:50:53 +09:00
minaripenguin
80fc8c761f config: Build tensorflow lite jni
Signed-off-by: clarencelol <clarencekuiek@proton.me>
2025-11-12 23:50:53 +09:00
HeCheng Yu
37953432c7 config: Disable default frame rate limit for games
Android 15 limits refresh rate to 60hz for games unless we enable the developer option 'Disable default frame rate for games' manually.
Adding this prop enables it by default.
2025-11-12 23:50:53 +09:00
minaripenguin
50bddb3f36 vendor: Introduce bootanimation styles [2/3]
vendor: Add more bootanimation styles [2/3]

vendor: Add ctOS bootanimation [2/3]

by benmeroff - https://xdaforums.com/t/boot-animation-ctos-boot-animation.2843830/

vendor: Add Evolution X Reveal boot animation [2/3]

vendor: Add more classic boot animation styles [2/3]

* Remove anniv bootanimation as it takes a lot of space.

Co-authored-by: 0xsharkboy <achille@0xsharkboy.dev>
Co-authored-by: AnierinB <anierin@evolution-x.org>
Signed-off-by: minaripenguin <minaripenguin@users.noreply.github.com>
Signed-off-by: 0xsharkboy <achille@0xsharkboy.dev>
Signed-off-by: AnierinB <anierin@evolution-x.org>
2025-11-12 23:50:53 +09:00
Andrzej Perczak
f357314af4 common: Optimize Launcher3 and Settings for speed
Signed-off-by: Andrzej Perczak <linux@andrzejperczak.com>
2025-11-12 23:50:49 +09:00
someone5678
350059d2a4 config: props: Set default wifi country code
* To 00
* Make it overridable

Change-Id: I2025fc927363baf547b36ecd6ebe9c7fbc4d7611
2025-11-12 23:50:49 +09:00
Le Hong Duc
cbf9fce170 config: Don't dexpreopt prebuilt apps
Pre-optimizing prebuilt Gapps is not needed because they are mostly
updated via Play Store and device will optimize them on install.

Save some space on /product partition and reduce build time.

Signed-off-by: Le Hong Duc <hongducthbk123@gmail.com>
2025-11-12 23:50:49 +09:00
Pranav Vashi
addd0ec34b common: Inherit pixel-fw when available
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-11-12 23:50:49 +09:00
minaripenguin
8d5a2850c6 config: Disable memtag for different processes
* it defaults to async if not specified

Signed-off-by: minaripenguin <minaripenguin@users.noreply.github.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-11-12 23:50:49 +09:00
ShevT
a1e8e055f3 config: Adding an option to build DeviceAsWebcam 2025-11-12 23:50:49 +09:00
Pranav Vashi
294b7e4fa9 overlay: Set AOSP webview as fallback
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-11-12 23:50:49 +09:00
DarkJoker360
836728c491 Drop custom adb drawable
Signed-off-by: DarkJoker360 <simoespo159@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-11-12 23:50:49 +09:00
Jyotiraditya Panda
2a60eef69e overlay: Update default keyguard affordance setup
- Left affordance: flashlight
 - Right affordance: camera

Change-Id: I3295007e351d6e17b6efb13cacd9665475f4f34a
Signed-off-by: Jyotiraditya Panda <jyotiraditya@aospa.co>
2025-11-12 23:50:49 +09:00
Adithya R
e28558f962 overlay: Remove bouncer delay when face unlock is enabled
No idea why was this annoying thing made a "feature" in the first place.

Suggested-by: Omkar Chandorkar <gotenksIN@aospa.co>
Change-Id: Iefd47099c48586dd97644e90fadf93707617a74e
(cherry picked from commit ec3160865ccb36fb8c02a5f447f670b3176c0601)
Signed-off-by: clarencelol <clarencekuiek@proton.me>
2025-11-12 23:50:49 +09:00
someone5678
da22ca4955 overlay: device_config: Updates
From gms device config:
- textclassifier: set manifests + needed options
- window manager: set splash screen exemption list

Co-authored-by: John Galt <johngaltfirstrun@gmail.com>
Co-authored-by: Joey Huab <joey@evolution-x.org>
2025-11-12 23:50:49 +09:00
cyberknight777
f881236437 overlay: device_config: Add values required for Speech Recognition
Dumped from whatever gms sets as a configurator
2025-11-12 23:50:49 +09:00
Ido Ben-Hur
d6ee6038fa overlay: device_config: Escape special characters 2025-11-12 23:50:49 +09:00
aswin7469
e1c92ed2b4 overlay: device_config: animate navbar on long press
Signed-off-by: aswin7469 <aswinas@pixysos.com>
2025-11-12 23:50:49 +09:00
Ionut Gherman
da035911ac overlay: update configs for AiAi
* taken from LineageOS/android_device_google_zumapro@9d1b0cf
Signed-off-by: Ionut Gherman <ghermanionut96@gmail.com>
2025-11-12 23:50:49 +09:00
Pranav Vashi
fd7d1b2b47 overlay: Use google-sans for font config overlays
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-11-12 23:50:49 +09:00
Pranav Vashi
d1bc4b1e38 overlay: Add gms location history to extra location packages
* From pixel dump. Suggested by @nikhilmenghani.
* Nikgapps will remove this overlay as it conflicts here.

Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-11-12 23:50:49 +09:00
Pranav Vashi
59d1a18fcb overlay: Add tethering to location exemption
Ref: 404b4778ec

Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-11-12 23:50:49 +09:00
Pranav Vashi
dea3555ceb overlay: Add SystemUI to location extra packages
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-11-12 23:50:49 +09:00
Pranav Vashi
b5f815f941 overlay: Add OmniJaws to location extra packages
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-11-12 23:50:49 +09:00
Danny Lin
dd5b13b527 overlay: Offload WM shell to another thread
Android 12 added this config to offload some window management to a
dedicated thread. Enable it to improve performance when the main System
UI thread is busy.

Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-11-12 23:50:49 +09:00
Pranav Vashi
26deeda842 overlay: Update SettingsProvider defaults
* Reduce default screen off timeout to 30 sec.
* Turn on automation brightness mode by default.
* Turn on vibrate when ringing by default.

Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-11-12 23:50:49 +09:00
Pranav Vashi
405909061c common: Allow OTA downgrade regardless build type
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
2025-11-12 23:50:49 +09:00
Dhina17
65693adfc4 soong: Add libcameraservice extension config
Change-Id: Id20f782c1008fed1f15250129618326091f61bf8
2025-11-12 23:50:49 +09:00
Adithya R
9db2f1c74a soong: Add support for miui camera mode [2/2]
Change-Id: I0c912a1c7056bb204a24bd5f0a08308cae71f3f3
2025-11-12 23:50:49 +09:00
AnierinB
e5c777927f soong: Conditionally spoof ro.product.first_api_level to 32 [1/2]
Devices that shipped on API 33 or higher need to set
ro.product.first_api_level to 32 in order to pass integrity.

Set SPOOF_FIRST_API_LEVEL_32 := true in BoardConfig*.mk to enable.

Signed-off-by: AnierinB <anierin@evolution-x.org>
2025-11-12 23:50:49 +09:00
Jake Weinstein
e0a87580e4 soong: Add support to set vendor tag with client package name
* OEMs like OnePlus and Nothing detect camera package name to unlock features like 48mp.
* Use TARGET_CAMERA_PACKAGE_NAME to specify the package name.

Signed-off-by: AnierinB <anierin@evolution-x.org>
2025-11-12 23:50:49 +09:00
ponces
5b8298e576 evolution: Switch to AOSPA's face unlock implementation
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: AnierinB <anierin@evolution-x.org>
2025-11-12 23:50:49 +09:00
Dyneteve
5856660524 overlay: Update device configs global overrides
Co-authored-by: Joey <joey@evolution-x.org>
Co-authored-by: AnierinB <anierin@evolution-x.org>
Co-authored-by: aswin7469 <aswinas@pixysos.com>
Co-authored-by: someone5678 <someone5678@users.noreply.github.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: AnierinB <anierin@evolution-x.org>
2025-11-12 23:50:49 +09:00
Dyneteve
86fe5eb28e overlay: Allow new SystemUI clocks
Co-authored-by: Pranav Vashi <neobuddy89@gmail.com>
Change-Id: I51ab1eb06b1e77bd8048d5064f811e8e69884b24
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: AnierinB <anierin@evolution-x.org>
2025-11-12 23:50:49 +09:00
Danny Lin
d448eedf5b overlay: Settings: Show memory usage in app info
The system tracks memory usage for each app, so we might as well show it
to the user so that users can track down which apps are hogging their
memory. This shouldn't be a developer-only feature that was previously
only exposed in Developer Options.

Change-Id: Ib900438f856369286b7621208020c5c8da73765f
Signed-off-by: AnierinB <anierin@evolution-x.org>
2025-11-12 23:50:49 +09:00
aswin7469
1362de157d evolution: Enable Cloned App
Co-authored-by: Pranav Vashi <neobuddy89@gmail.com>
Co-authored-by: John Galt <johngaltfirstrun@gmail.com>
Co-authored-by: minaripenguin <minaripenguin@users.noreply.github.com>

Signed-off-by: AnierinB <anierin@evolution-x.org>
2025-11-12 23:50:49 +09:00
Pranav Vashi
aec455072f overlay: Use google-sans for remaining font configs
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: AnierinB <anierin@evolution-x.org>
2025-11-12 23:50:49 +09:00
AnierinB
539f263c54 evolution: Configure support for Evolution X Vanilla
Signed-off-by: AnierinB <anierin@evolution-x.org>
2025-11-12 23:50:49 +09:00
Dyneteve
671bab67a1 evolution: Inherit Pixel additions via WITH_GMS
* GMS
* Audio
* Charger
* RRO overlays

Co-authored-by: Joey <joey@evolution-x.org>
Co-authored-by: AnierinB <anierin@evolution-x.org>
Co-authored-by: someone5678 <nemui3353@gmail.com>
Signed-off-by: AnierinB <anierin@evolution-x.org>
2025-11-12 23:50:49 +09:00
AnierinB
5b200d6862 lineage: Initial Evolution X rebrand
Co-authored-by: Joey Huab <joey@evolution-x.org>
Co-authored-by: Pranav Vashi <neobuddy89@gmail.com>
Co-authored-by: Lup Gabriel <gwolf2u.website@gmail.com>
Co-authored-by: Hemant Sachdeva <hemant.evolver@gmail.com>
Signed-off-by: AnierinB <anierin@evolution-x.org>
2025-11-12 23:50:48 +09:00
Joey Huab
f251f3b7dc Revert "config: Use add_soong_config_namespace/add_soong_config_var macros"
This reverts commit c2dd68f84a.
2025-11-12 23:50:48 +09:00
Joey Huab
eccd59d458 Revert "Revert "Add product_launched_with_j{,_mr1,mr2}.mk""
This reverts commit e1e121bea4.
2025-11-12 23:50:48 +09:00
Joey Huab
a01876c0ed Revert "bootanimation: Convert to Android.bp"
This reverts commit 3b29ed3826.
2025-11-12 23:50:48 +09:00
Joey Huab
46164fb8a5 Revert "charger: Convert to Android.bp"
This reverts commit b3e6f3ad7e.
2025-11-12 23:50:43 +09:00
Yumi Yukimura
5d46082839 config: tablet: Bring back android.software.freeform_window_management feature
* desktop windowing mode depends on it

Change-Id: Iffdab6b268a3a3ac0fb78027c4900a3fef1eeac5
2025-11-12 08:03:46 +00:00
Jared Duke
00d7786f61 lineage: Enable R8 code shrinking and optimizations
Squashed commit of the following:

commit b11f60fd9b601caa10f8caec5c9f3a10c5082d68
Author: Jared Duke <jdduke@google.com>
Date:   Wed Feb 16 15:43:55 2022 -0800

    Enable R8 code shrinking for system_server on Pixel

    Opt in to whole-program Java optimizations via R8 for Pixel devices.
    This can be explicitly disabled during builds via
    `SYSTEM_OPTIMIZE_JAVA=false m`.

    Note that this change only enables code shrinking for system_server,
    and should not impact stack traces. Additional R8 optimizations
    will be enabled after broader improvements to retracing infrastructure.
    See go/aperf-system-r8-faq for additional details and guidance. Also
    note that R8 shrinking optimizations are implicitly disabled in ENG builds.

    Enabling for non-Pixel devices will proceed in stages as we flesh
    out infrastructure and validate with test populations.

    Results: services.jar (20MB -> 17MB)

    Bug: 210510433
    Test: m + atest FrameworksServicesTests + manual testing on Raven
    Change-Id: I13c0674105aa2cab7722f52344486e86e3bde26b

commit ecc5901ee57253edb0fdde5d5099c4e1078f7b6f
Author: Jared Duke <jdduke@google.com>
Date:   Tue Jan 4 15:21:39 2022 -0800

    Enable SystemUI R8 optimizations for Pixel

    Opt in to whole-program Java optimizations via R8 for Pixel devices.
    This can be explicitly disabled during builds via
    `SYSTEMUI_OPTIMIZE_JAVA=false m`.

    Note that this change does introduce changes to stack traces that
    may require retracing for fully accurate debugging and diagonstics.
    See go/aperf-system-r8-faq for additional details and guidance. Also
    note that optimizations are implicitly disabled in ENG builds.

    Enabling for non-Pixel devices will proceed in stages as we flesh
    out infrastructure and validate with test populations.

    Results:
     * SystemUIGoogle.apk (40MB -> 35MB)
     * SystemUIGoogle.odex (32MB -> 25MB)

    Test: m + atest SystemUITests + presubmit + manual testing on Raven
    Bug: 203472868
    Change-Id: I67ff2c06885b21164a3034e9922163337e8787f3

Change-Id: Ib89500d70780fdf8485aaf04976d4cc607b4ccf7
2025-11-12 08:01:42 +00:00
LuK1337
3d4d384139 Move APNs data to vendor/apn
Change-Id: I4b939bf232a33d82664f890e33f47e22c1f72cee
2025-11-10 10:31:29 +01:00
Michael Bestas
52a3abe132 vars: Update qcom tags
Change-Id: I7df87e633571f337ac42fff4a515bbbbefbe81f4
2025-11-08 17:32:15 +00:00
Michael Bestas
d40f38d6c0 release: Bump Security String to 2025-11-01
Implemented:
============
None

Previously Implemented:
================
CVE:            References:    Type:  Severity:  Updated AOSP versions:
CVE-2025-48581  A-428945391    EoP    High       16
CVE-2025-48593  A-374746961    RCE    Critical   13, 14, 15, 16

Not Implemented:
================
None

Not Applicable (platform source):
=================================
None

Change-Id: I1d0884060451ac9106b046ea6619f64310f5ff9b
2025-11-08 15:40:16 +02:00
LuK1337
0f3d6ea1b2 config: Set ro.debuggable=0 for userdebug builds
Change-Id: I138c6dabea1c42e820a9ad1cba69cf585f62ee4b
2025-11-08 08:40:15 +00:00
Aryan
c84fb58d74 Revert "overlay: Don't allow toggling camera"
Software based camera blocking is always supported.

This reverts commit 4339301f25.

Change-Id: If43612b23e326e77d0058ff132201d4136b7d874
2025-11-08 08:22:35 +00:00
_
5216d728d9 apns: Revert US Mobile Warp changes
This reverts part of
https://review.lineageos.org/c/LineageOS/android_vendor_lineage/+/450430,
which broke my mobile data. See
https://gitlab.com/LineageOS/issues/android/-/issues/9217 for more
details. Manually deleting this line from /product/etc/apns-conf.xml on my
device fixed mobile data for me.

Change-Id: I6d1b81f3ab1eee552d73de504cbab302f67d73d8
2025-11-06 18:22:31 -08:00
Hridaya Prajapati
4339301f25 overlay: Don't allow toggling camera
Not all devices support this feature.
If a device supports this feature, enable overlay in the device tree.

This partially reverts commit 7b6521c8a4.

Change-Id: Iece2b092d0fdcbb94c41c7727de799a0b7baa700
2025-11-06 15:54:54 +00:00
LuK1337
d18624129c wipe-frp: Allow overriding FRP_BLOCK
Change-Id: I2fed7f088541667fc53d75d841a8af1903edff3d
2025-11-04 12:24:20 +01:00
Doğancan yılmazer
45094fbaa3 apns: Add APN for Netgsm
Provides services in Turkey.

https://www.netgsm.com.tr/gsm/mobil-hat
https://www.netgsm.com.tr/dist/images/netgsm-apn-ayarlari.jpg?v1

Change-Id: If7080da334da33c76f741195add206d817f6224a
2025-11-03 23:25:24 +00:00
Sebastiano Barezzi
2426bf9c88 kernel: Satisfy Rust bindgen for v6.12
Change-Id: I793e2426f5b697c3c33c6d43729721ac1109abcd
2025-11-03 16:21:01 +00:00
Michael Bestas
751459e70c envsetup: Add build_kernel function for Pixel OOT kernel build
Change-Id: Ib2840cb2bf236a6d25906b60256ef521dd6a2c8a
2025-11-03 00:19:00 +01:00
Arian
a13626ad89 apn: Add finetwork
From https://blog.finetwork.com/configurar-apn-finetwork-movil and MIUI

Fixes: https://gitlab.com/LineageOS/issues/android/-/issues/6065
Change-Id: I6ea99da32e4f688cab2dc43335393c07caf9e275
2025-10-27 08:32:45 +00:00
Atakan
13c54044ba apns: Add KKTCell APNs
Northern Cyprus version of Turkcell.

Change-Id: Ib7457577ff5954937d3e06e2720e34af2ef7a13c
2025-10-25 06:53:52 +00:00
Atakan
7f2f42fc11 apns: Update APNs of Turkish carriers
Reference for Turkcell: https://www.turkcell.com.tr/yardim/cihazlar/samsung-galaxy-s25-ultra-yardim#internet-ayarlari

Other carriers were obtained by comparing APN configs from various OEMs.

Change-Id: I70292b3e0163532bd6ecadda7e27b13121b16f1d
2025-10-25 06:53:52 +00:00
tejas101k
327eacafd3 apns: Add Altel and Tele2
Carrier documentation:
[1]https://altel.kz/new/helps/settings
[2]https://tele2.kz/help/d/11

Third-party ref:
https://apn.how/kz/tele2-altel

Change-Id: I94ceef2d10aff5573946827736644578ad625273
Signed-off-by: tejas101k <tejassingh649@rediffmail.com>
2025-10-24 15:35:20 +00:00
Tim Zimmermann
48692af52c apns: Update Vodafone DE
https://www.vodafone.de/hilfe/google/pixel-10-pro.html?tab=geraete-einstellungen&accordion=2337221

Change-Id: I7158f4c53b88d6929d8043d833f960ba3a3040c7
2025-10-23 18:26:48 +00:00
Michael Bestas
8bf652f46f Revert "tools: getb64key - print the base64 version of a PEM public key file"
Reason for revert: This has been unused since lineage-16.0

This reverts commit 0a656b6446.

Change-Id: Ib804efa52b1af444be1de68066be48c30ea4d22b
2025-10-21 03:56:53 +03:00
pnguyen879
1e320a9489 bootanimation: Drop CleanSpec.mk
Change-Id: I1208dbada3d161feafd2c712381694e30f79ed26
2025-10-20 00:02:19 +00:00
Nolen Johnson
402f7e3adb lineage: targets: car*: Refactor and update artifact list
Change-Id: I0bc8aa03ed854f7e770ce32e0fe8df8f97e3929f
2025-10-19 03:18:16 +00:00
LuK1337
88d6306ea0 lineage: products: Disable EPPE for cuttlefish targets
Change-Id: Ie448ab0fa840289707e2505b68681ed1f9a72eda
2025-10-19 03:18:07 +00:00
Flicker372
79db56317b apns: Update for CTM(Macau)
* Enable IPv6

Ref:
[1]https://android.googlesource.com/device/sample/+/main/etc/apns-full-conf.xml
[2]https://www.ctm.net/en-US/person/T31-010010230170/202010/f92bf17b7e184c2db8d4b809b2d1ec3b.html

Change-Id: I72a1fad8742ac1f8007398f9c6920923c728c152
2025-10-10 20:36:18 +00:00
Michael Bestas
99fed8e4d9 release: Bump Security String to 2025-10-01
Implemented:
============
None

Previously Implemented:
================
None

Not Implemented:
================
None

Not Applicable (platform source):
=================================
None

Change-Id: I3aa454d3fff7f5517a69e3c290e7460fbe0aa75e
2025-10-08 16:38:26 +03:00
Aaron Kling
665b11d8b1 kernel: Set scmversion for kernel platform
By default, the version control information isn't checked to save time.
The normal version check uses repo, which is blocked by the aosp build
system. So the manifest is generated separately and passed to bazel.

Change-Id: I2232903af6b6b7869aef3f66d836236a041887cc
2025-09-26 07:54:17 +00:00
Aaron Kling
88858796a2 kernel: Fix building kernel platform with in-tree out
This was originally verified against out-of-tree, which is already an
absolute path. With in-tree out, the path is relative. Since pwd is
changed to the root of the kernel platform tree, the dist path needs to
be absolute.

Fixes: 7cd90ecd (kernel: Support building from kernel platform)
Change-Id: Ib9cecdc5f8bfd3345afc73c050ab6214ac4c48d6
2025-09-26 07:54:17 +00:00
Yumi Yukimura
9e079ba3c1 lineage_generic_*target: Disable soong defined system image for now
We don't support it yet.

Change-Id: Ic5cfa50ff66bfee723b74d4e5511582b42a2eeca
2025-09-24 15:12:23 +00:00
Michael Bestas
c0fe4cb798 Bump Security String to 2025-09-01
Implemented:
============
CVE:            References:    Type:  Severity:  Updated AOSP versions:
CVE-2025-32321  A-378902342    EoP    High       13, 14, 15, 16
CVE-2025-32323  A-397216537    EoP    High       13, 14, 15, 16
CVE-2025-32324  A-406763872    EoP    High       15, 16
CVE-2025-32325  A-402319736    EoP    High       13, 14, 15, 16
CVE-2025-32326  A-365739560    EoP    High       13, 14, 15, 16
CVE-2025-32331  A-404252173    EoP    High       15, 16
CVE-2025-32345  A-409318132    EoP    High       15, 16
CVE-2025-32346  A-337785563    EoP    High       16
CVE-2025-32347  A-388528350    EoP    High       13, 14, 15, 16
CVE-2025-32349  A-408215749    EoP    High       13, 14, 15, 16
CVE-2025-32350  A-404256832    EoP    High       14, 15, 16
CVE-2025-48522  A-418773283    EoP    High       13, 14, 15, 16
CVE-2025-48523  A-388032224    EoP    High       13, 14, 15, 16
CVE-2025-48524  A-399885815    DoS    High       13, 14, 15, 16
CVE-2025-48526  A-407764858    EoP    High       13, 14, 15, 16
CVE-2025-48527  A-378088320    ID     High       13, 14, 15, 16
CVE-2025-48528  A-384727394    EoP    High       15, 16
CVE-2025-48529  A-325030433    ID     High       13, 14, 15, 16
CVE-2025-48531  A-389681530    EoP    High       13, 14, 15, 16
CVE-2025-48532  A-417194323    EoP    High       16
CVE-2025-48535  A-353680402    EoP    High       13, 14, 15, 16
CVE-2025-48537  A-391894257    ID     High       13, 14, 15, 16
CVE-2025-48538  A-328182084    DoS    High       13, 14, 15, 16
CVE-2025-48539  A-406785684    RCE    Critical   15, 16
CVE-2025-48540  A-416734088    EoP    High       13, 14, 15, 16
CVE-2025-48541  A-411418366    EoP    High       13, 14, 15, 16
CVE-2025-48542  A-273501008    DoS    High       13, 14, 15, 16
CVE-2025-48543  A-421834866    EoP    High       13, 14, 15, 16
CVE-2025-48544  A-415783046    EoP    High       13, 14, 15, 16
CVE-2025-48545  A-397438392    ID     High       13, 14, 15, 16
CVE-2025-48546  A-388029380    EoP    High       13, 14, 15, 16
CVE-2025-48547  A-419105158    EoP    High       13, 14, 15, 16
CVE-2025-48550  A-401256328    DoS    High       13, 14, 15, 16
CVE-2025-48551  A-407991863    ID     High       13, 14, 15, 16
CVE-2025-48552  A-365975561    EoP    High       13, 14, 15, 16
CVE-2025-48553  A-384514657    EoP    High       13, 14, 15, 16
CVE-2025-48554  A-414603411    DoS    High       13, 14, 15, 16
CVE-2025-48556  A-419014146    EoP    High       15, 16
CVE-2025-48558  A-380885270    EoP    High       13, 14, 15, 16
CVE-2025-48559  A-416491779    DoS    High       13, 14, 15, 16
CVE-2025-48560  A-419110583    ID     High       15, 16
CVE-2025-48561  A-399120953    ID     High       13, 14, 15, 16
CVE-2025-48562  A-423815728    ID     High       13, 14, 15, 16
CVE-2025-48563  A-401545800    EoP    High       13, 14, 15, 16

Previously Implemented:
=======================
None

Not Implemented:
================
None

Not Applicable (platform source):
=================================
CVE:            References:    Type:  Severity:  Updated AOSP versions:
CVE-2021-39810  A-212610736    EoP    High       13
CVE-2023-24023  A-255601934    EoP    High       13, 14, 15
CVE-2024-49714  A-271962784    EoP    High       13, 14
CVE-2025-0076   A-366403307    ID     High       13, 14, 15
CVE-2025-0089   A-378505461    EoP    High       13, 14, 15
CVE-2025-26454  A-299928772    EoP    High       13, 14, 15
CVE-2025-26464  A-392614489    EoP    High       15 (release)
CVE-2025-32327  A-389681152    EoP    High       14, 15
CVE-2025-32330  A-389127608    ID     High       13, 14, 15
CVE-2025-32333  A-409780975    EoP    High       14
CVE-2025-48534  A-381419370    DoS    High       13, 14, 15
CVE-2025-48548  A-293603271    EoP    High       13, 14, 15
CVE-2025-48549  A-325912429    EoP    High       13, 14, 15

Change-Id: I6217b4e09b01d606e78d21acf8b7bf1ef2fb65a3
2025-09-15 07:55:27 +00:00
Michael Bestas
1c6299cff2 vars: Update qcom tags
Change-Id: I9765bc16fa4b1158fe992072301e32cb511d2658
2025-09-14 05:58:36 +00:00
Michael Bestas
c7a3e36e9d vars: Point sunfish to archive.org
Change-Id: I36d875e35a3a6d5a55804c3b21b28e520360d2e5
2025-09-11 16:31:08 +00:00
Inhishonor
616c2ae5ec audio: Add Plasma Mobile alarms & notifications
In the interest of customization, here are a bunch more alarms and notifications sounds. The code is taken from ProtonAOSP, and adapted to Lineage.
Cherry-picked from: 629b35007c
Cherry-picked from: 6f203a966f

Change-Id: Iaacb0d2e94d2dda1cf90cabb9368cea1a4cf0a7f
Authored-by: Danny Lin <danny@kdrag0n.dev>
Co-Authored-by: Inhishonor <inhishonor@protonmail.com>
2025-09-10 18:38:52 +00:00
Aaron Kling
7cd90ecd34 kernel: Support building from kernel platform
This expects a few build variables to be set:

* TARGET_KERNEL_PLATFORM_TARGET: The base target name. For example,
  'tegra' will indicate that the dist target is tegra_dist, abi is
  tegra_abi, etc.
* TARGET_KERNEL_VERSION: Used to determine the kernel checkout path. For
  example, a value of 6.6 will expect the kernel platform repo to be
  checked out to $BUILD_TOP/../kernel-6.6.
* TARGET_KERNEL_SOURCE: Relative to the top of the kernel platform
  checkout, the path to the kernel build rules. For example,
  vendor/nvidia/tegra.
* BOARD_KERNEL_IMAGE_NAME: The kernel image to use. For example, Image.

Using the examples above, this will run bazel in the kernel-6.6
directory on the target //vendor/nvidia/tegra:tegra_dist, then source
the output from $OUT/tegra/dist, with the prebuilt kernel image being
Image.

Change-Id: If96e96dffa2c0bfd9bd824bb3d8064eb861c9d00
2025-09-10 18:37:57 +00:00
inferno0230
e9f9f3902d merge_dtbs: Use DeviceTreeInfo's hash in get_name()
Fixes duplicate output filename collision:

INFO: Saving to: benz-23871-crow-overlay-DVT1-camera-0x46232744d57254d9.dtbo
Merging overlay blob out/target/product/benz/obj/DTB_OBJ/arch/arm64/boot/dts/vendor/qcom/camera/oplus/benz-camera-overlay.dtbo
Reloading overlay blob out/target/product/benz/obj/DTB_OBJ/arch/arm64/boot/dts/vendor/qcom/camera/oplus/benz-camera-overlay.dtbo
Merging overlay blob out/target/product/benz/obj/DTB_OBJ/arch/arm64/boot/dts/vendor/qcom/camera/oplus/benz-camera-overlay.dtbo
INFO: Saving to: benz-23871-crow-overlay-DVT1-23061-audio-23061-display-camera-0x46232744d57254d9.dtbo
Merging overlay blob out/target/product/benz/obj/DTB_OBJ/arch/arm64/boot/dts/vendor/qcom/audio/oplus/benz-23061-audio-crow-overlay.dtbo
Reloading overlay blob out/target/product/benz/obj/DTB_OBJ/arch/arm64/boot/dts/vendor/qcom/audio/oplus/benz-23061-audio-crow-overlay.dtbo
Merging overlay blob out/target/product/benz/obj/DTB_OBJ/arch/arm64/boot/dts/vendor/qcom/audio/oplus/benz-23061-audio-crow-overlay.dtbo
Merging overlay blob out/target/product/benz/obj/DTB_OBJ/arch/arm64/boot/dts/vendor/qcom/display/oplus/benz-23061-display-crow-overlay.dtbo
Reloading overlay blob out/target/product/benz/obj/DTB_OBJ/arch/arm64/boot/dts/vendor/qcom/display/oplus/benz-23061-display-crow-overlay.dtbo
Merging overlay blob out/target/product/benz/obj/DTB_OBJ/arch/arm64/boot/dts/vendor/qcom/display/oplus/benz-23061-display-crow-overlay.dtbo
Merging overlay blob out/target/product/benz/obj/DTB_OBJ/arch/arm64/boot/dts/vendor/qcom/camera/oplus/benz-camera-overlay.dtbo
Reloading overlay blob out/target/product/benz/obj/DTB_OBJ/arch/arm64/boot/dts/vendor/qcom/camera/oplus/benz-camera-overlay.dtbo
Merging overlay blob out/target/product/benz/obj/DTB_OBJ/arch/arm64/boot/dts/vendor/qcom/camera/oplus/benz-camera-overlay.dtbo
INFO: Saving to: benz-23871-crow-overlay-DVT1-23061-audio-23061-display-camera-0x46232744d57254d9.dtbo
Traceback (most recent call last):
  File "/sauce/los/vendor/lineage/build/tools/merge_dtbs.py", line 567, in
    main()
    ~~~~^^
  File "/sauce/los/vendor/lineage/build/tools/merge_dtbs.py", line 551, in main
    created.extend(dt.save(args.out))
    ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
  File "/sauce/los/vendor/lineage/build/tools/merge_dtbs.py", line 469, in save
    yield mdt.save(name, out_dir)
          ~~~~~~~~^^^^^^^^^^^^^^^
  File "/sauce/los/vendor/lineage/build/tools/merge_dtbs.py", line 361, in save
    assert not os.path.exists(out_file), "Cannot overwrite: {}".format(out_file)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: Cannot overwrite: out/target/product/benz/obj/DTB_OBJ/out/benz-23871-crow-overlay-DVT1-23061-audio-23061-display-camera-0x46232744d57254d9.dtbo

Change-Id: Ia7817e91da7bde1e3a4d577c3b45d5805b0b9938
Signed-off-by: inferno0230 <mail@inferno0230.in>
2025-09-09 10:00:51 +02:00
dianlujitao
165ebd3033 apns: Add BICS
Change-Id: I57a0be0c242a7d4b7c6498d56637095070c58a9e
2025-09-08 06:10:06 +00:00
Nick Reuter
03fac07fe7 build: Update rust toolchain dynamically
Change-Id: Iedcc0ebc7f42f65bd1b9578d92bf101f642dec7e
2025-09-06 15:10:53 -05:00
Nolen Johnson
785efb245c overlay: TV: Default to not showing bug-report quick setting
* This is ugly, and not needed at all in LineageOS builds.

Change-Id: Id22a1ad9b16943e850daa5c2ab2f332841bfc999
2025-08-28 19:53:57 -04:00
Nolen Johnson
154e308ad3 Ignore prebuilt/generated directory
* build-manifest dirties tree.

Change-Id: I4ae2888d991f294fcec389c7ea2c91e452c22814
2025-08-26 00:04:13 +00:00
Yumi Yukimura
309e9e54f5 lineage: Move build-manifest.xml build rule into build/tasks
* For Android.mk deprecation

Change-Id: I4aba949ae0af7674955d7a2c439d191348b41f3c
2025-08-25 15:12:04 +00:00
Yumi Yukimura
f6a79e8749 lineage: Restore Android.mk based build-manifest.xml build rule
Users don't like the increased delay during `. build/envsetup.sh` or `lunch`...

Change-Id: I1a92a171f2e2ec1ba2453d6c666cefcd9884b39b
2025-08-24 20:51:55 -04:00
LuK1337
5181cb5335 github: Run apt update
Change-Id: I9f6583705b2690cbd07b0c967bfbd9b454959345
2025-08-24 16:43:32 -04:00
Yumi Yukimura
b72f886b0c lineage: Move build-manifest.xml generation to a separate script
Change-Id: I68a13fdb47a034157a54ff5781c13b3fa17371d2
2025-08-20 21:07:33 +08:00
Yumi Yukimura
597f5344af fixup! lineage: Convert build-manifest.xml to Android.bp
Change-Id: Id527a8732e45ebb9d4ea3d634e85d5749436576a
2025-08-20 21:05:54 +08:00
Yumi Yukimura
b3e6f3ad7e charger: Convert to Android.bp
Change-Id: I6bc9e33545942cc9c7a320e44d625a724ed4ae53
2025-08-18 19:26:28 +00:00
Yumi Yukimura
3b29ed3826 bootanimation: Convert to Android.bp
Change-Id: Id82308522c3cf25d2fb89a1a18b78191c89c4931
2025-08-18 19:26:28 +00:00
Yumi Yukimura
2d4dffd4e3 lineage: Convert build-manifest.xml to Android.bp
Change-Id: I2c629fc33af93232050834ac347674e7bb7cd8be
2025-08-18 19:26:28 +00:00
Bruno Martins
6d29d0ca7b config: Remove LiveDisplay HIDL from FCM
Change-Id: I5da719688fa5c552a18beeba05ef3878848932d2
2025-08-18 19:21:25 +00:00
Michael Bestas
b1056527de config: Remove fastcharge HIDL from FCM
Change-Id: I12a46912d1e1801975e8ee852475ac9f26154acc
2025-08-18 19:21:25 +00:00
LuK1337
d52e9945f4 config: Add vendor.lineage.livedisplay V1
Change-Id: I4542f8be12198e8dac1893aae892315b67fb0f1b
2025-08-18 19:21:25 +00:00
Yumi Yukimura
c0b4337f25 config: Use a more accurate approach to locate device makefile for EPPE
* This approach should cover Pixel device trees where the name of
  3rd level directory differs from the device codename

Change-Id: I5fe9390482259b0e7d53130aae0e5a66bc310983
2025-08-18 15:14:27 +00:00
Onelots
94968e736c APNs: Add Inwi (Morocco)
- Adds Inwi internet APN and Inwi MMS
- Got the config from a local's phone (So I was able to test myself)
- Made sure it was correct using this website : https://www.apnsettings.org/morocco/inwi-ma/

Change-Id: Ie98bb2e9886cd7cc8546d78cb178ce0695be255c
Signed-off-by: Onelots <onelots@onelots.fr>
2025-08-17 20:43:26 +02:00
LuK1337
b9bca14083 kernel: Introduce macros for comparing versions and make use of them
Change-Id: Ie7debfea218117987f7e9588a71447061db08416
2025-08-17 17:45:37 +02:00
Michael Bestas
305124a48f release: Bump Security String to 2025-08-01
Implemented:
============
None

Previously Implemented:
================
CVE:            References:    Type:  Severity:  Updated AOSP versions:
CVE-2025-48530  A-419563680    RCE    Critical   16
CVE-2025-48533  A-383131643    EoP    High       13, 14, 15, 16

Not Implemented:
================
None

Not Applicable (platform source):
=================================
CVE:            References:    Type:  Severity:  Updated AOSP versions:
CVE-2025-22441  A-376028556    EoP    High       13, 14, 15

Change-Id: I89f24b386869540e6279bb185c36662c77e0437f
2025-08-13 03:31:34 +00:00
Michael Bestas
1ab1a74752 vars: August 2025 Security Update
Change-Id: I6289a65be823d0d674710d4da39c919b29abbddb
2025-08-12 19:02:02 +00:00
LuK1337
a3cc137fa1 Reapply "lineage: Add framework compatibility matrix for Lineage HALs"
It's time to fix your devices.

This reverts commit 9887e1f751.

Change-Id: I78da6340f38b93fdc4c3694cb8f431f387d16c0d
2025-08-09 11:09:16 +02:00
Yannick Binnenweg
69945d6306 Update APN settings for Odido/T-Mobile NL
This change includes:
- Name change from T-Mobile NL to Odido. In 2023 T-Mobile and Tele2
  Mobile became Odido.
- Removed unusable MMS APN configuration. As a response to the Android
  Stagefright bug T-Mobile NL disabled MMS on the network back in 2015.
  Because MMS is no longer supported on the network, the APN profile is
  no longer necessary.
- Changes the default APN from "internet" to "internet.mobiel", which is
  the recommended default setting.
  On the Odido network the "internet" APN is specifically for 'gaming' usage.
  Reference: https://www.odido.nl/service/veelgestelde-vragen/hoe-moet-ik-internet-instellen-op-mijn-smartphone-wat-is-bijvoorbeeld-het-apn-van-odido/000453837
- Adds a new APN profile for 'gaming' usage. See reference above.

Change-Id: I139231102ece45f9a4142f3be2d747276f60de76
2025-08-04 18:05:15 +00:00
LuK1337
fd1f593ac8 build: Make {aosp,clo}remote work when not in the root dir of the repo
Change-Id: I59dcfb7a7c50ad5ae70b3823cea50b3cbf4671d6
2025-07-30 21:46:20 +00:00
Michael Bestas
fa5799928e build: Drop VARIANT_DEFCONFIG/SELINUX_DEFCONFIG support
This has been unused for a long time and any users that mistakenly use
this should migrate to defconfig fragments.

Change-Id: I70f1aa82e3adcbf85b11e8685f188d0eadfff2e3
2025-07-30 14:03:05 +00:00
Michael Bestas
46fea3f955 build: Drop separate recovery kernel support
Last users were in lineage-18.1, build side is no longer being ported.

Change-Id: I091498ab3536eeb050511d71cc37373f6a77486d
2025-07-30 14:03:05 +00:00
Michael Bestas
ca679dc6ee release: Remove no longer used Pixel flags
Change-Id: Ia4e03a0c4c47a72cf4116f7344846ccc9b37c3ab
2025-07-30 03:07:13 +03:00
Alexander Koskovich
47a3088f3e apns: Update US Mobile APNs
https://www.usmobile.com/apn-download

Change-Id: I5cd4a1023f08af0f820ee99fb41ededf5d33ae7a
2025-07-29 22:45:19 +00:00
Alexander Koskovich
b3a50f2fa3 apns: Add AT&T 5G NSA & SA APNs (310|410) from att5g[sa]_us-64000000006
Change-Id: I95a30f45dacc6c4c470919e2fd7dee110ee0d407
2025-07-26 19:27:45 +00:00
LuK1337
090431803b Revert "soong: Make mkdir install dir optional"
This reverts commit ff19773ea4.

Change-Id: Ia701f07eaabbf33098434ea2e4851d9ba5cdaff6
2025-07-26 10:51:22 +02:00
Marc Bourgoin
a69dfb14b0 apns-conf: Update carriers from the Philippines
Mabuhay!

This also adds DITO Telecommunity and Red Internet

Taken from Xiaomi 14 Pro (shennong) A15 stock ROM

I removed read_only ="true" from two entries as it is not allowed

Change-Id: I93f97fc9220e648f2e37cda11822af64b3d37612
2025-07-25 18:22:57 +00:00
Alexander Koskovich
39d7fefa98 apns: Update Verizon (311|480) from verizon_us-64000000022
Change-Id: Ia7643b92b77caa186c090e123fc0771d022ba729
2025-07-25 09:55:14 -04:00
Alexander Koskovich
69dee3f816 apns: Update Xfinity Mobile MVNO (311|480) from xfinity_us-64000000012
Change-Id: Ia5f7324ce88bf4983b1f12b7247cee2a9103f076
2025-07-25 09:55:10 -04:00
Alexander Koskovich
64537566cd Add mvno_match_data to StraightTalk Verizon
Required so the APN doesn't show up on the main carrier, not even sure
if this is really used anymore either since Google stopped shipping it
in CarrierSettings.

Change-Id: Ibb5b3a63638b641fa781c2bc5e9445e6d71f19f5
2025-07-25 09:55:06 -04:00
Yumi Yukimura
e41ae16190 kernel: Fix building x86 kernel with GCC
Change-Id: Ib1097d604776adc63c31b90cec9a0d13729248be
2025-07-22 20:27:25 +00:00
Yumi Yukimura
c8ecd22e78 kernel: Sign kernel modules only if CONFIG_MODULE_SIG_FORMAT=y
Change-Id: If8ef12f2b751390fc1689edb551379ca2e4e78be
2025-07-22 20:27:25 +00:00
Yumi Yukimura
8c6507739f kernel: Fix build when device does not set BOARD_SYSTEM_KERNEL_MODULES_LOAD
... but sets SYSTEM_KERNEL_MODULES

build/make lets BOARD_SYSTEM_KERNEL_MODULES_LOAD default to false
when it's unset.

Change-Id: I581da33bf0321f171aa6a20bdb023e1ee824cb18
2025-07-22 20:27:25 +00:00
Yumi Yukimura
56ed3854d0 kernel: Support installing kernel modules to system
* Example usecase: Installing zram.ko on devices without system_dlkm

Change-Id: I3afe358bcd444f7c3724e5682d4056fe52cfeea9
2025-07-22 20:27:25 +00:00
Yumi Yukimura
2bd07a47f9 kernel: Add support for external kernel configs (v2)
For targets that uses mainline kernel, the kernel tree usually only
contains configs on top of the upstream repository.

In such case, if we put the configs in elsewhere, we can simply just
track the upstream kernel repo, without needing to import configs.

Example usage:

TARGET_KERNEL_CONFIG_EXT := \
    $(COMMON_PATH)/kconfig/platform_defconfig \
    $(COMMON_PATH)/kconfig/common-addons.config

TARGET_KERNEL_CONFIG_EXT += \
    $(DEVICE_PATH)/kconfig/device.config

Change-Id: Ibafd0afa7ec06df643ba290a6149a4f0781d67fb
2025-07-22 20:27:25 +00:00
Yumi Yukimura
751388dd9f kernel: Enhancements to searching DTBs during non-QCOM DTB image generation
* Allow wildcard pattern
* Support searching in specified directory
* Add variable that accepts a list of such patterns

Change-Id: I35da8ed19447b4ab69142152d7dc8e60bc55bf14
2025-07-22 20:27:25 +00:00
Yumi Yukimura
8d9c8c02be overlay: tablet: Enable config_canInternalDisplayHostDesktops
Change-Id: I1981c56fbc024f045ea78331c902acf4657e779b
2025-07-22 20:27:25 +00:00
Yumi Yukimura
205806ca0a overlay: tablet: Update lockscreen widget feature config for 16
Change-Id: I3bc174a6e5e1f15cca0ef60a992f925b587bb092
2025-07-22 20:27:25 +00:00
Aaron Kling
089fa84926 common: Allow vendors to exclude bp paths
This resolves a couple issues. Allowing bp's that don't resolve to be
in-tree. And allowing multiple copies of the same target.

Change-Id: I85cfc566e18ea9fe1cb4cd8d70a71ef80517fd41
2025-07-22 06:01:23 +00:00
Michael Bestas
a356ad6920 build: Move qti_kernel_headers to hardware/qcom-caf/common
Change-Id: I09403ac6799adce970a289136dcbab4703f20b84
2025-07-20 19:42:46 +03:00
Michael Bestas
91f3650ea4 release: Bump Security String to 2025-07-01
Implemented:
============
None

Previously Implemented:
================
None

Not Implemented:
================
None

Not Applicable (platform source):
=================================
None

Change-Id: I3c74f379736989a4d9aec416fe8e9325284a0892
2025-07-11 04:31:50 +00:00
Michael Bestas
f4fe7704c8 release: Update SVN from BP2A.250705.008
Change-Id: I7a10e01a03f634f517a5421062ec9926ecf2e249
2025-07-11 04:31:50 +00:00
Michael Bestas
54fe338b09 vars: July 2025 "Security update"
Change-Id: I36fcc9c4952d1cd34368ee2b42816ba08029b29d
2025-07-11 04:31:50 +00:00
PixelThrived
2acacf2c29 apns-conf: Remove deprecated Cosmote Romania entries
Cosmote Romania was officially rebranded as Telekom Romania in 2014. The legacy APNs serve no functional purpose and may interfere with correct network configurations.

On LineageOS, defunct Cosmote APNs are selected by default, preventing mobile data from working out-of-the-box for Telekom Romania users.

This commit also removes MCC 226 / MNC 06 entries, which are no longer allocated according to mcc-mnc.com.

Change-Id: I1fbd563e8973aaf590ba7fee8ac4ebb6140649e4
2025-07-07 12:54:27 +00:00
Cosmin Tanislav
7d2705e2e7 merge_dtbs: allow one overlay to depend on multiple others
Some overlays might depend on multiple other overlays, remove this check
to allow it to happen.

Change-Id: Ib60c194fb4c0cfef02233da6539da61fa387f428
2025-07-07 11:30:05 +00:00
281 changed files with 3544 additions and 5385 deletions

View File

@@ -6,11 +6,7 @@ runs:
steps:
- name: Install dependencies
shell: bash
run: sudo apt -y install libxml2-utils
- name: Validate apns-conf.xml
shell: bash
run: xmllint --noout --schema ./tools/apns-conf.xsd ./prebuilt/common/etc/apns-conf.xml
run: sudo apt update && sudo apt -y install libxml2-utils
- name: Validate sensitive_pn.xml
shell: bash

1
.gitignore vendored
View File

@@ -1,2 +1,3 @@
proprietary/*
prebuilt/archive
prebuilt/generated/*

View File

@@ -1,26 +1,2 @@
LineageOS
Evolution X
===========
Getting started
---------------
Please see the [LineageOS Wiki](https://wiki.lineageos.org/) for building instructions, by device.
Submitting patches
------------------
Patches are always welcome! Please submit your patches via LineageOS Gerrit!
Simply follow our guide on [how to submit patches](https://wiki.lineageos.org/submitting-patch-howto.html).
To view the status of your and others' patches, visit [LineageOS Gerrit Code Review](https://review.lineageos.org/).
Buildbot
--------
All supported devices are built weekly and periodically as changes are committed to ensure the source trees remain buildable.
You can view the current build statuses at [LineageOS Buildkite](https://buildkite.com/lineageos).
Builds produced weekly by the buildbot can be downloaded from [LineageOS downloads](https://download.lineageos.org/).

992
audio/NOTICE Normal file
View File

@@ -0,0 +1,992 @@
Plasma Mobile Sounds
Source: https://invent.kde.org/devinlin/plasma-mobile-sounds/-/tree/master
Various licenses: CC0, CC BY 4.0, CC BY-SA 4.0
License for each sound:
| Sound | Type | License | Author |
| ------------------------ | -------------- | ------------ | ------------- |
| Arp | Ringtone/Alarm | CC BY 4.0 | Shell Raiser
| Crunch | Ringtone/Alarm | CC BY 4.0 | Neyrax
| Elevated | Ringtone/Alarm | CC BY-SA 4.0 | nesdood007
| Errand | Ringtone/Alarm | CC BY 4.0 | Axel Lopez
| Gentle | Ringtone/Alarm | CC BY 4.0 | Derek Lin
| Glazed | Ringtone/Alarm | CC0 | Ivan Kiselyov
| Lightly | Ringtone/Alarm | CC0 | Ivan Kiselyov
| Machine | Ringtone/Alarm | CC BY 4.0 | Neyrax
| Miniature | Ringtone/Alarm | CC0 | Ivan Kiselyov
| Morning Rush | Ringtone/Alarm | CC BY 4.0 | Neyrax
| Nightlights | Ringtone/Alarm | CC BY-SA 4.0 | nesdood007
| On The Way | Ringtone/Alarm | CC0 | Ivan Kiselyov
| Progressive | Ringtone/Alarm | CC BY 4.0 | Neyrax
| Revelation | Ringtone/Alarm | CC BY-SA 4.0 | nesdood007
| Slowly | Ringtone/Alarm | CC BY-SA 4.0 | kde-qnebra
| Spatial | Ringtone/Alarm | CC BY 4.0 | Axel Lopez
| Unfamiliar | Ringtone/Alarm | CC BY 4.0 | Shell Raiser
| Wink | Ringtone/Alarm | CC BY 4.0 | Derek Lin
| Wubstep | Ringtone/Alarm | CC BY 4.0 | Axel Lopez
| Awaken | Notification | CC0 | Ivan Kiselyov
| Blip | Notification | CC BY 4.0 | Axel Lopez
| Doorbell | Notification | CC0 | Ivan Kiselyov
CC0 license text:
Creative Commons Legal Code
CC0 1.0 Universal
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
HEREUNDER.
Statement of Purpose
The laws of most jurisdictions throughout the world automatically confer
exclusive Copyright and Related Rights (defined below) upon the creator
and subsequent owner(s) (each and all, an "owner") of an original work of
authorship and/or a database (each, a "Work").
Certain owners wish to permanently relinquish those rights to a Work for
the purpose of contributing to a commons of creative, cultural and
scientific works ("Commons") that the public can reliably and without fear
of later claims of infringement build upon, modify, incorporate in other
works, reuse and redistribute as freely as possible in any form whatsoever
and for any purposes, including without limitation commercial purposes.
These owners may contribute to the Commons to promote the ideal of a free
culture and the further production of creative, cultural and scientific
works, or to gain reputation or greater distribution for their Work in
part through the use and efforts of others.
For these and/or other purposes and motivations, and without any
expectation of additional consideration or compensation, the person
associating CC0 with a Work (the "Affirmer"), to the extent that he or she
is an owner of Copyright and Related Rights in the Work, voluntarily
elects to apply CC0 to the Work and publicly distribute the Work under its
terms, with knowledge of his or her Copyright and Related Rights in the
Work and the meaning and intended legal effect of CC0 on those rights.
1. Copyright and Related Rights. A Work made available under CC0 may be
protected by copyright and related or neighboring rights ("Copyright and
Related Rights"). Copyright and Related Rights include, but are not
limited to, the following:
i. the right to reproduce, adapt, distribute, perform, display,
communicate, and translate a Work;
ii. moral rights retained by the original author(s) and/or performer(s);
iii. publicity and privacy rights pertaining to a person's image or
likeness depicted in a Work;
iv. rights protecting against unfair competition in regards to a Work,
subject to the limitations in paragraph 4(a), below;
v. rights protecting the extraction, dissemination, use and reuse of data
in a Work;
vi. database rights (such as those arising under Directive 96/9/EC of the
European Parliament and of the Council of 11 March 1996 on the legal
protection of databases, and under any national implementation
thereof, including any amended or successor version of such
directive); and
vii. other similar, equivalent or corresponding rights throughout the
world based on applicable law or treaty, and any national
implementations thereof.
2. Waiver. To the greatest extent permitted by, but not in contravention
of, applicable law, Affirmer hereby overtly, fully, permanently,
irrevocably and unconditionally waives, abandons, and surrenders all of
Affirmer's Copyright and Related Rights and associated claims and causes
of action, whether now known or unknown (including existing as well as
future claims and causes of action), in the Work (i) in all territories
worldwide, (ii) for the maximum duration provided by applicable law or
treaty (including future time extensions), (iii) in any current or future
medium and for any number of copies, and (iv) for any purpose whatsoever,
including without limitation commercial, advertising or promotional
purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
member of the public at large and to the detriment of Affirmer's heirs and
successors, fully intending that such Waiver shall not be subject to
revocation, rescission, cancellation, termination, or any other legal or
equitable action to disrupt the quiet enjoyment of the Work by the public
as contemplated by Affirmer's express Statement of Purpose.
3. Public License Fallback. Should any part of the Waiver for any reason
be judged legally invalid or ineffective under applicable law, then the
Waiver shall be preserved to the maximum extent permitted taking into
account Affirmer's express Statement of Purpose. In addition, to the
extent the Waiver is so judged Affirmer hereby grants to each affected
person a royalty-free, non transferable, non sublicensable, non exclusive,
irrevocable and unconditional license to exercise Affirmer's Copyright and
Related Rights in the Work (i) in all territories worldwide, (ii) for the
maximum duration provided by applicable law or treaty (including future
time extensions), (iii) in any current or future medium and for any number
of copies, and (iv) for any purpose whatsoever, including without
limitation commercial, advertising or promotional purposes (the
"License"). The License shall be deemed effective as of the date CC0 was
applied by Affirmer to the Work. Should any part of the License for any
reason be judged legally invalid or ineffective under applicable law, such
partial invalidity or ineffectiveness shall not invalidate the remainder
of the License, and in such case Affirmer hereby affirms that he or she
will not (i) exercise any of his or her remaining Copyright and Related
Rights in the Work or (ii) assert any associated claims and causes of
action with respect to the Work, in either case contrary to Affirmer's
express Statement of Purpose.
4. Limitations and Disclaimers.
a. No trademark or patent rights held by Affirmer are waived, abandoned,
surrendered, licensed or otherwise affected by this document.
b. Affirmer offers the Work as-is and makes no representations or
warranties of any kind concerning the Work, express, implied,
statutory or otherwise, including without limitation warranties of
title, merchantability, fitness for a particular purpose, non
infringement, or the absence of latent or other defects, accuracy, or
the present or absence of errors, whether or not discoverable, all to
the greatest extent permissible under applicable law.
c. Affirmer disclaims responsibility for clearing rights of other persons
that may apply to the Work or any use thereof, including without
limitation any person's Copyright and Related Rights in the Work.
Further, Affirmer disclaims responsibility for obtaining any necessary
consents, permissions or other rights required for any use of the
Work.
d. Affirmer understands and acknowledges that Creative Commons is not a
party to this document and has no duty or obligation with respect to
this CC0 or use of the Work.
CC BY 4.0 license text:
Attribution 4.0 International
=======================================================================
Creative Commons Corporation ("Creative Commons") is not a law firm and
does not provide legal services or legal advice. Distribution of
Creative Commons public licenses does not create a lawyer-client or
other relationship. Creative Commons makes its licenses and related
information available on an "as-is" basis. Creative Commons gives no
warranties regarding its licenses, any material licensed under their
terms and conditions, or any related information. Creative Commons
disclaims all liability for damages resulting from their use to the
fullest extent possible.
Using Creative Commons Public Licenses
Creative Commons public licenses provide a standard set of terms and
conditions that creators and other rights holders may use to share
original works of authorship and other material subject to copyright
and certain other rights specified in the public license below. The
following considerations are for informational purposes only, are not
exhaustive, and do not form part of our licenses.
Considerations for licensors: Our public licenses are
intended for use by those authorized to give the public
permission to use material in ways otherwise restricted by
copyright and certain other rights. Our licenses are
irrevocable. Licensors should read and understand the terms
and conditions of the license they choose before applying it.
Licensors should also secure all rights necessary before
applying our licenses so that the public can reuse the
material as expected. Licensors should clearly mark any
material not subject to the license. This includes other CC-
licensed material, or material used under an exception or
limitation to copyright. More considerations for licensors:
wiki.creativecommons.org/Considerations_for_licensors
Considerations for the public: By using one of our public
licenses, a licensor grants the public permission to use the
licensed material under specified terms and conditions. If
the licensor's permission is not necessary for any reason--for
example, because of any applicable exception or limitation to
copyright--then that use is not regulated by the license. Our
licenses grant only permissions under copyright and certain
other rights that a licensor has authority to grant. Use of
the licensed material may still be restricted for other
reasons, including because others have copyright or other
rights in the material. A licensor may make special requests,
such as asking that all changes be marked or described.
Although not required by our licenses, you are encouraged to
respect those requests where reasonable. More considerations
for the public:
wiki.creativecommons.org/Considerations_for_licensees
=======================================================================
Creative Commons Attribution 4.0 International Public License
By exercising the Licensed Rights (defined below), You accept and agree
to be bound by the terms and conditions of this Creative Commons
Attribution 4.0 International Public License ("Public License"). To the
extent this Public License may be interpreted as a contract, You are
granted the Licensed Rights in consideration of Your acceptance of
these terms and conditions, and the Licensor grants You such rights in
consideration of benefits the Licensor receives from making the
Licensed Material available under these terms and conditions.
Section 1 -- Definitions.
a. Adapted Material means material subject to Copyright and Similar
Rights that is derived from or based upon the Licensed Material
and in which the Licensed Material is translated, altered,
arranged, transformed, or otherwise modified in a manner requiring
permission under the Copyright and Similar Rights held by the
Licensor. For purposes of this Public License, where the Licensed
Material is a musical work, performance, or sound recording,
Adapted Material is always produced where the Licensed Material is
synched in timed relation with a moving image.
b. Adapter's License means the license You apply to Your Copyright
and Similar Rights in Your contributions to Adapted Material in
accordance with the terms and conditions of this Public License.
c. Copyright and Similar Rights means copyright and/or similar rights
closely related to copyright including, without limitation,
performance, broadcast, sound recording, and Sui Generis Database
Rights, without regard to how the rights are labeled or
categorized. For purposes of this Public License, the rights
specified in Section 2(b)(1)-(2) are not Copyright and Similar
Rights.
d. Effective Technological Measures means those measures that, in the
absence of proper authority, may not be circumvented under laws
fulfilling obligations under Article 11 of the WIPO Copyright
Treaty adopted on December 20, 1996, and/or similar international
agreements.
e. Exceptions and Limitations means fair use, fair dealing, and/or
any other exception or limitation to Copyright and Similar Rights
that applies to Your use of the Licensed Material.
f. Licensed Material means the artistic or literary work, database,
or other material to which the Licensor applied this Public
License.
g. Licensed Rights means the rights granted to You subject to the
terms and conditions of this Public License, which are limited to
all Copyright and Similar Rights that apply to Your use of the
Licensed Material and that the Licensor has authority to license.
h. Licensor means the individual(s) or entity(ies) granting rights
under this Public License.
i. Share means to provide material to the public by any means or
process that requires permission under the Licensed Rights, such
as reproduction, public display, public performance, distribution,
dissemination, communication, or importation, and to make material
available to the public including in ways that members of the
public may access the material from a place and at a time
individually chosen by them.
j. Sui Generis Database Rights means rights other than copyright
resulting from Directive 96/9/EC of the European Parliament and of
the Council of 11 March 1996 on the legal protection of databases,
as amended and/or succeeded, as well as other essentially
equivalent rights anywhere in the world.
k. You means the individual or entity exercising the Licensed Rights
under this Public License. Your has a corresponding meaning.
Section 2 -- Scope.
a. License grant.
1. Subject to the terms and conditions of this Public License,
the Licensor hereby grants You a worldwide, royalty-free,
non-sublicensable, non-exclusive, irrevocable license to
exercise the Licensed Rights in the Licensed Material to:
a. reproduce and Share the Licensed Material, in whole or
in part; and
b. produce, reproduce, and Share Adapted Material.
2. Exceptions and Limitations. For the avoidance of doubt, where
Exceptions and Limitations apply to Your use, this Public
License does not apply, and You do not need to comply with
its terms and conditions.
3. Term. The term of this Public License is specified in Section
6(a).
4. Media and formats; technical modifications allowed. The
Licensor authorizes You to exercise the Licensed Rights in
all media and formats whether now known or hereafter created,
and to make technical modifications necessary to do so. The
Licensor waives and/or agrees not to assert any right or
authority to forbid You from making technical modifications
necessary to exercise the Licensed Rights, including
technical modifications necessary to circumvent Effective
Technological Measures. For purposes of this Public License,
simply making modifications authorized by this Section 2(a)
(4) never produces Adapted Material.
5. Downstream recipients.
a. Offer from the Licensor -- Licensed Material. Every
recipient of the Licensed Material automatically
receives an offer from the Licensor to exercise the
Licensed Rights under the terms and conditions of this
Public License.
b. No downstream restrictions. You may not offer or impose
any additional or different terms or conditions on, or
apply any Effective Technological Measures to, the
Licensed Material if doing so restricts exercise of the
Licensed Rights by any recipient of the Licensed
Material.
6. No endorsement. Nothing in this Public License constitutes or
may be construed as permission to assert or imply that You
are, or that Your use of the Licensed Material is, connected
with, or sponsored, endorsed, or granted official status by,
the Licensor or others designated to receive attribution as
provided in Section 3(a)(1)(A)(i).
b. Other rights.
1. Moral rights, such as the right of integrity, are not
licensed under this Public License, nor are publicity,
privacy, and/or other similar personality rights; however, to
the extent possible, the Licensor waives and/or agrees not to
assert any such rights held by the Licensor to the limited
extent necessary to allow You to exercise the Licensed
Rights, but not otherwise.
2. Patent and trademark rights are not licensed under this
Public License.
3. To the extent possible, the Licensor waives any right to
collect royalties from You for the exercise of the Licensed
Rights, whether directly or through a collecting society
under any voluntary or waivable statutory or compulsory
licensing scheme. In all other cases the Licensor expressly
reserves any right to collect such royalties.
Section 3 -- License Conditions.
Your exercise of the Licensed Rights is expressly made subject to the
following conditions.
a. Attribution.
1. If You Share the Licensed Material (including in modified
form), You must:
a. retain the following if it is supplied by the Licensor
with the Licensed Material:
i. identification of the creator(s) of the Licensed
Material and any others designated to receive
attribution, in any reasonable manner requested by
the Licensor (including by pseudonym if
designated);
ii. a copyright notice;
iii. a notice that refers to this Public License;
iv. a notice that refers to the disclaimer of
warranties;
v. a URI or hyperlink to the Licensed Material to the
extent reasonably practicable;
b. indicate if You modified the Licensed Material and
retain an indication of any previous modifications; and
c. indicate the Licensed Material is licensed under this
Public License, and include the text of, or the URI or
hyperlink to, this Public License.
2. You may satisfy the conditions in Section 3(a)(1) in any
reasonable manner based on the medium, means, and context in
which You Share the Licensed Material. For example, it may be
reasonable to satisfy the conditions by providing a URI or
hyperlink to a resource that includes the required
information.
3. If requested by the Licensor, You must remove any of the
information required by Section 3(a)(1)(A) to the extent
reasonably practicable.
4. If You Share Adapted Material You produce, the Adapter's
License You apply must not prevent recipients of the Adapted
Material from complying with this Public License.
Section 4 -- Sui Generis Database Rights.
Where the Licensed Rights include Sui Generis Database Rights that
apply to Your use of the Licensed Material:
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
to extract, reuse, reproduce, and Share all or a substantial
portion of the contents of the database;
b. if You include all or a substantial portion of the database
contents in a database in which You have Sui Generis Database
Rights, then the database in which You have Sui Generis Database
Rights (but not its individual contents) is Adapted Material; and
c. You must comply with the conditions in Section 3(a) if You Share
all or a substantial portion of the contents of the database.
For the avoidance of doubt, this Section 4 supplements and does not
replace Your obligations under this Public License where the Licensed
Rights include other Copyright and Similar Rights.
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
c. The disclaimer of warranties and limitation of liability provided
above shall be interpreted in a manner that, to the extent
possible, most closely approximates an absolute disclaimer and
waiver of all liability.
Section 6 -- Term and Termination.
a. This Public License applies for the term of the Copyright and
Similar Rights licensed here. However, if You fail to comply with
this Public License, then Your rights under this Public License
terminate automatically.
b. Where Your right to use the Licensed Material has terminated under
Section 6(a), it reinstates:
1. automatically as of the date the violation is cured, provided
it is cured within 30 days of Your discovery of the
violation; or
2. upon express reinstatement by the Licensor.
For the avoidance of doubt, this Section 6(b) does not affect any
right the Licensor may have to seek remedies for Your violations
of this Public License.
c. For the avoidance of doubt, the Licensor may also offer the
Licensed Material under separate terms or conditions or stop
distributing the Licensed Material at any time; however, doing so
will not terminate this Public License.
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
License.
Section 7 -- Other Terms and Conditions.
a. The Licensor shall not be bound by any additional or different
terms or conditions communicated by You unless expressly agreed.
b. Any arrangements, understandings, or agreements regarding the
Licensed Material not stated herein are separate from and
independent of the terms and conditions of this Public License.
Section 8 -- Interpretation.
a. For the avoidance of doubt, this Public License does not, and
shall not be interpreted to, reduce, limit, restrict, or impose
conditions on any use of the Licensed Material that could lawfully
be made without permission under this Public License.
b. To the extent possible, if any provision of this Public License is
deemed unenforceable, it shall be automatically reformed to the
minimum extent necessary to make it enforceable. If the provision
cannot be reformed, it shall be severed from this Public License
without affecting the enforceability of the remaining terms and
conditions.
c. No term or condition of this Public License will be waived and no
failure to comply consented to unless expressly agreed to by the
Licensor.
d. Nothing in this Public License constitutes or may be interpreted
as a limitation upon, or waiver of, any privileges and immunities
that apply to the Licensor or You, including from the legal
processes of any jurisdiction or authority.
=======================================================================
Creative Commons is not a party to its public
licenses. Notwithstanding, Creative Commons may elect to apply one of
its public licenses to material it publishes and in those instances
will be considered the “Licensor.” The text of the Creative Commons
public licenses is dedicated to the public domain under the CC0 Public
Domain Dedication. Except for the limited purpose of indicating that
material is shared under a Creative Commons public license or as
otherwise permitted by the Creative Commons policies published at
creativecommons.org/policies, Creative Commons does not authorize the
use of the trademark "Creative Commons" or any other trademark or logo
of Creative Commons without its prior written consent including,
without limitation, in connection with any unauthorized modifications
to any of its public licenses or any other arrangements,
understandings, or agreements concerning use of licensed material. For
the avoidance of doubt, this paragraph does not form part of the
public licenses.
Creative Commons may be contacted at creativecommons.org.
CC BY-SA 4.0 license text:
Attribution-NonCommercial-ShareAlike 4.0 International
=======================================================================
Creative Commons Corporation ("Creative Commons") is not a law firm and
does not provide legal services or legal advice. Distribution of
Creative Commons public licenses does not create a lawyer-client or
other relationship. Creative Commons makes its licenses and related
information available on an "as-is" basis. Creative Commons gives no
warranties regarding its licenses, any material licensed under their
terms and conditions, or any related information. Creative Commons
disclaims all liability for damages resulting from their use to the
fullest extent possible.
Using Creative Commons Public Licenses
Creative Commons public licenses provide a standard set of terms and
conditions that creators and other rights holders may use to share
original works of authorship and other material subject to copyright
and certain other rights specified in the public license below. The
following considerations are for informational purposes only, are not
exhaustive, and do not form part of our licenses.
Considerations for licensors: Our public licenses are
intended for use by those authorized to give the public
permission to use material in ways otherwise restricted by
copyright and certain other rights. Our licenses are
irrevocable. Licensors should read and understand the terms
and conditions of the license they choose before applying it.
Licensors should also secure all rights necessary before
applying our licenses so that the public can reuse the
material as expected. Licensors should clearly mark any
material not subject to the license. This includes other CC-
licensed material, or material used under an exception or
limitation to copyright. More considerations for licensors:
wiki.creativecommons.org/Considerations_for_licensors
Considerations for the public: By using one of our public
licenses, a licensor grants the public permission to use the
licensed material under specified terms and conditions. If
the licensor's permission is not necessary for any reason--for
example, because of any applicable exception or limitation to
copyright--then that use is not regulated by the license. Our
licenses grant only permissions under copyright and certain
other rights that a licensor has authority to grant. Use of
the licensed material may still be restricted for other
reasons, including because others have copyright or other
rights in the material. A licensor may make special requests,
such as asking that all changes be marked or described.
Although not required by our licenses, you are encouraged to
respect those requests where reasonable. More considerations
for the public:
wiki.creativecommons.org/Considerations_for_licensees
=======================================================================
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International
Public License
By exercising the Licensed Rights (defined below), You accept and agree
to be bound by the terms and conditions of this Creative Commons
Attribution-NonCommercial-ShareAlike 4.0 International Public License
("Public License"). To the extent this Public License may be
interpreted as a contract, You are granted the Licensed Rights in
consideration of Your acceptance of these terms and conditions, and the
Licensor grants You such rights in consideration of benefits the
Licensor receives from making the Licensed Material available under
these terms and conditions.
Section 1 -- Definitions.
a. Adapted Material means material subject to Copyright and Similar
Rights that is derived from or based upon the Licensed Material
and in which the Licensed Material is translated, altered,
arranged, transformed, or otherwise modified in a manner requiring
permission under the Copyright and Similar Rights held by the
Licensor. For purposes of this Public License, where the Licensed
Material is a musical work, performance, or sound recording,
Adapted Material is always produced where the Licensed Material is
synched in timed relation with a moving image.
b. Adapter's License means the license You apply to Your Copyright
and Similar Rights in Your contributions to Adapted Material in
accordance with the terms and conditions of this Public License.
c. BY-NC-SA Compatible License means a license listed at
creativecommons.org/compatiblelicenses, approved by Creative
Commons as essentially the equivalent of this Public License.
d. Copyright and Similar Rights means copyright and/or similar rights
closely related to copyright including, without limitation,
performance, broadcast, sound recording, and Sui Generis Database
Rights, without regard to how the rights are labeled or
categorized. For purposes of this Public License, the rights
specified in Section 2(b)(1)-(2) are not Copyright and Similar
Rights.
e. Effective Technological Measures means those measures that, in the
absence of proper authority, may not be circumvented under laws
fulfilling obligations under Article 11 of the WIPO Copyright
Treaty adopted on December 20, 1996, and/or similar international
agreements.
f. Exceptions and Limitations means fair use, fair dealing, and/or
any other exception or limitation to Copyright and Similar Rights
that applies to Your use of the Licensed Material.
g. License Elements means the license attributes listed in the name
of a Creative Commons Public License. The License Elements of this
Public License are Attribution, NonCommercial, and ShareAlike.
h. Licensed Material means the artistic or literary work, database,
or other material to which the Licensor applied this Public
License.
i. Licensed Rights means the rights granted to You subject to the
terms and conditions of this Public License, which are limited to
all Copyright and Similar Rights that apply to Your use of the
Licensed Material and that the Licensor has authority to license.
j. Licensor means the individual(s) or entity(ies) granting rights
under this Public License.
k. NonCommercial means not primarily intended for or directed towards
commercial advantage or monetary compensation. For purposes of
this Public License, the exchange of the Licensed Material for
other material subject to Copyright and Similar Rights by digital
file-sharing or similar means is NonCommercial provided there is
no payment of monetary compensation in connection with the
exchange.
l. Share means to provide material to the public by any means or
process that requires permission under the Licensed Rights, such
as reproduction, public display, public performance, distribution,
dissemination, communication, or importation, and to make material
available to the public including in ways that members of the
public may access the material from a place and at a time
individually chosen by them.
m. Sui Generis Database Rights means rights other than copyright
resulting from Directive 96/9/EC of the European Parliament and of
the Council of 11 March 1996 on the legal protection of databases,
as amended and/or succeeded, as well as other essentially
equivalent rights anywhere in the world.
n. You means the individual or entity exercising the Licensed Rights
under this Public License. Your has a corresponding meaning.
Section 2 -- Scope.
a. License grant.
1. Subject to the terms and conditions of this Public License,
the Licensor hereby grants You a worldwide, royalty-free,
non-sublicensable, non-exclusive, irrevocable license to
exercise the Licensed Rights in the Licensed Material to:
a. reproduce and Share the Licensed Material, in whole or
in part, for NonCommercial purposes only; and
b. produce, reproduce, and Share Adapted Material for
NonCommercial purposes only.
2. Exceptions and Limitations. For the avoidance of doubt, where
Exceptions and Limitations apply to Your use, this Public
License does not apply, and You do not need to comply with
its terms and conditions.
3. Term. The term of this Public License is specified in Section
6(a).
4. Media and formats; technical modifications allowed. The
Licensor authorizes You to exercise the Licensed Rights in
all media and formats whether now known or hereafter created,
and to make technical modifications necessary to do so. The
Licensor waives and/or agrees not to assert any right or
authority to forbid You from making technical modifications
necessary to exercise the Licensed Rights, including
technical modifications necessary to circumvent Effective
Technological Measures. For purposes of this Public License,
simply making modifications authorized by this Section 2(a)
(4) never produces Adapted Material.
5. Downstream recipients.
a. Offer from the Licensor -- Licensed Material. Every
recipient of the Licensed Material automatically
receives an offer from the Licensor to exercise the
Licensed Rights under the terms and conditions of this
Public License.
b. Additional offer from the Licensor -- Adapted Material.
Every recipient of Adapted Material from You
automatically receives an offer from the Licensor to
exercise the Licensed Rights in the Adapted Material
under the conditions of the Adapter's License You apply.
c. No downstream restrictions. You may not offer or impose
any additional or different terms or conditions on, or
apply any Effective Technological Measures to, the
Licensed Material if doing so restricts exercise of the
Licensed Rights by any recipient of the Licensed
Material.
6. No endorsement. Nothing in this Public License constitutes or
may be construed as permission to assert or imply that You
are, or that Your use of the Licensed Material is, connected
with, or sponsored, endorsed, or granted official status by,
the Licensor or others designated to receive attribution as
provided in Section 3(a)(1)(A)(i).
b. Other rights.
1. Moral rights, such as the right of integrity, are not
licensed under this Public License, nor are publicity,
privacy, and/or other similar personality rights; however, to
the extent possible, the Licensor waives and/or agrees not to
assert any such rights held by the Licensor to the limited
extent necessary to allow You to exercise the Licensed
Rights, but not otherwise.
2. Patent and trademark rights are not licensed under this
Public License.
3. To the extent possible, the Licensor waives any right to
collect royalties from You for the exercise of the Licensed
Rights, whether directly or through a collecting society
under any voluntary or waivable statutory or compulsory
licensing scheme. In all other cases the Licensor expressly
reserves any right to collect such royalties, including when
the Licensed Material is used other than for NonCommercial
purposes.
Section 3 -- License Conditions.
Your exercise of the Licensed Rights is expressly made subject to the
following conditions.
a. Attribution.
1. If You Share the Licensed Material (including in modified
form), You must:
a. retain the following if it is supplied by the Licensor
with the Licensed Material:
i. identification of the creator(s) of the Licensed
Material and any others designated to receive
attribution, in any reasonable manner requested by
the Licensor (including by pseudonym if
designated);
ii. a copyright notice;
iii. a notice that refers to this Public License;
iv. a notice that refers to the disclaimer of
warranties;
v. a URI or hyperlink to the Licensed Material to the
extent reasonably practicable;
b. indicate if You modified the Licensed Material and
retain an indication of any previous modifications; and
c. indicate the Licensed Material is licensed under this
Public License, and include the text of, or the URI or
hyperlink to, this Public License.
2. You may satisfy the conditions in Section 3(a)(1) in any
reasonable manner based on the medium, means, and context in
which You Share the Licensed Material. For example, it may be
reasonable to satisfy the conditions by providing a URI or
hyperlink to a resource that includes the required
information.
3. If requested by the Licensor, You must remove any of the
information required by Section 3(a)(1)(A) to the extent
reasonably practicable.
b. ShareAlike.
In addition to the conditions in Section 3(a), if You Share
Adapted Material You produce, the following conditions also apply.
1. The Adapter's License You apply must be a Creative Commons
license with the same License Elements, this version or
later, or a BY-NC-SA Compatible License.
2. You must include the text of, or the URI or hyperlink to, the
Adapter's License You apply. You may satisfy this condition
in any reasonable manner based on the medium, means, and
context in which You Share Adapted Material.
3. You may not offer or impose any additional or different terms
or conditions on, or apply any Effective Technological
Measures to, Adapted Material that restrict exercise of the
rights granted under the Adapter's License You apply.
Section 4 -- Sui Generis Database Rights.
Where the Licensed Rights include Sui Generis Database Rights that
apply to Your use of the Licensed Material:
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
to extract, reuse, reproduce, and Share all or a substantial
portion of the contents of the database for NonCommercial purposes
only;
b. if You include all or a substantial portion of the database
contents in a database in which You have Sui Generis Database
Rights, then the database in which You have Sui Generis Database
Rights (but not its individual contents) is Adapted Material,
including for purposes of Section 3(b); and
c. You must comply with the conditions in Section 3(a) if You Share
all or a substantial portion of the contents of the database.
For the avoidance of doubt, this Section 4 supplements and does not
replace Your obligations under this Public License where the Licensed
Rights include other Copyright and Similar Rights.
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
c. The disclaimer of warranties and limitation of liability provided
above shall be interpreted in a manner that, to the extent
possible, most closely approximates an absolute disclaimer and
waiver of all liability.
Section 6 -- Term and Termination.
a. This Public License applies for the term of the Copyright and
Similar Rights licensed here. However, if You fail to comply with
this Public License, then Your rights under this Public License
terminate automatically.
b. Where Your right to use the Licensed Material has terminated under
Section 6(a), it reinstates:
1. automatically as of the date the violation is cured, provided
it is cured within 30 days of Your discovery of the
violation; or
2. upon express reinstatement by the Licensor.
For the avoidance of doubt, this Section 6(b) does not affect any
right the Licensor may have to seek remedies for Your violations
of this Public License.
c. For the avoidance of doubt, the Licensor may also offer the
Licensed Material under separate terms or conditions or stop
distributing the Licensed Material at any time; however, doing so
will not terminate this Public License.
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
License.
Section 7 -- Other Terms and Conditions.
a. The Licensor shall not be bound by any additional or different
terms or conditions communicated by You unless expressly agreed.
b. Any arrangements, understandings, or agreements regarding the
Licensed Material not stated herein are separate from and
independent of the terms and conditions of this Public License.
Section 8 -- Interpretation.
a. For the avoidance of doubt, this Public License does not, and
shall not be interpreted to, reduce, limit, restrict, or impose
conditions on any use of the Licensed Material that could lawfully
be made without permission under this Public License.
b. To the extent possible, if any provision of this Public License is
deemed unenforceable, it shall be automatically reformed to the
minimum extent necessary to make it enforceable. If the provision
cannot be reformed, it shall be severed from this Public License
without affecting the enforceability of the remaining terms and
conditions.
c. No term or condition of this Public License will be waived and no
failure to comply consented to unless expressly agreed to by the
Licensor.
d. Nothing in this Public License constitutes or may be interpreted
as a limitation upon, or waiver of, any privileges and immunities
that apply to the Licensor or You, including from the legal
processes of any jurisdiction or authority.
=======================================================================
Creative Commons is not a party to its public
licenses. Notwithstanding, Creative Commons may elect to apply one of
its public licenses to material it publishes and in those instances
will be considered the “Licensor.” The text of the Creative Commons
public licenses is dedicated to the public domain under the CC0 Public
Domain Dedication. Except for the limited purpose of indicating that
material is shared under a Creative Commons public license or as
otherwise permitted by the Creative Commons policies published at
creativecommons.org/policies, Creative Commons does not authorize the
use of the trademark "Creative Commons" or any other trademark or logo
of Creative Commons without its prior written consent including,
without limitation, in connection with any unauthorized modifications
to any of its public licenses or any other arrangements,
understandings, or agreements concerning use of licensed material. For
the avoidance of doubt, this paragraph does not form part of the
public licenses.
Creative Commons may be contacted at creativecommons.org.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

60
audio/audio.mk Normal file
View File

@@ -0,0 +1,60 @@
# Copyright (C) 2020 The Proton AOSP Project
# Copyright (C) 2025 The LineageOS 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.
# Plasma Mobile sounds (mixed CC0 / CC BY 4.0 / CC BY-SA 4.0)
# Source: https://invent.kde.org/plasma-mobile/plasma-mobile-sounds
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/notifications/plasma-mobile_awaken.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/notifications/plasma-mobile_awaken.ogg \
$(LOCAL_PATH)/notifications/plasma-mobile_blip.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/notifications/plasma-mobile_blip.ogg \
$(LOCAL_PATH)/notifications/plasma-mobile_doorbell.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/notifications/plasma-mobile_doorbell.ogg \
$(LOCAL_PATH)/notifications/plasma-mobile_pointed.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/notifications/plasma-mobile_pointed.ogg \
$(LOCAL_PATH)/alarm_ringtones/plasma-mobile_arp.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/alarms/plasma-mobile_arp.ogg \
$(LOCAL_PATH)/alarm_ringtones/plasma-mobile_crunch.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/alarms/plasma-mobile_crunch.ogg \
$(LOCAL_PATH)/alarm_ringtones/plasma-mobile_elevated.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/alarms/plasma-mobile_elevated.ogg \
$(LOCAL_PATH)/alarm_ringtones/plasma-mobile_errand.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/alarms/plasma-mobile_errand.ogg \
$(LOCAL_PATH)/alarm_ringtones/plasma-mobile_gentle.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/alarms/plasma-mobile_gentle.ogg \
$(LOCAL_PATH)/alarm_ringtones/plasma-mobile_glazed.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/alarms/plasma-mobile_glazed.ogg \
$(LOCAL_PATH)/alarm_ringtones/plasma-mobile_lightly.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/alarms/plasma-mobile_lightly.ogg \
$(LOCAL_PATH)/alarm_ringtones/plasma-mobile_machine.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/alarms/plasma-mobile_machine.ogg \
$(LOCAL_PATH)/alarm_ringtones/plasma-mobile_miniature.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/alarms/plasma-mobile_miniature.ogg \
$(LOCAL_PATH)/alarm_ringtones/plasma-mobile_morning-rush.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/alarms/plasma-mobile_morning-rush.ogg \
$(LOCAL_PATH)/alarm_ringtones/plasma-mobile_nightlights.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/alarms/plasma-mobile_nightlights.ogg \
$(LOCAL_PATH)/alarm_ringtones/plasma-mobile_on-the-way.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/alarms/plasma-mobile_on-the-way.ogg \
$(LOCAL_PATH)/alarm_ringtones/plasma-mobile_progressive.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/alarms/plasma-mobile_progressive.ogg \
$(LOCAL_PATH)/alarm_ringtones/plasma-mobile_revelation.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/alarms/plasma-mobile_revelation.ogg \
$(LOCAL_PATH)/alarm_ringtones/plasma-mobile_slowly.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/alarms/plasma-mobile_slowly.ogg \
$(LOCAL_PATH)/alarm_ringtones/plasma-mobile_spatial.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/alarms/plasma-mobile_spatial.ogg \
$(LOCAL_PATH)/alarm_ringtones/plasma-mobile_unfamiliar.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/alarms/plasma-mobile_unfamiliar.ogg \
$(LOCAL_PATH)/alarm_ringtones/plasma-mobile_wink.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/alarms/plasma-mobile_wink.ogg \
$(LOCAL_PATH)/alarm_ringtones/plasma-mobile_wubstep.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/alarms/plasma-mobile_wubstep.ogg \
$(LOCAL_PATH)/alarm_ringtones/plasma-mobile_arp.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/ringtones/plasma-mobile_arp.ogg \
$(LOCAL_PATH)/alarm_ringtones/plasma-mobile_crunch.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/ringtones/plasma-mobile_crunch.ogg \
$(LOCAL_PATH)/alarm_ringtones/plasma-mobile_elevated.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/ringtones/plasma-mobile_elevated.ogg \
$(LOCAL_PATH)/alarm_ringtones/plasma-mobile_errand.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/ringtones/plasma-mobile_errand.ogg \
$(LOCAL_PATH)/alarm_ringtones/plasma-mobile_gentle.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/ringtones/plasma-mobile_gentle.ogg \
$(LOCAL_PATH)/alarm_ringtones/plasma-mobile_glazed.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/ringtones/plasma-mobile_glazed.ogg \
$(LOCAL_PATH)/alarm_ringtones/plasma-mobile_lightly.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/ringtones/plasma-mobile_lightly.ogg \
$(LOCAL_PATH)/alarm_ringtones/plasma-mobile_machine.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/ringtones/plasma-mobile_machine.ogg \
$(LOCAL_PATH)/alarm_ringtones/plasma-mobile_miniature.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/ringtones/plasma-mobile_miniature.ogg \
$(LOCAL_PATH)/alarm_ringtones/plasma-mobile_morning-rush.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/ringtones/plasma-mobile_morning-rush.ogg \
$(LOCAL_PATH)/alarm_ringtones/plasma-mobile_nightlights.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/ringtones/plasma-mobile_nightlights.ogg \
$(LOCAL_PATH)/alarm_ringtones/plasma-mobile_on-the-way.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/ringtones/plasma-mobile_on-the-way.ogg \
$(LOCAL_PATH)/alarm_ringtones/plasma-mobile_progressive.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/ringtones/plasma-mobile_progressive.ogg \
$(LOCAL_PATH)/alarm_ringtones/plasma-mobile_revelation.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/ringtones/plasma-mobile_revelation.ogg \
$(LOCAL_PATH)/alarm_ringtones/plasma-mobile_slowly.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/ringtones/plasma-mobile_slowly.ogg \
$(LOCAL_PATH)/alarm_ringtones/plasma-mobile_spatial.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/ringtones/plasma-mobile_spatial.ogg \
$(LOCAL_PATH)/alarm_ringtones/plasma-mobile_unfamiliar.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/ringtones/plasma-mobile_unfamiliar.ogg \
$(LOCAL_PATH)/alarm_ringtones/plasma-mobile_wink.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/ringtones/plasma-mobile_wink.ogg \
$(LOCAL_PATH)/alarm_ringtones/plasma-mobile_wubstep.ogg:$(TARGET_COPY_OUT_PRODUCT)/media/audio/ringtones/plasma-mobile_wubstep.ogg \

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -39,8 +39,17 @@ $(TARGET_GENERATED_BOOTANIMATION): $(SOONG_ZIP)
cat vendor/lineage/bootanimation/desc.txt >> $(INTERMEDIATES)/desc.txt
$(hide) $(SOONG_ZIP) -L 0 -o $@ -C $(INTERMEDIATES) -D $(INTERMEDIATES)
# Custom Boot Animation
CUSTOM_BOOTANIMATION := BootAnimations/bootanimation.zip
ifeq ($(TARGET_BOOTANIMATION),)
TARGET_BOOTANIMATION := $(TARGET_GENERATED_BOOTANIMATION)
ifneq ($(wildcard $(CUSTOM_BOOTANIMATION)),)
TARGET_BOOTANIMATION := $(CUSTOM_BOOTANIMATION)
$(warning [BootAnimation] Custom global animation found at $(CUSTOM_BOOTANIMATION))
else
TARGET_BOOTANIMATION := $(TARGET_GENERATED_BOOTANIMATION)
$(warning [BootAnimation] Custom file not found. Falling back to default generation.)
endif
endif
include $(CLEAR_VARS)

View File

@@ -1,17 +0,0 @@
#
# Copyright (C) 2017 The LineageOS 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.
#
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/BOOTANIMATION)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,32 @@
#
# Copyright (C) 2023 The risingOS Android 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.
#
PRODUCT_SOONG_NAMESPACES += \
vendor/lineage/prebuilts
PRODUCT_COPY_FILES += \
vendor/lineage/bootanimation/prebuilts/bootanimation_aokp.zip:$(TARGET_COPY_OUT_PRODUCT)/media/bootanimation_aokp.zip \
vendor/lineage/bootanimation/prebuilts/bootanimation_cm.zip:$(TARGET_COPY_OUT_PRODUCT)/media/bootanimation_cm.zip \
vendor/lineage/bootanimation/prebuilts/bootanimation_ctos.zip:$(TARGET_COPY_OUT_PRODUCT)/media/bootanimation_ctos.zip \
vendor/lineage/bootanimation/prebuilts/bootanimation_cyberpunk.zip:$(TARGET_COPY_OUT_PRODUCT)/media/bootanimation_cyberpunk.zip \
vendor/lineage/bootanimation/prebuilts/bootanimation_du.zip:$(TARGET_COPY_OUT_PRODUCT)/media/bootanimation_du.zip \
vendor/lineage/bootanimation/prebuilts/bootanimation_evo_reveal.zip:$(TARGET_COPY_OUT_PRODUCT)/media/bootanimation_evo_reveal.zip \
vendor/lineage/bootanimation/prebuilts/bootanimation_google.zip:$(TARGET_COPY_OUT_PRODUCT)/media/bootanimation_google.zip \
vendor/lineage/bootanimation/prebuilts/bootanimation_google_monet.zip:$(TARGET_COPY_OUT_PRODUCT)/media/bootanimation_google_monet.zip \
vendor/lineage/bootanimation/prebuilts/bootanimation_pac.zip:$(TARGET_COPY_OUT_PRODUCT)/media/bootanimation_pac.zip \
vendor/lineage/bootanimation/prebuilts/bootanimation_rr.zip:$(TARGET_COPY_OUT_PRODUCT)/media/bootanimation_rr.zip \
vendor/lineage/bootanimation/prebuilts/bootanimation_slim.zip:$(TARGET_COPY_OUT_PRODUCT)/media/bootanimation_slim.zip \
vendor/lineage/bootanimation/prebuilts/bootanimation_valorant.zip:$(TARGET_COPY_OUT_PRODUCT)/media/bootanimation_valorant.zip

View File

@@ -0,0 +1,3 @@
# build-manifest.xml
INSTALLED_BUILD_MANIFEST_XML_TARGET := $(TARGET_OUT_PRODUCT)/etc/build-manifest.xml
ALL_DEFAULT_INSTALLED_MODULES += $(INSTALLED_BUILD_MANIFEST_XML_TARGET)

View File

@@ -7,3 +7,6 @@ endef
# Include board/platform macros
include vendor/lineage/build/core/utils.mk
# Include default installed modules
include vendor/lineage/build/core/default_installed_modules.mk

View File

@@ -18,13 +18,13 @@ endif
include $(BUILD_SYSTEM)/base_rules.mk
$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
$(LOCAL_SOONG_INSTALL_DIR):
@mkdir -p $@
$(LOCAL_BUILT_MODULE): $(LOCAL_SOONG_INSTALL_DIR) $(LOCAL_ADDITIONAL_DEPENDENCIES)
@mkdir -p $(dir $@)
@touch $@
ifneq ($(filter $(LOCAL_MODULE),$(PRODUCT_PACKAGES)),)
$(LOCAL_SOONG_INSTALL_DIR):
@mkdir -p $@
ALL_DEFAULT_INSTALLED_MODULES += $(LOCAL_SOONG_INSTALL_DIR)
endif

View File

@@ -202,6 +202,36 @@ $(strip \
)
endef
# $(call is-version-greater-or-equal,version_a,version_b)
# version_a >= version_b
define is-version-greater-or-equal
$(strip \
$(eval a_major := $(word 1,$(subst ., ,$(1)))) \
$(eval a_minor := $(word 2,$(subst ., ,$(1)))) \
$(eval b_major := $(word 1,$(subst ., ,$(2)))) \
$(eval b_minor := $(word 2,$(subst ., ,$(2)))) \
$(if $(call math_gt,$(a_major),$(b_major)),true, \
$(if $(call math_gt_or_eq,$(a_major),$(b_major)), \
$(if $(call math_gt_or_eq,$(a_minor),$(b_minor)),true,false), \
false)) \
)
endef
# $(call is-version-lower-or-equal,version_a,version_b)
# version_a <= version_b
define is-version-lower-or-equal
$(strip \
$(eval a_major := $(word 1,$(subst ., ,$(1)))) \
$(eval a_minor := $(word 2,$(subst ., ,$(1)))) \
$(eval b_major := $(word 1,$(subst ., ,$(2)))) \
$(eval b_minor := $(word 2,$(subst ., ,$(2)))) \
$(if $(call math_lt,$(a_major),$(b_major)),true, \
$(if $(call math_lt_or_eq,$(a_major),$(b_major)), \
$(if $(call math_lt_or_eq,$(a_minor),$(b_minor)),true,false), \
false)) \
)
endef
# $(call add-radio-file-sha1-checked,path,sha1)
define add-radio-file-sha1-checked
$(eval path := $(LOCAL_PATH)/$(1))

View File

@@ -1,6 +1,9 @@
CLANG_VERSION=$(build/soong/scripts/get_clang_version.py)
CLANG_VERSION=$(${ANDROID_BUILD_TOP}/build/soong/scripts/get_clang_version.py)
export LLVM_AOSP_PREBUILTS_VERSION="${CLANG_VERSION}"
RUST_VERSION=$(grep 'RustDefaultVersion =' ${ANDROID_BUILD_TOP}/build/soong/rust/config/global.go | awk '{print $3}' | awk -F '"' '{print $2}')
export RUST_AOSP_PREBUILTS_VERSION="${RUST_VERSION}"
# check to see if the supplied product is one we can build
function check_product()
{
@@ -29,7 +32,7 @@ function brunch()
{
breakfast $*
if [ $? -eq 0 ]; then
mka bacon
mka evolution
else
echo "No such item in brunch menu. Try 'breakfast'"
return 1
@@ -246,15 +249,16 @@ function lineageremote()
function aospremote()
{
if ! git rev-parse --git-dir &> /dev/null
local T=`git rev-parse --show-toplevel 2> /dev/null`
if [ -z "$T" ]
then
echo ".git directory not found. Please run this from the root directory of the Android repository you wish to set up."
echo "Git repository not found. Please run this from the directory of the Android repository you wish to set up."
return 1
fi
git remote rm aosp 2> /dev/null
if [ -f ".gitupstream" ]; then
local REMOTE=$(cat .gitupstream | cut -d ' ' -f 1)
if [ -f "$T/.gitupstream" ]; then
local REMOTE=$(cat "$T/.gitupstream" | cut -d ' ' -f 1)
git remote add aosp ${REMOTE}
else
local PROJECT=$(pwd -P | sed -e "s#$ANDROID_BUILD_TOP\/##; s#-caf.*##; s#\/default##")
@@ -274,15 +278,16 @@ function aospremote()
function cloremote()
{
if ! git rev-parse --git-dir &> /dev/null
local T=`git rev-parse --show-toplevel 2> /dev/null`
if [ -z "$T" ]
then
echo ".git directory not found. Please run this from the root directory of the Android repository you wish to set up."
echo "Git repository not found. Please run this from the directory of the Android repository you wish to set up."
return 1
fi
git remote rm clo 2> /dev/null
if [ -f ".gitupstream" ]; then
local REMOTE=$(cat .gitupstream | cut -d ' ' -f 1)
if [ -f "$T/.gitupstream" ]; then
local REMOTE=$(cat "$T/.gitupstream" | cut -d ' ' -f 1)
git remote add clo ${REMOTE}
else
local PROJECT=$(pwd -P | sed -e "s#$ANDROID_BUILD_TOP\/##; s#-caf.*##; s#\/default##")
@@ -702,7 +707,7 @@ function cmka() {
if [ ! -z "$1" ]; then
for i in "$@"; do
case $i in
bacon|otapackage|systemimage)
evolution|otapackage|systemimage)
mka installclean
mka $i
;;
@@ -924,3 +929,100 @@ function fixup_common_out_dir() {
mkdir -p ${common_out_dir}
fi
}
function build_kernel() {
local lineage_version="lineage-$(_get_build_var_cached PRODUCT_VERSION_MAJOR).$(_get_build_var_cached PRODUCT_VERSION_MINOR)"
local target_kernel_device="$(_get_build_var_cached TARGET_KERNEL_DEVICE)"
local target_kernel_dir="${ANDROID_BUILD_TOP}/$(_get_build_var_cached TARGET_KERNEL_DIR)"
local target_kernel_source="$(_get_build_var_cached TARGET_KERNEL_PLATFORM_SOURCE)"
local KERNEL_BUILD_TOP="${ANDROID_BUILD_TOP}/out-kernel/${target_kernel_source}"
# Make sure we have the kernel source folder structure in place
if [ ! -d "${KERNEL_BUILD_TOP}/.repo" ]; then
echo "Kernel source ${KERNEL_BUILD_TOP} is missing, preparing folder structure"
# Copy .repo/repo from Android tree to allow nested `repo init`
mkdir -p "${KERNEL_BUILD_TOP}/.repo"
cp -R "${ANDROID_BUILD_TOP}/.repo/repo" "${KERNEL_BUILD_TOP}/.repo/repo"
# Allow custom .repo/project-objects dir
if [ -n "${KERNEL_REPO_PROJECT_OBJECTS_DIR}" ]; then
if [ ! -d "${KERNEL_REPO_PROJECT_OBJECTS_DIR}" ]; then
mkdir "${KERNEL_REPO_PROJECT_OBJECTS_DIR}"
fi
ln -sf "${KERNEL_REPO_PROJECT_OBJECTS_DIR}" "${KERNEL_BUILD_TOP}/.repo/project-objects"
fi
# Allow custom .repo/projects dir
if [ -n "${KERNEL_REPO_PROJECTS_DIR}" ]; then
if [ ! -d "${KERNEL_REPO_PROJECTS_DIR}" ]; then
mkdir "${KERNEL_REPO_PROJECTS_DIR}"
fi
ln -sf "${KERNEL_REPO_PROJECTS_DIR}" "${KERNEL_BUILD_TOP}/.repo/projects"
fi
# Mark as out dir to prevent build system from scanning it
touch "${KERNEL_BUILD_TOP}/.out-dir"
fi
# Init, sync, remove previous build output & build kernel
pushd "${KERNEL_BUILD_TOP}" > /dev/null
if [[ "${SKIP_KERNEL_SYNC}" != "true" && "${SKIP_KERNEL_SYNC}" != "1" ]]; then
echo "Syncing ${KERNEL_BUILD_TOP}"
local target_kernel_manifest=$(echo android_kernel_${target_kernel_source}_manifest | tr / _)
local repo_init_args=("-b" "${lineage_version}")
if [ -n "${LINEAGE_MIRROR}" ]; then
repo_init_args+=("--reference" "${LINEAGE_MIRROR}")
fi
if [ -n "${REPO_VERSION}" ]; then
repo_init_args+=("--repo-rev" "${REPO_VERSION}")
fi
yes | repo init -u https://github.com/LineageOS/${target_kernel_manifest}.git ${repo_init_args[@]} || [ $? -eq 141 ]
if [ $? -ne 0 ]; then
echo "Kernel source repo init failed"
popd > /dev/null
return 1
fi
if ! repo sync --detach --force-sync; then
echo "Kernel source repo sync failed"
popd > /dev/null
return 1
fi
fi
if [ -d "${KERNEL_BUILD_TOP}/out/${target_kernel_device}/dist" ]; then
rm -rf "${KERNEL_BUILD_TOP}/out/${target_kernel_device}/dist"
fi
if ! ./build_"${target_kernel_device}".sh; then
popd > /dev/null
return 1
fi
popd > /dev/null
# Remove previous kernel prebuilts
if [ -d "${target_kernel_dir}" ]; then
find "${target_kernel_dir}" -maxdepth 1 ! \( -name .gitignore \) -type f -delete
fi
# Copy the new kernel prebuilts
mkdir -p "${target_kernel_dir}"
cp -a "${KERNEL_BUILD_TOP}/out/${target_kernel_device}/dist/"* "${target_kernel_dir}/"
chmod -x "${target_kernel_dir}/"*
echo "Kernel build output copied to ${target_kernel_dir}/"
}
function generate_host_overrides() {
export BUILD_USERNAME=android-build
HEX=$(openssl rand -hex 8)
ALPHA=$(cat /dev/urandom | tr -dc 'a-z0-9' | fold -w 4 | head -n 1)
export BUILD_HOSTNAME="r-${HEX}-${ALPHA}"
echo "BUILD_USERNAME=$BUILD_USERNAME"
echo "BUILD_HOSTNAME=$BUILD_HOSTNAME"
}
generate_host_overrides
export USE_THINLTO_CACHE=true
export SKIP_ABI_CHECKS=true

View File

@@ -21,7 +21,16 @@ lineage_generator {
name: "generated_kernel_includes",
// The headers make command
cmd: "$(PATH_OVERRIDE_SOONG) $(KERNEL_MAKE_CMD) $(KERNEL_MAKE_FLAGS) -C $(TARGET_KERNEL_SOURCE) O=$(KERNEL_BUILD_OUT_PREFIX)$(genDir) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) headers_install && vendor/lineage/tools/clean_headers.sh $(KERNEL_BUILD_OUT_PREFIX)$(genDir)",
cmd: "if [ -n \"$(TARGET_KERNEL_PLATFORM_TARGET)\" ]; then " +
" pushd $(KERNEL_PATH); " +
" ./tools/bazel --output_user_root=$(KERNEL_BUILD_OUT_PREFIX)$(genDir)/bazel-out --output_root=$(KERNEL_BUILD_OUT_PREFIX)$(genDir)/bazel-out run --experimental_convenience_symlinks=ignore --cpu=$(KERNEL_ARCH) //$(TARGET_KERNEL_SOURCE):$(TARGET_KERNEL_PLATFORM_TARGET)_uapi_headers_dist -- --destdir=$(KERNEL_BUILD_OUT_PREFIX)$(genDir); " +
" popd; " +
" gzip -d $(KERNEL_BUILD_OUT_PREFIX)$(genDir)/kernel-uapi-headers.tar.gz; " +
" tar -xf $(KERNEL_BUILD_OUT_PREFIX)$(genDir)/kernel-uapi-headers.tar -C $(KERNEL_BUILD_OUT_PREFIX)$(genDir); " +
"else " +
" $(PATH_OVERRIDE_SOONG) $(KERNEL_MAKE_CMD) $(KERNEL_MAKE_FLAGS) -C $(TARGET_KERNEL_SOURCE) O=$(KERNEL_BUILD_OUT_PREFIX)$(genDir) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) headers_install; " +
"fi; " +
"vendor/lineage/tools/clean_headers.sh $(KERNEL_BUILD_OUT_PREFIX)$(genDir)",
// Directories that can be imported by a cc_* module generated_headers property
export_include_dirs: [
@@ -95,12 +104,24 @@ cc_library_headers {
defaults: ["generated_kernel_header_defaults"],
}
cc_library_headers {
name: "qti_kernel_headers",
defaults: ["generated_kernel_header_defaults"],
}
cc_library_headers {
name: "prebuilt_kernel_headers",
defaults: ["prebuilt_kernel_header_defaults"],
}
soong_config_module_type {
name: "spoof_first_api_level_32",
module_type: "cc_defaults",
config_namespace: "lineageGlobalVars",
bool_variables: ["spoof_first_api_level_32"],
properties: ["cppflags"]
}
spoof_first_api_level_32 {
name: "spoof_first_api_level_32_defaults",
soong_config_variables: {
spoof_first_api_level_32: {
cppflags: ["-DSPOOF_FIRST_API_LEVEL_32"],
},
},
}

View File

@@ -5,6 +5,7 @@ $(call inherit-product, device/google/cuttlefish/vsoc_arm64_only/auto/aosp_cf.mk
include vendor/lineage/build/target/product/lineage_generic_car_target.mk
TARGET_DISABLE_EPPE := true
TARGET_NO_KERNEL_OVERRIDE := true
# Enable mainline checking

View File

@@ -5,6 +5,7 @@ $(call inherit-product, device/google/cuttlefish/vsoc_x86_64_only/auto/aosp_cf.m
include vendor/lineage/build/target/product/lineage_generic_car_target.mk
TARGET_DISABLE_EPPE := true
TARGET_NO_KERNEL_OVERRIDE := true
# Enable mainline checking

View File

@@ -5,6 +5,7 @@ $(call inherit-product, device/google/cuttlefish/vsoc_arm64/phone/aosp_cf.mk)
include vendor/lineage/build/target/product/lineage_generic_target.mk
TARGET_DISABLE_EPPE := true
TARGET_NO_KERNEL_OVERRIDE := true
# Overrides

View File

@@ -5,6 +5,7 @@ $(call inherit-product, device/google/cuttlefish/vsoc_x86_64/phone/aosp_cf.mk)
include vendor/lineage/build/target/product/lineage_generic_target.mk
TARGET_DISABLE_EPPE := true
TARGET_NO_KERNEL_OVERRIDE := true
# Overrides

View File

@@ -5,6 +5,7 @@ $(call inherit-product, device/google/cuttlefish/vsoc_x86_64/tv/aosp_cf.mk)
include vendor/lineage/build/target/product/lineage_generic_tv_target.mk
TARGET_DISABLE_EPPE := true
TARGET_NO_KERNEL_OVERRIDE := true
# Overrides

View File

@@ -19,3 +19,10 @@ EMULATOR_VENDOR_NO_SOUND := true
# Allow building otatools
TARGET_FORCE_OTA_PACKAGE := true
# Disable soong defined system image for now
USE_SOONG_DEFINED_SYSTEM_IMAGE := false
PRODUCT_ARTIFACT_PATH_REQUIREMENT_ALLOWED_LIST += \
system/app/Home/Home.apk \
system/etc/permissions/android.software.credentials.xml

View File

@@ -16,3 +16,6 @@ $(call inherit-product, vendor/lineage/config/common_full_phone.mk)
# Allow building otatools
TARGET_FORCE_OTA_PACKAGE := true
# Disable soong defined system image for now
USE_SOONG_DEFINED_SYSTEM_IMAGE := false

View File

@@ -17,3 +17,6 @@ $(call inherit-product, vendor/lineage/config/common_full_tv.mk)
# Allow building otatools
TARGET_FORCE_OTA_PACKAGE := true
# Disable soong defined system image for now
USE_SOONG_DEFINED_SYSTEM_IMAGE := false

View File

@@ -23,7 +23,4 @@ TARGET_NO_KERNEL_OVERRIDE := true
# Enable mainline checking
PRODUCT_ENFORCE_ARTIFACT_PATH_REQUIREMENTS := relaxed
PRODUCT_ARTIFACT_PATH_REQUIREMENT_ALLOWED_LIST += \
system/app/Home/Home.apk
PRODUCT_NAME := lineage_gsi_car_arm64

View File

@@ -23,7 +23,4 @@ TARGET_NO_KERNEL_OVERRIDE := true
# Enable mainline checking
PRODUCT_ENFORCE_ARTIFACT_PATH_REQUIREMENTS := relaxed
PRODUCT_ARTIFACT_PATH_REQUIREMENT_ALLOWED_LIST += \
system/app/Home/Home.apk
PRODUCT_NAME := lineage_gsi_car_x86_64

View File

@@ -0,0 +1,2 @@
#PRODUCT_SHIPPING_API_LEVEL indicates the first api level, device has been commercially launched on.
PRODUCT_SHIPPING_API_LEVEL := 16

View File

@@ -0,0 +1,2 @@
#PRODUCT_SHIPPING_API_LEVEL indicates the first api level, device has been commercially launched on.
PRODUCT_SHIPPING_API_LEVEL := 17

View File

@@ -0,0 +1,2 @@
#PRODUCT_SHIPPING_API_LEVEL indicates the first api level, device has been commercially launched on.
PRODUCT_SHIPPING_API_LEVEL := 18

15
build/tasks/ascii_output.sh Executable file
View File

@@ -0,0 +1,15 @@
#!/bin/bash
BLUE="\e[34m"
GREEN="\e[32m"
ENDCOLOR="\e[0m"
echo -e "${GREEN}===========================================================${ENDCOLOR}"
echo -e "${BLUE} ______ __ __ _ _ __ ${ENDCOLOR}"
echo -e "${BLUE} / ____/ ______ / /_ __/ /_(_)___ ____ | |/ / ${ENDCOLOR}"
echo -e "${BLUE} / __/ | | / / __ \/ / / / / __/ / __ \/ __ \ | / ${ENDCOLOR}"
echo -e "${BLUE} / /___ | |/ / /_/ / / /_/ / /_/ / /_/ / / / / / | ${ENDCOLOR}"
echo -e "${BLUE} /_____/ |___/\____/_/\__,_/\__/_/\____/_/ /_/ /_/|_| ${ENDCOLOR}"
echo -e "${BLUE} ${ENDCOLOR}"
echo -e "${BLUE}#KeepEvolving ${ENDCOLOR}"
echo -e "${GREEN}===========================================================${ENDCOLOR}"

View File

@@ -1,4 +1,4 @@
# Copyright (C) 2023 The LineageOS Project
# Copyright (C) 2023-2025 The LineageOS Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -16,18 +16,9 @@ ifdef MANIFEST_EXCLUDES
MANIFEST_EXCLUDES := |$(MANIFEST_EXCLUDES)
endif
include $(CLEAR_VARS)
LOCAL_MODULE := build-manifest
LOCAL_MODULE_SUFFIX := .xml
LOCAL_MODULE_CLASS := ETC
LOCAL_PRODUCT_MODULE := true
_build-manifest_intermediates := $(call intermediates-dir-for,$(LOCAL_MODULE_CLASS),$(LOCAL_MODULE))
_build-manifest_xml := $(_build-manifest_intermediates)/$(LOCAL_MODULE)$(LOCAL_MODULE_SUFFIX)
$(_build-manifest_xml):
$(INSTALLED_BUILD_MANIFEST_XML_TARGET):
mkdir -p $(dir $@)
python3 .repo/repo/repo manifest -o - -r | grep -Ev "proprietary_$(MANIFEST_EXCLUDES)" > $@
include $(BUILD_SYSTEM)/base_rules.mk
.PHONY: build-manifest.xml
build-manifest.xml: $(INSTALLED_BUILD_MANIFEST_XML_TARGET)

View File

@@ -14,16 +14,19 @@
# limitations under the License.
# -----------------------------------------------------------------
# Lineage OTA update package
# Evolution X OTA update package
LINEAGE_TARGET_PACKAGE := $(PRODUCT_OUT)/lineage-$(LINEAGE_VERSION).zip
LINEAGE_TARGET_PACKAGE := $(PRODUCT_OUT)/$(LINEAGE_VERSION).zip
SHA256 := prebuilts/build-tools/path/$(HOST_PREBUILT_TAG)/sha256sum
$(LINEAGE_TARGET_PACKAGE): $(INTERNAL_OTA_PACKAGE_TARGET)
$(hide) ln -f $(INTERNAL_OTA_PACKAGE_TARGET) $(LINEAGE_TARGET_PACKAGE)
$(hide) mv -f $(INTERNAL_OTA_PACKAGE_TARGET) $(LINEAGE_TARGET_PACKAGE)
$(hide) $(SHA256) $(LINEAGE_TARGET_PACKAGE) | sed "s|$(PRODUCT_OUT)/||" > $(LINEAGE_TARGET_PACKAGE).sha256sum
$(hide) ./vendor/lineage/build/tools/createjson.py $(TARGET_DEVICE) $(PRODUCT_OUT) $(LINEAGE_VERSION).zip $(TARGET_BUILD_VARIANT) $(WITH_GMS)
$(hide) rm -rf $(call intermediates-dir-for,PACKAGING,target_files)
$(hide) ./vendor/lineage/build/tasks/ascii_output.sh
@echo "Package Complete: $(LINEAGE_TARGET_PACKAGE)" >&2
.PHONY: bacon
bacon: $(LINEAGE_TARGET_PACKAGE) $(DEFAULT_GOAL)
.PHONY: evolution
evolution: $(LINEAGE_TARGET_PACKAGE) $(DEFAULT_GOAL)

View File

@@ -25,9 +25,9 @@
# TARGET_KERNEL_CONFIG = List of kernel defconfigs, first one being the base one,
# while all the others are fragments that will be merged
# to main one in .config.
# TARGET_KERNEL_RECOVERY_CONFIG = Same as above, but applicable to recovery kernel instead.
# TARGET_KERNEL_VARIANT_CONFIG = Variant defconfig, optional
# TARGET_KERNEL_SELINUX_CONFIG = SELinux defconfig, optional
# TARGET_KERNEL_CONFIG_EXT = List of path to external kernel defconfigs.
# Same as TARGET_KERNEL_CONFIG, but paths are specified
# instead of filenames.
#
# TARGET_KERNEL_CLANG_COMPILE = Compile kernel with clang, defaults to true
#
@@ -62,6 +62,11 @@
#
# KERNEL_LTO = Optional, force LTO to none / thin / full
#
# MERGE_ALL_KERNEL_CONFIGS_AT_ONCE = Optional, whether or not to merge all kernel config
# fragments in one merge_configs.sh call. if true,
# kernel config fragments will get merged faster, but
# may cause some differences.
#
# NEED_KERNEL_MODULE_ROOT = Optional, if true, install kernel
# modules in root instead of vendor
# NEED_KERNEL_MODULE_SYSTEM = Optional, if true, install kernel
@@ -76,26 +81,35 @@
#
# TARGET_MERGE_DTBS_WILDCARD = Optional, limits the .dtb files used to generate the
# final DTB image when using QCOM's merge_dtbs script.
# TARGET_DTB_LIST_WILDCARD = Optional, limits the .dtb files used to generate the
# final DTB image when NOT using QCOM's merge_dtbs
# script. Allows multiple patterns.
#
# TARGET_KERNEL_PLATFORM_TARGET = Optional, enables building an external kernel
# platform tree, this specifies the base target name
ifneq ($(TARGET_NO_KERNEL),true)
ifneq ($(TARGET_NO_KERNEL_OVERRIDE),true)
## Externally influenced variables
KERNEL_SRC := $(TARGET_KERNEL_SOURCE)
ifneq ($(BOARD_SYSTEM_KERNEL_MODULES_LOAD),false)
SYSTEM_KERNEL_MODULES_LOAD := $(BOARD_SYSTEM_KERNEL_MODULES_LOAD)
endif
# kernel configuration - mandatory
MERGE_ALL_KERNEL_CONFIGS_AT_ONCE ?= false
KERNEL_DEFCONFIG := $(TARGET_KERNEL_CONFIG)
RECOVERY_DEFCONFIG := $(TARGET_KERNEL_RECOVERY_CONFIG)
VARIANT_DEFCONFIG := $(TARGET_KERNEL_VARIANT_CONFIG)
SELINUX_DEFCONFIG := $(TARGET_KERNEL_SELINUX_CONFIG)
KERNEL_DEFCONFIG_EXT := $(TARGET_KERNEL_CONFIG_EXT)
# dtb generation - optional
TARGET_MERGE_DTBS_WILDCARD ?= *
TARGET_DTB_LIST_WILDCARD ?= *
# recovery modules.load fallback - optional
BOARD_RECOVERY_KERNEL_MODULES_LOAD ?= $(BOARD_RECOVERY_RAMDISK_KERNEL_MODULES_LOAD)
TARGET_KERNEL_MIXED_MODE ?= true
## Internal variables
DTC := $(HOST_OUT_EXECUTABLES)/dtc
KERNEL_OUT := $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ
RECOVERY_KERNEL_OUT := $(TARGET_OUT_INTERMEDIATES)/RECOVERY_KERNEL_OBJ
DTBO_OUT := $(TARGET_OUT_INTERMEDIATES)/DTBO_OBJ
DTB_OUT := $(TARGET_OUT_INTERMEDIATES)/DTB_OBJ
ifeq ($(BOARD_USES_QCOM_MERGE_DTBS_SCRIPT),true)
@@ -104,11 +118,9 @@ DTBS_OUT := $(DTB_OUT)/out
endif
KERNEL_CONFIG := $(KERNEL_OUT)/.config
KERNEL_RELEASE := $(KERNEL_OUT)/include/config/kernel.release
RECOVERY_KERNEL_CONFIG := $(RECOVERY_KERNEL_OUT)/.config
RECOVERY_KERNEL_RELEASE := $(RECOVERY_KERNEL_OUT)/include/config/kernel.release
ifeq ($(BOARD_USES_QCOM_HARDWARE),true)
ifeq ($(shell expr $(TARGET_KERNEL_VERSION) \>= 5.15), 1)
ifeq ($(shell expr $(TARGET_KERNEL_VERSION) \<= 6.1), 1)
ifeq ($(call is-version-greater-or-equal,$(TARGET_KERNEL_VERSION),5.15),true)
ifeq ($(call is-version-lower-or-equal,$(TARGET_KERNEL_VERSION),6.1),true)
GKI_SUFFIX := /$(shell echo android$(PLATFORM_VERSION)-$(TARGET_KERNEL_VERSION))
endif
endif
@@ -120,13 +132,11 @@ else
KERNEL_DEFCONFIG_ARCH := $(KERNEL_ARCH)
endif
KERNEL_DEFCONFIG_DIR := $(KERNEL_SRC)/arch/$(KERNEL_DEFCONFIG_ARCH)/configs
ALL_KERNEL_DEFCONFIG_SRCS := $(foreach config,$(KERNEL_DEFCONFIG),$(KERNEL_DEFCONFIG_DIR)/$(config))
ALL_RECOVERY_KERNEL_DEFCONFIG_SRCS := $(foreach config,$(RECOVERY_DEFCONFIG),$(KERNEL_DEFCONFIG_DIR)/$(config))
BASE_KERNEL_DEFCONFIG := $(word 1, $(KERNEL_DEFCONFIG))
ALL_KERNEL_DEFCONFIG_SRCS := $(foreach config,$(KERNEL_DEFCONFIG),$(KERNEL_DEFCONFIG_DIR)/$(config))
ALL_KERNEL_DEFCONFIG_SRCS += $(KERNEL_DEFCONFIG_EXT)
BASE_KERNEL_DEFCONFIG_SRC := $(word 1, $(ALL_KERNEL_DEFCONFIG_SRCS))
BASE_RECOVERY_KERNEL_DEFCONFIG := $(word 1, $(RECOVERY_DEFCONFIG))
BASE_RECOVERY_KERNEL_DEFCONFIG_SRC := $(word 1, $(ALL_RECOVERY_KERNEL_DEFCONFIG_SRCS))
ifeq ($(TARGET_PREBUILT_KERNEL),)
ifeq ($(BOARD_KERNEL_IMAGE_NAME),)
@@ -135,8 +145,6 @@ ifeq ($(TARGET_PREBUILT_KERNEL),)
endif
TARGET_PREBUILT_INT_KERNEL := $(KERNEL_OUT)/arch/$(KERNEL_ARCH)/boot/$(BOARD_KERNEL_IMAGE_NAME)
TARGET_PREBUILT_INT_RECOVERY_KERNEL := $(RECOVERY_KERNEL_OUT)/arch/$(KERNEL_ARCH)/boot/$(BOARD_KERNEL_IMAGE_NAME)
ifeq "$(wildcard $(KERNEL_SRC) )" ""
ifneq ($(TARGET_PREBUILT_KERNEL),)
HAS_PREBUILT_KERNEL := true
@@ -149,7 +157,22 @@ ifeq "$(wildcard $(KERNEL_SRC) )" ""
$(eval HAS_PREBUILT_KERNEL := true)))
endif
ifneq ($(HAS_PREBUILT_KERNEL),)
ifneq ($(TARGET_KERNEL_PLATFORM_TARGET),)
ifeq "$(wildcard $(abspath $(BUILD_TOP)/../kernel-$(TARGET_KERNEL_VERSION))/$(KERNEL_SRC) )" ""
$(warning ***************************************************************)
$(warning * *)
$(warning * No kernel platform source found. *)
$(warning * Please make sure your device is properly configured to *)
$(warning * download the kernel repository to $(KERNEL_SRC))
$(warning * *)
$(warning ***************************************************************)
$(error "NO KERNEL")
endif
NEEDS_KERNEL_COPY := true
FULL_KERNEL_BUILD := false
TARGET_PREBUILT_INT_KERNEL := $(KERNEL_OUT)/$(BOARD_KERNEL_IMAGE_NAME)
KERNEL_BIN := $(TARGET_PREBUILT_INT_KERNEL)
else ifneq ($(HAS_PREBUILT_KERNEL),)
ifeq ($(TARGET_PREBUILT_KERNEL_HEADERS),)
$(warning ***************************************************************)
$(warning * Using prebuilt kernel binary instead of source *)
@@ -178,7 +201,7 @@ ifeq "$(wildcard $(KERNEL_SRC) )" ""
endif
else
NEEDS_KERNEL_COPY := true
ifeq ($(TARGET_KERNEL_CONFIG),)
ifeq ($(TARGET_KERNEL_CONFIG)$(TARGET_KERNEL_CONFIG_EXT),)
$(warning **********************************************************)
$(warning * Kernel source found, but no configuration was defined *)
$(warning * Please add the TARGET_KERNEL_CONFIG variable to your *)
@@ -210,45 +233,7 @@ else
endif
endif
ifneq ($(TARGET_KERNEL_RECOVERY_CONFIG),)
ifeq "$(wildcard $(KERNEL_SRC) )" ""
ifeq ($(TARGET_PREBUILT_RECOVERY_KERNEL),)
$(warning ***************************************************************)
$(warning * *)
$(warning * No recovery kernel source found, and no fallback prebuilt *)
$(warning * defined. Please make sure your device is properly *)
$(warning * configured to download the kernel repository to $(KERNEL_SRC))
$(warning * or remove TARGET_KERNEL_RECOVERY_CONFIG from BoardConfig.mk *)
$(warning * *)
$(warning * Or, define the TARGET_PREBUILT_RECOVERY_KERNEL *)
$(warning * variable with the path to the prebuilt recovery kernel image*)
$(warning * in your BoardConfig.mk file *)
$(warning * *)
$(warning ***************************************************************)
$(error "NO RECOVERY KERNEL SOURCE")
endif
endif
ifneq ($(BOARD_USES_RECOVERY_AS_BOOT),)
$(warning ********************************************************)
$(warning * TARGET_KERNEL_RECOVERY_CONFIG set but device uses *)
$(warning * RECOVERY_AS_BOOT, which uses boot kernel as recovery *)
$(warning * kernel, as such it's not possible to use different *)
$(warning * configs *)
$(warning ********************************************************)
$(error "INVALID CONFIGURATION")
else
FULL_RECOVERY_KERNEL_BUILD := true
RECOVERY_KERNEL_COPY := true
RECOVERY_BIN := $(TARGET_PREBUILT_INT_RECOVERY_KERNEL)
endif
else
ifneq ($(TARGET_PREBUILT_RECOVERY_KERNEL),)
RECOVERY_BIN := $(TARGET_PREBUILT_RECOVERY_KERNEL)
RECOVERY_KERNEL_COPY := true
endif
endif
ifeq ($(or $(FULL_RECOVERY_KERNEL_BUILD), $(FULL_KERNEL_BUILD)),true)
ifeq ($(FULL_KERNEL_BUILD),true)
# Add host bin out dir to path
PATH_OVERRIDE := PATH=$(KERNEL_BUILD_OUT_PREFIX)$(HOST_OUT_EXECUTABLES):$$PATH
ifneq ($(TARGET_KERNEL_CLANG_COMPILE),false)
@@ -264,7 +249,7 @@ ifneq ($(TARGET_KERNEL_CLANG_COMPILE),false)
endif
PATH_OVERRIDE += PATH=$(TARGET_KERNEL_CLANG_PATH)/bin:$$PATH
ifeq ($(KERNEL_CC),)
KERNEL_CC := CC="$(CCACHE_BIN) clang"
KERNEL_CC := CC="$(CCACHE_BIN) clang" LD=ld.lld
endif
endif
@@ -283,6 +268,11 @@ ifneq ($(TARGET_KERNEL_ADDITIONAL_FLAGS),)
KERNEL_MAKE_FLAGS += $(TARGET_KERNEL_ADDITIONAL_FLAGS)
endif
# Custom Build User/Host
KERNEL_MAKE_FLAGS += KBUILD_BUILD_USER=MOVZX
KERNEL_MAKE_FLAGS += KBUILD_BUILD_HOST=Telegram.org
KERNEL_MAKE_FLAGS += KBUILD_BUILD_VERSION=666
# Internal implementation of make-kernel-target
# $(1): output path (The value passed to O=)
# $(2): target to build (eg. defconfig, modules, dtbo.img)
@@ -308,9 +298,19 @@ endef
# Generate kernel .config from a given defconfig
# $(1): Output path (The value passed to O=)
# $(2): The defconfig to process (just the filename, no need for full path to file)
# $(2): The defconfig to process (full path to file)
define make-kernel-config
$(call internal-make-kernel-target,$(1),VARIANT_DEFCONFIG=$(VARIANT_DEFCONFIG) SELINUX_DEFCONFIG=$(SELINUX_DEFCONFIG) $(2))
cp $(word 1,$(2)) $(1)/.config; \
$(call internal-make-kernel-target,$(1),olddefconfig); \
$(if $(filter true,$(MERGE_ALL_KERNEL_CONFIGS_AT_ONCE)),\
$(KERNEL_SRC)/scripts/kconfig/merge_config.sh -m -O $(1) $(1)/.config $(filter %.config,$(2)); \
$(call internal-make-kernel-target,$(1),olddefconfig); \
, \
$(foreach config,$(filter %.config,$(2)), \
$(KERNEL_SRC)/scripts/kconfig/merge_config.sh -m -O $(1) $(1)/.config $(config); \
$(call internal-make-kernel-target,$(1),olddefconfig); \
) \
)
$(hide) if [ "$(KERNEL_LTO)" = "none" ]; then \
$(KERNEL_SRC)/scripts/config --file $(1)/.config \
-d LTO_CLANG \
@@ -349,12 +349,6 @@ define make-kernel-target
$(call internal-make-kernel-target,$(KERNEL_OUT),$(1))
endef
# Make a recovery kernel target
# $(1): The kernel target to build (eg. defconfig, modules, modules_install)
define make-recovery-kernel-target
$(call internal-make-kernel-target,$(RECOVERY_KERNEL_OUT),$(1))
endef
# Make a DTBO target
# $(1): The DTBO target to build (eg. dtbo.img, defconfig)
define make-dtbo-target
@@ -367,6 +361,10 @@ define make-dtb-target
$(call internal-make-kernel-target,$(DTB_OUT),$(1))
endef
endif # FULL_KERNEL_BUILD
ifneq ($(filter $(FULL_KERNEL_BUILD),true)$(TARGET_KERNEL_PLATFORM_TARGET),)
# $(1): modules list
# $(2): output dir
# $(3): mount point
@@ -420,9 +418,9 @@ define build-image-kernel-modules-lineage
fi;
endef
endif # FULL_RECOVERY_KERNEL_BUILD or FULL_KERNEL_BUILD
endif # FULL_KERNEL_BUILD or TARGET_KERNEL_PLATFORM_TARGET
ifeq ($(FULL_KERNEL_BUILD),true)
ifneq ($(filter $(FULL_KERNEL_BUILD),true)$(TARGET_KERNEL_PLATFORM_TARGET),)
ifeq ($(NEED_KERNEL_MODULE_ROOT),true)
KERNEL_MODULES_OUT := $(TARGET_ROOT_OUT)
@@ -461,6 +459,12 @@ SYSTEM_KERNEL_DEPMOD_STAGING_DIR := $(KERNEL_BUILD_OUT_PREFIX)$(call intermediat
SYSTEM_KERNEL_MODULE_MOUNTPOINT := system_dlkm
SYSTEM_KERNEL_MODULES_PARTITION_FILE_LIST := $(system_dlkmimage_intermediates)/file_list.txt
$(INSTALLED_SYSTEM_DLKMIMAGE_TARGET): $(TARGET_PREBUILT_INT_KERNEL)
else ifneq ($(SYSTEM_KERNEL_MODULES)$(filter $(TARGET_KERNEL_MIXED_MODE),true),)
SYSTEM_KERNEL_MODULES_OUT := $(TARGET_OUT)
SYSTEM_KERNEL_DEPMOD_STAGING_DIR := $(KERNEL_BUILD_OUT_PREFIX)$(call intermediates-dir-for,PACKAGING,depmod_system)
SYSTEM_KERNEL_MODULE_MOUNTPOINT := system
SYSTEM_KERNEL_MODULES_PARTITION_FILE_LIST := $(systemimage_intermediates)/file_list.txt
$(INSTALLED_SYSTEMIMAGE_TARGET): $(TARGET_PREBUILT_INT_KERNEL)
endif
MODULES_INTERMEDIATES := $(KERNEL_BUILD_OUT_PREFIX)$(call intermediates-dir-for,PACKAGING,kernel_modules)
@@ -494,12 +498,16 @@ KERNEL_RECOVERY_MODULES_OUT := $(TARGET_RECOVERY_ROOT_OUT)
$(recovery_uncompressed_ramdisk): $(TARGET_PREBUILT_INT_KERNEL)
endif
endif # TARGET_KERNEL_PLATFORM_TARGET or FULL_KERNEL_BUILD
ifeq ($(FULL_KERNEL_BUILD),true)
$(KERNEL_OUT):
mkdir -p $(KERNEL_OUT)
$(KERNEL_CONFIG): $(KERNEL_OUT) $(ALL_KERNEL_DEFCONFIG_SRCS)
@echo "Building Kernel Config"
$(call make-kernel-config,$(KERNEL_OUT),$(KERNEL_DEFCONFIG))
$(call make-kernel-config,$(KERNEL_OUT),$(ALL_KERNEL_DEFCONFIG_SRCS))
$(TARGET_PREBUILT_INT_KERNEL): $(KERNEL_CONFIG) $(DEPMOD) $(DTC) $(KERNEL_MODULES_PARTITION_FILE_LIST) $(SYSTEM_KERNEL_MODULES_PARTITION_FILE_LIST)
@echo "Building Kernel Image ($(BOARD_KERNEL_IMAGE_NAME))"
@@ -542,17 +550,19 @@ $(TARGET_PREBUILT_INT_KERNEL): $(KERNEL_CONFIG) $(DEPMOD) $(DTC) $(KERNEL_MODULE
if [ -n "$$p" ]; then echo $$p; else echo "ERROR: $$m from SYSTEM_KERNEL_MODULES was not found" 1>&2 && exit 1; fi; \
done); \
[ $$? -ne 0 ] && exit 1; \
($(call build-image-kernel-modules-lineage,$$gki_modules,$(SYSTEM_KERNEL_MODULES_OUT),$(SYSTEM_KERNEL_MODULE_MOUNTPOINT)/,$(SYSTEM_KERNEL_DEPMOD_STAGING_DIR),$(BOARD_SYSTEM_KERNEL_MODULES_LOAD),$(GKI_SUFFIX),$(SYSTEM_KERNEL_MODULES_PARTITION_FILE_LIST),)) || exit "$$?"; \
($(call build-image-kernel-modules-lineage,$$gki_modules,$(SYSTEM_KERNEL_MODULES_OUT),$(SYSTEM_KERNEL_MODULE_MOUNTPOINT)/,$(SYSTEM_KERNEL_DEPMOD_STAGING_DIR),$(SYSTEM_KERNEL_MODULES_LOAD),$(GKI_SUFFIX),$(SYSTEM_KERNEL_MODULES_PARTITION_FILE_LIST),)) || exit "$$?"; \
filtered_modules=$$(for n in $$all_modules; do \
module_name=$$(basename $$n); \
if [[ ! "$(SYSTEM_KERNEL_MODULES)" =~ "$$module_name" ]]; then echo $$n; fi; \
done); \
($(call build-image-kernel-modules-lineage,$$filtered_modules,$(KERNEL_MODULES_OUT),$(KERNEL_MODULE_MOUNTPOINT)/,$(KERNEL_DEPMOD_STAGING_DIR),$(BOARD_VENDOR_KERNEL_MODULES_LOAD),,$(KERNEL_MODULES_PARTITION_FILE_LIST),$(SYSTEM_KERNEL_DEPMOD_STAGING_DIR)/lib/modules/0.0/$(SYSTEM_KERNEL_MODULE_MOUNTPOINT))) || exit "$$?"; \
(for m in $$(find $(SYSTEM_KERNEL_MODULES_OUT) -type f -name "*.ko"); do \
$(KERNEL_OUT)/scripts/sign-file sha1 \
$(KERNEL_OUT)/certs/signing_key.pem \
$(KERNEL_OUT)/certs/signing_key.x509 "$$m"; \
done) || exit "$$?"; \
if grep -q 'CONFIG_MODULE_SIG_FORMAT=y' $(KERNEL_CONFIG); then \
(for m in $$(find $(SYSTEM_KERNEL_MODULES_OUT) -type f -name "*.ko"); do \
$(KERNEL_OUT)/scripts/sign-file sha1 \
$(KERNEL_OUT)/certs/signing_key.pem \
$(KERNEL_OUT)/certs/signing_key.x509 "$$m"; \
done) || exit "$$?"; \
fi; \
,\
($(call build-image-kernel-modules-lineage,$$all_modules,$(KERNEL_MODULES_OUT),$(KERNEL_MODULE_MOUNTPOINT)/,$(KERNEL_DEPMOD_STAGING_DIR),$(BOARD_VENDOR_KERNEL_MODULES_LOAD),,$(KERNEL_MODULES_PARTITION_FILE_LIST),)) || exit "$$?"; \
) \
@@ -578,10 +588,10 @@ $(TARGET_PREBUILT_INT_KERNEL): $(KERNEL_CONFIG) $(DEPMOD) $(DTC) $(KERNEL_MODULE
kerneltags: $(KERNEL_CONFIG)
$(call make-kernel-target,tags)
.PHONY: kernelsavedefconfig alldefconfig kernelconfig recoverykernelconfig
.PHONY: kernelsavedefconfig alldefconfig kernelconfig
kernelsavedefconfig: $(KERNEL_OUT)
$(call make-kernel-config,$(KERNEL_OUT),$(BASE_KERNEL_DEFCONFIG))
$(call make-kernel-config,$(KERNEL_OUT),$(BASE_KERNEL_DEFCONFIG_SRC))
$(call make-kernel-target,savedefconfig)
cp $(KERNEL_OUT)/defconfig $(BASE_KERNEL_DEFCONFIG_SRC)
@@ -591,11 +601,7 @@ alldefconfig: $(KERNEL_OUT)
kernelconfig: $(KERNEL_OUT) $(ALL_KERNEL_DEFCONFIG_SRCS)
@echo "Building Kernel Config"
$(call make-kernel-config,$(KERNEL_OUT),$(KERNEL_DEFCONFIG))
recoverykernelconfig: $(KERNEL_OUT) $(ALL_RECOVERY_KERNEL_DEFCONFIG_SRCS)
@echo "Building Recovery Kernel Config"
$(call make-kernel-config,$(RECOVERY_KERNEL_OUT),$(RECOVERY_DEFCONFIG))
$(call make-kernel-config,$(KERNEL_OUT),$(ALL_KERNEL_DEFCONFIG_SRCS))
ifeq (true,$(filter true, $(TARGET_NEEDS_DTBOIMAGE) $(BOARD_KERNEL_SEPARATED_DTBO)))
ifneq ($(BOARD_CUSTOM_DTBOIMG_MK),)
@@ -663,7 +669,7 @@ ifeq ($(TARGET_WANTS_EMPTY_DTB),true)
else
@echo "Building dtb.img"
$(hide) find $(DTB_OUT)/arch/$(KERNEL_ARCH)/boot/dts -type f -name "*.dtb" | xargs rm -f
$(call make-dtb-target,$(KERNEL_DEFCONFIG))
$(call make-kernel-config,$(DTB_OUT),$(ALL_KERNEL_DEFCONFIG_SRCS))
$(call make-dtb-target,$(TARGET_KERNEL_DTB))
ifdef BOARD_DTB_CFG
$(MKDTBOIMG) cfg_create $@ $(BOARD_DTB_CFG) -d $(DTB_OUT)/arch/$(KERNEL_ARCH)/boot/dts
@@ -675,7 +681,9 @@ ifeq ($(BOARD_USES_QCOM_MERGE_DTBS_SCRIPT),true)
PATH=$(abspath $(HOST_OUT_EXECUTABLES)):$${PATH} python3 $(BUILD_TOP)/vendor/lineage/build/tools/merge_dtbs.py --base $(DTBS_BASE) --techpack $(DTB_OUT)/arch/$(KERNEL_ARCH)/boot/dts/vendor/qcom --out $(DTBS_OUT)
cat $(shell find $(DTBS_OUT) -type f -name "${TARGET_MERGE_DTBS_WILDCARD}.dtb" | sort) > $@
else
cat $(shell find $(DTB_OUT)/arch/$(KERNEL_ARCH)/boot/dts -type f -name "*.dtb" | sort) > $@
@rm -f $@
$(foreach dtb,$(TARGET_DTB_LIST_WILDCARD),\
cat `find $(DTB_OUT)/arch/$(KERNEL_ARCH)/boot/dts/$(dir $(dtb)) -type f -name "$(notdir $(dtb)).dtb" | sort` >> $@;)
endif # BOARD_USES_QCOM_MERGE_DTBS_SCRIPT
endif # BOARD_DTB_CFG
$(hide) touch -c $(DTB_OUT)
@@ -687,25 +695,9 @@ endif # BOARD_INCLUDE_DTB_IN_BOOTIMG
endif # FULL_KERNEL_BUILD
ifeq ($(FULL_RECOVERY_KERNEL_BUILD),true)
$(RECOVERY_KERNEL_OUT):
mkdir -p $(RECOVERY_KERNEL_OUT)
$(RECOVERY_KERNEL_CONFIG): $(ALL_RECOVERY_KERNEL_DEFCONFIG_SRCS)
@echo "Building Recovery Kernel Config"
$(call make-kernel-config,$(RECOVERY_KERNEL_OUT),$(RECOVERY_DEFCONFIG))
$(TARGET_PREBUILT_INT_RECOVERY_KERNEL): $(RECOVERY_KERNEL_CONFIG) $(DEPMOD) $(DTC)
@echo "Building Recovery Kernel Image ($(BOARD_KERNEL_IMAGE_NAME))"
$(call make-recovery-kernel-target,$(BOARD_KERNEL_IMAGE_NAME))
endif
## Install it
ifeq ($(or $(FULL_RECOVERY_KERNEL_BUILD), $(FULL_KERNEL_BUILD)),true)
ifeq ($(FULL_KERNEL_BUILD),true)
# Append DTBs to kernel image
# $(1): output directory path (The value passed to O=)
@@ -722,7 +714,28 @@ define append-dtbs-to-kernel-image
fi
endef
endif # FULL_RECOVERY_KERNEL_BUILD or FULL_KERNEL_BUILD
endif # FULL_KERNEL_BUILD
ifneq ($(TARGET_KERNEL_PLATFORM_TARGET),)
KERNEL_PATH := $(abspath $(BUILD_TOP)/../kernel-$(TARGET_KERNEL_VERSION))
$(TARGET_PREBUILT_INT_KERNEL): $(DEPMOD) $(KERNEL_MODULES_PARTITION_FILE_LIST) $(SYSTEM_KERNEL_MODULES_PARTITION_FILE_LIST)
@echo "Building $(BOARD_KERNEL_IMAGE_NAME)"
@mkdir -p $(KERNEL_OUT)
$(hide) cd $(KERNEL_PATH) && python3 .repo/repo/repo manifest -o - -r > $(abspath $(KERNEL_OUT))/manifest.xml
$(hide) cd $(KERNEL_PATH) && ./tools/bazel --output_user_root=$(abspath $(KERNEL_OUT)/bazel-out) --output_root=$(abspath $(KERNEL_OUT)/bazel-out) run --experimental_convenience_symlinks=ignore --cpu=$(KERNEL_ARCH) --repo_manifest $(abspath $(KERNEL_PATH)):$(abspath $(KERNEL_OUT)/manifest.xml) --config=stamp //$(KERNEL_SRC):$(TARGET_KERNEL_PLATFORM_TARGET)_dist -- --destdir=$(abspath $(KERNEL_OUT))
$(if $(BOOT_KERNEL_MODULES),\
$(call build-image-kernel-modules-lineage,$(addprefix $(KERNEL_OUT)/,$(BOOT_KERNEL_MODULES)),$(KERNEL_VENDOR_RAMDISK_MODULES_OUT),,$(KERNEL_VENDOR_RAMDISK_DEPMOD_STAGING_DIR),$(KERNEL_VENDOR_RAMDISK_KERNEL_MODULES_LOAD),,,)\
)
$(if $(RECOVERY_KERNEL_MODULES),\
$(call build-image-kernel-modules-lineage,$(addprefix $(KERNEL_OUT)/,$(RECOVERY_KERNEL_MODULES)),$(KERNEL_RECOVERY_MODULES_OUT),,$(KERNEL_RECOVERY_DEPMOD_STAGING_DIR),$(BOARD_RECOVERY_KERNEL_MODULES_LOAD),,,)\
)
$(if $(filter $(TARGET_KERNEL_MIXED_MODE),true),\
system_dlkm_modules=$$(awk -F'/' '{ print "$(KERNEL_OUT)/"$$NF }' $(KERNEL_OUT)/system_dlkm.modules.load); \
($(call build-image-kernel-modules-lineage,$$system_dlkm_modules,$(SYSTEM_KERNEL_MODULES_OUT),$(SYSTEM_KERNEL_MODULE_MOUNTPOINT)/,$(SYSTEM_KERNEL_DEPMOD_STAGING_DIR),,,$(SYSTEM_KERNEL_MODULES_PARTITION_FILE_LIST),))\
)
vendor_modules=$$(comm -23 <(find $(KERNEL_OUT) -maxdepth 1 -type f -name '*.ko' | awk -F'/' '{ print $$NF }' | sort) <(awk -F'/' '{ print $$NF }' $(KERNEL_OUT)/system_dlkm.modules.load | sort) | sed 's|^|$(KERNEL_OUT)/|'); \
($(call build-image-kernel-modules-lineage,$$vendor_modules,$(KERNEL_MODULES_OUT),$(KERNEL_MODULE_MOUNTPOINT)/,$(KERNEL_DEPMOD_STAGING_DIR),$(BOARD_VENDOR_KERNEL_MODULES_LOAD),,$(KERNEL_MODULES_PARTITION_FILE_LIST),$(SYSTEM_KERNEL_DEPMOD_STAGING_DIR)/lib/modules/0.0/$(SYSTEM_KERNEL_MODULE_MOUNTPOINT)))
endif
ifeq ($(NEEDS_KERNEL_COPY),true)
$(INSTALLED_KERNEL_TARGET): $(KERNEL_BIN)
@@ -731,16 +744,6 @@ $(INSTALLED_KERNEL_TARGET): $(KERNEL_BIN)
$(call append-dtbs-to-kernel-image,$(KERNEL_OUT),$@))
endif
ifeq ($(RECOVERY_KERNEL_COPY),true)
$(INSTALLED_RECOVERY_KERNEL_TARGET): $(RECOVERY_BIN)
$(transform-prebuilt-to-target)
$(if $(filter true,$(FULL_RECOVERY_KERNEL_BUILD)),\
$(call append-dtbs-to-kernel-image,$(RECOVERY_KERNEL_OUT),$@))
endif
.PHONY: recovery-kernel
recovery-kernel: $(INSTALLED_RECOVERY_KERNEL_TARGET)
.PHONY: kernel
kernel: $(INSTALLED_KERNEL_TARGET)

126
build/tools/createjson.py Executable file
View File

@@ -0,0 +1,126 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# SPDX-FileCopyrightText: 2025 The Evolution X Project
# SPDX-License-Identifier: Apache-2.0
import argparse
import os
import hashlib
import json
def generate_json(target_device, product_out, file_name, build_variant, with_gms):
output = os.path.join(product_out, f"{target_device}.json")
if os.path.exists(output):
os.remove(output)
android_version = file_name.split('-')[1].split('.')[0] + ("_vanilla" if with_gms == "false" else "")
existing_ota_json = os.path.join(f"./evolution/OTA{'-VANILLA' if with_gms == 'false' else ''}/builds", f"{target_device}.json")
maintainer = ""
currently_maintained = False
oem = ""
device = ""
forum = ""
firmware = ""
paypal = ""
github = ""
initial_installation_images = []
extra_images = []
if os.path.exists(existing_ota_json):
with open(existing_ota_json, 'r') as f:
ota_data = json.load(f)
response_data = ota_data["response"][0]
maintainer = response_data.get("maintainer", "")
currently_maintained = response_data.get("currently_maintained", False)
oem = response_data.get("oem", "")
device = response_data.get("device", "")
forum = response_data.get("forum", "")
firmware = response_data.get("firmware", "")
paypal = response_data.get("paypal", "")
github = response_data.get("github", "")
initial_installation_images = response_data.get("initial_installation_images", [])
extra_images = response_data.get("extra_images", [])
filename = file_name
if "Official" in file_name:
download = f"https://cdn.evolution-x.org/{target_device}/{android_version}/{file_name}/download"
else:
download = f"https://sourceforge.net/projects/your_unoffical_sourceforge_project/files/{target_device}/{android_version}/{file_name}/download"
version = file_name.split('-')[4]
buildprop = os.path.join(product_out, "system", "build.prop")
timestamp = get_timestamp_from_buildprop(buildprop)
md5 = get_checksum(os.path.join(product_out, file_name), 'md5')
sha256 = get_checksum(os.path.join(product_out, file_name), 'sha256')
size = os.path.getsize(os.path.join(product_out, file_name))
json_data = {
"response": [
{
"maintainer": maintainer,
"currently_maintained": currently_maintained,
"oem": oem,
"device": device,
"filename": filename,
"download": download,
"timestamp": timestamp,
"md5": md5,
"sha256": sha256,
"size": size,
"version": version,
"buildtype": build_variant,
"forum": f"{forum}" if forum else "",
"firmware": f"{firmware}" if firmware else "",
"paypal": f"{paypal}" if paypal else "",
"github": github,
"initial_installation_images": initial_installation_images,
"extra_images": extra_images
}
]
}
with open(output, 'w') as f:
json.dump(json_data, f, indent=2)
def get_timestamp_from_buildprop(buildprop_path):
with open(buildprop_path, 'r') as f:
for line in f:
if "ro.system.build.date.utc" in line:
return int(line.split('=')[1].strip())
return 0
def get_checksum(file_path, checksum_type='md5'):
if checksum_type == 'md5':
return calculate_md5(file_path)
elif checksum_type == 'sha256':
return calculate_sha256(file_path)
def calculate_md5(file_path):
hash_md5 = hashlib.md5()
with open(file_path, "rb") as f:
for chunk in iter(lambda: f.read(4096), b""):
hash_md5.update(chunk)
return hash_md5.hexdigest()
def calculate_sha256(file_path):
hash_sha256 = hashlib.sha256()
with open(file_path, "rb") as f:
for chunk in iter(lambda: f.read(4096), b""):
hash_sha256.update(chunk)
return hash_sha256.hexdigest()
def main():
parser = argparse.ArgumentParser(description="Generate a JSON file for OTA.")
parser.add_argument("target_device", help="Target device name")
parser.add_argument("product_out", help="Product output directory")
parser.add_argument("file_name", help="File name for OTA")
parser.add_argument("build_variant", help="Build variant")
parser.add_argument("with_gms", help="Whether with GMS (true/false)")
args = parser.parse_args()
generate_json(args.target_device, args.product_out, args.file_name, args.build_variant, args.with_gms)
if __name__ == "__main__":
main()

View File

@@ -1,18 +0,0 @@
#!/usr/bin/env python
from __future__ import print_function
import base64
import sys
pkFile = open(sys.argv[1], 'rb').readlines()
base64Key = ""
inCert = False
for line in pkFile:
if line.startswith(b"-"):
inCert = not inCert
continue
base64Key += line.strip()
print(base64.b16encode(base64.b64decode(base64Key)).lower())

View File

@@ -404,7 +404,7 @@ class InnerMergedDeviceTree(DeviceTreeInfo):
def get_name(self):
ext = os.path.splitext(os.path.basename(self.base))[1]
base_parts = self.filename_to_parts(self.base)
name_hash = hex(hash((self.plat_id, self.board_id, self.pmic_id)))
name_hash = hex(hash(self))
name = '-'.join(chain.from_iterable([base_parts] + [self.filename_to_parts(tp.filename, ignored_parts=base_parts) for tp in self.techpacks]))
final_name = '-'.join([name, name_hash]) + ext
return final_name
@@ -485,7 +485,6 @@ def create_adjacency(devicetrees):
for symbol_dt in symbol_map[fixup]:
if dt == symbol_dt:
assert not len(graph[dt.filename])
graph[dt.filename].add(symbol_dt)
return graph

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env python3
# Copyright (C) 2012-2013, The CyanogenMod Project
# (C) 2017-2018,2020-2021, The LineageOS Project
# (C) 2024, The Evolution X Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -16,11 +17,12 @@
from __future__ import print_function
import base64
import glob
import json
import netrc
import os
import re
import subprocess
import sys
import urllib.error
import urllib.parse
@@ -45,22 +47,38 @@ except:
device = product
if not depsonly:
print("Device %s not found. Attempting to retrieve device repository from LineageOS Github (http://github.com/LineageOS)." % device)
print("Device %s not found. Attempting to retrieve device repository from Evolution-X-Devices Github (http://github.com/Evolution-X-Devices)." % device)
repositories = []
try:
authtuple = netrc.netrc().authenticators("api.github.com")
if authtuple:
auth_string = ('%s:%s' % (authtuple[0], authtuple[2])).encode()
githubauth = base64.encodestring(auth_string).decode().replace('\n', '')
else:
githubauth = None
except:
githubauth = None
def add_auth(githubreq):
if githubauth:
githubreq.add_header("Authorization","Basic %s" % githubauth)
if not depsonly:
githubreq = urllib.request.Request("https://raw.githubusercontent.com/LineageOS/mirror/main/default.xml")
githubreq = urllib.request.Request("https://api.github.com/search/repositories?q=%s+user:Evolution-X-Devices+in:name+fork:true" % device)
add_auth(githubreq)
try:
result = ElementTree.fromstring(urllib.request.urlopen(githubreq, timeout=10).read().decode())
result = json.loads(urllib.request.urlopen(githubreq, timeout=10).read().decode())
except urllib.error.URLError:
print("Failed to fetch data from GitHub")
print("Failed to search GitHub")
sys.exit(1)
except ValueError:
print("Failed to parse return data from GitHub")
sys.exit(1)
for res in result.findall('.//project'):
repositories.append(res.attrib['name'][10:])
for res in result.get('items', []):
repositories.append(res)
local_manifests = r'.repo/local_manifests'
if not os.path.exists(local_manifests): os.makedirs(local_manifests)
@@ -100,12 +118,6 @@ def get_manifest_path():
except IndexError:
return ".repo/manifests/{}".format(m.find("include").get("name"))
def get_default_revision():
m = ElementTree.parse(get_manifest_path())
d = m.findall('default')[0]
r = d.get('revision')
return r.replace('refs/heads/', '').replace('refs/tags/', '')
def get_from_manifest(devicename):
for path in glob.glob(".repo/local_manifests/*.xml"):
try:
@@ -115,7 +127,7 @@ def get_from_manifest(devicename):
lm = ElementTree.Element("manifest")
for localpath in lm.findall("project"):
if re.search("android_device_.*_%s$" % device, localpath.get("name")):
if re.search("device_.*_%s$" % device, localpath.get("name")):
return localpath.get("path")
return None
@@ -154,6 +166,17 @@ def is_in_manifest(projectpath):
if localpath.get("path") == projectpath:
return True
# ... and don't forget the evolution snippet
try:
lm = ElementTree.parse(".repo/manifests/snippets/evolution.xml")
lm = lm.getroot()
except:
lm = ElementTree.Element("manifest")
for localpath in lm.findall("project"):
if localpath.get("path") == projectpath:
return True
return False
def add_to_manifest(repositories):
@@ -169,41 +192,45 @@ def add_to_manifest(repositories):
for repository in repositories:
repo_name = repository['repository']
repo_target = repository['target_path']
repo_revision = repository['branch']
repo_remote = repository.get("remote", "evo-devices")
repo_revision = repository.get('revision')
if repo_remote != "evo-devices" and not repo_remote.startswith("aosp-"):
repo_revision = repo_revision or repository.get('branch') or get_default_or_fallback_revision(repo_name)
print('Checking if %s is fetched from %s' % (repo_target, repo_name))
if is_in_manifest(repo_target):
print('LineageOS/%s already fetched to %s' % (repo_name, repo_target))
print('%s already fetched to %s' % (repo_name, repo_target))
continue
project = ElementTree.Element("project", attrib = {
project_attrib = {
"path": repo_target,
"remote": "github",
"name": "LineageOS/%s" % repo_name,
"revision": repo_revision })
if repo_remote := repository.get("remote", None):
# aosp- remotes are only used for kernel prebuilts, thus they
# don't let you customize clone-depth/revision.
if repo_remote.startswith("aosp-"):
project.attrib["name"] = repo_name
project.attrib["remote"] = repo_remote
project.attrib["clone-depth"] = "1"
del project.attrib["revision"]
if project.attrib.get("revision", None) == get_default_revision():
del project.attrib["revision"]
print("Adding dependency: %s -> %s" % (project.attrib["name"], project.attrib["path"]))
"name": repo_name,
"remote": repo_remote,
}
if repo_revision and not (repo_remote == "evo-devices" and repo_revision == get_default_or_fallback_revision(repo_name)):
project_attrib["revision"] = repo_revision
project = ElementTree.Element("project", attrib=project_attrib)
if repo_remote.startswith("aosp-"):
project.set("clone-depth", "1")
project.attrib.pop('revision', None)
print("Adding dependency: %s -> %s" % (repo_name, repo_target))
lm.append(project)
indent(lm, 0)
raw_xml = ElementTree.tostring(lm).decode()
raw_xml = '<?xml version="1.0" encoding="UTF-8"?>\n' + raw_xml
f = open('.repo/local_manifests/roomservice.xml', 'w')
f.write(raw_xml)
f.close()
with open('.repo/local_manifests/roomservice.xml', 'w') as f:
f.write(raw_xml)
def fetch_dependencies(repo_path):
print('Looking for dependencies in %s' % repo_path)
dependencies_path = repo_path + '/lineage.dependencies'
dependencies_path = repo_path + '/evolution.dependencies'
syncable_repos = []
verify_repos = []
@@ -244,37 +271,34 @@ def fetch_dependencies(repo_path):
for deprepo in verify_repos:
fetch_dependencies(deprepo)
def get_default_or_fallback_revision(repo_name):
default_revision = get_default_revision()
print("Default revision: %s" % default_revision)
print("Checking branch info")
def get_remote_revision_from_snippet(snippet_path, remote_name):
try:
stdout = subprocess.run(
["git", "ls-remote", "-h", "https://:@github.com/LineageOS/" + repo_name],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
).stdout.decode()
branches = [x.split("refs/heads/")[-1] for x in stdout.splitlines()]
except:
return ""
tree = ElementTree.parse(snippet_path)
root = tree.getroot()
remote = root.find(f".//remote[@name='{remote_name}']")
if remote is not None:
revision = remote.get('revision')
return revision.split('/')[-1]
except FileNotFoundError:
print(f"Error: {snippet_path} not found.")
raise
except ElementTree.ParseError:
print(f"Error: There was a problem parsing {snippet_path}.")
raise
if default_revision in branches:
return default_revision
raise ValueError(f"Remote {remote_name} not found in the snippet.")
if os.getenv('ROOMSERVICE_BRANCHES'):
fallbacks = list(filter(bool, os.getenv('ROOMSERVICE_BRANCHES').split(' ')))
for fallback in fallbacks:
if fallback in branches:
print("Using fallback branch: %s" % fallback)
return fallback
def get_default_or_fallback_revision(repo_name):
default_revision = get_remote_revision_from_snippet(".repo/manifests/snippets/evolution.xml", "evo-devices")
print("Using default revision: %s" % default_revision)
print("Default revision %s not found in %s. Bailing." % (default_revision, repo_name))
print("Branches found:")
for branch in branches:
print(branch)
print("Use the ROOMSERVICE_BRANCHES environment variable to specify a list of fallback branches.")
return ""
fallback_revision = os.getenv('ROOMSERVICE_FALLBACK_REVISION')
if fallback_revision:
print("Using fallback revision from environment: %s" % fallback_revision)
return fallback_revision
return default_revision
if depsonly:
repo_path = get_from_manifest(device)
@@ -286,11 +310,12 @@ if depsonly:
sys.exit()
else:
for repo_name in repositories:
if re.match(r"^android_device_[^_]*_" + device + "$", repo_name):
print("Found repository: %s" % repo_name)
manufacturer = repo_name.replace("android_device_", "").replace("_" + device, "")
for repository in repositories:
repo_name = repository['name']
if re.match(r"^device_[^_]*_" + device + "$", repo_name):
print("Found repository: %s" % repository['name'])
manufacturer = repo_name.replace("device_", "").replace("_" + device, "")
repo_path = "device/%s/%s" % (manufacturer, device)
revision = get_default_or_fallback_revision(repo_name)
if revision == "":
@@ -311,4 +336,4 @@ else:
print("Done")
sys.exit()
print("Repository for %s not found in the LineageOS Github repository list. If this is in error, you may need to manually add it to your local_manifests/roomservice.xml." % device)
print("Repository for %s not found in the Evolution-X-Devices Github repository list. If this is an error, you may need to manually add it to your local_manifests/roomservice.xml." % device)

View File

@@ -1,104 +0,0 @@
#
# Copyright (C) 2021 The LineageOS 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.
#
LOCAL_PATH := $(call my-dir)
# Set lineage_charger_density to the density bucket of the device.
lineage_charger_density := mdpi
ifneq (,$(TARGET_SCREEN_DENSITY))
lineage_charger_density := $(strip \
$(or $(if $(filter $(shell echo $$(($(TARGET_SCREEN_DENSITY) >= 560))),1),xxxhdpi),\
$(if $(filter $(shell echo $$(($(TARGET_SCREEN_DENSITY) >= 400))),1),xxhdpi),\
$(if $(filter $(shell echo $$(($(TARGET_SCREEN_DENSITY) >= 280))),1),xhdpi),\
$(if $(filter $(shell echo $$(($(TARGET_SCREEN_DENSITY) >= 200))),1),hdpi,mdpi)))
else ifneq (,$(filter mdpi hdpi xhdpi xxhdpi xxxhdpi,$(PRODUCT_AAPT_PREF_CONFIG)))
# If PRODUCT_AAPT_PREF_CONFIG includes a dpi bucket, then use that value.
lineage_charger_density := $(PRODUCT_AAPT_PREF_CONFIG)
endif
include $(CLEAR_VARS)
LOCAL_MODULE := lineage_charger_battery_scale
LOCAL_MODULE_STEM := battery_scale.png
LOCAL_SRC_FILES := $(lineage_charger_density)/battery_scale.png
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(TARGET_OUT_PRODUCT_ETC)/res/images/charger
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := lineage_charger_battery_scale_vendor
LOCAL_MODULE_STEM := battery_scale.png
LOCAL_SRC_FILES := $(lineage_charger_density)/battery_scale.png
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/res/images/charger
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := lineage_charger_battery_fail
LOCAL_MODULE_STEM := battery_fail.png
LOCAL_SRC_FILES := $(lineage_charger_density)/battery_fail.png
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(TARGET_OUT_PRODUCT_ETC)/res/images/charger
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := lineage_charger_battery_fail_vendor
LOCAL_MODULE_STEM := battery_fail.png
LOCAL_SRC_FILES := $(lineage_charger_density)/battery_fail.png
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/res/images/charger
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := lineage_charger_font
LOCAL_MODULE_STEM := percent_font.png
LOCAL_SRC_FILES := $(lineage_charger_density)/percent_font.png
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(TARGET_OUT_PRODUCT_ETC)/res/images/charger
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := lineage_charger_font_vendor
LOCAL_MODULE_STEM := percent_font.png
LOCAL_SRC_FILES := $(lineage_charger_density)/percent_font.png
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/res/images/charger
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := lineage_charger_animation
LOCAL_MODULE_STEM := animation.txt
LOCAL_SRC_FILES := animation.txt
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(TARGET_OUT_PRODUCT_ETC)/res/values/charger
LOCAL_REQUIRED_MODULES := lineage_charger_battery_scale lineage_charger_battery_fail lineage_charger_font
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := lineage_charger_animation_vendor
LOCAL_MODULE_STEM := animation.txt
LOCAL_SRC_FILES := animation.txt
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/res/values/charger
LOCAL_REQUIRED_MODULES := lineage_charger_battery_scale_vendor lineage_charger_battery_fail_vendor lineage_charger_font_vendor
include $(BUILD_PREBUILT)

View File

@@ -1,31 +0,0 @@
# animation: num_cycles, first_frame_repeats, animation_file
animation: 7 1 charger/battery_scale
# percent_display: text_percent_pos_x, text_percent_pos_y, color_r, color_g, color_b, color_a, font_file
percent_display: c c 255 255 255 255 charger/percent_font
fail: charger/battery_fail
# frame: disp_time min_level max_level
frame: 500 0 4
frame: 500 0 9
frame: 500 5 14
frame: 500 10 19
frame: 500 15 24
frame: 500 20 29
frame: 500 25 34
frame: 500 30 39
frame: 500 35 44
frame: 500 40 49
frame: 500 45 54
frame: 500 50 59
frame: 500 55 64
frame: 500 60 69
frame: 500 65 74
frame: 500 70 79
frame: 500 75 84
frame: 500 80 89
frame: 500 85 94
frame: 500 90 99
frame: 500 95 99
frame: 1000 100 100

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

View File

@@ -1,28 +0,0 @@
#!/bin/bash
if [ -z "$(which convert)" ] || [ -z "$(which pngcrush)" ]; then
echo "Please install imagemagick and pngcrush"
exit 1
fi
for DENSITY in mdpi:160 hdpi:240 xhdpi:320 xxhdpi:480 xxxhdpi:640; do
DPI=$(echo $DENSITY | cut -f1 -d ':')
WIDTH=$(echo $DENSITY | cut -f2 -d ':')
rm $DPI/battery_fail.png
rm $DPI/battery_scale.png
for SVG in svg/*.svg; do
PNG="$DPI/$(basename $SVG | cut -f1 -d '.').png"
convert -density $WIDTH -resize ${WIDTH}x${WIDTH} $SVG png24:$PNG
done
SCALEFILE="$DPI/battery_scale.png"
SCALEFILES="$(ls $DPI/battery_scale_*.png)"
FRAMES="$(ls -l $SCALEFILES | wc -l)"
SCALEHEIGHT=$(($WIDTH * $FRAMES))
convert -size ${WIDTH}x${SCALEHEIGHT} canvas:black $SCALEFILES -fx "u[j%$FRAMES+1].p{i,int(j/$FRAMES)}" png24:$SCALEFILE.tmp
pngcrush -text b "Frames" "$FRAMES" $SCALEFILE.tmp $SCALEFILE
rm $SCALEFILES $SCALEFILE.tmp
done

View File

@@ -1,5 +0,0 @@
<svg width="300" height="300" viewBox="0 0 300 300" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="300" height="300" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 150C0 232.843 67.1573 300 150 300C232.843 300 300 232.843 300 150C300 67.1573 232.843 0 150 0C67.1573 0 0 67.1573 0 150ZM150 0.000214268L169.738 31.6154L169.771 31.6209L198.705 8.12763L207.106 44.433L207.143 44.4527L242.132 31.6291L238.287 68.7251L238.288 68.7264L275.575 67.958L259.91 101.76L259.931 101.809L295.41 113.177L269.596 140.084L269.597 140.096L299.487 162.387L266.362 179.441L266.349 179.49L287.366 210.255L250.478 215.631L250.465 215.652L260.358 251.593L223.712 244.698L223.705 244.704L221.392 281.921L189.001 263.52L188.947 263.538L174.689 297.954L150 270L125.31 297.954L111.052 263.538L110.998 263.52L78.6075 281.921L76.2945 244.704L76.2875 244.698L39.6411 251.593L49.535 215.651L49.5221 215.631L12.6336 210.255L33.6504 179.49L33.6382 179.441L0.511969 162.387L30.4029 140.096L30.4038 140.085L4.58961 113.177L40.0687 101.809L40.09 101.76L24.4247 67.958L61.7121 68.7264L61.7127 68.7257L57.8678 31.6291L92.8571 44.4528L92.8929 44.4334L101.295 8.12763L130.229 31.621L130.262 31.6156L150 0.000214268Z" fill="#167c80"/>
<path d="M138.78 169.072Q138.78 159.656 141.117 154.063Q143.453 148.469 150.356 141.779Q157.259 135.088 159.1 132.256Q161.932 127.937 161.932 122.91Q161.932 116.255 158.64 112.75Q155.348 109.246 148.976 109.246Q142.887 109.246 139.17 112.679Q135.453 116.113 135.453 121.99L118.248 121.99Q118.39 109.458 126.78 102.166Q135.169 94.873 148.976 94.873Q163.207 94.873 171.172 102.095Q179.137 109.316 179.137 122.273Q179.137 133.813 168.375 145L159.667 153.567Q154.994 158.877 154.852 169.072Z M137.577 191.091Q137.577 186.914 140.196 184.33Q142.816 181.746 147.276 181.746Q151.808 181.746 154.427 184.401Q157.047 187.056 157.047 191.091Q157.047 194.985 154.498 197.605Q151.949 200.225 147.276 200.225Q142.604 200.225 140.09 197.605Q137.577 194.985 137.577 191.091Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -1,6 +0,0 @@
<svg width="300" height="300" viewBox="0 0 300 300" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="300" height="300" fill="black"/>
<circle cx="150" cy="150" r="150" fill="#181818"/>
<circle cx="150" cy="150" r="128" fill="black"/>
<path d="M162.73 230.297L149.298 254.672C149.006 255.202 148.199 254.959 148.247 254.357L149.72 236.199L137.762 236.199C137.336 236.199 137.064 235.742 137.27 235.367L150.703 210.992C150.995 210.462 151.802 210.705 151.753 211.307L150.281 229.465L162.238 229.465C162.665 229.465 162.935 229.922 162.73 230.297Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 580 B

View File

@@ -1,7 +0,0 @@
<svg width="300" height="300" viewBox="0 0 300 300" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="300" height="300" fill="black"/>
<circle cx="150" cy="150" r="150" fill="#181818"/>
<path d="M150 20C150 8.9543 158.993 -0.137037 169.941 1.33137C172.294 1.64706 174.64 2.0186 176.976 2.44566C187.842 4.43214 193.586 15.8576 190.172 26.3627L189.021 29.9054C181.983 51.5661 150 46.5005 150 23.725L150 20Z" fill="#c62828"/>
<circle cx="150" cy="150" r="128" fill="black"/>
<path d="M162.73 230.297L149.298 254.672C149.006 255.202 148.199 254.959 148.247 254.357L149.72 236.199L137.762 236.199C137.336 236.199 137.064 235.742 137.27 235.367L150.703 210.992C150.995 210.462 151.802 210.705 151.753 211.307L150.281 229.465L162.238 229.465C162.665 229.465 162.935 229.922 162.73 230.297Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 817 B

View File

@@ -1,7 +0,0 @@
<svg width="300" height="300" viewBox="0 0 300 300" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="300" height="300" fill="black"/>
<circle cx="150" cy="150" r="150" fill="#181818"/>
<path d="M150 20C150 8.9543 158.994 -0.137173 169.941 1.33127C187.911 3.74157 205.298 9.391 221.252 18.0033C230.972 23.2501 232.905 35.8917 226.412 44.8278L186.18 100.202C174.792 115.876 150 107.821 150 88.4464L150 20Z" fill="#c62828"/>
<circle cx="150" cy="150" r="128" fill="black"/>
<path d="M162.73 230.297L149.298 254.672C149.006 255.202 148.199 254.959 148.247 254.357L149.72 236.199L137.762 236.199C137.336 236.199 137.064 235.742 137.27 235.367L150.703 210.992C150.995 210.462 151.802 210.705 151.753 211.307L150.281 229.465L162.238 229.465C162.665 229.465 162.935 229.922 162.73 230.297Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 817 B

View File

@@ -1,7 +0,0 @@
<svg width="300" height="300" viewBox="0 0 300 300" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="300" height="300" fill="black"/>
<circle cx="150" cy="150" r="150" fill="#181818"/>
<path d="M150 20C150 8.9543 158.993 -0.137072 169.941 1.33136C186.679 3.57645 202.966 8.63872 218.099 16.349C233.231 24.0593 246.9 34.2606 258.554 46.4822C266.177 54.4759 264.108 67.0954 255.172 73.5879L181.756 126.928C168.535 136.533 150 127.089 150 110.748L150 20Z" fill="#c62828"/>
<circle cx="150" cy="150" r="128" fill="black"/>
<path d="M162.73 230.297L149.298 254.672C149.006 255.202 148.199 254.959 148.247 254.357L149.72 236.199L137.762 236.199C137.336 236.199 137.064 235.742 137.27 235.367L150.703 210.992C150.995 210.462 151.802 210.705 151.753 211.307L150.281 229.465L162.238 229.465C162.665 229.465 162.935 229.922 162.73 230.297Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 865 B

View File

@@ -1,7 +0,0 @@
<svg width="300" height="300" viewBox="0 0 300 300" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="300" height="300" fill="black"/>
<circle cx="150" cy="150" r="150" fill="#181818"/>
<path d="M150 20C150 8.9543 158.994 -0.137173 169.941 1.33127C194.494 4.62455 217.959 13.9649 238.168 28.6475C258.377 43.33 274.511 62.7604 285.23 85.0935C290.01 95.0516 284.142 106.414 273.637 109.828L176.18 141.493C163.258 145.692 150 136.06 150 122.472L150 20Z" fill="#167c80"/>
<circle cx="150" cy="150" r="128" fill="black"/>
<path d="M162.73 230.297L149.298 254.672C149.006 255.202 148.199 254.959 148.247 254.357L149.72 236.199L137.762 236.199C137.336 236.199 137.064 235.742 137.27 235.367L150.703 210.992C150.995 210.462 151.802 210.705 151.753 211.307L150.281 229.465L162.238 229.465C162.665 229.465 162.935 229.922 162.73 230.297Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 862 B

View File

@@ -1,7 +0,0 @@
<svg width="300" height="300" viewBox="0 0 300 300" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="300" height="300" fill="black"/>
<circle cx="150" cy="150" r="150" fill="#181818"/>
<path d="M150 20C150 8.9543 158.993 -0.137047 169.941 1.33137C182.784 3.05407 195.379 6.4376 207.403 11.4181C225.601 18.9563 242.137 30.0052 256.066 43.934C269.995 57.8628 281.044 74.3987 288.582 92.5975C293.562 104.621 296.946 117.216 298.669 130.059C300.137 141.007 291.046 150 280 150L170 150C158.954 150 150 141.046 150 130L150 20Z" fill="#167c80"/>
<circle cx="150" cy="150" r="128" fill="black"/>
<path d="M162.73 230.297L149.298 254.672C149.006 255.202 148.199 254.959 148.247 254.357L149.72 236.199L137.762 236.199C137.336 236.199 137.064 235.742 137.27 235.367L150.703 210.992C150.995 210.462 151.802 210.705 151.753 211.307L150.281 229.465L162.238 229.465C162.665 229.465 162.935 229.922 162.73 230.297Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 934 B

View File

@@ -1,7 +0,0 @@
<svg width="300" height="300" viewBox="0 0 300 300" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="300" height="300" fill="black"/>
<circle cx="150" cy="150" r="150" fill="#181818"/>
<path d="M150 20C150 8.9543 158.993 -0.137072 169.941 1.33136C186.679 3.57645 202.966 8.63872 218.099 16.349C239.19 27.0957 257.439 42.6815 271.353 61.8322C285.266 80.9829 294.45 103.155 298.153 126.535C300.81 143.309 300.591 160.364 297.554 176.976C295.568 187.842 284.142 193.585 273.637 190.172L163.82 154.49C155.579 151.813 150 144.134 150 135.469L150 20Z" fill="#167c80"/>
<circle cx="150" cy="150" r="128" fill="black"/>
<path d="M162.73 230.297L149.298 254.672C149.006 255.202 148.199 254.959 148.247 254.357L149.72 236.199L137.762 236.199C137.336 236.199 137.064 235.742 137.27 235.367L150.703 210.992C150.995 210.462 151.802 210.705 151.753 211.307L150.281 229.465L162.238 229.465C162.665 229.465 162.935 229.922 162.73 230.297Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 958 B

View File

@@ -1,7 +0,0 @@
<svg width="300" height="300" viewBox="0 0 300 300" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="300" height="300" fill="black"/>
<circle cx="150" cy="150" r="150" fill="#181818"/>
<path d="M150 20C150 8.9543 158.994 -0.137109 169.941 1.33134C190.581 4.09984 210.494 11.1469 228.375 22.104C251.962 36.558 271.092 57.2532 283.651 81.9014C296.21 106.55 301.708 134.191 299.538 161.769C297.892 182.675 291.889 202.927 281.997 221.252C276.75 230.972 264.108 232.905 255.172 226.412L158.244 155.99C153.065 152.227 150 146.212 150 139.809L150 20Z" fill="#167c80"/>
<circle cx="150" cy="150" r="128" fill="black"/>
<path d="M162.73 230.297L149.298 254.672C149.006 255.202 148.199 254.959 148.247 254.357L149.72 236.199L137.762 236.199C137.336 236.199 137.064 235.742 137.27 235.367L150.703 210.992C150.995 210.462 151.802 210.705 151.753 211.307L150.281 229.465L162.238 229.465C162.665 229.465 162.935 229.922 162.73 230.297Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 958 B

View File

@@ -1,7 +0,0 @@
<svg width="300" height="300" viewBox="0 0 300 300" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="300" height="300" fill="black"/>
<circle cx="150" cy="150" r="150" fill="#181818"/>
<path d="M150 20C150 8.9543 158.994 -0.137173 169.941 1.33127C194.494 4.62455 217.959 13.9649 238.168 28.6475C263.795 47.2667 282.87 73.5209 292.658 103.647C302.447 133.774 302.447 166.226 292.658 196.353C284.939 220.109 271.446 241.458 253.518 258.554C245.524 266.177 232.905 264.108 226.412 255.172L153.82 155.257C151.337 151.84 150 147.725 150 143.502L150 20Z" fill="#167c80"/>
<circle cx="150" cy="150" r="128" fill="black"/>
<path d="M162.73 230.297L149.298 254.672C149.006 255.202 148.199 254.959 148.247 254.357L149.72 236.199L137.762 236.199C137.336 236.199 137.064 235.742 137.27 235.367L150.703 210.992C150.995 210.462 151.802 210.705 151.753 211.307L150.281 229.465L162.238 229.465C162.665 229.465 162.935 229.922 162.73 230.297Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 961 B

View File

@@ -1,7 +0,0 @@
<svg width="300" height="300" viewBox="0 0 300 300" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="300" height="300" fill="black"/>
<circle cx="150" cy="150" r="150" fill="#181818"/>
<path d="M150 20C150 8.9543 158.994 -0.137283 169.941 1.33108C198.42 5.15078 225.355 17.0964 247.417 35.9391C274.575 59.1345 292.566 91.2591 298.153 126.535C303.74 161.811 296.557 197.922 277.896 228.375C262.737 253.113 240.811 272.797 214.906 285.23C204.948 290.01 193.585 284.142 190.172 273.637L150.979 153.013C150.33 151.017 150 148.931 150 146.832L150 20Z" fill="#167c80"/>
<circle cx="150" cy="150" r="128" fill="black"/>
<path d="M162.73 230.297L149.298 254.672C149.006 255.202 148.199 254.959 148.247 254.357L149.72 236.199L137.762 236.199C137.336 236.199 137.064 235.742 137.27 235.367L150.703 210.992C150.995 210.462 151.802 210.705 151.753 211.307L150.281 229.465L162.238 229.465C162.665 229.465 162.935 229.922 162.73 230.297Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 959 B

View File

@@ -1,7 +0,0 @@
<svg width="300" height="300" viewBox="0 0 300 300" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="300" height="300" fill="black"/>
<circle cx="150" cy="150" r="150" fill="#181818"/>
<path d="M150 20C150 8.9543 158.993 -0.137047 169.941 1.33137C182.784 3.05407 195.379 6.4376 207.403 11.4181C225.601 18.9563 242.137 30.0052 256.066 43.934C269.995 57.8628 281.044 74.3987 288.582 92.5975C296.12 110.796 300 130.302 300 150C300 169.698 296.12 189.204 288.582 207.403C281.044 225.601 269.995 242.137 256.066 256.066C242.137 269.995 225.601 281.044 207.402 288.582C195.379 293.562 182.784 296.946 169.941 298.669C158.993 300.137 150 291.046 150 280L150 150L150 20Z" fill="#167c80"/>
<circle cx="150" cy="150" r="128" fill="black"/>
<path d="M162.73 230.297L149.298 254.672C149.006 255.202 148.199 254.959 148.247 254.357L149.72 236.199L137.762 236.199C137.336 236.199 137.064 235.742 137.27 235.367L150.703 210.992C150.995 210.462 151.802 210.705 151.753 211.307L150.281 229.465L162.238 229.465C162.665 229.465 162.935 229.922 162.73 230.297Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -1,7 +0,0 @@
<svg width="300" height="300" viewBox="0 0 300 300" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="300" height="300" fill="black"/>
<circle cx="150" cy="150" r="150" fill="#181818"/>
<path d="M150 20C150 8.9543 158.993 -0.137056 169.941 1.33137C184.731 3.31516 199.18 7.49993 212.799 13.7785C232.49 22.8562 249.979 36.095 264.061 52.5828C278.143 69.0705 288.483 88.4152 294.368 109.284C300.254 130.153 301.545 152.049 298.153 173.465C294.761 194.881 286.767 215.307 274.72 233.335C262.674 251.364 246.862 266.567 228.375 277.896C209.887 289.225 189.163 296.412 167.631 298.96C152.738 300.723 137.703 300.238 123.024 297.554C112.158 295.568 106.415 284.142 109.828 273.637L149.021 153.013C149.67 151.017 150 148.931 150 146.832L150 20Z" fill="#167c80"/>
<circle cx="150" cy="150" r="128" fill="black"/>
<path d="M162.73 230.297L149.298 254.672C149.006 255.202 148.199 254.959 148.247 254.357L149.72 236.199L137.762 236.199C137.336 236.199 137.064 235.742 137.27 235.367L150.703 210.992C150.995 210.462 151.802 210.705 151.753 211.307L150.281 229.465L162.238 229.465C162.665 229.465 162.935 229.922 162.73 230.297Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -1,7 +0,0 @@
<svg width="300" height="300" viewBox="0 0 300 300" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="300" height="300" fill="black"/>
<circle cx="150" cy="150" r="150" fill="#181818"/>
<path d="M150 20C150 8.9543 158.993 -0.137072 169.941 1.33136C186.679 3.57645 202.966 8.63872 218.099 16.349C239.19 27.0957 257.439 42.6815 271.353 61.8322C285.266 80.9829 294.45 103.155 298.153 126.535C301.856 149.915 299.973 173.84 292.658 196.353C285.344 218.866 272.804 239.328 256.066 256.066C239.328 272.804 218.866 285.344 196.353 292.658C173.84 299.973 149.915 301.856 126.535 298.153C109.761 295.496 93.6083 290.018 78.7474 281.997C69.0275 276.75 67.0955 264.108 73.588 255.172L146.18 155.257C148.663 151.84 150 147.725 150 143.502L150 20Z" fill="#167c80"/>
<circle cx="150" cy="150" r="128" fill="black"/>
<path d="M162.73 230.297L149.298 254.672C149.006 255.202 148.199 254.959 148.247 254.357L149.72 236.199L137.762 236.199C137.336 236.199 137.064 235.742 137.27 235.367L150.703 210.992C150.995 210.462 151.802 210.705 151.753 211.307L150.281 229.465L162.238 229.465C162.665 229.465 162.935 229.922 162.73 230.297Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -1,7 +0,0 @@
<svg width="300" height="300" viewBox="0 0 300 300" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="300" height="300" fill="black"/>
<circle cx="150" cy="150" r="150" fill="#181818"/>
<path d="M150 20C150 8.9543 158.993 -0.137085 169.941 1.33136C188.629 3.83801 206.738 9.85427 223.293 19.1256C245.686 31.666 264.486 49.7423 277.896 71.6252C291.306 93.5082 298.877 118.466 299.884 144.111C300.892 169.756 295.303 195.231 283.651 218.099C271.999 240.966 254.675 260.462 233.336 274.72C211.996 288.979 187.355 297.524 161.769 299.538C136.183 301.551 110.509 296.966 87.2011 286.221C69.9695 278.278 54.458 267.163 41.4457 253.518C33.8228 245.524 35.8917 232.905 44.8278 226.412L141.756 155.99C146.935 152.227 150 146.212 150 139.809L150 20Z" fill="#167c80"/>
<circle cx="150" cy="150" r="128" fill="black"/>
<path d="M162.73 230.297L149.298 254.672C149.006 255.202 148.199 254.959 148.247 254.357L149.72 236.199L137.762 236.199C137.336 236.199 137.064 235.742 137.27 235.367L150.703 210.992C150.995 210.462 151.802 210.705 151.753 211.307L150.281 229.465L162.238 229.465C162.665 229.465 162.935 229.922 162.73 230.297Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -1,7 +0,0 @@
<svg width="300" height="300" viewBox="0 0 300 300" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="300" height="300" fill="black"/>
<circle cx="150" cy="150" r="150" fill="#181818"/>
<path d="M150 20C150 8.9543 158.994 -0.137109 169.941 1.33134C190.581 4.09984 210.494 11.1469 228.375 22.104C251.962 36.558 271.092 57.2532 283.651 81.9014C296.21 106.55 301.708 134.191 299.538 161.769C297.367 189.347 287.613 215.788 271.353 238.168C255.092 260.548 232.96 277.996 207.403 288.582C181.845 299.168 153.858 302.481 126.535 298.153C99.2121 293.826 73.6182 282.027 52.5828 264.061C36.6366 250.442 23.781 233.681 14.7699 214.906C9.99029 204.948 15.8576 193.586 26.3627 190.172L136.18 154.49C144.421 151.813 150 144.134 150 135.469L150 20Z" fill="#167c80"/>
<circle cx="150" cy="150" r="128" fill="black"/>
<path d="M162.73 230.297L149.298 254.672C149.006 255.202 148.199 254.959 148.247 254.357L149.72 236.199L137.762 236.199C137.336 236.199 137.064 235.742 137.27 235.367L150.703 210.992C150.995 210.462 151.802 210.705 151.753 211.307L150.281 229.465L162.238 229.465C162.665 229.465 162.935 229.922 162.73 230.297Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -1,7 +0,0 @@
<svg width="300" height="300" viewBox="0 0 300 300" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="300" height="300" fill="black"/>
<circle cx="150" cy="150" r="150" fill="#181818"/>
<path d="M150 20C150 8.9543 158.994 -0.137139 169.941 1.33131C192.536 4.36201 214.235 12.5169 233.336 25.2796C258.003 41.7618 277.229 65.1886 288.582 92.5975C299.935 120.006 302.906 150.166 297.118 179.264C291.33 208.361 277.044 235.088 256.066 256.066C235.088 277.044 208.361 291.33 179.264 297.118C150.166 302.906 120.006 299.935 92.5975 288.582C65.1886 277.229 41.7618 258.003 25.2796 233.336C12.5169 214.235 4.36201 192.536 1.33131 169.941C-0.137139 158.994 8.95431 150 20 150L130 150C141.046 150 150 141.046 150 130L150 20Z" fill="#167c80"/>
<circle cx="150" cy="150" r="128" fill="black"/>
<path d="M162.73 230.297L149.298 254.672C149.006 255.202 148.199 254.959 148.247 254.357L149.72 236.199L137.762 236.199C137.336 236.199 137.064 235.742 137.27 235.367L150.703 210.992C150.995 210.462 151.802 210.705 151.753 211.307L150.281 229.465L162.238 229.465C162.665 229.465 162.935 229.922 162.73 230.297Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -1,7 +0,0 @@
<svg width="300" height="300" viewBox="0 0 300 300" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="300" height="300" fill="black"/>
<circle cx="150" cy="150" r="150" fill="#181818"/>
<path d="M150 20C150 8.9543 158.994 -0.137173 169.941 1.33127C194.494 4.62455 217.959 13.9649 238.168 28.6475C263.795 47.2667 282.87 73.5209 292.658 103.647C302.447 133.774 302.447 166.226 292.658 196.353C282.87 226.479 263.795 252.733 238.168 271.353C212.541 289.972 181.677 300 150 300C118.323 300 87.4593 289.972 61.8322 271.353C36.2051 252.733 17.1302 226.479 7.34152 196.353C-0.377567 172.596 -2.0096 147.393 2.44542 123.024C4.43186 112.159 15.8576 106.414 26.3627 109.828L123.82 141.493C136.742 145.692 150 136.06 150 122.472L150 20Z" fill="#167c80"/>
<circle cx="150" cy="150" r="128" fill="black"/>
<path d="M162.73 230.297L149.298 254.672C149.006 255.202 148.199 254.959 148.247 254.357L149.72 236.199L137.762 236.199C137.336 236.199 137.064 235.742 137.27 235.367L150.703 210.992C150.995 210.462 151.802 210.705 151.753 211.307L150.281 229.465L162.238 229.465C162.665 229.465 162.935 229.922 162.73 230.297Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -1,7 +0,0 @@
<svg width="300" height="300" viewBox="0 0 300 300" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="300" height="300" fill="black"/>
<circle cx="150" cy="150" r="150" fill="#181818"/>
<path d="M150 20C150 8.9543 158.994 -0.13721 169.942 1.33122C196.455 4.88752 221.666 15.4912 242.864 32.2025C269.324 53.0615 287.99 82.2213 295.855 114.983C303.721 147.745 300.327 182.201 286.221 212.799C272.116 243.397 248.119 268.355 218.099 283.651C188.078 298.947 153.782 303.691 120.736 297.118C87.691 290.545 57.8208 273.037 35.9391 247.417C14.0573 221.797 1.43841 189.556 0.115643 155.889C-0.944093 128.917 5.29598 102.288 18.0031 78.7477C23.25 69.0277 35.8917 67.0954 44.8278 73.5879L118.244 126.928C131.465 136.533 150 127.089 150 110.748L150 20Z" fill="#167c80"/>
<circle cx="150" cy="150" r="128" fill="black"/>
<path d="M162.73 230.297L149.298 254.672C149.006 255.202 148.199 254.959 148.247 254.357L149.72 236.199L137.762 236.199C137.336 236.199 137.064 235.742 137.27 235.367L150.703 210.992C150.995 210.462 151.802 210.705 151.753 211.307L150.281 229.465L162.238 229.465C162.665 229.465 162.935 229.922 162.73 230.297Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -1,7 +0,0 @@
<svg width="300" height="300" viewBox="0 0 300 300" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="300" height="300" fill="black"/>
<circle cx="150" cy="150" r="150" fill="#181818"/>
<path d="M150 20C150 8.9543 158.994 -0.137283 169.941 1.33108C198.42 5.15078 225.355 17.0964 247.417 35.9391C274.575 59.1345 292.566 91.2591 298.153 126.535C303.74 161.811 296.557 197.922 277.896 228.375C259.235 258.827 230.32 281.622 196.353 292.658C162.385 303.695 125.594 302.25 92.5974 288.582C59.6007 274.914 32.5635 249.921 16.349 218.099C0.134526 186.276 -4.1931 149.712 4.14452 114.983C10.9176 86.7713 25.6875 61.2748 46.4819 41.4454C54.4756 33.8226 67.0955 35.8916 73.588 44.8278L113.82 100.202C125.208 115.876 150 107.821 150 88.4463L150 20Z" fill="#167c80"/>
<circle cx="150" cy="150" r="128" fill="black"/>
<path d="M162.73 230.297L149.298 254.672C149.006 255.202 148.199 254.959 148.247 254.357L149.72 236.199L137.762 236.199C137.336 236.199 137.064 235.742 137.27 235.367L150.703 210.992C150.995 210.462 151.802 210.705 151.753 211.307L150.281 229.465L162.238 229.465C162.665 229.465 162.935 229.922 162.73 230.297Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

Some files were not shown because too many files have changed in this diff Show More