summaryrefslogtreecommitdiff
path: root/static/build.html
diff options
context:
space:
mode:
authorDaniel Micay <danielmicay@gmail.com>2020-12-06 13:30:13 -0500
committerDaniel Micay <danielmicay@gmail.com>2020-12-06 13:30:13 -0500
commit983a1871f1dcad84e776fb0e86a4c37e60226db8 (patch)
treef47459db13a0f4d8d7d1dfca97fe0cd87f4f7c67 /static/build.html
parentf4083f40dfd6c1461252879ee14d991a0d9a4061 (diff)
finish adding explicit sections to build guide
Diffstat (limited to 'static/build.html')
-rw-r--r--static/build.html286
1 files changed, 143 insertions, 143 deletions
diff --git a/static/build.html b/static/build.html
index dc1a41f7..00da908a 100644
--- a/static/build.html
+++ b/static/build.html
@@ -287,57 +287,57 @@
for developing a feature. It's easier to port between stable tags that are known to
work properly than dealing with a moving target.</p>
- <h4 id="development-branch">
- <a href="#development-branch">Development branch</a>
- </h4>
+ <section id="development-branch">
+ <h4><a href="#development-branch">Development branch</a></h4>
- <p>The <code>11</code> branch is the only active development branch for GrapheneOS
- development. Older branches are no longer maintained. It is currently used for all
- officially supported devices and should be used for the basis of ports to other
- devices. Occasionally, some devices may be supported through device support branches
- to avoid impacting other devices with changes needed to support them.</p>
+ <p>The <code>11</code> branch is the only active development branch for GrapheneOS
+ development. Older branches are no longer maintained. It is currently used for all
+ officially supported devices and should be used for the basis of ports to other
+ devices. Occasionally, some devices may be supported through device support branches
+ to avoid impacting other devices with changes needed to support them.</p>
- <pre>mkdir grapheneos-11
+ <pre>mkdir grapheneos-11
cd grapheneos-11
repo init -u https://github.com/GrapheneOS/platform_manifest.git -b 11
repo sync -j32</pre>
- <p>If your network is unreliable and <code>repo sync</code> fails, you can run the
- <code>repo sync</code> command again to continue from where it was interrupted. It
- handles connection failures robustly and you shouldn't start over from scratch.</p>
+ <p>If your network is unreliable and <code>repo sync</code> fails, you can run the
+ <code>repo sync</code> command again to continue from where it was interrupted. It
+ handles connection failures robustly and you shouldn't start over from scratch.</p>
+ </section>
- <h4 id="stable-release">
- <a href="#stable-release">Stable release</a>
- </h4>
+ <section id="stable-release">
+ <h4><a href="#stable-release">Stable release</a></h4>
- <p>Pick a specific release for a device from the <a href="/releases">releases page</a>
- and download the source tree. Note that some devices use different Android Open Source
- Project branches so they can end up with different tags. Make sure to use the correct
- tag for a device. For devices without official support, use the latest tag marked as
- being appropriate for generic / other devices in the release notes.</p>
+ <p>Pick a specific release for a device from the <a href="/releases">releases page</a>
+ and download the source tree. Note that some devices use different Android Open Source
+ Project branches so they can end up with different tags. Make sure to use the correct
+ tag for a device. For devices without official support, use the latest tag marked as
+ being appropriate for generic / other devices in the release notes.</p>
- <pre>mkdir grapheneos-TAG_NAME
+ <pre>mkdir grapheneos-TAG_NAME
cd grapheneos-TAG_NAME
repo init -u https://github.com/GrapheneOS/platform_manifest.git -b refs/tags/TAG_NAME</pre>
- <p>Verify the manifest:</p>
+ <p>Verify the manifest:</p>
- <pre>gpg --recv-keys 65EEFE022108E2B708CBFCF7F9E712E59AF5F22A
+ <pre>gpg --recv-keys 65EEFE022108E2B708CBFCF7F9E712E59AF5F22A
cd .repo/manifests
git verify-tag $(git describe)
cd ../..</pre>
- <p>Complete the source tree download:</p>
+ <p>Complete the source tree download:</p>
- <pre>repo sync -j32</pre>
+ <pre>repo sync -j32</pre>
- <p>The manifest for the latest stable release refers to the revisions in other
- repositories via commit hashes rather than tag names. This avoids the need to use a
- script to verify tag signatures across all the repositories, since they simply point
- to the same commits with the same hashes.</p>
+ <p>The manifest for the latest stable release refers to the revisions in other
+ repositories via commit hashes rather than tag names. This avoids the need to use a
+ script to verify tag signatures across all the repositories, since they simply point
+ to the same commits with the same hashes.</p>
- <p>Note that the repo command itself takes care of updating itself and uses gpg to
- verify by default.</p>
+ <p>Note that the repo command itself takes care of updating itself and uses gpg to
+ verify by default.</p>
+ </section>
</section>
<section id="updating-and-switching-branches-or-tags">
@@ -580,43 +580,43 @@ cd ../..</pre>
same scripts along with the expectation of it using the same passphrase as the other
keys.</p>
- <h4 id="encrypting-keys">
- <a href="#encrypting-keys">Encrypting keys</a>
- </h4>
+ <section id="encrypting-keys">
+ <h4><a href="#encrypting-keys">Encrypting keys</a></h4>
- <p>You can (re-)encrypt your signing keys using the <code>encrypt_keys</code> script,
- which will prompt for the old passphrase (if any) and new passphrase:</p>
+ <p>You can (re-)encrypt your signing keys using the <code>encrypt_keys</code> script,
+ which will prompt for the old passphrase (if any) and new passphrase:</p>
- <pre>script/encrypt_keys.sh keys/crosshatch</pre>
+ <pre>script/encrypt_keys.sh keys/crosshatch</pre>
- <p>The <code>script/decrypt_keys.sh</code> script can be used to remove encryption,
- which is not recommended. The script exists primarily for internal usage to decrypt
- the keys in tmpfs to perform signing.</p>
+ <p>The <code>script/decrypt_keys.sh</code> script can be used to remove encryption,
+ which is not recommended. The script exists primarily for internal usage to decrypt
+ the keys in tmpfs to perform signing.</p>
+ </section>
- <h4 id="enabling-updatable-apex-components">
- <a href="#enabling-updatable-apex-components">Enabling updatable APEX components</a>
- </h4>
+ <section id="enabling-updatable-apex-components">
+ <h4><a href="#enabling-updatable-apex-components">Enabling updatable APEX components</a></h4>
- <p>GrapheneOS disables updatable APEX components for the officially supported devices
- and targets inheriting from the mainline target, so APEX signing keys are not needed
- and this section can be ignored for unmodified builds.</p>
+ <p>GrapheneOS disables updatable APEX components for the officially supported devices
+ and targets inheriting from the mainline target, so APEX signing keys are not needed
+ and this section can be ignored for unmodified builds.</p>
- <p>GrapheneOS uses the <code>TARGET_FLATTEN_APEX := true</code> format to include APEX
- components as part of the base OS without supporting out-of-band updates.</p>
+ <p>GrapheneOS uses the <code>TARGET_FLATTEN_APEX := true</code> format to include APEX
+ components as part of the base OS without supporting out-of-band updates.</p>
- <p><strong>If you don't disable updatable APEX packages, you need to generate an APK and
- AVB key for each APEX component and extend the GrapheneOS release.sh script to pass
- the appropriate parameters to replace the APK and AVB keys for each APEX
- component.</strong></p>
+ <p><strong>If you don't disable updatable APEX packages, you need to generate an APK and
+ AVB key for each APEX component and extend the GrapheneOS release.sh script to pass
+ the appropriate parameters to replace the APK and AVB keys for each APEX
+ component.</strong></p>
- <p>APEX components that are not flattened are a signed APK (used to verify updates)
- with an embedded filesystem image signed with an AVB key (for verified boot). Each
- APEX package must have a unique set of keys. GrapheneOS has no use for these
- out-of-band updates at this time and flattening APEX components avoids needing a bunch
- of extra keys and complexity.</p>
+ <p>APEX components that are not flattened are a signed APK (used to verify updates)
+ with an embedded filesystem image signed with an AVB key (for verified boot). Each
+ APEX package must have a unique set of keys. GrapheneOS has no use for these
+ out-of-band updates at this time and flattening APEX components avoids needing a bunch
+ of extra keys and complexity.</p>
- <p>For now, consult the upstream documentation on generating these keys. It will be
- covered here in the future.</p>
+ <p>For now, consult the upstream documentation on generating these keys. It will be
+ covered here in the future.</p>
+ </section>
</section>
<section id="generating-signed-factory-images-and-full-update-packages">
@@ -661,26 +661,25 @@ cd ../..</pre>
Stable channel after public testing. A similar approach is recommended for derivatives
of GrapheneOS.</p>
- <h4 id="generating-delta-updates">
- <a href="#generating-delta-updates">Generating delta updates</a>
- </h4>
+ <section id="generating-delta-updates">
+ <h4><a href="#generating-delta-updates">Generating delta updates</a></h4>
- <p>Incremental updates shipping only the changes between two versions can be generated
- as a much more efficient way of shipping updates than a full update package containing
- the entire operating system. The GrapheneOS Updater app will automatically use a delta
- update if one exists for going directly from the currently installed version to the
- latest release. In order to generate a delta update, the original signed target files
- package for both the source version and target version are needed. The
- <code>script/generate_delta.sh</code> script provides a wrapper script for generating
- delta updates by passing the device, source version build number and target version
- build number. For example:</p>
+ <p>Incremental updates shipping only the changes between two versions can be generated
+ as a much more efficient way of shipping updates than a full update package containing
+ the entire operating system. The GrapheneOS Updater app will automatically use a delta
+ update if one exists for going directly from the currently installed version to the
+ latest release. In order to generate a delta update, the original signed target files
+ package for both the source version and target version are needed. The
+ <code>script/generate_delta.sh</code> script provides a wrapper script for generating
+ delta updates by passing the device, source version build number and target version
+ build number. For example:</p>
- <pre>script/generate_delta.sh crosshatch 2019.09.25.00 2019.10.07.21</pre>
+ <pre>script/generate_delta.sh crosshatch 2019.09.25.00 2019.10.07.21</pre>
- <p>The script assumes that the releases are organized in the following directory
- structure:</p>
+ <p>The script assumes that the releases are organized in the following directory
+ structure:</p>
- <pre>releases
+ <pre>releases
├── 2019.09.25.00
│   └── release-crosshatch-2019.09.25.00
│      ├── crosshatch-factory-2019.09.25.00.zip
@@ -698,10 +697,11 @@ cd ../..</pre>
   ├── crosshatch-target_files-2019.10.07.21.zip
   └── crosshatch-testing</pre>
- <p>Incremental updates are uploaded alongside the update packages and update metadata
- on the static web server used as an update server. The update client will
- automatically check for an incremental update and use it if available. No additional
- metadata is needed to make incremental updates work.</p>
+ <p>Incremental updates are uploaded alongside the update packages and update metadata
+ on the static web server used as an update server. The update client will
+ automatically check for an incremental update and use it if available. No additional
+ metadata is needed to make incremental updates work.</p>
+ </section>
</section>
</section>
@@ -964,20 +964,19 @@ mv android-studio studio</pre>
<section id="compatibility-test-suite">
<h3><a href="#compatibility-test-suite">Compatibility Test Suite</a></h3>
- <h4 id="compatibility-test-suite-download">
- <a href="#compatibility-test-suite-download">Download</a>
- </h4>
+ <section id="compatibility-test-suite-download">
+ <h4><a href="#compatibility-test-suite-download">Download</a></h4>
- <p>Testing with the Compatibility Test Suite (CTS) can be done by either building the
- test suite from source or using the official releases.</p>
- <p>Official releases of the CTS can be downloaded from
- <a href="https://source.android.com/compatibility/cts/downloads">the Compatibility
- Suite Downloads page</a>. You should download the CTS for the relevant release
- (Android 11) and architecture (ARM). There's a separate zip for the main CTS, the
- manual portion (CTS Verifier) and the CTS for Instant Apps. The latest release of the
- CTS Media Files also needs to be downloaded from that section.</p>
+ <p>Testing with the Compatibility Test Suite (CTS) can be done by either building the
+ test suite from source or using the official releases.</p>
+ <p>Official releases of the CTS can be downloaded from
+ <a href="https://source.android.com/compatibility/cts/downloads">the Compatibility
+ Suite Downloads page</a>. You should download the CTS for the relevant release
+ (Android 11) and architecture (ARM). There's a separate zip for the main CTS, the
+ manual portion (CTS Verifier) and the CTS for Instant Apps. The latest release of the
+ CTS Media Files also needs to be downloaded from that section.</p>
- <pre>mkdir -p ~/android/cts/{arm,x86}
+ <pre>mkdir -p ~/android/cts/{arm,x86}
cd ~/android/cts/arm
curl -O https://dl.google.com/dl/android/cts/android-cts-11_r1-linux_x86-arm.zip
unzip android-cts-11_r1-linux_x86-arm.zip
@@ -996,66 +995,67 @@ cd ~/android/cts
curl -O https://dl.google.com/dl/android/cts/android-cts-media-1.5.zip
unzip android-cts-media-1.5.zip
rm android-cts-media-1.5.zip</pre>
+ </section>
- <h4 id="compatibility-test-suite-setup">
- <a href="#compatibility-test-suite-setup">Setup</a>
- </h4>
- <p>You'll need a device attached to your computer with ADB enabled along with the
- Android SDK installed. The build-tools and platform-tools packages need to be
- installed and the binaries need to be added to your PATH. See the
- <a href="#standalone-sdk">standalone SDK installation instructions</a> above.</p>
+ <section id="compatibility-test-suite-setup">
+ <h4><a href="#compatibility-test-suite-setup">Setup</a></h4>
+ <p>You'll need a device attached to your computer with ADB enabled along with the
+ Android SDK installed. The build-tools and platform-tools packages need to be
+ installed and the binaries need to be added to your PATH. See the
+ <a href="#standalone-sdk">standalone SDK installation instructions</a> above.</p>
- <p>Copy media onto the device:</p>
- <pre>cd android-cts-media-1.5
+ <p>Copy media onto the device:</p>
+ <pre>cd android-cts-media-1.5
./copy_images.sh
./copy_media.sh</pre>
- <p>You also need to do some basic setup for the device. It's possible for changes from
- a baseline install to cause interference, so it can be a good idea to factory reset
- the device if assorted changes have been made. The device needs to be running a user
- build for the security model to be fully intact in order to pass all the security
- tests. A userdebug build is expected to fail some of the tests. GrapheneOS also makes
- various changes intentionally deviating from the requirements expected by the CTS, so
- there will always be some expected failures. A few of the tests are also known to be
- quite flaky or broken even with the stock OS and/or AOSP. These will be documented
- here at some point.</p>
+ <p>You also need to do some basic setup for the device. It's possible for changes from
+ a baseline install to cause interference, so it can be a good idea to factory reset
+ the device if assorted changes have been made. The device needs to be running a user
+ build for the security model to be fully intact in order to pass all the security
+ tests. A userdebug build is expected to fail some of the tests. GrapheneOS also makes
+ various changes intentionally deviating from the requirements expected by the CTS, so
+ there will always be some expected failures. A few of the tests are also known to be
+ quite flaky or broken even with the stock OS and/or AOSP. These will be documented
+ here at some point.</p>
- <ul>
- <li>Must be connected to a WiFi network with IPv6 internet access</li>
- <li>Must have a working SIM card with mobile data with IPv6 internet access</li>
- <li>Disable SIM lock</li>
- <li>Enable Bluetooth</li>
- <li>Enable NFC</li>
- <li>Open / close Chromium to deal with initial setup</li>
- <li>Prop up with a good object to focus on and good lighting for Camera tests.
- Both the front and rear cameras will be used, so ensure this is true for both the
- front and the rear cameras.</li>
- <li>Bluetooth beacons for Bluetooth tests</li>
- <li>Must have a great GPS/GNSS signal for location tests</li>
- <li>SIM card with carrier privilege rules</li>
- <li>Secure element applet installed on the embedded secure element or SIM
- card</li>
- <li>At least one Wi-Fi RTT access point powered up but not connected to any
- network</li>
- <li>The screen lock must be disabled.</li>
- </ul>
+ <ul>
+ <li>Must be connected to a WiFi network with IPv6 internet access</li>
+ <li>Must have a working SIM card with mobile data with IPv6 internet access</li>
+ <li>Disable SIM lock</li>
+ <li>Enable Bluetooth</li>
+ <li>Enable NFC</li>
+ <li>Open / close Chromium to deal with initial setup</li>
+ <li>Prop up with a good object to focus on and good lighting for Camera tests.
+ Both the front and rear cameras will be used, so ensure this is true for both the
+ front and the rear cameras.</li>
+ <li>Bluetooth beacons for Bluetooth tests</li>
+ <li>Must have a great GPS/GNSS signal for location tests</li>
+ <li>SIM card with carrier privilege rules</li>
+ <li>Secure element applet installed on the embedded secure element or SIM
+ card</li>
+ <li>At least one Wi-Fi RTT access point powered up but not connected to any
+ network</li>
+ <li>The screen lock must be disabled.</li>
+ </ul>
+ </section>
- <h4 id="compatibility-test-suite-run-modules">
- <a href="#compatibility-test-suite-run-modules">Run modules</a>
- </h4>
+ <section id="compatibility-test-suite-run-modules">
+ <h4><a href="#compatibility-test-suite-run-modules">Run modules</a></h4>
- <p>Run the test harness:</p>
- <pre>./android-cts/tools/cts-tradefed</pre>
- <p>Note that <code>_JAVA_OPTIONS</code> being set will break the version detection.</p>
- <p>To obtain a list of CTS modules:</p>
- <pre>list modules</pre>
- <p>To run a specific module and avoid wasting time capturing device information:</p>
- <pre>run cts --skip-device-info --module CtsModuleName</pre>
- <p>To speed up initialization after running some initial tests:</p>
- <pre>run cts --skip-device-info --skip-preconditions --module CtsModuleName</pre>
- <p>It's possible to run the whole standard CTS plan with a single command, but running
- specific modules is recommended, especially if you don't have everything set up for
- the entire test suite.</p>
+ <p>Run the test harness:</p>
+ <pre>./android-cts/tools/cts-tradefed</pre>
+ <p>Note that <code>_JAVA_OPTIONS</code> being set will break the version detection.</p>
+ <p>To obtain a list of CTS modules:</p>
+ <pre>list modules</pre>
+ <p>To run a specific module and avoid wasting time capturing device information:</p>
+ <pre>run cts --skip-device-info --module CtsModuleName</pre>
+ <p>To speed up initialization after running some initial tests:</p>
+ <pre>run cts --skip-device-info --skip-preconditions --module CtsModuleName</pre>
+ <p>It's possible to run the whole standard CTS plan with a single command, but running
+ specific modules is recommended, especially if you don't have everything set up for
+ the entire test suite.</p>
+ </section>
</section>
</section>