Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

{bio}[GCCcore/6.3.0] structure v2.3.4 #5202

Conversation

cmeesters
Copy link
Contributor

(created using eb --new-pr)

@boegel
Copy link
Member

boegel commented Oct 10, 2017

@cmeesters Thanks for your contribution.

Please take a look at fixing these style issues:

$ eb --check-style --from-pr 5202
== temporary log file in case of crash /tmp/eb-AauVgP/easybuild-Cz5GdO.log

*** WARNING: Using easyconfigs from unstable (pending/failed tests or merge conflict) PR #5202 ***

Running style check on 1 easyconfig(s)...
/tmp/eb-AauVgP/files_pr5202/s/structure/structure-2.3.4.eb:9:121: E501 line too long (533 > 120 characters)
/tmp/eb-AauVgP/files_pr5202/s/structure/structure-2.3.4.eb:14:8: E221 multiple spaces before operator
/tmp/eb-AauVgP/files_pr5202/s/structure/structure-2.3.4.eb:17:30: E203 whitespace before ':'
/tmp/eb-AauVgP/files_pr5202/s/structure/structure-2.3.4.eb:18:30: E203 whitespace before ':'
/tmp/eb-AauVgP/files_pr5202/s/structure/structure-2.3.4.eb:19:1: E265 block comment should start with '# '
/tmp/eb-AauVgP/files_pr5202/s/structure/structure-2.3.4.eb:21:1: E265 block comment should start with '# '
/tmp/eb-AauVgP/files_pr5202/s/structure/structure-2.3.4.eb:26:1: E303 too many blank lines (3)
/tmp/eb-AauVgP/files_pr5202/s/structure/structure-2.3.4.eb:27:42: E202 whitespace before '}'
[FAIL] /tmp/eb-AauVgP/files_pr5202/s/structure/structure-2.3.4.eb
ERROR: One or more style checks FAILED!

# HPC-group University of Mainz (https://hpc.uni-mainz.de)

easyblock = 'MakeCp'
name = 'structure'
Copy link
Member

Choose a reason for hiding this comment

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

please include an empty line above, to match the style of existing easyconfigs

homepage = 'https://web.stanford.edu/group/pritchardlab/structure.html'
description = """The program structure is a free software package for using multi-locus genotype data to investigate population structure. Its uses include infering the presence of distinct populations, assigning individuals to populations, studying hybrid zones, identifying migrants and admixed individuals, and estimating population allele frequencies in situations where many individuals are migrants or admixed. It can be applied to most of the commonly-used genetic markers, including SNPS, microsatellites, RFLPs and AFLPs."""

toolchain = {'name': 'dummy', 'version': 'dummy'}
Copy link
Member

Choose a reason for hiding this comment

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

Any reason to use dummy rather than a 'proper' toolchain?


sanity_check_paths = {'files' : ['structure'],
'dirs' : []}
#buildininstalldir = True
Copy link
Member

Choose a reason for hiding this comment

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

please remove commented out lines

files_to_copy = ['structure']

sanity_check_paths = {'files' : ['structure'],
'dirs' : []}
Copy link
Member

Choose a reason for hiding this comment

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

please reformat to:

sanity_check_paths = {
    'files' : ['structure'],
    'dirs'  : [],
}


source_urls = ['https://web.stanford.edu/group/pritchardlab/structure_software/release_versions/v%(version)s/']
sources = ['structure_kernel_source.tar.gz']
files_to_copy = ['structure']
Copy link
Member

Choose a reason for hiding this comment

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

empty line above please

toolchain = {'name': 'dummy', 'version': 'dummy'}

source_urls = ['https://web.stanford.edu/group/pritchardlab/structure_software/release_versions/v%(version)s/']
sources = ['structure_kernel_source.tar.gz']
Copy link
Member

Choose a reason for hiding this comment

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

If no properly versioned source tarball is available, please let EasyBuild rename it on download, and also include a SHA256 checksum:

sources = [{'download_filename': 'structure_kernel_source.tar.gz', 'filename': SOURCE_TAR_GZ}]
checksums = ['...']

'dirs' : []}
#buildininstalldir = True

#installopts = 'PREFIX=%(installdir)s'
Copy link
Member

Choose a reason for hiding this comment

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

please remove commented out lines

#buildininstalldir = True

#installopts = 'PREFIX=%(installdir)s'
moduleclass = 'bio'
Copy link
Member

Choose a reason for hiding this comment

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

this should be the last line



allow_prepend_abs_path = True
modextrapaths = {'PATH': '%(installdir)s' }
Copy link
Member

Choose a reason for hiding this comment

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

you don't need allow_prepend_abs_path = True here, just use:

modextrapaths = {'PATH': ''}

(the installation prefix is prepended automatically for all entries)

Also, please move this up, above the moduleclass = ... line

@cmeesters
Copy link
Contributor Author

cmeesters commented Oct 10, 2017 via email

It can be applied to most of the commonly-used genetic markers, including SNPS,
microsatellites, RFLPs and AFLPs."""

toolchain = {'name': 'GCC', 'version': '6.3.0'}
Copy link
Member

Choose a reason for hiding this comment

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

This toolchain doesn't exist, you should either use GCCcore/6.3.0 or GCC/6.3.0-2.28 (I strongly recommend the latter, since that toolchain already includes binutils, otherwise you need to list binutils yourself as a build dependency)

It can be applied to most of the commonly-used genetic markers, including SNPS,
microsatellites, RFLPs and AFLPs."""

toolchain = {'name': 'GCCcore', 'version': '6.3.0'}
Copy link
Member

Choose a reason for hiding this comment

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

@cmeesters As I mentioned, if you use GCCcore as toolchain, you need to include binutils as a build dependency.

Also, please remove the other easyconfigs, should work with eb --update-pr 5202 :structure-2.3.4.eb

# use same binutils version that was used when building GCC toolchain
builddependencies = [
('binutils', '2.27', '', True)
]
Copy link
Member

Choose a reason for hiding this comment

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

@cmeesters This should go in the other easyconfig file, where you use GCCcore as toolchain. And this easyconfig file, that uses GCC should be removed.

Or, you should remove the easyconfig file using GCCcore as toolchain, and keep the one that uses GCC but then remove binutils as a build dep there...

@verdurin
Copy link
Member

Build failure for me on CentOS 6:

== 2017-10-27 18:01:13,553 run.py:478 DEBUG cmd " make -j 16 " exited with exitcode 2 and output:
gcc -c structure.c -O3 -Wall -pedantic
gcc -c params.c -O3 -Wall -pedantic
gcc -c datain.c -O3 -Wall -pedantic
gcc -c output.c -O3 -Wall -pedantic
gcc -c ran.c -O3 -Wall -pedantic
gcc -c mymath.c -O3 -Wall -pedantic
params.c: In function 'CommandLineInts':
datain.c: In function 'CountAlleles':
params.c:122:7: warning: variable 'ok' set but not used [-Wunused-but-set-variable]
   int ok = 1;
       ^~
datain.c:798:3: warning: this 'else' clause does not guard... [-Wmisleading-indentation]
   else
   ^~~~
datain.c:801:5: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'else'
     newnotambiguous=newmissing-1;
     ^~~~~~~~~~~~~~~
structure.c: In function 'UpdateLocPriorAdmix':
structure.c:2026:54: warning: variable 'alpharat' set but not used [-Wunused-but-set-variable]
   double currPP, newPP, PPdiff, globalpha, localpha, alpharat;
                                                      ^~~~~~~~
/tmp/eb-OSR3qV/ccPGYAUc.s: Assembler messages:
/tmp/eb-OSR3qV/ccPGYAUc.s:697: Error: expecting string instruction after `rep'
/tmp/eb-OSR3qV/ccPGYAUc.s:758: Error: expecting string instruction after `rep'
make: *** [mymath.o] Error 1
make: *** Waiting for unfinished jobs....
/tmp/eb-OSR3qV/ccH7TBUc.s: Assembler messages:
/tmp/eb-OSR3qV/ccH7TBUc.s:2943: Error: expecting string instruction after `rep'
make: *** [params.o] Error 1
/tmp/eb-OSR3qV/cckg4AUc.s: Assembler messages:
/tmp/eb-OSR3qV/cckg4AUc.s:831: Error: expecting string instruction after `rep'
/tmp/eb-OSR3qV/cckg4AUc.s:998: Error: expecting string instruction after `rep'
/tmp/eb-OSR3qV/cckg4AUc.s:2306: Error: expecting string instruction after `rep'
/tmp/eb-OSR3qV/cckg4AUc.s:2810: Error: expecting string instruction after `rep'
/tmp/eb-OSR3qV/cckg4AUc.s:2961: Error: expecting string instruction after `rep'
make: *** [ran.o] Error 1
/tmp/eb-OSR3qV/ccfNDBUc.s: Assembler messages:
/tmp/eb-OSR3qV/ccfNDBUc.s:764: Error: expecting string instruction after `rep'
make: *** [datain.o] Error 1
/tmp/eb-OSR3qV/cc6LkBUc.s: Assembler messages:
/tmp/eb-OSR3qV/cc6LkBUc.s:836: Error: expecting string instruction after `rep'
/tmp/eb-OSR3qV/cc6LkBUc.s:2487: Error: expecting string instruction after `rep'
/tmp/eb-OSR3qV/cc6LkBUc.s:3842: Error: expecting string instruction after `rep'
/tmp/eb-OSR3qV/cc6LkBUc.s:4498: Error: expecting string instruction after `rep'
/tmp/eb-OSR3qV/cc6LkBUc.s:5511: Error: expecting string instruction after `rep'
/tmp/eb-OSR3qV/cc6LkBUc.s:5581: Error: expecting string instruction after `rep'
/tmp/eb-OSR3qV/cc6LkBUc.s:5638: Error: expecting string instruction after `rep'
/tmp/eb-OSR3qV/cc6LkBUc.s:5640: Error: expecting string instruction after `rep'
make: *** [structure.o] Error 1

@easybuilders easybuilders deleted a comment from boegelbot Oct 27, 2017
@easybuilders easybuilders deleted a comment from boegelbot Oct 27, 2017
@easybuilders easybuilders deleted a comment from boegelbot Oct 27, 2017
@easybuilders easybuilders deleted a comment from boegelbot Oct 27, 2017
@easybuilders easybuilders deleted a comment from boegelbot Oct 27, 2017
@cmeesters
Copy link
Contributor Author

Sorry for the long lag and happy new year for everyone reading along.

I tried this under SL6 (which should fairly well resemble a Centos6-setting) and did not get it work, as the glibc is outdated. D'oh!
And yes, this first example of mine, picked a software, which is not well written & maintained (alas, this can be said for a substantial fraction of all scientific software). However, gcc 6.3.0 does not report assembly/link-errors for me (Centos7.3 && debian 9.3). The underlying reason for this assembly messages is hence not evident for me.

What is to conclude? Either it ought to work on every system - in this case I should withdraw this pull request. Or is works sufficiently well on recent systems. I will not invest more time in this config (rather in others), but would appreciate a brief comment.

Best,
Christian

@boegel
Copy link
Member

boegel commented Jan 5, 2018

@cmeesters The problems are probably caused because of a missing build dependency on binutils in the GCCcore easyconfig.

When using GCCcore as a toolchain, you must also include the binutils version that was used when building that GCCcore as a build dependency.

We now have a check for this, see #5436, but this was not in place yet when you opened this pull request.

I'll close and re-open this PR to make Travis re-test it, which should make the tests fail.

If you fix that issue, the build should work everywhere, indeed.

Another way to fix this would be to only retain structure-2.3.4-GCC-6.3.0-2.27.eb, and remove structure-2.3.4-GCCcore-6.3.0.eb, it really only makes sense to have one of those (and the latter makes more sense, since that allows you to use it as dependency for something else that is installed with an intel toolchain, see also the discussion in #5579).

@migueldiascosta
Copy link
Member

@ccmeesters ping? this seems to be almost ready, only missing either of @boegel's suggestions above

@boegel boegel added the new label Feb 11, 2019
@boegel boegel added this to the 3.x milestone Feb 11, 2019
@boegel boegel changed the title {bio}[dummy/dummy] structure v2.3.4 {bio}[GCCcore/6.3.0] structure v2.3.4 Feb 11, 2019
@migueldiascosta
Copy link
Member

@cmeesters, this PR is being closed for the following reason(s): no activity for > 6 months.
Please don't hesitate to reopen this PR or add a comment if you feel this contribution is still relevant.
For more information on our policy w.r.t. closing PRs, see https://easybuild.readthedocs.io/en/latest/Contributing.html#why-a-pull-request-may-be-closed-by-a-maintainer

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