@@ -88,7 +88,7 @@ SKIPPED_K8S_VERSIONS?=
88
88
BINARIES_ARE_RELEASE_BRANCHED? =true
89
89
IS_RELEASE_BRANCH_BUILD =$(filter true,$(HAS_RELEASE_BRANCHES ) )
90
90
IS_UNRELEASE_BRANCH_TARGET =$(and $(filter false,$(BINARIES_ARE_RELEASE_BRANCHED ) ) ,$(filter binaries attribution checksums,$(MAKECMDGOALS ) ) )
91
- TARGETS_ALLOWED_WITH_NO_RELEASE_BRANCH? =build release clean help
91
+ TARGETS_ALLOWED_WITH_NO_RELEASE_BRANCH? =build release clean clean-go-cache help
92
92
MAKECMDGOALS_WITHOUT_VAR_VALUE =$(foreach t,$(MAKECMDGOALS ) ,$(if $(findstring var-value-,$(t ) ) ,,$(t ) ) )
93
93
ifneq ($(and $(IS_RELEASE_BRANCH_BUILD ) ,$(or $(RELEASE_BRANCH ) ,$(IS_UNRELEASE_BRANCH_TARGET ) ) ) ,)
94
94
RELEASE_BRANCH_SUFFIX=$(if $(filter true,$(BINARIES_ARE_RELEASE_BRANCHED)),/$(RELEASE_BRANCH),)
@@ -372,7 +372,7 @@ IS_ON_BUILDER_BASE?=$(shell if [ -f /buildkit.sh ]; then echo true; fi;)
372
372
BUILDER_PLATFORM? =$(shell echo $$(go env GOHOSTOS ) /$$(go env GOHOSTARCH ) )
373
373
needs-cgo-builder =$(and $(if $(filter true,$(CGO_CREATE_BINARIES ) ) ,true,) ,$(if $(filter-out $(1 ) ,$(BUILDER_PLATFORM ) ) ,true,) )
374
374
USE_DOCKER_FOR_CGO_BUILD? =false
375
- DOCKER_USE_ID_FOR_LINUX =$(shell if [ "$$(uname -s ) " = "Linux" ]; then echo "-u $$(id -u $${USER} ) :$$(id -g $${USER} ) "; fi)
375
+ DOCKER_USE_ID_FOR_LINUX =$(shell if [ "$$(uname -s ) " = "Linux" ] && [ -n "$${USER:-}" ] ; then echo "-u $$(id -u $${USER} ) :$$(id -g $${USER} ) "; fi)
376
376
GO_MOD_CACHE =$(shell source $(BUILD_LIB ) /common.sh && build::common::use_go_version $(GOLANG_VERSION ) > /dev/null 2>&1 && go env GOMODCACHE)
377
377
GO_BUILD_CACHE =$(shell source $(BUILD_LIB ) /common.sh && build::common::use_go_version $(GOLANG_VERSION ) > /dev/null 2>&1 && go env GOCACHE)
378
378
CGO_TARGET? =
@@ -425,6 +425,7 @@ KUSTOMIZE_TARGET=$(OUTPUT_DIR)/kustomize
425
425
GIT_DEPS_DIR? =$(OUTPUT_DIR ) /gitdependencies
426
426
SPECIAL_TARGET_SECONDARY =$(strip $(PROJECT_DEPENDENCIES_TARGETS ) $(GO_MOD_DOWNLOAD_TARGETS ) )
427
427
SKIP_CHECKSUM_VALIDATION? =false
428
+ IN_DOCKER_TARGETS =all-attributions all-attributions-checksums all-checksums attribution attribution-checksums binaries checksums clean clean-go-cache
428
429
# ###################################################
429
430
430
431
# ################### TARGETS FOR OVERRIDING ########
@@ -433,15 +434,6 @@ RELEASE_TARGETS?=validate-checksums $(if $(IMAGE_NAMES),images,) $(if $(filter t
433
434
# ###################################################
434
435
435
436
define BUILDCTL
436
- if [[ "$(USE_DOCKER_FOR_CGO_BUILD ) " = "true" ]]; then \
437
- source $(BUILD_LIB ) /common.sh && build::docker::retry_pull $(BUILDER_IMAGE ) ; \
438
- docker run --rm -w /eks-anywhere-build-tooling/projects/$(COMPONENT ) $(DOCKER_USE_ID_FOR_LINUX ) \
439
- --mount type=bind,source=$(BASE_DIRECTORY ) ,target=/eks-anywhere-build-tooling \
440
- --mount type=bind,source=$(GO_MOD_CACHE ) ,target=/mod-cache \
441
- -e GOPROXY=$(GOPROXY ) -e GOMODCACHE=/mod-cache \
442
- --platform $(IMAGE_PLATFORMS ) \
443
- --init --entrypoint make $(BUILDER_IMAGE ) $(CGO_TARGET ) BINARY_PLATFORMS=$(IMAGE_PLATFORMS ) ; \
444
- else \
445
437
$(BUILD_LIB ) /buildkit.sh \
446
438
build \
447
439
--frontend dockerfile.v0 \
@@ -456,9 +448,30 @@ define BUILDCTL
456
448
$(foreach IMPORT_CACHE,$(IMAGE_IMPORT_CACHE ) ,--import-cache $(IMPORT_CACHE ) ) \
457
449
$(if $(IMAGE_METADATA_FILE ) ,--metadata-file $(IMAGE_METADATA_FILE ) ,) \
458
450
--opt target=$(IMAGE_TARGET ) \
459
- --output type=$(IMAGE_OUTPUT_TYPE ) ,oci-mediatypes=true,\"name=$(ALL_IMAGE_TAGS ) \",$(IMAGE_OUTPUT ) ; \
460
- fi
461
- endef
451
+ --output type=$(IMAGE_OUTPUT_TYPE ) ,oci-mediatypes=true,\"name=$(ALL_IMAGE_TAGS ) \",$(IMAGE_OUTPUT )
452
+ endef
453
+
454
+ define CGO_DOCKER
455
+ source $(BUILD_LIB ) /common.sh && build::docker::retry_pull --platform $(IMAGE_PLATFORMS ) $(BUILDER_IMAGE ) ; \
456
+ INTERACTIVE="$(shell if [ -t 0 ]; then echo '-it'; fi) "; \
457
+ docker run --rm $$INTERACTIVE -w /eks-distro/projects/$(COMPONENT ) $(DOCKER_USE_ID_FOR_LINUX ) \
458
+ --mount type=bind,source=$(BASE_DIRECTORY ) ,target=/eks-distro \
459
+ --mount type=bind,source=$(GO_MOD_CACHE ) ,target=/mod-cache \
460
+ -e GOPROXY=$(GOPROXY ) -e GOMODCACHE=/mod-cache \
461
+ --platform $(IMAGE_PLATFORMS ) \
462
+ --init $(BUILDER_IMAGE ) make $(CGO_TARGET ) BINARY_PLATFORMS=$(IMAGE_PLATFORMS )
463
+ endef
464
+
465
+ define SIMPLE_CREATE_BINARIES_SHELL
466
+ $(BASE_DIRECTORY ) /build/lib/simple_create_binaries.sh $(MAKE_ROOT ) $(MAKE_ROOT ) /$(OUTPUT_PATH ) $(REPO ) $(GOLANG_VERSION ) $(PLATFORM ) "$(SOURCE_PATTERN ) " \
467
+ "$(GOBUILD_COMMAND ) " "$(EXTRA_GOBUILD_FLAGS ) " "$(GO_LDFLAGS ) " $(CGO_ENABLED ) "$(CGO_LDFLAGS ) " "$(GO_MOD_PATH ) " "$(BINARY_TARGET_FILES_BUILD_TOGETHER ) "
468
+ endef
469
+
470
+ # $1 - make target
471
+ # $2 - target directory
472
+ define CGO_CREATE_BINARIES_SHELL
473
+ $(MAKE ) binary-builder/cgo/$(PLATFORM:linux/%=% ) IMAGE_OUTPUT=dest=$(OUTPUT_BIN_DIR ) /$(2 ) CGO_TARGET=$(1 ) IMAGE_BUILD_ARGS="GOPROXY COMPONENT CGO_TARGET"
474
+ endef
462
475
463
476
define WRITE_LOCAL_IMAGE_TAG
464
477
echo $(IMAGE_TAG ) > $(IMAGE_OUTPUT_DIR ) /$(IMAGE_OUTPUT_NAME ) .docker_tag
@@ -528,12 +541,7 @@ $(OUTPUT_BIN_DIR)/%: SOURCE_PATTERN=$(if $(filter $(BINARY_TARGET),$(BINARY_TARG
528
541
$(OUTPUT_BIN_DIR ) /% : OUTPUT_PATH=$(if $(and $(if $(filter false,$(call IS_ONE_WORD,$(BINARY_TARGET_FILES_BUILD_TOGETHER ) ) ) ,$(filter $(BINARY_TARGET ) ,$(BINARY_TARGET_FILES_BUILD_TOGETHER ) ) ) ) ,$(@D ) /,$@ )
529
542
$(OUTPUT_BIN_DIR ) /% : GO_MOD_PATH=$($(call GO_MOD_TARGET_FOR_BINARY_VAR_NAME,$(BINARY_TARGET ) ) )
530
543
$(OUTPUT_BIN_DIR ) /% : $$(call GO_MOD_DOWNLOAD_TARGET_FROM_GO_MOD_PATH,$$(GO_MOD_PATH ) )
531
- if [ " $( call needs-cgo-builder,$( PLATFORM) ) " == " true" ]; then \
532
- $(MAKE ) binary-builder/cgo/$(PLATFORM:linux/%=% ) IMAGE_OUTPUT=dest=$(OUTPUT_BIN_DIR ) /$(*D ) CGO_TARGET=$@ IMAGE_BUILD_ARGS=" GOPROXY COMPONENT CGO_TARGET" ; \
533
- else \
534
- $(BASE_DIRECTORY ) /build/lib/simple_create_binaries.sh $(MAKE_ROOT ) $(MAKE_ROOT ) /$(OUTPUT_PATH ) $(REPO ) $(GOLANG_VERSION ) $(PLATFORM ) " $( SOURCE_PATTERN) " \
535
- " $( GOBUILD_COMMAND) " " $( EXTRA_GOBUILD_FLAGS) " " $( GO_LDFLAGS) " $(CGO_ENABLED ) " $( CGO_LDFLAGS) " " $( GO_MOD_PATH) " " $( BINARY_TARGET_FILES_BUILD_TOGETHER) " ; \
536
- fi
544
+ $(if $(filter true,$(call needs-cgo-builder,$(PLATFORM ) ) ) ,$(call CGO_CREATE_BINARIES_SHELL,$@ ,$(*D ) ) ,$(call SIMPLE_CREATE_BINARIES_SHELL) )
537
545
endif
538
546
539
547
.PHONY : binaries
@@ -591,6 +599,11 @@ attribution: $(and $(filter true,$(HAS_LICENSES)),$(ATTRIBUTION_TARGETS))
591
599
attribution-pr : attribution
592
600
$(BASE_DIRECTORY ) /build/update-attribution-files/create_pr.sh
593
601
602
+ .PHONY : all-attributions
603
+ all-attributions :
604
+ $(BASE_DIRECTORY ) /build/update-attribution-files/make_attribution.sh projects/$(COMPONENT ) attribution
605
+
606
+
594
607
# ### Tarball Targets
595
608
596
609
.PHONY : tarballs
@@ -629,6 +642,18 @@ ifneq ($(and $(strip $(BINARY_TARGETS)), $(filter false, $(SKIP_CHECKSUM_VALIDAT
629
642
$(BASE_DIRECTORY)/build/lib/validate_checksums.sh $(MAKE_ROOT) $(PROJECT_ROOT) $(MAKE_ROOT)/$(OUTPUT_BIN_DIR) $(FAKE_ARM_BINARIES_FOR_VALIDATION)
630
643
endif
631
644
645
+ .PHONY : attribution-checksums
646
+ attribution-checksums : attribution checksums
647
+
648
+ .PHONY : all-checksums
649
+ all-checksums :
650
+ $(BASE_DIRECTORY ) /build/update-attribution-files/make_attribution.sh projects/$(COMPONENT ) checksums
651
+
652
+ .PHONY : all-attributions-checksums
653
+ all-attributions-checksums :
654
+ $(BASE_DIRECTORY ) /build/update-attribution-files/make_attribution.sh projects/$(COMPONENT ) " attribution checksums"
655
+
656
+
632
657
# ### Image Helpers
633
658
634
659
ifneq ($(IMAGE_NAMES ) ,)
@@ -691,14 +716,14 @@ endif
691
716
# # CGO Targets
692
717
.PHONY : % /cgo/amd64 % /cgo/arm64 prepare-cgo-folder
693
718
719
+ # .git folder needed so git properly finds the root of the repo
694
720
prepare-cgo-folder :
695
721
@mkdir -p $(CGO_SOURCE ) /eks-distro/
696
722
rsync -rm --exclude=' .git/***' \
697
723
--exclude=' ***/_output/***' --exclude=' projects/$(COMPONENT)/$(REPO)/***' \
698
724
--include=' projects/$(COMPONENT)/***' --include=' */' --exclude=' projects/***' \
699
725
$(BASE_DIRECTORY ) / $(CGO_SOURCE ) /eks-distro/
700
726
@mkdir -p $(OUTPUT_BIN_DIR ) /$(subst /,-,$(IMAGE_PLATFORMS ) )
701
- # Need so git properly finds the root of the repo
702
727
@mkdir -p $(CGO_SOURCE ) /eks-distro/.git/{refs,objects}
703
728
@cp $(BASE_DIRECTORY ) /.git/HEAD $(CGO_SOURCE ) /eks-distro/.git
704
729
@@ -707,16 +732,16 @@ prepare-cgo-folder:
707
732
% /cgo/amd64 % /cgo/arm64 : IMAGE_NAME=binary-builder
708
733
% /cgo/amd64 % /cgo/arm64 : IMAGE_BUILD_ARGS?=GOPROXY COMPONENT
709
734
% /cgo/amd64 % /cgo/arm64 : IMAGE_CONTEXT_DIR?=$(CGO_SOURCE )
710
- % /cgo/amd64 % /cgo/arm64 : BUILDER_IMAGE=$(CURRENT_BUILDER_BASE_IMAGE )
735
+ % /cgo/amd64 % /cgo/arm64 : BUILDER_IMAGE=$(GOLANG_GCC_BUILDER_IMAGE )
711
736
712
737
% /cgo/amd64 : IMAGE_PLATFORMS=linux/amd64
713
738
% /cgo/arm64 : IMAGE_PLATFORMS=linux/arm64
714
739
715
740
% /cgo/amd64 : prepare-cgo-folder
716
- $(BUILDCTL )
741
+ $(if $( filter true, $( USE_DOCKER_FOR_CGO_BUILD ) ) , $( CGO_DOCKER ) , $( BUILDCTL ) )
717
742
718
743
% /cgo/arm64 : prepare-cgo-folder
719
- $(BUILDCTL )
744
+ $(if $( filter true, $( USE_DOCKER_FOR_CGO_BUILD ) ) , $( CGO_DOCKER ) , $( BUILDCTL ) )
720
745
721
746
# As an attempt to see if using docker is more stable for cgo builds in Codebuild
722
747
binary-builder/cgo/% : USE_DOCKER_FOR_CGO_BUILD=$(shell command -v docker &> /dev/null && docker info > /dev/null 2>&1 && echo "true")
@@ -824,7 +849,7 @@ add-generated-help-block:
824
849
$(BUILD_LIB ) /generate_help_body.sh $(MAKE_ROOT ) " $( BINARY_TARGET_FILES) " " $( BINARY_PLATFORMS) " " ${BINARY_TARGETS} " \
825
850
$(REPO ) $(if $(PATCHES_DIR ) ,true,false) " $( LOCAL_IMAGE_TARGETS) " " $( IMAGE_TARGETS) " " $( BUILD_TARGETS) " " $( RELEASE_TARGETS) " \
826
851
" $( HAS_S3_ARTIFACTS) " " $( HAS_LICENSES) " " $( REPO_NO_CLONE) " " $( PROJECT_DEPENDENCIES_TARGETS) " \
827
- " $( HAS_HELM_CHART) "
852
+ " $( HAS_HELM_CHART) " " $( IN_DOCKER_TARGETS ) "
828
853
829
854
# # --------------------------------------
830
855
# # Update Helpers
@@ -835,10 +860,6 @@ add-generated-help-block:
835
860
run-target-in-docker : # Run `MAKE_TARGET` using builder base docker container
836
861
$(BUILD_LIB ) /run_target_docker.sh $(COMPONENT ) $(MAKE_TARGET ) $(IMAGE_REPO ) " $( RELEASE_BRANCH) " $(ARTIFACTS_BUCKET )
837
862
838
- .PHONY : update-attribution-checksums-docker
839
- update-attribution-checksums-docker : # Update attribution and checksums using the builder base docker container
840
- $(BUILD_LIB ) /update_checksum_docker.sh $(COMPONENT ) $(IMAGE_REPO ) $(RELEASE_BRANCH )
841
-
842
863
.PHONY : stop-docker-builder
843
864
stop-docker-builder : # Clean up builder base docker container
844
865
docker rm -f -v eks-d-builder
@@ -856,6 +877,10 @@ update-go-mods: checkout-repo
856
877
cp $(REPO ) /$$ gomod/go.{mod,sum} $(DEST_PATH ) ; \
857
878
done
858
879
880
+ .PHONY : all-update-go-mods
881
+ all-update-go-mods :
882
+ $(BASE_DIRECTORY ) /build/update-attribution-files/make_attribution.sh projects/$(COMPONENT ) update-go-mods
883
+
859
884
.PHONY : update-vendor-for-dep-patch
860
885
update-vendor-for-dep-patch : # After bumping dep in go.mod file, uses generic vendor update script or one provided from upstream project
861
886
update-vendor-for-dep-patch : checkout-repo
@@ -889,3 +914,14 @@ create-ecr-repos: $(foreach image,$(IMAGE_NAMES),$(image)/create-ecr-repo) $(if
889
914
var-value-% :
890
915
@echo $($* )
891
916
917
+ # # --------------------------------------
918
+ # # Docker Helpers
919
+ # # --------------------------------------
920
+ # $1 - target
921
+ define RUN_IN_DOCKER_TARGET
922
+ .PHONY: run-$(1 ) -in-docker
923
+ run-$(1 ) -in-docker: MAKE_TARGET=$(1 )
924
+ run-$(1 ) -in-docker: run-target-in-docker
925
+ endef
926
+
927
+ $(foreach target,$(IN_DOCKER_TARGETS),$(eval $(call RUN_IN_DOCKER_TARGET,$(target))))
0 commit comments