<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">New issue `port destroot` tries to build with bazel again, and this breaks because of permissions issues.<div class=""><br class=""></div><div class="">Is there a simple way to just copy the stuff it already built into destroot?<br class=""><div class=""><br class=""></div><div class="">I’ve tried the standard destroot commands from the python port group and the pip commands used in py-tensorflow. Both cause a rerun of bazel (ugh) and breakage.</div><div class=""><br class=""></div><div class="">Also, I’m not sure what’s causing this python import breakage of the bazel build:</div><div class=""><br class=""></div><div class=""><blockquote type="cite" class=""><div class="">$ cd /opt/local/ports/python/py-dm-tree/work/tree-0.1.6.20200602/build/lib.macosx-10.15-x86_64-3.7/</div><div class="">$ ls tree/</div>__init__.py                  tree_benchmark.py<br class="">_tree.cpython-37m-darwin.so  tree_test.py<div class="">$ python -c 'import tree'<br class="">Traceback (most recent call last):<br class="">  File "<string>", line 1, in <module><br class="">  File "tree/__init__.py", line 48, in <module><br class="">    from tree import _tree  # pylint: disable=g-import-not-at-top<br class="">ImportError: cannot import name _tree</div></blockquote></div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">Latest draft Portfile:</div><div class=""><br class=""></div><div class=""><blockquote type="cite" class=""><div class=""><font face="Menlo" style="font-size: 14px;" class=""># -*- 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</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class=""><br class=""></font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">PortSystem          1.0</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">PortGroup           github 1.0</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">PortGroup           java 1.0</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">PortGroup           python 1.0</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class=""><br class=""></font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">github.setup        deepmind tree 63e7c35242369cd307e9cb3407c8ab608b226a22</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class=""># no official release; version from __init__.py plus github commit date</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">version             0.1.6.20200602</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">name                py-dm-${github.project}</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">revision 0</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class=""><br class=""></font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">platforms           darwin</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">license             Apache-2</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">maintainers         nomaintainer</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class=""><br class=""></font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">description         Deepmind tree is a library for working with nested\</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">                    data structures.</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">long_description    ${description} In a way, tree generalizes the builtin\</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">                    map function which only supports flat sequences, and\</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">                    allows to apply a function to each "leaf" preserving\</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">                    the overall structure.</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class=""><br class=""></font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">homepage            <a href="https://github.com/deepmind/tree" class="">https://github.com/deepmind/tree</a></font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">distname            ${github.project}-${version}</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class=""><br class=""></font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">checksums           rmd160  f355b4b190be6f5d56ffd0f4b3ad0b031223ccb8 \</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">                    sha256  953229df22300f490690e2dedf6dfcd73c68422d12efd9e18cb8a775eaf1e4c3 \</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">                    size    35259</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class=""><br class=""></font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">python.versions     37 38</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class=""><br class=""></font></div><div class=""><font face="Menlo" style="font-size: 14px;" class=""># Required java version</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">java.version        11+</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class=""># JDK port to install if required java not found</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">java.fallback       openjdk14</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class=""># JDK only needed at build time, but java PG sets lib dependency so</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class=""># declare no conflict to allow redistribution of binaries.</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">license_noconflict  ${java.fallback}</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class=""><br class=""></font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">proc python_listify {tcl_list} {</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    set python_list {}</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    foreach item [lreverse ${tcl_list}] {</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">        set python_list "'${item}', ${python_list}"</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    }</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    return ${python_list}</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">}</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class=""><br class=""></font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">if {${name} ne ${subport}} {</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    depends_build-append \</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">                    port:bazel \</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">                    port:py${python.version}-setuptools</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class=""><br class=""></font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    depends_run-append \</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">                    port:py${python.version}-six \</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class=""><br class=""></font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    depends_test-append \</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">                    port:py${python.version}-absl \</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">                    port:py${python.version}-attrs \</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">                    port:py${python.version}-numpy \</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">                    port:py${python.version}-pytest \</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">                    port:py${python.version}-wrapt</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class=""><br class=""></font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    # Limit the number of parallel jobs to the number of physical, not logical, cpus.</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    # First current setting to ensure we would be reducing the current setting.</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    set physicalcpus [sysctl hw.physicalcpu]</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    if { ${build.jobs} > ${physicalcpus} } {</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">        build.jobs ${physicalcpus}</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    }</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class=""><br class=""></font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    # Build using the wonderful bazel build system ...</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    set bazel_output_user_root ${workpath}</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    set bazel_cmd "bazel --max_idle_secs=15 --output_user_root=${bazel_output_user_root}"</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    set bazel_build_opts "--subcommands --compilation_mode=opt --verbose_failures"</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    # Limit bazel resource utilisation</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    set bazel_build_opts "${bazel_build_opts} --jobs ${build.jobs} --local_ram_resources=HOST_RAM*0.75 --local_cpu_resources=HOST_CPUS*.75"</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    # Explicitly pass SDK <a href="https://github.com/bazelbuild/rules_go/issues/1554" class="">https://github.com/bazelbuild/rules_go/issues/1554</a></font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    # Check versioned SDK actually exists... <a href="https://trac.macports.org/ticket/60317" class="">https://trac.macports.org/ticket/60317</a></font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    if {[string first ${configure.sdk_version} ${configure.sdkroot}] != -1} {</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">        set bazel_build_opts "${bazel_build_opts} --macos_sdk_version=${configure.sdk_version}"</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    } else {</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">        ui_warn "configure.sdkroot='${configure.sdkroot}' does not match configure.sdk_version='${configure.sdk_version}'"</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    }</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    # hack to try and transfer MP c, c++ and ld options to bazel...</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    foreach opt [list {*}${configure.cflags} ] {</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">        set bazel_build_opts "${bazel_build_opts} --conlyopt \"${opt}\""</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    }</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    foreach opt [list {*}${configure.cxxflags} ] {</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">        set bazel_build_opts "${bazel_build_opts} --cxxopt \"${opt}\""</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    }</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    foreach opt [list {*}${configure.ldflags} ] {</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">        set bazel_build_opts "${bazel_build_opts} --linkopt \"${opt}\""</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    }</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    ui_debug "Bazel build command : ${bazel_cmd}"</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    ui_debug "Bazel build options : ${bazel_build_opts}"</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class=""><br class=""></font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    # 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</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    patchfiles      setup.py.patch</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class=""><br class=""></font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    post-patch {</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">        reinplace \</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">            "s|@BAZEL_CMD@|[python_listify ${bazel_cmd}]|g" \</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">            ${worksrcpath}/setup.py</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">        reinplace \</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">            "s|@BAZEL_BUILD_OPTS@|[python_listify ${bazel_build_opts}]|g" \</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">            ${worksrcpath}/setup.py</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">        xinstall -d ${bazel_output_user_root}/tmp</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    }</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class=""><br class=""></font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    build.env-append \</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">        TMPDIR=${workpath}/tmp \</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">        JAVA_HOME=${java.home}</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class=""><br class=""></font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    set bazel_lib ${worksrcpath}/build/lib</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    post-build {</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">        if {![file isdirectory ${bazel_lib}]} {</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">            foreach dir [glob -directory ${worksrcpath}/build -nocomplain -type d lib.*] {</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">                set bazel_lib ${dir}</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">                break</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">            }</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">        }</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">        test.env-append PYTHONPATH=${bazel_lib}</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    }</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    </font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    destroot.cmd  pip-${python.branch}</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    destroot.args           \</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">        --ignore-installed  \</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">        --no-cache-dir      \</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">        --no-dependencies   \</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">        --root ${destroot}  \</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">        ${worksrcpath}</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    destroot.post_args</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class=""><br class=""></font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    test.run        yes</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    test.cmd        py.test-${python.branch}</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    test.target</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    test.env-append "PATH=$env(PATH):${workpath}/bin"</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class=""><br class=""></font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    post-destroot {</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">        set docdir ${prefix}/share/doc/${subport}</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">        xinstall -d ${destroot}${docdir}</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">        xinstall -m 0644 -W ${worksrcpath} LICENSE README.md \</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">            ${destroot}${docdir}</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    }</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class=""><br class=""></font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    livecheck.type      none</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">} else {</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">    livecheck.type      pypi</font></div><div class=""><font face="Menlo" style="font-size: 14px;" class="">}</font></div></blockquote></div><div class=""><div class=""><br class=""></div></div></div></body></html>