In image building, when building on arm based systems,
the s5cmd tool was added with the wrong architecture
(amd64 instead of arm64).
This change fixes the architecture of the s5cmd to match the
architecture of the image built.
Fixes: #15262
Signed-off-by: Michael Adam <obnox@samba.org>
(cherry picked from commit e34c41ce2c)
112 lines
4.2 KiB
Makefile
Executable File
112 lines
4.2 KiB
Makefile
Executable File
# Copyright 2016 The Rook Authors. All rights reserved.
|
|
#
|
|
# 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.
|
|
|
|
include ../image.mk
|
|
|
|
# ====================================================================================
|
|
# Image Build Options
|
|
|
|
ifeq ($(GOARCH),amd64)
|
|
CEPH_VERSION ?= v18.2.4-20240723
|
|
else
|
|
CEPH_VERSION ?= v18.2.4-20240724
|
|
endif
|
|
REGISTRY_NAME = quay.io
|
|
BASEIMAGE = $(REGISTRY_NAME)/ceph/ceph-$(GOARCH):$(CEPH_VERSION)
|
|
CEPH_IMAGE = $(BUILD_REGISTRY)/ceph-$(GOARCH)
|
|
OPERATOR_SDK_VERSION = v1.25.0
|
|
# TODO: update to yq v4 - v3 end of life in Aug 2021 ; v4 removes the 'yq delete' cmd and changes syntax
|
|
YQv3_VERSION = 3.4.1
|
|
GOHOST := GOOS=$(GOHOSTOS) GOARCH=$(GOHOSTARCH) go
|
|
MANIFESTS_DIR=../../deploy/examples
|
|
|
|
ifeq ($(BUILD_CONTEXT_DIR),)
|
|
BUILD_CONTEXT_DIR := $(shell mktemp -d)
|
|
endif
|
|
|
|
|
|
ifeq ($(GOARCH),amd64)
|
|
S5CMD_ARCH = Linux-64bit
|
|
else
|
|
S5CMD_ARCH = Linux-arm64
|
|
endif
|
|
|
|
# s5cmd's version
|
|
S5CMD_VERSION = 2.3.0
|
|
|
|
# Note: as of version 1.3 of operator-sdk, the url format changed to:
|
|
# ${OPERATOR_SDK_DL_URL}/operator-sdk_${OS}_${ARCH}
|
|
# (see: https://sdk.operatorframework.io/docs/installation/)
|
|
OPERATOR_SDK := $(TOOLS_HOST_DIR)/operator-sdk-$(OPERATOR_SDK_VERSION)
|
|
YQv3 := $(TOOLS_HOST_DIR)/yq-$(YQv3_VERSION)
|
|
export OPERATOR_SDK YQv3
|
|
|
|
# ====================================================================================
|
|
# Build Rook
|
|
|
|
do.build:
|
|
@echo === container build $(CEPH_IMAGE)
|
|
@mkdir -p $(BUILD_CONTEXT_DIR)
|
|
@cp Dockerfile $(BUILD_CONTEXT_DIR)
|
|
@cp toolbox.sh $(BUILD_CONTEXT_DIR)
|
|
@cp set-ceph-debug-level $(BUILD_CONTEXT_DIR)
|
|
@cp $(OUTPUT_DIR)/bin/linux_$(GOARCH)/rook $(BUILD_CONTEXT_DIR)
|
|
@cp -r $(MANIFESTS_DIR)/monitoring $(BUILD_CONTEXT_DIR)/ceph-monitoring
|
|
@mkdir -p $(BUILD_CONTEXT_DIR)/rook-external/test-data
|
|
@cp $(MANIFESTS_DIR)/create-external-cluster-resources.* $(BUILD_CONTEXT_DIR)/rook-external/
|
|
@cd $(BUILD_CONTEXT_DIR) && $(SED_IN_PLACE) 's|BASEIMAGE|$(BASEIMAGE)|g' Dockerfile
|
|
@if [ -z "$(BUILD_CONTAINER_IMAGE)" ]; then\
|
|
$(DOCKERCMD) build $(BUILD_ARGS) \
|
|
--build-arg S5CMD_VERSION=$(S5CMD_VERSION) \
|
|
--build-arg S5CMD_ARCH=$(S5CMD_ARCH) \
|
|
-t $(CEPH_IMAGE) \
|
|
$(BUILD_CONTEXT_DIR);\
|
|
fi
|
|
@if [ -z "$(SAVE_BUILD_CONTEXT_DIR)" ]; then\
|
|
rm -fr $(BUILD_CONTEXT_DIR);\
|
|
fi
|
|
|
|
# call this before building multiple arches in parallel to prevent parallel build processes from
|
|
# conflicting
|
|
prerequisites: $(OPERATOR_SDK) $(YQv3)
|
|
|
|
$(YQv3):
|
|
@echo === installing yq $(YQv3_VERSION) $(REAL_HOST_PLATFORM)
|
|
@mkdir -p $(TOOLS_HOST_DIR)
|
|
@curl -JL https://github.com/mikefarah/yq/releases/download/$(YQv3_VERSION)/yq_$(REAL_HOST_PLATFORM) -o $(YQv3)
|
|
@chmod +x $(YQv3)
|
|
|
|
$(OPERATOR_SDK):
|
|
@echo === installing operator-sdk $(REAL_HOST_PLATFORM)
|
|
@mkdir -p $(TOOLS_HOST_DIR)
|
|
@curl -JL -o $(TOOLS_HOST_DIR)/operator-sdk-$(OPERATOR_SDK_VERSION) \
|
|
https://github.com/operator-framework/operator-sdk/releases/download/$(OPERATOR_SDK_VERSION)/operator-sdk_$(REAL_HOST_PLATFORM)
|
|
@chmod +x $(OPERATOR_SDK)
|
|
@$(OPERATOR_SDK) version
|
|
|
|
# reading from a file and outputting to the same file can have undefined results, so use this intermediate
|
|
IMAGE_TMP="/tmp/rook-ceph-image-list"
|
|
list-image: ## Create a list of images for offline installation
|
|
@echo "producing list of images for offline installation"
|
|
rm -f $(IMAGE_TMP)
|
|
awk '/image:/ {print $2}' $(MANIFESTS_DIR)/operator.yaml $(MANIFESTS_DIR)/cluster.yaml | \
|
|
cut -d: -f2- | tee $(IMAGE_TMP)
|
|
awk '/quay.io/ || /registry.k8s.io/ {print $3}' ../../pkg/operator/ceph/csi/spec.go | \
|
|
cut -d= -f2- | tr -d '"' | tee -a $(IMAGE_TMP)
|
|
awk '/quay.io/ || /gcr.io/ {print $4}' ../../pkg/operator/ceph/object/cosi/spec.go | \
|
|
cut -d= -f2- | tr -d '"' | tee -a $(IMAGE_TMP)
|
|
rm -f $(MANIFESTS_DIR)/images.txt
|
|
cat $(IMAGE_TMP) | sort -h | uniq | tee $(MANIFESTS_DIR)/images.txt
|
|
rm -f $(IMAGE_TMP)
|