baxy77bax has asked for the wisdom of the Perl Monks concerning the following question:

Hi,

Does anyone have a working example on how to add a tool written in perl to local conda channel?
What i have is the following:
Project:

./bin ./lib ./t meta.yaml Build.PL
I build my tool by executing:
perl Build.pl ./Build ./Build test ./Build install Building mytool Installing /home/ux/perl5/lib/perl5/MyTool/RMod.pm Installing /home/ux/perl5/lib/perl5/MyTool/Stats.pm Installing /home/ux/perl5/man/man3/MyTool::RMod.3pm Installing /home/ux/perl5/man/man3/MyTool::Stats.3pm Installing /home/ux/perl5/bin/mytool.pl
all good here the tool gets installed and i can use it now i want to add it to conda channel so that others can just install it (why conda u ask? well, group politics! ) what i do there is the following:
-- meta.yaml -- {% set name = "mytool" %} {% set version = "0.01" %} package: name: {{ name|lower }} version: {{ version }} build: script: "perl Build.PL && perl Build && perl Build install --instal +l_base $CONDA_PREFIX --extra_compiler $CONDA_PREFIX/lib/perl5" number: 0 source: path: ./ requirements: host: - 'r-ape=5.7_1' - 'perl==5.32.1' - 'perl-file-path==2.16' - 'perl-getopt-long==2.52' - 'perl-file-slurp==9999.32' - 'perl-test-more==1.001002' - 'perl-module-build==0.4224' - 'perl-carp==1.38' - 'perl-ipc-cmd==1.02' - 'r-base==4.3.1' - 'r-ggplot2==3.4.3' run: - 'r-ape=5.7_1' - 'perl==5.32.1' - 'perl-file-path==2.16' - 'perl-getopt-long==2.52' - 'perl-file-slurp==9999.32' - 'perl-test-more==1.001002' - 'perl-carp==1.38' - 'r-base==4.3.1' - 'r-ggplot2==3.4.3' test: commands: - mytool -v about: home: https://.. license: MIT license_family: MIT summary: "Description"
and then try to build it :
conda build --output-folder /mnt/opt/my-conda/ ./ ---- Adding in variants from internal_defaults INFO:conda_build.variants:Adding in variants from internal_defaults Attempting to finalize metadata for mytool INFO:conda_build.metadata:Attempting to finalize metadata for mytool Collecting package metadata (repodata.json): ...working... done Solving environment: ...working... done Collecting package metadata (repodata.json): ...working... done Solving environment: ...working...done BUILD START: ['mytool-0.01-py310pl532r43_0.tar.bz2'] Collecting package metadata (repodata.json): ...working... done Solving environment: ...working... done ## Package Plan ## environment location: /opt/anaconda3/conda-bld/mytool_1692345318424/ +_h_env_placehold_placehold_placehold_placehold_placehold_placehold_pl +acehold_placehold_placehold_placehold_placehold_placehold_placehold_p +lacehold_placehold_placehold_placehold_placehold_placehold_pl The following NEW packages will be INSTALLED: _libgcc_mutex: 0.1-conda_forge conda-fo +rge _openmp_mutex: 4.5-2_gnu conda-fo +rge ... Preparing transaction: ...working... done Verifying transaction: ...working... done Executing transaction: ...working... done Collecting package metadata (repodata.json): ...working... done Solving environment: ...working... done Copying /home/ux/software/mytool to /opt/anaconda3/conda-bld/mytool_16 +92345318424/work/ source tree in: /opt/anaconda3/conda-bld/mytool_1692345318424/work export PREFIX=/opt/anaconda3/conda-bld/mytool_1692345318424/_h_env_pla +cehold_placehold_placehold_placehold_placehold_placehold_placehold_pl +acehold_placehold_placehold_placehold_placehold_placehold_placehold_p +lacehold_placehold_placehold_placehold_placehold_pl export BUILD_PREFIX=/opt/anaconda3/conda-bld/mytool_1692345318424/_bui +ld_env export SRC_DIR=/opt/anaconda3/conda-bld/mytool_1692345318424/work Created MYMETA.yml and MYMETA.json Creating new 'Build' script for 'mytool' version '0.01' Building mytool Installing $BUILD_PREFIX/lib/perl5/MyTool/RMod.pm Installing $BUILD_PREFIX/lib/perl5/MyTool/Stats.pm Installing $BUILD_PREFIX/man/man3/MyTool::RMod.3pm Installing $BUILD_PREFIX/man/man3/MyTool::Stats.3 Installing $BUILD_PREFIX/man/man3/MyTool::RMod.3pm Installing $BUILD_PREFIX/man/man3/MyTool::Stats.3pm Installing $BUILD_PREFIX/bin/mytool.pl Resource usage statistics from building mytool: Process count: 2 CPU time: Sys=0:00:00.1, User=0:00:00.2 Memory: 36.2M Disk usage: 32.2M Time elapsed: 0:00:06.6 Packaging mytool INFO:conda_build.build:Packaging mytool INFO conda_build.build:build(1571): Packaging mytool Packaging mytool-0.01-py310pl532r43_0 INFO:conda_build.build:Packaging mytool-0.01-py310pl532r43_0 INFO conda_build.build:bundle_conda(891): Packaging mytool-0.01-py310p +l532r43_0 No files or script found for output mytool ### -> why no scripts a +re seen ?????? WARNING:conda_build.build:No files or script found for output mytool WARNING conda_build.build:bundle_conda(971): No files or script found +for output mytool number of files: 0 ## -> WHY? Fixing permissions TEST START: /mnt/opt/my-conda/linux-64/mytool-0.01-py310pl532r43_0.tar +.bz2 Adding in variants from /tmp/tmpnlh6v840/info/recipe/conda_build_confi +g.yaml INFO:conda_build.variants:Adding in variants from /tmp/tmpnlh6v840/inf +o/recipe/conda_build_config.yaml INFO conda_build.variants:_combine_spec_dictionaries(188): Adding in v +ariants from /tmp/tmpnlh6v840/info/recipe/conda_build_config.yaml Renaming work directory, /opt/anaconda3/conda-bld/mytool_169234531842 +4/work to /opt/anaconda3/conda-bld/mytool_1692345318424/work_moved_ +mytool-0.01-py310pl532r43_0_linux-64 Collecting package metadata (repodata.json): ...working... done Solving environment: ...working... done ## Package Plan ## environment location: /opt/anaconda3/conda-bld/mytool_1692345318424/ +_test_env_placehold_placehold_placehold_placehold_placehold_placehold +_placehold_placehold_placehold_placehold_placehold_placehold_placehol +d_placehold_placehold_placehold_placehold_placehold_placeho The following NEW packages will be INSTALLED: _libgcc_mutex: 0.1-conda_forge conda-forge _openmp_mutex: 4.5-2_gnu conda-forge ... Preparing transaction: ...working... done Verifying transaction: ...working... done Executing transaction: ...working... done + mytool.pl -v /opt/anaconda3/conda-bld/mytool_1692345318424/test_tmp/run_test.sh: li +ne 7: mytool.pl: command not found ## -> WHY?? Tests failed for mytool-0.01-py310pl532r43_0.tar.bz2 - moving package +to /opt/anaconda3/conda-bld/broken WARNING:conda_build.build:Tests failed for mytool-0.01-py310pl532r43_0 +.tar.bz2 - moving package to /opt/anaconda3/conda-bld/broken WARNING conda_build.build:tests_failed(2231): Tests failed for mytool- +0.01-py310pl532r43_0.tar.bz2 - moving package to /opt/anaconda3/conda +-bld/broken export PREFIX=/opt/anaconda3/conda-bld/mytool_1692345318424/_test_env_ +placehold_placehold_placehold_placehold_placehold_placehold_placehold +_placehold_placehold_placehold_placehold_placehold_placehold_placehol +d_placehold_placehold_placehold_placehold_placeho export SRC_DIR=/opt/anaconda3/conda-bld/mytool_1692345318424/test_tmp TESTS FAILED: mytool-0.01-py310pl532r43_0.tar.bz2
can anyone provide any insight, what am i doing wrong ??

Thynk you !

Replies are listed 'Best First'.
Re: Add a tool to local conda channel
by Corion (Patriarch) on Aug 18, 2023 at 08:43 UTC

    Your program is named mytool.pl, but from Conda, you are trying to invoke mytool.

      Yes, this is an issue with the OP recipe, but the
      No files or script found for output mytool
      issue is a separate one that I'm running into. It results in other errors during testing because no package is actually ever built.
Re: Add a tool to local conda channel
by jdv (Sexton) on Jan 20, 2024 at 03:42 UTC
    Any luck with this? I'm trying to migrate a recipe from bioconda to conda-forge and running into exactly the same issue as you describe with a Module::Build-based package. Haven't been able to figure it out so far.