conda-forge / moreutils-feedstock

A conda-smithy repository for moreutils.
BSD 3-Clause "New" or "Revised" License
0 stars 4 forks source link

Chronic fails with: Can't locate IPC/Run.pm in @INC #6

Open peterjc opened 1 week ago

peterjc commented 1 week ago

Solution to issue cannot be found in the documentation.

Issue

Noticed on macOS Intel, confirmed on macOS ARM.

$ conda list moreutils
# packages in environment at /Users/peterjc/miniforge3/envs/pyani-plus_py312:
#
# Name                    Version                   Build  Channel
moreutils                 0.67                 h1ed4d5f_0    conda-forge

The chronic command fails, e.g. expected output (nothing):

$ chronic echo "Hello world"

Problematic behaviour:

$ chronic echo "Hello world"
Can't locate IPC/Run.pm in @INC (you may need to install the IPC::Run module) (@INC contains: /Users/peterjc/miniforge3/envs/pyani-plus_py312/lib/perl5/5.32/site_perl /Users/peterjc/miniforge3/envs/pyani-plus_py312/lib/perl5/site_perl /Users/peterjc/miniforge3/envs/pyani-plus_py312/lib/perl5/5.32/vendor_perl /Users/peterjc/miniforge3/envs/pyani-plus_py312/lib/perl5/vendor_perl /Users/peterjc/miniforge3/envs/pyani-plus_py312/lib/perl5/5.32/core_perl /Users/peterjc/miniforge3/envs/pyani-plus_py312/lib/perl5/core_perl .) at /Users/peterjc/miniforge3/envs/pyani-plus_py312/bin/chronic line 57.
BEGIN failed--compilation aborted at /Users/peterjc/miniforge3/envs/pyani-plus_py312/bin/chronic line 57.

This looks like a missing dependency:

$ head -n 57 `which chronic` | tail -n 1
use IPC::Run qw( start pump finish timeout );

I will try installing perl-ipc-run on Intel macOS shortly, however this in turn requires perl-io-tty which is not available on macOS ARM yet. If adding this dependency solves this, I will submit a pull request shortly - and also expand the tests to include the above trivial example.

Installed packages

$ conda list # packages in environment at /Users/peterjc/miniforge3/envs/pyani-plus_py312: # # Name Version Build Channel amply 0.1.6 pyhd8ed1ab_0 conda-forge appdirs 1.4.4 pyh9f0ad1d_0 conda-forge argparse-dataclass 2.0.0 pyhd8ed1ab_0 conda-forge attmap 0.13.2 pyhd8ed1ab_0 conda-forge attrs 24.2.0 pyh71513ae_0 conda-forge biopython 1.84 pypi_0 pypi brotli-python 1.1.0 py312h9f69965_1 conda-forge bzip2 1.0.8 h99b78c6_7 conda-forge ca-certificates 2024.8.30 hf0a4a13_0 conda-forge certifi 2024.8.30 pyhd8ed1ab_0 conda-forge cffi 1.17.0 py312h80c9ed6_0 conda-forge cfgv 3.3.1 pyhd8ed1ab_0 conda-forge charset-normalizer 3.3.2 pyhd8ed1ab_0 conda-forge click 8.1.7 pypi_0 pypi coin-or-cbc 2.10.11 h700c273_0 conda-forge coin-or-cgl 0.60.7 hf050ae7_0 conda-forge coin-or-clp 1.17.8 h65c2c7c_0 conda-forge coin-or-osi 0.108.10 h0dc0bf9_0 conda-forge coin-or-utils 2.11.11 hafd1a81_1 conda-forge coincbc 2.10.11 0_metapackage conda-forge colorama 0.4.6 pyhd8ed1ab_0 conda-forge conda-inject 1.3.2 pyhd8ed1ab_0 conda-forge configargparse 1.7 pyhd8ed1ab_0 conda-forge connection_pool 0.0.3 pyhd3deb0d_0 conda-forge coverage 7.6.1 py312h024a12e_1 conda-forge datrie 0.8.2 py312h02f2b3b_7 conda-forge distlib 0.3.8 pyhd8ed1ab_0 conda-forge docutils 0.21.2 pyhd8ed1ab_0 conda-forge dpath 2.2.0 pyha770c72_0 conda-forge eido 0.2.2 pyhd8ed1ab_0 conda-forge exceptiongroup 1.2.2 pyhd8ed1ab_0 conda-forge execnet 2.1.1 pyhd8ed1ab_0 conda-forge fastani 1.34 h9ec2e44_3 bioconda filelock 3.15.4 pyhd8ed1ab_0 conda-forge gettext 0.22.5 h8fbad5d_2 conda-forge gettext-tools 0.22.5 h8fbad5d_2 conda-forge gitdb 4.0.11 pyhd8ed1ab_0 conda-forge gitpython 3.1.43 pyhd8ed1ab_0 conda-forge greenlet 3.0.3 py312h20a0b95_0 conda-forge gsl 2.7 h6e638da_0 conda-forge h2 4.1.0 pyhd8ed1ab_0 conda-forge hpack 4.0.0 pyh9f0ad1d_0 conda-forge humanfriendly 10.0 pyhd8ed1ab_6 conda-forge hyperframe 6.0.1 pyhd8ed1ab_0 conda-forge identify 2.6.0 pyhd8ed1ab_0 conda-forge idna 3.7 pyhd8ed1ab_0 conda-forge immutables 0.20 py312h02f2b3b_1 conda-forge importlib_resources 6.4.0 pyhd8ed1ab_0 conda-forge iniconfig 2.0.0 pyhd8ed1ab_0 conda-forge intervaltree 3.1.0 pypi_0 pypi jinja2 3.1.4 pyhd8ed1ab_0 conda-forge jsonschema 4.23.0 pyhd8ed1ab_0 conda-forge jsonschema-specifications 2023.12.1 pyhd8ed1ab_0 conda-forge jupyter_core 5.7.2 py312h81bd7bf_0 conda-forge libasprintf 0.22.5 h8fbad5d_2 conda-forge libasprintf-devel 0.22.5 h8fbad5d_2 conda-forge libblas 3.9.0 23_osxarm64_openblas conda-forge libcblas 3.9.0 23_osxarm64_openblas conda-forge libcxx 18.1.8 h5a72898_2 conda-forge libexpat 2.6.2 hebf3989_0 conda-forge libffi 3.4.2 h3422bc3_5 conda-forge libgettextpo 0.22.5 h8fbad5d_2 conda-forge libgettextpo-devel 0.22.5 h8fbad5d_2 conda-forge libgfortran 5.0.0 13_2_0_hd922786_3 conda-forge libgfortran5 13.2.0 hf226fd6_3 conda-forge libiconv 1.17 h0d3ecfb_2 conda-forge libidn2 2.3.7 h93a5062_0 conda-forge libintl 0.22.5 h8fbad5d_2 conda-forge libintl-devel 0.22.5 h8fbad5d_2 conda-forge liblapack 3.9.0 23_osxarm64_openblas conda-forge liblapacke 3.9.0 23_osxarm64_openblas conda-forge libopenblas 0.3.27 openmp_h517c56d_1 conda-forge libsqlite 3.46.0 hfb93653_0 conda-forge libunistring 0.9.10 h3422bc3_0 conda-forge libzlib 1.3.1 hfb2fe0b_1 conda-forge llvm-openmp 18.1.8 hde57baf_0 conda-forge logmuse 0.2.6 pyh8c360ce_0 conda-forge markdown-it-py 3.0.0 pyhd8ed1ab_0 conda-forge markupsafe 2.1.5 py312he37b823_0 conda-forge mdurl 0.1.2 pyhd8ed1ab_0 conda-forge moreutils 0.67 h1ed4d5f_0 conda-forge mummer 3.23 pl5321h85d7946_20 bioconda nbformat 5.10.4 pyhd8ed1ab_0 conda-forge ncurses 6.5 hb89a1cb_0 conda-forge nodeenv 1.9.1 pyhd8ed1ab_0 conda-forge numpy 2.0.1 py312hb544834_0 conda-forge openssl 3.3.2 h8359307_0 conda-forge packaging 24.1 pyhd8ed1ab_0 conda-forge pandas 2.2.2 py312h8ae5369_1 conda-forge peppy 0.40.5 pyhd8ed1ab_0 conda-forge perl 5.32.1 7_h4614cfb_perl5 conda-forge pip 24.2 pyhd8ed1ab_0 conda-forge pkgutil-resolve-name 1.3.10 pyhd8ed1ab_1 conda-forge plac 1.4.3 pyhd8ed1ab_0 conda-forge platformdirs 4.2.2 pyhd8ed1ab_0 conda-forge pluggy 1.5.0 pyhd8ed1ab_0 conda-forge pre-commit 3.8.0 pyha770c72_1 conda-forge psutil 6.0.0 py312h7e5086c_0 conda-forge pulp 2.8.0 py312h81bd7bf_0 conda-forge pyani-plus 0.0.1 pypi_0 pypi pycparser 2.22 pyhd8ed1ab_0 conda-forge pygments 2.18.0 pyhd8ed1ab_0 conda-forge pyparsing 3.1.2 pyhd8ed1ab_0 conda-forge pysocks 1.7.1 pyha2e5f31_6 conda-forge pytest 8.3.3 pyhd8ed1ab_0 conda-forge pytest-cov 5.0.0 pyhd8ed1ab_0 conda-forge pytest-xdist 3.6.1 pyhd8ed1ab_0 conda-forge python 3.12.4 h30c5eda_0_cpython conda-forge python-dateutil 2.9.0 pyhd8ed1ab_0 conda-forge python-fastjsonschema 2.20.0 pyhd8ed1ab_0 conda-forge python-tzdata 2024.1 pyhd8ed1ab_0 conda-forge python_abi 3.12 4_cp312 conda-forge pytz 2024.1 pyhd8ed1ab_0 conda-forge pyyaml 6.0.2 py312h7e5086c_0 conda-forge readline 8.2 h92ec313_1 conda-forge referencing 0.35.1 pyhd8ed1ab_0 conda-forge requests 2.32.3 pyhd8ed1ab_0 conda-forge reretry 0.11.8 pyhd8ed1ab_0 conda-forge rich 13.7.1 pyhd8ed1ab_0 conda-forge rpds-py 0.20.0 py312h552d48e_0 conda-forge ruff 0.6.5 py312h42f095d_0 conda-forge setuptools 72.1.0 pyhd8ed1ab_0 conda-forge shellingham 1.5.4 pypi_0 pypi six 1.16.0 pyh6c4a22f_0 conda-forge slack-sdk 3.31.0 pyha770c72_0 conda-forge slack_sdk 3.31.0 hd8ed1ab_0 conda-forge smart_open 7.0.4 pyhd8ed1ab_0 conda-forge smmap 5.0.0 pyhd8ed1ab_0 conda-forge snakemake 8.16.0+3.ge8735c14.dirty pypi_0 pypi snakemake-executor-plugin-cluster-generic 1.0.9 pypi_0 pypi snakemake-interface-common 1.17.2 pyhdfd78af_0 bioconda snakemake-interface-executor-plugins 9.2.0 pyhdfd78af_0 bioconda snakemake-interface-report-plugins 1.0.0 pyhdfd78af_0 bioconda snakemake-interface-storage-plugins 3.2.3 pyhdfd78af_0 bioconda snakemake-minimal 8.20.3 pyhdfd78af_0 bioconda sortedcontainers 2.4.0 pypi_0 pypi sqlalchemy 2.0.35 py312h024a12e_0 conda-forge stopit 1.1.2 py_0 conda-forge tabulate 0.9.0 pyhd8ed1ab_1 conda-forge throttler 1.2.2 pyhd8ed1ab_0 conda-forge tk 8.6.13 h5083fa2_1 conda-forge toml 0.10.2 pyhd8ed1ab_0 conda-forge tomli 2.0.1 pyhd8ed1ab_0 conda-forge toposort 1.10 pyhd8ed1ab_0 conda-forge traitlets 5.14.3 pyhd8ed1ab_0 conda-forge typer 0.12.5 pypi_0 pypi types-tqdm 4.66.0.20240417 pyhd8ed1ab_0 conda-forge typing-extensions 4.12.2 hd8ed1ab_0 conda-forge typing_extensions 4.12.2 pyha770c72_0 conda-forge tzdata 2024a h0c530f3_0 conda-forge ubiquerg 0.8.0 pyhd8ed1ab_0 conda-forge ukkonen 1.0.1 py312h389731b_4 conda-forge urllib3 2.2.2 pyhd8ed1ab_1 conda-forge veracitools 0.1.3 py_0 conda-forge virtualenv 20.26.3 pyhd8ed1ab_0 conda-forge wget 1.21.4 he2df1f1_0 conda-forge wheel 0.44.0 pyhd8ed1ab_0 conda-forge wrapt 1.16.0 py312he37b823_0 conda-forge xz 5.2.6 h57fd34a_0 conda-forge yaml 0.2.5 h3422bc3_2 conda-forge yte 1.5.4 pyha770c72_0 conda-forge zipp 3.19.2 pyhd8ed1ab_0 conda-forge zlib 1.3.1 hfb2fe0b_1 conda-forge zstandard 0.23.0 py312h721a963_0 conda-forge zstd 1.5.6 hb46c0d2_0 conda-forge

Environment info

$ conda info active environment : pyani-plus_py312 active env location : /Users/peterjc/miniforge3/envs/pyani-plus_py312 shell level : 2 user config file : /Users/peterjc/.condarc populated config files : /Users/peterjc/miniforge3/.condarc /Users/peterjc/.condarc conda version : 24.7.1 conda-build version : not installed python version : 3.10.14.final.0 solver : libmamba (default) virtual packages : __archspec=1=m1 __conda=24.7.1=0 __osx=14.6.1=0 __unix=0=0 base environment : /Users/peterjc/miniforge3 (writable) conda av data dir : /Users/peterjc/miniforge3/etc/conda conda av metadata url : None channel URLs : https://conda.anaconda.org/conda-forge/osx-arm64 https://conda.anaconda.org/conda-forge/noarch https://conda.anaconda.org/bioconda/osx-arm64 https://conda.anaconda.org/bioconda/noarch package cache : /Users/peterjc/miniforge3/pkgs /Users/peterjc/.conda/pkgs envs directories : /Users/peterjc/miniforge3/envs /Users/peterjc/.conda/envs platform : osx-arm64 user-agent : conda/24.7.1 requests/2.31.0 CPython/3.10.14 Darwin/23.6.0 OSX/14.6.1 solver/libmamba conda-libmamba-solver/24.1.0 libmambapy/1.5.8 UID:GID : 501:20 netrc file : None offline mode : False
peterjc commented 1 week ago

Confirmed the same behaviour on Intel Linux, and that installing perl-ipc-run fixes this. PR to follow.

peterjc commented 1 week ago

Short term workaround (unless using ARM), install perl-ipc-run from BioConda.

Actual fix:

  1. Migrate perl-ipc-run from bioconda to conda-forge - see https://github.com/bioconda/bioconda-recipes/blob/master/recipes/perl-ipc-run/meta.yaml (looks like pure Perl with no C code dependency, so should be fine on ARM too).

  2. Declare the moreutils dependency, see #7

  3. Update perl-io-tty to build on ARM - https://github.com/conda-forge/perl-io-tty-feedstock/