diff options
author | Wolfgang Wiedmeyer <wolfgit@wiedmeyer.de> | 2017-05-05 16:30:37 +0200 |
---|---|---|
committer | Wolfgang Wiedmeyer <wolfgit@wiedmeyer.de> | 2017-05-07 14:46:27 +0200 |
commit | 9d7a7dc094f56d04610c2917af37cb9c48e99961 (patch) | |
tree | cbb782176309fda193b7c9cd85e2fa574777d969 | |
parent | 491cc7445644441b11565cb5a52a66ce43cf5f41 (diff) | |
download | vendor_replicant-release-scripts-9d7a7dc094f56d04610c2917af37cb9c48e99961.tar.gz vendor_replicant-release-scripts-9d7a7dc094f56d04610c2917af37cb9c48e99961.tar.bz2 vendor_replicant-release-scripts-9d7a7dc094f56d04610c2917af37cb9c48e99961.zip |
Replicant 6.0 0001 images release
Besides updating the scripts to account for changes introduced after
Android 4.2, the following modifications were made:
* Introduce releasevars.sh to store frequently used variables
* Remove SDK parts and devices not yet supported by Replicant 6.0
* Add unpackbootimg to release tools
* Use my GPG key for signing
* Use more functionality from the repo tool to simplify the scripts
* Only accept tags for git metadata.
* Additionally tag the LineageOS mirror besides our forked repos.
Ignore the manifest repo as it's tagged manually.
* Add releasebuild.sh script to build all targets and the toolchain
* Make sure a bash shell is used
* Use repo tool from $PATH
* Abort on error
Signed-off-by: Wolfgang Wiedmeyer <wolfgit@wiedmeyer.de>
-rwxr-xr-x | release.sh | 112 | ||||
-rwxr-xr-x | releasebuild.sh | 74 | ||||
-rwxr-xr-x | releasediff.sh | 17 | ||||
-rwxr-xr-x | releasetag.sh | 81 | ||||
-rwxr-xr-x | releasevars.sh | 44 |
5 files changed, 170 insertions, 158 deletions
@@ -1,7 +1,8 @@ -#!/bin/sh +#!/bin/bash # # Copyright (C) 2011 Denis 'GNUtoo' Carikli <GNUtoo@no-log.org> # Copyright (C) 2011-2015 Paul Kocialkowski <contact@paulk.fr> +# Copyright (C) 2017 Wolfgang Wiedmeyer <wolfgit@wiedmeyer.de> # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,36 +18,24 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. # +set -e + # Variables SCRIPT=$0 REPLICANT_DIR=$1 RELEASE_DIR=$2 RELEASE_TYPE=$3 +. releasevars.sh + ARGS_COUNT=2 -REPO="../tools/repo" RELEASE_TOOLS_DIR="$REPLICANT_DIR/out/host/linux-x86/bin" -RELEASE_TOOLS="adb fastboot heimdall mkbootimg" -RELEASE_SDK_DIR="$REPLICANT_DIR/out/host/linux-x86/sdk" -RELEASE_SDK="replicant-sdk_linux-x86.zip" -RELEASE_IMAGES_DIR="$REPLICANT_DIR/out/target/product" -RELEASE_IMAGES="recovery.img replicant-4.2-crespo.zip replicant-4.2-galaxysmtd.zip replicant-4.2-i9100.zip replicant-4.2-n7000.zip replicant-4.2-maguro.zip replicant-4.2-p3100.zip replicant-4.2-p3110.zip replicant-4.2-p5100.zip replicant-4.2-p5110.zip replicant-4.2-i9300.zip replicant-4.2-n7100.zip replicant-4.2-gta04.zip bootable.zip replicant_gta04_install.sh" -RELEASE_DEVICES="crespo galaxysmtd i9100 n7000 maguro p3100 p3110 p5100 p5110 i9300 n7100 gta04" +RELEASE_TOOLS="adb fastboot heimdall mkbootimg unpackbootimg" +RELEASE_IMAGES_DIR="$REPLICANT_DIR/out/dist" RELEASE_SCRIPTS_DIR=$( dirname "$SCRIPT" ) -RELEASE_SCRIPTS="release.sh releasediff.sh releasetag.sh" +RELEASE_SCRIPTS="release.sh releasediff.sh releasetag.sh releasevars.sh releasebuild.sh" RELEASE_SECURITY_DIR="$REPLICANT_DIR/vendor/replicant-security" -RELEASE_SECURITY="media.x509.pem platform.x509.pem shared.x509.pem system.x509.pem" -RELEASE_KEY="4A80EB23" - -METADATA="$RELEASE_DIR/metadata" -SECURITY="$RELEASE_DIR/security" -SCRIPTS="$RELEASE_DIR/scripts" -TOOLS="$RELEASE_DIR/tools" -IMAGES="$RELEASE_DIR/images" -SDK="$RELEASE_DIR/sdk" - -VERSION="4.2" -RELEASE="0004" +RELEASE_SECURITY="media.x509.pem platform.x509.pem releasekey.x509.pem shared.x509.pem" release_signatures_tools () { if ! [ -d "$TOOLS" ] @@ -64,22 +53,6 @@ release_signatures_tools () { cd "$dir" } -release_signatures_sdk () { - if ! [ -d "$SDK" ] - then - return - fi - - dir=$( pwd ) - - cd "$SDK" - for sdk in $RELEASE_SDK - do - gpg --default-key "$RELEASE_KEY" --armor --output "$sdk.asc" --detach-sign "$sdk" - done - cd "$dir" -} - release_signatures_images () { if ! [ -d "$IMAGES" ] then @@ -89,11 +62,6 @@ release_signatures_images () { cd "$IMAGES" for device in $RELEASE_DEVICES do - if ! [ -d "$IMAGES/$device" ] - then - continue - fi - for image in $RELEASE_IMAGES do if [ -f "$IMAGES/$device/$image" ] @@ -108,7 +76,6 @@ release_signatures () { echo "Releasing signatures" release_signatures_tools - release_signatures_sdk release_signatures_images mkdir -p "$SECURITY" @@ -124,7 +91,6 @@ release_signatures () { release_images () { echo "Releasing images" - mkdir -p "$IMAGES" for device in $RELEASE_DEVICES do @@ -147,22 +113,6 @@ release_images () { done } -release_sdk () { - echo "Releasing sdk" - mkdir -p "$SDK" - - for sdk in $RELEASE_SDK - do - cp "$RELEASE_SDK_DIR/$sdk" "$SDK/" - done - - dir=$( pwd ) - - cd "$SDK" - sha256sum * > "sdk.sha256" - cd "$dir" -} - release_tools () { echo "Releasing tools" mkdir -p "$TOOLS" @@ -206,7 +156,7 @@ release_security () { } release_metadata_about () { - cat "$REPLICANT_DIR/vendor/replicant/README.mkdn" | awk "/^Replicant$/{replicant=1} /^CyanogenMod$/{replicant=0} replicant" > "$METADATA/readme.txt" + cat "$REPLICANT_DIR/vendor/replicant/README.mkdn" | awk "/^Replicant$/{replicant=1} /^LineageOS$/{replicant=0} replicant" > "$METADATA/readme.txt" } release_metadata_date () { @@ -214,7 +164,9 @@ release_metadata_date () { } release_metadata_changelog () { - cat "$REPLICANT_DIR/vendor/replicant/CHANGELOG.mkdn" | awk "/### .*/{n++} n==1, /### .*/ {n++} n==2" > "$METADATA/changelog.txt" + cat "$REPLICANT_DIR/vendor/replicant/CHANGELOG.mkdn" \ + | awk "/### .*/{n++} n==1, /### .*/ {n++} n==2" \ + | sed '/===============/q' | tac | sed -e '/===============/,+1d' | tac > "$METADATA/changelog.txt" } release_metadata_release () { @@ -237,36 +189,29 @@ release_metadata_git () { do cd $git_repo echo "manifest" - git show --format=oneline -s "replicant-$VERSION-$RELEASE" 2>/dev/null || git show --format=oneline -s + git show --format=oneline -s "replicant-$VERSION-$RELEASE" 2>/dev/null echo "" cd "$REPLICANT_DIR" - + done > "$METADATA/git-tags.txt" - $REPO list | while read git_repo + $REPO list -p | while read git_repo do - cd $git_repo - echo "$git_repo" | sed "s/ : .*$/ /g" - git show --format=oneline -s "replicant-$VERSION-$RELEASE" 2>/dev/null || git show --format=oneline -s - echo "" - cd "$REPLICANT_DIR" + if ! [ "$git_repo" = "manifest" ] + then + cd $git_repo + echo "$git_repo" + git show --format=oneline -s $(git describe) + echo "" + cd "$REPLICANT_DIR" + fi done >> "$METADATA/git-tags.txt" - $REPO manifest -r > "$METADATA/manifest.xml" + $REPO manifest -r -o "$METADATA/manifest.xml" cd "$dir" } -release_metadata_sdk() { - echo "Releasing metadata" - mkdir -p "$METADATA" - release_metadata_git - release_metadata_prebuilt - release_metadata_release - release_metadata_date - release_metadata_about -} - release_metadata () { echo "Releasing metadata" mkdir -p "$METADATA" @@ -293,11 +238,6 @@ case "$RELEASE_TYPE" in "signatures") release_signatures ;; - "sdk") - release_metadata_sdk - release_scripts - release_sdk - ;; *) release_metadata release_security diff --git a/releasebuild.sh b/releasebuild.sh new file mode 100755 index 0000000..5a22f8a --- /dev/null +++ b/releasebuild.sh @@ -0,0 +1,74 @@ +#!/bin/bash +# +# Copyright (C) 2017 Wolfgang Wiedmeyer <wolfgit@wiedmeyer.de> +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# + +set -e + +SCRIPT=$0 +REPLICANT_DIR=$1 + +. releasevars.sh + +ARGS_COUNT=1 +parallel_tasks=$(echo "$(grep 'processor' /proc/cpuinfo | wc -l ) + 1" | bc) + +build_bacon () { + device=$1 + + dir=$( pwd ) + cd "$REPLICANT_DIR" + + . build/envsetup.sh + lunch "replicant_$device-userdebug" + + make -j$parallel_tasks bacon + + ./vendor/replicant/sign-build $device + + cd "$dir" +} + +build_all () { + for device in $RELEASE_DEVICES + do + build_bacon $device + done +} + +prepare () { + dir=$( pwd ) + cd "$REPLICANT_DIR" + + make clobber + ./vendor/replicant/build-toolchain + + cd "$dir" +} + +print_help () { + echo "$SCRIPT: [REPLICANT_DIR]" +} + +# Check for the correct number of args +if [ "$#" -lt "$ARGS_COUNT" ] +then + print_help + exit 1 +fi + +prepare +build_all diff --git a/releasediff.sh b/releasediff.sh index 68ba5cb..98a53ac 100755 --- a/releasediff.sh +++ b/releasediff.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash # # Copyright (C) 2013-2015 Paul Kocialkowski <contact@paulk.fr> # @@ -21,20 +21,13 @@ SCRIPT=$0 REPLICANT_DIR=$1 RELEASE_DIR=$2 +. releasevars.sh + ARGS_COUNT=2 -COLOR=1 -REPO="../tools/repo" -METADATA="$RELEASE_DIR/metadata" regexp=".*path=\"\([^\"]*\)\".*revision=\"\([^\"]*\)\".*" -if [ "$COLOR" = "1" ] -then - color_start="\033[36m" - color_end="\033[0m" -else - color_start="" - color_end="" -fi + +set_color diff_repos () { paths=$( cat "$METADATA/manifest.xml" | grep "path=" | sed "s/$regexp/\1/g" ) diff --git a/releasetag.sh b/releasetag.sh index 21fdad4..90e2c27 100755 --- a/releasetag.sh +++ b/releasetag.sh @@ -1,6 +1,7 @@ -#!/bin/sh +#!/bin/bash # # Copyright (C) 2015 Paul Kocialkowski <contact@paulk.fr> +# Copyright (C) 2017 Wolfgang Wiedmeyer <wolfgit@wiedmeyer.de> # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -16,75 +17,41 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. # +set -e + # Variables SCRIPT=$0 REPLICANT_DIR=$1 -MANIFEST=$2 + +. releasevars.sh ARGS_COUNT=1 -COLOR=1 -TMP="/tmp" -REPO="../tools/repo" -RELEASE_KEY="4A80EB23" -REMOTE="replicant" PUSH_REMOTE="git.replicant.us" -VERSION="4.2" -RELEASE="0004" - -if [ "$COLOR" = "1" ] -then - color_start="\033[36m" - color_end="\033[0m" -else - color_start="" - color_end="" -fi +set_color -manifest () { +tag_repos () { dir=$( pwd ) cd "$REPLICANT_DIR" - $REPO manifest -r > $MANIFEST - - cd "$dir" -} - -tag_repos () { - list="" - - default=$( cat $MANIFEST | grep default | grep "remote=\"$REMOTE\"" ) - if [ "$default" != "" ] - then - list=$( cat $MANIFEST | grep project | grep -v "remote=\"" )"\n" - fi + ALL_MIRROR_REPOS=$( repo forall -c ' echo "$REPO_REMOTE$REPO_PROJECT" | grep lineage-mirror \ + | cut -c15-' ) + ALL_REPLICANT_REPOS=$( repo forall -c ' echo "$REPO_REMOTE$REPO_PROJECT" | grep replicant \ + | cut -c10- | grep -v "manifest.git" || true ' ) + TAGGING_CMD="echo \"Tagging $color_start \$REPO_PROJECT $color_end\" && \ + git tag -u $RELEASE_KEY -m \"Replicant $VERSION $RELEASE images release\" \ + \"replicant-$VERSION-$RELEASE\"" + PUSHING_CMD="echo \"Pushing $color_start \$REPO_PROJECT $color_end\" && \ + git push \"git@$PUSH_REMOTE:\$REPO_PROJECT\" \"replicant-$VERSION-$RELEASE\"" - list="$list"$( cat $MANIFEST | grep project | grep "remote=\"$REMOTE\"" ) + repo forall $ALL_MIRROR_REPOS -c "$TAGGING_CMD && $PUSHING_CMD" + repo forall $ALL_REPLICANT_REPOS -c "$TAGGING_CMD && $PUSHING_CMD" - echo "$list" | while read repo - do - path=$( echo "$repo" | sed "s/.*path=\"\([^\"]*\)\".*/\1/g" ) - revision=$( echo "$repo" | sed "s/.*revision=\"\([^\"]*\)\".*/\1/g" ) - - dir=$( pwd ) - cd "$REPLICANT_DIR/$path" - - echo "Tagging ""$color_start""$path""$color_end"" with $revision" - - git tag -s -u $RELEASE_KEY -m "Replicant $VERSION $RELEASE images release" -a "replicant-$VERSION-$RELEASE" $revision - - echo "Pusing ""$color_start""$path""$color_end" - - path=$( echo $path | tr '[:upper:]' '[:lower:]' ) - - git push "git@$PUSH_REMOTE:replicant/$path.git" "replicant-$VERSION-$RELEASE" - - cd "$dir" - done + cd "$dir" } print_help () { - echo "$SCRIPT: [REPLICANT_DIR] (MANIFEST)" + echo "$SCRIPT: [REPLICANT_DIR]" } # Check for the correct number of args @@ -94,10 +61,4 @@ then exit 1 fi -if [ "$MANIFEST" = "" ] -then - MANIFEST="$TMP/manifest.xml" - manifest -fi - tag_repos diff --git a/releasevars.sh b/releasevars.sh new file mode 100755 index 0000000..21c434c --- /dev/null +++ b/releasevars.sh @@ -0,0 +1,44 @@ +#!/bin/bash +# +# Copyright (C) 2017 Wolfgang Wiedmeyer <wolfgit@wiedmeyer.de> +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# + +VERSION="6.0" +RELEASE="0001" + +RELEASE_IMAGES="recovery-i9100.img recovery-i9300.img recovery-n7100.img recovery-i9305.img replicant-6.0-i9100.zip replicant-6.0-i9300.zip replicant-6.0-n7100.zip replicant-6.0-i9305.zip" +RELEASE_DEVICES="i9100 i9300 n7100 i9305" + +RELEASE_KEY="5816A24C10757FC4" +REPO="repo" +COLOR=1 + +METADATA="$RELEASE_DIR/metadata" +SECURITY="$RELEASE_DIR/security" +SCRIPTS="$RELEASE_DIR/scripts" +TOOLS="$RELEASE_DIR/tools" +IMAGES="$RELEASE_DIR/images" + +set_color () { + if [ "$COLOR" = "1" ] + then + color_start="\033[36m" + color_end="\033[0m" + else + color_start="" + color_end="" + fi +} |