summaryrefslogtreecommitdiff
path: root/sci-libs/keras
diff options
context:
space:
mode:
Diffstat (limited to 'sci-libs/keras')
-rw-r--r--sci-libs/keras/Manifest3
-rw-r--r--sci-libs/keras/files/keras-2.11.0-0001-bazel-Use-system-protobuf.patch330
-rw-r--r--sci-libs/keras/keras-2.11.0.ebuild85
3 files changed, 418 insertions, 0 deletions
diff --git a/sci-libs/keras/Manifest b/sci-libs/keras/Manifest
index 46bb1a83e07a..5d0d6ba750e9 100644
--- a/sci-libs/keras/Manifest
+++ b/sci-libs/keras/Manifest
@@ -1,6 +1,9 @@
AUX keras-2.10.0-0001-bazel-Use-system-protobuf.patch 11106 BLAKE2B 9c302e34a2f9a9ab99fa25bbe693485b646c9121f074a8416d6be4c245b70f324ea800380b2eb09e4305c1e9fda51ba1efb784003b388646242d6b44184df5e9 SHA512 7f808db304838cca4e299727d22662d88a490a39c721ecf80f96a6259bd7a0411f0f83f2564993a699196242489406eb839c8b686d05c716add3d8936fdafa37
+AUX keras-2.11.0-0001-bazel-Use-system-protobuf.patch 11215 BLAKE2B cae8bf7de080168854dfc51e5c2f407a5f81f552971137c21af5bd4c0775d40e70342a0dc36c824d7bb3604e8d89fe9d53511adaf61f9e47264f2408a6212849 SHA512 b159b0a9e254209cd89d7f4ad774486582411719ea00dc15755fbd0f5bd618b6d38080e67a90d235469c49b2bc3df0ae05b4edce119802d64507fb16fb447a39
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
EBUILD keras-2.10.0.ebuild 2243 BLAKE2B 1388b6ee4c78e2d7b2005ca97d554c8e6330b287a42aecd4b44b45012501a83b19220a051515ffc074e936f7dfd6f3f8b808011cf489befcc3250193ccf620ce SHA512 d461284f14fa61b6d1d4aa8264a4ca000be929e292b1958b5fda8c8d4e3895e3e2caf3b1ec94b7d2af0b0217603680274bc49437f00e381f79404a4a773400dc
+EBUILD keras-2.11.0.ebuild 2243 BLAKE2B df4018ab94946c2f3f0861c2497867b2770630633274a7777e35b30e5fa7c604f1535993f15217a4267966c0999557f6d428c0b5664c187251e298bcb5bda27b SHA512 539cbdad5b45bb602ee6f38a3c390773c97e13e5574cbcc40dc9b0fb47f477d8f4a3229e568f578dec245b0813743e1b932785c6ee8531fe6e294f32fb94fec7
MISC metadata.xml 500 BLAKE2B 503c82776ec2dd8ceb09ec37e41fb2555c34937d4bf8febb25aaf2faeefb6ae86d67d8e9e04ff47d0b81758fe4710a02ecb0939f727a7af0dbd25bcee50f3e2b SHA512 e2e0edf60e56427234b6a39e4a818735bd691d582eadca23d92debde8f3f759dea2b2a3acc399e1010ffd37d7bb4fa8d468076c0220b653a41668ead58ee5f66
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
+}