mirror of
https://github.com/gryf/wmaker.git
synced 2025-12-23 22:52:34 +01:00
Remove mkpatch script
I don't need it, git should handle everything.
This commit is contained in:
389
mkpatch
389
mkpatch
@@ -1,389 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# mkpatch 1.1
|
||||
#
|
||||
# Creates a more-or-less self-contained patch package.
|
||||
#
|
||||
# Copyright (c) Alfredo K. Kojima
|
||||
#
|
||||
#
|
||||
# Syntax: mkpatch old_tree new_tree patch_name
|
||||
#
|
||||
# If a file named mkp.stuff is found in the current directory, it
|
||||
# will be used to extract special handling cases. Each directive must
|
||||
# be placed in a line of the file and the arguments must be separated
|
||||
# by a single space. The currently supported directives are:
|
||||
#
|
||||
# DONTDIFF <file_path>
|
||||
# Do not use diff in the specified file, replacing the file instead.
|
||||
# The path must exclude the top directory and the path must be
|
||||
# valid from both trees.
|
||||
# It will handle special cases of files that diff thinks are text
|
||||
# files, but actually are not, like XPM files created by stupid,
|
||||
# brain damaged, moron XV.
|
||||
#
|
||||
# Example mkp.stuff file:
|
||||
# DONTDIFF icons/somthing.xpm
|
||||
# DONTDIFF icons/smthingelse.xpm
|
||||
#
|
||||
#
|
||||
# The resulting patch pack will be relatively big (if compared to things
|
||||
# produced by xdelta and others), but it will be self-contained and
|
||||
# hopefully smaller than the whole source tree.
|
||||
#
|
||||
# You MUST run mkpatch from a directory above old_tree and new_tree.
|
||||
# Example:
|
||||
# If newTree and oldTree are located in /tmp
|
||||
# cd /tmp
|
||||
# mkpatch oldTree newTree old_to_new
|
||||
#
|
||||
# File names cannot contain the character # or spaces
|
||||
#
|
||||
|
||||
|
||||
if test ! $# = 3 ; then
|
||||
echo "$0:read the script for the syntax."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
|
||||
istext() {
|
||||
a=`file $1|grep text`
|
||||
if test "x$a" = "x"; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
put_header() {
|
||||
cat << 'EOF' |sed -e "s#TMP#$TMP#" -e "s#OTREE#$OTREE#"\
|
||||
-e "s#NTREE#$NTREE#" > $1
|
||||
#!/bin/sh
|
||||
#
|
||||
# Patch package to upgrade OTREE to NTREE
|
||||
#
|
||||
EOF
|
||||
if [ $# -gt 1 ]; then
|
||||
echo $2 >> $1
|
||||
fi
|
||||
echo "unalias rm" >> $1
|
||||
|
||||
}
|
||||
|
||||
##########################
|
||||
|
||||
check_removed_files() {
|
||||
|
||||
files=`grep "Only in $OTREE" $TMP/tdiff|sed -e "s#Only in $OTREE##" -e "s#: #/#" -e "s#//#/#"`
|
||||
|
||||
put_header $TMP/delfiles "# Remove obsolete files"
|
||||
#..................
|
||||
cat << EOF >> $TMP/delfiles
|
||||
echo "Files that are not needed anymore will be removed now."
|
||||
echo "Do you wish to proceed? <y/n> [y]"
|
||||
read foo
|
||||
if [ "$foo" = "n" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
EOF
|
||||
#...................
|
||||
|
||||
echo "Obsoleted Files:"
|
||||
for i in $files; do
|
||||
echo $OTREE/$i
|
||||
echo "echo \"Removing ../$i\"" >> $TMP/delfiles
|
||||
if [ -d $OTREE/$i ]; then
|
||||
echo "rm -rf ../$i" >> $TMP/delfiles
|
||||
else
|
||||
echo "rm ../$i" >> $TMP/delfiles
|
||||
fi
|
||||
done
|
||||
|
||||
chmod +x $TMP/delfiles
|
||||
}
|
||||
|
||||
|
||||
#########################
|
||||
|
||||
check_new_files() {
|
||||
files=`grep "Only in $NTREE" $TMP/tdiff|sed -e "s#Only in $NTREE#../#" -e "s#: #/#" -e "s#//#/#"`
|
||||
|
||||
put_header $TMP/newfiles "# Copy new files"
|
||||
echo "# Table of internal file names to real file names" >> $TMP/newfiles
|
||||
|
||||
index=0
|
||||
dindex=0
|
||||
mkdir $TMP/files
|
||||
echo "New Files:"
|
||||
for i in $files; do
|
||||
name=`basename $i`
|
||||
src=`echo $i|sed -e "s#..#$NTREE#"`
|
||||
file=`echo $i|sed -e "s#../##"`
|
||||
echo $src
|
||||
if [ -d $src ]; then
|
||||
dst="dir$dindex"
|
||||
|
||||
(dir=`pwd`;cd $NTREE;tar cf $dir/$TMP/files/$dst.tar $file)
|
||||
|
||||
echo "$dst=\"$file\"" >> $TMP/newfiles
|
||||
dindex=`expr $dindex + 1`
|
||||
else
|
||||
dst="file$index"
|
||||
cp $src $TMP/files/$dst
|
||||
echo "$dst=\"$file\"" >> $TMP/newfiles
|
||||
index=`expr $index + 1`
|
||||
fi
|
||||
done
|
||||
echo "filecount=$index" >> $TMP/newfiles
|
||||
echo "dircount=$dindex" >> $TMP/newfiles
|
||||
#..........
|
||||
cat << 'EOF' |sed -e "s#TMP#$TMP#" -e "s#OTREE#$OTREE#"\
|
||||
-e "s#NTREE#$NTREE#" >> $TMP/newfiles
|
||||
|
||||
|
||||
#create new directories
|
||||
index=0
|
||||
mkdir tmpdir
|
||||
while [ $index -lt $dircount ]; do
|
||||
fname="dir$index"
|
||||
eval origname=\$"$fname"
|
||||
echo "Recreating directory ../$origname"
|
||||
(cd tmpdir; tar xf ../files/$fname.tar)
|
||||
mv tmpdir/$origname ../$origname
|
||||
index=`expr $index + 1`
|
||||
done
|
||||
rm -fr tmpdir
|
||||
|
||||
#copy files
|
||||
index=0
|
||||
while [ $index -lt $filecount ]; do
|
||||
fname="file$index"
|
||||
eval origname=\$"$fname"
|
||||
echo "Copying file ../$origname"
|
||||
cp files/$fname ../$origname
|
||||
index=`expr $index + 1`
|
||||
done
|
||||
|
||||
EOF
|
||||
#..........
|
||||
|
||||
chmod +x $TMP/newfiles
|
||||
}
|
||||
|
||||
#####################
|
||||
|
||||
check_binary_changes() {
|
||||
files=`grep "Binary files" $TMP/bindiff|cut -d\ -f5`
|
||||
files=`echo $files`
|
||||
|
||||
put_header $TMP/updbinfiles "# Replace changed binary files"
|
||||
echo "# Table of internal file names to real file names" >> $TMP/updbinfiles
|
||||
|
||||
for i in $no_diff; do
|
||||
files="$files $NTREE/$i"
|
||||
done
|
||||
index=0
|
||||
echo "Binary files changed:"
|
||||
for i in $files; do
|
||||
fname="changed$index"
|
||||
oname=`echo $i|sed -e "s#$NTREE##" -e "s#^/##"`
|
||||
cp $i $TMP/files/$fname
|
||||
echo $i
|
||||
echo "$fname=\"$oname\"" >> $TMP/updbinfiles
|
||||
index=`expr $index + 1`
|
||||
done
|
||||
echo "filecount=$index" >> $TMP/updbinfiles
|
||||
|
||||
#..........
|
||||
cat << 'EOF' |sed -e "s#TMP#$TMP#" -e "s#OTREE#$OTREE#"\
|
||||
-e "s#NTREE#$NTREE#" >> $TMP/updbinfiles
|
||||
|
||||
index=0
|
||||
while [ $index -lt $filecount ]; do
|
||||
fname="changed$index"
|
||||
eval origname=\$"$fname"
|
||||
echo "Replacing file ../$origname"
|
||||
rm ../$origname
|
||||
cp files/$fname ../$origname
|
||||
index=`expr $index + 1`
|
||||
done
|
||||
|
||||
EOF
|
||||
#..........
|
||||
chmod +x $TMP/updbinfiles
|
||||
}
|
||||
|
||||
|
||||
#####################
|
||||
check_text_changes() {
|
||||
echo "diff'ing trees..."
|
||||
diff -rq $OTREE $NTREE > $TMP/tdiff
|
||||
tmp=`egrep "^Files" $TMP/tdiff|cut -d\ -f2|sed -e "s#$OTREE/##"`
|
||||
|
||||
files=""
|
||||
# remove excluded files
|
||||
for i in $tmp; do
|
||||
ok=1
|
||||
for j in $no_diff; do
|
||||
if test "$i" = "$j"; then
|
||||
ok=0
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [ $ok = 1 ]; then
|
||||
files="$files $i"
|
||||
fi
|
||||
done
|
||||
|
||||
touch $TMP/diff
|
||||
touch $TMP/bindiff
|
||||
# diff remaining files
|
||||
for f in $files; do
|
||||
diff -rc $OTREE/$f $NTREE/$f >> $TMP/tmp
|
||||
foo=`egrep "^Binary" $TMP/tmp`
|
||||
if test "x$foo" = "x"; then
|
||||
cat $TMP/tmp >> $TMP/diff
|
||||
else
|
||||
cat $TMP/tmp >> $TMP/bindiff
|
||||
fi
|
||||
rm -fr $TMP/tmp
|
||||
done
|
||||
}
|
||||
|
||||
################# main
|
||||
|
||||
stripslash() {
|
||||
echo $1|sed -e 's#/$##'
|
||||
}
|
||||
|
||||
OTREE=`stripslash $1`
|
||||
NTREE=`stripslash $2`
|
||||
OUTPUT=$3
|
||||
|
||||
TMP=$OUTPUT.patchd
|
||||
|
||||
rm -fr $TMP
|
||||
mkdir $TMP
|
||||
|
||||
|
||||
if [ -f mkp.stuff ]; then
|
||||
echo "Using mkp.stuff file..."
|
||||
|
||||
no_diff=`grep DONTDIFF mkp.stuff|cut -d\ -f2`
|
||||
no_diff=`echo $no_diff`
|
||||
fi
|
||||
|
||||
|
||||
|
||||
#....................
|
||||
cat << 'EOF' |sed -e "s#TMP#$TMP#" -e "s#OTREE#$OTREE#" -e "s#NTREE#$NTREE#" \
|
||||
> $TMP/runme
|
||||
#!/bin/sh
|
||||
#
|
||||
# Patch package to upgrade OTREE to NTREE
|
||||
#
|
||||
# Automatically generated by mkpatch
|
||||
#
|
||||
# Move the TMP directory to inside NTREE
|
||||
# and run this script.
|
||||
#
|
||||
|
||||
TARGET_TREE=OTREE
|
||||
|
||||
savedir=`pwd`
|
||||
cd ..
|
||||
dir=`pwd`
|
||||
dir=`basename $dir`
|
||||
cd $savedir
|
||||
|
||||
if test "$USER" = root; then
|
||||
echo "Do not run this script as the root user"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if test "$dir" != "$TARGET_TREE"; then
|
||||
echo "You must move the \"TMP\" directory to inside the "
|
||||
echo "\"$TARGET_TREE\" directory before running this script."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "################################"
|
||||
echo "Removing Obsolete Files"
|
||||
echo "################################"
|
||||
./delfiles
|
||||
echo
|
||||
echo "################################"
|
||||
echo "Copying New Files"
|
||||
echo "################################"
|
||||
./newfiles
|
||||
echo
|
||||
echo "################################"
|
||||
echo "Replacing modified binary files"
|
||||
echo "################################"
|
||||
./updbinfiles
|
||||
echo
|
||||
echo "################################"
|
||||
echo "Patching modified text files"
|
||||
echo "################################"
|
||||
cd ..
|
||||
patch -p1 -s < $savedir/diff
|
||||
|
||||
echo "Patching finished."
|
||||
|
||||
EOF
|
||||
#....................
|
||||
cat << 'EOF' |sed -e "s#TMP#$TMP#" -e "s#OTREE#$OTREE#" -e "s#NTREE#$NTREE#" \
|
||||
> $TMP/README
|
||||
|
||||
This patch package will upgrade OTREE to NTREE.
|
||||
You must unpack it inside the OTREE directory or it will not work.
|
||||
This patch can only be applied over a clean OTREE distribution.
|
||||
To apply, just type (followed by a Return, of course):
|
||||
./runme
|
||||
|
||||
EOF
|
||||
#....................
|
||||
|
||||
#....................
|
||||
cat << 'EOF' > $TMP/cleanup
|
||||
#!/bin/sh
|
||||
#
|
||||
# Remove .orig files
|
||||
#
|
||||
find .. -name \*.orig -exec rm {} \;
|
||||
EOF
|
||||
chmod +x $TMP/cleanup
|
||||
#....................
|
||||
|
||||
|
||||
# this must be the first function called
|
||||
check_text_changes
|
||||
|
||||
check_removed_files
|
||||
|
||||
check_new_files
|
||||
|
||||
check_binary_changes
|
||||
|
||||
rm -f $TMP/tdiff
|
||||
rm -f $TMP/bindiff
|
||||
|
||||
chmod +x $TMP/runme
|
||||
|
||||
echo "Do you want to add something to the README file? <y/n> [n]"
|
||||
read foo
|
||||
if [ "$foo" = "y" ]; then
|
||||
vi $TMP/README
|
||||
fi
|
||||
|
||||
rm -f $OUTPUT.tar.gz
|
||||
|
||||
tar czf $OUTPUT.tar.gz $TMP
|
||||
|
||||
rm -fr $TMP
|
||||
|
||||
echo "Patch pack $OUTPUT.tar.gz successfully created."
|
||||
Reference in New Issue
Block a user