SETI / rms-vax

vax Python module
Apache License 2.0
1 stars 1 forks source link

add package to conda-forge? #14

Closed Sierra-MC closed 1 month ago

Sierra-MC commented 2 months ago

Thank you for notifying us of this package for use as a pdr dependency. We have tested it and the changes needed to use it are minimal and we especially appreciate that you already have vax64 reading implementation which we did not. This is extremely helpful as we had a small list of product types we were waiting on supporting due to this.

However, rms-vax is not on conda, so we can't have it as a dependency for our code on conda without vendoring your code. Would you consider putting this package onto conda?

The conda-forge repository doesn't allow external dependencies, because the conda solver can't ensure application binary interface compatibility with pip-installed packages, so it makes it much harder for them to maintain their integrity. For the specific conda-forge policy, see: https://conda-forge.org/docs/maintainer/adding_pkgs.html#avoid-external-dependencies

I'd be happy to help by creating a draft recipe (this can easily be done via grayskull with a few tweaks afterwards) or directing you towards resources (like this one) for how to get the package on conda if you're not familiar.

rfrenchseti commented 1 month ago

Hi @Sierra-MC,

We would love to have rms-vax (and about a dozen other packages we've released to the public) available on conda-forge. The only reason we haven't done so is because releasing them there seemed like a pretty complicated process, and we don't use conda in-house so it wasn't urgent. But with your assistance perhaps you can teach me how to do this and then I can also apply that knowledge to our other packages.

Sierra-MC commented 1 month ago

Below is the contents of a conda recipe for rms-vax. This was created by running the command grayskull pypi rms-vax in a terminal (with grayskull installed of course). You don't even need rms-vax on your system to do it. Note the dependencies list leaves out any test/documentation related dependencies (as required by the conda-forge maintainers). The only change I had to make manually was to the recipe-maintainers list at the bottom (which will autofill in with your computer username rather than github handles). For the particular recipe I've put you @rfrenchseti as the maintainer, I've also added myself to help you along with this process (we can remove me after you get accepted without issue and anyone else you want to add you can, but if you add them before the package is accepted they'll also need to comment on your pull request with conda-forge (see below) to consent). This way I'll be able to help you set up automatic updates on your conda-forge feedstock so that when you make a new release to PyPi a helpful robot script will update your conda build and send you an email to let you know it did it's job.

{% set name = "rms-vax" %}
{% set version = "1.0.4" %}

package:
  name: {{ name|lower }}
  version: {{ version }}

source:
  url: https://pypi.io/packages/source/{{ name[0] }}/{{ name }}/rms_vax-{{ version }}.tar.gz
  sha256: 476c6a90fa5b2366265dba44a54968e36d35ed078d37d7ef78f7334116e9fe7c

build:
  noarch: python
  script: {{ PYTHON }} -m pip install . -vv
  number: 0

requirements:
  host:
    - python >=3.8
    - setuptools
    - setuptools-scm
    - pip
  run:
    - python >=3.8
    - numpy

test:
  imports:
    - rms_vax
  commands:
    - pip check
  requires:
    - pip

about:
  summary: Routines for converting to and from vax single-precision floating-point values
  dev_url: https://github.com/SETI/rms-vax
  license: Apache-2.0
  license_file: LICENSE

extra:
  recipe-maintainers:
    - rfrenchseti
    - Sierra-MC

Next steps are to put this in a file name meta.yaml (github won't let me upload a document with that extension on an issue), fork this repository: https://github.com/conda-forge/staged-recipes, add a folder under their recipes folder called rms-vax, paste the meta.yaml file with the above recipe into that folder, and issue a pull request named something to the effect of "adding rms-vax recipe". Once the conda-linter bot tells you the recipe is in excellent condition you'll want to post a comment with the text "@conda-forge-admin, please ping team". And if the maintainers have no issues with the recipe to resolve, rms-vax will be added to conda-forge!

Let me know if you have any questions!

rfrenchseti commented 1 month ago

Wonderful instructions! Thanks. I will let you know how it goes.

cmillion commented 1 month ago

@rfrenchseti What is the status of this? We would love to add rms-vax to pdr but we're kind of in a holding pattern with our code change for that until this is on conda-forge. Thanks.

rfrenchseti commented 1 month ago

I’ll try to get this done today.

rfrenchseti commented 1 month ago

@Sierra-MC Please comment here: https://github.com/conda-forge/staged-recipes/pull/27752

Sierra-MC commented 1 month ago

@rfrenchseti thanks so much for your work on this. I opened an issue in the new rms-vax-feedstock repo. You can see the command in that issue here. This caused the bot to open a pull request you can see here. Once that pull request is merged (you do this manually) then any time you make an update to rms-vax on pip the conda-forge bot should autoupdate.

There have been times that it doesn't do it's job (you can check if it's working here). I usually set a reminder to check on the conda package a half a day to a day after I submit a pip package if I want to make sure the bot does its job. It should email you when it ticks a package.

If you ever want to manually update your recipe (which you'll need to do if you ever change dependencies) then you can use grayskull with the command in the above comment and you can just copy paste the sha code it generates and bump the version number in your recipe to do a tick. An example of this for pdr can be viewed here.

Thanks again for getting this up on conda ! We'll start merging the branches in pdr to make this an official dependency now.