Skip to content

Commit

Permalink
Address review comments
Browse files Browse the repository at this point in the history
- Fix debian Go versions
- In scons, get minimum Go version from go.mod
- Add reminder comment in go.mod
- Fix changelog version in rpm specfile
- Use longsleep/go-backports repo for Go versions in Dockerfile

Required-githooks: true

Signed-off-by: Kris Jacque <kris.jacque@intel.com>
  • Loading branch information
kjacque committed Sep 24, 2024
1 parent a237458 commit f17c1d5
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 7 deletions.
4 changes: 2 additions & 2 deletions debian/control
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ Build-Depends: debhelper (>= 10),
dpdk-dev (>= 21.11.2),
libisal-crypto-dev,
libcunit1-dev,
golang-go (>= 1.21),
golang-go (>= 2:1.21),
libboost-dev,
libspdk-dev (>= 22.01.2),
libipmctl-dev,
Expand Down Expand Up @@ -117,7 +117,7 @@ Depends: python (>=3.8), python3, python-yaml, python3-yaml,
${shlibs:Depends}, ${misc:Depends},
daos-client (= ${binary:Version}),
daos-admin (= ${binary:Version}),
golang-go (>=1.21),
golang-go (>= 2:1.21),
libcapstone-dev
Description: The Distributed Asynchronous Object Storage (DAOS) is an open-source
software-defined object store designed from the ground up for
Expand Down
25 changes: 24 additions & 1 deletion site_scons/site_tools/go_builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import re
import subprocess # nosec B404

from SCons.Script import Configure, Exit, File, GetOption, Glob, Scanner
from SCons.Script import Configure, Dir, Exit, File, GetOption, Glob, Scanner

GO_COMPILER = 'go'
include_re = re.compile(r'\#include [<"](\S+[>"])', re.M)
Expand Down Expand Up @@ -48,6 +48,17 @@ def _scan_go_file(node, env, _path):
return includes


def get_min_go_version(env):

Check warning on line 51 in site_scons/site_tools/go_builder.py

View workflow job for this annotation

GitHub Actions / Pylint check

unused-argument, Unused argument 'env'
"""Get go minimum version from go.mod"""
go_mod_path = os.path.join(Dir('#').abspath, "src", "control", "go.mod")
with open(go_mod_path, 'r') as f:
for line in f:
if line.startswith('go '): # e.g. "go 1.21"
parts = line.split()
return parts[1] + ".0" # e.g. "1.21.0"
return None


def get_go_version(output):
"""Capture only the version after 'go'"""
ver_re = re.compile(r'go([0-9\.]+)')
Expand Down Expand Up @@ -80,6 +91,13 @@ def _check_go_version(context):
context.Result(0)
return 0

context.Display(f'Getting minimum {env.d_go_bin} version... ')
min_go_version = get_min_go_version(env)
if min_go_version is None:
context.Result('failed to extract minimum version from go.mod')
return 0
context.Display(min_go_version + '\n')

context.Display(f'Checking {env.d_go_bin} version... ')
cmd_rc = subprocess.run([env.d_go_bin, 'version'], check=True, stdout=subprocess.PIPE)
out = cmd_rc.stdout.decode('utf-8').strip()
Expand All @@ -92,6 +110,11 @@ def _check_go_version(context):
if go_version is None:
context.Result(f'failed to get version from "{out}"')
return 0
if len([x for x, y in zip(go_version.split('.'), min_go_version.split('.'))
if int(x) < int(y)]) > 0:
context.Result(f'{out} is too old (min supported: {min_go_version}) ')
return 0

context.Result(go_version)
return 1

Expand Down
7 changes: 4 additions & 3 deletions src/control/go.mod
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
module github.com/daos-stack/daos/src/control

// NB: When updating minimum Go build version, don't forget to update rpm and debian packaging specs.
// NB: When updating minimum Go build version, don't forget to update:
// - rpm packaging version checks: utils/rpms/daos.spec
// - debian packaging version checks: debian/control
// Scons uses this file to extract the minimum version.
go 1.21

toolchain go1.22.3

require (
github.com/Jille/raft-grpc-transport v1.2.0
github.com/desertbit/grumble v1.1.3
Expand Down
2 changes: 1 addition & 1 deletion utils/rpms/daos.spec
Original file line number Diff line number Diff line change
Expand Up @@ -592,7 +592,7 @@ getent passwd daos_agent >/dev/null || useradd -s /sbin/nologin -r -g daos_agent
# No files in a shim package

%changelog
* Mon Sep 23 2024 Kris Jacque <kris.jacque@intel.com> 2.3.103-6
* Mon Sep 23 2024 Kris Jacque <kris.jacque@intel.com> 2.7.100-6
- Bump min supported go version to 1.21

* Thu Aug 15 2024 Michael MacDonald <mjmac@google.com> 2.7.100-5
Expand Down
4 changes: 4 additions & 0 deletions utils/scripts/install-ubuntu.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ set -e

arch=$(uname -i)

# DAOS requires newer golang version than the one available in core ubuntu repo
add-apt-repository ppa:longsleep/golang-backports
apt update

apt-get install \
autoconf \
build-essential \
Expand Down

0 comments on commit f17c1d5

Please sign in to comment.