From 9ca24c9c2b411c06fd0d21fa60b9890346296cee Mon Sep 17 00:00:00 2001 From: Sean Bright Date: Thu, 6 Jul 2023 13:51:32 -0400 Subject: [PATCH] apply_patches: Use globbing instead of file/sort. This accomplishes the same thing as a `find ... | sort` but with the added benefit of clarity and avoiding a call to a subshell. Additionally drop the -s option from call to patch as it is not POSIX. --- configure | 68 ++++++++++++--------------------------- configure.ac | 1 - makeopts.in | 1 - third-party/apply_patches | 21 ++++++------ 4 files changed, 31 insertions(+), 60 deletions(-) diff --git a/configure b/configure index f0f3e2b0b2..4f763ae765 100755 --- a/configure +++ b/configure @@ -1222,7 +1222,6 @@ DOWNLOAD_TIMEOUT DOWNLOAD_TO_STDOUT DOWNLOAD FETCH -SORT REALPATH NM PATCH @@ -1332,6 +1331,7 @@ infodir docdir oldincludedir includedir +runstatedir localstatedir sharedstatedir sysconfdir @@ -1520,6 +1520,7 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1772,6 +1773,15 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1909,7 +1919,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir + libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -2062,6 +2072,7 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -7702,47 +7713,6 @@ $as_echo "no" >&6; } fi -# Extract the first word of "sort", so it can be a program name with args. -set dummy sort; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_SORT+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $SORT in - [\\/]* | ?:[\\/]*) - ac_cv_path_SORT="$SORT" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_SORT="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_SORT" && ac_cv_path_SORT=":" - ;; -esac -fi -SORT=$ac_cv_path_SORT -if test -n "$SORT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SORT" >&5 -$as_echo "$SORT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - DOWNLOAD=":" @@ -15266,7 +15236,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -15312,7 +15282,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -15336,7 +15306,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -15381,7 +15351,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -15405,7 +15375,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -16705,6 +16675,8 @@ main () if (*(data + i) != *(data3 + i)) return 14; close (fd); + free (data); + free (data3); return 0; } _ACEOF diff --git a/configure.ac b/configure.ac index c0e7abd9f5..d3ded27998 100644 --- a/configure.ac +++ b/configure.ac @@ -286,7 +286,6 @@ AC_PATH_PROG([PATCH], [patch], :) AC_PATH_PROG([SED], [sed], :) AC_PATH_PROG([NM], [nm], :) AC_PATH_PROG([REALPATH], [realpath], :) -AC_PATH_PROG([SORT], [sort], :) DOWNLOAD=":" diff --git a/makeopts.in b/makeopts.in index 6c4ee8be11..4f3778fa9b 100644 --- a/makeopts.in +++ b/makeopts.in @@ -48,7 +48,6 @@ CAT=@CAT@ CUT=@CUT@ REALPATH=@REALPATH@ DIRNAME=@DIRNAME@ -SORT=@SORT@ BUILD_PLATFORM=@BUILD_PLATFORM@ BUILD_CPU=@BUILD_CPU@ diff --git a/third-party/apply_patches b/third-party/apply_patches index 78a680dd0c..caf2fbf6cd 100755 --- a/third-party/apply_patches +++ b/third-party/apply_patches @@ -6,8 +6,6 @@ if [ "$1" = "-q" ] ; then fi PATCH=${PATCH:-patch} -FIND=${FIND:-find} -SORT=${SORT:-sort} patchdir=${1:?You must supply a patches directory} sourcedir=${2?:You must supply a source directory} @@ -22,15 +20,18 @@ if [ ! -d "$sourcedir" ] ; then exit 1 fi -patches=$(${FIND} "$patchdir" -name "*.patch" | ${SORT}) -if [ x"$patches" = x"" ] ; then - echo "No patches in $patchdir" >&2 - exit 0 -fi +# Patterns used in filename expansion (globs) are sorted according to the +# current locale, so there is no need to do it explicitly. +for patchfile in "$patchdir"/*.patch ; do + # A glob that doesn't match is not replaced, so we handle that here. We + # should only fail this test if there are no patch files. + [ -f "$patchfile" ] || { + echo "No patches in $patchdir" >&2 + exit 0 + } -for patchfile in ${patches} ; do - [ -z $quiet ] && echo "Applying patch $(basename $patchfile)" - ${PATCH} -d "$sourcedir" -p1 -s -i "$patchfile" || exit 1 + [ -z "$quiet" ] && echo "Applying patch $(basename "$patchfile")" + ${PATCH} -d "$sourcedir" -p1 -i "$patchfile" >/dev/null || exit 1 done exit 0