aboutsummaryrefslogtreecommitdiffstats
path: root/release.sh
diff options
context:
space:
mode:
Diffstat (limited to 'release.sh')
-rwxr-xr-xrelease.sh308
1 files changed, 308 insertions, 0 deletions
diff --git a/release.sh b/release.sh
new file mode 100755
index 0000000..5dd19d1
--- /dev/null
+++ b/release.sh
@@ -0,0 +1,308 @@
+#!/bin/sh
+#
+# Copyright (C) 2011 Denis 'GNUtoo' Carikli <GNUtoo@no-log.org>
+# Copyright (C) 2011-2015 Paul Kocialkowski <contact@paulk.fr>
+#
+# 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/>.
+#
+
+# Variables
+SCRIPT=$0
+REPLICANT_DIR=$1
+RELEASE_DIR=$2
+RELEASE_TYPE=$3
+
+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"
+RELEASE_DEVICES="crespo galaxysmtd i9100 n7000 maguro p3100 p3110 p5100 p5110 i9300 n7100 gta04"
+RELEASE_SCRIPTS_DIR=$( dirname "$SCRIPT" )
+RELEASE_SCRIPTS="release.sh releasediff.sh releasetag.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_signatures_tools () {
+ if ! [ -d "$TOOLS" ]
+ then
+ return
+ fi
+
+ dir=$( pwd )
+
+ cd "$TOOLS"
+ for tool in $RELEASE_TOOLS
+ do
+ gpg --default-key "$RELEASE_KEY" --armor --output "$tool.asc" --detach-sign "$tool"
+ done
+ 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
+ return
+ fi
+
+ 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" ]
+ then
+ gpg --default-key "$RELEASE_KEY" --armor --output "$IMAGES/$device/$image.asc" --detach-sign "$IMAGES/$device/$image"
+ fi
+ done
+ done
+}
+
+release_signatures () {
+ echo "Releasing signatures"
+
+ release_signatures_tools
+ release_signatures_sdk
+ release_signatures_images
+
+ mkdir -p "$SECURITY"
+ gpg --armor --output "$SECURITY/$RELEASE_KEY.asc" --export "$RELEASE_KEY"
+
+ dir=$( pwd )
+
+ cd "$SECURITY"
+ rm "security.md5"
+ md5sum * > "security.md5"
+ cd "$dir"
+}
+
+release_images () {
+ echo "Releasing images"
+ mkdir -p "$IMAGES"
+
+ for device in $RELEASE_DEVICES
+ do
+ echo "Releasing images for $device"
+ mkdir -p "$IMAGES/$device"
+
+ for image in $RELEASE_IMAGES
+ do
+ if [ -f "$RELEASE_IMAGES_DIR/$device/$image" ]
+ then
+ cp "$RELEASE_IMAGES_DIR/$device/$image" "$IMAGES/$device/"
+ fi
+ done
+
+ dir=$( pwd )
+
+ cd "$IMAGES/$device"
+ md5sum * > "$device.md5"
+ cd "$dir"
+ 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"
+ md5sum * > "sdk.md5"
+ cd "$dir"
+}
+
+release_tools () {
+ echo "Releasing tools"
+ mkdir -p "$TOOLS"
+
+ for tool in $RELEASE_TOOLS
+ do
+ cp "$RELEASE_TOOLS_DIR/$tool" "$TOOLS/"
+ done
+
+ dir=$( pwd )
+
+ cd "$TOOLS"
+ md5sum * > "tools.md5"
+ cd "$dir"
+}
+
+release_scripts () {
+ echo "Releasing scripts"
+ mkdir -p "$SCRIPTS"
+
+ for script in $RELEASE_SCRIPTS
+ do
+ cp "$RELEASE_SCRIPTS_DIR/$script" "$SCRIPTS/"
+ done
+}
+
+release_security () {
+ echo "Releasing security"
+ mkdir -p "$SECURITY"
+
+ for security in $RELEASE_SECURITY
+ do
+ cp "$RELEASE_SECURITY_DIR/$security" "$SECURITY/"
+ done
+
+ dir=$( pwd )
+
+ cd "$SECURITY"
+ md5sum * > "security.md5"
+ cd "$dir"
+}
+
+release_metadata_about () {
+ cat "$REPLICANT_DIR/vendor/replicant/README.mkdn" | awk "/^Replicant$/{replicant=1} /^CyanogenMod$/{replicant=0} replicant" > "$METADATA/readme.txt"
+}
+
+release_metadata_date () {
+ date "+%Y-%m-%d" > "$METADATA/date.txt"
+}
+
+release_metadata_changelog () {
+ cat "$REPLICANT_DIR/vendor/replicant/CHANGELOG.mkdn" | awk "/### .*/{n++} n==1, /### .*/ {n++} n==2" > "$METADATA/changelog.txt"
+}
+
+release_metadata_release () {
+ echo "replicant-$VERSION-$RELEASE" > "$METADATA/release.txt"
+}
+
+release_metadata_prebuilt () {
+ dir=$( pwd )
+
+ cd "$REPLICANT_DIR/vendor/replicant/prebuilt/common/apps/"
+ md5sum *.apk > "$METADATA/prebuilt.md5"
+ cd "$dir"
+}
+
+release_metadata_git () {
+ dir=$( pwd )
+ cd "$REPLICANT_DIR"
+
+ for git_repo in ".repo/manifests"
+ do
+ cd $git_repo
+ echo "manifest"
+ git show --format=oneline -s "replicant-$VERSION-$RELEASE" 2>/dev/null || git show --format=oneline -s
+ echo ""
+ cd "$REPLICANT_DIR"
+
+ done > "$METADATA/git-tags.txt"
+
+ $REPO list | 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"
+ done >> "$METADATA/git-tags.txt"
+
+ $REPO manifest -r > "$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"
+ release_metadata_git
+ release_metadata_prebuilt
+ release_metadata_release
+ release_metadata_changelog
+ release_metadata_date
+ release_metadata_about
+}
+
+print_help () {
+ echo "$SCRIPT: [REPLICANT_DIR] [RELEASE_DIR] (RELEASE_TYPE)"
+}
+
+# Check for the correct number of args
+if [ "$#" -lt "$ARGS_COUNT" ]
+then
+ print_help
+ exit 1
+fi
+
+case "$RELEASE_TYPE" in
+ "signatures")
+ release_signatures
+ ;;
+ "sdk")
+ release_metadata_sdk
+ release_scripts
+ release_sdk
+ ;;
+ *)
+ release_metadata
+ release_security
+ release_scripts
+ release_tools
+ release_images
+ ;;
+esac