obspy / obspy

ObsPy: A Python Toolbox for seismology/seismological observatories.

Home Page:https://www.obspy.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Support for Obspy on the Linux, ARM64, platform

Omid87 opened this issue · comments

Problem

Request for the inclusion of ARM64 architecture support for the Linux platform in ObsPy. As the ARM64 architecture gains prominence in various computing environments, particularly in scientific research and data processing fields, extending support for ARM64 would greatly enhance the usability and accessibility of ObsPy for a wider range of users and systems.

Proposed solution

Package and distribute the Linux, ARM64, version of the Obspy on both Conda-forge and Pypi.

I tried to package the application on Debian ARM64 platform and here is the error I get.

conda build .  
WARNING: No numpy version specified in conda_build_config.yaml.  Falling back to default numpy value of 1.26
Adding in variants from internal_defaults
Attempting to finalize metadata for obspy
Reloading output folder: ...working... done
Getting pinned dependencies: ...working... done
BUILD START: ['obspy-1.1.0-py312hb3f6f3f_0.tar.bz2']
Reloading output folder: ...working... done
Solving environment (_h_env): ...working... done
Reloading output folder: ...working... done
Solving environment (_test_env): ...working... done

## Package Plan ##

  environment location: /home/orangepi/miniconda3/conda-bld/obspy_1712861782103/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho
ld_placehold_placehold_placehold_placehold_placehold_pl


The following NEW packages will be INSTALLED:

   **_I DELETED THE LIST OF PACKAGES TO MAKE IT SHORTER_**

Preparing transaction: ...working... done
Verifying transaction: ...working... done
Executing transaction: ...working... done
Source cache directory is: /home/orangepi/miniconda3/conda-bld/src_cache
Found source in cache: obspy-1.1.0_ef48b4e52a.zip
Extracting download
source tree in: /home/orangepi/miniconda3/conda-bld/obspy_1712861782103/work
export PREFIX=/home/orangepi/miniconda3/conda-bld/obspy_1712861782103/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho
ld_placehold_placehold_placehold_placehold_pl
export SRC_DIR=/home/orangepi/miniconda3/conda-bld/obspy_1712861782103/work
Traceback (most recent call last):
  File "/home/orangepi/miniconda3/conda-bld/obspy_1712861782103/work/setup.py", line 47, in <module>
    from numpy.distutils.core import DistutilsSetupError, setup
ModuleNotFoundError: No module named 'numpy.distutils'

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

    Traceback (most recent call last):
      File "/home/orangepi/miniconda3/lib/python3.12/site-packages/conda/exception_handler.py", line 17, in __call__
        return func(*args, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^
      File "/home/orangepi/miniconda3/lib/python3.12/site-packages/conda/cli/main.py", line 83, in main_subshell
        exit_code = do_call(args, parser)
                    ^^^^^^^^^^^^^^^^^^^^^
      File "/home/orangepi/miniconda3/lib/python3.12/site-packages/conda/cli/conda_argparse.py", line 175, in do_call
        result = plugin_subcommand.action(getattr(args, "_args", args))
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/orangepi/miniconda3/lib/python3.12/site-packages/conda_build/plugin.py", line 17, in build
        return execute(args)
               ^^^^^^^^^^^^^
      File "/home/orangepi/miniconda3/lib/python3.12/site-packages/conda_build/cli/main_build.py", line 581, in execute
        api.build(
      File "/home/orangepi/miniconda3/lib/python3.12/site-packages/conda_build/api.py", line 250, in build
        return build_tree(
               ^^^^^^^^^^^
      File "/home/orangepi/miniconda3/lib/python3.12/site-packages/conda_build/build.py", line 3762, in build_tree
        packages_from_this = build(
                             ^^^^^^
      File "/home/orangepi/miniconda3/lib/python3.12/site-packages/conda_build/build.py", line 2634, in build
        utils.check_call_env(
      File "/home/orangepi/miniconda3/lib/python3.12/site-packages/conda_build/utils.py", line 408, in check_call_env
        return _func_defaulting_env_to_os_environ("call", *popenargs, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/orangepi/miniconda3/lib/python3.12/site-packages/conda_build/utils.py", line 384, in _func_defaulting_env_to_os_environ
        raise subprocess.CalledProcessError(proc.returncode, _args)
    subprocess.CalledProcessError: Command '['/bin/bash', '-o', 'errexit', '/home/orangepi/miniconda3/conda-bld/obspy_1712861782103/work/conda_build.sh']' returned non-zero exit status 1.

`$ /home/orangepi/miniconda3/bin/conda build .`

  environment variables:
                 CIO_TEST=<not set>
    CONDA_ALLOW_SOFTLINKS=false
        CONDA_DEFAULT_ENV=base
                CONDA_EXE=/home/orangepi/miniconda3/bin/conda
             CONDA_PREFIX=/home/orangepi/miniconda3
    CONDA_PROMPT_MODIFIER=(base)
         CONDA_PYTHON_EXE=/home/orangepi/miniconda3/bin/python
               CONDA_ROOT=/home/orangepi/miniconda3
              CONDA_SHLVL=1
           CURL_CA_BUNDLE=<not set>
               LD_PRELOAD=<not set>
                     PATH=/home/orangepi/miniconda3/bin:/home/orangepi/miniconda3/condabin:/usr/
                          local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
       REQUESTS_CA_BUNDLE=<not set>
            SSL_CERT_FILE=<not set>
            XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
         XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0

     active environment : base
    active env location : /home/orangepi/miniconda3
            shell level : 1
       user config file : /home/orangepi/.condarc
 populated config files : /home/orangepi/.condarc
          conda version : 24.3.0
    conda-build version : 24.3.0
         python version : 3.12.2.final.0
                 solver : libmamba (default)
       virtual packages : __archspec=1=cortex_a72
                          __conda=24.3.0=0
                          __glibc=2.31=0
                          __linux=5.10.110=0
                          __unix=0=0
       base environment : /home/orangepi/miniconda3  (writable)
      conda av data dir : /home/orangepi/miniconda3/etc/conda
  conda av metadata url : None
           channel URLs : https://conda.anaconda.org/conda-forge/linux-aarch64
                          https://conda.anaconda.org/conda-forge/noarch
                          https://repo.anaconda.com/pkgs/main/linux-aarch64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/r/linux-aarch64
                          https://repo.anaconda.com/pkgs/r/noarch
          package cache : /home/orangepi/miniconda3/pkgs
                          /home/orangepi/.conda/pkgs
       envs directories : /home/orangepi/miniconda3/envs
                          /home/orangepi/.conda/envs
               platform : linux-aarch64
             user-agent : conda/24.3.0 requests/2.31.0 CPython/3.12.2 Linux/5.10.110-rockchip-rk3588 debian/11.9 glibc/2.31 solver/libmamba conda-libmamba-solver/24.1.0 libmambapy/1.5.8
                UID:GID : 1000:1000
             netrc file : None
           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>

If submitted, this report will be used by core maintainers to improve
future releases of conda.
Would you like conda to send this report to the core maintainers? [y/N]:  
Timeout reached. No report sent.

Have you tried like this?

(base) $ conda create -n obspy pip numpy scipy matplotlib lxml setuptools sqlalchemy decorator requests
(base) $ conda activate obspy
(obspy) $ pip install obspy

I'm currently able to install Obspy in development mode by creating a conda environment and utilizing pip install -e . for installation. However, I'm encountering difficulties when attempting to package Obspy using conda build . on the Linux ARM64 platform.

To provide more context, I'm a member of the software team at EPIC (EarthScope Primary Instrument Center). We're in the process of expanding the compatibility of the PASSOFT suite to the ARM64 platform. PASSOFT, developed, packaged, and distributed by EPIC, relies on Obspy as a dependency.

In order to package PASSOFT for the Linux ARM64 platform, it's crucial that all dependencies are available on this specific platform. Unfortunately, Obspy isn't currently available for ARM64. As an interim solution until Obspy becomes available for ARM64, I intend to package Obspy for this platform and host it on our local conda channel. This approach will enable PASSOFT to be installed on Linux ARM64 systems.

Looking at your initial failure report.. did you have numpy installed before running conda build?