[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [bug-gnulib] gnulib-tool plays nice with make
From: |
Derek Price |
Subject: |
Re: [bug-gnulib] gnulib-tool plays nice with make |
Date: |
Fri, 04 Mar 2005 12:23:12 -0500 |
User-agent: |
Mozilla Thunderbird 1.0 (Windows/20041206) |
Bruno Haible wrote:
This looks better, thanks. Three nits:
- Could you please make the function names start with 'func_' ? Just to
make it clear to the reader that this is a function call, not a program
invocation.
Ok.
- Could you please document the functions with named arguments, like this?
func_cp_if_changed src dest
It is awful to have to peek inside a function in order to understand how
to invoke it.
Ok.
- Why this change?
- echo "Creating $destdir/$sourcebase/Makefile.am..."
+ echo "Creating $destdir/$sourcebase/Makefile.am.new..."
The user who watches gnulib-tool is not interested in temporary filenames,
but in the final result. Also you don't echo the 'mv' later. Therefore it
doesn't harm to let the user think that Makefile.am was actually created/
replaced.
Because I was thinking that the cp/mv commands *were* echoed, but I see
that this is only during the dry run. Thanks.
Nits addressed in attached patch.
2005-03-04 Derek R. Price <address@hidden>
* gnulib-tool: Only replace files via --import when they have
actually changed.
Regards,
Derek
Index: gnulib-tool
===================================================================
RCS file: /cvsroot/gnulib/gnulib/gnulib-tool,v
retrieving revision 1.38
diff -u -p -r1.38 gnulib-tool
--- gnulib-tool 5 Jan 2005 02:50:04 -0000 1.38
+++ gnulib-tool 4 Mar 2005 17:17:34 -0000
@@ -117,6 +117,37 @@ func_fatal_error ()
exit 1
}
+# func_cp_if_changed SRC DEST
+#
+# cp, but avoid munging timestamps if the file hasn't changed.
+func_cp_if_changed ()
+{
+ if test $# -ne 2; then
+ echo "usage: cp_if_changed SRC DEST" >&2
+ fi
+ test -n "$dry_run" && dry=echo
+ if cmp "$1" "$2" >/dev/null 2>&1; then :; else
+ $dry cp -p "$1" "$2"
+ fi
+}
+
+# func_mv_if_changed SRC DEST
+#
+# mv, but avoid munging timestamps if the file hasn't changed.
+# Remove the source file if it is not renamed.
+func_mv_if_changed ()
+{
+ if test $# -ne 2; then
+ echo "usage: mv_if_changed SRC DEST" >&2
+ fi
+ test -n "$dry_run" && dry=echo
+ if cmp "$1" "$2" >/dev/null 2>&1; then
+ $dry rm "$1"
+ else
+ $dry mv "$1" "$2"
+ fi
+}
+
# Command-line option processing.
# Removes the OPTIONS from the arguments. Sets the variables:
# - mode list or import or create-testdir or create-megatestdir
@@ -523,8 +554,7 @@ func_import ()
m4/*) g=`echo "$f" | sed -e "s,^m4/,$m4base/,"` ;;
*) g="$f" ;;
esac
- test -n "$dry_run" && dry=echo
- $dry cp -p "$gnulib_dir/$f" "$destdir/$g"
+ func_cp_if_changed "$gnulib_dir/$f" "$destdir/$g"
# Update license.
if test -z "$dry_run" && test -n "$lgpl" && test -n "$source"; then
perl -pi -e 's/GNU General/GNU Lesser General/g;' \
@@ -548,16 +578,18 @@ func_import ()
# Create lib/Makefile.am.
echo "Creating $destdir/$sourcebase/Makefile.am..."
if test -z "$dry_run"; then
- func_emit_lib_Makefile_am > $destdir/$sourcebase/Makefile.am
+ func_emit_lib_Makefile_am > $destdir/$sourcebase/Makefile.am.new
else
func_emit_lib_Makefile_am
fi
+ func_mv_if_changed $destdir/$sourcebase/Makefile.am.new \
+ $destdir/$sourcebase/Makefile.am
# Create gnulib.m4.
echo "Creating $destdir/$m4base/gnulib.m4..."
(
if test -z "$dry_run"; then
- exec > $destdir/$m4base/gnulib.m4
+ exec > $destdir/$m4base/gnulib.m4.new
else
echo "# $destdir/$m4base/gnulib.m4"
fi
@@ -616,6 +648,7 @@ func_import ()
echo
echo "# gnulib.m4 ends here"
)
+ func_mv_if_changed $destdir/$m4base/gnulib.m4.new $destdir/$m4base/gnulib.m4
echo "Finished."
echo
echo "You may need to add #include directives for the following .h files."
signature.asc
Description: OpenPGP digital signature