-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Managing multiple environments #53
Comments
Can you use two different environments for this?
|
I think(?) I would have to create a separate clone for each feature in order to make that work (since the sub-packages are downloaded to the main I could do that... kinda hoping there's a cleaner way though. 🙂 |
Ah. Installing in development mode might not work with this. |
@majosm I think the multiple checkouts route is the only way that works right now. We coud hack https://github.com/illinois-ceesd/emirge/blob/master/install-pip-dependencies.sh so that it doesn't just blindly clone repos, but instead is able to switch branches in an existing environment (based on |
TEESD needs to have multiple environments just like you describe @majosm. This install command is currently working on emirge@Option--env-name on Lassen:
This command will install a working environment for mirgecom@mybranch in the directory $CEESD/mirgecom-install-1 and this environment has its own conda env that you can load to work on that branch. Any number of these can be installed side-by-side, and multiple installs can share conda envs if you want. When we do continuous builds (if we ever do), TEESD will be doing multiple builds at once, which is why it needs independent environments. These changes are in PR now. #65 #60 Does this help in your situation? |
fyi my environment setting on Lassen so far pre-emirge was whatever the default is +
|
I'm not really loving the idea of having separate local subpackage git repos for every feature branch. It means you have to do the initial git setup work (adding remotes, etc.) every time you create a new branch. And if you want to do something that operates between branches (merge, cherry-pick, diff, ...), you can't directly; you have to use workarounds like adding a remote for the other local git repo or pushing it to public first. Seems awkward. |
I don't understand what you mean here. I develop on multiple branches, each requiring a different set of sub-packages (e.g. meshmode, grudge) - and I do not face any of these troubles. Can you explain? |
So, with your current setup you're creating separate installs for different features, right? Suppose you start with one feature and install with git remote add feature1 /path/to/feature1/install/mirgecom
git fetch feature1
git diff feature1/featurebranch1 featurebranch2 or cd /path/to/feature1/install/mirgecom
git push origin featurebranch1
cd /path/to/feature2/install/mirgecom
git fetch origin
git diff origin/featurebranch1 featurebranch2 both of which are kind of yucky workarounds, IMO. |
Thanks for that detailed explanation @majosm. I didn't follow before because adding other remotes and stuff is not something I actually do (often). I'm always doing the clunky thing of checking out the different feature when I want to work on it as you describe. I can't really imagine another way to do that. The new options do appear to address some of the issues you mentioned at the top of this thread: The (now merged #60) fixes the issue where all of mirgecom and its dependencies are installed under the emirge tree (i.e. if you use the It seems that some additional tools would be needed to better manage the situations where inter-feature development is desired. |
Just to add a detail - since we are supposed to use forks for pushing PRs to other repos (loopy etc.), we won't be able to avoid working with multiple remotes for the repos. |
So far, I've been able to manage this by putting my personal repo as the source in the
Things I push there automatically update the PR. |
I'm trying to figure out how to use
emirge
(possibly in conjunction with other tools, e.g.,conda
) to set up and quickly switch between multiplemirgecom
toolchains.As a concrete example, suppose I have one feature that depends on a post-array-context toolchain and another that is still pre-array-context. Previously, when switching between tasks I would have to go into the individual packages' directories and manually switch branches. I was hoping I could avoid this by switching over to
emirge
. With the old submodule approach I had a mental model for how this would work, but I'm not sure how to do this withrequirements.txt
. Any tips? (Is this documented somewhere? I couldn't find it.)The text was updated successfully, but these errors were encountered: