summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbin/cemmail7
-rwxr-xr-xbin/gen_kscope.sh34
-rwxr-xr-xbin/get_mail.sh6
-rwxr-xr-xbin/git-refresh8
-rwxr-xr-xbin/install_kernel.sh28
-rwxr-xr-xbin/korgmail7
-rwxr-xr-xbin/monitor_off.sh5
-rwxr-xr-xbin/monitor_setup.sh14
-rwxr-xr-xbin/mutt_hooks.sh77
-rwxr-xr-xbin/on_login.sh3
-rwxr-xr-xbin/pack_kernel.sh48
-rwxr-xr-xbin/rhmail7
-rwxr-xr-xbin/todo1
-rwxr-xr-xbin/verify-tags.sh49
-rwxr-xr-xbin/vpn.sh7
-rwxr-xr-xbin/work_setup.sh9
-rwxr-xr-xbin/xfs-release.sh118
-rwxr-xr-xbin/xfsdump_release.sh303
-rwxr-xr-xbin/xfsprogs-summary.sh81
-rwxr-xr-xbin/xfsprogs_release.sh303
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"
+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"
+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