Failure for `make tests` as first step

Issue #359 resolved
Paul Hargrove created an issue

As currently implemented, the tests target will incorrectly operate with an empty list of networks if there was no preceding make all (or other step which builds GASNet). This is true despite existing logic intended to build the dependencies because the network list is evaluated by GNU Make too early, before the run of GASNet's configure.

The failure looks like the following:

$ ../configure [args]
[...messages...]
$ make tests
[...gasnet configure output...]
NO DEFAULT TARGET

PASSED compiling 0 tests


       ==== UPC++ TESTS SUCCESSFULLY COMPILED ====

Your UPC++ build appears to be working for the following networks:



You may now test UPC++ runtime operation for each network of interest.
First, ensure you are in a proper environment for launching parallel jobs
(eg batch system session, if necessary) and then issue a command like:

  /home/pcp1/phargrov/upcxx/B/bin/upcxx-run -n 2 ./test-hello_upcxx-

And similarly for any other of the tests compiled above.

Note that this is a false report of success based on failure-free iteration over an empty set of networks.

The work-around is to simply retry make tests.
Any second and subsequent attempts work fine because the GASNet build dir is present when make begins its work.

The fix should be simple via an added level of target indirection to re-evaluate the conduit list after the prerequisite libraries are built.

This is not an issue for make check since that uses the default network, which was established when UPC++'s configure was run. This is also no issue if the user overrides NETWORKS.

This issue is present in 2020.3.0.
However, I feel that this has minimal potential user impact since we only document make tests as something to run after make all and even then only as a backup to make check (which is not impacted).

Comments (2)

  1. Paul Hargrove reporter

    Resolve "failure for make tests as first step"

    This commit resolves issue 359 by ensuring that the tests target and the related do-test-prereqs behave "well" in the presence of an empty $(NETWORKS) as will occur if make tests is the first command run following configure.

    → <<cset fb6024fbeea3>>

  2. Log in to comment