Skip to content
This repository was archived by the owner on Mar 30, 2021. It is now read-only.

DAOS-1864 build: Components added: mchecksum and isa-l_crypt - #26

Merged
jolivier23 merged 4 commits into
masterfrom
ryon-jensen/DAOS-1864
Aug 6, 2019
Merged

DAOS-1864 build: Components added: mchecksum and isa-l_crypt#26
jolivier23 merged 4 commits into
masterfrom
ryon-jensen/DAOS-1864

Conversation

@ryon-jensen

Copy link
Copy Markdown
Contributor

Added isa-l_crypt component and changed mchecksum component to
always be available.

Signed-off-by: Ryon Jensen ryon.jensen@intel.com

Added isa-l_crypt component and changed mchecksum component to
always be available.

Signed-off-by: Ryon Jensen <ryon.jensen@intel.com>

@daosbuild1 daosbuild1 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Comment thread components/__init__.py Outdated
Comment thread components/__init__.py Outdated
@daosbuild1

Copy link
Copy Markdown
Collaborator

Comment thread components/__init__.py Outdated
'./configure --prefix=$ISAL_CRYPTO_PREFIX '
'--libdir=$ISAL_CRYPTO_PREFIX/lib',
'make $JOBS_OPT', 'make install'],
required_progs=['nasm', 'yasm'],

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.

While nasm and yasm have overlaps in their abilities, depending on the product they can build it differently.
We should determine specifically which one is required.

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.

The actual requirements is that isa-l looks for nasm >= 2.13 and if nasm fails that test it uses yasm.

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.

This would be similar to what we do with stdatomic.h for openpa....just adding a configure check though a little more complex since it needs a version as well. Probably similar to what we do with go version

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Ya, I just copied most of isal's definition for isal_crypto. I'll update both to specify the actual requirements better.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I haven't figured out how to conditionally specify which asm to use based on if yasm or nasm is installed and which versions, but then I started to wonder if the DAOS build should maintain that information or if it should just rely on the isal build to fail if dependencies aren't met?

With required_progs removed and nasm/yasm removed from system isal has a nice error message:

checking for yasm... no
no yasm
checking for nasm... no
no nasm
configure: error: No modern yasm or nasm found as required. Yasm should be 1.2.0 or later, and nasm should be v2.11.01 or later (v2.13 for AVX512).
BuildFailure: isal failed to build:
File "/home/rjensen1/workspace/daos/scons_local/SConstruct", line 53:
scons()
File "/home/rjensen1/workspace/daos/scons_local/SConstruct", line 41:
reqs.require(env, *env.get("REQUIRES"))
File "/home/rjensen1/workspace/daos/scons_local/prereq_tools/base.py", line 1141:
raise error

Better than what DAOS currently provides:

Checking whether nasm program exists...no
MissingSystemLibs: isal has unmet dependancies required for build:
File "/home/rjensen1/workspace/daos/scons_local/SConstruct", line 53:
scons()
File "/home/rjensen1/workspace/daos/scons_local/SConstruct", line 41:
reqs.require(env, *env.get("REQUIRES"))
File "/home/rjensen1/workspace/daos/scons_local/prereq_tools/base.py", line 1141:
raise error

Thoughts?

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.

yeah you'd probably have to write a custom configure function. For now, relying on the underlying configure to tell you is fine IMO

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.

we could probably fix that error message to at least provide the name of the dependency that is missing :-)

Comment thread components/__init__.py Outdated
'make $JOBS_OPT', 'make install'],
libs=['mchecksum'],
out_of_src_build=True)
url = "https://github.com/mercury-hpc/mchecksum.git"

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.

We don't currently use mchecksum on x86_64. Is something changing?

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.

I thought we had removed mchecksum. Do we need it? Doesn't isal do the same things?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I don't think we actually need it, but I was including the component definition here so it was available for a tool I created that benchmarks the different libraries and checksums. I didn't think it would hurt anything having the component defined here if it isn't included in the required prereqs in the Sconscript for the daos libraries. But I can easily remove it if it makes things too convoluted.

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.

If it's only used by your tool, you can add a define in your SConstruct (see daos SConstruct line 47-48 which define cmocka and readline). But there is probably no harm in having it here either.

Comment thread components/__init__.py Outdated
'make $JOBS_OPT', 'make install'],
libs=['mchecksum'],
out_of_src_build=True)
url = "https://github.com/mercury-hpc/mchecksum.git"

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.

I thought we had removed mchecksum. Do we need it? Doesn't isal do the same things?

Comment thread components/__init__.py Outdated
Comment thread components/__init__.py Outdated
'./configure --prefix=$ISAL_CRYPTO_PREFIX '
'--libdir=$ISAL_CRYPTO_PREFIX/lib',
'make $JOBS_OPT', 'make install'],
required_progs=['nasm', 'yasm'],

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.

This would be similar to what we do with stdatomic.h for openpa....just adding a configure check though a little more complex since it needs a version as well. Probably similar to what we do with go version

Comment thread components/__init__.py Outdated
@daosbuild1
daosbuild1 dismissed their stale review July 25, 2019 20:41

Updated patch

@ryon-jensen
ryon-jensen requested a review from jolivier23 July 26, 2019 14:09
Comment thread components/__init__.py
'make install'], libs=['opa'],
package='openpa-devel' if inst(reqs, 'openpa') else None)

if ARM_PLATFORM:

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.

is this no longer needed @vvenkates27 ?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I'm including mchecksum on the DAOS side for a checksum timing util. I didn't think it was needed elsewhere, but I guess I'm not 100% sure. @vvenkates27 ??

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.

mchecksum is not needed for ARM anymore as ISA-L started supporting ARM. I actually had a patch locally to remove the requirement for using mchecksum in the checksum library for ARM . So I think we can ignore my patch #22, as this patch seems to do the same as well.

@jolivier23
jolivier23 requested a review from vvenkates27 July 29, 2019 20:34
@vvenkates27

vvenkates27 commented Aug 1, 2019

Copy link
Copy Markdown
Contributor

I think this is overlapping with #22
I am not sure why we cannot merge that, Can some one help me get that pull request merged.. there is no reason why any of the builds should fail

@vvenkates27

Copy link
Copy Markdown
Contributor

I think this is overlapping with #22
I am not sure why we cannot merge that, Can some one help me get that pull request merged.. there is no reason why any of the builds should fail

I think we can ignore my patch as this is doing the same.

@vvenkates27 vvenkates27 left a comment

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.

I am ok with these changes, I think we need to merge another patch in DAOS I had to remove dependency of mchecksum in ARM for daos checksum library.

@ryon-jensen
ryon-jensen requested a review from a team August 5, 2019 14:27
@jolivier23
jolivier23 merged commit 56dfe0e into master Aug 6, 2019
@jolivier23
jolivier23 deleted the ryon-jensen/DAOS-1864 branch August 6, 2019 23:14
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants