Conda package with optional plugin packages

0 views
Skip to first unread message

Paul Freeman

unread,
Aug 14, 2017, 10:16:20 PM8/14/17
to conda - Public
For the TL;DR group: Has anyone had experience with using conda for managing a conda package supporting plugin packages? Which technologies/conda options might assist in supporting this?

For everyone else:
To elaborate, I am writing laboratory automation software (see PLACE) as a conda package. Each piece of hardware is written as a plugin module so that laboratories can customize the system to their equipment. All the modules are currently installed as one package. However, in the future, it seems likely that I will want to distribute this as a primary package with additional modules that can be installed as needed. (I'm imagining something like the way TeX is distributed... but with conda.)

Each plugin essentially consists of a Python module and a JavaScript file for the user interface. The Python modules aren't a big deal because the Python path variable takes care of that... but the JavaScript files are giving me some trouble. Ideally, I would like to get conda to install the plugin package into a subdirectory from where it installed the main package. Is this possible? I guess alternatively, if I could just specify a known location to install everything That would be a solution... but it seem less elegant.

Hopefully someone has some good tips for me!

kfr...@continuum.io

unread,
Aug 15, 2017, 7:19:09 AM8/15/17
to conda - Public
I don't see much of an issue with what you're trying to do.  Just make sure your "primary" package is your base package, and that all of your plugins declare a runtime dependency on that primary package.  Also, make sure that there aren't any paths that overlap among packages relative to the build root $PREFIX.  There's a configuration parameter than can help with that.

# path_conflict (PathConflict)
#   The method by which conda handle's conflicting/overlapping paths
#   during a create, install, or update operation. The value must be one
#   of 'clobber', 'warn', or 'prevent'. The '--clobber' command-line flag
#   or clobber configuration parameter overrides path_conflict set to
#   'prevent'.
#
# path_conflict: clobber

Someday conda's default value will start to become more strict, moving to warn and then prevent.  Path conflicts can cause some surprising, unexpected, and basically just really bad behavior.

Ray Donnelly

unread,
Aug 15, 2017, 7:32:18 AM8/15/17
to Kale Franz, conda - Public
If you can build your main package and the plugins as sub-packages (i.e. using conda-build 3) then it will warn at build time (or rather, the next release of it will) if any package clobbers another. Search your build log for "Exact overlap between" and "Inexact overlap between".
 

--
You received this message because you are subscribed to the Google Groups "conda - Public" group.
To unsubscribe from this group and stop receiving emails from it, send an email to conda+un...@continuum.io.
To post to this group, send email to co...@continuum.io.
Visit this group at https://groups.google.com/a/continuum.io/group/conda/.
To view this discussion on the web visit https://groups.google.com/a/continuum.io/d/msgid/conda/e9cf8730-4ca0-48f0-ae1d-1873116e8945%40continuum.io.

Paul Freeman

unread,
Aug 15, 2017, 6:44:29 PM8/15/17
to conda - Public, kfr...@continuum.io
Thanks for the tips! I'll see how it goes and post an update later.
Reply all
Reply to author
Forward
0 new messages