mamba-org / mamba

The Fast Cross-Platform Package Manager
https://mamba.readthedocs.io
BSD 3-Clause "New" or "Revised" License
6.57k stars 343 forks source link

'emscripten' is not a valid Platform #3291

Open cosmicBboy opened 2 months ago

cosmicBboy commented 2 months ago

Troubleshooting docs

Anaconda default channels

How did you install Mamba?

Mambaforge or latest Miniforge

Search tried in issue tracker

'emscripten' is not a valid Platform

Latest version of Mamba

Tried in Conda?

I have this problem with Conda as well, without using Mamba

Describe your issue

I'm trying to create a xeus python kernel and have the following environment file:

name: xeus-python-kernel
channels:
  - https://repo.mamba.pm/emscripten-forge
  - conda-forge
dependencies:
  - xeus-python
  - pandas

When I try to create an environment from this file:

mamba env create --file environment.yml

I get the following:

Channels:
 - https://repo.mamba.pm/emscripten-forge
 - conda-forge
Platform: osx-64
Collecting package metadata (repodata.json): done
Solving environment: done

==> WARNING: A newer version of conda exists. <==
    current version: 24.3.0
    latest version: 24.4.0

Please update conda by running

    $ conda update -n base -c conda-forge conda

# >>>>>>>>>>>>>>>>>>>>>> ERROR REPORT <<<<<<<<<<<<<<<<<<<<<<

    Traceback (most recent call last):
      File "/usr/local/Caskroom/miniforge/base/lib/python3.10/site-packages/conda/exception_handler.py", line 17, in __call__
        return func(*args, **kwargs)
      File "/usr/local/Caskroom/miniforge/base/lib/python3.10/site-packages/conda_env/cli/main.py", line 43, in do_call
        exit_code = getattr(module, func_name)(arguments, parser)
      File "/usr/local/Caskroom/miniforge/base/lib/python3.10/site-packages/conda/notices/core.py", line 131, in wrapper
        return func(*args, **kwargs)
      File "/usr/local/Caskroom/miniforge/base/lib/python3.10/site-packages/conda/cli/main_env_create.py", line 169, in execute
        result[installer_type] = installer.install(
      File "/usr/local/Caskroom/miniforge/base/lib/python3.10/site-packages/conda/env/installers/conda.py", line 61, in install
        unlink_link_transaction.download_and_extract()
      File "/usr/local/Caskroom/miniforge/base/lib/python3.10/site-packages/conda/core/link.py", line 255, in download_and_extract
        self._pfe.execute()
      File "/usr/local/Caskroom/miniforge/base/lib/python3.10/site-packages/conda/core/package_cache_data.py", line 771, in execute
        self.prepare()
      File "/usr/local/Caskroom/miniforge/base/lib/python3.10/site-packages/conda/common/io.py", line 85, in decorated
        return f(*args, **kwds)
      File "/usr/local/Caskroom/miniforge/base/lib/python3.10/site-packages/conda/core/package_cache_data.py", line 750, in prepare
        self.paired_actions.update(
      File "/usr/local/Caskroom/miniforge/base/lib/python3.10/site-packages/conda/core/package_cache_data.py", line 751, in <genexpr>
        (prec, self.make_actions_for_record(prec)) for prec in largest_first
      File "/usr/local/Caskroom/miniforge/base/lib/python3.10/site-packages/conda/core/package_cache_data.py", line 595, in make_actions_for_record
        extracted_pcrec = next(
      File "/usr/local/Caskroom/miniforge/base/lib/python3.10/site-packages/conda/core/package_cache_data.py", line 596, in <genexpr>
        (
      File "/usr/local/Caskroom/miniforge/base/lib/python3.10/site-packages/conda/core/package_cache_data.py", line 599, in <genexpr>
        PackageCacheData(pkgs_dir).query(pref_or_spec)
      File "/usr/local/Caskroom/miniforge/base/lib/python3.10/site-packages/conda/core/package_cache_data.py", line 166, in query
        for pcrec in self._package_cache_records.values()
      File "/usr/local/Caskroom/miniforge/base/lib/python3.10/site-packages/conda/core/package_cache_data.py", line 306, in _package_cache_records
        self.load()
      File "/usr/local/Caskroom/miniforge/base/lib/python3.10/site-packages/conda/core/package_cache_data.py", line 127, in load
        package_cache_record = self._make_single_record(base_name)
      File "/usr/local/Caskroom/miniforge/base/lib/python3.10/site-packages/conda/core/package_cache_data.py", line 369, in _make_single_record
        package_cache_record = PackageCacheRecord.from_objects(
      File "/usr/local/Caskroom/miniforge/base/lib/python3.10/site-packages/conda/auxlib/entity.py", line 790, in from_objects
        return cls(**init_vars)
      File "/usr/local/Caskroom/miniforge/base/lib/python3.10/site-packages/conda/auxlib/entity.py", line 743, in __call__
        instance = super().__call__(*args, **kwargs)
      File "/usr/local/Caskroom/miniforge/base/lib/python3.10/site-packages/conda/models/records.py", line 418, in __init__
        super().__init__(*args, **kwargs)
      File "/usr/local/Caskroom/miniforge/base/lib/python3.10/site-packages/conda/auxlib/entity.py", line 759, in __init__
        setattr(self, key, kwargs[key])
      File "/usr/local/Caskroom/miniforge/base/lib/python3.10/site-packages/conda/auxlib/entity.py", line 428, in __set__
        self.box(instance, instance.__class__, val),
      File "/usr/local/Caskroom/miniforge/base/lib/python3.10/site-packages/conda/auxlib/entity.py", line 570, in box
        raise ValidationError(val, msg=e1)
    conda.auxlib.exceptions.ValidationError: 'emscripten' is not a valid Platform

`$ /usr/local/Caskroom/miniforge/base/condabin/mamba create --file environment.yml`

  environment variables:
                 CIO_TEST=<not set>
  CONDA_AUTO_UPDATE_CONDA=false
        CONDA_DEFAULT_ENV=pandera-dev
                CONDA_EXE=/usr/local/Caskroom/miniforge/base/bin/conda
         CONDA_NO_PLUGINS=true
             CONDA_PREFIX=/usr/local/Caskroom/miniforge/base/envs/pandera-dev
           CONDA_PREFIX_1=/usr/local/Caskroom/miniforge/base
    CONDA_PROMPT_MODIFIER=
         CONDA_PYTHON_EXE=/usr/local/Caskroom/miniforge/base/bin/python
               CONDA_ROOT=/usr/local/Caskroom/miniforge/base
              CONDA_SHLVL=2
           CURL_CA_BUNDLE=<not set>
         GDAL_DRIVER_PATH=/usr/local/Caskroom/miniforge/base/envs/pandera-dev/lib/gdalplugins
               LD_PRELOAD=<not set>
                     PATH=/usr/local/Caskroom/miniforge/base/envs/pandera-dev/bin:/usr/local/Cas
                          kroom/miniforge/base/condabin:/Users/nielsbantilan/.pyenv/shims:/Users
                          /nielsbantilan/.rbenv/shims:/usr/local/opt/openjdk/bin:/usr/local/bin:
                          /System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/c
                          om.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/r
                          un/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run
                          /com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/
                          bin:/opt/X11/bin:/Library/Apple/usr/bin:/usr/local/MacGPG2/bin:/Librar
                          y/TeX/texbin:/usr/local/git/bin:/usr/local/go/bin:/Users/nielsbantilan
                          /.cargo/bin
       REQUESTS_CA_BUNDLE=<not set>
            SSL_CERT_FILE=<not set>

     active environment : pandera-dev
    active env location : /usr/local/Caskroom/miniforge/base/envs/pandera-dev
            shell level : 2
       user config file : /Users/nielsbantilan/.condarc
 populated config files : /usr/local/Caskroom/miniforge/base/.condarc
                          /Users/nielsbantilan/.condarc
          conda version : 24.3.0
    conda-build version : not installed
         python version : 3.10.14.final.0
                 solver : libmamba (default)
       virtual packages : __archspec=1=m2
                          __conda=24.3.0=0
                          __osx=14.2.1=0
                          __unix=0=0
       base environment : /usr/local/Caskroom/miniforge/base  (writable)
      conda av data dir : /usr/local/Caskroom/miniforge/base/etc/conda
  conda av metadata url : None
           channel URLs : https://conda.anaconda.org/conda-forge/osx-64
                          https://conda.anaconda.org/conda-forge/noarch
          package cache : /usr/local/Caskroom/miniforge/base/pkgs
                          /Users/nielsbantilan/.conda/pkgs
       envs directories : /usr/local/Caskroom/miniforge/base/envs
                          /Users/nielsbantilan/.conda/envs
               platform : osx-64
             user-agent : conda/24.3.0 requests/2.31.0 CPython/3.10.14 Darwin/23.2.0 OSX/14.2.1 solver/libmamba conda-libmamba-solver/24.1.0 libmambapy/1.5.8
                UID:GID : 501:20
             netrc file : /Users/nielsbantilan/.netrc
           offline mode : False

An unexpected error has occurred. Conda has prepared the above report.
If you suspect this error is being caused by a malfunctioning plugin,
consider using the --no-plugins option to turn off plugins.

Example: conda --no-plugins install <package>

Alternatively, you can set the CONDA_NO_PLUGINS environment variable on
the command line to run the command without plugins enabled.

Example: CONDA_NO_PLUGINS=true conda install <package>

Additional context: this command was working for me yesterday. I tried a fresh miniforge install, but that didn't get around the issue.

mamba info / micromamba info

mamba version : 1.5.8
     active environment : pandera-dev
    active env location : /usr/local/Caskroom/miniforge/base/envs/pandera-dev
            shell level : 2
       user config file : /Users/nielsbantilan/.condarc
 populated config files : /usr/local/Caskroom/miniforge/base/.condarc
                          /Users/nielsbantilan/.condarc
          conda version : 24.3.0
    conda-build version : not installed
         python version : 3.10.14.final.0
                 solver : libmamba (default)
       virtual packages : __archspec=1=m2
                          __conda=24.3.0=0
                          __osx=14.2.1=0
                          __unix=0=0
       base environment : /usr/local/Caskroom/miniforge/base  (writable)
      conda av data dir : /usr/local/Caskroom/miniforge/base/etc/conda
  conda av metadata url : None
           channel URLs : https://conda.anaconda.org/conda-forge/osx-64
                          https://conda.anaconda.org/conda-forge/noarch
          package cache : /usr/local/Caskroom/miniforge/base/pkgs
                          /Users/nielsbantilan/.conda/pkgs
       envs directories : /usr/local/Caskroom/miniforge/base/envs
                          /Users/nielsbantilan/.conda/envs
               platform : osx-64
             user-agent : conda/24.3.0 requests/2.31.0 CPython/3.10.14 Darwin/23.2.0 OSX/14.2.1 solver/libmamba conda-libmamba-solver/24.1.0 libmambapy/1.5.8
                UID:GID : 501:20
             netrc file : /Users/nielsbantilan/.netrc
           offline mode : False

Logs

No response

environment.yml

No response

~/.condarc

anaconda_upload: true

conda-build:
  anaconda_token: <redacted>
changeps1: false
report_errors: false
wolfv commented 2 months ago

You should remove your token! :)

Regarding the environment.yml - it might only work with micromamba. Or if you want to try something newer and easier, you can give pixi a go. I put together this pixi.toml file today: https://gist.github.com/wolfv/87d54ca24bbfb3c4ec34c9688f5c3de0

Once you have pixi, and the pixi.toml you can run pixi run serve to start a server that builds everything.

wolfv commented 2 months ago

PS: I redacted your token but you shold still rotate it! I believe people can see hte edits on Github

cosmicBboy commented 2 months ago

You should remove your token! :)

How do I rotate this? Googling around yields no useful info on this

cosmicBboy commented 2 months ago

Additional context: this command was working for me yesterday. I tried a fresh miniforge install, but that didn't get around the issue.

The weird thing is this was working for me yesterday on mamba 🤷‍♂️ .

wolfv commented 2 months ago

@cosmicBboy you should go to anaconda.org (or from where you got the token), and remove it (or recreate).

Yeah, weird, I believe it might be connected to some server issues then. @DerThorsten or @atrawog migth have more info.

At some point the subdir name also changed from emscripten-32 to emscripten-wasm32.

njzjz commented 2 months ago

Not sure if it is related: I got the same error on Read the Docs last week. The mamba command is executed by jupyterlite_xeus in jupyterlite_xeus/create_conda_env.py. I reinstall mamba through the environment file, which just works.

 channels:
   - conda-forge
 dependencies:
+  - mamba

I don't know the reason though... But it just works.

LiamBindle commented 2 months ago

I believe our issues are related https://github.com/emscripten-forge/recipes/issues/927. The temporary workaround that I'm using is to downgrade packages that were releasing on emscripten-forge since around the first week of May.

DerThorsten commented 2 months ago

@wolfv it turns out this is a problem with the rattler-build build packages. In the index.json of the rattler-build packages is says:

  "platform": "emscripten",
  "subdir": "emscripten-wasm32"

but the platform is expected to be emscripten-wasm32

DerThorsten commented 2 months ago

@LiamBindle now that we know the issue we are working to fix this as soon as possible!

DerThorsten commented 2 months ago

btw I ran into this bug once, then I reinstalled mamba/micromamba in the host environment...now I cannot reproduce it anymore

martinRenou commented 2 months ago

I reinstall mamba through the environment file, which just works.

Could that mean that the mamba version specified in your readthedocs config for mambaforge is the culprit? We have this in our docs https://github.com/jupyterlite/xeus/blob/main/.readthedocs.yaml#L6

martinRenou commented 2 months ago

For the record, installing micromamba seems to also be a solution https://github.com/jupyterlite/xeus/pull/89

But this is definitely just a workaround for now

wolfv commented 1 month ago

Hmm, it's correct though that teh platform is the first part of the subdir.

It's:

platform: emscripten
arch: wasm32
subdir: emscripten-wasm32

Didn't we patch conda in some way to allow emscripten installation?

DerThorsten commented 1 month ago

Didn't we patch conda in some way to allow emscripten installation?

that was just for building packages with boa and conda-build. When using conda to install emscripten-wasm32 package we add the target platform to a .condarc and point conda/mamba to this rc via an env variable (CONDARC I believe)

mhhh...I am more and more confused about this issue. So it seems that it appeared once we swtichd to rattler-build. But the first time we could upload rattler build packages was also when we updated the server.