Re: [PATCH] Modern Bash syntax, replace backquote to dollar parenthesis

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 10/10/19 7:17 PM, Bhaskar Chowdhury wrote:
> Signed-off-by: Bhaskar Chowdhury <unixbhaskar@xxxxxxxxx>
> ---
>  setlocalversion | 183 ++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 183 insertions(+)
>  create mode 100755 setlocalversion

Hi,
I'm pretty sure something is mucked up here.

> diff --git a/setlocalversion b/setlocalversion

but this isn't a diff between those 2 files.

And this diff should be from the top level of the kernel source tree, so it
should be a diff between a/scripts/setlocalversion and b/scripts/setlocalversion.

> new file mode 100755

There is already a file scripts/setlocalversion, so this "new file" is strange.

Also, the patch subject should be something like:
[PATCH] scripts: fix shell syntax

And note that the shell in this case is /bin/sh, not necessarily bash.
Actually we prefer to make patches that remove bashisms in many cases.

One more:  you should Cc: the kbuild maintainer on patches that he might apply/merge.

Thanks.

> index 000000000000..220dae0db3f1
> --- /dev/null
> +++ b/setlocalversion
> @@ -0,0 +1,183 @@
> +#!/bin/sh
> +# SPDX-License-Identifier: GPL-2.0
> +#
> +# This scripts adds local version information from the version
> +# control systems git, mercurial (hg) and subversion (svn).
> +#
> +# If something goes wrong, send a mail the kernel build mailinglist
> +# (see MAINTAINERS) and CC Nico Schottelius
> +# <nico-linuxsetlocalversion -at- schottelius.org>.
> +#
> +#
> +
> +usage() {
> +	echo "Usage: $0 [--save-scmversion] [srctree]" >&2
> +	exit 1
> +}
> +
> +scm_only=false
> +srctree=.
> +if test "$1" = "--save-scmversion"; then
> +	scm_only=true
> +	shift
> +fi
> +if test $# -gt 0; then
> +	srctree=$1
> +	shift
> +fi
> +if test $# -gt 0 -o ! -d "$srctree"; then
> +	usage
> +fi
> +
> +scm_version()
> +{
> +	local short
> +	short=false
> +
> +	cd "$srctree"
> +	if test -e .scmversion; then
> +		cat .scmversion
> +		return
> +	fi
> +	if test "$1" = "--short"; then
> +		short=true
> +	fi
> +
> +	# Check for git and a git repo.
> +	if test -z "$(git rev-parse --show-cdup 2>/dev/null)" &&
> +	   head=`git rev-parse --verify --short HEAD 2>/dev/null`; then
> +
> +		# If we are at a tagged commit (like "v2.6.30-rc6"), we ignore
> +		# it, because this version is defined in the top level Makefile.
> +		if [ -z "`git describe --exact-match 2>/dev/null`" ]; then
> +
> +			# If only the short version is requested, don't bother
> +			# running further git commands
> +			if $short; then
> +				echo "+"
> +				return
> +			fi
> +			# If we are past a tagged commit (like
> +			# "v2.6.30-rc5-302-g72357d5"), we pretty print it.
> +			if atag="`git describe 2>/dev/null`"; then
> +				echo "$atag" | awk -F- '{printf("-%05d-%s", $(NF-1),$(NF))}'
> +
> +			# If we don't have a tag at all we print -g{commitish}.
> +			else
> +				printf '%s%s' -g $head
> +			fi
> +		fi
> +
> +		# Is this git on svn?
> +		if git config --get svn-remote.svn.url >/dev/null; then
> +			printf -- '-svn%s' "`git svn find-rev $head`"
> +		fi
> +
> +		# Check for uncommitted changes.
> +		# First, with git-status, but --no-optional-locks is only
> +		# supported in git >= 2.14, so fall back to git-diff-index if
> +		# it fails. Note that git-diff-index does not refresh the
> +		# index, so it may give misleading results. See
> +		# git-update-index(1), git-diff-index(1), and git-status(1).
> +		if {
> +			git --no-optional-locks status -uno --porcelain 2>/dev/null ||
> +			git diff-index --name-only HEAD
> +		} | grep -qvE '^(.. )?scripts/package'; then
> +			printf '%s' -dirty
> +		fi
> +
> +		# All done with git
> +		return
> +	fi
> +
> +	# Check for mercurial and a mercurial repo.
> +	if test -d .hg && hgid=`hg id 2>/dev/null`; then
> +		# Do we have an tagged version?  If so, latesttagdistance == 1
> +		if [ "`hg log -r . --template '{latesttagdistance}'`" == "1" ]; then
> +			id=`hg log -r . --template '{latesttag}'`
> +			printf '%s%s' -hg "$id"
> +		else
> +			tag=`printf '%s' "$hgid" | cut -d' ' -f2`
> +			if [ -z "$tag" -o "$tag" = tip ]; then
> +				id=`printf '%s' "$hgid" | sed 's/[+ ].*//'`
> +				printf '%s%s' -hg "$id"
> +			fi
> +		fi
> +
> +		# Are there uncommitted changes?
> +		# These are represented by + after the changeset id.
> +		case "$hgid" in
> +			*+|*+\ *) printf '%s' -dirty ;;
> +		esac
> +
> +		# All done with mercurial
> +		return
> +	fi
> +
> +	# Check for svn and a svn repo.
> +	if rev=`LANG= LC_ALL= LC_MESSAGES=C svn info 2>/dev/null | grep '^Last Changed Rev'`; then
> +		rev=`echo $rev | awk '{print $NF}'`
> +		printf -- '-svn%s' "$rev"
> +
> +		# All done with svn
> +		return
> +	fi
> +}
> +
> +collect_files()
> +{
> +	local file res=
> +
> +	for file; do
> +		case "$file" in
> +		*\~*)
> +			continue
> +			;;
> +		esac
> +		if test -e "$file"; then
> +			res="$res$(cat "$file")"
> +		fi
> +	done
> +	echo "$res"
> +}
> +
> +if $scm_only; then
> +	if test ! -e .scmversion; then
> +		res=$(scm_version)
> +		echo "$res" >.scmversion
> +	fi
> +	exit
> +fi
> +
> +if test -e include/config/auto.conf; then
> +	. include/config/auto.conf
> +else
> +	echo "Error: kernelrelease not valid - run 'make prepare' to update it" >&2
> +	exit 1
> +fi
> +
> +# localversion* files in the build and source directory
> +res="$(collect_files localversion*)"
> +if test ! "$srctree" -ef .; then
> +	res="$res$(collect_files "$srctree"/localversion*)"
> +fi
> +
> +# CONFIG_LOCALVERSION and LOCALVERSION (if set)
> +res="${res}${CONFIG_LOCALVERSION}${LOCALVERSION}"
> +
> +# scm version string if not at a tagged commit
> +if test "$CONFIG_LOCALVERSION_AUTO" = "y"; then
> +	# full scm version string
> +	res="$res$(scm_version)"
> +else
> +	# append a plus sign if the repository is not in a clean
> +	# annotated or signed tagged state (as git describe only
> +	# looks at signed or annotated tags - git tag -a/-s) and
> +	# LOCALVERSION= is not specified
> +	if test "${LOCALVERSION+set}" != "set"; then
> +		scm=$(scm_version --short)
> +		res="$res${scm:++}"
> +	fi
> +fi
> +
> +echo "$res"
> 


-- 
~Randy



[Index of Archives]     [Linux&nblp;USB Development]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite Secrets]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux