public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] repo/gentoo:master commit in: sci-libs/keras/files/, sci-libs/keras/
@ 2022-06-26  2:45 Jason Zaman
  0 siblings, 0 replies; 5+ messages in thread
From: Jason Zaman @ 2022-06-26  2:45 UTC (permalink / raw
  To: gentoo-commits

commit:     9f272af550415b741b93760849b847dc59c6be6e
Author:     Jason Zaman <perfinion <AT> gentoo <DOT> org>
AuthorDate: Sat Jun 25 16:39:38 2022 +0000
Commit:     Jason Zaman <perfinion <AT> gentoo <DOT> org>
CommitDate: Sun Jun 26 02:37:33 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9f272af5

sci-libs/keras: add 2.9.0

Closes: https://bugs.gentoo.org/851570
Signed-off-by: Jason Zaman <perfinion <AT> gentoo.org>

 sci-libs/keras/Manifest                            |   1 +
 ...eras-2.9.0-0001-bazel-Use-system-protobuf.patch | 331 +++++++++++++++++++++
 sci-libs/keras/keras-2.9.0.ebuild                  |  85 ++++++
 3 files changed, 417 insertions(+)

diff --git a/sci-libs/keras/Manifest b/sci-libs/keras/Manifest
index 2e270929fa2d..6bd8df8bd0df 100644
--- a/sci-libs/keras/Manifest
+++ b/sci-libs/keras/Manifest
@@ -1,3 +1,4 @@
 DIST bazelbuild-rules_cc-b1c40e1de81913a3c40e5948f78719c28152486d.zip 201360 BLAKE2B 0173a8edb17f344b18e42026e2f8a62a1909d4694ab0be83562b6437a3f1ef38889f069269ddd2308b41062e5f375f791be0d2631a8e52ede668203779813b56 SHA512 2ba1dc316d88947c1d17ec67154c052700e3571b8d03370a9f204cf9fe94a1bd58f93a2c4a3c0b02233ee3250053a4c30a4133b5b38745858c1d04be8c9d973f
 DIST bazelbuild-rules_java-7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip 9422 BLAKE2B bbc45c97551ee8126335b611ffca6574dac843d4db9b3221b10d26487f8eecfe38ba0cd67a4039a3ad921c25fea6294c43e4f4e7a57a060a30791acd6c4f9d39 SHA512 ba06242feb711e7fb6e821fd9ac029248b4f3e466fb1acf971d0db8196f3efe4d114ef137acbe4913073f8cbe8ccab4d47d8bafa21b867b2d6a6d57f5a647f0c
 DIST keras-2.8.0.tar.gz 2001168 BLAKE2B 64e756da102369bd41b176245f7f8184b2376b6fb714485627e30107af552035931c9fcff18d82def5f4e1b83f2eae2fa3d0c18b030986f8d3a53dffbdbb2963 SHA512 a70ae1409761211f3b59d358df4d5abf6bb76b915f5dde90ada5a867aef2831581836d38876bd2e962f3c345f59373bf76a7c21247cef8aeaec45ba1301f787b
+DIST keras-2.9.0.tar.gz 2142884 BLAKE2B 9d90ad998ef7215f9a3ab0f0ac9d035f81023f7049e5c73823a0aa8561ead2f697ff762c225f668f3d9fe376d69a2bfbdf8b137128c915a711cee53d809093d6 SHA512 779828aff9aa31970e7f68b32423e47b81f47d2284d9e9734428c3bc3789e6b0e9ef151315e1cae666b14b1cdc387828ddaf520811250f9ad4fa73cf5c98781d

diff --git a/sci-libs/keras/files/keras-2.9.0-0001-bazel-Use-system-protobuf.patch b/sci-libs/keras/files/keras-2.9.0-0001-bazel-Use-system-protobuf.patch
new file mode 100644
index 000000000000..b571a8b994bc
--- /dev/null
+++ b/sci-libs/keras/files/keras-2.9.0-0001-bazel-Use-system-protobuf.patch
@@ -0,0 +1,331 @@
+From c79e1177ff9f2e0de9070c604a812ff768c2c8c8 Mon Sep 17 00:00:00 2001
+From: Jason Zaman <jason@perfinion.com>
+Date: Sun, 14 Nov 2021 17:59:39 -0800
+Subject: [PATCH] bazel: Use system protobuf
+
+---
+ WORKSPACE                |  53 ----------
+ keras/protobuf/BUILD     |   2 +-
+ third_party/BUILD        |   8 +-
+ third_party/protobuf.bzl | 216 +++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 224 insertions(+), 55 deletions(-)
+ create mode 100644 third_party/protobuf.bzl
+
+diff --git a/WORKSPACE b/WORKSPACE
+index 39f478f8..61282aea 100644
+--- a/WORKSPACE
++++ b/WORKSPACE
+@@ -1,54 +1 @@
+ workspace(name = "org_keras")
+-
+-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+-
+-# Needed by protobuf
+-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+-http_archive(
+-    name = "bazel_skylib",
+-    url = "https://github.com/bazelbuild/bazel-skylib/releases/download/1.0.1/bazel-skylib-1.0.1.tar.gz",
+-    sha256 = "f1c8360c01fcf276778d3519394805dc2a71a64274a3a0908bc9edff7b5aebc8",
+-)
+-load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace")
+-bazel_skylib_workspace()
+-
+-# Needed by protobuf
+-http_archive(
+-    name = "six_archive",
+-    build_file = "//third_party:six.BUILD",
+-    sha256 = "d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73",
+-    strip_prefix = "six-1.12.0",
+-    urls = [
+-        "http://mirror.bazel.build/pypi.python.org/packages/source/s/six/six-1.12.0.tar.gz",
+-        "https://pypi.python.org/packages/source/s/six/six-1.12.0.tar.gz",  # 2018-12-10
+-    ],
+-)
+-
+-bind(
+-    name = "six",
+-    actual = "@six_archive//:six",
+-)
+-
+-http_archive(
+-    name = "com_google_protobuf",
+-    sha256 = "1fbf1c2962af287607232b2eddeaec9b4f4a7a6f5934e1a9276e9af76952f7e0",
+-    strip_prefix = "protobuf-3.9.2",
+-    urls = ["https://github.com/protocolbuffers/protobuf/archive/v3.9.2.tar.gz"],
+-)
+-
+-# ZLIB
+-# Need by com_google_protobuf. Note that the original URL from zlib side is not
+-# available for now. We need to use bazel mirror as a backup.
+-http_archive(
+-    name = "zlib",
+-    build_file = "@com_google_protobuf//:third_party/zlib.BUILD",
+-    sha256 = "c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1",
+-    strip_prefix = "zlib-1.2.11",
+-    urls = [
+-        "https://mirror.bazel.build/zlib.net/zlib-1.2.11.tar.gz",
+-        "https://zlib.net/zlib-1.2.11.tar.gz",
+-    ],
+-)
+-
+-load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")
+-protobuf_deps()
+diff --git a/keras/protobuf/BUILD b/keras/protobuf/BUILD
+index 413dcb74..80133c06 100644
+--- a/keras/protobuf/BUILD
++++ b/keras/protobuf/BUILD
+@@ -1,7 +1,7 @@
+ # Description:
+ #   Contains Keras protobufs
+ 
+-load("@com_google_protobuf//:protobuf.bzl", "py_proto_library")
++load("//third_party:protobuf.bzl", "py_proto_library")
+ 
+ package(
+     default_visibility = [
+diff --git a/third_party/BUILD b/third_party/BUILD
+index 9be54076..9399232f 100644
+--- a/third_party/BUILD
++++ b/third_party/BUILD
+@@ -1,4 +1,5 @@
+ package(
++    default_visibility = ["//visibility:public"],
+     licenses = ["notice"],  # Apache 2.0
+ )
+ 
+@@ -7,4 +8,9 @@ exports_files([
+     "six.BUILD",
+ ])
+ 
+-package(default_visibility = ["//visibility:public"])
++genrule(
++    name = "protoc",
++    outs = ["protoc.bin"],
++    cmd = "ln -s $$(which protoc) $@",
++    executable = 1,
++)
+diff --git a/third_party/protobuf.bzl b/third_party/protobuf.bzl
+new file mode 100644
+index 00000000..3a7ef0a2
+--- /dev/null
++++ b/third_party/protobuf.bzl
+@@ -0,0 +1,216 @@
++def _GetPath(ctx, path):
++    if ctx.label.workspace_root:
++        return ctx.label.workspace_root + "/" + path
++    else:
++        return path
++
++def _IsNewExternal(ctx):
++    # Bazel 0.4.4 and older have genfiles paths that look like:
++    #   bazel-out/local-fastbuild/genfiles/external/repo/foo
++    # After the exec root rearrangement, they look like:
++    #   ../repo/bazel-out/local-fastbuild/genfiles/foo
++    return ctx.label.workspace_root.startswith("../")
++
++def _GenDir(ctx):
++    if _IsNewExternal(ctx):
++        # We are using the fact that Bazel 0.4.4+ provides repository-relative paths
++        # for ctx.genfiles_dir.
++        return ctx.genfiles_dir.path + (
++            "/" + ctx.attr.includes[0] if ctx.attr.includes and ctx.attr.includes[0] else ""
++        )
++
++    # This means that we're either in the old version OR the new version in the local repo.
++    # Either way, appending the source path to the genfiles dir works.
++    return ctx.var["GENDIR"] + "/" + _SourceDir(ctx)
++
++def _SourceDir(ctx):
++    if not ctx.attr.includes:
++        return ctx.label.workspace_root
++    if not ctx.attr.includes[0]:
++        return _GetPath(ctx, ctx.label.package)
++    if not ctx.label.package:
++        return _GetPath(ctx, ctx.attr.includes[0])
++    return _GetPath(ctx, ctx.label.package + "/" + ctx.attr.includes[0])
++
++def _PyOuts(srcs, use_grpc_plugin = False):
++    ret = [s[:-len(".proto")] + "_pb2.py" for s in srcs]
++    if use_grpc_plugin:
++        ret += [s[:-len(".proto")] + "_pb2_grpc.py" for s in srcs]
++    return ret
++
++def _proto_gen_impl(ctx):
++    """General implementation for generating protos"""
++    srcs = ctx.files.srcs
++    deps = []
++    deps += ctx.files.srcs
++    source_dir = _SourceDir(ctx)
++    gen_dir = _GenDir(ctx)
++    if source_dir:
++        import_flags = ["-I" + source_dir, "-I" + gen_dir]
++    else:
++        import_flags = ["-I."]
++
++    for dep in ctx.attr.deps:
++        import_flags += dep.proto.import_flags
++        deps += dep.proto.deps
++    import_flags = depset(import_flags).to_list()
++    deps = depset(deps).to_list()
++
++    args = []
++    if ctx.attr.gen_cc:
++        args += ["--cpp_out=" + gen_dir]
++    if ctx.attr.gen_py:
++        args += ["--python_out=" + gen_dir]
++
++    inputs = srcs + deps
++    tools = [ctx.executable.protoc]
++    if ctx.executable.plugin:
++        plugin = ctx.executable.plugin
++        lang = ctx.attr.plugin_language
++        if not lang and plugin.basename.startswith("protoc-gen-"):
++            lang = plugin.basename[len("protoc-gen-"):]
++        if not lang:
++            fail("cannot infer the target language of plugin", "plugin_language")
++
++        outdir = gen_dir
++        if ctx.attr.plugin_options:
++            outdir = ",".join(ctx.attr.plugin_options) + ":" + outdir
++        args += ["--plugin=protoc-gen-%s=%s" % (lang, plugin.path)]
++        args += ["--%s_out=%s" % (lang, outdir)]
++        tools.append(plugin)
++
++    if args:
++        ctx.actions.run(
++            inputs = inputs,
++            outputs = ctx.outputs.outs,
++            arguments = args + import_flags + [s.path for s in srcs],
++            executable = ctx.executable.protoc,
++            mnemonic = "ProtoCompile",
++            tools = tools,
++            use_default_shell_env = True,
++        )
++
++    return struct(
++        proto = struct(
++            srcs = srcs,
++            import_flags = import_flags,
++            deps = deps,
++        ),
++    )
++
++proto_gen = rule(
++    attrs = {
++        "srcs": attr.label_list(allow_files = True),
++        "deps": attr.label_list(providers = ["proto"]),
++        "includes": attr.string_list(),
++        "protoc": attr.label(
++            cfg = "host",
++            executable = True,
++            allow_single_file = True,
++            mandatory = True,
++        ),
++        "plugin": attr.label(
++            cfg = "host",
++            allow_files = True,
++            executable = True,
++        ),
++        "plugin_language": attr.string(),
++        "plugin_options": attr.string_list(),
++        "gen_cc": attr.bool(),
++        "gen_py": attr.bool(),
++        "outs": attr.output_list(),
++    },
++    output_to_genfiles = True,
++    implementation = _proto_gen_impl,
++)
++"""Generates codes from Protocol Buffers definitions.
++
++This rule helps you to implement Skylark macros specific to the target
++language. You should prefer more specific `cc_proto_library `,
++`py_proto_library` and others unless you are adding such wrapper macros.
++
++Args:
++  srcs: Protocol Buffers definition files (.proto) to run the protocol compiler
++    against.
++  deps: a list of dependency labels; must be other proto libraries.
++  includes: a list of include paths to .proto files.
++  protoc: the label of the protocol compiler to generate the sources.
++  plugin: the label of the protocol compiler plugin to be passed to the protocol
++    compiler.
++  plugin_language: the language of the generated sources
++  plugin_options: a list of options to be passed to the plugin
++  gen_cc: generates C++ sources in addition to the ones from the plugin.
++  gen_py: generates Python sources in addition to the ones from the plugin.
++  outs: a list of labels of the expected outputs from the protocol compiler.
++"""
++
++def py_proto_library(
++        name,
++        srcs = [],
++        deps = [],
++        py_libs = [],
++        py_extra_srcs = [],
++        include = None,
++        default_runtime = None,
++        protoc = "//third_party:protoc",
++        use_grpc_plugin = False,
++        **kwargs):
++    """Bazel rule to create a Python protobuf library from proto source files
++
++    NOTE: the rule is only an internal workaround to generate protos. The
++    interface may change and the rule may be removed when bazel has introduced
++    the native rule.
++
++    Args:
++      name: the name of the py_proto_library.
++      srcs: the .proto files of the py_proto_library.
++      deps: a list of dependency labels; must be py_proto_library.
++      py_libs: a list of other py_library targets depended by the generated
++          py_library.
++      py_extra_srcs: extra source files that will be added to the output
++          py_library. This attribute is used for internal bootstrapping.
++      include: a string indicating the include path of the .proto files.
++      default_runtime: the implicitly default runtime which will be depended on by
++          the generated py_library target.
++      protoc: the label of the protocol compiler to generate the sources.
++      use_grpc_plugin: a flag to indicate whether to call the Python C++ plugin
++          when processing the proto files.
++      **kwargs: other keyword arguments that are passed to py_library.
++
++    """
++    outs = _PyOuts(srcs, use_grpc_plugin)
++
++    includes = []
++    if include != None:
++        includes = [include]
++
++    grpc_python_plugin = None
++    if use_grpc_plugin:
++        grpc_python_plugin = "//external:grpc_python_plugin"
++        # Note: Generated grpc code depends on Python grpc module. This dependency
++        # is not explicitly listed in py_libs. Instead, host system is assumed to
++        # have grpc installed.
++
++    proto_gen(
++        name = name + "_genproto",
++        srcs = srcs,
++        deps = [s + "_genproto" for s in deps],
++        includes = includes,
++        protoc = protoc,
++        gen_py = 1,
++        outs = outs,
++        visibility = ["//visibility:public"],
++        plugin = grpc_python_plugin,
++        plugin_language = "grpc",
++    )
++
++    if default_runtime and not default_runtime in py_libs + deps:
++        py_libs = py_libs + [default_runtime]
++
++    native.py_library(
++        name = name,
++        srcs = outs + py_extra_srcs,
++        deps = py_libs + deps,
++        imports = includes,
++        **kwargs
++    )
+-- 
+2.35.1
+

diff --git a/sci-libs/keras/keras-2.9.0.ebuild b/sci-libs/keras/keras-2.9.0.ebuild
new file mode 100644
index 000000000000..e6119a59a075
--- /dev/null
+++ b/sci-libs/keras/keras-2.9.0.ebuild
@@ -0,0 +1,85 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{8,9,10} )
+inherit bazel distutils-r1
+
+DESCRIPTION="Deep Learning for humans"
+HOMEPAGE="https://keras.io/"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE=""
+
+bazel_external_uris="
+	https://github.com/bazelbuild/rules_cc/archive/b1c40e1de81913a3c40e5948f78719c28152486d.zip -> bazelbuild-rules_cc-b1c40e1de81913a3c40e5948f78719c28152486d.zip
+	https://github.com/bazelbuild/rules_java/archive/7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip -> bazelbuild-rules_java-7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip"
+
+SRC_URI="https://github.com/keras-team/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz
+	${bazel_external_uris}"
+
+RDEPEND="
+	>=dev-libs/protobuf-3.13.0:=
+	dev-python/absl-py[${PYTHON_USEDEP}]
+	dev-python/h5py[${PYTHON_USEDEP}]
+	dev-python/numpy[${PYTHON_USEDEP}]
+	dev-python/pandas[${PYTHON_USEDEP}]
+	dev-python/pillow[${PYTHON_USEDEP}]
+	>=dev-python/protobuf-python-3.13.0[${PYTHON_USEDEP}]
+	dev-python/six[${PYTHON_USEDEP}]
+	>=sci-libs/keras-applications-1.0.8[${PYTHON_USEDEP}]
+	>=sci-libs/keras-preprocessing-1.1.2[${PYTHON_USEDEP}]
+	>=sci-libs/tensorflow-2.9[python,${PYTHON_USEDEP}]"
+DEPEND="${RDEPEND}
+	dev-python/setuptools[${PYTHON_USEDEP}]"
+BDEPEND="
+	app-arch/unzip
+	>=dev-libs/protobuf-3.13.0
+	dev-java/java-config
+	>=dev-util/bazel-4.2.2"
+
+# Bazel tests not pytest, also want GPU access
+RESTRICT="test"
+DOCS=( CONTRIBUTING.md README.md )
+PATCHES=(
+	"${FILESDIR}/keras-2.9.0-0001-bazel-Use-system-protobuf.patch"
+)
+
+src_unpack() {
+	unpack "${P}.tar.gz"
+	bazel_load_distfiles "${bazel_external_uris}"
+}
+
+src_prepare() {
+	bazel_setup_bazelrc
+	default
+	python_copy_sources
+}
+
+python_compile() {
+	pushd "${BUILD_DIR}" >/dev/null || die
+
+	ebazel build //keras/tools/pip_package:build_pip_package
+	ebazel shutdown
+
+	local srcdir="${T}/src-${EPYTHON/./_}"
+	mkdir -p "${srcdir}" || die
+	bazel-bin/keras/tools/pip_package/build_pip_package --src "${srcdir}" || die
+
+	popd || die
+}
+
+src_compile() {
+	export JAVA_HOME=$(java-config --jre-home)
+	distutils-r1_src_compile
+}
+
+python_install() {
+	pushd "${T}/src-${EPYTHON/./_}" >/dev/null || die
+	esetup.py install
+	python_optimize
+	popd || die
+}


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: sci-libs/keras/files/, sci-libs/keras/
@ 2022-11-19 18:23 Jason Zaman
  0 siblings, 0 replies; 5+ messages in thread
From: Jason Zaman @ 2022-11-19 18:23 UTC (permalink / raw
  To: gentoo-commits

commit:     5c4cdb22be1eca00e340facdaec28f65b551076f
Author:     Jason Zaman <perfinion <AT> gentoo <DOT> org>
AuthorDate: Sat Nov 19 18:11:32 2022 +0000
Commit:     Jason Zaman <perfinion <AT> gentoo <DOT> org>
CommitDate: Sat Nov 19 18:23:23 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=5c4cdb22

sci-libs/keras: drop 2.8.0, 2.9.0

Signed-off-by: Jason Zaman <perfinion <AT> gentoo.org>

 sci-libs/keras/Manifest                            |   2 -
 ...eras-2.7.0-0001-bazel-Use-system-protobuf.patch | 316 --------------------
 ...eras-2.9.0-0001-bazel-Use-system-protobuf.patch | 331 ---------------------
 sci-libs/keras/keras-2.8.0.ebuild                  |  87 ------
 sci-libs/keras/keras-2.9.0.ebuild                  |  85 ------
 5 files changed, 821 deletions(-)

diff --git a/sci-libs/keras/Manifest b/sci-libs/keras/Manifest
index c8a8659e2e4b..3ac4fb7500a7 100644
--- a/sci-libs/keras/Manifest
+++ b/sci-libs/keras/Manifest
@@ -1,5 +1,3 @@
 DIST bazelbuild-rules_cc-b1c40e1de81913a3c40e5948f78719c28152486d.zip 201360 BLAKE2B 0173a8edb17f344b18e42026e2f8a62a1909d4694ab0be83562b6437a3f1ef38889f069269ddd2308b41062e5f375f791be0d2631a8e52ede668203779813b56 SHA512 2ba1dc316d88947c1d17ec67154c052700e3571b8d03370a9f204cf9fe94a1bd58f93a2c4a3c0b02233ee3250053a4c30a4133b5b38745858c1d04be8c9d973f
 DIST bazelbuild-rules_java-7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip 9422 BLAKE2B bbc45c97551ee8126335b611ffca6574dac843d4db9b3221b10d26487f8eecfe38ba0cd67a4039a3ad921c25fea6294c43e4f4e7a57a060a30791acd6c4f9d39 SHA512 ba06242feb711e7fb6e821fd9ac029248b4f3e466fb1acf971d0db8196f3efe4d114ef137acbe4913073f8cbe8ccab4d47d8bafa21b867b2d6a6d57f5a647f0c
 DIST keras-2.10.0.tar.gz 2250425 BLAKE2B eb05537739cdc81e279b5c400e2e2b77d46f4085e8530fef565bde12414ddccedb44c0b13265106a3353e67c367106e1d341412dc25b32e2221f144a31d76079 SHA512 8682110495a045c2ebc61f31a98d646b88fd9608d5169be78701cf528457ff0d2e39669d885854c14c1e6bebb380b14968957f2a8a34a8a023f8860efc7aeecd
-DIST keras-2.8.0.tar.gz 2001168 BLAKE2B 64e756da102369bd41b176245f7f8184b2376b6fb714485627e30107af552035931c9fcff18d82def5f4e1b83f2eae2fa3d0c18b030986f8d3a53dffbdbb2963 SHA512 a70ae1409761211f3b59d358df4d5abf6bb76b915f5dde90ada5a867aef2831581836d38876bd2e962f3c345f59373bf76a7c21247cef8aeaec45ba1301f787b
-DIST keras-2.9.0.tar.gz 2142884 BLAKE2B 9d90ad998ef7215f9a3ab0f0ac9d035f81023f7049e5c73823a0aa8561ead2f697ff762c225f668f3d9fe376d69a2bfbdf8b137128c915a711cee53d809093d6 SHA512 779828aff9aa31970e7f68b32423e47b81f47d2284d9e9734428c3bc3789e6b0e9ef151315e1cae666b14b1cdc387828ddaf520811250f9ad4fa73cf5c98781d

diff --git a/sci-libs/keras/files/keras-2.7.0-0001-bazel-Use-system-protobuf.patch b/sci-libs/keras/files/keras-2.7.0-0001-bazel-Use-system-protobuf.patch
deleted file mode 100644
index 60736ebb16e9..000000000000
--- a/sci-libs/keras/files/keras-2.7.0-0001-bazel-Use-system-protobuf.patch
+++ /dev/null
@@ -1,316 +0,0 @@
-From 71f50c026a4b7658596ab4209cc63520710f02b5 Mon Sep 17 00:00:00 2001
-From: Jason Zaman <jason@perfinion.com>
-Date: Sun, 14 Nov 2021 17:59:39 -0800
-Subject: [PATCH] bazel: Use system protobuf
-
----
- WORKSPACE                |  38 -------
- keras/protobuf/BUILD     |   2 +-
- third_party/BUILD        |   8 +-
- third_party/protobuf.bzl | 216 +++++++++++++++++++++++++++++++++++++++
- 4 files changed, 224 insertions(+), 40 deletions(-)
- create mode 100644 third_party/protobuf.bzl
-
-diff --git a/WORKSPACE b/WORKSPACE
-index 2c03ebba..61282aea 100644
---- a/WORKSPACE
-+++ b/WORKSPACE
-@@ -1,39 +1 @@
- workspace(name = "org_keras")
--
--load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
--
--# Needed by protobuf
--load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
--http_archive(
--    name = "bazel_skylib",
--    url = "https://github.com/bazelbuild/bazel-skylib/releases/download/1.0.1/bazel-skylib-1.0.1.tar.gz",
--    sha256 = "f1c8360c01fcf276778d3519394805dc2a71a64274a3a0908bc9edff7b5aebc8",
--)
--load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace")
--bazel_skylib_workspace()
--
--# Needed by protobuf
--http_archive(
--    name = "six_archive",
--    build_file = "//third_party:six.BUILD",
--    sha256 = "d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73",
--    strip_prefix = "six-1.12.0",
--    urls = [
--        "http://mirror.bazel.build/pypi.python.org/packages/source/s/six/six-1.12.0.tar.gz",
--        "https://pypi.python.org/packages/source/s/six/six-1.12.0.tar.gz",  # 2018-12-10
--    ],
--)
--
--bind(
--    name = "six",
--    actual = "@six_archive//:six",
--)
--
--http_archive(
--    name = "com_google_protobuf",
--    sha256 = "1fbf1c2962af287607232b2eddeaec9b4f4a7a6f5934e1a9276e9af76952f7e0",
--    strip_prefix = "protobuf-3.9.2",
--    urls = ["https://github.com/protocolbuffers/protobuf/archive/v3.9.2.tar.gz"],
--)
--load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")
--protobuf_deps()
-diff --git a/keras/protobuf/BUILD b/keras/protobuf/BUILD
-index 871d9f6b..9df2b8ce 100644
---- a/keras/protobuf/BUILD
-+++ b/keras/protobuf/BUILD
-@@ -1,7 +1,7 @@
- # Description:
- #   Contains Keras protobufs
- 
--load("@com_google_protobuf//:protobuf.bzl", "py_proto_library")
-+load("//third_party:protobuf.bzl", "py_proto_library")
- 
- package(
-     default_visibility = [
-diff --git a/third_party/BUILD b/third_party/BUILD
-index 9be54076..9399232f 100644
---- a/third_party/BUILD
-+++ b/third_party/BUILD
-@@ -1,4 +1,5 @@
- package(
-+    default_visibility = ["//visibility:public"],
-     licenses = ["notice"],  # Apache 2.0
- )
- 
-@@ -7,4 +8,9 @@ exports_files([
-     "six.BUILD",
- ])
- 
--package(default_visibility = ["//visibility:public"])
-+genrule(
-+    name = "protoc",
-+    outs = ["protoc.bin"],
-+    cmd = "ln -s $$(which protoc) $@",
-+    executable = 1,
-+)
-diff --git a/third_party/protobuf.bzl b/third_party/protobuf.bzl
-new file mode 100644
-index 00000000..3a7ef0a2
---- /dev/null
-+++ b/third_party/protobuf.bzl
-@@ -0,0 +1,216 @@
-+def _GetPath(ctx, path):
-+    if ctx.label.workspace_root:
-+        return ctx.label.workspace_root + "/" + path
-+    else:
-+        return path
-+
-+def _IsNewExternal(ctx):
-+    # Bazel 0.4.4 and older have genfiles paths that look like:
-+    #   bazel-out/local-fastbuild/genfiles/external/repo/foo
-+    # After the exec root rearrangement, they look like:
-+    #   ../repo/bazel-out/local-fastbuild/genfiles/foo
-+    return ctx.label.workspace_root.startswith("../")
-+
-+def _GenDir(ctx):
-+    if _IsNewExternal(ctx):
-+        # We are using the fact that Bazel 0.4.4+ provides repository-relative paths
-+        # for ctx.genfiles_dir.
-+        return ctx.genfiles_dir.path + (
-+            "/" + ctx.attr.includes[0] if ctx.attr.includes and ctx.attr.includes[0] else ""
-+        )
-+
-+    # This means that we're either in the old version OR the new version in the local repo.
-+    # Either way, appending the source path to the genfiles dir works.
-+    return ctx.var["GENDIR"] + "/" + _SourceDir(ctx)
-+
-+def _SourceDir(ctx):
-+    if not ctx.attr.includes:
-+        return ctx.label.workspace_root
-+    if not ctx.attr.includes[0]:
-+        return _GetPath(ctx, ctx.label.package)
-+    if not ctx.label.package:
-+        return _GetPath(ctx, ctx.attr.includes[0])
-+    return _GetPath(ctx, ctx.label.package + "/" + ctx.attr.includes[0])
-+
-+def _PyOuts(srcs, use_grpc_plugin = False):
-+    ret = [s[:-len(".proto")] + "_pb2.py" for s in srcs]
-+    if use_grpc_plugin:
-+        ret += [s[:-len(".proto")] + "_pb2_grpc.py" for s in srcs]
-+    return ret
-+
-+def _proto_gen_impl(ctx):
-+    """General implementation for generating protos"""
-+    srcs = ctx.files.srcs
-+    deps = []
-+    deps += ctx.files.srcs
-+    source_dir = _SourceDir(ctx)
-+    gen_dir = _GenDir(ctx)
-+    if source_dir:
-+        import_flags = ["-I" + source_dir, "-I" + gen_dir]
-+    else:
-+        import_flags = ["-I."]
-+
-+    for dep in ctx.attr.deps:
-+        import_flags += dep.proto.import_flags
-+        deps += dep.proto.deps
-+    import_flags = depset(import_flags).to_list()
-+    deps = depset(deps).to_list()
-+
-+    args = []
-+    if ctx.attr.gen_cc:
-+        args += ["--cpp_out=" + gen_dir]
-+    if ctx.attr.gen_py:
-+        args += ["--python_out=" + gen_dir]
-+
-+    inputs = srcs + deps
-+    tools = [ctx.executable.protoc]
-+    if ctx.executable.plugin:
-+        plugin = ctx.executable.plugin
-+        lang = ctx.attr.plugin_language
-+        if not lang and plugin.basename.startswith("protoc-gen-"):
-+            lang = plugin.basename[len("protoc-gen-"):]
-+        if not lang:
-+            fail("cannot infer the target language of plugin", "plugin_language")
-+
-+        outdir = gen_dir
-+        if ctx.attr.plugin_options:
-+            outdir = ",".join(ctx.attr.plugin_options) + ":" + outdir
-+        args += ["--plugin=protoc-gen-%s=%s" % (lang, plugin.path)]
-+        args += ["--%s_out=%s" % (lang, outdir)]
-+        tools.append(plugin)
-+
-+    if args:
-+        ctx.actions.run(
-+            inputs = inputs,
-+            outputs = ctx.outputs.outs,
-+            arguments = args + import_flags + [s.path for s in srcs],
-+            executable = ctx.executable.protoc,
-+            mnemonic = "ProtoCompile",
-+            tools = tools,
-+            use_default_shell_env = True,
-+        )
-+
-+    return struct(
-+        proto = struct(
-+            srcs = srcs,
-+            import_flags = import_flags,
-+            deps = deps,
-+        ),
-+    )
-+
-+proto_gen = rule(
-+    attrs = {
-+        "srcs": attr.label_list(allow_files = True),
-+        "deps": attr.label_list(providers = ["proto"]),
-+        "includes": attr.string_list(),
-+        "protoc": attr.label(
-+            cfg = "host",
-+            executable = True,
-+            allow_single_file = True,
-+            mandatory = True,
-+        ),
-+        "plugin": attr.label(
-+            cfg = "host",
-+            allow_files = True,
-+            executable = True,
-+        ),
-+        "plugin_language": attr.string(),
-+        "plugin_options": attr.string_list(),
-+        "gen_cc": attr.bool(),
-+        "gen_py": attr.bool(),
-+        "outs": attr.output_list(),
-+    },
-+    output_to_genfiles = True,
-+    implementation = _proto_gen_impl,
-+)
-+"""Generates codes from Protocol Buffers definitions.
-+
-+This rule helps you to implement Skylark macros specific to the target
-+language. You should prefer more specific `cc_proto_library `,
-+`py_proto_library` and others unless you are adding such wrapper macros.
-+
-+Args:
-+  srcs: Protocol Buffers definition files (.proto) to run the protocol compiler
-+    against.
-+  deps: a list of dependency labels; must be other proto libraries.
-+  includes: a list of include paths to .proto files.
-+  protoc: the label of the protocol compiler to generate the sources.
-+  plugin: the label of the protocol compiler plugin to be passed to the protocol
-+    compiler.
-+  plugin_language: the language of the generated sources
-+  plugin_options: a list of options to be passed to the plugin
-+  gen_cc: generates C++ sources in addition to the ones from the plugin.
-+  gen_py: generates Python sources in addition to the ones from the plugin.
-+  outs: a list of labels of the expected outputs from the protocol compiler.
-+"""
-+
-+def py_proto_library(
-+        name,
-+        srcs = [],
-+        deps = [],
-+        py_libs = [],
-+        py_extra_srcs = [],
-+        include = None,
-+        default_runtime = None,
-+        protoc = "//third_party:protoc",
-+        use_grpc_plugin = False,
-+        **kwargs):
-+    """Bazel rule to create a Python protobuf library from proto source files
-+
-+    NOTE: the rule is only an internal workaround to generate protos. The
-+    interface may change and the rule may be removed when bazel has introduced
-+    the native rule.
-+
-+    Args:
-+      name: the name of the py_proto_library.
-+      srcs: the .proto files of the py_proto_library.
-+      deps: a list of dependency labels; must be py_proto_library.
-+      py_libs: a list of other py_library targets depended by the generated
-+          py_library.
-+      py_extra_srcs: extra source files that will be added to the output
-+          py_library. This attribute is used for internal bootstrapping.
-+      include: a string indicating the include path of the .proto files.
-+      default_runtime: the implicitly default runtime which will be depended on by
-+          the generated py_library target.
-+      protoc: the label of the protocol compiler to generate the sources.
-+      use_grpc_plugin: a flag to indicate whether to call the Python C++ plugin
-+          when processing the proto files.
-+      **kwargs: other keyword arguments that are passed to py_library.
-+
-+    """
-+    outs = _PyOuts(srcs, use_grpc_plugin)
-+
-+    includes = []
-+    if include != None:
-+        includes = [include]
-+
-+    grpc_python_plugin = None
-+    if use_grpc_plugin:
-+        grpc_python_plugin = "//external:grpc_python_plugin"
-+        # Note: Generated grpc code depends on Python grpc module. This dependency
-+        # is not explicitly listed in py_libs. Instead, host system is assumed to
-+        # have grpc installed.
-+
-+    proto_gen(
-+        name = name + "_genproto",
-+        srcs = srcs,
-+        deps = [s + "_genproto" for s in deps],
-+        includes = includes,
-+        protoc = protoc,
-+        gen_py = 1,
-+        outs = outs,
-+        visibility = ["//visibility:public"],
-+        plugin = grpc_python_plugin,
-+        plugin_language = "grpc",
-+    )
-+
-+    if default_runtime and not default_runtime in py_libs + deps:
-+        py_libs = py_libs + [default_runtime]
-+
-+    native.py_library(
-+        name = name,
-+        srcs = outs + py_extra_srcs,
-+        deps = py_libs + deps,
-+        imports = includes,
-+        **kwargs
-+    )
--- 
-2.32.0
-

diff --git a/sci-libs/keras/files/keras-2.9.0-0001-bazel-Use-system-protobuf.patch b/sci-libs/keras/files/keras-2.9.0-0001-bazel-Use-system-protobuf.patch
deleted file mode 100644
index b571a8b994bc..000000000000
--- a/sci-libs/keras/files/keras-2.9.0-0001-bazel-Use-system-protobuf.patch
+++ /dev/null
@@ -1,331 +0,0 @@
-From c79e1177ff9f2e0de9070c604a812ff768c2c8c8 Mon Sep 17 00:00:00 2001
-From: Jason Zaman <jason@perfinion.com>
-Date: Sun, 14 Nov 2021 17:59:39 -0800
-Subject: [PATCH] bazel: Use system protobuf
-
----
- WORKSPACE                |  53 ----------
- keras/protobuf/BUILD     |   2 +-
- third_party/BUILD        |   8 +-
- third_party/protobuf.bzl | 216 +++++++++++++++++++++++++++++++++++++++
- 4 files changed, 224 insertions(+), 55 deletions(-)
- create mode 100644 third_party/protobuf.bzl
-
-diff --git a/WORKSPACE b/WORKSPACE
-index 39f478f8..61282aea 100644
---- a/WORKSPACE
-+++ b/WORKSPACE
-@@ -1,54 +1 @@
- workspace(name = "org_keras")
--
--load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
--
--# Needed by protobuf
--load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
--http_archive(
--    name = "bazel_skylib",
--    url = "https://github.com/bazelbuild/bazel-skylib/releases/download/1.0.1/bazel-skylib-1.0.1.tar.gz",
--    sha256 = "f1c8360c01fcf276778d3519394805dc2a71a64274a3a0908bc9edff7b5aebc8",
--)
--load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace")
--bazel_skylib_workspace()
--
--# Needed by protobuf
--http_archive(
--    name = "six_archive",
--    build_file = "//third_party:six.BUILD",
--    sha256 = "d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73",
--    strip_prefix = "six-1.12.0",
--    urls = [
--        "http://mirror.bazel.build/pypi.python.org/packages/source/s/six/six-1.12.0.tar.gz",
--        "https://pypi.python.org/packages/source/s/six/six-1.12.0.tar.gz",  # 2018-12-10
--    ],
--)
--
--bind(
--    name = "six",
--    actual = "@six_archive//:six",
--)
--
--http_archive(
--    name = "com_google_protobuf",
--    sha256 = "1fbf1c2962af287607232b2eddeaec9b4f4a7a6f5934e1a9276e9af76952f7e0",
--    strip_prefix = "protobuf-3.9.2",
--    urls = ["https://github.com/protocolbuffers/protobuf/archive/v3.9.2.tar.gz"],
--)
--
--# ZLIB
--# Need by com_google_protobuf. Note that the original URL from zlib side is not
--# available for now. We need to use bazel mirror as a backup.
--http_archive(
--    name = "zlib",
--    build_file = "@com_google_protobuf//:third_party/zlib.BUILD",
--    sha256 = "c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1",
--    strip_prefix = "zlib-1.2.11",
--    urls = [
--        "https://mirror.bazel.build/zlib.net/zlib-1.2.11.tar.gz",
--        "https://zlib.net/zlib-1.2.11.tar.gz",
--    ],
--)
--
--load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")
--protobuf_deps()
-diff --git a/keras/protobuf/BUILD b/keras/protobuf/BUILD
-index 413dcb74..80133c06 100644
---- a/keras/protobuf/BUILD
-+++ b/keras/protobuf/BUILD
-@@ -1,7 +1,7 @@
- # Description:
- #   Contains Keras protobufs
- 
--load("@com_google_protobuf//:protobuf.bzl", "py_proto_library")
-+load("//third_party:protobuf.bzl", "py_proto_library")
- 
- package(
-     default_visibility = [
-diff --git a/third_party/BUILD b/third_party/BUILD
-index 9be54076..9399232f 100644
---- a/third_party/BUILD
-+++ b/third_party/BUILD
-@@ -1,4 +1,5 @@
- package(
-+    default_visibility = ["//visibility:public"],
-     licenses = ["notice"],  # Apache 2.0
- )
- 
-@@ -7,4 +8,9 @@ exports_files([
-     "six.BUILD",
- ])
- 
--package(default_visibility = ["//visibility:public"])
-+genrule(
-+    name = "protoc",
-+    outs = ["protoc.bin"],
-+    cmd = "ln -s $$(which protoc) $@",
-+    executable = 1,
-+)
-diff --git a/third_party/protobuf.bzl b/third_party/protobuf.bzl
-new file mode 100644
-index 00000000..3a7ef0a2
---- /dev/null
-+++ b/third_party/protobuf.bzl
-@@ -0,0 +1,216 @@
-+def _GetPath(ctx, path):
-+    if ctx.label.workspace_root:
-+        return ctx.label.workspace_root + "/" + path
-+    else:
-+        return path
-+
-+def _IsNewExternal(ctx):
-+    # Bazel 0.4.4 and older have genfiles paths that look like:
-+    #   bazel-out/local-fastbuild/genfiles/external/repo/foo
-+    # After the exec root rearrangement, they look like:
-+    #   ../repo/bazel-out/local-fastbuild/genfiles/foo
-+    return ctx.label.workspace_root.startswith("../")
-+
-+def _GenDir(ctx):
-+    if _IsNewExternal(ctx):
-+        # We are using the fact that Bazel 0.4.4+ provides repository-relative paths
-+        # for ctx.genfiles_dir.
-+        return ctx.genfiles_dir.path + (
-+            "/" + ctx.attr.includes[0] if ctx.attr.includes and ctx.attr.includes[0] else ""
-+        )
-+
-+    # This means that we're either in the old version OR the new version in the local repo.
-+    # Either way, appending the source path to the genfiles dir works.
-+    return ctx.var["GENDIR"] + "/" + _SourceDir(ctx)
-+
-+def _SourceDir(ctx):
-+    if not ctx.attr.includes:
-+        return ctx.label.workspace_root
-+    if not ctx.attr.includes[0]:
-+        return _GetPath(ctx, ctx.label.package)
-+    if not ctx.label.package:
-+        return _GetPath(ctx, ctx.attr.includes[0])
-+    return _GetPath(ctx, ctx.label.package + "/" + ctx.attr.includes[0])
-+
-+def _PyOuts(srcs, use_grpc_plugin = False):
-+    ret = [s[:-len(".proto")] + "_pb2.py" for s in srcs]
-+    if use_grpc_plugin:
-+        ret += [s[:-len(".proto")] + "_pb2_grpc.py" for s in srcs]
-+    return ret
-+
-+def _proto_gen_impl(ctx):
-+    """General implementation for generating protos"""
-+    srcs = ctx.files.srcs
-+    deps = []
-+    deps += ctx.files.srcs
-+    source_dir = _SourceDir(ctx)
-+    gen_dir = _GenDir(ctx)
-+    if source_dir:
-+        import_flags = ["-I" + source_dir, "-I" + gen_dir]
-+    else:
-+        import_flags = ["-I."]
-+
-+    for dep in ctx.attr.deps:
-+        import_flags += dep.proto.import_flags
-+        deps += dep.proto.deps
-+    import_flags = depset(import_flags).to_list()
-+    deps = depset(deps).to_list()
-+
-+    args = []
-+    if ctx.attr.gen_cc:
-+        args += ["--cpp_out=" + gen_dir]
-+    if ctx.attr.gen_py:
-+        args += ["--python_out=" + gen_dir]
-+
-+    inputs = srcs + deps
-+    tools = [ctx.executable.protoc]
-+    if ctx.executable.plugin:
-+        plugin = ctx.executable.plugin
-+        lang = ctx.attr.plugin_language
-+        if not lang and plugin.basename.startswith("protoc-gen-"):
-+            lang = plugin.basename[len("protoc-gen-"):]
-+        if not lang:
-+            fail("cannot infer the target language of plugin", "plugin_language")
-+
-+        outdir = gen_dir
-+        if ctx.attr.plugin_options:
-+            outdir = ",".join(ctx.attr.plugin_options) + ":" + outdir
-+        args += ["--plugin=protoc-gen-%s=%s" % (lang, plugin.path)]
-+        args += ["--%s_out=%s" % (lang, outdir)]
-+        tools.append(plugin)
-+
-+    if args:
-+        ctx.actions.run(
-+            inputs = inputs,
-+            outputs = ctx.outputs.outs,
-+            arguments = args + import_flags + [s.path for s in srcs],
-+            executable = ctx.executable.protoc,
-+            mnemonic = "ProtoCompile",
-+            tools = tools,
-+            use_default_shell_env = True,
-+        )
-+
-+    return struct(
-+        proto = struct(
-+            srcs = srcs,
-+            import_flags = import_flags,
-+            deps = deps,
-+        ),
-+    )
-+
-+proto_gen = rule(
-+    attrs = {
-+        "srcs": attr.label_list(allow_files = True),
-+        "deps": attr.label_list(providers = ["proto"]),
-+        "includes": attr.string_list(),
-+        "protoc": attr.label(
-+            cfg = "host",
-+            executable = True,
-+            allow_single_file = True,
-+            mandatory = True,
-+        ),
-+        "plugin": attr.label(
-+            cfg = "host",
-+            allow_files = True,
-+            executable = True,
-+        ),
-+        "plugin_language": attr.string(),
-+        "plugin_options": attr.string_list(),
-+        "gen_cc": attr.bool(),
-+        "gen_py": attr.bool(),
-+        "outs": attr.output_list(),
-+    },
-+    output_to_genfiles = True,
-+    implementation = _proto_gen_impl,
-+)
-+"""Generates codes from Protocol Buffers definitions.
-+
-+This rule helps you to implement Skylark macros specific to the target
-+language. You should prefer more specific `cc_proto_library `,
-+`py_proto_library` and others unless you are adding such wrapper macros.
-+
-+Args:
-+  srcs: Protocol Buffers definition files (.proto) to run the protocol compiler
-+    against.
-+  deps: a list of dependency labels; must be other proto libraries.
-+  includes: a list of include paths to .proto files.
-+  protoc: the label of the protocol compiler to generate the sources.
-+  plugin: the label of the protocol compiler plugin to be passed to the protocol
-+    compiler.
-+  plugin_language: the language of the generated sources
-+  plugin_options: a list of options to be passed to the plugin
-+  gen_cc: generates C++ sources in addition to the ones from the plugin.
-+  gen_py: generates Python sources in addition to the ones from the plugin.
-+  outs: a list of labels of the expected outputs from the protocol compiler.
-+"""
-+
-+def py_proto_library(
-+        name,
-+        srcs = [],
-+        deps = [],
-+        py_libs = [],
-+        py_extra_srcs = [],
-+        include = None,
-+        default_runtime = None,
-+        protoc = "//third_party:protoc",
-+        use_grpc_plugin = False,
-+        **kwargs):
-+    """Bazel rule to create a Python protobuf library from proto source files
-+
-+    NOTE: the rule is only an internal workaround to generate protos. The
-+    interface may change and the rule may be removed when bazel has introduced
-+    the native rule.
-+
-+    Args:
-+      name: the name of the py_proto_library.
-+      srcs: the .proto files of the py_proto_library.
-+      deps: a list of dependency labels; must be py_proto_library.
-+      py_libs: a list of other py_library targets depended by the generated
-+          py_library.
-+      py_extra_srcs: extra source files that will be added to the output
-+          py_library. This attribute is used for internal bootstrapping.
-+      include: a string indicating the include path of the .proto files.
-+      default_runtime: the implicitly default runtime which will be depended on by
-+          the generated py_library target.
-+      protoc: the label of the protocol compiler to generate the sources.
-+      use_grpc_plugin: a flag to indicate whether to call the Python C++ plugin
-+          when processing the proto files.
-+      **kwargs: other keyword arguments that are passed to py_library.
-+
-+    """
-+    outs = _PyOuts(srcs, use_grpc_plugin)
-+
-+    includes = []
-+    if include != None:
-+        includes = [include]
-+
-+    grpc_python_plugin = None
-+    if use_grpc_plugin:
-+        grpc_python_plugin = "//external:grpc_python_plugin"
-+        # Note: Generated grpc code depends on Python grpc module. This dependency
-+        # is not explicitly listed in py_libs. Instead, host system is assumed to
-+        # have grpc installed.
-+
-+    proto_gen(
-+        name = name + "_genproto",
-+        srcs = srcs,
-+        deps = [s + "_genproto" for s in deps],
-+        includes = includes,
-+        protoc = protoc,
-+        gen_py = 1,
-+        outs = outs,
-+        visibility = ["//visibility:public"],
-+        plugin = grpc_python_plugin,
-+        plugin_language = "grpc",
-+    )
-+
-+    if default_runtime and not default_runtime in py_libs + deps:
-+        py_libs = py_libs + [default_runtime]
-+
-+    native.py_library(
-+        name = name,
-+        srcs = outs + py_extra_srcs,
-+        deps = py_libs + deps,
-+        imports = includes,
-+        **kwargs
-+    )
--- 
-2.35.1
-

diff --git a/sci-libs/keras/keras-2.8.0.ebuild b/sci-libs/keras/keras-2.8.0.ebuild
deleted file mode 100644
index ad31dfa47c78..000000000000
--- a/sci-libs/keras/keras-2.8.0.ebuild
+++ /dev/null
@@ -1,87 +0,0 @@
-# Copyright 1999-2022 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{8,9} )
-inherit bazel distutils-r1
-
-DESCRIPTION="Deep Learning for humans"
-HOMEPAGE="https://keras.io/"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~amd64"
-IUSE=""
-
-bazel_external_uris="
-	https://github.com/bazelbuild/rules_cc/archive/b1c40e1de81913a3c40e5948f78719c28152486d.zip -> bazelbuild-rules_cc-b1c40e1de81913a3c40e5948f78719c28152486d.zip
-	https://github.com/bazelbuild/rules_java/archive/7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip -> bazelbuild-rules_java-7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip"
-
-SRC_URI="https://github.com/keras-team/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz
-	${bazel_external_uris}"
-
-RDEPEND="
-	>=dev-libs/protobuf-3.13.0:=
-	dev-python/absl-py[${PYTHON_USEDEP}]
-	dev-python/h5py[${PYTHON_USEDEP}]
-	dev-python/numpy[${PYTHON_USEDEP}]
-	dev-python/pandas[${PYTHON_USEDEP}]
-	dev-python/pillow[${PYTHON_USEDEP}]
-	>=dev-python/protobuf-python-3.13.0[${PYTHON_USEDEP}]
-	dev-python/six[${PYTHON_USEDEP}]
-	>=sci-libs/keras-applications-1.0.8[${PYTHON_USEDEP}]
-	>=sci-libs/keras-preprocessing-1.1.2[${PYTHON_USEDEP}]
-	>=sci-libs/tensorflow-2.8[python,${PYTHON_USEDEP}]"
-DEPEND="${RDEPEND}
-	dev-python/setuptools[${PYTHON_USEDEP}]"
-BDEPEND="
-	app-arch/unzip
-	>=dev-libs/protobuf-3.13.0
-	dev-java/java-config
-	>=dev-util/bazel-4.2.2"
-
-# Bazel tests not pytest, also want GPU access
-RESTRICT="test"
-DOCS=( CONTRIBUTING.md README.md )
-PATCHES=(
-	"${FILESDIR}/keras-2.7.0-0001-bazel-Use-system-protobuf.patch"
-)
-
-src_unpack() {
-	unpack "${P}.tar.gz"
-	bazel_load_distfiles "${bazel_external_uris}"
-}
-
-src_prepare() {
-	bazel_setup_bazelrc
-	default
-	python_copy_sources
-}
-
-src_compile() {
-	export JAVA_HOME=$(java-config --jre-home)
-
-	do_compile() {
-		ebazel build //keras/tools/pip_package:build_pip_package
-		ebazel shutdown
-
-		local srcdir="${T}/src-${EPYTHON/./_}"
-		mkdir -p "${srcdir}" || die
-		bazel-bin/keras/tools/pip_package/build_pip_package --src "${srcdir}" || die
-	}
-
-	python_foreach_impl run_in_build_dir do_compile
-}
-
-src_install() {
-	do_install() {
-		cd "${T}/src-${EPYTHON/./_}" || die
-		esetup.py install
-		python_optimize
-	}
-	python_foreach_impl do_install
-
-	cd "${S}" || die
-	einstalldocs
-}

diff --git a/sci-libs/keras/keras-2.9.0.ebuild b/sci-libs/keras/keras-2.9.0.ebuild
deleted file mode 100644
index e6119a59a075..000000000000
--- a/sci-libs/keras/keras-2.9.0.ebuild
+++ /dev/null
@@ -1,85 +0,0 @@
-# Copyright 1999-2022 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{8,9,10} )
-inherit bazel distutils-r1
-
-DESCRIPTION="Deep Learning for humans"
-HOMEPAGE="https://keras.io/"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~amd64"
-IUSE=""
-
-bazel_external_uris="
-	https://github.com/bazelbuild/rules_cc/archive/b1c40e1de81913a3c40e5948f78719c28152486d.zip -> bazelbuild-rules_cc-b1c40e1de81913a3c40e5948f78719c28152486d.zip
-	https://github.com/bazelbuild/rules_java/archive/7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip -> bazelbuild-rules_java-7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip"
-
-SRC_URI="https://github.com/keras-team/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz
-	${bazel_external_uris}"
-
-RDEPEND="
-	>=dev-libs/protobuf-3.13.0:=
-	dev-python/absl-py[${PYTHON_USEDEP}]
-	dev-python/h5py[${PYTHON_USEDEP}]
-	dev-python/numpy[${PYTHON_USEDEP}]
-	dev-python/pandas[${PYTHON_USEDEP}]
-	dev-python/pillow[${PYTHON_USEDEP}]
-	>=dev-python/protobuf-python-3.13.0[${PYTHON_USEDEP}]
-	dev-python/six[${PYTHON_USEDEP}]
-	>=sci-libs/keras-applications-1.0.8[${PYTHON_USEDEP}]
-	>=sci-libs/keras-preprocessing-1.1.2[${PYTHON_USEDEP}]
-	>=sci-libs/tensorflow-2.9[python,${PYTHON_USEDEP}]"
-DEPEND="${RDEPEND}
-	dev-python/setuptools[${PYTHON_USEDEP}]"
-BDEPEND="
-	app-arch/unzip
-	>=dev-libs/protobuf-3.13.0
-	dev-java/java-config
-	>=dev-util/bazel-4.2.2"
-
-# Bazel tests not pytest, also want GPU access
-RESTRICT="test"
-DOCS=( CONTRIBUTING.md README.md )
-PATCHES=(
-	"${FILESDIR}/keras-2.9.0-0001-bazel-Use-system-protobuf.patch"
-)
-
-src_unpack() {
-	unpack "${P}.tar.gz"
-	bazel_load_distfiles "${bazel_external_uris}"
-}
-
-src_prepare() {
-	bazel_setup_bazelrc
-	default
-	python_copy_sources
-}
-
-python_compile() {
-	pushd "${BUILD_DIR}" >/dev/null || die
-
-	ebazel build //keras/tools/pip_package:build_pip_package
-	ebazel shutdown
-
-	local srcdir="${T}/src-${EPYTHON/./_}"
-	mkdir -p "${srcdir}" || die
-	bazel-bin/keras/tools/pip_package/build_pip_package --src "${srcdir}" || die
-
-	popd || die
-}
-
-src_compile() {
-	export JAVA_HOME=$(java-config --jre-home)
-	distutils-r1_src_compile
-}
-
-python_install() {
-	pushd "${T}/src-${EPYTHON/./_}" >/dev/null || die
-	esetup.py install
-	python_optimize
-	popd || die
-}


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: sci-libs/keras/files/, sci-libs/keras/
@ 2022-11-25 18:27 Jason Zaman
  0 siblings, 0 replies; 5+ messages in thread
From: Jason Zaman @ 2022-11-25 18:27 UTC (permalink / raw
  To: gentoo-commits

commit:     b8be5a0b368e0cef3e7dbf0a59cee2b8c314fa50
Author:     Jason Zaman <perfinion <AT> gentoo <DOT> org>
AuthorDate: Tue Nov 22 22:03:33 2022 +0000
Commit:     Jason Zaman <perfinion <AT> gentoo <DOT> org>
CommitDate: Fri Nov 25 18:22:03 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b8be5a0b

sci-libs/keras: add 2.11.0

Signed-off-by: Jason Zaman <perfinion <AT> gentoo.org>

 sci-libs/keras/Manifest                            |   1 +
 ...ras-2.11.0-0001-bazel-Use-system-protobuf.patch | 330 +++++++++++++++++++++
 sci-libs/keras/keras-2.11.0.ebuild                 |  85 ++++++
 3 files changed, 416 insertions(+)

diff --git a/sci-libs/keras/Manifest b/sci-libs/keras/Manifest
index 3ac4fb7500a7..495367cc87b0 100644
--- a/sci-libs/keras/Manifest
+++ b/sci-libs/keras/Manifest
@@ -1,3 +1,4 @@
 DIST bazelbuild-rules_cc-b1c40e1de81913a3c40e5948f78719c28152486d.zip 201360 BLAKE2B 0173a8edb17f344b18e42026e2f8a62a1909d4694ab0be83562b6437a3f1ef38889f069269ddd2308b41062e5f375f791be0d2631a8e52ede668203779813b56 SHA512 2ba1dc316d88947c1d17ec67154c052700e3571b8d03370a9f204cf9fe94a1bd58f93a2c4a3c0b02233ee3250053a4c30a4133b5b38745858c1d04be8c9d973f
 DIST bazelbuild-rules_java-7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip 9422 BLAKE2B bbc45c97551ee8126335b611ffca6574dac843d4db9b3221b10d26487f8eecfe38ba0cd67a4039a3ad921c25fea6294c43e4f4e7a57a060a30791acd6c4f9d39 SHA512 ba06242feb711e7fb6e821fd9ac029248b4f3e466fb1acf971d0db8196f3efe4d114ef137acbe4913073f8cbe8ccab4d47d8bafa21b867b2d6a6d57f5a647f0c
 DIST keras-2.10.0.tar.gz 2250425 BLAKE2B eb05537739cdc81e279b5c400e2e2b77d46f4085e8530fef565bde12414ddccedb44c0b13265106a3353e67c367106e1d341412dc25b32e2221f144a31d76079 SHA512 8682110495a045c2ebc61f31a98d646b88fd9608d5169be78701cf528457ff0d2e39669d885854c14c1e6bebb380b14968957f2a8a34a8a023f8860efc7aeecd
+DIST keras-2.11.0.tar.gz 2260857 BLAKE2B 9c85e0f64176848886509fbf269b85732f8ad98e7be3ec186e71870e453454b9b81516ef2ca4e67fb8906bc0ca1241d61ae94db6b58c7483527d33519f7c38fb SHA512 17c773e1f9c592676d56a8b3eed707d52240800b33e85dccccb80f206e8459c8c18485f0bcb6d5775ce1ef0625dc5ebe699574b8599dd98dbb73620da4301968

diff --git a/sci-libs/keras/files/keras-2.11.0-0001-bazel-Use-system-protobuf.patch b/sci-libs/keras/files/keras-2.11.0-0001-bazel-Use-system-protobuf.patch
new file mode 100644
index 000000000000..9d8f645970d2
--- /dev/null
+++ b/sci-libs/keras/files/keras-2.11.0-0001-bazel-Use-system-protobuf.patch
@@ -0,0 +1,330 @@
+From 439f4ece698f90796b42d8627a52deccce8efc97 Mon Sep 17 00:00:00 2001
+From: Jason Zaman <jason@perfinion.com>
+Date: Sun, 14 Nov 2021 17:59:39 -0800
+Subject: [PATCH] bazel: Use system protobuf
+
+---
+ WORKSPACE                |  52 ----------
+ keras/protobuf/BUILD     |   2 +-
+ third_party/BUILD        |   8 +-
+ third_party/protobuf.bzl | 216 +++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 224 insertions(+), 54 deletions(-)
+ create mode 100644 third_party/protobuf.bzl
+
+diff --git a/WORKSPACE b/WORKSPACE
+index e7d7c8f5..61282aea 100644
+--- a/WORKSPACE
++++ b/WORKSPACE
+@@ -1,53 +1 @@
+ workspace(name = "org_keras")
+-
+-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+-
+-# Needed by protobuf
+-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+-http_archive(
+-    name = "bazel_skylib",
+-    url = "https://github.com/bazelbuild/bazel-skylib/releases/download/1.0.1/bazel-skylib-1.0.1.tar.gz",
+-    sha256 = "f1c8360c01fcf276778d3519394805dc2a71a64274a3a0908bc9edff7b5aebc8",
+-)
+-load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace")
+-bazel_skylib_workspace()
+-
+-# Needed by protobuf
+-http_archive(
+-    name = "six_archive",
+-    build_file = "//third_party:six.BUILD",
+-    sha256 = "d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73",
+-    strip_prefix = "six-1.12.0",
+-    urls = [
+-        "http://mirror.bazel.build/pypi.python.org/packages/source/s/six/six-1.12.0.tar.gz",
+-        "https://pypi.python.org/packages/source/s/six/six-1.12.0.tar.gz",  # 2018-12-10
+-    ],
+-)
+-
+-bind(
+-    name = "six",
+-    actual = "@six_archive//:six",
+-)
+-
+-http_archive(
+-    name = "com_google_protobuf",
+-    sha256 = "1fbf1c2962af287607232b2eddeaec9b4f4a7a6f5934e1a9276e9af76952f7e0",
+-    strip_prefix = "protobuf-3.9.2",
+-    urls = ["https://github.com/protocolbuffers/protobuf/archive/v3.9.2.tar.gz"],
+-)
+-
+-# ZLIB. Need by com_google_protobuf.
+-http_archive(
+-    name = "zlib",
+-    build_file = "@com_google_protobuf//:third_party/zlib.BUILD",
+-    sha256 = "b3a24de97a8fdbc835b9833169501030b8977031bcb54b3b3ac13740f846ab30",
+-    strip_prefix = "zlib-1.2.13",
+-    urls = [
+-      "https://storage.googleapis.com/mirror.tensorflow.org/zlib.net/zlib-1.2.13.tar.gz",
+-      "https://zlib.net/zlib-1.2.13.tar.gz",
+-      ],
+-)
+-
+-
+-load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")
+-protobuf_deps()
+diff --git a/keras/protobuf/BUILD b/keras/protobuf/BUILD
+index 413dcb74..80133c06 100644
+--- a/keras/protobuf/BUILD
++++ b/keras/protobuf/BUILD
+@@ -1,7 +1,7 @@
+ # Description:
+ #   Contains Keras protobufs
+ 
+-load("@com_google_protobuf//:protobuf.bzl", "py_proto_library")
++load("//third_party:protobuf.bzl", "py_proto_library")
+ 
+ package(
+     default_visibility = [
+diff --git a/third_party/BUILD b/third_party/BUILD
+index 9be54076..9399232f 100644
+--- a/third_party/BUILD
++++ b/third_party/BUILD
+@@ -1,4 +1,5 @@
+ package(
++    default_visibility = ["//visibility:public"],
+     licenses = ["notice"],  # Apache 2.0
+ )
+ 
+@@ -7,4 +8,9 @@ exports_files([
+     "six.BUILD",
+ ])
+ 
+-package(default_visibility = ["//visibility:public"])
++genrule(
++    name = "protoc",
++    outs = ["protoc.bin"],
++    cmd = "ln -s $$(which protoc) $@",
++    executable = 1,
++)
+diff --git a/third_party/protobuf.bzl b/third_party/protobuf.bzl
+new file mode 100644
+index 00000000..3a7ef0a2
+--- /dev/null
++++ b/third_party/protobuf.bzl
+@@ -0,0 +1,216 @@
++def _GetPath(ctx, path):
++    if ctx.label.workspace_root:
++        return ctx.label.workspace_root + "/" + path
++    else:
++        return path
++
++def _IsNewExternal(ctx):
++    # Bazel 0.4.4 and older have genfiles paths that look like:
++    #   bazel-out/local-fastbuild/genfiles/external/repo/foo
++    # After the exec root rearrangement, they look like:
++    #   ../repo/bazel-out/local-fastbuild/genfiles/foo
++    return ctx.label.workspace_root.startswith("../")
++
++def _GenDir(ctx):
++    if _IsNewExternal(ctx):
++        # We are using the fact that Bazel 0.4.4+ provides repository-relative paths
++        # for ctx.genfiles_dir.
++        return ctx.genfiles_dir.path + (
++            "/" + ctx.attr.includes[0] if ctx.attr.includes and ctx.attr.includes[0] else ""
++        )
++
++    # This means that we're either in the old version OR the new version in the local repo.
++    # Either way, appending the source path to the genfiles dir works.
++    return ctx.var["GENDIR"] + "/" + _SourceDir(ctx)
++
++def _SourceDir(ctx):
++    if not ctx.attr.includes:
++        return ctx.label.workspace_root
++    if not ctx.attr.includes[0]:
++        return _GetPath(ctx, ctx.label.package)
++    if not ctx.label.package:
++        return _GetPath(ctx, ctx.attr.includes[0])
++    return _GetPath(ctx, ctx.label.package + "/" + ctx.attr.includes[0])
++
++def _PyOuts(srcs, use_grpc_plugin = False):
++    ret = [s[:-len(".proto")] + "_pb2.py" for s in srcs]
++    if use_grpc_plugin:
++        ret += [s[:-len(".proto")] + "_pb2_grpc.py" for s in srcs]
++    return ret
++
++def _proto_gen_impl(ctx):
++    """General implementation for generating protos"""
++    srcs = ctx.files.srcs
++    deps = []
++    deps += ctx.files.srcs
++    source_dir = _SourceDir(ctx)
++    gen_dir = _GenDir(ctx)
++    if source_dir:
++        import_flags = ["-I" + source_dir, "-I" + gen_dir]
++    else:
++        import_flags = ["-I."]
++
++    for dep in ctx.attr.deps:
++        import_flags += dep.proto.import_flags
++        deps += dep.proto.deps
++    import_flags = depset(import_flags).to_list()
++    deps = depset(deps).to_list()
++
++    args = []
++    if ctx.attr.gen_cc:
++        args += ["--cpp_out=" + gen_dir]
++    if ctx.attr.gen_py:
++        args += ["--python_out=" + gen_dir]
++
++    inputs = srcs + deps
++    tools = [ctx.executable.protoc]
++    if ctx.executable.plugin:
++        plugin = ctx.executable.plugin
++        lang = ctx.attr.plugin_language
++        if not lang and plugin.basename.startswith("protoc-gen-"):
++            lang = plugin.basename[len("protoc-gen-"):]
++        if not lang:
++            fail("cannot infer the target language of plugin", "plugin_language")
++
++        outdir = gen_dir
++        if ctx.attr.plugin_options:
++            outdir = ",".join(ctx.attr.plugin_options) + ":" + outdir
++        args += ["--plugin=protoc-gen-%s=%s" % (lang, plugin.path)]
++        args += ["--%s_out=%s" % (lang, outdir)]
++        tools.append(plugin)
++
++    if args:
++        ctx.actions.run(
++            inputs = inputs,
++            outputs = ctx.outputs.outs,
++            arguments = args + import_flags + [s.path for s in srcs],
++            executable = ctx.executable.protoc,
++            mnemonic = "ProtoCompile",
++            tools = tools,
++            use_default_shell_env = True,
++        )
++
++    return struct(
++        proto = struct(
++            srcs = srcs,
++            import_flags = import_flags,
++            deps = deps,
++        ),
++    )
++
++proto_gen = rule(
++    attrs = {
++        "srcs": attr.label_list(allow_files = True),
++        "deps": attr.label_list(providers = ["proto"]),
++        "includes": attr.string_list(),
++        "protoc": attr.label(
++            cfg = "host",
++            executable = True,
++            allow_single_file = True,
++            mandatory = True,
++        ),
++        "plugin": attr.label(
++            cfg = "host",
++            allow_files = True,
++            executable = True,
++        ),
++        "plugin_language": attr.string(),
++        "plugin_options": attr.string_list(),
++        "gen_cc": attr.bool(),
++        "gen_py": attr.bool(),
++        "outs": attr.output_list(),
++    },
++    output_to_genfiles = True,
++    implementation = _proto_gen_impl,
++)
++"""Generates codes from Protocol Buffers definitions.
++
++This rule helps you to implement Skylark macros specific to the target
++language. You should prefer more specific `cc_proto_library `,
++`py_proto_library` and others unless you are adding such wrapper macros.
++
++Args:
++  srcs: Protocol Buffers definition files (.proto) to run the protocol compiler
++    against.
++  deps: a list of dependency labels; must be other proto libraries.
++  includes: a list of include paths to .proto files.
++  protoc: the label of the protocol compiler to generate the sources.
++  plugin: the label of the protocol compiler plugin to be passed to the protocol
++    compiler.
++  plugin_language: the language of the generated sources
++  plugin_options: a list of options to be passed to the plugin
++  gen_cc: generates C++ sources in addition to the ones from the plugin.
++  gen_py: generates Python sources in addition to the ones from the plugin.
++  outs: a list of labels of the expected outputs from the protocol compiler.
++"""
++
++def py_proto_library(
++        name,
++        srcs = [],
++        deps = [],
++        py_libs = [],
++        py_extra_srcs = [],
++        include = None,
++        default_runtime = None,
++        protoc = "//third_party:protoc",
++        use_grpc_plugin = False,
++        **kwargs):
++    """Bazel rule to create a Python protobuf library from proto source files
++
++    NOTE: the rule is only an internal workaround to generate protos. The
++    interface may change and the rule may be removed when bazel has introduced
++    the native rule.
++
++    Args:
++      name: the name of the py_proto_library.
++      srcs: the .proto files of the py_proto_library.
++      deps: a list of dependency labels; must be py_proto_library.
++      py_libs: a list of other py_library targets depended by the generated
++          py_library.
++      py_extra_srcs: extra source files that will be added to the output
++          py_library. This attribute is used for internal bootstrapping.
++      include: a string indicating the include path of the .proto files.
++      default_runtime: the implicitly default runtime which will be depended on by
++          the generated py_library target.
++      protoc: the label of the protocol compiler to generate the sources.
++      use_grpc_plugin: a flag to indicate whether to call the Python C++ plugin
++          when processing the proto files.
++      **kwargs: other keyword arguments that are passed to py_library.
++
++    """
++    outs = _PyOuts(srcs, use_grpc_plugin)
++
++    includes = []
++    if include != None:
++        includes = [include]
++
++    grpc_python_plugin = None
++    if use_grpc_plugin:
++        grpc_python_plugin = "//external:grpc_python_plugin"
++        # Note: Generated grpc code depends on Python grpc module. This dependency
++        # is not explicitly listed in py_libs. Instead, host system is assumed to
++        # have grpc installed.
++
++    proto_gen(
++        name = name + "_genproto",
++        srcs = srcs,
++        deps = [s + "_genproto" for s in deps],
++        includes = includes,
++        protoc = protoc,
++        gen_py = 1,
++        outs = outs,
++        visibility = ["//visibility:public"],
++        plugin = grpc_python_plugin,
++        plugin_language = "grpc",
++    )
++
++    if default_runtime and not default_runtime in py_libs + deps:
++        py_libs = py_libs + [default_runtime]
++
++    native.py_library(
++        name = name,
++        srcs = outs + py_extra_srcs,
++        deps = py_libs + deps,
++        imports = includes,
++        **kwargs
++    )
+-- 
+2.37.4
+

diff --git a/sci-libs/keras/keras-2.11.0.ebuild b/sci-libs/keras/keras-2.11.0.ebuild
new file mode 100644
index 000000000000..2164e2fedf6a
--- /dev/null
+++ b/sci-libs/keras/keras-2.11.0.ebuild
@@ -0,0 +1,85 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{8,9,10} )
+inherit bazel distutils-r1
+
+DESCRIPTION="Deep Learning for humans"
+HOMEPAGE="https://keras.io/"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE=""
+
+bazel_external_uris="
+	https://github.com/bazelbuild/rules_cc/archive/b1c40e1de81913a3c40e5948f78719c28152486d.zip -> bazelbuild-rules_cc-b1c40e1de81913a3c40e5948f78719c28152486d.zip
+	https://github.com/bazelbuild/rules_java/archive/7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip -> bazelbuild-rules_java-7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip"
+
+SRC_URI="https://github.com/keras-team/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz
+	${bazel_external_uris}"
+
+RDEPEND="
+	>=dev-libs/protobuf-3.13.0:=
+	dev-python/absl-py[${PYTHON_USEDEP}]
+	dev-python/h5py[${PYTHON_USEDEP}]
+	dev-python/numpy[${PYTHON_USEDEP}]
+	dev-python/pandas[${PYTHON_USEDEP}]
+	dev-python/pillow[${PYTHON_USEDEP}]
+	>=dev-python/protobuf-python-3.13.0[${PYTHON_USEDEP}]
+	dev-python/six[${PYTHON_USEDEP}]
+	>=sci-libs/keras-applications-1.0.8[${PYTHON_USEDEP}]
+	>=sci-libs/keras-preprocessing-1.1.2[${PYTHON_USEDEP}]
+	>=sci-libs/tensorflow-2.10[python,${PYTHON_USEDEP}]"
+DEPEND="${RDEPEND}
+	dev-python/setuptools[${PYTHON_USEDEP}]"
+BDEPEND="
+	app-arch/unzip
+	>=dev-libs/protobuf-3.13.0
+	dev-java/java-config
+	>=dev-util/bazel-4.2.2"
+
+# Bazel tests not pytest, also want GPU access
+RESTRICT="test"
+DOCS=( CONTRIBUTING.md README.md )
+PATCHES=(
+	"${FILESDIR}/keras-2.11.0-0001-bazel-Use-system-protobuf.patch"
+)
+
+src_unpack() {
+	unpack "${P}.tar.gz"
+	bazel_load_distfiles "${bazel_external_uris}"
+}
+
+src_prepare() {
+	bazel_setup_bazelrc
+	default
+	python_copy_sources
+}
+
+python_compile() {
+	pushd "${BUILD_DIR}" >/dev/null || die
+
+	ebazel build //keras/tools/pip_package:build_pip_package
+	ebazel shutdown
+
+	local srcdir="${T}/src-${EPYTHON/./_}"
+	mkdir -p "${srcdir}" || die
+	bazel-bin/keras/tools/pip_package/build_pip_package --src "${srcdir}" || die
+
+	popd || die
+}
+
+src_compile() {
+	export JAVA_HOME=$(java-config --jre-home)
+	distutils-r1_src_compile
+}
+
+python_install() {
+	pushd "${T}/src-${EPYTHON/./_}" >/dev/null || die
+	esetup.py install
+	python_optimize
+	popd || die
+}


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: sci-libs/keras/files/, sci-libs/keras/
@ 2023-06-05 16:37 Jason Zaman
  0 siblings, 0 replies; 5+ messages in thread
From: Jason Zaman @ 2023-06-05 16:37 UTC (permalink / raw
  To: gentoo-commits

commit:     c3ab7903a10d70d277e588dd1d5f7811233582f4
Author:     Jason Zaman <perfinion <AT> gentoo <DOT> org>
AuthorDate: Sun Jun  4 23:13:10 2023 +0000
Commit:     Jason Zaman <perfinion <AT> gentoo <DOT> org>
CommitDate: Mon Jun  5 16:37:12 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c3ab7903

sci-libs/keras: add 2.12.0

Signed-off-by: Jason Zaman <perfinion <AT> gentoo.org>

 sci-libs/keras/Manifest                            |   1 +
 ...ras-2.12.0-0001-bazel-Use-system-protobuf.patch | 330 +++++++++++++++++++++
 sci-libs/keras/keras-2.12.0.ebuild                 |  85 ++++++
 3 files changed, 416 insertions(+)

diff --git a/sci-libs/keras/Manifest b/sci-libs/keras/Manifest
index 495367cc87b0..d5c590e7cbd2 100644
--- a/sci-libs/keras/Manifest
+++ b/sci-libs/keras/Manifest
@@ -2,3 +2,4 @@ DIST bazelbuild-rules_cc-b1c40e1de81913a3c40e5948f78719c28152486d.zip 201360 BLA
 DIST bazelbuild-rules_java-7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip 9422 BLAKE2B bbc45c97551ee8126335b611ffca6574dac843d4db9b3221b10d26487f8eecfe38ba0cd67a4039a3ad921c25fea6294c43e4f4e7a57a060a30791acd6c4f9d39 SHA512 ba06242feb711e7fb6e821fd9ac029248b4f3e466fb1acf971d0db8196f3efe4d114ef137acbe4913073f8cbe8ccab4d47d8bafa21b867b2d6a6d57f5a647f0c
 DIST keras-2.10.0.tar.gz 2250425 BLAKE2B eb05537739cdc81e279b5c400e2e2b77d46f4085e8530fef565bde12414ddccedb44c0b13265106a3353e67c367106e1d341412dc25b32e2221f144a31d76079 SHA512 8682110495a045c2ebc61f31a98d646b88fd9608d5169be78701cf528457ff0d2e39669d885854c14c1e6bebb380b14968957f2a8a34a8a023f8860efc7aeecd
 DIST keras-2.11.0.tar.gz 2260857 BLAKE2B 9c85e0f64176848886509fbf269b85732f8ad98e7be3ec186e71870e453454b9b81516ef2ca4e67fb8906bc0ca1241d61ae94db6b58c7483527d33519f7c38fb SHA512 17c773e1f9c592676d56a8b3eed707d52240800b33e85dccccb80f206e8459c8c18485f0bcb6d5775ce1ef0625dc5ebe699574b8599dd98dbb73620da4301968
+DIST keras-2.12.0.tar.gz 2319287 BLAKE2B 332b2b02eecac2da7c87c1f051c56d495027630e2e0254d543897e462f7f44a282bff6cf3cbe2602663cae2e2c76ab45c9b3b53cadbc3317b3e2dd366bdf7ace SHA512 10d034abc9b159a0945610dcfb2fc58d8143267629b8f59496b4e5f097b1220bdb02a269f135f05b8abed56c2d5237b3e0c2b74882cd3f321850fc7f47694dbb

diff --git a/sci-libs/keras/files/keras-2.12.0-0001-bazel-Use-system-protobuf.patch b/sci-libs/keras/files/keras-2.12.0-0001-bazel-Use-system-protobuf.patch
new file mode 100644
index 000000000000..6870d534cf75
--- /dev/null
+++ b/sci-libs/keras/files/keras-2.12.0-0001-bazel-Use-system-protobuf.patch
@@ -0,0 +1,330 @@
+From ac16152a7709f90c1dedac63157655c836c257bb Mon Sep 17 00:00:00 2001
+From: Jason Zaman <jason@perfinion.com>
+Date: Sun, 14 Nov 2021 17:59:39 -0800
+Subject: [PATCH] bazel: Use system protobuf
+
+---
+ WORKSPACE                |  52 ----------
+ keras/protobuf/BUILD     |   2 +-
+ third_party/BUILD        |   8 +-
+ third_party/protobuf.bzl | 216 +++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 224 insertions(+), 54 deletions(-)
+ create mode 100644 third_party/protobuf.bzl
+
+diff --git a/WORKSPACE b/WORKSPACE
+index c0ebc4e52..61282aead 100644
+--- a/WORKSPACE
++++ b/WORKSPACE
+@@ -1,53 +1 @@
+ workspace(name = "org_keras")
+-
+-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+-
+-# Needed by protobuf
+-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+-http_archive(
+-    name = "bazel_skylib",
+-    urls = [
+-        "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.3.0/bazel-skylib-1.3.0.tar.gz",
+-        "https://github.com/bazelbuild/bazel-skylib/releases/download/1.3.0/bazel-skylib-1.3.0.tar.gz",
+-    ],
+-    sha256 = "74d544d96f4a5bb630d465ca8bbcfe231e3594e5aae57e1edbf17a6eb3ca2506",
+-)
+-load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace")
+-bazel_skylib_workspace()
+-
+-# Needed by protobuf
+-http_archive(
+-    name = "six_archive",
+-    build_file = "//third_party:six.BUILD",
+-    sha256 = "1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926",
+-    strip_prefix = "six-1.16.0",
+-    urls = ["https://pypi.python.org/packages/source/s/six/six-1.16.0.tar.gz"],
+-)
+-
+-bind(
+-    name = "six",
+-    actual = "@six_archive//:six",
+-)
+-
+-http_archive(
+-    name = "com_google_protobuf",
+-    sha256 = "f66073dee0bc159157b0bd7f502d7d1ee0bc76b3c1eac9836927511bdc4b3fc1",
+-    strip_prefix = "protobuf-3.21.9",
+-    urls = ["https://github.com/protocolbuffers/protobuf/archive/v3.21.9.zip"],
+-)
+-
+-# ZLIB. Need by com_google_protobuf.
+-http_archive(
+-    name = "zlib",
+-    build_file = "@com_google_protobuf//:third_party/zlib.BUILD",
+-    sha256 = "b3a24de97a8fdbc835b9833169501030b8977031bcb54b3b3ac13740f846ab30",
+-    strip_prefix = "zlib-1.2.13",
+-    urls = [
+-      "https://storage.googleapis.com/mirror.tensorflow.org/zlib.net/zlib-1.2.13.tar.gz",
+-      "https://zlib.net/zlib-1.2.13.tar.gz",
+-      ],
+-)
+-
+-
+-load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")
+-protobuf_deps()
+diff --git a/keras/protobuf/BUILD b/keras/protobuf/BUILD
+index 413dcb74d..80133c064 100644
+--- a/keras/protobuf/BUILD
++++ b/keras/protobuf/BUILD
+@@ -1,7 +1,7 @@
+ # Description:
+ #   Contains Keras protobufs
+ 
+-load("@com_google_protobuf//:protobuf.bzl", "py_proto_library")
++load("//third_party:protobuf.bzl", "py_proto_library")
+ 
+ package(
+     default_visibility = [
+diff --git a/third_party/BUILD b/third_party/BUILD
+index 9be54076c..9399232f6 100644
+--- a/third_party/BUILD
++++ b/third_party/BUILD
+@@ -1,4 +1,5 @@
+ package(
++    default_visibility = ["//visibility:public"],
+     licenses = ["notice"],  # Apache 2.0
+ )
+ 
+@@ -7,4 +8,9 @@ exports_files([
+     "six.BUILD",
+ ])
+ 
+-package(default_visibility = ["//visibility:public"])
++genrule(
++    name = "protoc",
++    outs = ["protoc.bin"],
++    cmd = "ln -s $$(which protoc) $@",
++    executable = 1,
++)
+diff --git a/third_party/protobuf.bzl b/third_party/protobuf.bzl
+new file mode 100644
+index 000000000..3a7ef0a27
+--- /dev/null
++++ b/third_party/protobuf.bzl
+@@ -0,0 +1,216 @@
++def _GetPath(ctx, path):
++    if ctx.label.workspace_root:
++        return ctx.label.workspace_root + "/" + path
++    else:
++        return path
++
++def _IsNewExternal(ctx):
++    # Bazel 0.4.4 and older have genfiles paths that look like:
++    #   bazel-out/local-fastbuild/genfiles/external/repo/foo
++    # After the exec root rearrangement, they look like:
++    #   ../repo/bazel-out/local-fastbuild/genfiles/foo
++    return ctx.label.workspace_root.startswith("../")
++
++def _GenDir(ctx):
++    if _IsNewExternal(ctx):
++        # We are using the fact that Bazel 0.4.4+ provides repository-relative paths
++        # for ctx.genfiles_dir.
++        return ctx.genfiles_dir.path + (
++            "/" + ctx.attr.includes[0] if ctx.attr.includes and ctx.attr.includes[0] else ""
++        )
++
++    # This means that we're either in the old version OR the new version in the local repo.
++    # Either way, appending the source path to the genfiles dir works.
++    return ctx.var["GENDIR"] + "/" + _SourceDir(ctx)
++
++def _SourceDir(ctx):
++    if not ctx.attr.includes:
++        return ctx.label.workspace_root
++    if not ctx.attr.includes[0]:
++        return _GetPath(ctx, ctx.label.package)
++    if not ctx.label.package:
++        return _GetPath(ctx, ctx.attr.includes[0])
++    return _GetPath(ctx, ctx.label.package + "/" + ctx.attr.includes[0])
++
++def _PyOuts(srcs, use_grpc_plugin = False):
++    ret = [s[:-len(".proto")] + "_pb2.py" for s in srcs]
++    if use_grpc_plugin:
++        ret += [s[:-len(".proto")] + "_pb2_grpc.py" for s in srcs]
++    return ret
++
++def _proto_gen_impl(ctx):
++    """General implementation for generating protos"""
++    srcs = ctx.files.srcs
++    deps = []
++    deps += ctx.files.srcs
++    source_dir = _SourceDir(ctx)
++    gen_dir = _GenDir(ctx)
++    if source_dir:
++        import_flags = ["-I" + source_dir, "-I" + gen_dir]
++    else:
++        import_flags = ["-I."]
++
++    for dep in ctx.attr.deps:
++        import_flags += dep.proto.import_flags
++        deps += dep.proto.deps
++    import_flags = depset(import_flags).to_list()
++    deps = depset(deps).to_list()
++
++    args = []
++    if ctx.attr.gen_cc:
++        args += ["--cpp_out=" + gen_dir]
++    if ctx.attr.gen_py:
++        args += ["--python_out=" + gen_dir]
++
++    inputs = srcs + deps
++    tools = [ctx.executable.protoc]
++    if ctx.executable.plugin:
++        plugin = ctx.executable.plugin
++        lang = ctx.attr.plugin_language
++        if not lang and plugin.basename.startswith("protoc-gen-"):
++            lang = plugin.basename[len("protoc-gen-"):]
++        if not lang:
++            fail("cannot infer the target language of plugin", "plugin_language")
++
++        outdir = gen_dir
++        if ctx.attr.plugin_options:
++            outdir = ",".join(ctx.attr.plugin_options) + ":" + outdir
++        args += ["--plugin=protoc-gen-%s=%s" % (lang, plugin.path)]
++        args += ["--%s_out=%s" % (lang, outdir)]
++        tools.append(plugin)
++
++    if args:
++        ctx.actions.run(
++            inputs = inputs,
++            outputs = ctx.outputs.outs,
++            arguments = args + import_flags + [s.path for s in srcs],
++            executable = ctx.executable.protoc,
++            mnemonic = "ProtoCompile",
++            tools = tools,
++            use_default_shell_env = True,
++        )
++
++    return struct(
++        proto = struct(
++            srcs = srcs,
++            import_flags = import_flags,
++            deps = deps,
++        ),
++    )
++
++proto_gen = rule(
++    attrs = {
++        "srcs": attr.label_list(allow_files = True),
++        "deps": attr.label_list(providers = ["proto"]),
++        "includes": attr.string_list(),
++        "protoc": attr.label(
++            cfg = "host",
++            executable = True,
++            allow_single_file = True,
++            mandatory = True,
++        ),
++        "plugin": attr.label(
++            cfg = "host",
++            allow_files = True,
++            executable = True,
++        ),
++        "plugin_language": attr.string(),
++        "plugin_options": attr.string_list(),
++        "gen_cc": attr.bool(),
++        "gen_py": attr.bool(),
++        "outs": attr.output_list(),
++    },
++    output_to_genfiles = True,
++    implementation = _proto_gen_impl,
++)
++"""Generates codes from Protocol Buffers definitions.
++
++This rule helps you to implement Skylark macros specific to the target
++language. You should prefer more specific `cc_proto_library `,
++`py_proto_library` and others unless you are adding such wrapper macros.
++
++Args:
++  srcs: Protocol Buffers definition files (.proto) to run the protocol compiler
++    against.
++  deps: a list of dependency labels; must be other proto libraries.
++  includes: a list of include paths to .proto files.
++  protoc: the label of the protocol compiler to generate the sources.
++  plugin: the label of the protocol compiler plugin to be passed to the protocol
++    compiler.
++  plugin_language: the language of the generated sources
++  plugin_options: a list of options to be passed to the plugin
++  gen_cc: generates C++ sources in addition to the ones from the plugin.
++  gen_py: generates Python sources in addition to the ones from the plugin.
++  outs: a list of labels of the expected outputs from the protocol compiler.
++"""
++
++def py_proto_library(
++        name,
++        srcs = [],
++        deps = [],
++        py_libs = [],
++        py_extra_srcs = [],
++        include = None,
++        default_runtime = None,
++        protoc = "//third_party:protoc",
++        use_grpc_plugin = False,
++        **kwargs):
++    """Bazel rule to create a Python protobuf library from proto source files
++
++    NOTE: the rule is only an internal workaround to generate protos. The
++    interface may change and the rule may be removed when bazel has introduced
++    the native rule.
++
++    Args:
++      name: the name of the py_proto_library.
++      srcs: the .proto files of the py_proto_library.
++      deps: a list of dependency labels; must be py_proto_library.
++      py_libs: a list of other py_library targets depended by the generated
++          py_library.
++      py_extra_srcs: extra source files that will be added to the output
++          py_library. This attribute is used for internal bootstrapping.
++      include: a string indicating the include path of the .proto files.
++      default_runtime: the implicitly default runtime which will be depended on by
++          the generated py_library target.
++      protoc: the label of the protocol compiler to generate the sources.
++      use_grpc_plugin: a flag to indicate whether to call the Python C++ plugin
++          when processing the proto files.
++      **kwargs: other keyword arguments that are passed to py_library.
++
++    """
++    outs = _PyOuts(srcs, use_grpc_plugin)
++
++    includes = []
++    if include != None:
++        includes = [include]
++
++    grpc_python_plugin = None
++    if use_grpc_plugin:
++        grpc_python_plugin = "//external:grpc_python_plugin"
++        # Note: Generated grpc code depends on Python grpc module. This dependency
++        # is not explicitly listed in py_libs. Instead, host system is assumed to
++        # have grpc installed.
++
++    proto_gen(
++        name = name + "_genproto",
++        srcs = srcs,
++        deps = [s + "_genproto" for s in deps],
++        includes = includes,
++        protoc = protoc,
++        gen_py = 1,
++        outs = outs,
++        visibility = ["//visibility:public"],
++        plugin = grpc_python_plugin,
++        plugin_language = "grpc",
++    )
++
++    if default_runtime and not default_runtime in py_libs + deps:
++        py_libs = py_libs + [default_runtime]
++
++    native.py_library(
++        name = name,
++        srcs = outs + py_extra_srcs,
++        deps = py_libs + deps,
++        imports = includes,
++        **kwargs
++    )
+-- 
+2.39.3
+

diff --git a/sci-libs/keras/keras-2.12.0.ebuild b/sci-libs/keras/keras-2.12.0.ebuild
new file mode 100644
index 000000000000..429513ced949
--- /dev/null
+++ b/sci-libs/keras/keras-2.12.0.ebuild
@@ -0,0 +1,85 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_10 python3_11 )
+inherit bazel distutils-r1
+
+DESCRIPTION="Deep Learning for humans"
+HOMEPAGE="https://keras.io/"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE=""
+
+bazel_external_uris="
+	https://github.com/bazelbuild/rules_cc/archive/b1c40e1de81913a3c40e5948f78719c28152486d.zip -> bazelbuild-rules_cc-b1c40e1de81913a3c40e5948f78719c28152486d.zip
+	https://github.com/bazelbuild/rules_java/archive/7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip -> bazelbuild-rules_java-7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip"
+
+SRC_URI="https://github.com/keras-team/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz
+	${bazel_external_uris}"
+
+RDEPEND="
+	>=dev-libs/protobuf-3.13.0:=
+	dev-python/absl-py[${PYTHON_USEDEP}]
+	dev-python/h5py[${PYTHON_USEDEP}]
+	dev-python/numpy[${PYTHON_USEDEP}]
+	dev-python/pandas[${PYTHON_USEDEP}]
+	dev-python/pillow[${PYTHON_USEDEP}]
+	>=dev-python/protobuf-python-3.13.0[${PYTHON_USEDEP}]
+	dev-python/six[${PYTHON_USEDEP}]
+	>=sci-libs/keras-applications-1.0.8[${PYTHON_USEDEP}]
+	>=sci-libs/keras-preprocessing-1.1.2[${PYTHON_USEDEP}]
+	>=sci-libs/tensorflow-2.12[python,${PYTHON_USEDEP}]"
+DEPEND="${RDEPEND}
+	dev-python/setuptools[${PYTHON_USEDEP}]"
+BDEPEND="
+	app-arch/unzip
+	>=dev-libs/protobuf-3.13.0
+	dev-java/java-config
+	>=dev-util/bazel-5.3.0"
+
+# Bazel tests not pytest, also want GPU access
+RESTRICT="test"
+DOCS=( CONTRIBUTING.md README.md )
+PATCHES=(
+	"${FILESDIR}/keras-2.12.0-0001-bazel-Use-system-protobuf.patch"
+)
+
+src_unpack() {
+	unpack "${P}.tar.gz"
+	bazel_load_distfiles "${bazel_external_uris}"
+}
+
+src_prepare() {
+	bazel_setup_bazelrc
+	default
+	python_copy_sources
+}
+
+python_compile() {
+	pushd "${BUILD_DIR}" >/dev/null || die
+
+	ebazel build //keras/tools/pip_package:build_pip_package
+	ebazel shutdown
+
+	local srcdir="${T}/src-${EPYTHON/./_}"
+	mkdir -p "${srcdir}" || die
+	bazel-bin/keras/tools/pip_package/build_pip_package --src "${srcdir}" || die
+
+	popd || die
+}
+
+src_compile() {
+	export JAVA_HOME=$(java-config --jre-home)
+	distutils-r1_src_compile
+}
+
+python_install() {
+	pushd "${T}/src-${EPYTHON/./_}" >/dev/null || die
+	esetup.py install
+	python_optimize
+	popd || die
+}


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: sci-libs/keras/files/, sci-libs/keras/
@ 2024-02-03 19:35 Jason Zaman
  0 siblings, 0 replies; 5+ messages in thread
From: Jason Zaman @ 2024-02-03 19:35 UTC (permalink / raw
  To: gentoo-commits

commit:     4016745dba5525a8b83d7f5d65cfd62b68b5e1b4
Author:     wangjiezhe <wangjiezhe <AT> gmail <DOT> com>
AuthorDate: Sat Jan 20 06:45:02 2024 +0000
Commit:     Jason Zaman <perfinion <AT> gentoo <DOT> org>
CommitDate: Sat Feb  3 19:32:56 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=4016745d

sci-libs/keras: add 2.14.0

Signed-off-by: wangjiezhe <wangjiezhe <AT> gmail.com>
Signed-off-by: Jason Zaman <perfinion <AT> gentoo.org>

 sci-libs/keras/Manifest                            |   2 +
 ...ras-2.14.0-0001-bazel-Use-system-protobuf.patch | 330 +++++++++++++++++++++
 sci-libs/keras/keras-2.14.0.ebuild                 |  84 ++++++
 3 files changed, 416 insertions(+)

diff --git a/sci-libs/keras/Manifest b/sci-libs/keras/Manifest
index bf70e32a6475..0032aa4f3fac 100644
--- a/sci-libs/keras/Manifest
+++ b/sci-libs/keras/Manifest
@@ -1,6 +1,8 @@
+DIST bazelbuild-rules_cc-0.0.2.tar.gz 127138 BLAKE2B 2a4cb12096bd8e6efebb13861b259ea12266372d37ef0d6c6005c4b9a6f919c26e1caa2ac78578aefd80a4f5bf08c1a14e15df5218f5d6b949beacba116b7b33 SHA512 688b5e6ea0e4cc8e5e11fc7aaac70f88c54d2d70221df0772eea1f0ff3ec16e2e92305f76da09c3c497f29e9132870ceaec7ecad034cca678ff4303899b67c14
 DIST bazelbuild-rules_cc-b1c40e1de81913a3c40e5948f78719c28152486d.zip 201360 BLAKE2B 0173a8edb17f344b18e42026e2f8a62a1909d4694ab0be83562b6437a3f1ef38889f069269ddd2308b41062e5f375f791be0d2631a8e52ede668203779813b56 SHA512 2ba1dc316d88947c1d17ec67154c052700e3571b8d03370a9f204cf9fe94a1bd58f93a2c4a3c0b02233ee3250053a4c30a4133b5b38745858c1d04be8c9d973f
 DIST bazelbuild-rules_java-7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip 9422 BLAKE2B bbc45c97551ee8126335b611ffca6574dac843d4db9b3221b10d26487f8eecfe38ba0cd67a4039a3ad921c25fea6294c43e4f4e7a57a060a30791acd6c4f9d39 SHA512 ba06242feb711e7fb6e821fd9ac029248b4f3e466fb1acf971d0db8196f3efe4d114ef137acbe4913073f8cbe8ccab4d47d8bafa21b867b2d6a6d57f5a647f0c
 DIST keras-2.10.0.tar.gz 2250425 BLAKE2B eb05537739cdc81e279b5c400e2e2b77d46f4085e8530fef565bde12414ddccedb44c0b13265106a3353e67c367106e1d341412dc25b32e2221f144a31d76079 SHA512 8682110495a045c2ebc61f31a98d646b88fd9608d5169be78701cf528457ff0d2e39669d885854c14c1e6bebb380b14968957f2a8a34a8a023f8860efc7aeecd
 DIST keras-2.11.0.tar.gz 2260857 BLAKE2B 9c85e0f64176848886509fbf269b85732f8ad98e7be3ec186e71870e453454b9b81516ef2ca4e67fb8906bc0ca1241d61ae94db6b58c7483527d33519f7c38fb SHA512 17c773e1f9c592676d56a8b3eed707d52240800b33e85dccccb80f206e8459c8c18485f0bcb6d5775ce1ef0625dc5ebe699574b8599dd98dbb73620da4301968
 DIST keras-2.12.0.tar.gz 2319287 BLAKE2B 332b2b02eecac2da7c87c1f051c56d495027630e2e0254d543897e462f7f44a282bff6cf3cbe2602663cae2e2c76ab45c9b3b53cadbc3317b3e2dd366bdf7ace SHA512 10d034abc9b159a0945610dcfb2fc58d8143267629b8f59496b4e5f097b1220bdb02a269f135f05b8abed56c2d5237b3e0c2b74882cd3f321850fc7f47694dbb
 DIST keras-2.13.1.tar.gz 2373567 BLAKE2B 8b8b0c51fa9c0f53baa2306d0ee4361aaeaed272d887e0fb2f4289696a74e2cb45239fb378db70d954346b30124255a16002555002813656607721b3f393d0c2 SHA512 0f0c93f31d555e27e3f4268af7749b4c494a1f698bc763cebc4efe55e8011dbf637b978ca976ed61c46e8b11b8267b1a277d5048c3d3bcbe47005ee8960a1fc3
+DIST keras-2.14.0.tar.gz 2385374 BLAKE2B adca6634e06130d6f238d58e1d94ddd435b30da9b9cc8dd46f40d3ceec98cc6a82c37c3454c438f79b22da1aee223fcae99cf73fe1348383669c5176ee9ef225 SHA512 aeb89c8186410d0a5b36b3293d5e36111755716adde1b89fc33a3cc35f8dbdd297a8f8c7f54c9ca21835bc430ba0886a1eee13febe0dbcc510bfab602a6ddc81

diff --git a/sci-libs/keras/files/keras-2.14.0-0001-bazel-Use-system-protobuf.patch b/sci-libs/keras/files/keras-2.14.0-0001-bazel-Use-system-protobuf.patch
new file mode 100644
index 000000000000..526742490f90
--- /dev/null
+++ b/sci-libs/keras/files/keras-2.14.0-0001-bazel-Use-system-protobuf.patch
@@ -0,0 +1,330 @@
+From a064130a9cb6a2544c96552d43b3ff1b4bab0de4 Mon Sep 17 00:00:00 2001
+From: wangjiezhe <wangjiezhe@gmail.com>
+Date: Fri, 24 Nov 2023 00:35:16 +0800
+Subject: [PATCH] bazel: Use system protobuf
+
+---
+ WORKSPACE                |  52 ----------
+ keras/protobuf/BUILD     |   2 +-
+ third_party/BUILD        |   8 +-
+ third_party/protobuf.bzl | 216 +++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 224 insertions(+), 54 deletions(-)
+ create mode 100644 third_party/protobuf.bzl
+
+diff --git a/WORKSPACE b/WORKSPACE
+index c0ebc4e52..61282aead 100644
+--- a/WORKSPACE
++++ b/WORKSPACE
+@@ -1,53 +1 @@
+ workspace(name = "org_keras")
+-
+-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+-
+-# Needed by protobuf
+-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+-http_archive(
+-    name = "bazel_skylib",
+-    urls = [
+-        "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.3.0/bazel-skylib-1.3.0.tar.gz",
+-        "https://github.com/bazelbuild/bazel-skylib/releases/download/1.3.0/bazel-skylib-1.3.0.tar.gz",
+-    ],
+-    sha256 = "74d544d96f4a5bb630d465ca8bbcfe231e3594e5aae57e1edbf17a6eb3ca2506",
+-)
+-load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace")
+-bazel_skylib_workspace()
+-
+-# Needed by protobuf
+-http_archive(
+-    name = "six_archive",
+-    build_file = "//third_party:six.BUILD",
+-    sha256 = "1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926",
+-    strip_prefix = "six-1.16.0",
+-    urls = ["https://pypi.python.org/packages/source/s/six/six-1.16.0.tar.gz"],
+-)
+-
+-bind(
+-    name = "six",
+-    actual = "@six_archive//:six",
+-)
+-
+-http_archive(
+-    name = "com_google_protobuf",
+-    sha256 = "f66073dee0bc159157b0bd7f502d7d1ee0bc76b3c1eac9836927511bdc4b3fc1",
+-    strip_prefix = "protobuf-3.21.9",
+-    urls = ["https://github.com/protocolbuffers/protobuf/archive/v3.21.9.zip"],
+-)
+-
+-# ZLIB. Need by com_google_protobuf.
+-http_archive(
+-    name = "zlib",
+-    build_file = "@com_google_protobuf//:third_party/zlib.BUILD",
+-    sha256 = "b3a24de97a8fdbc835b9833169501030b8977031bcb54b3b3ac13740f846ab30",
+-    strip_prefix = "zlib-1.2.13",
+-    urls = [
+-      "https://storage.googleapis.com/mirror.tensorflow.org/zlib.net/zlib-1.2.13.tar.gz",
+-      "https://zlib.net/zlib-1.2.13.tar.gz",
+-      ],
+-)
+-
+-
+-load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")
+-protobuf_deps()
+diff --git a/keras/protobuf/BUILD b/keras/protobuf/BUILD
+index e2f9c1f3b..d50579a7e 100644
+--- a/keras/protobuf/BUILD
++++ b/keras/protobuf/BUILD
+@@ -1,7 +1,7 @@
+ # Description:
+ #   Contains Keras protobufs
+ 
+-load("@com_google_protobuf//:protobuf.bzl", "py_proto_library")
++load("//third_party:protobuf.bzl", "py_proto_library")
+ 
+ package(
+     # copybara:uncomment default_applicable_licenses = ["//keras:license"],
+diff --git a/third_party/BUILD b/third_party/BUILD
+index 9be54076c..9399232f6 100644
+--- a/third_party/BUILD
++++ b/third_party/BUILD
+@@ -1,4 +1,5 @@
+ package(
++    default_visibility = ["//visibility:public"],
+     licenses = ["notice"],  # Apache 2.0
+ )
+ 
+@@ -7,4 +8,9 @@ exports_files([
+     "six.BUILD",
+ ])
+ 
+-package(default_visibility = ["//visibility:public"])
++genrule(
++    name = "protoc",
++    outs = ["protoc.bin"],
++    cmd = "ln -s $$(which protoc) $@",
++    executable = 1,
++)
+diff --git a/third_party/protobuf.bzl b/third_party/protobuf.bzl
+new file mode 100644
+index 000000000..3a7ef0a27
+--- /dev/null
++++ b/third_party/protobuf.bzl
+@@ -0,0 +1,216 @@
++def _GetPath(ctx, path):
++    if ctx.label.workspace_root:
++        return ctx.label.workspace_root + "/" + path
++    else:
++        return path
++
++def _IsNewExternal(ctx):
++    # Bazel 0.4.4 and older have genfiles paths that look like:
++    #   bazel-out/local-fastbuild/genfiles/external/repo/foo
++    # After the exec root rearrangement, they look like:
++    #   ../repo/bazel-out/local-fastbuild/genfiles/foo
++    return ctx.label.workspace_root.startswith("../")
++
++def _GenDir(ctx):
++    if _IsNewExternal(ctx):
++        # We are using the fact that Bazel 0.4.4+ provides repository-relative paths
++        # for ctx.genfiles_dir.
++        return ctx.genfiles_dir.path + (
++            "/" + ctx.attr.includes[0] if ctx.attr.includes and ctx.attr.includes[0] else ""
++        )
++
++    # This means that we're either in the old version OR the new version in the local repo.
++    # Either way, appending the source path to the genfiles dir works.
++    return ctx.var["GENDIR"] + "/" + _SourceDir(ctx)
++
++def _SourceDir(ctx):
++    if not ctx.attr.includes:
++        return ctx.label.workspace_root
++    if not ctx.attr.includes[0]:
++        return _GetPath(ctx, ctx.label.package)
++    if not ctx.label.package:
++        return _GetPath(ctx, ctx.attr.includes[0])
++    return _GetPath(ctx, ctx.label.package + "/" + ctx.attr.includes[0])
++
++def _PyOuts(srcs, use_grpc_plugin = False):
++    ret = [s[:-len(".proto")] + "_pb2.py" for s in srcs]
++    if use_grpc_plugin:
++        ret += [s[:-len(".proto")] + "_pb2_grpc.py" for s in srcs]
++    return ret
++
++def _proto_gen_impl(ctx):
++    """General implementation for generating protos"""
++    srcs = ctx.files.srcs
++    deps = []
++    deps += ctx.files.srcs
++    source_dir = _SourceDir(ctx)
++    gen_dir = _GenDir(ctx)
++    if source_dir:
++        import_flags = ["-I" + source_dir, "-I" + gen_dir]
++    else:
++        import_flags = ["-I."]
++
++    for dep in ctx.attr.deps:
++        import_flags += dep.proto.import_flags
++        deps += dep.proto.deps
++    import_flags = depset(import_flags).to_list()
++    deps = depset(deps).to_list()
++
++    args = []
++    if ctx.attr.gen_cc:
++        args += ["--cpp_out=" + gen_dir]
++    if ctx.attr.gen_py:
++        args += ["--python_out=" + gen_dir]
++
++    inputs = srcs + deps
++    tools = [ctx.executable.protoc]
++    if ctx.executable.plugin:
++        plugin = ctx.executable.plugin
++        lang = ctx.attr.plugin_language
++        if not lang and plugin.basename.startswith("protoc-gen-"):
++            lang = plugin.basename[len("protoc-gen-"):]
++        if not lang:
++            fail("cannot infer the target language of plugin", "plugin_language")
++
++        outdir = gen_dir
++        if ctx.attr.plugin_options:
++            outdir = ",".join(ctx.attr.plugin_options) + ":" + outdir
++        args += ["--plugin=protoc-gen-%s=%s" % (lang, plugin.path)]
++        args += ["--%s_out=%s" % (lang, outdir)]
++        tools.append(plugin)
++
++    if args:
++        ctx.actions.run(
++            inputs = inputs,
++            outputs = ctx.outputs.outs,
++            arguments = args + import_flags + [s.path for s in srcs],
++            executable = ctx.executable.protoc,
++            mnemonic = "ProtoCompile",
++            tools = tools,
++            use_default_shell_env = True,
++        )
++
++    return struct(
++        proto = struct(
++            srcs = srcs,
++            import_flags = import_flags,
++            deps = deps,
++        ),
++    )
++
++proto_gen = rule(
++    attrs = {
++        "srcs": attr.label_list(allow_files = True),
++        "deps": attr.label_list(providers = ["proto"]),
++        "includes": attr.string_list(),
++        "protoc": attr.label(
++            cfg = "host",
++            executable = True,
++            allow_single_file = True,
++            mandatory = True,
++        ),
++        "plugin": attr.label(
++            cfg = "host",
++            allow_files = True,
++            executable = True,
++        ),
++        "plugin_language": attr.string(),
++        "plugin_options": attr.string_list(),
++        "gen_cc": attr.bool(),
++        "gen_py": attr.bool(),
++        "outs": attr.output_list(),
++    },
++    output_to_genfiles = True,
++    implementation = _proto_gen_impl,
++)
++"""Generates codes from Protocol Buffers definitions.
++
++This rule helps you to implement Skylark macros specific to the target
++language. You should prefer more specific `cc_proto_library `,
++`py_proto_library` and others unless you are adding such wrapper macros.
++
++Args:
++  srcs: Protocol Buffers definition files (.proto) to run the protocol compiler
++    against.
++  deps: a list of dependency labels; must be other proto libraries.
++  includes: a list of include paths to .proto files.
++  protoc: the label of the protocol compiler to generate the sources.
++  plugin: the label of the protocol compiler plugin to be passed to the protocol
++    compiler.
++  plugin_language: the language of the generated sources
++  plugin_options: a list of options to be passed to the plugin
++  gen_cc: generates C++ sources in addition to the ones from the plugin.
++  gen_py: generates Python sources in addition to the ones from the plugin.
++  outs: a list of labels of the expected outputs from the protocol compiler.
++"""
++
++def py_proto_library(
++        name,
++        srcs = [],
++        deps = [],
++        py_libs = [],
++        py_extra_srcs = [],
++        include = None,
++        default_runtime = None,
++        protoc = "//third_party:protoc",
++        use_grpc_plugin = False,
++        **kwargs):
++    """Bazel rule to create a Python protobuf library from proto source files
++
++    NOTE: the rule is only an internal workaround to generate protos. The
++    interface may change and the rule may be removed when bazel has introduced
++    the native rule.
++
++    Args:
++      name: the name of the py_proto_library.
++      srcs: the .proto files of the py_proto_library.
++      deps: a list of dependency labels; must be py_proto_library.
++      py_libs: a list of other py_library targets depended by the generated
++          py_library.
++      py_extra_srcs: extra source files that will be added to the output
++          py_library. This attribute is used for internal bootstrapping.
++      include: a string indicating the include path of the .proto files.
++      default_runtime: the implicitly default runtime which will be depended on by
++          the generated py_library target.
++      protoc: the label of the protocol compiler to generate the sources.
++      use_grpc_plugin: a flag to indicate whether to call the Python C++ plugin
++          when processing the proto files.
++      **kwargs: other keyword arguments that are passed to py_library.
++
++    """
++    outs = _PyOuts(srcs, use_grpc_plugin)
++
++    includes = []
++    if include != None:
++        includes = [include]
++
++    grpc_python_plugin = None
++    if use_grpc_plugin:
++        grpc_python_plugin = "//external:grpc_python_plugin"
++        # Note: Generated grpc code depends on Python grpc module. This dependency
++        # is not explicitly listed in py_libs. Instead, host system is assumed to
++        # have grpc installed.
++
++    proto_gen(
++        name = name + "_genproto",
++        srcs = srcs,
++        deps = [s + "_genproto" for s in deps],
++        includes = includes,
++        protoc = protoc,
++        gen_py = 1,
++        outs = outs,
++        visibility = ["//visibility:public"],
++        plugin = grpc_python_plugin,
++        plugin_language = "grpc",
++    )
++
++    if default_runtime and not default_runtime in py_libs + deps:
++        py_libs = py_libs + [default_runtime]
++
++    native.py_library(
++        name = name,
++        srcs = outs + py_extra_srcs,
++        deps = py_libs + deps,
++        imports = includes,
++        **kwargs
++    )
+-- 
+2.41.0
+

diff --git a/sci-libs/keras/keras-2.14.0.ebuild b/sci-libs/keras/keras-2.14.0.ebuild
new file mode 100644
index 000000000000..10bc1361ae4e
--- /dev/null
+++ b/sci-libs/keras/keras-2.14.0.ebuild
@@ -0,0 +1,84 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..11} )
+inherit bazel distutils-r1
+
+DESCRIPTION="Deep Learning for humans"
+HOMEPAGE="https://keras.io/"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64"
+
+bazel_external_uris="
+	https://github.com/bazelbuild/rules_cc/releases/download/0.0.2/rules_cc-0.0.2.tar.gz -> bazelbuild-rules_cc-0.0.2.tar.gz
+	https://github.com/bazelbuild/rules_java/archive/7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip -> bazelbuild-rules_java-7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip"
+
+SRC_URI="https://github.com/keras-team/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz
+	${bazel_external_uris}"
+
+RDEPEND="
+	>=dev-libs/protobuf-3.13.0:=
+	dev-python/absl-py[${PYTHON_USEDEP}]
+	dev-python/h5py[${PYTHON_USEDEP}]
+	dev-python/numpy[${PYTHON_USEDEP}]
+	dev-python/pandas[${PYTHON_USEDEP}]
+	dev-python/pillow[${PYTHON_USEDEP}]
+	>=dev-python/protobuf-python-3.13.0[${PYTHON_USEDEP}]
+	dev-python/six[${PYTHON_USEDEP}]
+	>=sci-libs/keras-applications-1.0.8[${PYTHON_USEDEP}]
+	>=sci-libs/keras-preprocessing-1.1.2[${PYTHON_USEDEP}]
+	>=sci-libs/tensorflow-2.14[python,${PYTHON_USEDEP}]"
+DEPEND="${RDEPEND}
+	dev-python/setuptools[${PYTHON_USEDEP}]"
+BDEPEND="
+	app-arch/unzip
+	>=dev-libs/protobuf-3.13.0
+	dev-java/java-config
+	>=dev-build/bazel-5.3.0"
+
+# Bazel tests not pytest, also want GPU access
+RESTRICT="test"
+DOCS=( CONTRIBUTING.md README.md )
+PATCHES=(
+	"${FILESDIR}/keras-2.14.0-0001-bazel-Use-system-protobuf.patch"
+)
+
+src_unpack() {
+	unpack "${P}.tar.gz"
+	bazel_load_distfiles "${bazel_external_uris}"
+}
+
+src_prepare() {
+	bazel_setup_bazelrc
+	default
+	python_copy_sources
+}
+
+python_compile() {
+	pushd "${BUILD_DIR}" >/dev/null || die
+
+	ebazel build //keras/tools/pip_package:build_pip_package
+	ebazel shutdown
+
+	local srcdir="${T}/src-${EPYTHON/./_}"
+	mkdir -p "${srcdir}" || die
+	bazel-bin/keras/tools/pip_package/build_pip_package --src "${srcdir}" || die
+
+	popd || die
+}
+
+src_compile() {
+	export JAVA_HOME=$(java-config --jre-home)
+	distutils-r1_src_compile
+}
+
+python_install() {
+	pushd "${T}/src-${EPYTHON/./_}" >/dev/null || die
+	esetup.py install
+	python_optimize
+	popd || die
+}


^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-02-03 19:35 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-11-19 18:23 [gentoo-commits] repo/gentoo:master commit in: sci-libs/keras/files/, sci-libs/keras/ Jason Zaman
  -- strict thread matches above, loose matches on Subject: below --
2024-02-03 19:35 Jason Zaman
2023-06-05 16:37 Jason Zaman
2022-11-25 18:27 Jason Zaman
2022-06-26  2:45 Jason Zaman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox