Skip to content

Commit

Permalink
Add support for optional REPO_ROOT environment var in vgopath ena…
Browse files Browse the repository at this point in the history
…bled hack scripts (gardener#8935)

* Add support for optional SCRIPT_ROOT environment variable

This commit introduces the ability to use an optional environment variable, SCRIPT_ROOT,
in the vgopath enabled generation scripts script. When SCRIPT_ROOT is set, the script will
use this directory instead of the default $SCRIPT_DIR/.. for setting up the virtual go environment.
This enhancement provides flexibility for different runtime environments where the script's working
directory might need to be dynamically specified.

* Factor out vgopath setup into sourcable part

* Update hack/vgopath-setup.sh

Co-authored-by: Martin Weindel <martin.weindel@sap.com>

---------

Co-authored-by: Martin Weindel <martin.weindel@sap.com>
  • Loading branch information
afritzler and MartinWeindel authored Dec 11, 2023
1 parent c24a12d commit cdad185
Show file tree
Hide file tree
Showing 5 changed files with 41 additions and 67 deletions.
19 changes: 2 additions & 17 deletions hack/check-imports.sh
Original file line number Diff line number Diff line change
Expand Up @@ -31,23 +31,8 @@ echo "> Check Imports"

this_module=$(go list -m)

SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
VGOPATH="$VGOPATH"

# Ensure that if GOPATH is set, the GOPATH/{bin,pkg} directory exists. This seems to be not always
# the case in certain environments like Prow. As we will create a symlink against the bin folder we
# need to make sure that the bin directory is present in the GOPATH.
if [ -n "$GOPATH" ] && [ ! -d "$GOPATH/bin" ]; then mkdir -p "$GOPATH/bin"; fi
if [ -n "$GOPATH" ] && [ ! -d "$GOPATH/pkg" ]; then mkdir -p "$GOPATH/pkg"; fi

VIRTUAL_GOPATH="$(mktemp -d)"
trap 'rm -rf "$VIRTUAL_GOPATH"' EXIT

# Setup virtual GOPATH so the codegen tools work as expected.
(cd "$SCRIPT_DIR/.."; go mod download && "$VGOPATH" -o "$VIRTUAL_GOPATH")

export GOROOT="${GOROOT:-"$(go env GOROOT)"}"
export GOPATH="$VIRTUAL_GOPATH"
# setup virtual GOPATH
source $(dirname $0)/vgopath-setup.sh

# We need to explicitly pass GO111MODULE=off to import-boss as it is significantly slower otherwise,
# see https://github.com/kubernetes/code-generator/issues/100.
Expand Down
18 changes: 2 additions & 16 deletions hack/generate-crds.sh
Original file line number Diff line number Diff line change
Expand Up @@ -42,23 +42,9 @@ add_keep_object_annotation=false
k8s_io_api_approval_reason="unapproved, temporarily squatting"
crd_options=""

SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
VGOPATH="$VGOPATH"
# setup virtual GOPATH
source $(dirname $0)/vgopath-setup.sh

# Ensure that if GOPATH is set, the GOPATH/{bin,pkg} directory exists. This seems to be not always
# the case in certain environments like Prow. As we will create a symlink against the bin folder we
# need to make sure that the bin directory is present in the GOPATH.
if [ -n "$GOPATH" ] && [ ! -d "$GOPATH/bin" ]; then mkdir -p "$GOPATH/bin"; fi
if [ -n "$GOPATH" ] && [ ! -d "$GOPATH/pkg" ]; then mkdir -p "$GOPATH/pkg"; fi

VIRTUAL_GOPATH="$(mktemp -d)"
trap 'rm -rf "$VIRTUAL_GOPATH"' EXIT

# Setup virtual GOPATH so the codegen tools work as expected.
(cd "$SCRIPT_DIR/.."; go mod download && "$VGOPATH" -o "$VIRTUAL_GOPATH")

export GOROOT="${GOROOT:-"$(go env GOROOT)"}"
export GOPATH="$VIRTUAL_GOPATH"
export GO111MODULE=off

get_group_package () {
Expand Down
19 changes: 2 additions & 17 deletions hack/update-codegen.sh
Original file line number Diff line number Diff line change
Expand Up @@ -42,23 +42,8 @@ AVAILABLE_CODEGEN_OPTIONS=(
"nodeagent_groups"
)

SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
VGOPATH="$VGOPATH"

# Ensure that if GOPATH is set, the GOPATH/{bin,pkg} directory exists. This seems to be not always
# the case in certain environments like Prow. As we will create a symlink against the bin folder we
# need to make sure that the bin directory is present in the GOPATH.
if [ -n "$GOPATH" ] && [ ! -d "$GOPATH/bin" ]; then mkdir -p "$GOPATH/bin"; fi
if [ -n "$GOPATH" ] && [ ! -d "$GOPATH/pkg" ]; then mkdir -p "$GOPATH/pkg"; fi

VIRTUAL_GOPATH="$(mktemp -d)"
trap 'rm -rf "$VIRTUAL_GOPATH"' EXIT

# Setup virtual GOPATH so the codegen tools work as expected.
(cd "$SCRIPT_DIR/.."; go mod download && "$VGOPATH" -o "$VIRTUAL_GOPATH")

export GOROOT="${GOROOT:-"$(go env GOROOT)"}"
export GOPATH="$VIRTUAL_GOPATH"
# setup virtual GOPATH
source $(dirname $0)/vgopath-setup.sh

# We need to explicitly pass GO111MODULE=off to k8s.io/code-generator as it is significantly slower otherwise,
# see https://github.com/kubernetes/code-generator/issues/100.
Expand Down
19 changes: 2 additions & 17 deletions hack/update-protobuf.sh
Original file line number Diff line number Diff line change
Expand Up @@ -18,23 +18,8 @@ set -o errexit
set -o nounset
set -o pipefail

SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
VGOPATH="$VGOPATH"

# Ensure that if GOPATH is set, the GOPATH/{bin,pkg} directory exists. This seems to be not always
# the case in certain environments like Prow. As we will create a symlink against the bin folder we
# need to make sure that the bin directory is present in the GOPATH.
if [ -n "$GOPATH" ] && [ ! -d "$GOPATH/bin" ]; then mkdir -p "$GOPATH/bin"; fi
if [ -n "$GOPATH" ] && [ ! -d "$GOPATH/pkg" ]; then mkdir -p "$GOPATH/pkg"; fi

VIRTUAL_GOPATH="$(mktemp -d)"
trap 'rm -rf "$VIRTUAL_GOPATH"' EXIT

# Setup virtual GOPATH so the codegen tools work as expected.
(cd "$SCRIPT_DIR/.."; go mod download && "$VGOPATH" -o "$VIRTUAL_GOPATH")

export GOROOT="${GOROOT:-"$(go env GOROOT)"}"
export GOPATH="$VIRTUAL_GOPATH"
# setup virtual GOPATH
source $(dirname $0)/vgopath-setup.sh

# We need to explicitly pass GO111MODULE=off to k8s.io/code-generator as it is significantly slower otherwise,
# see https://github.com/kubernetes/code-generator/issues/100.
Expand Down
33 changes: 33 additions & 0 deletions hack/vgopath-setup.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Copyright 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"

# Ensure that if GOPATH is set, the GOPATH/{bin,pkg} directory exists. This seems to be not always
# the case in certain environments like Prow. As we will create a symlink against the bin folder we
# need to make sure that the bin directory is present in the GOPATH.
if [ -n "$GOPATH" ] && [ ! -d "$GOPATH/bin" ]; then mkdir -p "$GOPATH/bin"; fi
if [ -n "$GOPATH" ] && [ ! -d "$GOPATH/pkg" ]; then mkdir -p "$GOPATH/pkg"; fi

VIRTUAL_GOPATH="$(mktemp -d)"
trap 'rm -rf "$VIRTUAL_GOPATH"' EXIT

# Use REPO_ROOT if set, otherwise default to $SCRIPT_DIR/..
TARGET_DIR="${REPO_ROOT:-$SCRIPT_DIR/..}"

# Setup virtual GOPATH
(cd "$TARGET_DIR"; go mod download && "$VGOPATH" -o "$VIRTUAL_GOPATH")

export GOROOT="${GOROOT:-"$(go env GOROOT)"}"
export GOPATH="$VIRTUAL_GOPATH"

0 comments on commit cdad185

Please sign in to comment.