From 98e619cfbd5a369e8cb0eaf7c9df4c58a2bcabd2 Mon Sep 17 00:00:00 2001 From: Robin Schneider Date: Tue, 9 Feb 2021 20:08:29 +0100 Subject: [PATCH 1/8] Switch to GrapheneOS based on Android 11 --- .dockerignore | 2 - .gitignore | 7 +- .gitmodules | 3 + Dockerfile | 9 - Makefile | 288 +-- README.md | 114 +- aosp-build | 1 + config/config.yml | 177 +- config/manifests/sargo/base.xml | 1537 +++++++++-------- config/manifests/sargo/kernel.xml | 17 - config/manifests/sargo/local_manifest.xml | 6 + config/openpgp_keys/fdroid.asc | 1 + .../openpgp_keys/hans-christoph.steiner.asc | 290 ++++ config/patches/platform/add-updater.patch | 26 +- config/patches/platform/set-packages.patch | 23 +- scripts/build-kernel | 36 + scripts/patch-fdroid-privileged-extension | 22 + 17 files changed, 1348 insertions(+), 1211 deletions(-) delete mode 100644 .dockerignore mode change 100644 => 120000 .gitignore create mode 100644 .gitmodules delete mode 100644 Dockerfile create mode 160000 aosp-build delete mode 100644 config/manifests/sargo/kernel.xml create mode 100644 config/manifests/sargo/local_manifest.xml create mode 120000 config/openpgp_keys/fdroid.asc create mode 100644 config/openpgp_keys/hans-christoph.steiner.asc create mode 100755 scripts/build-kernel create mode 100755 scripts/patch-fdroid-privileged-extension diff --git a/.dockerignore b/.dockerignore deleted file mode 100644 index e245cd5..0000000 --- a/.dockerignore +++ /dev/null @@ -1,2 +0,0 @@ -* -keys diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 2fffe83..0000000 --- a/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -build/* -config/keys/* -config/env/* -config/container/Dockerfile.* -release/* -.* diff --git a/.gitignore b/.gitignore new file mode 120000 index 0000000..776cb65 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +aosp-build/.gitignore \ No newline at end of file diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..e19b96f --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "aosp-build"] + path = aosp-build + url = https://github.com/hashbang/aosp-build.git diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 89fe3c9..0000000 --- a/Dockerfile +++ /dev/null @@ -1,9 +0,0 @@ -FROM hashbang/aosp-build@sha256:53ea03cb5e67821159f57685e9a202349a5ef9c42b81567e5f467ff3c2f0c89d - -USER root -RUN \ - apt-get update && \ - apt-get install -y \ - python-six \ - && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* -USER build diff --git a/Makefile b/Makefile index af6a276..e460dbd 100644 --- a/Makefile +++ b/Makefile @@ -1,278 +1,20 @@ -## Argument Variables ## +include aosp-build/Makefile -CPUS := $(shell nproc) -MEMORY := 10000 -DISK := 300000 -DEVICE := crosshatch -BACKEND := local -CHANNEL := beta -BUILD := user -FLAVOR := aosp -IMAGE := hashbang/aosp-build:latest -IMAGE_OPTIONS := -NAME := aosp-build-$(FLAVOR)-$(BACKEND) -SHELL := /bin/bash +NAME := hashbangos-$(FLAVOR)-$(BACKEND) --include $(PWD)/config/env/$(BACKEND).env +contain-base-extend = \ + --volume $(PWD)/aosp-build/scripts:/opt/aosp-build/scripts \ + --volume $(PWD)/aosp-build/config:/opt/aosp-build/config \ + --volume $(PWD)/aosp-build/config/manifests:/home/build/config/manifests-aosp -## Default Target ## +.PHONY: HashbangOS-setup +HashbangOS-setup: + cd aosp-build/ && ln -sf ../build -.DEFAULT_GOAL := default -.PHONY: default -default: machine image fetch tools keys build release +.PHONY: HashbangOS-release +HashbangOS-review: HashbangOS-setup + make -C aosp-build config ensure-git-status-clean + make -C aosp-build manifest ensure-git-status-clean fetch + make fetch review - -## Primary Targets ## - -.PHONY: fetch -fetch: submodule-update machine image - $(contain) fetch - -.PHONY: keys -keys: - $(contain) keys - -.PHONY: build -build: - $(contain) build - -.PHONY: release -release: - $(contain) release - -.PHONY: publish -publish: - $(contain) publish - -.PHONY: clean -clean: - $(contain) clean - -.PHONY: mrproper -mrproper: storage-delete machine-delete - rm -rf build - - -## Secondary Targets ## - -.PHONY: image -image: - $(docker) build \ - --tag $(IMAGE) \ - --file $(PWD)/config/container/Dockerfile \ - $(IMAGE_OPTIONS) \ - $(PWD) - -config/container/Dockerfile.minimal: config/container/Dockerfile config/container/render_template - ./config/container/render_template "$<" | grep -v '^#\s*$$' > "$@" - -.PHONY: image-minimal -image-minimal: config/container/Dockerfile.minimal - $(docker) build \ - --tag $(IMAGE) \ - --file "$(PWD)/$<" \ - $(IMAGE_OPTIONS) \ - $(PWD) - -.PHONY: tools -tools: - mkdir -p config/keys build/base release build/external - $(contain) tools - -.PHONY: vendor -vendor: - $(contain) build-vendor - -.PHONY: chromium -chromium: - $(contain) build-chromium - -.PHONY: kernel -kernel: - $(contain) build-kernel - - -## Development ## - -.PHONY: latest -latest: config submodule-latest fetch - -.PHONY: manifest -manifest: config - $(contain) bash -c "source <(environment) && manifest" - -.PHONY: config -config: - $(contain) bash -c "source <(environment) && config" - -.PHONY: test-repro -test-repro: - $(contain) test-repro - -.PHONY: test -test: test-repro - -.PHONY: patches -patches: - @$(contain) bash -c "cd base; repo diff --absolute" - -.PHONY: shell -shell: - $(docker) inspect "$(NAME)" \ - && $(docker) exec --interactive --tty "$(NAME)" shell \ - || $(contain) shell - -.PHONY: monitor -monitor: - $(docker) inspect "$(NAME)" \ - && $(docker) exec --interactive --tty "$(NAME)" htop - -.PHONY: install -install: tools - @scripts/flash - - -## Source Management ## - -.PHONY: submodule-update -submodule-update: - git submodule update --init --recursive - -.PHONY: submodule-latest -submodule-latest: - git submodule foreach 'git checkout master && git pull' - -## Storage Bootstrapping ## - -# TODO: detect if plugin is already installed or not -# TODO: Hash lock rexray with sha256 digest to prevent tag clobbering -.PHONY: storage-digitalocean -storage-digitalocean: - $(docker) volume ls | grep $(NAME) \ - ||( $(docker) plugin install \ - --grant-all-permissions \ - rexray/dobs:0.11.4 \ - DOBS_REGION=$(DIGITALOCEAN_REGION) \ - DOBS_TOKEN=$(DIGITALOCEAN_TOKEN) \ - ; $(docker) volume create \ - --driver rexray/dobs:0.11.4 \ - --opt=size=$$(( $(DISK) / 1000 )) \ - --name=$(NAME) \ - ) - -.PHONY: storage-local -storage-local: - $(docker) volume ls | grep $(NAME) \ - || $(docker) volume create \ - --driver local \ - --opt type=none \ - --opt o=bind \ - --opt device=$(PWD)/build \ - $(NAME) - -.PHONY: storage-delete -storage-delete: - $(docker) volume rm -f $(NAME) || : - - -## VM Management ## - -.PHONY: machine-start -machine-start: machine-install machine-create machine-date - $(docker_machine) status $(NAME) \ - || $(docker_machine) start $(NAME) - -.PHONY: machine-sync -machine-sync: - $(docker_machine) scp -r -d config/ $(NAME):$(PWD)/config/ - -.PHONY: machine-shell -machine-shell: - $(docker_machine) ssh $(NAME) - -.PHONY: machine-stop -machine-stop: - $(docker_machine) stop $(NAME) - -.PHONY: machine-delete -machine-delete: - $(docker_machine) rm -f -y $(NAME) - -.PHONY: machine-date -machine-date: - $(docker_machine) ssh $(NAME) \ - "sudo date -s @$(shell date +%s)" - -.PHONY: machine-create -machine-create: machine-install - $(docker_machine) status $(NAME) \ - ||( $(docker_machine) create \ - --driver $(BACKEND) \ - $(docker_machine_create_flags) \ - $(NAME) \ - ) - -.PHONY: machine-install -machine-install: - # wget docker-machine & hash check here - - -## VM Bootstrapping ## - -ifeq ($(BACKEND),local) - -executables = docker -docker = docker -machine: -storage_flags = --volume $(PWD)/build/:/home/build/build/ - -else ifeq ($(BACKEND),virtualbox) - -executables = docker-machine ssh virtualbox -docker = $(docker_machine) ssh $(NAME) -t docker -machine: machine-start storage-local -storage_flags = --volume $(NAME):/home/build/build/ -docker_machine_create_flags = \ - --virtualbox-share-folder="$(PWD):$(PWD)" \ - --virtualbox-disk-size="$(DISK)" \ - --virtualbox-memory="$(MEMORY)" \ - --virtualbox-cpu-count="$(CPUS)" - -else ifeq ($(BACKEND),digitalocean) - -executables = docker-machine ssh -docker = $(docker_machine) ssh $(NAME) -t docker -machine: machine-start storage-digitalocean machine-sync -storage_flags = --volume $(NAME):/home/build/build/ -docker_machine_create_flags = \ - --digitalocean-access-token=$(DIGITALOCEAN_TOKEN) \ - --digitalocean-region=$(DIGITALOCEAN_REGION) \ - --digitalocean-image=$(DIGITALOCEAN_IMAGE) \ - --digitalocean-size=$(DIGITALOCEAN_SIZE) - -endif - -userid = $(shell id -u) -groupid = $(shell id -g) -docker_machine = docker-machine --storage-path "${PWD}/build/machine" -contain := \ - $(docker) run \ - --rm \ - --tty \ - --interactive \ - --name "$(NAME)" \ - --hostname "$(NAME)" \ - --user $(userid):$(groupid) \ - --env DEVICE=$(DEVICE) \ - --security-opt seccomp=unconfined \ - --volume $(PWD)/config:/home/build/config \ - --volume $(PWD)/release:/home/build/release \ - --volume $(PWD)/scripts:/home/build/scripts \ - $(storage_flags) \ - $(IMAGE) - - -## Required Binary Check ## - -check_executables := $(foreach exec,$(executables),\$(if \ - $(shell which $(exec)),some string,$(error "No $(exec) in PATH"))) +HashbangOS-build: clean fetch build release diff --git a/README.md b/README.md index 656e8d5..fda02b1 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,19 @@ + + # #!os # @@ -117,36 +133,88 @@ Please join us on IRC: ircs://irc.hashbang.sh/#!os Release hosting is sponsored by [JFrog](https://www.jfrog.com/) -## Install, build, flash, update ## +## Install ## + +Refer to [GrapheneOS CLI install] and [aosp-build]. + +[GrapheneOS CLI install]: https://grapheneos.org/install/cli + +## Building ## -Those steps are the same for AOSP and are thus documented by [aosp-build](https://github.com/hashbang/aosp-build). +### Requirements ### + + * 35 GiB of memory or more. Link-Time Optimization (LTO) creates huge peaks + during linking and is mandatory for Control Flow Integrity (CFI). Linking + Vanadium (Chromium) and the Linux kernel with LTO + CFI are the most memory + demanding tasks. + * 350 GiB+ of additional free storage space for a typical build of the entire + OS for a multiarch device. + +### Generate Signing Keys ### + +Each device needs its own set of keys: +``` +make DEVICE=crosshatch keys +``` + +### Build Factory Image ### + +Build flashable images for desired device: +``` +make DEVICE=crosshatch clean build release +``` ## Develop ## -### Release ### -1. Update to latest upstream sources. +### clean ### - You can find the latest releases on - https://source.android.com/setup/start/build-numbers. You will need to update - the `platform.ref` (the `ref` key below the `platform` key) in `config.yml` - and then update the manifest and config files using: +Do basic cleaning without deleting cached artifacts/sources: +``` +make clean +``` - ``` - make manifest - ``` +Clean everything but keys +``` +make mrproper +``` + +### Compare ### + +Build a given device twice from scratch and compare with diffoscope: +``` +make compare +``` + +### Edit ### -2. Build all targets impacted by given change +Create a shell inside the docker environment: +``` +make shell +``` + +### Patch ### + +Output all untracked changes in android sources to a patchfile: +``` +make diff > patches/my-feature.patch +``` + +### Release ### + +1. `make config manifest` see [aosp-build]. + +1. Build all targets impacted by given change ``` - make DEVICE=crosshatch build release + make DEVICE=crosshatch release ``` -3. Commit changes to a PR -4. Author or reviewer manually tests and documents in CHANGELOG -5. Reviewer security audits local/upstream changes and documents in CHANGELOG -6. Maintainer does signed merge of changes to master -7. Maintainer makes signed release tag. (E.g: "9.0.1_r37-hb37") +1. Commit changes to a PR +1. Author or reviewer manually tests and documents in CHANGELOG +1. Reviewer security audits local/upstream changes and documents in CHANGELOG +1. Maintainer does signed merge of changes to master +1. Maintainer makes signed release tag. (E.g: "9.0.1_r37-hb37") ### OTAs ### @@ -220,6 +288,8 @@ Lastly, they almost all source binaries from sketchy locations like the infamous "[TheMuppets][tm]" repo which an unknown number of people have push access to. This sort of activity acts as a security SPOF for popular roms. +[tm]: https://github.com/TheMuppets + ### Why should anyone trust this project? Trust, but Verify. While we may be upstanding people today, we might be @@ -232,8 +302,6 @@ maintainers. Maintaining a system that requires zero trust on the maintainers is a core part of our plan to be resistant to Australia-style strongarm backdoor requests. -[tm]: https://github.com/TheMuppets - ## Alternatives ## Giving up Google Play services and stock proprietary applications is a big ask @@ -244,7 +312,7 @@ To address this consider looking at some of the below alternatives for popular applications. Some things won't have alternatives and in those cases you will have to decide -to sideload a specific proprietary APK via Aurora Store or live without that app. +to sideload a specific proprietary APK via Yalp Store or live without that app. You may also find popular travel apps like Kayak, Uber ans Lyft have very usable mobile webapps you can pin to your desktop for a similar experience to a @@ -253,7 +321,7 @@ native app. | App | Alternative(s) | Notes | |:--------:|:---------------------:|:---------------------------------------| | Chrome | Chromium, OrFox | Chromium is built-in to #!os | -| Play | F-Droid, Aurora Store | F-Droid is built-in to #!oa | +| Play | F-Droid, Aurora Store | F-Droid is built-in to #!os | | GMail | K9Mail | | | Drive | Nextcloud | | | Music | D-Sub | Will need a Subsonic capable server | @@ -266,3 +334,5 @@ native app. ## Notes ## Use at your own risk. You might be eaten by a grue. + +[aosp-build]: https://github.com/hashbang/aosp-build diff --git a/aosp-build b/aosp-build new file mode 160000 index 0000000..a550c23 --- /dev/null +++ b/aosp-build @@ -0,0 +1 @@ +Subproject commit a550c23133629da2d6948971cd1bab34eaac23b9 diff --git a/config/config.yml b/config/config.yml index 41ff296..eb4249a 100644 --- a/config/config.yml +++ b/config/config.yml @@ -1,145 +1,116 @@ -version: '10' +version: '11' name: HashbangOS type: release variant: user -datetime: 1583772201 +# variant: userdebug +datetime: 1609226148 host: android user: build build_kernel: true platform: + manifest_url: https://github.com/GrapheneOS/platform_manifest.git extra_remotes: - - name: github - fetch: https://github.com - - name: gitlab - fetch: https://gitlab.com + - name: fdroid + fetch: https://gitlab.com/fdroid extra_projects: - - name: fdroid/fdroidclient - groups: device - path: packages/apps/F-Droid - remote: gitlab - revision: refs/tags/1.7 - - name: fdroid/privileged-extension + - name: privileged-extension groups: device path: packages/apps/F-DroidPrivilegedExtension - remote: gitlab + remote: fdroid revision: refs/tags/0.2.11 - - name: hashbang/android-prepare-vendor - groups: device - path: vendor/android-prepare-vendor - remote: github - revision: refs/heads/10.0 - - name: stevesoltys/backup - groups: device - path: packages/apps/Backup - remote: github - revision: refs/heads/develop - - name: GrapheneOS/platform_packages_apps_Updater - groups: device - path: packages/apps/Updater - remote: github - revision: refs/heads/pie - - name: GrapheneOS/platform_external_chromium-webview - groups: pdk - path: external/chromium-webview - remote: github - revision: refs/heads/10 - - name: GrapheneOS/platform_packages_apps_DeskClock - groups: pdk-fs - path: packages/apps/DeskClock - remote: github - revision: refs/heads/10 remove_paths: - - packages/apps/Calendar - - packages/apps/QuickSearchBox - - packages/apps/Browser2 - - platform/prebuilts/qemu-kernel - - platform/developers/samples/android - - platform/developers/demos - device/generic/car + - device/generic/mini-emulator-arm64 + - device/generic/mini-emulator-armv7-a-neon + - device/generic/mini-emulator-x86 + - device/generic/mini-emulator-x86_64 - device/generic/qemu - - device/lenaro/bootloader/arm-trusted-firmware - - device/lenaro/bootloader/edk2 - - device/lenaro/bootloader/OpenPlatformPkg - - device/lenaro/hikey - - device/lenaro/hikey-kernel - - device/lenaro/ - device/google/atv - device/google/contexthub - device/google/crosshatch-kernel - - device/google/wahoo-kernel - - device/google/marlin-kernel - device/google/muskie - - device/generic/mips - - device/google/hikey-kernel - - device/generic/mips64 - - device/generic/mini-emulator-arm64 - - device/generic/mini-emulator-armv7-a-neon - - device/generic/mini-emulator-mips - - device/generic/mini-emulator-mips64 - - device/generic/mini-emulator-x86 - - device/generic/mini-emulator-x86_64 - - device/google/accessory/arduino - - device/google/accessory/demokit + - device/google/wahoo-kernel + - device/lenaro/bootloader/arm-trusted-firmware + - device/linaro/bootloader/OpenPlatformPkg + - device/linaro/bootloader/arm-trusted-firmware + - device/linaro/bootloader/edk2 + - device/linaro/dragonboard + - device/linaro/dragonboard-kernel + - device/linaro/poplar + - device/linaro/poplar-kernel + - platform/developers/demos + - platform/developers/samples/android + - platform/prebuilts/qemu-kernel + - prebuilts/android-emulator remove_groups: - darwin + - beagle_x15 + - mips + - yukawa + + # Needed for m otatools-package: + # - hikey + + - crosshatch + - coral + - taimen + - wahoo + - sunfish patches: - - platform/accept-sdk-licenses.patch - platform/set-packages.patch - - platform/add-chromium.patch - - platform/add-fdroid.patch - - platform/add-updater.patch - - platform/fix-devicenames.patch - - platform/tmp-set-webview.patch - - platform/ignore-allowbackup-false.patch -apps: - chromium: - version: 78.0.3881.2 - src_ref: 0712ce29fd5a1abba8b2a94a84d977251fa7928b - depot_tools_ref: 9185e4495d6d17e1ee27313fffdaaf6ca50060ca + - ypid/add-updater.patch + - ypid/revert-pad-filenames.patch + # - ypid-android-patches/patches/do-not-require-strong-auth-on-regular-time-interval.patch + # - patches/intended-to-upstream/0001-Dynamically-detect-number-of-system-cores-but-not-av.patch + # - ypid-android-patches/patches/full-iso-8601-support-for-en_CA-cldr-locale.patch devices: bonito: - kernel_name: bluecross - kernel_ref: origin/android-msm-bluecross-4.9-pie-qpr1 - build_id: QQ2A.200305.002 - factory_hash: 418015e0a8841aeaebd98eff8212102c6d9bb8cb7764d34365d72e4be5526d0d - ota_hash: 6b8498f7488ae0ff67809c54a842619ac399801159516b57afb57b4b1f40ab23 - platform_ref: android-10.0.0_r30 + kernel_ref: android-msm-bonito-4.9-android11 + build_id: RQ1A.210205.004 + factory_hash: 980275f444f67c23638304ed72b3c569f3f008302263a26aab1af161a9dbfbe5 + ota_hash: 8ac14105c1a1ef2d7960c27c61417a65b4672dc899a290315b2ab6154202e5c8 + platform_ref: RQ1A.210205.004.2021.02.02.09 + platform_pubkey: daniel.micay.asc sargo: - kernel_name: bluecross - kernel_ref: origin/android-msm-bluecross-4.9-pie-qpr1 - build_id: QQ2A.200305.002 - factory_hash: e03d9a432164579b13e3f015ba501fb785c7a1ac9f76d8cabda2752f498625dd - ota_hash: be77b91cb875061cef95fe8990ce741a500c86a0031a07b84e61a0b037035203 - platform_ref: android-10.0.0_r30 + kernel_ref: android-msm-bonito-4.9-android11 + build_id: RQ1A.210205.004 + factory_hash: cfe24f6ea039d362991a2d3de8e85f37914004b7bf1df446b25de1214fb92cfe + ota_hash: d7345ef80dea3f397a5624a5080c2916190f04ce79169547a08eb0982012c06d + platform_ref: RQ1A.210205.004.2021.02.02.09 + platform_pubkey: daniel.micay.asc crosshatch: kernel_name: bluecross kernel_ref: origin/android-msm-bluecross-4.9-pie-qpr1 avb_mode: vbmeta_chained - build_id: QQ2A.200305.002 - factory_hash: f08faf04c8d22782546a2db608ff4c6433469c3102b750d8fbfd7ee7f737ebbb - ota_hash: a440277477f646cf6fec9f08e6e224f2a4e345499d5250cfdcd70d8b2d6afab2 - platform_ref: android-10.0.0_r30 + build_id: RQ1A.210205.004 + factory_hash: c9b061a5491bd26e1d8a96326d97651dbf1ad64e5fc0ec4608b64a84c194d285 + ota_hash: 8b7aecf5636758290b42ad577128ce83e106ccfc7053346ca370d6de9a3e12ae + platform_ref: RQ1A.210205.004.2021.02.02.09 + platform_pubkey: daniel.micay.asc blueline: kernel_name: bluecross kernel_ref: origin/android-msm-bluecross-4.9-pie-qpr1 avb_mode: vbmeta_chained - build_id: QQ2A.200305.002 - factory_hash: d781450808addd8c210999bdd2c2fcd91458d07c0b39be185ad114d041247100 - ota_hash: b24267ae4a6ab1000e78cbc6aed451868f7f79a4af6c89de45b497ba86dc6305 - platform_ref: android-10.0.0_r30 + build_id: RQ1A.210205.004 + factory_hash: 3ab98ba8d8e94c16908255a3ed8d75d784a188c0d6aa49f5198cc9d10b887042 + ota_hash: 6715408e433b0040020b38110a7cfbc741efa1c71023880dee6d3e82b94e838a + platform_ref: RQ1A.210205.004.2021.02.02.09 + platform_pubkey: daniel.micay.asc taimen: kernel_name: wahoo kernel_ref: origin/android-msm-wahoo-4.4-pie-qpr2 avb_mode: vbmeta_simple - build_id: QQ2A.200305.002 - factory_hash: 0e3198556031148a94e281768aeec3825f81d2a28be8162716a41ae79c2aea2c - ota_hash: ad1c133174950e54f2d047f6fe7995343f4074930359c41b889a683ec52b5da7 - platform_ref: android-10.0.0_r30 + build_id: RP1A.201005.004.A1 + factory_hash: 2f5c4987a8e1c29bb2843d7f7d36721d52f2eb25a0fe4c74b3590e34a06eb44f + ota_hash: 9de3b96223cf14e8afd69ed9b21b801a15a96990781a7058ac8418ffd78e0dd7 + platform_ref: RQ1A.210205.004.2021.02.02.09 + platform_pubkey: daniel.micay.asc walleye: kernel_name: wahoo kernel_ref: origin/android-msm-wahoo-4.4-pie-qpr2 avb_mode: vbmeta_simple - build_id: QQ2A.200305.002 - factory_hash: e5da4d98ce71af9f6cdb2192fa7f921443769682539b58959f83ccf6f9004b49 - ota_hash: beb950219e29584e7d52aa6bdc286f4387f326cea480fcc68d5c0a7aaa96a019 - platform_ref: android-10.0.0_r30 + build_id: RP1A.201005.004.A1 + factory_hash: 0c23f6cf9e2194a3e72b1288f65c5a7f2f6c020080af49c8a494ee99ab3eb543 + ota_hash: ccd1069bde76fc2ef3414d619ddb5fb840addae955e85d9829df9a7e8d2484a9 + platform_ref: RQ1A.210205.004.2021.02.02.09 + platform_pubkey: daniel.micay.asc diff --git a/config/manifests/sargo/base.xml b/config/manifests/sargo/base.xml index a175a00..44019f4 100644 --- a/config/manifests/sargo/base.xml +++ b/config/manifests/sargo/base.xml @@ -1,25 +1,745 @@ - - - - - - + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -28,745 +748,50 @@ - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - \ No newline at end of file diff --git a/config/manifests/sargo/kernel.xml b/config/manifests/sargo/kernel.xml deleted file mode 100644 index 8bb257f..0000000 --- a/config/manifests/sargo/kernel.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/config/manifests/sargo/local_manifest.xml b/config/manifests/sargo/local_manifest.xml new file mode 100644 index 0000000..f2ab7c8 --- /dev/null +++ b/config/manifests/sargo/local_manifest.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/config/openpgp_keys/fdroid.asc b/config/openpgp_keys/fdroid.asc new file mode 120000 index 0000000..86408ab --- /dev/null +++ b/config/openpgp_keys/fdroid.asc @@ -0,0 +1 @@ +hans-christoph.steiner.asc \ No newline at end of file diff --git a/config/openpgp_keys/hans-christoph.steiner.asc b/config/openpgp_keys/hans-christoph.steiner.asc new file mode 100644 index 0000000..42f2eae --- /dev/null +++ b/config/openpgp_keys/hans-christoph.steiner.asc @@ -0,0 +1,290 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQINBFY1RO0BEAC94s679hO9oxi2h1GF0hN7xCXxeIyJp58rA2QxuMJ/NvMhrfBG +VqhkolUb7IqvHy8n7jvTCCAJOHP6ZAtUUwV20ZpUa2Mfp0/6dbGkvXcXwGlU9Shp +BiXnDsKvgRRX5gOO/WeWLe8x8HRcFfcJVXS9pHRw2bxjrbs3zKlf7yBACcSt6ZSg +PsqHuUQSUs4Qo0E0/H14uJiDk32qQ1YicVrE1r2pFe9iZpxBMGTwgZyNUEUYDeVf +TDubL7Jc1MUpgotNTxbJ3jVxt0uHn20lhNXG6ybaYK3MhIHIEp9Nbd4l6+Y81ZgI +Qbs4jAbAPcy+qY3GT2uQfbFb2UK8+hnDotGmejgoYuDZGBaAukiELIKxrsNCvaSg +5DI/yrH6Vx6ZceHpitrer6yOwZescc5SGud3btU4Iktfw7w+5pxmyypUazaltibS +d13o56n/aKrQZw098bhqnh9xTbPVK14t4wTdsJKyZmJv8oKCqppEuhTcq8kur0PW +OM85NSBl0igSfj8/CR8CbzgasMPNQVVwUA0Ody0s8wO13+WVaLq7y6Xpy9t6jSVv +S8KLgmJ/wTJimHb2cctHNBSQEwnJtRyy/o7kKnge6HPzOprjPAlv6okA2XQaLTxy +jW1YCRwNGatNAJ2WnJx3m89WGRONN6qQ3RFX59kbyzR1uL6D3Z6ts7bTmwARAQAB +tCVIYW5zLUNocmlzdG9waCBTdGVpbmVyIDxoYW5zQGVkcy5vcmc+iQI3BBMBCgAh +AhsBBQsJCAcDBRUKCQgLBRYCAwEAAh4BAheABQJWNUcpAAoJEOnijeoAqlVWFs4P +/1wCLFMY2G7twL61nQ7xQAlFDUbS3TeX0GzRXPgNrNeCBHPG9SubP8JEMhdpbKUC +YaWQ277559dbhv0/Gjyfw0X5m4qzAyXPt4biPi6o9H2+PJ+AAEYrNjAjdYPk1JMc +fs87pe9Nhaj56MaolFg8adY31lZQm1+xHmvR5daxbolzlPuurf+pf62uESUGdAwF +cD5rHPQZZ/HF4z2MhvUJK/PNn45kQbOvnSaa81/zvnupMxaLT7Zx1qWIBFlCQKEY +1cCaOgowst+eriVf0oixO70OA1ZsH1gmvnIIk9Qo9eg3nQthmdiUsFIM4ChuiHLZ +6NmYGWxgMiz3N7msxpW4cVIavopEJe2rlRNeE4gPviPidBfvFi1Tv+jUjRGuhXDC +lTjmdmiR03te6EBfrTvbw0VETRQUUQD1ltvCuZXAcUF5Xgbb7ujjNZRikwNro7zZ +sSCqQ0Wi8DAWV8qH0n1wmXV7iH3KwCdjW+tYORNhwj9P8Bp1kOi4V3/5shNVOuAx +RrmSNb2LM2bMkikzDVVJRZBQDpiXbWykK4agyynfwmNGOLh80h7DxgIdyks6AtIe +QeoYsc8A3NQGf8os2Fotg4JwUEpXosXqUM2f1sZQ1xP55gxaPVzj4ZDV/D26/3ni +kVkZ1DT1A43YVWQCVeZ8VZsmGR6ytMI1ZQSmCm7CxtrxiQJ7BBMBCgBlAhsBBQsJ +CAcDBRUKCQgLBRYCAwEAAh4BAheABQJWN2OJQxhodHRwczovL3BncC5taXQuZWR1 +L3Brcy9sb29rdXA/b3A9dmluZGV4JnNlYXJjaD0weEU5RTI4REVBMDBBQTU1NTYA +CgkQ6eKN6gCqVVYZNw//fqsBbq1mErL3/Yd+HCZSmqnZGTN6tcg8ksiE1eYw7OXv +HRpl5ALZ5yn7HnnSXE/t3gMvEI86CQV42Qht9ncYmnOOhju9COQqawkCOqu9Qrgw +fcbSMGBuwf0RfZSqE4INy9mnchKsbg8oOvSdD/DnRG0O+DfjzAV5ffVg6EIIzfTY +SQqgYAVrMs5zMG/d9ZOsyJknSpj4p8hU9glpoLWvkltr5+cYwMZI2hLD/l6Lapf8 +OvF+nfdrfH7ElaF9ixWmZ9zezCx3Dg1nf0bAae+6RNB3omGh/GawXCP5fru4rT3o +OBUmkSi/E4GFTZOqByjcRKD/4GAv0bCvzJJQ4I74RRr2Ite9VbUe4KNbak+zJGez +OTlKD2M2WQry72m54ud/39pyp+C5XHcm0O7gaGGVHDeSQITFU2TjPY33XSTFQLaK +GjHcqF5o9frzLlOa+0lfSZyZaL72bWymSNvlcyxERRreS8O9tuZUhnZ5Ecd1C5bW +Wd6oOLz0boBFNqQnChGcMrQ/6AZIZLwsGnauNqB8VqEOQHL3b9MZ87Mb9PgjCLqd +Jm+fMNMo8PVh4qWTl46ZjQSK0ANXNg9xSq2j1f9kaUVT/hStheCpBxD9faahKHWh +HSKkqih/4qYxCPK/aUcQZ0C/iJMxPDLnHf9maooycOEF0vQ8PpCArCo53N3aUCe0 +JkhhbnMtQ2hyaXN0b3BoIFN0ZWluZXIgPGhhbnNAYXQub3IuYXQ+iQI3BBMBCgAh +AhsBBQsJCAcDBRUKCQgLBRYCAwEAAh4BAheABQJWNUcoAAoJEOnijeoAqlVWPAQQ +ALHrA3gjhboUyRGy5RRDqsqmgivrrsKFNPk1joRIFcCBawt4IRtYnhEneaGUe0Ci +r+aqWGzJ66OPGxQGAaJdmNl2RG1M3X60brEeUzoslDkTr5aaLW91QcRQjV2EIHUj +s5JVKX5x72AoeAlm7DW0bX5pZoDPfAwfHbUJD/dmrju31/q9hXiyB7+ge+sVLn7e +iHTXGQw4j1AlLWW1eNqseMhz7qhsJYbrBQ11bJTS/+ZZ9HPUbA745zVEGOhP6d+3 +7wZv5BCwN4gBhqIdlZ6mlMxPaf+ZhnDLpN+cKta4LGqiMGFgaulGrLLVYVtw7N8T +a2dLKycJORHrZ679QVO1LKtpW2+xlpajluOsxymM7ZdGO/5sXz0tqAYxLCAbDmfK +9boxYvyvnqS/fUoLBEvrENbYOzM08TRRPR7/U64KuPcHQm5JKbd+2psuwvEZKXhE +9aZ+MQA+NeZgsGYSm7W06mAW/pqh1IcICZwSoRM4X9Fp2fRyxQu3mOXXr20YuCLD +D0LrQhThhsvCNMY1bpX7T97lbaNueN8tivJWYXGU+r3Hxsjks76I2lot2KTHYe9s +WfY8kxuUtqF7EHwA67Hc3n03jQNCTzbaM6dOuJH8vmPlsDXgGGy/H+orLoorzXg6 +7LT95f5rD0jSXw99futajMrtxDO5MmyHV20er1RlZHBuiQJ7BBMBCgBlAhsBBQsJ +CAcDBRUKCQgLBRYCAwEAAh4BAheABQJWN2OJQxhodHRwczovL3BncC5taXQuZWR1 +L3Brcy9sb29rdXA/b3A9dmluZGV4JnNlYXJjaD0weEU5RTI4REVBMDBBQTU1NTYA +CgkQ6eKN6gCqVVYImRAAs68NqR7xZrfgbUFPnedvyal4DzPKD40tEcrxJeRHOig6 +B4eMWc5j1guf4zv5yRz9MixLwqfyRCbVl/MToz+ppnd+ciYds7nh5YFdwfmf2CZ/ +IWoCB5C6x3+5fsum8utycnTmn2z+1n6nUjxWjSLxkc9WivKvp92AVNJsXMtxvBN9 +fhNxOJF2pikFR3eSa1fWeW9xbTivxO+IGv6YkbhVfg5ey9hfg1NrUmAyBk6wK2NG +it6QDY2sW+PC4Tlcb1BwJXUFv2GHnOGoP/LdCVMXuNEABqzqnxJ1Ekghi+uiOY1I +eomTl/UCFBnZCGWkuZEqz6IaGtQWjwS86ENu7y1N0+y8MQhQs85Y8cEmy25C51BM +VFuO32FQ4gFaVnsDeNqUDzPpN2KgBzSAUP11fYdob2w5eTvZSJz/Ykdi9hIU2WL0 +OZpufUFbkHFlx/ofw04edWKFpqS+KxG6c/I15ht4fDNtou/A2eRmJ1JAt2h6eIJG +YbV3Scu5hS0Nf/A9rfmuJtm26uzj1Ef57LSUkmtmkob6yzlxmeBm7gyLxhErDsBB +qh7fcycKJRPuVCe3A210+GTT2CqiuoXtpe8/cSjSodiSUgEo2tVL6yS/SP2Hkqqf +/lIU6KWWMZ6vZby7y+gzJcK7uZMwd1NCzICveV3ZXiCo49HOHcGt57zFjn90u1i0 +MkhhbnMtQ2hyaXN0b3BoIFN0ZWluZXIgPGhhbnNAZ3VhcmRpYW5wcm9qZWN0Lmlu +Zm8+iQI6BBMBCgAkAhsBBQsJCAcDBRUKCQgLBRYCAwEAAh4BAheAAhkBBQJWNUcl +AAoJEOnijeoAqlVWKgAP/0hUOmTJ/RfF+ccm2e3hggN/W8VlwbFaRP4fcwKT754Y +BUT38v4UFhNBkZQTC9ubXBoaMNz40F6p1QzeDI4wBAFXzVvpS/0tx56hphG8og22 +pzTyE/4cx3X4gU8XqPzULvWo4lx2YyMATTRCqE7rEJfX3qE4vYzg1fl8tHIseBFs +IxoLITgfqW1Asx4TUcOGqT0k9/Kp+vg/6STE2cAzB2VVZbWpvT34q9hWsT8dMZsk +1q8mKzYJSxdHssVnN6Bs+BRMujB/7qipcPP8feemCKfVat2X2ysBdph2SBPmlfdR +VwEuQ9y44cJdn7JfGglUsFNfG3oTvBXgc0wCyjzQr+jLGh0uqAOSjooyZ8RcA9/e +oKH/bcZkYjl5qsxYuYIyzPoyqpcmerhiBaxa3lWZixD72RM42MsdYoEU0ZiAdrFh +VR7c7vdd+IF7LmTn5wRwe8Vu9zeePWMdm+vgp2APfXYH3QyJ/CJQ13bI0NFfydCA +2dUgxuCbi6httlRf8xMmUk7+aDH9GncEAw+T0Ggy5ufczu1Nj5s+WwVUpX7UwpUy +ahGKr/jszm45pudiliC3EargBeIfxUlHX9rNEsjvrJIs47BMs6OXLYBZ1GGyF5Oi +EhxmDyg2fpSwqjYODyMMv0UFs0RKlIAwnvHago1pcPKwVsKRkT8SfdrWgJBeLCf5 +iQJ+BBMBCgBoAhsBBQsJCAcDBRUKCQgLBRYCAwEAAh4BAheAAhkBBQJWN2OFQxho +dHRwczovL3BncC5taXQuZWR1L3Brcy9sb29rdXA/b3A9dmluZGV4JnNlYXJjaD0w +eEU5RTI4REVBMDBBQTU1NTYACgkQ6eKN6gCqVVb8jA//RSrzz3p/g0k+/2bnEpme +kISteG8ZTxviDAfkRdrDrpn/RmnnrMX4nSst1Bn0WgseZKEzxkgQeZs2z81PGonm +pHRAMomXyQlbs//J82Ng4e0ELE85Lktxqka1RP2PHsYA9T6gnvNELScXx6i33sOz +v3ufXf0FJtptnviPSZ/Ap0YXFFplUB+HM4Pe16/LFQYzCPfD7NGlJesMdz6Zlr2g +dUTonrfasoxRPIMf/uSPOo3niX51bb1IrY0J8Lv2N+MNw76V1tRXSUPP4dwsCIRh +jVS5y4ZViAvSz9uUKrDxgGbAEV3NhjAvoleIrQo7566QRlmX2cBZvQJS26r/x2qQ +HlUoTf2wGNmkAN/zGScxclVM3U2UxS/pkMqBEHIvSBZ3GZJostyMGWKJ5ewO8wMd +mfCFWxd6g8HWjo9o0usejqiF/y9SulXMO3qPATJ0oGMmLKShJp7gZvvOBXHb+O8d +kbdOsyrCS2Y9Apz6ZL9ZAFUx9SZrLcRi4hdEWGHaXhzMzEU9alqfSfFXdBKmM9gk +U5wqbR884sEB97ladq07xEa0v+q452k6EyKt/NkpvQjgKIsabJQeF7AIZyCB6Oqs +E0OyKnhEThfARhsf9WNazSDlVWh1ItSbRoL/3x4b5dHRtX+/S6t0cV50U5VuRMFh +hglY3NHG+/alolWhTPFafkbR1FLUUAEQAAEBAAAAAAAAAAAAAAAA/9j/4AAQSkZJ +RgABAQAAAQABAAD/2wBDABcQERQRDhcUEhQaGBcbIjklIh8fIkYyNSk5UkhXVVFI +UE5bZoNvW2F8Yk5QcptzfIeLkpSSWG2grJ+OqoOPko3/2wBDARgaGiIeIkMlJUON +XlBejY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2N +jY2NjY3/wAARCAEgAPADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAEC +AwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJx +FDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpT +VFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ip +qrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6 +/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcF +BAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl +8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6 +goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU +1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDo6KKWsygoopaA +CiiloAKKKKAFoopGYIuWOB60wHU1nVepxWbda3a2ok3OCVAIUHJNcvqPiG6u2IjP +lR9gOtCVxHYT6pbWzASuBkZBz1qBPEOnMMmcDI7iuClnlmx5jlscDNR5NVygd5J4 +n09GIDs+O6rUD+K7QH5Uc/hXF5OKSjlA7238S6fM+0uUPqw4rSju4ZSAkind0wa8 +wzUkc8sTBkkZSpyCD0o5QPUaWuDs/Et7C48xw69ORW/a+JLad0ViVJ61NgN2ikDA +jIPFLQAUUUtABRRRQAUUUUAFFFFAFelpKWkMKWkpaAClpKWgApaSo550giaRyAAP +WgBZp0hiLucKoya5HVfEslxuitRtTPD96p6xqz3s5AZvKH8J4FZVWkIUsWOWOTSU +UlMQtFFFABRS44zQAOc0wEooooAKUEg5FJRQBt6Xr89sVikbdGcDJ7CulsdYhubr +yQ2SB971Nef1JDPJDJujYqfUVLQz1IEHpS1gaVrMDJHCX+bA3Env9a3gcgH1qQFo +oooAKKKKACiiigCvS0lLSGFLSUtABS0lR3EnlwsfagCpqOpw2UZ8zIPauO1DVZru +Q7WZUP8ADu603Vrp7i6YM3CnAqjn0q0hAck5pMUvPQVKYiq471QWIaSnMpXrSUhB +QKKKYF23hV42Bb8KasMeGZj8oH606127Xz/d65701W/dFGAyD1qSis4AY46U2pZV +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 +Vb1jc6u1Xz1ZrwGS8Q== +=P4Hp +-----END PGP PUBLIC KEY BLOCK----- diff --git a/config/patches/platform/add-updater.patch b/config/patches/platform/add-updater.patch index 0bfeb8e..f9d5b8c 100644 --- a/config/patches/platform/add-updater.patch +++ b/config/patches/platform/add-updater.patch @@ -1,11 +1,31 @@ + project packages/apps/Updater/ diff --git a/packages/apps/Updater/res/values/config.xml b/packages/apps/Updater/res/values/config.xml -index b9fc22f..b36dfeb 100644 +index a32f136..2eaaca0 100644 --- a/packages/apps/Updater/res/values/config.xml +++ b/packages/apps/Updater/res/values/config.xml -@@ -1,4 +1,4 @@ +@@ -1,6 +1,6 @@ - https://releases.grapheneos.org/ + https://releases.mobile.hashbang.sh/ - + stable + 1 + false + +project build/make/ +diff --git a/build/make/target/product/media_system.mk b/build/make/target/product/media_system.mk +index 77b77fef89..6099d88f74 100644 +--- a/build/make/target/product/media_system.mk ++++ b/build/make/target/product/media_system.mk +@@ -37,9 +37,7 @@ PRODUCT_PACKAGES += \ + requestsync \ + StatementService \ + +-ifeq ($(OFFICIAL_BUILD),true) +- PRODUCT_PACKAGES += Updater +-endif ++PRODUCT_PACKAGES += Updater + + PRODUCT_PACKAGES += Seedvault + diff --git a/config/patches/platform/set-packages.patch b/config/patches/platform/set-packages.patch index 12fe3cf..3d28501 100644 --- a/config/patches/platform/set-packages.patch +++ b/config/patches/platform/set-packages.patch @@ -1,31 +1,14 @@ project build/make/ diff --git a/build/make/target/product/handheld_product.mk b/build/make/target/product/handheld_product.mk -index 54dcaf25e..73e1c70aa 100644 +index f504f61874..e997b8be4b 100644 --- a/build/make/target/product/handheld_product.mk +++ b/build/make/target/product/handheld_product.mk -@@ -22,22 +22,23 @@ $(call inherit-product, $(SRC_TARGET_DIR)/product/media_product.mk) - - # /product packages - PRODUCT_PACKAGES += \ -- Browser2 \ -- Calendar \ - Camera2 \ +@@ -28,6 +28,7 @@ PRODUCT_PACKAGES += \ Contacts \ DeskClock \ + ExactCalculator \ + F-DroidPrivilegedExtension \ Gallery2 \ LatinIME \ - Launcher3QuickStep \ Music \ - OneTimeInitializer \ - Provision \ -- QuickSearchBox \ - Settings \ - SettingsIntelligence \ - StorageManager \ - SystemUI \ -+ Updater \ - WallpaperCropper \ - frameworks-base-overlays - diff --git a/scripts/build-kernel b/scripts/build-kernel new file mode 100755 index 0000000..ea8a8f3 --- /dev/null +++ b/scripts/build-kernel @@ -0,0 +1,36 @@ +#!/bin/bash +[ -f /.dockerenv ] || { echo "please run in supplied container"; exit 1; } +set -e; eval "$(environment)" + +base_dir="${BASE_DIR?}" +device="${DEVICE?}" + +case $device in + sargo|bonito) kernel_repo="crosshatch"; big_brother_device="bonito" ;; + # Pixel 3, Pixel 3 XL, Pixel 3a, Pixel 3a XL: crosshatch + # Pixel 3: blueline + # Pixel 3 XL: crosshatch + # Pixel 3a, Pixel 3a XL: bonito + # Pixel 4, Pixel 4 XL: coral + # Pixel 4a: sunfish + # Pixel 4a 5G, Pixel 5: redbull + # Pixel 4a 5G: redfin + # Pixel 5: bramble +esac + +cd "$base_dir/kernel/google/$kernel_repo" + +if [ -f "done_${device}" ]; then + echo "Kernel for $device was already build. Skipping" + exit 0 +fi + +# Fix submodule support. +mkdir -p "../../../../.repo/project-objects/kernel_google_${kernel_repo}.git/modules" +ln -s "../../../../.repo/project-objects/kernel_google_${kernel_repo}.git/modules" .git 2>/dev/null || : + +git submodule sync +git submodule update --init --recursive +./build.sh "$big_brother_device" + +touch "done_${device}" diff --git a/scripts/patch-fdroid-privileged-extension b/scripts/patch-fdroid-privileged-extension new file mode 100755 index 0000000..674954f --- /dev/null +++ b/scripts/patch-fdroid-privileged-extension @@ -0,0 +1,22 @@ +#!/bin/bash +[ -f /.dockerenv ] || { echo "please run in supplied container"; exit 1; } +eval "$(environment)" +set -o nounset -o pipefail -o errexit + +base_dir="${BASE_DIR?}" +key_dir="${KEY_DIR?}" + +cd "${base_dir}" +fdroid_org="packages/apps/F-DroidPrivilegedExtension/app/src/main/java/org" +fdroid_whitelist="${fdroid_org}/fdroid/fdroid/privileged/ClientWhitelist.java" +platform_key_hash=$( \ + openssl x509 -in "${key_dir}/platform.x509.pem" -outform DER \ + | sha256sum | cut -c1-64; \ +) +echo "Platform Key Hash: ${platform_key_hash}" +if [ -f "${base_dir}/${fdroid_whitelist}" ]; then + echo "patching file ${fdroid_whitelist}" + sed -i \ + "s/[a-f0-9]\\{64\\}/${platform_key_hash}/g" \ + "${base_dir}/${fdroid_whitelist}" +fi From e659182621dd56b311c19a9fe2db98fa7819868f Mon Sep 17 00:00:00 2001 From: Robin Schneider Date: Tue, 9 Feb 2021 21:40:25 +0100 Subject: [PATCH 2/8] Rename from HashbangOS to HashbangMobile. Closes: #48 --- Makefile | 10 +++++----- README.md | 14 +++++++------- config/config.yml | 2 +- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/Makefile b/Makefile index e460dbd..162b7d7 100644 --- a/Makefile +++ b/Makefile @@ -7,14 +7,14 @@ contain-base-extend = \ --volume $(PWD)/aosp-build/config:/opt/aosp-build/config \ --volume $(PWD)/aosp-build/config/manifests:/home/build/config/manifests-aosp -.PHONY: HashbangOS-setup -HashbangOS-setup: +.PHONY: HashbangMobile-setup +HashbangMobile-setup: cd aosp-build/ && ln -sf ../build -.PHONY: HashbangOS-release -HashbangOS-review: HashbangOS-setup +.PHONY: HashbangMobile-release +HashbangMobile-review: HashbangMobile-setup make -C aosp-build config ensure-git-status-clean make -C aosp-build manifest ensure-git-status-clean fetch make fetch review -HashbangOS-build: clean fetch build release +HashbangMobile-build: clean fetch build release diff --git a/README.md b/README.md index fda02b1..01d2b05 100644 --- a/README.md +++ b/README.md @@ -6,15 +6,15 @@ SPDX-FileCopyrightText: 2020-2021 Robin Schneider SPDX-License-Identifier: MIT -Daniel Micay is listed here because HashbangOS is based on GrapheneOS so this +Daniel Micay is listed here because HashbangMobile is based on GrapheneOS so this documentation either links to https://grapheneos.org/ to avoid redundancy or parts are copied from the GrapheneOS docs and then adapted here. Daniel Micay did not contribute those parts himself and his copyright does not endorse -HashbangOS. +HashbangMobile. --> -# #!os # +# #!mobile (HashbangMobile) # @@ -49,7 +49,7 @@ Testers, builders, and hosting bandwidth needed. ## Support ## -Please join us on IRC: ircs://irc.hashbang.sh/#!os +Please join us on IRC: ircs://irc.hashbang.sh/#!mobile ## Features ## @@ -232,7 +232,7 @@ the following changes: #### Notes * Release process does not yet include OTA updates or binary hosting. -* Volunteers needed! Join #!os on irc.hashbang.sh/6697 to help. +* Volunteers needed! Join #!mobile on irc.hashbang.sh/6697 to help. ## Questions ## @@ -320,8 +320,8 @@ native app. | App | Alternative(s) | Notes | |:--------:|:---------------------:|:---------------------------------------| -| Chrome | Chromium, OrFox | Chromium is built-in to #!os | -| Play | F-Droid, Aurora Store | F-Droid is built-in to #!os | +| Chrome | Chromium, OrFox | Chromium is built-in to #!mobile | +| Play | F-Droid, Aurora Store | F-Droid is built-in to #!mobile | | GMail | K9Mail | | | Drive | Nextcloud | | | Music | D-Sub | Will need a Subsonic capable server | diff --git a/config/config.yml b/config/config.yml index eb4249a..12a3c69 100644 --- a/config/config.yml +++ b/config/config.yml @@ -1,5 +1,5 @@ version: '11' -name: HashbangOS +name: HashbangMobile type: release variant: user # variant: userdebug From ae95739db96006846fb13ffcadd64912b9554a83 Mon Sep 17 00:00:00 2001 From: Robin Schneider Date: Sun, 25 Jul 2021 22:32:39 +0200 Subject: [PATCH 3/8] fix: Remove ypid specific patches, they are only needed by me --- config/config.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/config/config.yml b/config/config.yml index 12a3c69..8d4af18 100644 --- a/config/config.yml +++ b/config/config.yml @@ -58,11 +58,6 @@ platform: - sunfish patches: - platform/set-packages.patch - - ypid/add-updater.patch - - ypid/revert-pad-filenames.patch - # - ypid-android-patches/patches/do-not-require-strong-auth-on-regular-time-interval.patch - # - patches/intended-to-upstream/0001-Dynamically-detect-number-of-system-cores-but-not-av.patch - # - ypid-android-patches/patches/full-iso-8601-support-for-en_CA-cldr-locale.patch devices: bonito: kernel_ref: android-msm-bonito-4.9-android11 From f268e24215b1e4b70b717168514f85d0cdc309a3 Mon Sep 17 00:00:00 2001 From: Robin Schneider Date: Sat, 7 Aug 2021 11:46:43 +0200 Subject: [PATCH 4/8] fix: Update to GrapheneOS RQ3A.210805.001.A1 which required changes We now need to overlay some more scripts. --- aosp-build | 2 +- config/config.yml | 19 +- config/manifests/bonito/base.xml | 1543 ++++++++++++++-------------- config/manifests/bonito/kernel.xml | 24 +- config/manifests/sargo/base.xml | 1526 +++++++++++++-------------- scripts/build | 67 ++ scripts/flash | 16 + scripts/release | 117 +++ 8 files changed, 1775 insertions(+), 1539 deletions(-) create mode 100755 scripts/build create mode 100755 scripts/flash create mode 100755 scripts/release diff --git a/aosp-build b/aosp-build index a550c23..68e48ba 160000 --- a/aosp-build +++ b/aosp-build @@ -1 +1 @@ -Subproject commit a550c23133629da2d6948971cd1bab34eaac23b9 +Subproject commit 68e48ba699cabb9fb9dc3a78f7f47c930a6f6d6b diff --git a/config/config.yml b/config/config.yml index 8d4af18..62ee281 100644 --- a/config/config.yml +++ b/config/config.yml @@ -2,8 +2,7 @@ version: '11' name: HashbangMobile type: release variant: user -# variant: userdebug -datetime: 1609226148 +datetime: 1628023022 host: android user: build build_kernel: true @@ -61,17 +60,17 @@ platform: devices: bonito: kernel_ref: android-msm-bonito-4.9-android11 - build_id: RQ1A.210205.004 - factory_hash: 980275f444f67c23638304ed72b3c569f3f008302263a26aab1af161a9dbfbe5 - ota_hash: 8ac14105c1a1ef2d7960c27c61417a65b4672dc899a290315b2ab6154202e5c8 - platform_ref: RQ1A.210205.004.2021.02.02.09 + build_id: RQ3A.210805.001.A1 + factory_hash: 4deed5603ff2fcedf9bfe5650cf439b74dd033516d4bb07e02b0125154cb08c7 + ota_hash: 8920cb15c9fb996c22a8d581a2f4f97c0aaf484595d11acd58d015fe27b90d99 + platform_ref: RQ3A.210805.001.A1.2021.08.03.03 platform_pubkey: daniel.micay.asc sargo: kernel_ref: android-msm-bonito-4.9-android11 - build_id: RQ1A.210205.004 - factory_hash: cfe24f6ea039d362991a2d3de8e85f37914004b7bf1df446b25de1214fb92cfe - ota_hash: d7345ef80dea3f397a5624a5080c2916190f04ce79169547a08eb0982012c06d - platform_ref: RQ1A.210205.004.2021.02.02.09 + build_id: RQ3A.210805.001.A1 + factory_hash: 32a5c41f8395857973cad4f6b5a33659b5aee4791f0c9a9f79ce7eb31690624f + ota_hash: ebb9b740bd630191d6193e1a01c4af041e5ddf01325169c197d8bdf194986dda + platform_ref: RQ3A.210805.001.A1.2021.08.03.03 platform_pubkey: daniel.micay.asc crosshatch: kernel_name: bluecross diff --git a/config/manifests/bonito/base.xml b/config/manifests/bonito/base.xml index a175a00..2e4def4 100644 --- a/config/manifests/bonito/base.xml +++ b/config/manifests/bonito/base.xml @@ -1,25 +1,742 @@ - - - - - - + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -28,745 +745,59 @@ - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + \ No newline at end of file diff --git a/config/manifests/bonito/kernel.xml b/config/manifests/bonito/kernel.xml index 8bb257f..eb48f20 100644 --- a/config/manifests/bonito/kernel.xml +++ b/config/manifests/bonito/kernel.xml @@ -1,17 +1,17 @@ - + - - - + + + - - - - - - - - + + + + + + + + \ No newline at end of file diff --git a/config/manifests/sargo/base.xml b/config/manifests/sargo/base.xml index 44019f4..2e4def4 100644 --- a/config/manifests/sargo/base.xml +++ b/config/manifests/sargo/base.xml @@ -1,745 +1,742 @@ - - - + + - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + - - + + - - + + - - - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -748,50 +745,59 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/scripts/build b/scripts/build new file mode 100755 index 0000000..bf30a7e --- /dev/null +++ b/scripts/build @@ -0,0 +1,67 @@ +#!/bin/bash +[ -f /.dockerenv ] || { echo "please run in supplied container"; exit 1; } +set -e; eval "$(environment)" + +device="${DEVICE?}" +base_dir="${BASE_DIR?}" +build_type="${BUILD_TYPE?}" +build_id="${BUILD_ID?}" +build_variant="${BUILD_VARIANT?}" +external_dir="${EXTERNAL_DIR?}" +patch_dir="${PATCH_DIR?}" +build_id="${BUILD_ID?}" +platform_patches="${PLATFORM_PATCHES?}" +public_key_dir="${PUBLIC_KEY_DIR?}" + +function apply_patches(){ + cd "${base_dir}" + local fdroid_org="packages/apps/F-DroidPrivilegedExtension/app/src/main/java/org" + local fdroid_whitelist="${fdroid_org}/fdroid/fdroid/privileged/ClientWhitelist.java" + test -r "${public_key_dir}/platform.x509.pem" || { echo "${public_key_dir}/platform.x509.pem not readable" 1>&2; exit 1; } + local platform_key_hash; platform_key_hash=$( \ + openssl x509 -in "${public_key_dir}/platform.x509.pem" -outform DER \ + | sha256sum | cut -c1-64; \ + ) + echo "Platform Key Hash: ${platform_key_hash}" + if [ -f "${base_dir}/${fdroid_whitelist}" ]; then + echo "patching file ${fdroid_whitelist}" + sed -i \ + "s/[a-f0-9]\\{64\\}/${platform_key_hash}/g" \ + "${base_dir}/${fdroid_whitelist}" + fi + for patch in ${platform_patches//,/ }; do + echo "Applying patch: $patch_dir/${patch}" + patch -p1 --no-backup-if-mismatch < "${patch_dir}/${patch}" + done + cd - +} + +function build_external(){ + local vendor_dist="${external_dir}/vendor/out/${device}/${build_id,,}/vendor" + local vendor_dest="${base_dir}/vendor/" + [ -d "${vendor_dist}" ] || build-vendor + cp -R "${vendor_dist}/." "${vendor_dest}" + build-kernel +} + +function build_platform(){ + cd "$base_dir" + unset BUILD_ID + choosecombo "${build_type}" "${device}" "${build_variant}" + # Not reliable on Android 11?: + # (cd "$base_dir/external/icu/tools" && ./updatecldrdata.py && ./updateicudata.py) + # (cd "$base_dir/external/icu/tools/srcgen" && ./generate_android_icu4j.sh) + clear + if [ "$build_variant" == "user" ]; then + (set -o xtrace; m target-files-package brillo_update_payload otatools-package) + else + (set -o xtrace; m) + fi + cd - +} + +function main(){ + apply_patches + build_external + build_platform +}; main diff --git a/scripts/flash b/scripts/flash new file mode 100755 index 0000000..46ff38a --- /dev/null +++ b/scripts/flash @@ -0,0 +1,16 @@ +#!/bin/bash +[ -f /.dockerenv ] || { echo "please run in supplied container"; exit 1; } +set -e; eval "$(environment)"; + +cd "$HOME/base" + +device="${DEVICE?}" +build_type="${BUILD_TYPE:-release}" +build_variant="${BUILD_VARIANT:-user}" + +# shellcheck disable=SC1091 +source build/envsetup.sh +choosecombo "${build_type}" "${device}" "${build_variant}" + +fastboot devices +fastboot flashall -w diff --git a/scripts/release b/scripts/release new file mode 100755 index 0000000..191035f --- /dev/null +++ b/scripts/release @@ -0,0 +1,117 @@ +#!/bin/bash +# shellcheck disable=SC1091,SC1090 +[ -f /.dockerenv ] || { echo "please run in supplied container"; exit 1; } +set -e; eval "$(environment)" + +img_path() { + image=${1?} + path=${2?} + grep -Po \ + "require version-${image}=\\K.+" \ + "${path}/vendor-board-info.txt" \ + | tr '[:upper:]' '[:lower:]' +} + +device="${DEVICE?}" +base_dir="${BASE_DIR?}" +build_number="${BUILD_NUMBER?}" +build_datetime="${BUILD_DATETIME?}" +key_dir="${KEY_DIR?}" +release_dir="${RELEASE_DIR?}" +build_id=${BUILD_ID?} + +prefix="" +target_files="${device}-target_files-${build_number}.zip" +target_out_dir="${base_dir}/out/target/product/${device}" +inter_dir="${target_out_dir}/obj/PACKAGING/target_files_intermediates" +bootloader=$(img_path bootloader "${base_dir}/vendor/google_devices/${device}") +radio=$(img_path baseband "${base_dir}/vendor/google_devices/${device}") + +sudo chown -R "$(id -u)":"$(id -g)" "$HOME/release" + +cd "$base_dir" +mkdir -p "$release_dir" + +echo "Running sign_target_files_apks" +sign_target_files_apks \ + -o \ + -d "$key_dir" \ + --avb_vbmeta_key "${key_dir}/avb.pem" \ + --avb_vbmeta_algorithm SHA256_RSA2048 \ + --avb_system_key "${key_dir}/avb.pem" \ + --avb_system_algorithm SHA256_RSA2048 \ + "${inter_dir}/${prefix}${device}-target_files-${build_number}.zip" \ + "$release_dir/$target_files" + +echo "Running ota_from_target_files" +ota_from_target_files \ + --block \ + -k "${key_dir}/releasekey" \ + "${release_dir}/${target_files}" \ + "${release_dir}/${device}-ota_update-${build_number}.zip" + +echo 'Generating OTA metadata' +generate-metadata \ + "${release_dir}/${device}-ota_update-${build_number}.zip" + +echo "Running img_from_target_files" +img_from_target_files \ + "${release_dir}/${target_files}" \ + "${release_dir}/${device}-img-${build_number}.zip" + +echo "Running generate-factory-images" +cat <<-EOF | bash + cd "$release_dir" + source "${base_dir}/device/common/clear-factory-images-variables.sh" + export BUILD="$build_number" + export DEVICE="$device" + export PRODUCT="$device" + export VERSION="$build_id" + export BOOTLOADER="$bootloader" + export RADIO="$radio" + source "${base_dir}/device/common/generate-factory-images-common.sh" +EOF + +echo "Copy scripts and the avb key into factory zip" +cd "${release_dir}" +factory_zip="$(ls -t "${device}"-"${build_id}"-factory-*.zip | head -1)" +factory_tmp="${device}-${build_id}-factory.zip" +factory_dir="${device}-${build_id}" +unzip "${factory_zip}" +rm "${factory_zip}" +rm "${factory_dir}/flash-all.sh" +rm "${factory_dir}/flash-all.bat" +rm "${factory_dir}/flash-base.sh" + +cat <<-EOF >> "${factory_dir}/flash-all.sh" +if ! [ \$(\$(which fastboot) --version | grep "version" | cut -c18-23 | sed 's/\.//g' ) -ge 2802 ]; then + echo "fastboot too old; please download the latest version at https://developer.android.com/studio/releases/platform-tools.html" + exit 1 +fi + +fastboot flashing unlock +fastboot flash bootloader bootloader-${device}-${bootloader}.img +fastboot reboot-bootloader +sleep 5 +fastboot flash radio radio-${device}-${radio}.img +fastboot reboot-bootloader +sleep 5 +fastboot erase avb_custom_key +fastboot flash avb_custom_key ${device}-avb_pkmd.bin +fastboot reboot-bootloader +sleep 5 +fastboot -w --skip-reboot update image-${device}-${build_id}.zip +fastboot reboot-bootloader +sleep 5 +fastboot flashing lock +EOF +chmod +x "${factory_dir}/flash-all.sh" + +cp "${key_dir}/avb_pkmd.bin" "${factory_dir}/${device}-avb_pkmd.bin" + +timestamp=$(date -d "@$build_datetime" "+%y%m%d%H%M.%S") +find "${factory_dir}" -exec touch -t "$timestamp" {} + +zip -X -r "${factory_tmp}" "${factory_dir}" +rm -rf "${factory_dir}" +factory_hash="$(sha256sum "${factory_tmp}" | cut -b -8)" +mv "${factory_tmp}" "${device}-${build_id}-factory-${factory_hash}.zip" From 28ad52542461428c519cce8007f63c35dbe69fbc Mon Sep 17 00:00:00 2001 From: Robin Schneider Date: Wed, 6 Oct 2021 23:24:02 +0200 Subject: [PATCH 5/8] fix: Update to GrapheneOS RQ3A.210905.001 which required changes --- scripts/release | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/scripts/release b/scripts/release index 191035f..fb77560 100755 --- a/scripts/release +++ b/scripts/release @@ -40,14 +40,15 @@ sign_target_files_apks \ --avb_vbmeta_algorithm SHA256_RSA2048 \ --avb_system_key "${key_dir}/avb.pem" \ --avb_system_algorithm SHA256_RSA2048 \ - "${inter_dir}/${prefix}${device}-target_files-${build_number}.zip" \ + --extra_apks OsuLogin.apk,ServiceWifiResources.apk="${key_dir}/releasekey" \ + "${inter_dir}/${prefix}${device}-target_files-${build_number}.zip" \ "$release_dir/$target_files" echo "Running ota_from_target_files" ota_from_target_files \ --block \ -k "${key_dir}/releasekey" \ - "${release_dir}/${target_files}" \ + "${release_dir}/${target_files}" \ "${release_dir}/${device}-ota_update-${build_number}.zip" echo 'Generating OTA metadata' @@ -100,6 +101,7 @@ fastboot erase avb_custom_key fastboot flash avb_custom_key ${device}-avb_pkmd.bin fastboot reboot-bootloader sleep 5 +fastboot oem uart disable fastboot -w --skip-reboot update image-${device}-${build_id}.zip fastboot reboot-bootloader sleep 5 From b6f422728367e3ff11e921a5921a58e608339d88 Mon Sep 17 00:00:00 2001 From: Robin Schneider Date: Sat, 13 Nov 2021 21:19:57 +0100 Subject: [PATCH 6/8] chore: Update to aosp-build with Android 12 support --- aosp-build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aosp-build b/aosp-build index 68e48ba..1d8d059 160000 --- a/aosp-build +++ b/aosp-build @@ -1 +1 @@ -Subproject commit 68e48ba699cabb9fb9dc3a78f7f47c930a6f6d6b +Subproject commit 1d8d059f399303c3429d16362b41c1de4aa578ab From 5d693293efc4a245b4edf3b62f0a05cd7a256e2a Mon Sep 17 00:00:00 2001 From: Robin Schneider Date: Sat, 11 Dec 2021 20:02:11 +0100 Subject: [PATCH 7/8] chore: Apply GrapheneOS changes --- scripts/release | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/scripts/release b/scripts/release index fb77560..aec8ab6 100755 --- a/scripts/release +++ b/scripts/release @@ -41,6 +41,54 @@ sign_target_files_apks \ --avb_system_key "${key_dir}/avb.pem" \ --avb_system_algorithm SHA256_RSA2048 \ --extra_apks OsuLogin.apk,ServiceWifiResources.apk="${key_dir}/releasekey" \ + --extra_apks com.android.adbd.apex="${key_dir}/releasekey" \ + --extra_apex_payload_key com.android.adbd.apex="${key_dir}/avb.pem" \ + --extra_apks com.android.apex.cts.shim.apex="${key_dir}/releasekey" \ + --extra_apex_payload_key com.android.apex.cts.shim.apex="${key_dir}/avb.pem" \ + --extra_apks com.android.appsearch.apex="${key_dir}/releasekey" \ + --extra_apex_payload_key com.android.appsearch.apex="${key_dir}/avb.pem" \ + --extra_apks com.android.art.apex="${key_dir}/releasekey" \ + --extra_apex_payload_key com.android.art.apex="${key_dir}/avb.pem" \ + --extra_apks com.android.cellbroadcast.apex="${key_dir}/releasekey" \ + --extra_apex_payload_key com.android.cellbroadcast.apex="${key_dir}/avb.pem" \ + --extra_apks com.android.conscrypt.apex="${key_dir}/releasekey" \ + --extra_apex_payload_key com.android.conscrypt.apex="${key_dir}/avb.pem" \ + --extra_apks com.android.extservices.apex="${key_dir}/releasekey" \ + --extra_apex_payload_key com.android.extservices.apex="${key_dir}/avb.pem" \ + --extra_apks com.android.i18n.apex="${key_dir}/releasekey" \ + --extra_apex_payload_key com.android.i18n.apex="${key_dir}/avb.pem" \ + --extra_apks com.android.ipsec.apex="${key_dir}/releasekey" \ + --extra_apex_payload_key com.android.ipsec.apex="${key_dir}/avb.pem" \ + --extra_apks com.android.media.apex="${key_dir}/releasekey" \ + --extra_apex_payload_key com.android.media.apex="${key_dir}/avb.pem" \ + --extra_apks com.android.media.swcodec.apex="${key_dir}/releasekey" \ + --extra_apex_payload_key com.android.media.swcodec.apex="${key_dir}/avb.pem" \ + --extra_apks com.android.mediaprovider.apex="${key_dir}/releasekey" \ + --extra_apex_payload_key com.android.mediaprovider.apex="${key_dir}/avb.pem" \ + --extra_apks com.android.neuralnetworks.apex="${key_dir}/releasekey" \ + --extra_apex_payload_key com.android.neuralnetworks.apex="${key_dir}/avb.pem" \ + --extra_apks com.android.os.statsd.apex="${key_dir}/releasekey" \ + --extra_apex_payload_key com.android.os.statsd.apex="${key_dir}/avb.pem" \ + --extra_apks com.android.permission.apex="${key_dir}/releasekey" \ + --extra_apex_payload_key com.android.permission.apex="${key_dir}/avb.pem" \ + --extra_apks com.android.resolv.apex="${key_dir}/releasekey" \ + --extra_apex_payload_key com.android.resolv.apex="${key_dir}/avb.pem" \ + --extra_apks com.android.runtime.apex="${key_dir}/releasekey" \ + --extra_apex_payload_key com.android.runtime.apex="${key_dir}/avb.pem" \ + --extra_apks com.android.scheduling.apex="${key_dir}/releasekey" \ + --extra_apex_payload_key com.android.scheduling.apex="${key_dir}/avb.pem" \ + --extra_apks com.android.sdkext.apex="${key_dir}/releasekey" \ + --extra_apex_payload_key com.android.sdkext.apex="${key_dir}/avb.pem" \ + --extra_apks com.android.tethering.apex="${key_dir}/releasekey" \ + --extra_apex_payload_key com.android.tethering.apex="${key_dir}/avb.pem" \ + --extra_apks com.android.tzdata.apex="${key_dir}/releasekey" \ + --extra_apex_payload_key com.android.tzdata.apex="${key_dir}/avb.pem" \ + --extra_apks com.android.vndk.current.apex="${key_dir}/releasekey" \ + --extra_apex_payload_key com.android.vndk.current.apex="${key_dir}/avb.pem" \ + --extra_apks com.android.wifi.apex="${key_dir}/releasekey" \ + --extra_apex_payload_key com.android.wifi.apex="${key_dir}/avb.pem" \ + --extra_apks com.google.pixel.camera.hal.apex="${key_dir}/releasekey" \ + --extra_apex_payload_key com.google.pixel.camera.hal.apex="${key_dir}/avb.pem" \ "${inter_dir}/${prefix}${device}-target_files-${build_number}.zip" \ "$release_dir/$target_files" From 6c8c618e2a3c85cf0203c9d9278cb24c59bea7b9 Mon Sep 17 00:00:00 2001 From: Robin Schneider Date: Tue, 22 Mar 2022 00:23:02 +0100 Subject: [PATCH 8/8] chore: Update to GrapheneOS SP2A.220305.012.2022030801 --- aosp-build | 2 +- scripts/release | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/aosp-build b/aosp-build index 1d8d059..37d3454 160000 --- a/aosp-build +++ b/aosp-build @@ -1 +1 @@ -Subproject commit 1d8d059f399303c3429d16362b41c1de4aa578ab +Subproject commit 37d34542ecb26fc86408cddfa387f34344d64193 diff --git a/scripts/release b/scripts/release index aec8ab6..c0985a5 100755 --- a/scripts/release +++ b/scripts/release @@ -49,6 +49,8 @@ sign_target_files_apks \ --extra_apex_payload_key com.android.appsearch.apex="${key_dir}/avb.pem" \ --extra_apks com.android.art.apex="${key_dir}/releasekey" \ --extra_apex_payload_key com.android.art.apex="${key_dir}/avb.pem" \ + --extra_apks com.android.art.debug.apex="${key_dir}/releasekey" \ + --extra_apex_payload_key com.android.art.debug.apex="${key_dir}/avb.pem" \ --extra_apks com.android.cellbroadcast.apex="${key_dir}/releasekey" \ --extra_apex_payload_key com.android.cellbroadcast.apex="${key_dir}/avb.pem" \ --extra_apks com.android.conscrypt.apex="${key_dir}/releasekey" \ @@ -150,6 +152,7 @@ fastboot flash avb_custom_key ${device}-avb_pkmd.bin fastboot reboot-bootloader sleep 5 fastboot oem uart disable +fastboot snapshot-update cancel fastboot -w --skip-reboot update image-${device}-${build_id}.zip fastboot reboot-bootloader sleep 5