diff options
author | Jason Zaman <perfinion@gentoo.org> | 2019-02-17 21:59:38 +0800 |
---|---|---|
committer | Jason Zaman <perfinion@gentoo.org> | 2019-02-18 20:52:09 +0800 |
commit | b7bb43b59e0a499ac97a8717631165d9ff756f06 (patch) | |
tree | 0d192e23b3bd7ecedeab0a3972245f23d418da8b /sci-libs/tensorflow-estimator | |
parent | sci-visualization/tensorboard: bump 1.12.2 (diff) | |
download | gentoo-b7bb43b59e0a499ac97a8717631165d9ff756f06.tar.gz gentoo-b7bb43b59e0a499ac97a8717631165d9ff756f06.tar.bz2 gentoo-b7bb43b59e0a499ac97a8717631165d9ff756f06.zip |
sci-libs/tensorflow-estimator: new package
Signed-off-by: Jason Zaman <perfinion@gentoo.org>
Package-Manager: Portage-2.3.51, Repoman-2.3.11
Diffstat (limited to 'sci-libs/tensorflow-estimator')
4 files changed, 231 insertions, 0 deletions
diff --git a/sci-libs/tensorflow-estimator/Manifest b/sci-libs/tensorflow-estimator/Manifest new file mode 100644 index 000000000000..410ce339186e --- /dev/null +++ b/sci-libs/tensorflow-estimator/Manifest @@ -0,0 +1 @@ +DIST tensorflow-estimator-1.13.0_rc0.tar.gz 531012 BLAKE2B 1398fdec5b81a7bab7ccfb2d37b8094c4ef4b96562e2c6b8b4e565cad3c234245b5d8dfb30a79b73302fc0764b1d3503d4ee2d4363a9d2e635b36fb8e2b726b4 SHA512 c8ad78d0df294c7471f1577880905be08edcc038878e9d197b975f33f91192e9c413d13fa70e8fa1ff760ad6bf6141f199322bf2076568690e75fa38bd5a4cf4 diff --git a/sci-libs/tensorflow-estimator/files/0001-pip_package-modularize-build-script-to-allow-distros.patch b/sci-libs/tensorflow-estimator/files/0001-pip_package-modularize-build-script-to-allow-distros.patch new file mode 100644 index 000000000000..140e23c84bb5 --- /dev/null +++ b/sci-libs/tensorflow-estimator/files/0001-pip_package-modularize-build-script-to-allow-distros.patch @@ -0,0 +1,153 @@ +From 897b25418ae0f77bcee7fdd7070d5c22677dc218 Mon Sep 17 00:00:00 2001 +From: Jason Zaman <jason@perfinion.com> +Date: Sat, 2 Feb 2019 15:19:44 +0800 +Subject: [PATCH] pip_package: modularize build script to allow distros to + install more flexibly + +Gentoo Linux handles python modules slightly differently and packaging +wheels is complicated. We prefer to run setup.py directly ourselves +rather than build a wheel and then install from there. + +This modularizes build_pip_package.sh to allow running parts separately. +using --src srcdir will prepare the package in a known dir so the distro +package can take it from there. If only dstdir is given (either with +--dst or as the only argument to preserve backwards compat) then +behaviour is the same as before, the sources are prepared and the wheel +is built and placed in dstdir. + +Signed-off-by: Jason Zaman <jason@perfinion.com> +--- + .../tools/pip_package/build_pip_package.sh | 73 +++++++++++++++++-- + 1 file changed, 66 insertions(+), 7 deletions(-) + +diff --git a/tensorflow_estimator/tools/pip_package/build_pip_package.sh b/tensorflow_estimator/tools/pip_package/build_pip_package.sh +index 5d06dd6..1667169 100755 +--- a/tensorflow_estimator/tools/pip_package/build_pip_package.sh ++++ b/tensorflow_estimator/tools/pip_package/build_pip_package.sh +@@ -23,10 +23,8 @@ function real_path() { + is_absolute "$1" && echo "$1" || echo "$PWD/${1#./}" + } + +-function build_wheel() { ++function prepare_src() { + TMPDIR="$1" +- DEST="$2" +- PROJECT_NAME="$3" + + mkdir -p "$TMPDIR" + echo $(date) : "=== Preparing sources in dir: ${TMPDIR}" +@@ -67,6 +65,17 @@ function build_wheel() { + touch "${TMPDIR}/tensorflow_estimator/contrib/estimator/python/__init__.py" + touch "${TMPDIR}/tensorflow_estimator/contrib/estimator/python/estimator/__init__.py" + fi ++} ++ ++function build_wheel() { ++ if [ $# -lt 2 ] ; then ++ echo "No src and dest dir provided" ++ exit 1 ++ fi ++ ++ TMPDIR="$1" ++ DEST="$2" ++ PROJECT_NAME="$3" + + pushd ${TMPDIR} > /dev/null + echo $(date) : "=== Building wheel" +@@ -75,15 +84,39 @@ function build_wheel() { + cp dist/* ${DEST} + popd > /dev/null + echo $(date) : "=== Output wheel file is in: ${DEST}" +- rm -rf "${TMPDIR}" ++} ++ ++function usage() { ++ echo "Usage:" ++ echo "$0 [--src srcdir] [--dst dstdir] [options]" ++ echo "$0 dstdir [options]" ++ echo "" ++ echo " --src prepare sources in srcdir" ++ echo " will use temporary dir if not specified" ++ echo "" ++ echo " --dst build wheel in dstdir" ++ echo " if dstdir is not set do not build, only prepare sources" ++ echo "" ++ echo " Options:" ++ echo " --project_name <name> set project name to name" ++ echo " --nightly build tensorflow_estimator nightly" ++ echo "" ++ exit 1 + } + + function main() { + NIGHTLY_BUILD=0 ++ PROJECT_NAME="" ++ SRCDIR="" ++ DSTDIR="" ++ CLEANSRC=1 + + while true; do + if [[ -z "$1" ]]; then + break ++ elif [[ "$1" == "--help" ]]; then ++ usage ++ exit 1 + elif [[ "$1" == "--nightly" ]]; then + NIGHTLY_BUILD=1 + elif [[ "$1" == "--project_name" ]]; then +@@ -92,6 +125,19 @@ function main() { + break + fi + PROJECT_NAME="$1" ++ elif [[ "$1" == "--src" ]]; then ++ shift ++ if [[ -z "$1" ]]; then ++ break ++ fi ++ SRCDIR="$(real_path $1)" ++ CLEANSRC=0 ++ elif [[ "$1" == "--dst" ]]; then ++ shift ++ if [[ -z "$1" ]]; then ++ break ++ fi ++ DSTDIR="$(real_path $1)" + else + DSTDIR="$(real_path $1)" + fi +@@ -105,16 +151,29 @@ function main() { + fi + fi + +- SRCDIR="$(mktemp -d -t tmp.XXXXXXXXXX)" +- +- if [[ -z "$DSTDIR" ]]; then ++ if [[ -z "$DSTDIR" ]] && [[ -z "$SRCDIR" ]]; then + echo "No destination dir provided" ++ usage + exit 1 + fi + ++ if [[ -z "$SRCDIR" ]]; then ++ # make temp srcdir if none set ++ SRCDIR="$(mktemp -d -t tmp.XXXXXXXXXX)" ++ fi + ++ prepare_src "$SRCDIR" ++ ++ if [[ -z "$DSTDIR" ]]; then ++ # only want to prepare sources ++ exit ++ fi + + build_wheel "$SRCDIR" "$DSTDIR" "$PROJECT_NAME" ++ ++ if [[ $CLEANSRC -ne 0 ]]; then ++ rm -rf "${TMPDIR}" ++ fi + } + + main "$@" +-- +2.19.2 + diff --git a/sci-libs/tensorflow-estimator/metadata.xml b/sci-libs/tensorflow-estimator/metadata.xml new file mode 100644 index 000000000000..2d40af6762c9 --- /dev/null +++ b/sci-libs/tensorflow-estimator/metadata.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <email>perfinion@gentoo.org</email> + <name>Jason Zaman</name> + </maintainer> + <longdescription lang="en"> + TensorFlow Estimator is a high-level TensorFlow API that greatly + simplifies machine learning programming. Estimators encapsulate + training, evaluation, prediction, and exporting for your model. + </longdescription> + <upstream> + <remote-id type="github">tensorflow/estimator</remote-id> + </upstream> +</pkgmetadata> diff --git a/sci-libs/tensorflow-estimator/tensorflow-estimator-1.13.0_rc0.ebuild b/sci-libs/tensorflow-estimator/tensorflow-estimator-1.13.0_rc0.ebuild new file mode 100644 index 000000000000..766a3206621e --- /dev/null +++ b/sci-libs/tensorflow-estimator/tensorflow-estimator-1.13.0_rc0.ebuild @@ -0,0 +1,61 @@ +# Copyright 1999-2019 Jason Zaman +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +PYTHON_COMPAT=( python2_7 python{3_5,3_6} ) +MY_PN="estimator" +MY_PV=${PV/_rc/-rc} +MY_P=${MY_PN}-${MY_PV} + +inherit bazel distutils-r1 flag-o-matic toolchain-funcs + +DESCRIPTION="A high-level TensorFlow API that greatly simplifies machine learning programming" +HOMEPAGE="https://www.tensorflow.org/" + +LICENSE="Apache-2.0" +SLOT="0" +KEYWORDS="~amd64" +IUSE="" + +SRC_URI="https://github.com/tensorflow/${MY_PN}/archive/v${MY_PV}.tar.gz -> ${P}.tar.gz" + +RDEPEND="sci-libs/tensorflow[python,${PYTHON_USEDEP}]" +DEPEND="${RDEPEND}" +BDEPEND=" + dev-java/java-config" + +S="${WORKDIR}/${MY_P}" + +PATCHES=( + "${FILESDIR}/0001-pip_package-modularize-build-script-to-allow-distros.patch" +) +DOCS=( CONTRIBUTING.md README.md ) + +src_prepare() { + bazel_setup_bazelrc + default +} + +src_compile() { + export JAVA_HOME=$(java-config --jre-home) + + ebazel build //tensorflow_estimator/tools/pip_package:build_pip_package + ebazel shutdown + + local srcdir="${T}/src" + mkdir -p "${srcdir}" || die + bazel-bin/tensorflow_estimator/tools/pip_package/build_pip_package --src "${srcdir}" || die +} + +src_install() { + do_install() { + cd "${T}/src" || die + esetup.py install + python_optimize + } + python_foreach_impl do_install + + cd "${S}" || die + einstalldocs +} |