Compare commits
355 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c694a8dbd8
|
||
|
f44c1bd73b
|
|||
|
|
3d167a7651 | ||
|
|
e8c25c957a | ||
|
|
ce72147292 | ||
|
|
6a9e8f166c | ||
|
|
d0d2a2baf0 | ||
|
|
e12323db58 | ||
|
|
0126eefc8c | ||
|
|
40996b0ec2 | ||
|
|
3e012054c5 | ||
|
|
cdc40b49d3 | ||
|
|
fe8680cc88 | ||
|
|
f938500551 | ||
|
|
4222bb2257 | ||
|
|
dd49bf5586 | ||
|
|
870a8fe790 | ||
|
|
ec97cd9901 | ||
|
|
5f1c729e35 | ||
|
|
2c683a6e84 | ||
|
|
248f49d60e | ||
|
|
270324c575 | ||
|
|
c138d69750 | ||
|
|
76beb102b0 | ||
|
|
0a74a5c8c2 | ||
|
|
b56bbff5d2 | ||
|
|
b9b6331318 | ||
|
|
85e046ccf0 | ||
|
|
fd122ea34b | ||
|
|
6bcaa7d896 | ||
|
|
910c084b85 | ||
|
|
7914ff3197 | ||
|
|
e337645258 | ||
|
|
de58de3d30 | ||
|
|
5aad200cc4 | ||
|
|
2c0851ca60 | ||
|
|
bad2ec70f5 | ||
|
|
cc35f6908d | ||
|
|
bd8bc701f7 | ||
|
|
b519a08ecb | ||
|
|
a21bd138fe | ||
|
|
c248a7367b | ||
|
|
71e8e6040f | ||
|
|
84dcb920a4 | ||
|
|
e4a3b510ff | ||
|
|
aedbe2bce1 | ||
|
|
7bb4fb59d1 | ||
|
|
66383a987e | ||
|
|
52769f46ab | ||
|
|
04432fb9e8 | ||
|
|
2defcd3e0c | ||
|
|
3208af661e | ||
|
|
3f80b26ba2 | ||
|
|
5e5a0ed197 | ||
|
|
c34cae45cb | ||
|
|
ace6d7a918 | ||
|
|
a8de57c739 | ||
|
|
fa18d9f681 | ||
|
|
720b64b6fe | ||
|
|
82bca4346f | ||
|
|
2d1abcb339 | ||
|
|
51e5ca18f9 | ||
|
|
4f66c6ca39 | ||
|
|
5f04e45f34 | ||
|
|
8f4aff7f10 | ||
|
|
c86148e1f1 | ||
|
|
aca33c3349 | ||
|
|
9775ee20ab | ||
|
|
7004acff27 | ||
|
|
4d0ee65e6a | ||
|
|
eecb421245 | ||
|
|
dd21781b9b | ||
|
|
fe4664e23e | ||
|
|
7e9ad70d27 | ||
|
|
06f77082c1 | ||
|
|
f575611d9a | ||
|
|
827e376212 | ||
|
|
055d583b2b | ||
|
|
7079bd0d26 | ||
|
|
7aff929a68 | ||
|
|
0a8d901a2e | ||
|
|
1239c2fe8c | ||
|
|
16a49934ef | ||
|
|
b69c1b3a9d | ||
|
|
93f4346d72 | ||
|
|
7da4a6fe33 | ||
|
|
46670d30c5 | ||
|
|
02a1bbb9b2 | ||
|
|
b8edd4d97c | ||
|
|
4a6375bdf0 | ||
|
|
395fbdb085 | ||
|
|
5d9936187d | ||
|
|
718e836637 | ||
|
|
181e9e7d40 | ||
|
|
4bd9a756f8 | ||
|
|
e619be3bd7 | ||
|
|
b6fa508501 | ||
|
|
227ba9a4c9 | ||
|
|
0acce350a6 | ||
|
|
598eb3083b | ||
|
|
39157a51aa | ||
|
|
3cdf1dda7f | ||
|
|
ba61c1ebbf | ||
|
|
66788309c6 | ||
|
|
6c77a4511e | ||
|
|
c2aed9c4d0 | ||
|
|
7ce04ab78f | ||
|
|
67ee633278 | ||
|
|
3952d23f92 | ||
|
|
f06d205d9c | ||
|
|
e989dde1ed | ||
|
|
447570d484 | ||
|
|
7686d980cb | ||
|
|
5787d9f321 | ||
|
|
cd42a3078b | ||
|
|
90a36910bc | ||
|
|
cbcffbf473 | ||
|
|
c3ac1d235e | ||
|
|
faa7d20e7b | ||
|
|
ce53198051 | ||
|
|
c590a805b1 | ||
|
|
58694be85f | ||
|
|
a27e1e1522 | ||
|
|
52f2f6a6d4 | ||
|
|
168a7257bc | ||
|
|
564d2194f7 | ||
|
|
a27d521172 | ||
|
|
6eae7c78e3 | ||
|
|
e6070f27e8 | ||
|
|
66084de289 | ||
|
|
5ee062d790 | ||
|
|
5938954e81 | ||
|
|
7edb656bf3 | ||
|
|
3cebf44d8f | ||
|
|
418ab429bc | ||
|
76b4b8c38e
|
|||
|
|
2128bc72f1 | ||
|
d3e7a8141d
|
|||
|
|
bec0fb162f | ||
|
|
81c768ce9a | ||
|
|
01e7c8761b | ||
|
|
60444c0dcd | ||
|
|
fb79d1435d | ||
|
|
224cfc1f94 | ||
|
|
eb1b2d3d8e | ||
|
|
ac59c4d7fd | ||
|
|
954727c25c | ||
|
|
8111829ca6 | ||
|
|
7683716477 | ||
|
|
7519fa43a5 | ||
|
|
1c8abc55da | ||
|
|
6f5cfaebfa | ||
|
|
09b417ac18 | ||
|
|
760136fd8a | ||
|
|
c2e7ecc1f3 | ||
|
|
51654e0509 | ||
|
|
8f9782a25a | ||
|
|
b4c1bc89f7 | ||
|
|
7ed9b8eea8 | ||
|
|
5d12187ecf | ||
|
|
e4be5b1b1b | ||
|
|
1f048d0691 | ||
|
|
226c4948e3 | ||
|
|
149e5093aa | ||
|
|
9036906863 | ||
|
|
30fdccb2f7 | ||
|
|
d2ba0fde94 | ||
|
|
d684193d3d | ||
|
|
5d8df83a16 | ||
|
|
3d0836ba2b | ||
|
|
337b528636 | ||
|
|
c99be54e9f | ||
|
|
fee01c616e | ||
|
|
3d75a613d2 | ||
|
|
3837bde522 | ||
|
|
156f6b18f8 | ||
|
|
fa1f2887c6 | ||
|
|
505d3c295b | ||
|
|
0d78b1e917 | ||
|
|
e6223ea349 | ||
|
|
6e3382bd5c | ||
|
|
f56e580047 | ||
|
|
b6349d5564 | ||
|
|
859b6b75e0 | ||
|
|
2709818ccd | ||
|
|
d7ade17ca2 | ||
|
|
eca7e4b626 | ||
|
|
c4e86b6e4a | ||
|
|
cd9a9775e9 | ||
|
|
2a8268aa75 | ||
|
|
8a846ecdb2 | ||
|
|
c4ed6c7a11 | ||
|
|
936a907306 | ||
|
|
2f91c76b79 | ||
|
|
137b17b608 | ||
|
|
ffdde2ec12 | ||
|
|
77c639ea69 | ||
|
|
5ab102ae80 | ||
|
|
0f47463020 | ||
|
|
761b3a1d0b | ||
|
|
970e210182 | ||
|
|
fe386ac300 | ||
|
|
3af13fdedd | ||
|
|
819b342ae1 | ||
|
|
f10598cc6b | ||
|
|
3cb3539504 | ||
|
|
190b0db80c | ||
|
|
f63d3ed3c5 | ||
|
|
8d659b540a | ||
|
|
d607bf656a | ||
|
|
6aaad33937 | ||
|
|
8c010e59f8 | ||
|
|
07fdacd660 | ||
|
|
328506e398 | ||
|
|
1f2fbb09e3 | ||
|
|
9dec6f3798 | ||
|
|
61ff48b0d2 | ||
|
|
973f65e10a | ||
|
|
30857c244e | ||
|
|
5e36dee4dc | ||
|
|
63f3cd3d02 | ||
|
|
56251e2e96 | ||
|
|
17cdd72eb7 | ||
|
|
0cdfe18b28 | ||
|
|
a35a0de6ac | ||
|
|
165131380b | ||
|
|
e9d8aa27f1 | ||
|
|
1fe97222f7 | ||
|
|
79f18bbb4a | ||
|
|
0f57665ea8 | ||
|
|
230a9ce7ed | ||
|
|
80fc8c761f | ||
|
|
37953432c7 | ||
|
|
50bddb3f36 | ||
|
|
f357314af4 | ||
|
|
350059d2a4 | ||
|
|
cbf9fce170 | ||
|
|
addd0ec34b | ||
|
|
8d5a2850c6 | ||
|
|
a1e8e055f3 | ||
|
|
294b7e4fa9 | ||
|
|
836728c491 | ||
|
|
2a60eef69e | ||
|
|
e28558f962 | ||
|
|
da22ca4955 | ||
|
|
f881236437 | ||
|
|
d6ee6038fa | ||
|
|
e1c92ed2b4 | ||
|
|
da035911ac | ||
|
|
fd7d1b2b47 | ||
|
|
d1bc4b1e38 | ||
|
|
59d1a18fcb | ||
|
|
dea3555ceb | ||
|
|
b5f815f941 | ||
|
|
dd5b13b527 | ||
|
|
26deeda842 | ||
|
|
405909061c | ||
|
|
65693adfc4 | ||
|
|
9db2f1c74a | ||
|
|
e5c777927f | ||
|
|
e0a87580e4 | ||
|
|
5b8298e576 | ||
|
|
5856660524 | ||
|
|
86fe5eb28e | ||
|
|
d448eedf5b | ||
|
|
1362de157d | ||
|
|
aec455072f | ||
|
|
539f263c54 | ||
|
|
671bab67a1 | ||
|
|
5b200d6862 | ||
|
|
f251f3b7dc | ||
|
|
eccd59d458 | ||
|
|
a01876c0ed | ||
|
|
46164fb8a5 | ||
|
|
5d46082839 | ||
|
|
00d7786f61 | ||
|
|
3d4d384139 | ||
|
|
52a3abe132 | ||
|
|
d40f38d6c0 | ||
|
|
0f3d6ea1b2 | ||
|
|
c84fb58d74 | ||
|
|
5216d728d9 | ||
|
|
4339301f25 | ||
|
|
d18624129c | ||
|
|
45094fbaa3 | ||
|
|
2426bf9c88 | ||
|
|
751459e70c | ||
|
|
a13626ad89 | ||
|
|
13c54044ba | ||
|
|
7f2f42fc11 | ||
|
|
327eacafd3 | ||
|
|
48692af52c | ||
|
|
8bf652f46f | ||
|
|
1e320a9489 | ||
|
|
402f7e3adb | ||
|
|
88d6306ea0 | ||
|
|
79db56317b | ||
|
|
99fed8e4d9 | ||
|
|
665b11d8b1 | ||
|
|
88858796a2 | ||
|
|
9e079ba3c1 | ||
|
|
c0fe4cb798 | ||
|
|
1c6299cff2 | ||
|
|
c7a3e36e9d | ||
|
|
616c2ae5ec | ||
|
|
7cd90ecd34 | ||
|
|
e9f9f3902d | ||
|
|
165ebd3033 | ||
|
|
03fac07fe7 | ||
|
|
785efb245c | ||
|
|
154e308ad3 | ||
|
|
309e9e54f5 | ||
|
|
f6a79e8749 | ||
|
|
5181cb5335 | ||
|
|
b72f886b0c | ||
|
|
597f5344af | ||
|
|
b3e6f3ad7e | ||
|
|
3b29ed3826 | ||
|
|
2d4dffd4e3 | ||
|
|
6d29d0ca7b | ||
|
|
b1056527de | ||
|
|
d52e9945f4 | ||
|
|
c0b4337f25 | ||
|
|
94968e736c | ||
|
|
b9bca14083 | ||
|
|
305124a48f | ||
|
|
1ab1a74752 | ||
|
|
a3cc137fa1 | ||
|
|
69945d6306 | ||
|
|
fd1f593ac8 | ||
|
|
fa5799928e | ||
|
|
46fea3f955 | ||
|
|
ca679dc6ee | ||
|
|
47a3088f3e | ||
|
|
b3a50f2fa3 | ||
|
|
090431803b | ||
|
|
a69dfb14b0 | ||
|
|
39d7fefa98 | ||
|
|
69dee3f816 | ||
|
|
64537566cd | ||
|
|
e41ae16190 | ||
|
|
c8ecd22e78 | ||
|
|
8c6507739f | ||
|
|
56ed3854d0 | ||
|
|
2bd07a47f9 | ||
|
|
751388dd9f | ||
|
|
8d9c8c02be | ||
|
|
205806ca0a | ||
|
|
089fa84926 | ||
|
|
a356ad6920 | ||
|
|
91f3650ea4 | ||
|
|
f4fe7704c8 | ||
|
|
54fe338b09 | ||
|
|
2acacf2c29 | ||
|
|
7d2705e2e7 |
6
.github/workflows/build/action.yml
vendored
@@ -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
@@ -1,2 +1,3 @@
|
||||
proprietary/*
|
||||
prebuilt/archive
|
||||
prebuilt/generated/*
|
||||
|
||||
26
README.mkdn
@@ -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
@@ -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.
|
||||
BIN
audio/alarm_ringtones/plasma-mobile_arp.ogg
Normal file
BIN
audio/alarm_ringtones/plasma-mobile_crunch.ogg
Normal file
BIN
audio/alarm_ringtones/plasma-mobile_elevated.ogg
Normal file
BIN
audio/alarm_ringtones/plasma-mobile_errand.ogg
Normal file
BIN
audio/alarm_ringtones/plasma-mobile_gentle.ogg
Normal file
BIN
audio/alarm_ringtones/plasma-mobile_glazed.ogg
Normal file
BIN
audio/alarm_ringtones/plasma-mobile_lightly.ogg
Normal file
BIN
audio/alarm_ringtones/plasma-mobile_machine.ogg
Normal file
BIN
audio/alarm_ringtones/plasma-mobile_miniature.ogg
Normal file
BIN
audio/alarm_ringtones/plasma-mobile_morning-rush.ogg
Normal file
BIN
audio/alarm_ringtones/plasma-mobile_nightlights.ogg
Normal file
BIN
audio/alarm_ringtones/plasma-mobile_on-the-way.ogg
Normal file
BIN
audio/alarm_ringtones/plasma-mobile_progressive.ogg
Normal file
BIN
audio/alarm_ringtones/plasma-mobile_revelation.ogg
Normal file
BIN
audio/alarm_ringtones/plasma-mobile_slowly.ogg
Normal file
BIN
audio/alarm_ringtones/plasma-mobile_spatial.ogg
Normal file
BIN
audio/alarm_ringtones/plasma-mobile_unfamiliar.ogg
Normal file
BIN
audio/alarm_ringtones/plasma-mobile_wink.ogg
Normal file
BIN
audio/alarm_ringtones/plasma-mobile_wubstep.ogg
Normal file
60
audio/audio.mk
Normal 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 \
|
||||
BIN
audio/notifications/plasma-mobile_awaken.ogg
Normal file
BIN
audio/notifications/plasma-mobile_blip.ogg
Normal file
BIN
audio/notifications/plasma-mobile_doorbell.ogg
Normal file
BIN
audio/notifications/plasma-mobile_pointed.ogg
Normal 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)
|
||||
|
||||
@@ -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)
|
||||
BIN
bootanimation/prebuilts/bootanimation_aokp.zip
Normal file
BIN
bootanimation/prebuilts/bootanimation_cm.zip
Normal file
BIN
bootanimation/prebuilts/bootanimation_ctos.zip
Normal file
BIN
bootanimation/prebuilts/bootanimation_cyberpunk.zip
Normal file
BIN
bootanimation/prebuilts/bootanimation_du.zip
Normal file
BIN
bootanimation/prebuilts/bootanimation_evo_reveal.zip
Normal file
BIN
bootanimation/prebuilts/bootanimation_google.zip
Normal file
BIN
bootanimation/prebuilts/bootanimation_google_monet.zip
Normal file
BIN
bootanimation/prebuilts/bootanimation_pac.zip
Normal file
BIN
bootanimation/prebuilts/bootanimation_rr.zip
Normal file
BIN
bootanimation/prebuilts/bootanimation_slim.zip
Normal file
BIN
bootanimation/prebuilts/bootanimation_valorant.zip
Normal file
32
bootanimation/prebuilts/prebuilts.mk
Normal 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
|
||||
3
build/core/default_installed_modules.mk
Normal 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)
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"],
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
2
build/target/product/product_launched_with_j.mk
Normal 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
|
||||
2
build/target/product/product_launched_with_j_mr1.mk
Normal 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
|
||||
2
build/target/product/product_launched_with_j_mr2.mk
Normal 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
@@ -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}"
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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
@@ -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()
|
||||
@@ -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())
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
@@ -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
|
||||
|
Before Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 7.0 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 4.7 KiB |
@@ -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
|
||||
@@ -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 |
@@ -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 |
@@ -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 |
@@ -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 |
@@ -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 |
@@ -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 |
@@ -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 |
@@ -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 |
@@ -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 |
@@ -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 |
@@ -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 |
@@ -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 |
@@ -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 |
@@ -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 |
@@ -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 |
@@ -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 |
@@ -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 |
@@ -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 |
@@ -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 |
@@ -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 |