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

Pyqstem #8656

Merged
merged 9 commits into from
Jul 6, 2019
Merged

Pyqstem #8656

merged 9 commits into from
Jul 6, 2019

Conversation

schiotz
Copy link
Contributor

@schiotz schiotz commented Jun 27, 2019

Note: This is my very first recipe, and the code uses C/C++. I may very well have done something wrong, any feedback is very welcome.

Checklist

  • License file is packaged (see here for an example)
  • Source is from official source
  • Package does not vend other packages
  • Build number is 0
  • GitHub users listed in the maintainer section have posted a comment confirming they are willing to be listed there

@conda-forge-linter
Copy link

Hi! This is the friendly automated conda-forge-linting service.

I just wanted to let you know that I linted all conda-recipes in your PR (recipes/pyqstem) and found it was in an excellent condition.

- fftw
- numpy
- python
- setuptools
Copy link
Member

Choose a reason for hiding this comment

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

numpy, python, fftw, and setuptools should be in host, not build

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Thanks, I will try that - hopefully it will make it build correctly :-)

- fftw
- numpy
- python
- pip
Copy link
Member

Choose a reason for hiding this comment

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

YOu can also move cython to host if that helps

@conda-forge-linter
Copy link

Hi! This is the friendly automated conda-forge-linting service.

I wanted to let you know that I linted all conda-recipes in your PR (recipes/pyqstem) and found some lint.

Here's what I've got...

For recipes/pyqstem:

  • The source section contained an unexpected subsection name. patch is not a valid subsection name.

@conda-forge-linter
Copy link

Hi! This is the friendly automated conda-forge-linting service.

I just wanted to let you know that I linted all conda-recipes in your PR (recipes/pyqstem) and found it was in an excellent condition.

@schiotz
Copy link
Contributor Author

schiotz commented Jun 28, 2019

Mayday!

I have a problem building this package. On some architectures (Windows), it fails to use the FFTW package apparently due to some problem with a prerequisite (MPI of some kind). The package does not use mpi itself. Anybody knows how to solve this? @scopatz ?

 Build:
source activate  C:\Miniconda\conda-bld\_build_env 


Traceback (most recent call last):
  File "C:\Miniconda\lib\site-packages\conda_build\environ.py", line 757, in get_install_actions
    actions = install_actions(prefix, index, specs, force=True)
  File "C:\Miniconda\lib\site-packages\conda\common\io.py", line 88, in decorated
    return f(*args, **kwds)
  File "C:\Miniconda\lib\site-packages\conda\plan.py", line 474, in install_actions
    txn = solver.solve_for_transaction(prune=prune, ignore_pinned=not pinned)
  File "C:\Miniconda\lib\site-packages\conda\core\solve.py", line 112, in solve_for_transaction
    force_remove, force_reinstall)
  File "C:\Miniconda\lib\site-packages\conda\core\solve.py", line 150, in solve_for_diff
    force_remove)
  File "C:\Miniconda\lib\site-packages\conda\core\solve.py", line 245, in solve_final_state
    ssc = self._add_specs(ssc)
  File "C:\Miniconda\lib\site-packages\conda\core\solve.py", line 477, in _add_specs
    explicit_pool = self._get_package_pool(ssc, self.specs_to_add)
  File "C:\Miniconda\lib\site-packages\conda\core\solve.py", line 396, in _get_package_pool
    pool = ssc.r.get_reduced_index(specs)
  File "C:\Miniconda\lib\site-packages\conda\common\io.py", line 88, in decorated
    return f(*args, **kwds)
  File "C:\Miniconda\lib\site-packages\conda\resolve.py", line 485, in get_reduced_index
    explicit_specs, features = self.verify_specs(explicit_specs)
  File "C:\Miniconda\lib\site-packages\conda\resolve.py", line 290, in verify_specs
    raise ResolvePackageNotFound(bad_deps)
conda.exceptions.ResolvePackageNotFound: 
  - fftw=[build=mpi_mpich_*]

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File ".ci_support\build_all.py", line 131, in <module>
    build_all(args.recipes_dir, args.arch)
  File ".ci_support\build_all.py", line 68, in build_all
    build_folders(recipes_dir, new_comp_folders, arch, channel_urls)
  File ".ci_support\build_all.py", line 121, in build_folders
    conda_build.api.build([recipe], config=get_config(arch, channel_urls))
  File "C:\Miniconda\lib\site-packages\conda_build\api.py", line 209, in build
    notest=notest, need_source_download=need_source_download, variants=variants)
  File "C:\Miniconda\lib\site-packages\conda_build\build.py", line 2313, in build_tree
    notest=notest,
  File "C:\Miniconda\lib\site-packages\conda_build\build.py", line 1377, in build
    create_build_envs(top_level_pkg, notest)
  File "C:\Miniconda\lib\site-packages\conda_build\build.py", line 1279, in create_build_envs
    raise e
  File "C:\Miniconda\lib\site-packages\conda_build\build.py", line 1269, in create_build_envs
    channel_urls=tuple(m.config.channel_urls))
  File "C:\Miniconda\lib\site-packages\conda_build\environ.py", line 759, in get_install_actions
    raise DependencyNeedsBuildingError(exc, subdir=subdir)
conda_build.exceptions.DependencyNeedsBuildingError: Unsatisfiable dependencies for platform win-64: {'fftw=[build=mpi_mpich_*]'}
##[error]Cmd.exe exited with code '1'.
##[section]Finishing: Build recipe (maybe vs2008)

@scopatz
Copy link
Member

scopatz commented Jun 28, 2019

I am not sure about this one. Cc @conda-forge/staged-recipes @conda-forge/fftw @conda-forge/mpi @conda-forge/mpich

@grlee77
Copy link
Member

grlee77 commented Jun 28, 2019

A maintainer of gmt-feedstock (@leouieda) also recently reported this same problem (their recipe is trying to pull in an MPI-based FFTW variant on Windows when MPI was not requested). (see conda-forge/fftw-feedstock#53)

ping @beckermr: As the contributor of the MPI builds to FFTW, do you have any idea what could be going wrong here?

@beckermr
Copy link
Member

beckermr commented Jun 28, 2019

I have explicitly checked the FFTW windows package in question and it has no MPI requirement. Thus the MPI dependence must be coming from some other place. I don't see it in our global pinning files. Maybe conda build added an internal default? Maybe the solver has a new bug? TBH I am not sure.

@beckermr
Copy link
Member

beckermr commented Jun 28, 2019

Looking at the linux build is giving us a hint here.

Here is the test env

    ase:              3.17.0-py_1                   conda-forge
    ca-certificates:  2019.6.16-hecc5488_0          conda-forge
    certifi:          2019.6.16-py36_0              conda-forge
    click:            7.0-py_0                      conda-forge
    cloudpickle:      1.2.1-py_0                    conda-forge
    cycler:           0.10.0-py_1                   conda-forge
    cytoolz:          0.9.0.1-py36h14c3975_1001     conda-forge
    dask-core:        2.0.0-py_0                    conda-forge
    dbus:             1.13.6-he372182_0             conda-forge
    decorator:        4.4.0-py_0                    conda-forge
    expat:            2.2.5-he1b5a44_1003           conda-forge
    fftw:             3.3.8-mpi_mpich_h3f9e1be_1006 conda-forge
    flask:            1.0.3-py_0                    conda-forge
    fontconfig:       2.13.1-he4413a7_1000          conda-forge
    freetype:         2.10.0-he983fc9_0             conda-forge
    gettext:          0.19.8.1-hc5be6a0_1002        conda-forge
    glib:             2.58.3-h6f030ca_1001          conda-forge
    gst-plugins-base: 1.14.5-h0935bb2_0             conda-forge
    gstreamer:        1.14.5-h36ae1b5_0             conda-forge
    icu:              58.2-hf484d3e_1000            conda-forge
    imageio:          2.5.0-py36_0                  conda-forge
    itsdangerous:     1.1.0-py_0                    conda-forge
    jinja2:           2.10.1-py_0                   conda-forge
    jpeg:             9c-h14c3975_1001              conda-forge
    kiwisolver:       1.1.0-py36hc9558a2_0          conda-forge
    libblas:          3.8.0-7_openblas              conda-forge
    libcblas:         3.8.0-7_openblas              conda-forge
    libffi:           3.2.1-he1b5a44_1006           conda-forge
    libgcc-ng:        9.1.0-hdf63c60_0              defaults   
    libgfortran-ng:   7.3.0-hdf63c60_0              defaults   
    libiconv:         1.15-h516909a_1005            conda-forge
    liblapack:        3.8.0-7_openblas              conda-forge
    libpng:           1.6.37-hed695b0_0             conda-forge
    libstdcxx-ng:     9.1.0-hdf63c60_0              defaults   
    libtiff:          4.0.10-h57b8799_1003          conda-forge
    libuuid:          2.32.1-h14c3975_1000          conda-forge
    libxcb:           1.13-h14c3975_1002            conda-forge
    libxml2:          2.9.9-h13577e0_0              conda-forge
    lz4-c:            1.8.3-he1b5a44_1001           conda-forge
    markupsafe:       1.1.1-py36h14c3975_0          conda-forge
    matplotlib:       3.1.0-py36_1                  conda-forge
    matplotlib-base:  3.1.0-py36hfd891ef_1          conda-forge
    mpi:              1.0-mpich                     conda-forge
    mpich:            3.2.1-hc99cbb1_1012           conda-forge
    ncurses:          6.1-hf484d3e_1002             conda-forge
    networkx:         2.3-py_0                      conda-forge
    numpy:            1.16.4-py36h95a1406_0         conda-forge
    olefile:          0.46-py_0                     conda-forge
    openblas:         0.3.5-h9ac9557_1001           conda-forge
    openssl:          1.1.1b-h14c3975_1             conda-forge
    pcre:             8.41-hf484d3e_1003            conda-forge
    pillow:           6.0.0-py36he7afcd5_0          conda-forge
    pthread-stubs:    0.4-h14c3975_1001             conda-forge
    pyparsing:        2.4.0-py_0                    conda-forge
    pyqstem:          1.0.2-py36hc8e3772_0          local      
    pyqt:             5.9.2-py36hcca6a23_0          conda-forge
    python:           3.6.7-h381d211_1004           conda-forge
    python-dateutil:  2.8.0-py_0                    conda-forge
    pywavelets:       1.0.3-py36hd352d35_1          conda-forge
    qt:               5.9.7-h52cfd70_2              conda-forge
    readline:         7.0-hf8c457e_1001             conda-forge
    scikit-image:     0.15.0-py36hb3f55d8_2         conda-forge
    scipy:            1.3.0-py36h921218d_0          conda-forge
    setuptools:       41.0.1-py36_0                 conda-forge
    sip:              4.19.8-py36hf484d3e_1000      conda-forge
    six:              1.12.0-py36_1000              conda-forge
    sqlite:           3.28.0-h8b20d00_0             conda-forge
    tk:               8.6.9-hed695b0_1002           conda-forge
    toolz:            0.9.0-py_1                    conda-forge
    tornado:          6.0.3-py36h516909a_0          conda-forge
    werkzeug:         0.15.4-py_0                   conda-forge
    xorg-libxau:      1.0.9-h14c3975_0              conda-forge
    xorg-libxdmcp:    1.1.3-h516909a_0              conda-forge
    xz:               5.2.4-h14c3975_1001           conda-forge
    zlib:             1.2.11-h14c3975_1004          conda-forge
    zstd:             1.4.0-h3b9ef0a_0              conda-forge

Notice it has MPI. Thus some runtime dependence of the package is generating an MPI depence in some way. I suggest the recipe authors look through the various dependencies, dependencies of dependencies etc to figure out which one it is.

If the dependence is forcing MPI when it should not be, we may need to add the MPI selector stuff used elsewhere in conda-forge to that dependence.

@leouieda
Copy link
Member

@beckermr @scopatz @schiotz I was just about to post to gitter asking about this. This change must be recent because this problem didn't happen last week. That might help narrow down the list. We probably share the dependency between this recipe and https://github.com/conda-forge/gmt-feedstock

@leouieda
Copy link
Member

leouieda commented Jun 28, 2019

I just created an environment with the packages above and ran the following on Jupyter for all packages listed by conda list to get the dependency info for each of them:

!echo "" > info
for pkg, version, build in dependencies:
    !conda search $pkg=$version=$build --info >> info.txt

Grepping for mpi in info.txt shows that no package in the environment has a dependency on mpi. So I'm wondering if this is a new conda thing that is giving preference to the mpi builds of fftw.

@beckermr
Copy link
Member

Looks like it is something either in the solver or the metadata for windows then. Glad we are narrowing things down!

@leouieda
Copy link
Member

@beckermr it might be something different in the solver. Conda just released 4.7 this week but the fftw build from 2 months ago was causing trouble.

@msarahan
Copy link
Member

It is probably related to conda/conda#8844 (comment)

@schiotz
Copy link
Contributor Author

schiotz commented Jun 29, 2019

Thanks everyone for getting involved in this - what a great community!

It looks like I just have to wait for the dust to settle after the last upgrade, then eventually this will just work. :-)

@scopatz
Copy link
Member

scopatz commented Jul 1, 2019

Still broken 😦

@beckermr
Copy link
Member

beckermr commented Jul 1, 2019

This latest build still ran with conda 4.7.5. I think we need to wait until 4.7.6 maybe.

@msarahan
Copy link
Member

msarahan commented Jul 1, 2019

I don't think new conda is going to fix anything for you. We're not bringing the free channel back. First, you need to isolate whether using the free channel fixes things for you:

CONDA_RESTORE_FREE_CHANNEL=1 conda build recipe

If so, you next need to identify the package(s) from free that you are depending on. Finally, you need to work with the package maintainers for those packages to rebuild them so that they don't depend on the free channel.

The only thing that new conda might help is better hints that make it easier to figure out what needs to be rebuilt.

@beckermr
Copy link
Member

beckermr commented Jul 1, 2019

OTOH all of the packages in the env were checked for mpi above and none had a dependence. What is the mechanism by which the free channel fixes things?

@msarahan
Copy link
Member

msarahan commented Jul 1, 2019

The dependence on mpi is a red herring. When the solver can't achieve what you want, it goes and finds solutions that may seem really strange. Unsatisfiability should be your first suspect in these situations. Try it with the free channel re-enabled. If it works, that's definitely the culprit, and the hard part is then figuring out which packages from free are necessary. If you add https://repo.anaconda.com/pkgs/free to channel list, the --show-channel-urls argument to conda may be helpful.

@beckermr
Copy link
Member

beckermr commented Jul 2, 2019

Alright. The developers of the recipe should try the suggestions above and report back.

@schiotz
Copy link
Contributor Author

schiotz commented Jul 2, 2019

@beckermr @msarahan
Thanks for your input. This is my very first attempt to use Anaconda to build anything (and I have very little experience with Anaconda altogether), so debugging the build system is a bit daunting. But I shall do my best. I will need a bit of help, though.

I assume I need to set three channels: default, free and conda-forge with the latter having highest priority. Should I set strict channel priority?

I am currently reinstalling VS 2015 on the Windows server where I can play around with this. I cannot test it on my Mac, where things are just working.

@schiotz
Copy link
Contributor Author

schiotz commented Jul 2, 2019

@beckermr @msarahan
Hi again. I have tried to build the package on a Windows machine here. I honestly do not feel that I know what I am doing. I added the free channel, but it still did not resolve; neither with strict channel priority nor without, but it got significantly further without. Here is the output:

(base) C:\Users\jasc\Documents\src\staged-recipes\recipes>
(base) C:\Users\jasc\Documents\src\staged-recipes\recipes>conda --show-channel-urls build pyqstem
Glob C:\Users\jasc\Documents\src\staged-recipes\recipes\build did not match in root_dir C:\Users\jasc\Documents\src\staged-recipes\recipes
ERROR:conda_build.utils:Glob C:\Users\jasc\Documents\src\staged-recipes\recipes\build did not match in root_dir C:\Users\jasc\Documents\src\staged-recipes\recipes
No numpy version specified in conda_build_config.yaml.  Falling back to default numpy value of 1.11
WARNING:conda_build.metadata:No numpy version specified in conda_build_config.yaml.  Falling back to default numpy value of 1.11
Adding in variants from internal_defaults
INFO:conda_build.variants:Adding in variants from internal_defaults
Attempting to finalize metadata for pyqstem
INFO:conda_build.metadata:Attempting to finalize metadata for pyqstem
Collecting package metadata (repodata.json): ...working... done
Solving environment: ...working... done
Collecting package metadata (repodata.json): ...working... done
Solving environment: ...working... done
Collecting package metadata (repodata.json): ...working... done
Solving environment: ...working... done
BUILD START: ['pyqstem-1.0.3-py37h6b74c2c_0.tar.bz2']
Collecting package metadata (repodata.json): ...working... done
Solving environment: ...working... done

## Package Plan ##

  environment location: C:\Users\jasc\AppData\Local\Continuum\anaconda3\conda-bld\pyqstem_1562067217416\_h_env


The following NEW packages will be INSTALLED:

    ca-certificates: 2019.6.16-hecc5488_0      conda-forge
    certifi:         2019.6.16-py37_0          conda-forge
    cython:          0.29.11-py37h6538335_0    conda-forge
    fftw:            3.3.8-nompi_hbc43ac9_1106 conda-forge
    intel-openmp:    2019.4-245
    libblas:         3.8.0-8_mkl               conda-forge
    libcblas:        3.8.0-8_mkl               conda-forge
    liblapack:       3.8.0-8_mkl               conda-forge
    mkl:             2019.4-245
    numpy:           1.11.3-py37h873a0b8_1207  conda-forge
    openssl:         1.1.1b-hfa6e2cd_2         conda-forge
    pip:             19.1.1-py37_0             conda-forge
    python:          3.7.3-h510b542_1          conda-forge
    setuptools:      41.0.1-py37_0             conda-forge
    sqlite:          3.28.0-hfa6e2cd_1         conda-forge
    vc:              14-0                      https://repo.anaconda.com/pkgs/free
    vs2015_runtime:  14.0.25420-0              https://repo.anaconda.com/pkgs/free
    wheel:           0.33.4-py37_0             conda-forge
    wincertstore:    0.2-py37_1002             conda-forge

Preparing transaction: ...working... done
Verifying transaction: ...working... done
Executing transaction: ...working... done
Collecting package metadata (repodata.json): ...working... done
Solving environment: ...working... done
Collecting package metadata (repodata.json): ...working... done
Solving environment: ...working... failed

Leaving build/test directories:
  Work:
 C:\Users\jasc\AppData\Local\Continuum\anaconda3\conda-bld\work
  Test:
 C:\Users\jasc\AppData\Local\Continuum\anaconda3\conda-bld\test_tmp
Leaving build/test environments:
  Test:
source activate  C:\Users\jasc\AppData\Local\Continuum\anaconda3\conda-bld\_test_env
  Build:
source activate  C:\Users\jasc\AppData\Local\Continuum\anaconda3\conda-bld\_build_env

Traceback (most recent call last):
  File "C:\Users\jasc\AppData\Local\Continuum\anaconda3\lib\site-packages\conda_build\environ.py", line 757, in get_install_actions
    actions = install_actions(prefix, index, specs, force=True)
  File "C:\Users\jasc\AppData\Local\Continuum\anaconda3\lib\site-packages\conda\common\io.py", line 88, in decorated
    return f(*args, **kwds)
  File "C:\Users\jasc\AppData\Local\Continuum\anaconda3\lib\site-packages\conda\plan.py", line 474, in install_actions
    txn = solver.solve_for_transaction(prune=prune, ignore_pinned=not pinned)
  File "C:\Users\jasc\AppData\Local\Continuum\anaconda3\lib\site-packages\conda\core\solve.py", line 112, in solve_for_transaction
    force_remove, force_reinstall)
  File "C:\Users\jasc\AppData\Local\Continuum\anaconda3\lib\site-packages\conda\core\solve.py", line 150, in solve_for_diff
    force_remove)
  File "C:\Users\jasc\AppData\Local\Continuum\anaconda3\lib\site-packages\conda\core\solve.py", line 245, in solve_final_state
    ssc = self._add_specs(ssc)
  File "C:\Users\jasc\AppData\Local\Continuum\anaconda3\lib\site-packages\conda\core\solve.py", line 477, in _add_specs
    explicit_pool = self._get_package_pool(ssc, self.specs_to_add)
  File "C:\Users\jasc\AppData\Local\Continuum\anaconda3\lib\site-packages\conda\core\solve.py", line 396, in _get_package_pool
    pool = ssc.r.get_reduced_index(specs)
  File "C:\Users\jasc\AppData\Local\Continuum\anaconda3\lib\site-packages\conda\common\io.py", line 88, in decorated
    return f(*args, **kwds)
  File "C:\Users\jasc\AppData\Local\Continuum\anaconda3\lib\site-packages\conda\resolve.py", line 485, in get_reduced_index
    explicit_specs, features = self.verify_specs(explicit_specs)
  File "C:\Users\jasc\AppData\Local\Continuum\anaconda3\lib\site-packages\conda\resolve.py", line 290, in verify_specs
    raise ResolvePackageNotFound(bad_deps)
conda.exceptions.ResolvePackageNotFound:
  - fftw=[build=mpi_openmpi_*]

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\jasc\AppData\Local\Continuum\anaconda3\Scripts\conda-build-script.py", line 10, in <module>
    sys.exit(main())
  File "C:\Users\jasc\AppData\Local\Continuum\anaconda3\lib\site-packages\conda_build\cli\main_build.py", line 445, in main
    execute(sys.argv[1:])
  File "C:\Users\jasc\AppData\Local\Continuum\anaconda3\lib\site-packages\conda_build\cli\main_build.py", line 436, in execute
    verify=args.verify, variants=args.variants)
  File "C:\Users\jasc\AppData\Local\Continuum\anaconda3\lib\site-packages\conda_build\api.py", line 209, in build
    notest=notest, need_source_download=need_source_download, variants=variants)
  File "C:\Users\jasc\AppData\Local\Continuum\anaconda3\lib\site-packages\conda_build\build.py", line 2313, in build_tree
    notest=notest,
  File "C:\Users\jasc\AppData\Local\Continuum\anaconda3\lib\site-packages\conda_build\build.py", line 1377, in build
    create_build_envs(top_level_pkg, notest)
  File "C:\Users\jasc\AppData\Local\Continuum\anaconda3\lib\site-packages\conda_build\build.py", line 1279, in create_build_envs
    raise e
  File "C:\Users\jasc\AppData\Local\Continuum\anaconda3\lib\site-packages\conda_build\build.py", line 1269, in create_build_envs
    channel_urls=tuple(m.config.channel_urls))
  File "C:\Users\jasc\AppData\Local\Continuum\anaconda3\lib\site-packages\conda_build\environ.py", line 759, in get_install_actions
    raise DependencyNeedsBuildingError(exc, subdir=subdir)
conda_build.exceptions.DependencyNeedsBuildingError: Unsatisfiable dependencies for platform win-64: {'fftw=[build=mpi_openmpi_*]'}

(base) C:\Users\jasc\Documents\src\staged-recipes\recipes>
(base) C:\Users\jasc\Documents\src\staged-recipes\recipes>conda config --get channels
--add channels 'defaults'   # lowest priority
--add channels 'https://repo.anaconda.com/pkgs/free'
--add channels 'conda-forge'   # highest priority

@beckermr
Copy link
Member

beckermr commented Jul 2, 2019

Wow. I’m baffled. Maybe we should debug the Linux build first. It also depends on MPI for some reason at runtime.

@beckermr
Copy link
Member

beckermr commented Jul 2, 2019

Linux support is generally better throughout the ecosystem so it might be easier for everyone to contribute to that.

@ericpre
Copy link
Member

ericpre commented Jul 2, 2019

Would it make sense to split this recipe into two: "pyqstem" and "qstem" in order to be able to pull the qstem source from its source (https://github.com/QSTEM/QSTEM)?

@minrk
Copy link
Member

minrk commented Jul 2, 2019

The fftw mpi build is due to a bug in conda-build >= 3.18.4.

@beckermr
Copy link
Member

beckermr commented Jul 2, 2019

Thanks @minrk!

@schiotz
Copy link
Contributor Author

schiotz commented Jul 2, 2019

Would it make sense to split this recipe into two: "pyqstem" and "qstem" in order to be able to pull the qstem source from its source (https://github.com/QSTEM/QSTEM)?

I don't think so, it would just complicate matters. The pyqstem developer (@jacobjma) decided to bundle the relevant parts of the QSTEM source code with pyqstem, and I do not think we should change that without a good reason.

@schiotz
Copy link
Contributor Author

schiotz commented Jul 2, 2019

Wow. I’m baffled. Maybe we should debug the Linux build first. It also depends on MPI for some reason at runtime.

Linux would be an order of magnitude easier for me, since I would actually know what I was doing :-)
But the Linux versions build without problems. If there is a problem anyway, I do not know how to diagnose it or what to look for. I am willing to contribute to this, but I am afraid I am totally unqualified when it comes to debugging the conda build system.

@grlee77
Copy link
Member

grlee77 commented Jul 2, 2019

But the Linux versions build without problems. If there is a problem anyway, I do not know how to diagnose it or what to look for.

@schlotz: I think the issue on linux that @beckermr is referring to is the following:

If you look at the linux azure log

At build time we see a nompi FFTW as expected for a recipe not requesting MPI.

The following NEW packages will be INSTALLED:

    ca-certificates: 2019.6.16-hecc5488_0      conda-forge
    certifi:         2019.6.16-py36_0          conda-forge
    cython:          0.29.11-py36he1b5a44_0    conda-forge
    fftw:            3.3.8-nompi_h7f3a6c3_1106 conda-forge

but then later in the log at run time (the testing phase) we see MPI getting pulled in when it should not be:

    fftw:             3.3.8-mpi_openmpi_h6dd7431_1006 conda-forge
    mpi:              1.0-openmpi                     conda-forge

This doesn't fail like on Windows because MPI-based packages exist on linux, but this should not be happening.

Going back to an older conda-build (<3.18.4) may resolve the issue, but I don't think anyone has verified that yet.

@schiotz
Copy link
Contributor Author

schiotz commented Jul 3, 2019

@grlee77 Thank you for your clear explanation. It looks like the only thing I can do is to wait until the wizards are done :-)

Edit: grammar

@ericpre
Copy link
Member

ericpre commented Jul 3, 2019

Would it make sense to split this recipe into two: "pyqstem" and "qstem" in order to be able to pull the qstem source from its source (https://github.com/QSTEM/QSTEM)?

I don't think so, it would just complicate matters. The pyqstem developer (@jacobjma) decided to bundle the relevant parts of the QSTEM source code with pyqstem, and I do not think we should change that without a good reason.

One concern here is that pyqstem is python wrapper for QSTEM and is vendoring QSTEM, which means that QSTEM does not come from the official source. One none negligible issue is that it is not clear what version of QSTEM is included in pyqstem.
Looking at the history of pyqstem and the released version of QSTEM on https://www.physics.hu-berlin.de/en/sem/software/qstem-download (the last is version 2.51 of 11th May 2018), it seems that they do not match. At the same time, the upstream github repository is not up to date, which does not help.

@schiotz
Copy link
Contributor Author

schiotz commented Jul 3, 2019

@ericpre
You have a very valid point. On the other hand, it would be weird if conda install pyqstem installs something different from pip install pyqstem. Also, I do not think there is a standardized API between pyqstem and qstem, so it would have to be checked that it still works correctly if this is done.

@grlee77
Copy link
Member

grlee77 commented Jul 6, 2019

@schlotz, it looks like the recent conda-build versions that were causing problems are now marked as broken, so this might work without the MPI issues if you want to try again.

@schiotz
Copy link
Contributor Author

schiotz commented Jul 6, 2019

@grlee77 Thank you very much! And it looks like somebody triggered a rebuild - now it works!

@msarahan
Copy link
Member

msarahan commented Jul 6, 2019

Thanks all for the help here. Merging.

@msarahan msarahan merged commit 9d33408 into conda-forge:master Jul 6, 2019
@beckermr
Copy link
Member

beckermr commented Jul 6, 2019

I triggered the builds. Thanks a bunch everyone!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

9 participants