diff options
| -rwxr-xr-x | bin/cemmail | 7 | ||||
| -rwxr-xr-x | bin/gen_kscope.sh | 34 | ||||
| -rwxr-xr-x | bin/get_mail.sh | 6 | ||||
| -rwxr-xr-x | bin/git-refresh | 8 | ||||
| -rwxr-xr-x | bin/install_kernel.sh | 28 | ||||
| -rwxr-xr-x | bin/korgmail | 7 | ||||
| -rwxr-xr-x | bin/monitor_off.sh | 5 | ||||
| -rwxr-xr-x | bin/monitor_setup.sh | 14 | ||||
| -rwxr-xr-x | bin/mutt_hooks.sh | 77 | ||||
| -rwxr-xr-x | bin/on_login.sh | 3 | ||||
| -rwxr-xr-x | bin/pack_kernel.sh | 48 | ||||
| -rwxr-xr-x | bin/rhmail | 7 | ||||
| -rwxr-xr-x | bin/todo | 1 | ||||
| -rwxr-xr-x | bin/verify-tags.sh | 49 | ||||
| -rwxr-xr-x | bin/vpn.sh | 7 | ||||
| -rwxr-xr-x | bin/work_setup.sh | 9 | ||||
| -rwxr-xr-x | bin/xfs-release.sh | 118 | ||||
| -rwxr-xr-x | bin/xfsdump_release.sh | 303 | ||||
| -rwxr-xr-x | bin/xfsprogs-summary.sh | 81 | ||||
| -rwxr-xr-x | bin/xfsprogs_release.sh | 303 |
20 files changed, 1115 insertions, 0 deletions
diff --git a/bin/cemmail b/bin/cemmail new file mode 100755 index 0000000..293b491 --- /dev/null +++ b/bin/cemmail @@ -0,0 +1,7 @@ +#!/bin/bash + +MUTT=`which neomutt` +MUTTRC="~/.mutt/muttrc-local-cem" + +$MUTT -F $MUTTRC + diff --git a/bin/gen_kscope.sh b/bin/gen_kscope.sh new file mode 100755 index 0000000..d88140c --- /dev/null +++ b/bin/gen_kscope.sh @@ -0,0 +1,34 @@ +#!/bin/bash +# +# Simple script to invoke 'make cscope' with different arguments + +usage(){ + echo "Should be executed withing kernel source dir:" + echo " gen_kscope.sh <args>" + echo "Args:" + echo " -a: Ignore dirs: drivers sound tools net" + echo " -c: Specify what to ignore within quotes" + echo " Example: gen_kscope.sh -c \"mm fs\"" +} + +CPUS=`lscpu -p=cpu|grep -v \#|wc -l` + +let JOBS=$CPUS*2 +IGNORE_DIRS="" +while getopts "ac:" opt; do + case $opt in + a) + IGNORE_DIRS="drivers sound tools net" + ;; + c) + # Ignore drivers + IGNORE_DIRS="$OPTARG" + ;; + *) + usage + ;; + esac +done +export IGNORE_DIRS +echo "Ignoring: $IGNORE_DIRS" +make -j$JOBS cscope diff --git a/bin/get_mail.sh b/bin/get_mail.sh new file mode 100755 index 0000000..658a157 --- /dev/null +++ b/bin/get_mail.sh @@ -0,0 +1,6 @@ +#!/bin/bash +MBSYNC=`which mbsync` +# +$MBSYNC --config="$HOME/Mail/RedHat/mbsyncrc" -q -a & +$MBSYNC --config=$HOME/Mail/maiolino/mbsyncrc -q -a & +$MBSYNC --config=$HOME/Mail/Korg/mbsyncrc -q -a & diff --git a/bin/git-refresh b/bin/git-refresh new file mode 100755 index 0000000..41a84b3 --- /dev/null +++ b/bin/git-refresh @@ -0,0 +1,8 @@ +#!/bin/bash + +# Simply fetch all remotes in a git tree +for i in `git remote`; do + echo "Fetching remote: $i..." + git fetch $i + echo "...Done" +done diff --git a/bin/install_kernel.sh b/bin/install_kernel.sh new file mode 100755 index 0000000..f53fc68 --- /dev/null +++ b/bin/install_kernel.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +# Install a kernel packed by pack_kernel.sh script + +# This script is based on Aristeu Rozanski's work. I've got this script by +# email, so there is no CVS repository to point to. + +if [ -z "$1" ]; then + echo "$0 <tarball>" >&2; + exit 1; +fi + +tarball="$1"; +tmp=$(mktemp -d); +mv $tarball $tmp/; +cd $tmp; +tar xfj $tarball +rm -f $tarball; +chown root.root -R boot lib; +/bin/cp boot/* /boot/ +/bin/cp -R lib/modules/* /lib/modules + +version=$(basename $tarball .tar.bz2); +#depmod $version; +#mkinitrd --force /boot/initramfs-$version.img $version +new-kernel-pkg --install --make-default --depmod --mkinitrd $version + +rm -Rf $tmp; diff --git a/bin/korgmail b/bin/korgmail new file mode 100755 index 0000000..1a914e0 --- /dev/null +++ b/bin/korgmail @@ -0,0 +1,7 @@ +#!/bin/bash + +MUTT=`which neomutt` +MUTTRC="~/.mutt/muttrc-local-korg" + +$MUTT -F $MUTTRC + diff --git a/bin/monitor_off.sh b/bin/monitor_off.sh new file mode 100755 index 0000000..f6efa3a --- /dev/null +++ b/bin/monitor_off.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +xrandr --output eDP-1 --auto +xrandr --output DP-3 --off + diff --git a/bin/monitor_setup.sh b/bin/monitor_setup.sh new file mode 100755 index 0000000..c3c0847 --- /dev/null +++ b/bin/monitor_setup.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +#xrandr --output eDP-1 --off +xrandr --output DP-3 --auto +xrandr --output eDP-1 --off + +#xrandr --output DP-1 --auto +#xrandr --output DP-1 --right-of eDP-1 +#xrandr --output DP-1 --right-of HDMI-1 +#xrandr --output HDMI-1 --mode +#xrandr --output HDMI-1 --mode 2560x1440 +#xrandr --output DP-1 --mode 2560x1440 +#xrandr --output DP-2-2 --rotate left +#xrandr --output DP-2-1 --rotate left diff --git a/bin/mutt_hooks.sh b/bin/mutt_hooks.sh new file mode 100755 index 0000000..36ecbf6 --- /dev/null +++ b/bin/mutt_hooks.sh @@ -0,0 +1,77 @@ +#!/bin/bash + +email=$1 +patch=/tmp/$$.patch +tempfile=/tmp/item_menu.$$ +KERNEL_SOURCE=/home/cmaiolin/Source/kernel/linux.pristine/ + + + +clear_repo(){ + dialog --clear --yesno \ + " Wanna reset the git tree?" 0 0 + + if [ $? -eq 0 ]; then + git reset --hard + fi +} + +diff_patch(){ + +UPSTREAM_PATCH=/tmp/upstream.patch +UPSTREAM_COMMIT=/tmp/upstream.commit + + #get commit from message + cat $1 | grep "^commit"| awk '{for (I=1;I<=NF;I++) if ($I == "commit") {print $(I+1)};}' | sed 's/)//' > $UPSTREAM_COMMIT + + # commit probably cherry-picked + if [ -z `cat $UPSTREAM_COMMIT` ]; then + + cat $1 | grep "commit"| awk '{for (I=1;I<=NF;I++) if ($I == "commit") {print $(I+1)};}' | sed 's/)//' > $UPSTREAM_COMMIT + + fi + #COMMIT=`cat $1 | grep "commit"| awk '{for (I=1;I<=NF;I++) if ($I == "commit") {print $(I+1)};}' | awk -F'|' '{print $1}' | sed 's/)//'` + + COMMIT=`cat $UPSTREAM_COMMIT |head -1` + echo $COMMIT + #Extract upstream patch + echo "Entering source" + cd $KERNEL_SOURCE + echo "Extracting patch" + git format-patch --stdout -1 $COMMIT > $UPSTREAM_PATCH + echo $UPSTREAM_PATCH + cd - + echo "STARTING DIFF" + vimdiff $patch $UPSTREAM_PATCH + + rm $UPSTREAM_PATCH $UPSTREAM_COMMIT +} + +apply_patch(){ + repolist=$(ls $sources | awk '{print $1,$1}') + + dialog --clear --menu "Select repository to apply the patch" 0 0 20 $repolist 2> $tempfile + #"Select repository to apply the patch" 30 60 20 $repolist 2> $tempfile + + repo=`cat $tempfile` + + echo $repo + cd $sources/$repo + git apply $patch + #diff_patch + clear_repo +} + +clear_env(){ + rm -rf $tempfile + rm -rf $patch +} + +###main + +cat $email | formail -I "" > $patch +diff_patch $patch +#cat $email | formail -I "" | awk '/^---/{p=1}p' > /tmp/patch.patch +rm $patch +#apply_patch +#clear_env diff --git a/bin/on_login.sh b/bin/on_login.sh new file mode 100755 index 0000000..28efdec --- /dev/null +++ b/bin/on_login.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +/usr/bin/feh --bg-scale /home/cmaiolino/.wallpapers/current.jpg diff --git a/bin/pack_kernel.sh b/bin/pack_kernel.sh new file mode 100755 index 0000000..4f766be --- /dev/null +++ b/bin/pack_kernel.sh @@ -0,0 +1,48 @@ +#!/bin/bash + +# This script is based on the work performed by Aristeu Rozanski +# I got a copy from his work by e-mail, due that no CVS tree is +# being referenced + +if [ -f include/generated/utsrelease.h ]; then + FILE=include/generated/utsrelease.h; +else + FILE=include/linux/utsrelease.h; +fi +version=$(grep UTS_RELEASE $FILE | cut -f 2 -d '"'); +if [ -z "$version" ]; then + echo "couldn't get version" >&2; + exit 1; +fi +echo "version is $version" >&2 +dir=$(mktemp -d); + +#make $(cat vars) modules_install INSTALL_MOD_PATH=$dir/ >/dev/null; +make $(cat vars) modules_install INSTALL_MOD_PATH=$dir/ >/dev/null; +mkdir $dir/boot +cp .config $dir/boot/config-$version; +cp System.map $dir/boot/System.map-$version; +cp arch/x86/boot/bzImage $dir/boot/vmlinuz-$version; +cp vmlinux $dir/boot; +last=$PWD; +cd $dir + +debug_enabled=0; +# stripping debug info and packing in a different tarball +if [ -n "$(grep ^CONFIG_DEBUG_KERNEL=y $last/.config)" ]; then + debug_enabled=1; + debug=$(mktemp -d); + find . -name \*.ko -exec objcopy --only-keep-debug {} {}.debug \; + find . -name \*.ko -exec strip -g {} \; + tar cfj $last/debug-$version.tar.bz2 boot/vmlinux $(find lib -name \*.debug) + rm boot/vmlinux $(find lib -name \*.debug); + rm -Rf $debug; +fi + +tar cfj $last/$version.tar.bz2 * +cd $last; +echo $version.tar.bz2; +if [ $debug_enabled = 1 ]; then + echo "debug info saved on debug-$version.tar.bz2" +fi +rm -Rf $dir; diff --git a/bin/rhmail b/bin/rhmail new file mode 100755 index 0000000..3f435d5 --- /dev/null +++ b/bin/rhmail @@ -0,0 +1,7 @@ +#!/bin/bash + +MUTT=`which neomutt` +MUTTRC="~/.mutt/muttrc-local" + +$MUTT -F $MUTTRC + diff --git a/bin/todo b/bin/todo new file mode 100755 index 0000000..f440ef2 --- /dev/null +++ b/bin/todo @@ -0,0 +1 @@ +vim ~/Nextcloud/GTD/gtd.otl diff --git a/bin/verify-tags.sh b/bin/verify-tags.sh new file mode 100755 index 0000000..ad4c11e --- /dev/null +++ b/bin/verify-tags.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +MAINTAINER="Eric Sandeen <[email protected]>" + +IFS=$(echo -en "\n\b") + +for PATCH in `guilt applied -c`; do + COMMIT=`echo $PATCH | awk '{print $1}'` + FILENAME=`echo $PATCH | awk '{print $2}'` + + SUBJECT=`git show --pretty=format:%s $COMMIT | head -n 1` + AUTHOR=`git show $COMMIT | grep ^Author | awk -F": " '{print $2}'` + AUTHOR_SOB=`git show $COMMIT | grep -i Signed-off-by: | head -n 1 | awk -F": " '{print $2}'` + COMMITTER_SOB=`git show $COMMIT | grep -i Signed-off-by: | tail -n 1 | awk -F": " '{print $2}'` + REVIEWED_BY=`git show $COMMIT | grep -i Reviewed-by: | tail -n 1 | awk -F": " '{print $2}'` + + echo -n "PATCH: $PATCH" + + # Check for double spaces in subject + if [[ "$SUBJECT" == *" "* ]]; then + DOUBLE="true" + else + DOUBLE="false" + fi + + if [ "$REVIEWED_BY" != "" -a \ + "$AUTHOR" == "$AUTHOR_SOB" -a \ + "$COMMITTER_SOB" == "$MAINTAINER" -a \ + "$DOUBLE" == "false" ]; then + echo " - OK" + else + echo + fi + + if [[ "$SUBJECT" == *" "* ]]; then + echo " double spaces in: $SUBJECT" + fi + if [ "$REVIEWED_BY" == "" ]; then + echo " no Reviewed-by:" + fi + if [ "$AUTHOR" != "$AUTHOR_SOB" ]; then + echo " author $AUTHOR sob $AUTHOR_SOB" + fi + if [ "$COMMITTER_SOB" != "$MAINTAINER" ]; then + echo " committer $COMMITTER_SOB maintainer $MAINTAINER" + fi + +done + diff --git a/bin/vpn.sh b/bin/vpn.sh new file mode 100755 index 0000000..4c3a193 --- /dev/null +++ b/bin/vpn.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +# BRNO +nmcli --ask c up 5777c2b4-defc-46f1-9858-2b850d51587c + +# FAB +# nmcli --ask c up f3967fc7-a927-47e2-92fd-a53338d4bb92 diff --git a/bin/work_setup.sh b/bin/work_setup.sh new file mode 100755 index 0000000..5f80cf1 --- /dev/null +++ b/bin/work_setup.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +tmux new-session -s "mail" -d -n "WORKSPACE" +tmux split-window -t mail -h 'rhmail' +tmux split-window -tmail -h 'cemmail' +tmux split-window -t mail -h 'korgmail' +#tmux -L mail select-layout "9ca7,312x49,0,0{96x49,0,0,14,215x49,97,0[215x24,97,0{107x24,97,0,15,107x24,205,0,17},215x24,97,25,16]}" +tmux select-layout -t mail "4c16,381x64,0,0{105x64,0,0,0,275x64,106,0[275x32,106,0{137x32,106,0,4,137x32,244,0,7},275x31,106,33{137x31,106,33,5,137x31,244,33,6}]}" +tmux attach diff --git a/bin/xfs-release.sh b/bin/xfs-release.sh new file mode 100755 index 0000000..105c4a6 --- /dev/null +++ b/bin/xfs-release.sh @@ -0,0 +1,118 @@ +#!/bin/bash + +#Maintainer info +MAINTAINER_EMAIL="[email protected]" +MAINTAINER_NAME="Carlos Maiolino" + +SOURCE=$PWD + +#Files +VERSION_FILE="$SOURCE/VERSION" +CONFIGURE_FILE="$SOURCE/configure.ac" +DEBIAN_FILE="$SOURCE/debian/changelog" +CHANGES_FILE="$SOURCE/doc/CHANGES" + +VER_MAJ="$1" +VER_MIN="$2" +VER_REV="$3" + +REL_VER="$VER_MAJ.$VER_MIN.$VER_REV" +REL_TAG="v$VER_MAJ.$VER_MIN.$VER_REV" + +#OLD_VER here points to the previous released tag +OLD_TAG=$4 + +usage() { + echo "./xfsprogs_release.sh <mav_ver> <min_ver> <revision> <old_git_tag>" + exit +} + +## UPDATE VERSIONING ## +update_version_file() { + sed -i -e "s/^PKG_MAJOR=.*/PKG_MAJOR=$VER_MAJ/" $VERSION_FILE + sed -i -e "s/^PKG_MINOR=.*/PKG_MINOR=$VER_MIN/" $VERSION_FILE + sed -i -e "s/^PKG_REVISION=.*/PKG_REVISION=$VER_REV/" $VERSION_FILE +} + +update_configure_file() { + CONF_AC="AC_INIT([xfsprogs],[$REL_VER],[[email protected]])" + sed -i "s/^AC_INIT.*/$CONF_AC/" $CONFIGURE_FILE +} + +# Update is done in 'reverse order', so the script can always update the first +# line of the file, just to KISS. +update_debian_changelog() { + sed -i "1s/^/\n/" $DEBIAN_FILE + sed -i "1s/^/ -- Nathan Scott <[email protected]> $(date -R)\n/" $DEBIAN_FILE + sed -i "1s/^/\n/" $DEBIAN_FILE + + sed -i "1s/^/ * New upstream release\n/" $DEBIAN_FILE + sed -i "1s/^/\n/" $DEBIAN_FILE + sed -i "1s/^/xfsprogs ($VER_MAJ.$VER_MIN.$VER_REV) unstable; urgency=low\n/" $DEBIAN_FILE +} + +update_changes_file() { + + TMP_FILE=$(mktemp) + git log --oneline --reverse --format="%s (%an)" $OLD_TAG.. > $TMP_FILE + + while read -r line; do + sed -i "1s/^/\t$line\n/" $CHANGES_FILE + done < $TMP_FILE + + rm -f $TMP_FILE +} + +create_signed_tag() { + git tag -s -u $MAINTAINER_EMAIL -m "Release $REL_RAG" $REL_TAG +} + +create_and_push_tarball() { + kup put xfsprogs-$REL_VER.tar.gz xfsprogs-$REL_VER.tar.sign \ + pub/linux/utils/fs/xfs/xfsprogs/xfsprogs-$REL_VER.tar.gz +} + +is_xfsprogs_repo() { + if [ -a $SOURCE/README ] && \ + [ "$(head -1 $SOURCE/README)" == "XFS User Tools README" ]; then + return 0 + else + echo "Current dir not a xfsprogs repository" + usage + exit 1 + fi +} + + +### PROGRAM STARTS HERE ### +# Ensure we are withing a xfsprogs repository: +is_xfsprogs_repo + +# MAJ, MIN, REV, OLD_TAG +if [ $# -ne 4 ]; then + echo "Invalid number of arguments" + usage + exit 1 +fi + +# Update files for new release + +#echo "Updating config.ac file..." +#update_configure_file +#echo "...done" +#echo +#echo "Updating debian changelog..." +#update_debian_changelog +#echo "...done" +#echo +#echo "Updating VERSION file..." +#update_version_file +#echo "...done" +#echo + +#echo "Commiting changes..." +#git add $VERSION_FILE $CONFIGURE_FILE $DEBIAN_FILE +# +#git commit -s -m "xfsprogs: Release $REL_TAG" \ +#-m "Update all the necessary files for a $REL_TAG release." +update_changes_file diff --git a/bin/xfsdump_release.sh b/bin/xfsdump_release.sh new file mode 100755 index 0000000..42fc2ac --- /dev/null +++ b/bin/xfsdump_release.sh @@ -0,0 +1,303 @@ +#!/bin/bash + +SOURCE="$PWD" +VERSION_FILE="$SOURCE/VERSION" +CONFIGURE_FILE="$SOURCE/configure.ac" +DEB_FILE="$SOURCE/debian/changelog" +LIST="[email protected]" +FORNEXT_DIR="/home/cmaiolin/Source/xfsdump/for-next" +LAST_HEAD="" +DEBUG=1 + +VER_MAJ="$1" +VER_MIN="$2" +VER_REV="$3" + +CHANGELOG_FILE="/tmp/changelog.$$" + +##### COMMON ##### + +# Print Usage information +usage(){ + echo " ./xfsdump_relase.sh <maj_ver> <min_ver> <revision>" + exit +} + +# Check update versioning +check_args(){ + if [ -z ${VER_MAJ} ]; then + echo "SET MAJ VERSION" + usage + fi + if [ -z ${VER_MIN} ]; then + echo "SET MIN VERSION" + usage + fi + if [ -z ${VER_REV} ]; then + echo "SET REVISION" + usage + fi +} + +# Open neomutt with the composed message to send +send_email(){ +SUBJECT="$1" +BODY="$2" + + if [ -z "$SUBJECT" ]; then + echo "No subject... exiting" + exit 1 + fi + + if [ -f $BODY ]; then + neomutt -F ~/.mutt/muttrc-local-korg -s "$SUBJECT" $LIST -i $BODY + else + echo "No message body... exiting" + exit 1 + fi + +} + +print_shortlog(){ +LAST_HEAD=$1 +HEAD=$2 + + if [ -z $LAST_HEAD ]; then + echo "Previous head not set... exiting" + exit 1 + fi + + if [ -z $HEAD ]; then + HEAD="HEAD" + fi + + echo "$(git shortlog --format="[%h] %s" $LAST_HEAD..$HEAD)" +} + +print_diffstat(){ +LAST_HEAD=$1 +HEAD=$2 + + if [ -z $LAST_HEAD ]; then + echo "Previous head not set... exiting" + exit 1 + fi + + if [ -z $HEAD ]; then + HEAD="HEAD" + fi + + echo "$(git diff --stat --summary -C -M $LAST_HEAD..$HEAD)" +} + +print_commit_count(){ +LAST_HEAD=$1 +HEAD=$2 + + if [ -z $LAST_HEAD ]; then + echo "Previous head not set... exiting" + exit 1 + fi + + if [ -z $HEAD ]; then + HEAD="HEAD" + fi + + echo "$(git log --oneline $LAST_HEAD.. | wc -l)" +} + +print_head(){ + if [ "$1" == "short" ]; then + HEAD=$(git log --oneline --format="%h" -1) + else + HEAD=$(git log --oneline --format="%H" -1) + fi + echo "$HEAD" +} + +##### COMMON END ##### + + +##### FOR-NEXT UPDATE ##### +compose_fornext_email(){ + + MAIL_FILE=$(mktemp) + LAST_HEAD=$1 + +if [ -z $LAST_HEAD ]; then + echo "compose_email: Previous head not set... exiting" + exit 1 +fi + +# BEGIN_OF_MESSAGE +cat << EOF > $MAIL_FILE +Hello. + +The xfsdump for-next branch, located at: + +https://git.kernel.org/pub/scm/fs/xfs/xfsdump-dev.git/refs/?h=for-next + +Has just been updated. + +Patches often get missed, so if your outstanding patches are properly reviewed on +the list and not included in this update, please let me know. + +The new head of the for-next branch is commit: + +$(print_head) + +$(print_commit_count $LAST_HEAD) new commits: + +$(print_shortlog $LAST_HEAD) + +Code Diffstat: + +$(print_diffstat $LAST_HEAD) +EOF +# END_OF_MESSAGE + +echo $MAIL_FILE +} + +compose_release_email(){ + + MAIL_FILE=$(mktemp) + LAST_HEAD=$1 + +cat << EOF > $MAIL_FILE +Hi folks, + +The xfsdump repository at: + + git://git.kernel.org/pub/scm/fs/xfs/xfsdump-dev.git + +has just been updated. + +Patches often get missed, so if your outstanding patches are properly reviewed +on the list and not included in this update, please let me know. + +The for-next branch has also been updated to match the state of master. + +The new head of the master branch is commit: + +$(print_head) + +New commits: + +$(print_shortlog $LAST_HEAD) + +Code Diffstat: + +$(print_diffstat $LAST_HEAD) +EOF + +#END_OF_MESSAGE +echo $MAIL_FILE + +} +fornext_announce(){ + + LAST_HEAD=$1 + + if [ -z $LAST_HEAD ]; then + echo "No starting HEAD specified... exiting" + exit 1 + fi + + SUBJECT="[ANNOUNCE] xfsdump: for-next updated to $(print_head short)" + BODY=$(compose_fornext_email $LAST_HEAD) + + send_email "$SUBJECT" $BODY +} + +release_announce(){ + LAST_HEAD=$1 + RELEASE=$(git describe --abbrev=0) + + if [ -z $LAST_HEAD ]; then + echo "No starting HEAD specified... exiting" + exit 1 + fi + + SUBJECT="[ANNOUNCE] xfsdump $RELEASE released" + BODY=$(compose_release_email $LAST_HEAD) + + send_email "$SUBJECT" $BODY +} +##### FOR-NEXT UPDATE ##### + +##### RELEASE SETUP ###### +update_version_file(){ + echo "updating version" + sed -i -e "s/^PKG_MAJOR=.*/PKG_MAJOR=$VER_MAJ/" $VERSION_FILE + sed -i -e "s/^PKG_MINOR=.*/PKG_MINOR=$VER_MIN/" $VERSION_FILE + sed -i -e "s/^PKG_REVISION=.*/PKG_REVISION=$VER_REV/" $VERSION_FILE +} + +update_configure_file(){ + CONF_AC="AC_INIT([xfsdump],[$VER_MAJ.$VER_MIN.$VER_REV],[[email protected]])" + + sed -i "s/^AC_INIT.*/$CONF_AC/" $CONFIGURE_FILE +} + +update_debian_changelog(){ +#if [ ! -s $CHANGELOG_FILE ]; then +# echo "Error: changelog does not exist or empty. Exiting..." +# exit +#fi + +sed -i "1s/^/\n/" $DEB_FILE +sed -i "1s/^/ -- Nathan Scott <[email protected]> `date -R`\n/" $DEB_FILE +sed -i "1s/^/\n/" $DEB_FILE + +#while read -r LINE; do +# sed -i "1s/^/ * $LINE\n/" $DEB_FILE +#done <$CHANGELOG_FILE + +sed -i "1s/^/ * New upstream release\n/" $DEB_FILE +sed -i "1s/^/\n/" $DEB_FILE +sed -i "1s/^/xfsdump ($VER_MAJ.$VER_MIN.$VER_REV) unstable; urgency=low\n/" $DEB_FILE +} + +# Get user inputs for each changelog entry +# XXX this should be automated based on patches subjects +get_changelog(){ + LOG="" + while [ 1 ]; do + read -p "Changelog entry:" tmplog + + if [ -z "$tmplog" ]; then + break; + fi + echo "$tmplog" >> $CHANGELOG_FILE + done +} + + +#MOVE TO THE CORRECT REPO +#cd $FORNEXT_DIR + +#check_args +#get_changelog +#update_version_file +#update_configure_file +#update_debian_changelog +#rm $CHANGELOG_FILE +#email_fornext $1 +#fornext_announce 37e6e80a6 + +while getopts "n:r:" opt; do + case $opt in + n) # for-next + LAST_HEAD=$OPTARG + fornext_announce $LAST_HEAD + ;; + r) # Release + LAST_HEAD=$OPTARG + release_announce $LAST_HEAD + ;; + *) + usage + ;; + esac +done diff --git a/bin/xfsprogs-summary.sh b/bin/xfsprogs-summary.sh new file mode 100755 index 0000000..ca82955 --- /dev/null +++ b/bin/xfsprogs-summary.sh @@ -0,0 +1,81 @@ +#!/bin/bash + +MAINTAINER="Eric Sandeen <[email protected]>" + +IFS=$(echo -en "\n\b") + +for PATCH in `guilt applied -c`; do + COMMIT=`echo $PATCH | awk '{print $1}'` + FILENAME=`echo $PATCH | awk '{print $2}'` + + SUBJECT=`git show --pretty=format:%s $COMMIT | head -n 1` + AUTHOR=`git show $COMMIT | grep ^Author | awk -F": " '{print $2}'` + AUTHOR_SOB=`git show $COMMIT | grep -i Signed-off-by: | head -n 1 | awk -F": " '{print $2}'` + COMMITTER_SOB=`git show $COMMIT | grep -i Signed-off-by: | tail -n 1 | awk -F": " '{print $2}'` + REVIEWED_BY=`git show $COMMIT | grep -i Reviewed-by: | tail -n 1 | awk -F": " '{print $2}'` + + echo -n "PATCH: $PATCH" + + # Check for double spaces in subject + if [[ "$SUBJECT" == *" "* ]]; then + DOUBLE="true" + else + DOUBLE="false" + fi + + if [ "$REVIEWED_BY" != "" -a \ + "$AUTHOR" == "$AUTHOR_SOB" -a \ + "$COMMITTER_SOB" == "$MAINTAINER" -a \ + "$DOUBLE" == "false" ]; then + echo " - OK" + else + echo + fi + + if [[ "$SUBJECT" == *" "* ]]; then + echo " double spaces in: $SUBJECT" + fi + if [ "$REVIEWED_BY" == "" ]; then + echo " no Reviewed-by:" + fi + if [ "$AUTHOR" != "$AUTHOR_SOB" ]; then + echo " author $AUTHOR sob $AUTHOR_SOB" + fi + if [ "$COMMITTER_SOB" != "$MAINTAINER" ]; then + echo " committer $COMMITTER_SOB maintainer $MAINTAINER" + fi + +done +[root@intel-lizardhead-04 ~]# cat /usr/local/bin/xfsprogs-summary.sh +#!/bin/bash + +cat << EOF +Hi folks, + +The xfsprogs repository at: + + git://git.kernel.org/pub/scm/fs/xfs/xfsprogs-dev.git + +has just been updated. + +Patches often get missed, so please check if your outstanding +patches were in this update. If they have not been in this update, +please resubmit them to [email protected] so they can be +picked up in the next update. + +The new head of the master branch is commit: + +EOF + +git log --oneline -n 1 $* #v6.4.0 + +echo +echo New Commits: +echo +git shortlog --format="[%h] %s" $* + +echo +echo Code Diffstat: +echo +git diff --stat --summary -C -M $* + diff --git a/bin/xfsprogs_release.sh b/bin/xfsprogs_release.sh new file mode 100755 index 0000000..d17ac96 --- /dev/null +++ b/bin/xfsprogs_release.sh @@ -0,0 +1,303 @@ +#!/bin/bash + +SOURCE="$PWD" +VERSION_FILE="$SOURCE/VERSION" +CONFIGURE_FILE="$SOURCE/configure.ac" +DEB_FILE="$SOURCE/debian/changelog" +LIST="[email protected]" +FORNEXT_DIR="/home/cmaiolin/Source/xfsprogs/for-next" +LAST_HEAD="" +DEBUG=1 + +VER_MAJ="$1" +VER_MIN="$2" +VER_REV="$3" + +CHANGELOG_FILE="/tmp/changelog.$$" + +##### COMMON ##### + +# Print Usage information +usage(){ + echo " ./xfsprogs_relase.sh <maj_ver> <min_ver> <revision>" + exit +} + +# Check update versioning +check_args(){ + if [ -z ${VER_MAJ} ]; then + echo "SET MAJ VERSION" + usage + fi + if [ -z ${VER_MIN} ]; then + echo "SET MIN VERSION" + usage + fi + if [ -z ${VER_REV} ]; then + echo "SET REVISION" + usage + fi +} + +# Open neomutt with the composed message to send +send_email(){ +SUBJECT="$1" +BODY="$2" + + if [ -z "$SUBJECT" ]; then + echo "No subject... exiting" + exit 1 + fi + + if [ -f $BODY ]; then + neomutt -F ~/.mutt/muttrc-local-korg -s "$SUBJECT" $LIST -i $BODY + else + echo "No message body... exiting" + exit 1 + fi + +} + +print_shortlog(){ +LAST_HEAD=$1 +HEAD=$2 + + if [ -z $LAST_HEAD ]; then + echo "Previous head not set... exiting" + exit 1 + fi + + if [ -z $HEAD ]; then + HEAD="HEAD" + fi + + echo "$(git shortlog --format="[%h] %s" $LAST_HEAD..$HEAD)" +} + +print_diffstat(){ +LAST_HEAD=$1 +HEAD=$2 + + if [ -z $LAST_HEAD ]; then + echo "Previous head not set... exiting" + exit 1 + fi + + if [ -z $HEAD ]; then + HEAD="HEAD" + fi + + echo "$(git diff --stat --summary -C -M $LAST_HEAD..$HEAD)" +} + +print_commit_count(){ +LAST_HEAD=$1 +HEAD=$2 + + if [ -z $LAST_HEAD ]; then + echo "Previous head not set... exiting" + exit 1 + fi + + if [ -z $HEAD ]; then + HEAD="HEAD" + fi + + echo "$(git log --oneline $LAST_HEAD.. | wc -l)" +} + +print_head(){ + if [ "$1" == "short" ]; then + HEAD=$(git log --oneline --format="%h" -1) + else + HEAD=$(git log --oneline --format="%H" -1) + fi + echo "$HEAD" +} + +##### COMMON END ##### + + +##### FOR-NEXT UPDATE ##### +compose_fornext_email(){ + + MAIL_FILE=$(mktemp) + LAST_HEAD=$1 + +if [ -z $LAST_HEAD ]; then + echo "compose_email: Previous head not set... exiting" + exit 1 +fi + +# BEGIN_OF_MESSAGE +cat << EOF > $MAIL_FILE +Hello. + +The xfsprogs for-next branch, located at: + +https://git.kernel.org/pub/scm/fs/xfs/xfsprogs-dev.git/refs/?h=for-next + +Has just been updated. + +Patches often get missed, so if your outstanding patches are properly reviewed on +the list and not included in this update, please let me know. + +The new head of the for-next branch is commit: + +$(print_head) + +$(print_commit_count $LAST_HEAD) new commits: + +$(print_shortlog $LAST_HEAD) + +Code Diffstat: + +$(print_diffstat $LAST_HEAD) +EOF +# END_OF_MESSAGE + +echo $MAIL_FILE +} + +compose_release_email(){ + + MAIL_FILE=$(mktemp) + LAST_HEAD=$1 + +cat << EOF > $MAIL_FILE +Hi folks, + +The xfsprogs repository at: + + git://git.kernel.org/pub/scm/fs/xfs/xfsprogs-dev.git + +has just been updated. + +Patches often get missed, so if your outstanding patches are properly reviewed +on the list and not included in this update, please let me know. + +The for-next branch has also been updated to match the state of master. + +The new head of the master branch is commit: + +$(print_head) + +New commits: + +$(print_shortlog $LAST_HEAD) + +Code Diffstat: + +$(print_diffstat $LAST_HEAD) +EOF + +#END_OF_MESSAGE +echo $MAIL_FILE + +} +fornext_announce(){ + + LAST_HEAD=$1 + + if [ -z $LAST_HEAD ]; then + echo "No starting HEAD specified... exiting" + exit 1 + fi + + SUBJECT="[ANNOUNCE] xfsprogs: for-next updated to $(print_head short)" + BODY=$(compose_fornext_email $LAST_HEAD) + + send_email "$SUBJECT" $BODY +} + +release_announce(){ + LAST_HEAD=$1 + RELEASE=$(git describe --abbrev=0) + + if [ -z $LAST_HEAD ]; then + echo "No starting HEAD specified... exiting" + exit 1 + fi + + SUBJECT="[ANNOUNCE] xfsprogs $RELEASE released" + BODY=$(compose_release_email $LAST_HEAD) + + send_email "$SUBJECT" $BODY +} +##### FOR-NEXT UPDATE ##### + +##### RELEASE SETUP ###### +update_version_file(){ + echo "updating version" + sed -i -e "s/^PKG_MAJOR=.*/PKG_MAJOR=$VER_MAJ/" $VERSION_FILE + sed -i -e "s/^PKG_MINOR=.*/PKG_MINOR=$VER_MIN/" $VERSION_FILE + sed -i -e "s/^PKG_REVISION=.*/PKG_REVISION=$VER_REV/" $VERSION_FILE +} + +update_configure_file(){ + CONF_AC="AC_INIT([xfsprogs],[$VER_MAJ.$VER_MIN.$VER_REV],[[email protected]])" + + sed -i "s/^AC_INIT.*/$CONF_AC/" $CONFIGURE_FILE +} + +update_debian_changelog(){ +#if [ ! -s $CHANGELOG_FILE ]; then +# echo "Error: changelog does not exist or empty. Exiting..." +# exit +#fi + +sed -i "1s/^/\n/" $DEB_FILE +sed -i "1s/^/ -- Nathan Scott <[email protected]> `date -R`\n/" $DEB_FILE +sed -i "1s/^/\n/" $DEB_FILE + +#while read -r LINE; do +# sed -i "1s/^/ * $LINE\n/" $DEB_FILE +#done <$CHANGELOG_FILE + +sed -i "1s/^/ * New upstream release\n/" $DEB_FILE +sed -i "1s/^/\n/" $DEB_FILE +sed -i "1s/^/xfsprogs ($VER_MAJ.$VER_MIN.$VER_REV) unstable; urgency=low\n/" $DEB_FILE +} + +# Get user inputs for each changelog entry +# XXX this should be automated based on patches subjects +get_changelog(){ + LOG="" + while [ 1 ]; do + read -p "Changelog entry:" tmplog + + if [ -z "$tmplog" ]; then + break; + fi + echo "$tmplog" >> $CHANGELOG_FILE + done +} + + +#MOVE TO THE CORRECT REPO +#cd $FORNEXT_DIR + +#check_args +#get_changelog +#update_version_file +#update_configure_file +#update_debian_changelog +#rm $CHANGELOG_FILE +#email_fornext $1 +#fornext_announce 37e6e80a6 + +while getopts "n:r:" opt; do + case $opt in + n) # for-next + LAST_HEAD=$OPTARG + fornext_announce $LAST_HEAD + ;; + r) # Release + LAST_HEAD=$OPTARG + release_announce $LAST_HEAD + ;; + *) + usage + ;; + esac +done |
