New install command fails with external GASNET
The new install command does not work correctly with external GASNET=/path/to/gasnet
If the external GASNet is an install tree, it drops dead right away:
{pcp-d-5 ~/UPC/upcxx} rm -Rf .nobs/ ; env GASNET=/home/pcp1/bonachea/UPC/inst-ex-debug DBGSYM=1 OPTLEV=0 ./install test3
UPCXX revision: a0d6e07
System: Linux pcp-d-5 3.10.0-693.1.1.el7.x86_64 #1 SMP Tue Aug 15 08:36:44 CDT 2017 x86_64 x86_64 x86_64 GNU/Linux
LSB Version: :core-4.1-amd64:core-4.1-noarch
Distributor ID: Scientific
Description: Scientific Linux release 7.3 (Nitrogen)
Release: 7.3
Codename: Nitrogen
Date: Fri Sep 22 14:00:30 PDT 2017
Current directory: /home/pcp1/bonachea/UPC/upcxx
Install directory:
Settings: GASNET='/home/pcp1/bonachea/UPC/inst-ex-debug' OPTLEV='0' DBGSYM='1'
/usr/local/pkg/gcc/7.2.0/bin/g++
g++ (GCC) 7.2.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
/usr/local/pkg/gcc/7.2.0/bin/gcc
gcc (GCC) 7.2.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Configuring GASNet...
(in /home/pcp1/bonachea/UPC/upcxx/.nobs/art/d284e6d5e76b0a1d331ad1a66739b933cbd9d35f)
/home/pcp1/bonachea/UPC/inst-ex-debug/configure --enable-debug --disable-psm --disable-mxm --disable-portals4 --disable-ofi --disable-dev-warnings
Building GASNet...
(in /home/pcp1/bonachea/UPC/upcxx/.nobs/art/d284e6d5e76b0a1d331ad1a66739b933cbd9d35f)
make
*** Something FAILED! ***
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
make
make: *** No targets specified and no makefile found. Stop.
UPC++ Installation failed. Please report the entire log above to: upcxx@googlegroups.com
If the external GASNet is a build tree, then things are more subtly broken.
An external GASNet by definition is either debug or opt, and the installer currently incorrectly assumes it is both, which is always incorrect.
If the external GASNet was configured for debug, the nobs installer eventually drops dead while trying to build the optimized UPC++ libraries against a debug GASNet:
g++ -std=c++11 -D_GNU_SOURCE=1 -I/home/pcp1/bonachea/UPC/upcxx/.nobs/art/0a7ba1ef0158d03f0d7127ade4a98b19e09f7572 -DUPCXX_BACKEND=gasnet1_seq -D_GNU_SOURCE=1 -DGASNET_SEQ -I/home/pcp1/bonachea/UPC/upcxx/poop/gasnet.opt/include -I/home/pcp1/bonachea/UPC/upcxx/poop/gasnet.opt/include/smp-conduit -O3 -Wall -g3 -Wall -Wpointer-arith -Wwrite-strings -Wmissing-format-attribute -Wno-unused -Wno-unused-parameter -Wno-address -c /home/pcp1/bonachea/UPC/upcxx/src/backend/gasnet/handle_cb.cpp -o /home/pcp1/bonachea/UPC/upcxx/.nobs/art/93101a2292dc093b1c81adf2eb79626afc4c1d6d.handle_cb.cpp.o
In file included from /home/pcp1/bonachea/UPC/upcxx/poop/gasnet.opt/include/gasnet.h:11:0,
from /home/pcp1/bonachea/UPC/upcxx/src/backend/gasnet/handle_cb.cpp:3:
/home/pcp1/bonachea/UPC/upcxx/poop/gasnet.opt/include/gasnetex.h:771:6: error: #error Tried to compile GASNet client code with optimization enabled but also GASNET_DEBUG (which seriously hurts performance). Reconfigure/rebuild GASNet without --enable-debug
#error Tried to compile GASNet client code with optimization enabled but also GASNET_DEBUG (which seriously hurts performance). Reconfigure/rebuild GASNet without --enable-debug
^~~~~
If the external GASNet build tree was configured for opt, the same GASNet gets installed twice, in directories called "gasnet.opt" and "gasnet.debug", where the second is pretty misleading. This setup is not necessarily harmful (as it should be safe to build a debug UPC++ against an optimized GASNet), but it's definitely surprising.
I'm not sure what the right behavior should be here for the new installer. Perhaps the solution is simply to prohibit external GASNet for the new "full" installer (in which case we need to document that restriction and update the script to enforce it instead of doing brain-dead things). It also means we probably need to continue supporting the --single installer for use with external GASNet if we think that's important (which I think it is, if that's the only way for a user to build against a modified/patched GASNet).
Comments (4)
-
Account Deleted -
reporter I think all that's needed is more aggressive checking.
Seems reasonable.
Anything that has already passed through configure (build and install trees) cannot be reasonably supported.
Based on this, I think our nightly CI will probably continue to use install --single and an external GASNET build tree for automated testing, because it already has a full configure and build of EX, so a adding two additional configure and builds of EX just wastes test cycles (and reduces the number of platforms we can test in one night). So please plan to continue supporting install --single with external GASNET build tree for at least that purpose.
-
Account Deleted - changed status to resolved
Fixed issue 51. Actively disallow GASNET trees which have been configured by user (build, install).
→ <<cset ef95a4541af4>>
-
-
assigned issue to
-
assigned issue to
- Log in to comment
External gasnet is ok for full install so long as GASNET points to a url, tarball, or source tree (I have confirmed that source tree works on my laptop). Anything that has already passed through configure (build and install trees) cannot be reasonably supported. So I think all that's needed is more aggressive checking.