Deepmind Tree Bazel Build Portfile Help Request

Steven Smith steve.t.smith at gmail.com
Mon Jul 6 01:57:16 UTC 2020


I’m preparing a PR for the Google Magenta project <https://magenta.tensorflow.org <https://magenta.tensorflow.org/>>, and am running into this issue for the “dm-tree” dependent package with the bazel build.

The command `port -dv test py37-dm-tree` hangs during the bazel build.
I can’t even Ctl-C out of the process—it requires a full ps command then a kill -9 to shut down everything.
However, running the build by hand works:
sudo -u macports bash -c '/opt/local/Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7 setup.py --no-user-cfg build'

Any pointers or help would be appreciated. I’ve never used bazel, so I copied a bunch of relevant stuff from the py-tensorflow Portfile and attempted a few obvious hacks, but nothing changes the underlying problem of a hung port command.

Relevant files:

https://github.com/deepmind/tree/blob/master/setup.py <https://github.com/deepmind/tree/blob/master/setup.py>
https://github.com/deepmind/tree/blob/master/bazel/BUILD <https://github.com/deepmind/tree/blob/master/bazel/BUILD>

Bazel process (hung when called from MacPorts):

> bazel(tree-0.1.6.20200524) -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/private/var/tmp/_bazel_root/54b8ea352146bad8adc65c2e363d519a -Xverify:none -Djava.util.logging.config.file=/private/var/tmp/_bazel_root/54b8ea352146bad8adc65c2e363d519a/javalog.properties -Dcom.google.devtools.build.lib.util.LogHandlerQuerier.class=com.google.devtools.build.lib.util.SimpleLogHandler$HandlerQuerier -XX:-MaxFDLimit -Djava.library.path=/var/tmp/_bazel_root/install/e3bdf1a360e6d6cc38da72ec898bd905/embedded_tools/tools/objc:/var/tmp/_bazel_root/install/e3bdf1a360e6d6cc38da72ec898bd905/ -Dfile.encoding=ISO-8859-1 -jar /var/tmp/_bazel_root/install/e3bdf1a360e6d6cc38da72ec898bd905/A-server.jar --max_idle_secs=10800 --noshutdown_on_low_sys_mem --connect_timeout_secs=30 --output_user_root=/var/tmp/_bazel_root --install_base=/var/tmp/_bazel_root/install/e3bdf1a360e6d6cc38da72ec898bd905 --install_md5=e3bdf1a360e6d6cc38da72ec898bd905 --output_base=/private/var/tmp/_bazel_root/54b8ea352146bad8adc65c2e363d519a --workspace_directory=/opt/local/var/macports/build/_opt_local_ports_python_py-dm-tree/py37-dm-tree/work/tree-0.1.6.20200524 --default_system_javabase=/Library/Java/JavaVirtualMachines/openjdk13/Contents/Home --failure_detail_out=/private/var/tmp/_bazel_root/54b8ea352146bad8adc65c2e363d519a/failure_detail.rawproto --deep_execroot --expand_configs_in_place --idle_server_tasks --write_command_log --nowatchfs --nofatal_event_bus_exceptions --nowindows_enable_symlinks --client_debug=false --product_name=Bazel --noincompatible_enable_execution_transition --option_sources=


Draft Portfile:

> # -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
> 
> PortSystem          1.0
> PortGroup           compilers 1.0
> PortGroup           compiler_blacklist_versions 1.0
> PortGroup           github 1.0
> PortGroup           java 1.0
> PortGroup           python 1.0
> PortGroup           xcodeversion 1.0
> PortGroup           xcode_workaround 1.0
> 
> github.setup        deepmind tree 2b81872
> # no official release; version from __init__.py plus github commit date
> version             0.1.6.20200524
> name                py-dm-${github.project}
> revision 0
> 
> platforms           darwin
> license             Apache-2
> maintainers         nomaintainer
> 
> description         Deepmind tree is a library for working with nested\
>                     data structures.
> long_description    ${description} In a way, tree generalizes the builtin\
>                     map function which only supports flat sequences, and\
>                     allows to apply a function to each "leaf" preserving\
>                     the overall structure.
> 
> homepage            https://github.com/deepmind/tree
> distname            ${github.project}-${version}
> 
> checksums           rmd160  40518b306e8f5a80b12ef5e76ca9e2f8ef232de3 \
>                     sha256  0748428f70fae2209b8763bf99cadaf22276a4391851ba919dce9d3d0bc047bf \
>                     size    35176
> 
> python.versions     37 38
> 
> # Required java version
> java.version        11+
> # JDK port to install if required java not found
> java.fallback       openjdk14
> # JDK only needed at build time, but java PG sets lib dependency so
> # declare no conflict to allow redistribution of binaries.
> license_noconflict  ${java.fallback}
> 
> # require c++14
> compiler.cxx_standard 2014
> 
> # The oldest Xcode version to use default Xcode compiler
> # https://github.com/tensorflow/tensorflow/issues/39262
> set tf_min_xcode    10.2
> compiler.blacklist-append {clang < 1001}
> # Work out if we should be using macports clang
> set use_mp_clang [ expr ( [ string match macports-clang-* ${configure.compiler} ] || [ vercmp ${xcodeversion} ${tf_min_xcode} ] < 0 ) ]
> 
> use_parallel_build  no
> 
> if {${name} ne ${subport}} {
>     depends_build-append \
>                     port:bazel \
>                     port:py${python.version}-setuptools
> 
>     depends_run-append \
>                     port:py${python.version}-six \
> 
>     depends_test-append \
>                     port:py${python.version}-absl \
>                     port:py${python.version}-attrs \
>                     port:py${python.version}-numpy \
>                     port:py${python.version}-pytest \
>                     port:py${python.version}-wrapt
> 
>     # diff -NaurdwB ./dm-tree-orig/setup.py ./dm-tree-new/setup.py | sed -E -e 's/\.\/dm-tree-(orig|new)*\/(setup\.py)(\.[[:alnum:]]+)*/\.\/setup.py/' > ./setup.py.patch
>     # patchfiles      setup.py.patch
> 
>     # set bazel_output_base   ${workpath}/tmp/_bazel_root
>     # xinstall -d     ${bazel_output_base}
>     # post-patch {
>     #     reinplace \
>     #         "s|@BAZEL_OUTPUT_USER_ROOT@|${bazel_output_base}|g" \
>     #         ${worksrcpath}/setup.py
>     # }
> 
>     build.env-append \
>                     BAZEL_USE_CPP_ONLY_TOOLCHAIN=1 \
>                     JAVA_HOME=${java.home}
> 
>     test.run        yes
>     test.cmd        py.test-${python.branch}
>     test.target
>     test.env-append \
>                     "PATH=$env(PATH):${workpath}/bin" \
>                     PYTHONPATH=${worksrcpath}/build/lib
> 
>     post-destroot {
>         set docdir ${prefix}/share/doc/${subport}
>         xinstall -d ${destroot}${docdir}
>         xinstall -m 0644 -W ${worksrcpath} LICENSE README.md \
>             ${destroot}${docdir}
>     }
> 
>     livecheck.type      none
> } else {
>     livecheck.type      pypi
> }

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macports.org/pipermail/macports-dev/attachments/20200705/1e62d107/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 3898 bytes
Desc: not available
URL: <http://lists.macports.org/pipermail/macports-dev/attachments/20200705/1e62d107/attachment-0001.bin>


More information about the macports-dev mailing list