Commit Graph

56 Commits

Author SHA1 Message Date
Jordan Liggitt
7227c442c0 drop vendor from makefile 2022-05-05 08:47:33 -04:00
Kubernetes Prow Robot
45f2c63d6a Merge pull request #108661 from thockin/makefile-pass-SHELL
Makefile: Pass SHELL to sub-make
2022-03-11 20:30:34 -08:00
Kubernetes Prow Robot
72e67a6b15 Merge pull request #108659 from thockin/makefile-whitespace
Makefile whitespace cleanup
2022-03-11 20:30:22 -08:00
Tim Hockin
ebbc4716a7 Makefile: Pass SHELL to sub-make
It turns out that:

a) SHELL does not automatically get passed down
b) we were resetiing SHELL in the sub-make anyway
2022-03-11 14:51:38 -08:00
Tim Hockin
04a1d20deb Makefile: use $$ in define blocks
Make's "define" feature (macros) is subtle and it took me a long time to
convince myself this all works. In particular, we (prior to this commit)
are terribly inconsistent about the use of `$` vs `$$`.  We mostly get
away with it because the "variables" are more like "constants", but the
inconsistency trips up some things.  For example, using `$(shell)`
inside a macro will run at macro expansion time rather than when the
resulting make code is executed.

For a contrived, but concrete example, derived from our Makefile:

```
define MACRO
ifeq ($(DBG),1)
  $(warning dbg is $(DBG))
endif
endef # macro

TGTS=a b c
$(foreach pfx, $(TGTS), $(eval $(MACRO)))

default:
	@echo $@
```

yields:

```
$ make
Makefile:8: dbg is
Makefile:8: dbg is
Makefile:8: dbg is
default

$ make DBG=1
Makefile:8: dbg is 1
Makefile:8: dbg is 1
Makefile:8: dbg is 1
default
```

This is because `$(warning)` is evaluated as the macro is expanded.
Replace that with `$(shell)` and you can see how you might end up
running a bunch of things you didn't need to run.  The fix is:

```
define MACRO
ifeq ($(DBG),1)
  $$(warning dbg is $$(DBG))
endif
endef # macro

TGTS=a b c
$(foreach pfx, $(TGTS), $(eval $(MACRO)))

default:
        @echo $@
```

which yields:

```
$ make
default

$ make DBG=1
Makefile:8: dbg is 1
Makefile:8: dbg is 1
Makefile:8: dbg is 1
default
```

We COULD have only changed `$(warning)` to `$$(warning)` and left
`$(DBG)` alone, because that's a cheap expansion.  I chose NOT to do
that here because it requires brainpower to think about this all, and it
seems easier to set a simple rule: inside a `define`/`endef` block, you
always use `$$` unless you KNOW that you NEED expansion-time evaluation
(as in the `$(prefix)` in this commit, which is effectively an argument
to the macros).
2022-03-11 14:49:47 -08:00
Tim Hockin
be7651f642 Makefile whitespace cleanup 2022-03-11 13:38:25 -08:00
Tim Hockin
56ad63913a Make builds fail if go2make misbehaves
Rather than an obscure error.
2022-03-01 08:37:40 -08:00
Kubernetes Prow Robot
5b1e538759 Merge pull request #108378 from thockin/makefile-use-loglib
Makefile: emit codegen info via kube::log::status
2022-02-27 14:27:18 -08:00
Kubernetes Prow Robot
6d7c252906 Merge pull request #108377 from thockin/makefile-check-restarts
Makefile: avoid redundant work upon make restart
2022-02-27 13:25:17 -08:00
Tim Hockin
457e8778f7 Makefile: emit codegen info via kube::log::status 2022-02-27 11:33:52 -08:00
Tim Hockin
88fef96e75 Makefile: avoid redundant work upon make restart
Only build and run go2make on the first pass.  If that generates a new
GO_PKGDEPS_FILE, make will restart the whole process and set MAKE_RESTARTS to
a numeric value.

We can use this to avoid re-running go2make, which saves a few seconds
each build.
2022-02-27 10:50:19 -08:00
Tim Hockin
30b20f184e Use build.sh to build go2make
This allows common flags to be passed in (upcoming commits).
2022-02-27 10:28:44 -08:00
Nabarun Pal
0ab03d3d5b dependencies: remove go-bindata
Signed-off-by: Nabarun Pal <pal.nabarun95@gmail.com>
2021-06-29 19:16:51 +05:30
Tim Hockin
876c9f0d8c Rename _examples to examples
The alternative to this would be to special-case code-generator.  Since
it legit wants codegen, it seems wrong to make it be _examples (which tools
should ignore).

Make examples an "internal module" so the main go.mod for
k8s.io/code-generator does not get too polluted.
2021-01-25 10:20:46 -08:00
Tim Hockin
1b04d05423 Makefile: add debug on generated files 2021-01-25 10:15:59 -08:00
Tim Hockin
8703dc6e1c Makefile: remove redundant line
This same dep is expressed a few lines later in the "real" recipe.
2021-01-25 10:15:58 -08:00
Tim Hockin
e46810bca5 Make: $(foo:-) is shell, not makefile syntax
Driving towards `make --warn-undefined-variables`.
2021-01-25 10:15:58 -08:00
Tim Hockin
ee170145b2 Make: prefix magic go-deps variables with GODEPS
This makes them easier to see and find.

Driving towards `make --warn-undefined-variables`.
2021-01-25 10:15:58 -08:00
Tim Hockin
371d602a05 Make: change $(eval) in a comment
Because this comment is in a `define` which is later evaluated, the
syntactical `$(eval)` is treated like a variable exapansion.  Just
change the comment.

Driving towards `make --warn-undefined-variables`.
2021-01-25 10:15:58 -08:00
Tim Hockin
83dc781d29 Make: init variables
Driving towards the goal of `make --warn-undefined-variables` working.
2021-01-25 10:15:58 -08:00
Tim Hockin
6f0f7aad46 Fix Makfile cut-paste comment errors 2020-12-22 21:37:42 -08:00
Tim Hockin
54e2748e13 Pass all packages to conversion-gen
As per #96015 and other reports, conversion-gen does the wrong thing if
dependent packages are not ALSO being re-generated.  It creates new
versions of generated files that have missing conversions.

This change passes all packages as "extras" which will be parsed but not
regenerated (default already does exactly this).
2020-10-30 22:22:57 -07:00
Sascha Grunert
975b8d352e Use /usr/bin/env bash in Makefiles and scripts
This allows the execution of the Makefiles from distributions which do
have `bash` in a different path.

Signed-off-by: Sascha Grunert <sgrunert@suse.com>
2020-08-16 21:13:18 +02:00
bjrara
5e0bd8a44c Add openapi generation for the kube-aggregator 2020-06-05 11:10:08 +08:00
David Eads
d32fc4e479 fix bug in api lifecycle generator file detection 2020-04-24 09:52:40 -04:00
David Eads
1c6210a319 update makefile for prerelease-lifecycle 2020-04-14 16:16:58 -04:00
Hongxu Jia
2ab47f95eb fix compiling failure: execvp: /bin/bash: Argument list too long
Use GNU Make 4.2.1(such as fedora-29) to build k8s in a long directory,
it failed with `execvp: /bin/bash: Argument list too long'
[snip]
$ cd /buildarea1/hjia/wrlinux-1019/I_/suspect_/that_/if_/you_/create_/your_/project_/in_/a_/very_/deep_/directory/build_master-wr_qemux86-64_faw_2019090509/build/tmp-glibc/work/core2-64-wrs-linux/kubernetes/v1.16.0-alpha+git7054e3ead7e1a00ca6ac3ec47ea355b76061a35a-r0/kubernetes-v1.16.0-alpha+git7054e3ead7e1a00ca6ac3ec47ea355b76061a35a/src/import
$ make cross KUBE_BUILD_PLATFORMS=linux/amd64 GOLDFLAGS=""
|+++ [0804 16:38:32] Building go targets for linux/amd64:
|    ./vendor/k8s.io/code-generator/cmd/deepcopy-gen
|make[1]: execvp: /bin/bash: Argument list too long
|make[1]: *** [Makefile.generated_files:184: pkg/kubectl/cmd/testing/zz_generated.deepcopy.go] Error 127
|make: *** [Makefile:557: generated_files] Error 2
...
[snip]

From make manual [1]
$?
  The names of all the prerequisites that are newer than the target, with spaces between them.

While two `$?' was passed to bash in a line, it caused above failure,
drop a duplicated one could workaround the issue.

[1] https://www.gnu.org/software/make/manual/html_node/Automatic-Variables.html

Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
2019-09-17 14:56:40 +08:00
Dr. Stefan Schimanski
e920d9bc14 Makefile.generated_files: build code-generator+sample-apiserver OpenAPI schemas 2019-07-12 20:52:21 +02:00
Davanum Srinivas
df3f9f1047 updating github.com/go-bindata/go-bindata to v3.1.1
Change-Id: I66c047a4e5e72632042f43a9f4b33ab9f5bf7ef1
2019-06-20 11:30:30 -04:00
Haowei Cai
301928e1a2 Makefile.generated_files: generate apiextension-apiserver openapi definition 2019-03-05 08:11:33 -08:00
Mike Spreitzer
4982cbb2d8 Update doc for k8s.io/code-generator/cmd/conversion-gen
Added explanation of the `k8s:conversion-gen-external-types` comment
tag.

Added explanation of how the developer can selectively override the
generated conversion functions.

Also updated description in Makefile.generated_files.
2019-01-28 13:46:25 -05:00
Haowei Cai
dcc062d812 Add UPDATE_API_KNOWN_VIOLATIONS=true to Makefile.generated_files
One can run:
    make generated_files UPDATE_API_KNOWN_VIOLATIONS=true
to update the checked-in known API violation exceptions list.

Also updated README and the error message on how to resolve the
failure.
2018-11-01 17:43:16 -07:00
Kubernetes Submit Queue
81b072a40b Merge pull request #66447 from liggitt/api-violation-owner
Automatic merge from submit-queue (batch tested with PRs 66341, 66405, 66403, 66264, 66447). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>.

Move api rules list under api-approvers-owned package

Additions to this list should be rare and carefully reviewed

```release-note
NONE
```
2018-07-20 16:02:17 -07:00
Jordan Liggitt
9e7fbf42c8 Move api rules list under api-approvers-owned package 2018-07-20 10:16:08 -04:00
Christoph Blecker
5fcad99ee6 Only build generators for building platform 2018-07-19 15:08:11 -07:00
Haowei Cai
6ad8c5c596 Rename violations.report to violation_exceptions.list 2018-07-11 14:13:12 -07:00
Haowei Cai
3af6061e76 Use kube-openapi cmd in Make rules
check in existing API rule violations;
the Make rule fails if generated violation report differs from the
checked-in violation file and prints error message;
add documentation.
2018-07-10 17:53:24 -07:00
Tim Hockin
0b8b710059 Simplify build for bindata 2018-06-04 15:04:22 -07:00
Tim Hockin
6387c43e87 Simplify build for openapi 2018-06-04 15:04:21 -07:00
Tim Hockin
bc1a6ee071 Simplify build for conversion 2018-06-04 15:04:21 -07:00
Tim Hockin
0419d11403 Simplify build for defaulter 2018-06-04 15:04:21 -07:00
Tim Hockin
6d621ea549 Simplify build for deepcopy 2018-06-04 15:04:21 -07:00
Tim Hockin
90e0ac54b9 Simplify Makefile for genfiles a bit 2018-06-04 15:04:21 -07:00
Tim Hockin
fba394ce8c Build: Test if .todo file exists AND is empty 2018-06-04 15:04:21 -07:00
Tim Hockin
cb1332db06 Get rid of verify_generated_files
It doesn't work right, we autogenerate on-demand, and we want to stop
checking them in.
2018-06-04 15:04:21 -07:00
Tim Hockin
59ef5e2379 Generate bindata through make 2018-04-10 20:55:03 -07:00
Tim Hockin
87377f8716 Reorder makefile sections 2018-04-10 20:38:08 -07:00
Dr. Stefan Schimanski
7e62297b68 pkg/apis/core: fix code generation 2017-11-09 12:14:07 +01:00
Dr. Stefan Schimanski
d1e0a9dbfa conversion-gen: cut off kube dependencies in extra-peer-dirs 2017-11-02 17:10:17 +01:00
Dr. Stefan Schimanski
f545112751 conversion-gen: make staging dirs independent of living in vendor/ 2017-09-20 14:55:42 +02:00