From 382aedeba3ecd2924c790166e2b65d4e249f83f5 Mon Sep 17 00:00:00 2001 From: Hugues Hiegel Date: Fri, 6 Feb 2009 14:59:12 +0100 Subject: scripts moved back to parent dir --- STLinux/stlinux_generate_spec_file.sh | 23 ------- STLinux/stlinux_import_patches.sh | 119 ---------------------------------- STLinux/stlinux_reset_tags.sh | 39 ----------- stlinux_generate_spec_file.sh | 23 +++++++ stlinux_import_patches.sh | 119 ++++++++++++++++++++++++++++++++++ stlinux_reset_tags.sh | 39 +++++++++++ 6 files changed, 181 insertions(+), 181 deletions(-) delete mode 100755 STLinux/stlinux_generate_spec_file.sh delete mode 100755 STLinux/stlinux_import_patches.sh delete mode 100755 STLinux/stlinux_reset_tags.sh create mode 100755 stlinux_generate_spec_file.sh create mode 100755 stlinux_import_patches.sh create mode 100755 stlinux_reset_tags.sh diff --git a/STLinux/stlinux_generate_spec_file.sh b/STLinux/stlinux_generate_spec_file.sh deleted file mode 100755 index d39ec7c..0000000 --- a/STLinux/stlinux_generate_spec_file.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/zsh - -LOG=$1 - -usage() -{ - cat << EOF -usage: $0:t .. -EOF -} - -if [ $# -ne 1 -o -z $LOG ] -then - usage - exit 27 # 27 ? Yes, 27. -fi - -git-log --decorate $LOG |\ -grep "\[Patch\|refs/tags" |\ -sed 's/^commit ........................................ .*refs\/tags\/\([0-9]\+\)[,)].*/# Kernel \1 released here/;s/.*Patch #\([0-9]\+\)\].* Applied /Patch\1: /' |\ -grep -v "^commit " |\ -tac - diff --git a/STLinux/stlinux_import_patches.sh b/STLinux/stlinux_import_patches.sh deleted file mode 100755 index 38afb14..0000000 --- a/STLinux/stlinux_import_patches.sh +++ /dev/null @@ -1,119 +0,0 @@ -#!/bin/zsh - -usage() -{ - cat << EOF -usage: $0:t [Patch # start] [Patch # end] -EOF -} - -if ! git-rev-parse --git-dir >/dev/null -then - echo "This is not a GIT repository !" - usage - exit 27 # I like 27. -fi -if [ $# -lt 2 ] -then - usage - exit 42 # 42 ? Because ! -fi - -STLINUX_FOLDER=$1 -TAG_PREFIX=$2 -START_FROM=${3:-0} -END_TO=${4:-} - -PATCHES_LIST=$STLINUX_FOLDER/.patches - -grep -if =(grep "^%patch" $STLINUX_FOLDER/*.spec | sed 's/%\(patch.*\) .*/^\1:/') $STLINUX_FOLDER/*.spec | awk '{ print $2 }' > $PATCHES_LIST - -#cat $PATCHES_LIST - -function read_patch_file() -{ - case $1:e in - "patch") - < $1 - ;; - "bz2") - bunzip2 -c $1 - ;; - "*") - echo >&2 "Error ! $1:e is not a recognized patch extension !" - exit; - ;; - esac -} - -export RELEASE="" -for file in $(cat $PATCHES_LIST ) -do - - i=$(grep "^Patch.*:[[:blank:]]\+$file$" $STLINUX_FOLDER/*.spec | sed 's/^Patch\(.*\): .*$/\1/') - - if [ $i -ge $START_FROM -a \( -z "$END_TO" -o $i -le "$END_TO" \) ] - then - - if [ ! -e $STLINUX_FOLDER/$file -a -e $STLINUX_FOLDER/$file:r ] - then - file=$file:r - fi - - ( - # - # On extrait le numéro de release ST dans le nom du fichier .patch - # - _RELEASE="$(echo $file | sed 's/linux-.*[-_]stm\(.\)\(.\)[-_]\([0-9]*\)[_-\.].*/\3/')" - - # Ça a marché ? Alors on vérifie qu'on n'est pas passé à la release suivante... - if [ "$_RELEASE" != "$file" ] - then - # On épure le numéro de révision - _RELEASE=$(( $_RELEASE )) - if [ "$(( $_RELEASE ))" -gt "$(( $RELEASE ))" ] - then - # Ha ! On est passé à une release "supérieure", alors on pose le tag - git-tag "$TAG_PREFIX${_RELEASE}" - # Et on stocke le résultat pour le récupérer dans le bloc parent - echo $_RELEASE > .git/release - fi - - # On crée le tag pour le message de commit - RELEASE="[$_RELEASE] " - else - RELEASE="" - fi - - # Voici la première ligne du message de commit. C'est la plus jolie. - echo "[Patch #$i] ${RELEASE}Applied $file" - - # - # On récupère le commentaire dans le patch en guise de message de commit - # avec gestion des .patch ou des .patch.bz2 - # - read_patch_file $STLINUX_FOLDER/$file | awk '{ RS="--- "; } { if ( NR <= 2 ) { print $0 } }' | \ - grep -v -e "^diff \-" -e "^Index: " -e "^=*$" -e "^Signed-off-by: " -e "^index "; - - ) | sed 's/ //' > .git/message ; - - # On récupère la release trouvée dans le bloc précédent - RELEASE=$([ -s .git/release ] && ( cat .git/release ; rm -f .git/release) ) - # - # On affiche le résultat de l'application du patch dans le message de commit - # - echo "---" >> .git/message - read_patch_file $STLINUX_FOLDER/$file | patch -Np1 >> .git/message - # Suppression des fichiers supprimés par le patch - git-rm $(git-ls-files --deleted) 2>/dev/null - # Ajout de tout le reste :-) - git-add . - # Et on committe !! - git-commit -F .git/message - else - - echo >&2 "Skipping patch #$i : $file" - - fi -done -git-tag "$TAG_PREFIX$((RELEASE + 1))" diff --git a/STLinux/stlinux_reset_tags.sh b/STLinux/stlinux_reset_tags.sh deleted file mode 100755 index e30535a..0000000 --- a/STLinux/stlinux_reset_tags.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/zsh - -FILE=$1 -TAGPREFIX=$2 - -usage() -{ - cat << EOF -usage: $0:t []" - Where FILE.spec is a .spec file with list of patches and of kernel releases - To generate this FILE.spec, you should take a look to stlinux_generate_spec_file.sh - - TAGPREFIX should be used to prefix the tags -EOF -} - -if [ $# -lt 1 -o $# -gt 2 -o ! -f $FILE ] -then - usage - exit 42 # Yes, 42. -fi - -local tag commit release - -for tag in $(grep -i "^# Kernel [0-9]\+ released here$" $FILE | sed 's/^# Kernel \([0-9]*\) released here$/\1/') -do - release=$( - grep -i "^# Kernel $tag released here$" $FILE -B1 |\ - head -n1 |\ - sed 's/^Patch\([0-9]*\): /\\[Patch \\#\1\\].* /' - ) - commit=$( - git-log --grep="$release" --pretty=oneline |\ - cut -c1-40 - ) - echo "#$tag -- $(git-log --grep="$release" | grep "$release")" - git-tag $TAGPREFIX$tag $commit -done - diff --git a/stlinux_generate_spec_file.sh b/stlinux_generate_spec_file.sh new file mode 100755 index 0000000..d39ec7c --- /dev/null +++ b/stlinux_generate_spec_file.sh @@ -0,0 +1,23 @@ +#!/bin/zsh + +LOG=$1 + +usage() +{ + cat << EOF +usage: $0:t .. +EOF +} + +if [ $# -ne 1 -o -z $LOG ] +then + usage + exit 27 # 27 ? Yes, 27. +fi + +git-log --decorate $LOG |\ +grep "\[Patch\|refs/tags" |\ +sed 's/^commit ........................................ .*refs\/tags\/\([0-9]\+\)[,)].*/# Kernel \1 released here/;s/.*Patch #\([0-9]\+\)\].* Applied /Patch\1: /' |\ +grep -v "^commit " |\ +tac + diff --git a/stlinux_import_patches.sh b/stlinux_import_patches.sh new file mode 100755 index 0000000..38afb14 --- /dev/null +++ b/stlinux_import_patches.sh @@ -0,0 +1,119 @@ +#!/bin/zsh + +usage() +{ + cat << EOF +usage: $0:t [Patch # start] [Patch # end] +EOF +} + +if ! git-rev-parse --git-dir >/dev/null +then + echo "This is not a GIT repository !" + usage + exit 27 # I like 27. +fi +if [ $# -lt 2 ] +then + usage + exit 42 # 42 ? Because ! +fi + +STLINUX_FOLDER=$1 +TAG_PREFIX=$2 +START_FROM=${3:-0} +END_TO=${4:-} + +PATCHES_LIST=$STLINUX_FOLDER/.patches + +grep -if =(grep "^%patch" $STLINUX_FOLDER/*.spec | sed 's/%\(patch.*\) .*/^\1:/') $STLINUX_FOLDER/*.spec | awk '{ print $2 }' > $PATCHES_LIST + +#cat $PATCHES_LIST + +function read_patch_file() +{ + case $1:e in + "patch") + < $1 + ;; + "bz2") + bunzip2 -c $1 + ;; + "*") + echo >&2 "Error ! $1:e is not a recognized patch extension !" + exit; + ;; + esac +} + +export RELEASE="" +for file in $(cat $PATCHES_LIST ) +do + + i=$(grep "^Patch.*:[[:blank:]]\+$file$" $STLINUX_FOLDER/*.spec | sed 's/^Patch\(.*\): .*$/\1/') + + if [ $i -ge $START_FROM -a \( -z "$END_TO" -o $i -le "$END_TO" \) ] + then + + if [ ! -e $STLINUX_FOLDER/$file -a -e $STLINUX_FOLDER/$file:r ] + then + file=$file:r + fi + + ( + # + # On extrait le numéro de release ST dans le nom du fichier .patch + # + _RELEASE="$(echo $file | sed 's/linux-.*[-_]stm\(.\)\(.\)[-_]\([0-9]*\)[_-\.].*/\3/')" + + # Ça a marché ? Alors on vérifie qu'on n'est pas passé à la release suivante... + if [ "$_RELEASE" != "$file" ] + then + # On épure le numéro de révision + _RELEASE=$(( $_RELEASE )) + if [ "$(( $_RELEASE ))" -gt "$(( $RELEASE ))" ] + then + # Ha ! On est passé à une release "supérieure", alors on pose le tag + git-tag "$TAG_PREFIX${_RELEASE}" + # Et on stocke le résultat pour le récupérer dans le bloc parent + echo $_RELEASE > .git/release + fi + + # On crée le tag pour le message de commit + RELEASE="[$_RELEASE] " + else + RELEASE="" + fi + + # Voici la première ligne du message de commit. C'est la plus jolie. + echo "[Patch #$i] ${RELEASE}Applied $file" + + # + # On récupère le commentaire dans le patch en guise de message de commit + # avec gestion des .patch ou des .patch.bz2 + # + read_patch_file $STLINUX_FOLDER/$file | awk '{ RS="--- "; } { if ( NR <= 2 ) { print $0 } }' | \ + grep -v -e "^diff \-" -e "^Index: " -e "^=*$" -e "^Signed-off-by: " -e "^index "; + + ) | sed 's/ //' > .git/message ; + + # On récupère la release trouvée dans le bloc précédent + RELEASE=$([ -s .git/release ] && ( cat .git/release ; rm -f .git/release) ) + # + # On affiche le résultat de l'application du patch dans le message de commit + # + echo "---" >> .git/message + read_patch_file $STLINUX_FOLDER/$file | patch -Np1 >> .git/message + # Suppression des fichiers supprimés par le patch + git-rm $(git-ls-files --deleted) 2>/dev/null + # Ajout de tout le reste :-) + git-add . + # Et on committe !! + git-commit -F .git/message + else + + echo >&2 "Skipping patch #$i : $file" + + fi +done +git-tag "$TAG_PREFIX$((RELEASE + 1))" diff --git a/stlinux_reset_tags.sh b/stlinux_reset_tags.sh new file mode 100755 index 0000000..e30535a --- /dev/null +++ b/stlinux_reset_tags.sh @@ -0,0 +1,39 @@ +#!/bin/zsh + +FILE=$1 +TAGPREFIX=$2 + +usage() +{ + cat << EOF +usage: $0:t []" + Where FILE.spec is a .spec file with list of patches and of kernel releases + To generate this FILE.spec, you should take a look to stlinux_generate_spec_file.sh + + TAGPREFIX should be used to prefix the tags +EOF +} + +if [ $# -lt 1 -o $# -gt 2 -o ! -f $FILE ] +then + usage + exit 42 # Yes, 42. +fi + +local tag commit release + +for tag in $(grep -i "^# Kernel [0-9]\+ released here$" $FILE | sed 's/^# Kernel \([0-9]*\) released here$/\1/') +do + release=$( + grep -i "^# Kernel $tag released here$" $FILE -B1 |\ + head -n1 |\ + sed 's/^Patch\([0-9]*\): /\\[Patch \\#\1\\].* /' + ) + commit=$( + git-log --grep="$release" --pretty=oneline |\ + cut -c1-40 + ) + echo "#$tag -- $(git-log --grep="$release" | grep "$release")" + git-tag $TAGPREFIX$tag $commit +done + -- cgit v1.2.3