Skip to content

Commit

Permalink
uname: report msys2-runtime commit hash, too
Browse files Browse the repository at this point in the history
Having just Cygwin's version in the output of `uname` is not helpful as
both MSYS2 as well as Git for Windows release intermediate versions of
the MSYS2 runtime much more often than Cygwin runtime versions are
released.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
  • Loading branch information
dscho committed Feb 21, 2023
1 parent b6fdcf6 commit 88ca9fd
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 5 deletions.
9 changes: 7 additions & 2 deletions winsup/configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -65,20 +65,25 @@ AC_ARG_WITH([msys2-runtime-commit],
case "$MSYS2_RUNTIME_COMMIT" in
no)
MSYS2_RUNTIME_COMMIT=
MSYS2_RUNTIME_COMMIT_SHORT=
MSYS2_RUNTIME_COMMIT_HEX=0
;;
yes|auto)
MSYS2_RUNTIME_COMMIT="$(git --git-dir="$srcdir/../.git" rev-parse HEAD)" ||
AC_MSG_ERROR([Could not determine msys2-runtime commit"])
MSYS2_RUNTIME_COMMIT_HEX="0x$(expr "$MSYS2_RUNTIME_COMMIT" : '\(.\{,8\}\)')ull"
MSYS2_RUNTIME_COMMIT_SHORT="$(expr "$MSYS2_RUNTIME_COMMIT" : '\(.\{,8\}\)')"
MSYS2_RUNTIME_COMMIT_HEX="0x${MSYS2_RUNTIME_COMMIT_SHORT}ul"
test "0xull" != "$MSYS2_RUNTIME_COMMIT_HEX" || AC_MSG_ERROR([Huh? "$MSYS2_RUNTIME_COMMIT" translates into "$MSYS2_RUNTIME_COMMIT_HEX"? expr "$MSYS2_RUNTIME_COMMIT" : '^\([0-9a-f]\{7,16\}\)'])
;;
*)
expr "$MSYS2_RUNTIME_COMMIT" : '@<:@0-9a-f@:>@\{6,64\}$' ||
AC_MSG_ERROR([Invalid commit name: "$MSYS2_RUNTIME_COMMIT"])
MSYS2_RUNTIME_COMMIT_HEX="0x$(expr "$MSYS2_RUNTIME_COMMIT" : '\(.\{,8\}\)')ull"
MSYS2_RUNTIME_COMMIT_SHORT="$(expr "$MSYS2_RUNTIME_COMMIT" : '\(.\{,8\}\)')"
MSYS2_RUNTIME_COMMIT_HEX="0x${MSYS2_RUNTIME_COMMIT_SHORT}ul"
;;
esac
AC_SUBST(MSYS2_RUNTIME_COMMIT)
AC_SUBST(MSYS2_RUNTIME_COMMIT_SHORT)
AC_SUBST(MSYS2_RUNTIME_COMMIT_HEX)

AC_ARG_ENABLE(debugging,
Expand Down
6 changes: 4 additions & 2 deletions winsup/cygwin/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@ if TARGET_X86_64
COMMON_CFLAGS+=-mcmodel=small
endif

VERSION_CFLAGS = -DMSYS2_RUNTIME_COMMIT_HEX="@MSYS2_RUNTIME_COMMIT_HEX@"
VERSION_CFLAGS = -DMSYS2_RUNTIME_COMMIT="\"@MSYS2_RUNTIME_COMMIT@\""
VERSION_CFLAGS += -DMSYS2_RUNTIME_COMMIT_SHORT="\"@MSYS2_RUNTIME_COMMIT_SHORT@\""
VERSION_CFLAGS += -DMSYS2_RUNTIME_COMMIT_HEX="@MSYS2_RUNTIME_COMMIT_HEX@"
COMMON_CFLAGS += $(VERSION_CFLAGS)

AM_CFLAGS=$(cflags_common) $(COMMON_CFLAGS)
Expand Down Expand Up @@ -408,7 +410,7 @@ src_files := $(foreach dir,$(dirs),$(find_src_files))
version.cc: mkvers.sh include/cygwin/version.h winver.rc $(src_files)
@echo "Making version.cc and winver.o";\
export CC="$(CC)";\
/bin/sh $(word 1,$^) $(word 2,$^) $(word 3,$^) $(WINDRES) $(CFLAGS)
/bin/sh $(word 1,$^) $(word 2,$^) $(word 3,$^) $(WINDRES) $(CFLAGS) $(VERSION_CFLAGS)

winver.o: version.cc

Expand Down
8 changes: 8 additions & 0 deletions winsup/cygwin/mkvers.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ incfile="$1"; shift
rcfile="$1"; shift
windres="$1"; shift
iflags=
msys2_runtime_commit=
# Find header file locations
while [ -n "$*" ]; do
case "$1" in
Expand All @@ -26,6 +27,9 @@ while [ -n "$*" ]; do
shift
iflags="$iflags -I$1"
;;
-DMSYS2_RUNTIME_COMMIT=*)
msys2_runtime_commit="${1#*=}"
;;
esac
shift
done
Expand Down Expand Up @@ -185,6 +189,10 @@ then
cvs_tag="$(echo $wv_cvs_tag | sed -e 's/-branch.*//')"
cygwin_ver="$cygwin_ver-$cvs_tag"
fi
if [ -n "$msys2_runtime_commit" ]
then
cygwin_ver="$cygwin_ver-$msys2_runtime_commit"
fi

echo "Version $cygwin_ver"
set -$- $builddate
Expand Down
3 changes: 2 additions & 1 deletion winsup/cygwin/uname.cc
Original file line number Diff line number Diff line change
Expand Up @@ -64,10 +64,11 @@ uname_x (struct utsname *name)
cygwin_gethostname (buf, sizeof buf - 1);
strncat (name->nodename, buf, sizeof (name->nodename) - 1);
/* release */
__small_sprintf (name->release, "%d.%d.%d-%d.",
__small_sprintf (name->release, "%d.%d.%d-%s-%d.",
cygwin_version.dll_major / 1000,
cygwin_version.dll_major % 1000,
cygwin_version.dll_minor,
MSYS2_RUNTIME_COMMIT_SHORT,
cygwin_version.api_minor);
/* version */
stpcpy (name->version, cygwin_version.dll_build_date);
Expand Down

0 comments on commit 88ca9fd

Please sign in to comment.