core: build initramfs using generic initramfs rule
This chips away at three different things:
- it brings us closer to hermetic and cross-platform builds by not
depending on genrule/shell and lz4-the-tool
- it generalizes initramfs building (allowing for more than one to be
built, if necessary)
- sets the stage to use Bazel transitions [1] to force all included Go
binaries to be built in pure/static mode while allowing host Go
binaries to use cgo/dynamic linking if necessary, and hopefully also
allowing us to get rid of some BUILD patches that set pure='on' in
go_binary calls (notably needed in Cilium and some existing
third_party dependencies).
[1] - https://docs.bazel.build/versions/master/skylark/config.html#user-defined-transitions
Test Plan: build machinery change, covered by existing tests
X-Origin-Diff: phab/D554
GitOrigin-RevId: a5561eb5ca16e6529b9a4a2b98352f579c424222
diff --git a/third_party/lz4/build.patch b/third_party/lz4/build.patch
new file mode 100644
index 0000000..0415c87
--- /dev/null
+++ b/third_party/lz4/build.patch
@@ -0,0 +1,69 @@
+Copyright 2020 The Monogon Project Authors.
+
+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.
+
+
+diff -urN com_github_lz4_lz4.orig/lib/BUILD com_github_lz4_lz4/lib/BUILD
+--- com_github_lz4_lz4.orig/lib/BUILD 1970-01-01 01:00:00.000000000 +0100
++++ com_github_lz4_lz4/lib/BUILD 2020-06-05 22:00:01.056028668 +0200
+@@ -0,0 +1,19 @@
++cc_library(
++ name = "lib",
++ srcs = [
++ "lz4frame.c",
++ "lz4.c",
++ "lz4hc.c",
++ "xxhash.c",
++ ],
++ hdrs = [
++ # Yes, this is also a header. lib/lz4hc.c includes it.
++ "lz4.c",
++ "lz4.h",
++ "lz4frame.h",
++ "lz4hc.h",
++ "xxhash.h",
++ ],
++ strip_include_prefix = "//lib",
++ visibility = ["//visibility:public"],
++)
+diff -urN com_github_lz4_lz4.orig/programs/BUILD com_github_lz4_lz4/programs/BUILD
+--- com_github_lz4_lz4.orig/programs/BUILD 1970-01-01 01:00:00.000000000 +0100
++++ com_github_lz4_lz4/programs/BUILD 2020-06-05 21:59:06.233821791 +0200
+@@ -0,0 +1,22 @@
++cc_binary(
++ name = "lz4",
++ srcs = [
++ "lz4cli.c",
++
++ "lz4io.h",
++ "lz4io.c",
++
++ "bench.h",
++ "bench.c",
++
++ "datagen.h",
++ "datagen.c",
++
++ "platform.h",
++ "util.h",
++ ],
++ deps = [
++ "//lib",
++ ],
++ visibility = ["//visibility:public"],
++)
+diff -urN com_github_lz4_lz4.orig/WORKSPACE com_github_lz4_lz4/WORKSPACE
+--- com_github_lz4_lz4.orig/WORKSPACE 1970-01-01 01:00:00.000000000 +0100
++++ com_github_lz4_lz4/WORKSPACE 2020-06-05 21:50:45.128930780 +0200
+@@ -0,0 +1 @@
++workspace(name = "com_github_lz4_lz4")