mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2025-02-12 18:31:10 +03:00
![Matthew Ahrens](/assets/img/avatar_default.png)
The existing mechanisms for determining what code is running in the kernel do not always correctly report the git hash. The versions reported there do not reflect changes made since `configure` was run (i.e. incremental builds do not update the version) and they are misleading if git tags are not set up properly. This applies to `modinfo zfs`, `dmesg`, and `/sys/module/zfs/version`. There are complicated requirements on how the existing version is generated. Therefore we are leaving that alone, and adding a new mechanism to record and retrieve the git hash: `cat /proc/sys/kernel/spl/gitrev` The gitrev is re-generated at compile time, when running `make` (including for incremental builds). The value is the output of `git describe` (or "unknown" if not in a git repo or there are uncommitted changes). We're also removing /proc/sys/kernel/spl/version, which was never very useful. Reviewed by: Pavel Zakharov <pavel.zakharov@delphix.com> Reviewed by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed by: Tim Chase <tim@chase2k.com> Signed-off-by: Matthew Ahrens <mahrens@delphix.com> Closes #7931 Closes #7965
55 lines
1.3 KiB
Bash
Executable File
55 lines
1.3 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
#
|
|
# CDDL HEADER START
|
|
#
|
|
# This file and its contents are supplied under the terms of the
|
|
# Common Development and Distribution License ("CDDL"), version 1.0.
|
|
# You may only use this file in accordance with the terms of version
|
|
# 1.0 of the CDDL.
|
|
#
|
|
# A full copy of the text of the CDDL should have accompanied this
|
|
# source. A copy of the CDDL is also available via the Internet at
|
|
# http://www.illumos.org/license/CDDL.
|
|
#
|
|
# CDDL HEADER END
|
|
#
|
|
|
|
#
|
|
# Copyright (c) 2018 by Delphix. All rights reserved.
|
|
#
|
|
|
|
#
|
|
# Generate zfs_gitrev.h. Note that we need to do this for every
|
|
# invocation of `make`, including for incremental builds. Therefore we
|
|
# can't use a zfs_gitrev.h.in file which would be processed only when
|
|
# `configure` is run.
|
|
#
|
|
|
|
BASE_DIR=$(dirname "$0")
|
|
|
|
file=${BASE_DIR}/../include/zfs_gitrev.h
|
|
|
|
#
|
|
# Set default file contents in case we bail.
|
|
#
|
|
rm -f "$file"
|
|
# shellcheck disable=SC2039
|
|
/bin/echo -e "#define\tZFS_META_GITREV \"unknown\"" >>"$file"
|
|
|
|
#
|
|
# Check if git is installed and we are in a git repo.
|
|
#
|
|
git rev-parse --git-dir > /dev/null 2>&1 || exit
|
|
|
|
#
|
|
# Check if there are uncommitted changes
|
|
#
|
|
git diff-index --quiet HEAD || exit
|
|
|
|
rev=$(git describe 2>/dev/null) || exit
|
|
|
|
rm -f "$file"
|
|
# shellcheck disable=SC2039
|
|
/bin/echo -e "#define\tZFS_META_GITREV \"${rev}\"" >>"$file"
|