Confusing behavior for nobs external GASNET variable

Issue #5 resolved
Dan Bonachea created an issue

The nobs $GASNET input variable is used to specify an external GASNet.

However there are two possible directory structures for an external GASNet:

  1. A GASNet build directory, where the conduit fragment lives in $builddir/NETWORK-conduit/NETWORK-seq.mak
  2. A GASNet install directory, where the conduit fragment lives in $installdir/include/NETWORK-conduit/NETWORK-seq.mak

Consequently, nobs currently requires GASNET=$builddir for the former case and GASNET=$installdir/include for the latter case. This seems unnecessarily confusing, and the error one gets when it's wrong would make no sense to an end user (see below).

It would be nice if nobs was smart enough to accept GASNET=$installdir

$ export GASNET=$installdir DBGSYM=1 OPTLEV=0 ; nobs exe test/dist_object.cpp        
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Uncaught exception

Traceback (most recent call last):
  File "/home/bonachea/UPC/upcxx/nobs/nobs/tool_main.py", line 85, in main
    printed.wait()
  File "/home/bonachea/UPC/upcxx/nobs/nobs/async.py", line 403, in wait
    return me.wait_futurized().value()
  File "/home/bonachea/UPC/upcxx/nobs/nobs/async.py", line 707, in fire
    arg = gen_throw(arg.exception, None, arg.traceback)
  File "/home/bonachea/UPC/upcxx/nobs/nobs/memodb.py", line 458, in memo_execute
    yield result
  File "/home/bonachea/UPC/upcxx/nobs/nobs/async.py", line 707, in fire
    arg = gen_throw(arg.exception, None, arg.traceback)
  File "/home/bonachea/UPC/upcxx/nobsrule.py", line 495, in execute
    yield fresh_src(main_src)
  File "/home/bonachea/UPC/upcxx/nobs/nobs/async.py", line 557, in fire1
    proxied = lam(arg_result)
  File "/home/bonachea/UPC/upcxx/nobs/nobs/memodb.py", line 539, in result
    return resultoid()
  File "/home/bonachea/UPC/upcxx/nobs/nobs/async.py", line 707, in fire
    arg = gen_throw(arg.exception, None, arg.traceback)
  File "/home/bonachea/UPC/upcxx/nobs/nobs/memodb.py", line 458, in memo_execute
    yield result
  File "/home/bonachea/UPC/upcxx/nobs/nobs/async.py", line 707, in fire
    arg = gen_throw(arg.exception, None, arg.traceback)
  File "/home/bonachea/UPC/upcxx/nobsrule.py", line 380, in execute
    comp_pp, src = yield me.get_comp_pp_and_src()
  File "/home/bonachea/UPC/upcxx/nobs/nobs/async.py", line 557, in fire1
    proxied = lam(arg_result)
  File "/home/bonachea/UPC/upcxx/nobs/nobs/memodb.py", line 539, in result
    return resultoid()
  File "/home/bonachea/UPC/upcxx/nobs/nobs/async.py", line 707, in fire
    arg = gen_throw(arg.exception, None, arg.traceback)
  File "/home/bonachea/UPC/upcxx/nobsrule.py", line 375, in get_comp_pp_and_src
    comp_pp = yield cxt.comp_lang_pp(src)
  File "/home/bonachea/UPC/upcxx/nobs/nobs/async.py", line 707, in fire
    arg = gen_throw(arg.exception, None, arg.traceback)
  File "/home/bonachea/UPC/upcxx/nobsrule.py", line 208, in comp_lang_pp
    libs = yield cxt.libraries(src)
  File "/home/bonachea/UPC/upcxx/nobs/nobs/async.py", line 707, in fire
    arg = gen_throw(arg.exception, None, arg.traceback)
  File "/home/bonachea/UPC/upcxx/nobsrule.py", line 312, in libraries
    maybe_upcxx_backend = yield cxt.upcxx_backend()
  File "/home/bonachea/UPC/upcxx/nobs/nobs/async.py", line 707, in fire
    arg = gen_throw(arg.exception, None, arg.traceback)
  File "/home/bonachea/UPC/upcxx/nobsrule.py", line 232, in upcxx_backend
    gasnet = yield cxt.gasnet()
  File "/home/bonachea/UPC/upcxx/nobs/nobs/async.py", line 707, in fire
    arg = gen_throw(arg.exception, None, arg.traceback)
  File "/home/bonachea/UPC/upcxx/nobs/nobs/memodb.py", line 458, in memo_execute
    yield result
  File "/home/bonachea/UPC/upcxx/nobs/nobs/async.py", line 705, in fire
    arg = gen_send(arg.value())
  File "/home/bonachea/UPC/upcxx/nobsrule.py", line 777, in execute
    GASNET_LD = makefile_extract(makefile, 'GASNET_LD').split()
  File "/home/bonachea/UPC/upcxx/nobsrule.py", line 803, in makefile_extract
    raise Exception('Makefile %s not found.'%makefile)
Exception: Makefile /home/bonachea/UPC/bupcr-ex/dbg/upcxx/gasnet/smp-conduit/smp-seq.mak not found.

Comments (2)

  1. Former user Account Deleted

    Fixed issue 8: https://bitbucket.org/berkeleylab/upcxx/issues/8/regression-on-external-gasnet-build-tree Regression on GASNET env var behavior.

    Fixed issue 5: https://bitbucket.org/berkeleylab/upcxx/issues/5/confusing-behavior-for-nobs-external More flexible GASNET env var handling. GASNET can now point to a tarball url, tarball file, gasnet source tree, gasnet build tree, gasnet install tree, or nothing (gets default url).

    Errors are displayed through $PAGER (otherwise less -R) when in a TTY.

    → <<cset b31a52d57bec>>

  2. Log in to comment