Skip to content

flux: update flux-core package and add a flux-sched package#8818

Merged
scheibelp merged 14 commits intospack:developfrom
SteVwonder:flux-sched
Aug 2, 2018
Merged

flux: update flux-core package and add a flux-sched package#8818
scheibelp merged 14 commits intospack:developfrom
SteVwonder:flux-sched

Conversation

@SteVwonder
Copy link
Copy Markdown
Member

Renames the flux package to flux-core and updates its dependencies, versions, and variants.
Adds a flux-sched package.

This also updates two of the dependent packages: lua and czmq.

Major thanks to @trws for helping debug the flux-sched linking failures.

depends_on("lua-luaposix")
depends_on("munge")
depends_on("libuuid")
depends_on("python")
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably type=('build', 'run')?


# versions up to 0.8.0 uses pylint to check Flux's python binding
# later versions provide a configure flag and disable the check by default
depends_on("py-pylint", when='@:0.8.0')
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

type='build'?

'PYTHONPATH',
os.path.join(
self.spec.prefix.lib,
"python{}".format(self.spec['python'].version.up_to(2)),
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These needs to be {0} for Python 2.6 support. That's what is causing the tests to fail.

)
run_env.prepend_path(
'FLUX_MODULE_PATH',
os.path.join(self.spec.prefix.lib, 'flux', 'modules'))
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can actually use self.prefix.lib.flux.modules here, same elsewhere. No need for spec or os.path.join.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OOOO. That's really slick. Thanks!

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm glad you like it! That's actually one of my proudest contributions to Spack (#4591). See https://github.com/spack/spack/blob/develop/lib/spack/spack/util/prefix.py#L58,L59 for the 2 lines of code that make all the magic happen!

os.path.join(self.spec.prefix, 'etc', 'flux'))

def setup_dependent_environment(self, spack_env, run_env, dependent_spec):
self.setup_environment(spack_env, run_env)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure if this is what we want. Is #8639 what you have in mind?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Whoops. I think I threw this in while debugging some stuff. Removing

args.append('--disable-docs')
return args

# Default AutotoolsPackage check method fails to find 'check' target
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let me look into this. I overhauled this method quite a bit in #8223. Do you still have this problem on the latest develop?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the output from spack install --test=root --keep-stage flux-core@master on this branch (i.e., latest develop + my PR):

==> RUN-TESTS: build-time tests [check]
==> 'make' '-j56' '-q' 'test'
make: *** No rule to make target `test'.  Stop.
==> Target 'test' not found in Makefile
==> 'make' '-j56' '-q' 'check'                                                                             [2618/5974]
Making check in .
make[1]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-DrPfq7/flux-core/spack-build'
make  check-local
make[2]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-DrPfq7/flux-core/spack-build'
Making all in .
Making all in src
make[3]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-DrPfq7/flux-core/spack-build/src'
Making all in common
make[4]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-DrPfq7/flux-core/spack-build/src/common'
Making all in libtap
Making all in libev
Making all in libminilzo
Making all in libpmi
Making all in liblsd
Making all in libutil
Making all in libflux
Making all in libkvs
Making all in libjsc
Making all in libsubprocess
Making all in libcompat
Making all in liboptparse
Making all in libidset
Making all in libtomlc99
Making all in libkz
Making all in libjobspec
make[4]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-DrPfq7/flux-core/spack-build/src/common'
Making all in modules
make[4]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-DrPfq7/flux-core/spack-build/src/modules'
Making all in barrier
Making all in connector-local
Making all in kvs
Making all in content-sqlite
Making all in wreck
Making all in resource-hwloc
Making all in cron
Making all in aggregator
Making all in userdb
Making all in pymod
make[4]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-DrPfq7/flux-core/spack-build/src/modules'
Making all in broker
Making all in connectors
make[4]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-DrPfq7/flux-core/spack-build/src/connectors'
Making all in local
Making all in shmem
Making all in loop
Making all in ssh
make[4]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-DrPfq7/flux-core/spack-build/src/connectors'
Making all in bindings
make[4]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-DrPfq7/flux-core/spack-build/src/bindings'
Making all in lua
make[4]: *** [all-recursive] Error 1
make[4]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-DrPfq7/flux-core/spack-build/src/bindings'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-DrPfq7/flux-core/spack-build/src'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-DrPfq7/flux-core/spack-build'
make[1]: *** [check-am] Error 2
make[1]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-DrPfq7/flux-core/spack-build'
make: *** [check-recursive] Error 1
==> Target 'check' not found in Makefile

Side-note: why am I seeing this output at the terminal when i press v during the install, but I'm not seeing it in the spack-build.out file in the stage directory after the installation. The spack-build.out only has the ./autogen.sh, configure, make, make install phases.

If I keep the overridden check method:

spack install --overwrite --keep-stage --test=root flux-core@master
<snip>
=> RUN-TESTS: build-time tests [check]
==> 'make' '-j56' 'check'
Making check in .
make[1]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build'
make  check-local
make[2]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build'
Making all in .
make[3]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build'
make[3]: Nothing to be done for `all-am'.
make[3]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build'
Making all in src
make[3]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src'
Making all in common
make[4]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common'
Making all in libtap
make[5]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/libtap'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/libtap'
Making all in libev
make[5]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/libev'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/libev'
Making all in libminilzo
make[5]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/libminilzo'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/libminilzo'
Making all in libpmi
make[5]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/libpmi'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/libpmi'
Making all in liblsd
make[5]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/liblsd'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/liblsd'
Making all in libutil
make[5]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/libutil'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/libutil'
Making all in libflux
make[5]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/libflux'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/libflux'
Making all in libkvs
make[5]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/libkvs'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/libkvs'
Making all in libjsc
make[5]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/libjsc'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/libjsc'
Making all in libsubprocess
make[5]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/libsubproce
ss'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/libsubproces
s'
Making all in libcompat
make[5]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/libcompat'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/libcompat'
Making all in liboptparse
make[5]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/liboptparse
'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/liboptparse'
Making all in libidset
make[5]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/libidset'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/libidset'
Making all in libtomlc99
make[5]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/libtomlc99'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/libtomlc99'
Making all in libkz
make[5]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/libkz'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/libkz'
Making all in libjobspec
make[5]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/libjobspec'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/libjobspec'
make[5]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common'
make[5]: Nothing to be done for `all-am'.
make[5]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common'
make[4]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common'
Making all in modules
make[4]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/modules'
Making all in barrier
make[5]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/modules/barrier'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/modules/barrier'
Making all in connector-local
make[5]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/modules/connector-
local'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/modules/connector-l
ocal'
Making all in kvs
make[5]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/modules/kvs'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/modules/kvs'
Making all in content-sqlite
make[5]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/modules/content-sq
lite'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/modules/content-sql
ite'
Making all in wreck
make[5]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/modules/wreck'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/modules/wreck'
Making all in resource-hwloc
ake[5]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/modules/resource-h
wloc'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/modules/resource-hw
loc'
Making all in cron
make[5]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/modules/cron'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/modules/cron'
Making all in aggregator
make[5]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/modules/aggregator
'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/modules/aggregator'
Making all in userdb
make[5]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/modules/userdb'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/modules/userdb'
Making all in pymod
make[5]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/modules/pymod'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/modules/pymod'
make[5]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/modules'
make[5]: Nothing to be done for `all-am'.
make[5]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/modules'
make[4]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/modules'
Making all in broker
make[4]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/broker'
make[4]: Nothing to be done for `all'.
make[4]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/broker'
Making all in connectors
make[4]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/connectors'
Making all in local
make[5]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/connectors/local'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/connectors/local'
Making all in shmem
make[5]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/connectors/shmem'
make[5]: Nothing to be done for `all'.
ake[5]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/connectors/shmem'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/connectors/shmem'
Making all in loop
make[5]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/connectors/loop'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/connectors/loop'
Making all in ssh
make[5]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/connectors/ssh'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/connectors/ssh'
make[5]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/connectors'
make[5]: Nothing to be done for `all-am'.
make[5]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/connectors'
make[4]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/connectors'
Making all in bindings
make[4]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/bindings'
Making all in lua
make[5]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/bindings/lua'
  LN       flux.so -> .libs/flux.so
  LN       flux/affinity.so -> flux/.libs/affinity.so
  LN       flux/hostlist.so -> flux/.libs/hostlist.so
make[5]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/bindings/lua'
Making all in python
make[5]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/bindings/python'
Making all in flux
make[6]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/bindings/python/fl
ux'
Making all in core
make[7]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/bindings/python/fl
ux/core'
echo Copying core libraries to where they can be used by python out of tree
Copying core libraries to where they can be used by python out of tree
[ "/usr/workspace/wsb/herbein1/spack_toss3/var/spack/stage/flux-core-master-ax7lswmzn2koloklj5zinph2efc2acqr/flux-core
" != "../../../../.." ] && cp  /usr/workspace/wsb/herbein1/spack_toss3/var/spack/stage/flux-core-master-ax7lswmzn2kolo
klj5zinph2efc2acqr/flux-core/src/bindings/python/flux/core/*.py ./ || true
make[7]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/bindings/python/flu
x/core'
make[7]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/bindings/python/fl
ux'
echo Copying libraries to where they can be used by python in-tree
Copying libraries to where they can be used by python in-tree
for LIB in _core.so _kvs.so _jsc.so _kz.so ; do \
    cp -f .libs/$LIB ./ ; \
done
[ "/usr/workspace/wsb/herbein1/spack_toss3/var/spack/stage/flux-core-master-ax7lswmzn2koloklj5zinph2efc2acqr/flux-core
" != "../../../.." ] && cp /usr/workspace/wsb/herbein1/spack_toss3/var/spack/stage/flux-core-master-ax7lswmzn2koloklj5
zinph2efc2acqr/flux-core/src/bindings/python/flux/*.py ./ || true
make[7]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/bindings/python/flu
x'
make[6]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/bindings/python/flu
x'
make[6]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/bindings/python'
make[6]: Nothing to be done for `all-am'.
make[6]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/bindings/python'
make[5]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/bindings/python'
make[5]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/bindings'
make[5]: Nothing to be done for `all-am'.
make[5]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/bindings'
make[4]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/bindings'
aking all in cmd
make[4]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/cmd'
  GEN      builtin-cmds.c
make  all-am
make[5]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/cmd'
  CC       builtin-cmds.o
  CCLD     flux
make[5]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/cmd'
make[4]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/cmd'
Making all in test
make[4]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/test'
make[4]: Nothing to be done for `all'.
make[4]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/test'
make[4]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src'
make[4]: Nothing to be done for `all-am'.
make[4]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src'
make[3]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src'
Making all in doc
make[3]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/doc'
Making all in man1
make[4]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/doc/man1'
make[4]: Nothing to be done for `all'.
make[4]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/doc/man1'
Making all in man3
make[4]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/doc/man3'
make[4]: Nothing to be done for `all'.
make[4]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/doc/man3'
Making all in man7
make[4]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/doc/man7'
make[4]: Nothing to be done for `all'.
make[4]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/doc/man7'
Making all in test
make[4]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/doc/test'
make[4]: Nothing to be done for `all'.
make[4]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/doc/test'
make[4]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/doc'
make[4]: Nothing to be done for `all-am'.
make[4]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/doc'
make[3]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/doc'
Making all in etc
make[3]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/etc'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/etc'
Making all in t
make[3]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/t'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/t'
make[2]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build'
make[1]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build'
Making check in src
make[1]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src'
Making check in common
make[2]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common'
Making check in libtap
make[3]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/libtap'
make  libtap.la
make[4]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/libtap'
  CC       tap.lo
  CCLD     libtap.la
make[4]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/libtap'
make[3]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/libtap'
Making check in libev
make[3]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/libev'
make[3]: Nothing to be done for `check'.
make[3]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/libev'
Making check in libminilzo
make[3]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/libminilzo'
make  test_mini.t
make[4]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/libminilzo'
  CC       test/mini.o
  CCLD     test_mini.t
make[4]: Leaving directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/libminilzo'
make  check-TESTS
make[4]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/libminilzo'
make[5]: Entering directory `/tmp/herbein1/spack-stage/spack-stage-q0qDK0/flux-core/spack-build/src/common/libminilzo'
PASS: test_mini.t 1 - lzo_int() works
PASS: test_mini.t 2 - compressed 131072 bytes into 593 bytes
PASS: test_mini.t 3 - block contains no incompressible data
PASS: test_mini.t 4 - decompressed 593 bytes back into 131072 bytes
============================================================================
Testsuite summary for flux-core 0.10.0-7-g90f05e9
============================================================================
# TOTAL: 4
# PASS:  4
# SKIP:  0
# XFAIL: 0
# FAIL:  0
# XPASS: 0
# ERROR: 0
============================================================================

...
<snip>
...

PASS: t1003-kvs-stress.t 16 - kvs: test that KVS_NO_MERGE works with kvs_commit()
PASS: t1003-kvs-stress.t 17 - kvs: transaction-merge disabling works
============================================================================
Testsuite summary for flux-core 0.10.0-7-g90f05e9
============================================================================
# TOTAL: 1727
# PASS:  1710
# SKIP:  14
# XFAIL: 3
# FAIL:  0
# XPASS: 0
# ERROR: 0
============================================================================

Side note 2: I see this output in spack-build.out.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Based on that output, I think I know what the problem is. The first concerning thing is that make -q check shouldn't run make check. From the man page:

       -q, --question
            ``Question  mode''.   Do  not run any commands, or print anything;
            just return an exit status that is zero if the  specified  targets
            are already up to date, nonzero otherwise.

This leads me to believe that you aren't using GNU Make. Can you give me the output of:

$ make --version

As for why it isn't being added to spack-build.out, I think that's because it's an internal check, not part of the build phase. The actual call to make check (without the -q) should be in spack-build.out.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

# herbein1 at hype2 in /usr/workspace/wsb/herbein1/spack_toss3/var/spack/stage/flux-sched-master-hmcxsptomvev43ivz26k46gt5wpplpmc/flux-sched on git:master ✖︎ [19:22:05]
→ make --version
GNU Make 3.82
Built for x86_64-redhat-linux-gnu
Copyright (C) 2010  Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
# herbein1 at hype2 in /usr/workspace/wsb/herbein1/spack_toss3/var/spack/stage/flux-sched-master-hmcxsptomvev43ivz26k46gt5wpplpmc/flux-sched on git:master ✖︎ [19:22:08]
→ spack env flux-core@master make --version
GNU Make 3.82
Built for x86_64-redhat-linux-gnu
Copyright (C) 2010  Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Copy link
Copy Markdown
Member Author

@SteVwonder SteVwonder Jul 28, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

# herbein1 at hype2 in /usr/workspace/wsb/herbein1/spack_toss3/var/spack/stage/flux-sched-master-hmcxsptomvev43ivz26k46gt5wpplpmc/flux-sched on git:master ✖︎ [19:22:41]
→ make -q --help
Usage: make [options] [target] ...
Options:
  -b, -m                      Ignored for compatibility.
  -B, --always-make           Unconditionally make all targets.
  -C DIRECTORY, --directory=DIRECTORY
                              Change to DIRECTORY before doing anything.
  -d                          Print lots of debugging information.
  --debug[=FLAGS]             Print various types of debugging information.
  -e, --environment-overrides
                              Environment variables override makefiles.
  --eval=STRING               Evaluate STRING as a makefile statement.
  -f FILE, --file=FILE, --makefile=FILE
                              Read FILE as a makefile.
  -h, --help                  Print this message and exit.
  -i, --ignore-errors         Ignore errors from recipes.
  -I DIRECTORY, --include-dir=DIRECTORY
                              Search DIRECTORY for included makefiles.
  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no arg.
  -k, --keep-going            Keep going when some targets can't be made.
  -l [N], --load-average[=N], --max-load[=N]
                              Don't start multiple jobs unless load is below N.
  -L, --check-symlink-times   Use the latest mtime between symlinks and target.
  -n, --just-print, --dry-run, --recon
                              Don't actually run any recipe; just print them.
  -o FILE, --old-file=FILE, --assume-old=FILE
                              Consider FILE to be very old and don't remake it.
  -p, --print-data-base       Print make's internal database.
  -q, --question              Run no recipe; exit status says if up to date.
  -r, --no-builtin-rules      Disable the built-in implicit rules.
  -R, --no-builtin-variables  Disable the built-in variable settings.
  -s, --silent, --quiet       Don't echo recipes.
  -S, --no-keep-going, --stop
                              Turns off -k.
  -t, --touch                 Touch targets instead of remaking them.
  -v, --version               Print the version number of make and exit.
  -w, --print-directory       Print the current directory.
  --no-print-directory        Turn off -w, even if it was turned on implicitly.
  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE
                              Consider FILE to be infinitely new.
  --warn-undefined-variables  Warn when an undefined variable is referenced.
  --warn-undefined-functions  Warn when an undefined user function is called.
This program built for x86_64-redhat-linux-gnu
Report bugs to <[email protected]>

This make's --help seems to agree with you, but you are right, it doesn't appear to be doing what is says it should be doing. 🤷‍♂️

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For the purposes of this PR, would you like me to keep or remove the check method from the flux-core and flux-sched packages?

Copy link
Copy Markdown
Member

@adamjstewart adamjstewart Jul 28, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Alternatively, we might be able to check the exit status of make -n check.

Copy link
Copy Markdown
Member Author

@SteVwonder SteVwonder Jul 28, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So taking another look at the documentation for -q:

      -q, --question
            ``Question mode''.  Do not run any commands, or print anything; just return an exit status that is zero if the specified targets are already up to date, nonzero otherwise.

It only returns an exit status of zero if the specified target is up to date. This will never be the case with flux-core and flux-sched immediately after running make, because there are test-specific files that are only compiled when make check is called. So I don't think the --question flag is broken, I think it is just asking a different question.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Alternatively, we might be able to check the exit status of make -n check

I agree, -n seems to be the way to go:

# herbein1 at hype2 in ~/Repositories/flux-framework/flux-sched/sched on git:upmaster ✖︎ [20:12:30]
→ make -n check > /dev/null && echo "Success" || echo "Failure"
Success
# herbein1 at hype2 in ~/Repositories/flux-framework/flux-sched/sched on git:upmaster ✖︎ [20:12:37]
→ make -n foobadfansdfionj > /dev/null && echo "Success" || echo "Failure"
make: *** No rule to make target `foobadfansdfionj'.  Stop.
Failure

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think I've got this working now. PR incoming!

variant('cuda', default=False, description='Build dependencies with support for CUDA')

depends_on("boost+graph", when='@0.5.0:')
depends_on("boost+graph", when='@master')
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can combine these using when='@0.5.0:,master'

version('master', branch='master')
version('0.8.0', 'b0fec05acedc530bcdf75b2477ac22f39d2adddc7af8ff76496208a5e1e8185b1b4a18677871d95c3cfbf34b05f391953651200917fe029931f4e2beb79d70df')
version('0.9.0', '70eaec1005aa49e8d8cf397570789cebedfb5d917efe963390d456ee4c473eefb15b0c81ea83f60a1fd057fe7be356bbafdebcae64b499844d194c48f6aefa05')
version('0.10.0', 'a84a1ed53a69c805c253bc940540cbf667a059b2008fd2a6a9bb890a985ead08e88dcbba68c01567f887357306fbfded41b93cc33edfa7809955ba5ba5870284')
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you sort these from newest to oldest?


version('0.4.0', '82732641ac4594ffe9b94ca442a99e92bf5f91bc14745af92203a887a40610dd44edda3ae07f9b6c8d63799b2968d87c8da28f1488edef1310d0d12be9bd6319')
version('0.5.0', 'a9835c9c478aa41123a4e12672500052228aaf1ea770f74cb0901dbf4a049bd7d329e99d8d3484e39cfed1f911705030b2775dcfede39bc8bea59c6afe2549b1')
version('master', branch='master')
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same here.

# https://www.gnu.org/software/autoconf-archive/ax_lua.html
with working_dir(prefix.lib):
# e.g., liblua.so.5.1.5
src_path = 'liblua.{}.{}'.format(dso_suffix,
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

{0}

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤦‍♂️ my bad. thanks for catching that.

Version(str(self.version.up_to(2))).joined]
for version_str in version_formats:
for joiner in ['', '-']:
dest_path = 'liblua{}{}.{}'.format(joiner,
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

{0}

@SteVwonder
Copy link
Copy Markdown
Member Author

@adamjstewart: since the Makefile target has been spun off onto another PR (#8819), are you OK if I remove the overridden check methods in this PR? The running of make check and make checkinstall for this package will be temporarily broken, but once your other PR is merged, it should "just work".

Besides that, is there anything else blocking this PR from being merged?

@adamjstewart
Copy link
Copy Markdown
Member

Yeah, go ahead and remove those overrides.

I just moved to a new aprt and have no internet so I'll check the rest of the PR when I'm not on mobile.

@SteVwonder
Copy link
Copy Markdown
Member Author

@adamjstewart: Thanks, and best of luck with moving!

I pushed the changes, but Travis test that hung and produced no output. Once you are off mobile and on stable internet, could you restart that test? I don't seem to be able to restart the test myself (I guess you have to be a maintainer?).

spack_env.append_path('LUA_PATH', './?.lua', separator=';')

run_env.prepend_path(
'LUA_PATH',
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rather than doing this, would it be possible to just extend('lua') & extend('python')?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Try it, if it works that would be preferable for sure. IIRC it used to be limited to one extension per package.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct, see #987 😢

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok. I subscribed to #987. Once it gets closed, I'll switch flux over to extending both python and lua rather than manually adding the paths.

trws and others added 14 commits August 1, 2018 17:15
- fix infinite symlink link with workaround documented in PR spack#3543
- when installing master from git, checkout entire repo so that
       flux-version works
- override default check method so that `--test=root` works correctly
       with flux
ax_lua.m4 from the autoconf-archive searches for libraries in the following
order (assuming the lua version is 5.1):
 - liblua5.1.so
 - liblu51.so
 - liblua-5.1.so
 - liblua-51.so
 - liblua.so

The old package only installed liblua.so, liblua.so.5, and liblua.so.5.1. So a
system-installed version of lua that follows any of the other naming conventions
would "co-opt" the Spack-installed version.
Flux-core provides lua and python bindings, so update LUA_PATH, LUA_CPATH, and
PYTHONPATH accordingly.  Also sets several Flux-specific environment variables.
 - removed several unnecessary os.path.join + self.spec.prefix combos
 - added types to several dependencies
 - python 2.6 compatible string formatting
 - ordering versions from newest to oldest
 - removed overridden 'check' methods
@scheibelp scheibelp merged commit 3b0983a into spack:develop Aug 2, 2018
@SteVwonder
Copy link
Copy Markdown
Member Author

Thanks @scheibelp and @adamjstewart!

tgamblin added a commit that referenced this pull request Aug 5, 2018
scheibelp pushed a commit that referenced this pull request Aug 20, 2018
#8223 replaced regex-based makefile target parsing with an invocation of
"make -q". #8818 discovered that "make -q" can result in an error for some
packages.

Also, the "make -q" strategy relied on interpreting the error code, which only
worked for GNU Make and not BSD Make (which was deemed acceptable at
the time). As an added bonus, this implementation ignores the exit code and
instead parses STDERR for any indications that the target does not exist; this
works for both GNU Make and BSD Make.

#8223 also updated ninja target detection to use "ninja -t targets". This does
not change that behavior but makes it more-explicit with "ninja -t targets all"

This also adds tests for detection of "make" and "ninja" targets.
anderson2981 pushed a commit to anderson2981/spack that referenced this pull request Sep 7, 2018
spack#8223 replaced regex-based makefile target parsing with an invocation of
"make -q". spack#8818 discovered that "make -q" can result in an error for some
packages.

Also, the "make -q" strategy relied on interpreting the error code, which only
worked for GNU Make and not BSD Make (which was deemed acceptable at
the time). As an added bonus, this implementation ignores the exit code and
instead parses STDERR for any indications that the target does not exist; this
works for both GNU Make and BSD Make.

spack#8223 also updated ninja target detection to use "ninja -t targets". This does
not change that behavior but makes it more-explicit with "ninja -t targets all"

This also adds tests for detection of "make" and "ninja" targets.
@SteVwonder SteVwonder deleted the flux-sched branch November 17, 2018 18:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants