Conversation
|
Wonderful! I don't think accessing Hashdist datastructured instead of filesystem is that important; in fact I don't believe there is much code for accessing profile database (only build artifact database, profiles are managed at the file system level if I remember correctly, which I may not). As for the @ vs /, the / is already in use internally in Hashdist. If people feel that @ is much more readable we should change it to a @ internally too (which will change all hashes and cause full Hashstack rebuild everywhere, though that's not that important I guess). I think the options look about equally good and thus vote for / since it's less work.. |
|
The argument for Conclusion: we should use Thanks @dagss for the feedback. Extremely important to get this right. @tgamblin, what do you think? |
|
I like the use of For the other stuff, obviously I like the way Spack does it :). If you guys want to adopt the syntax, that's great and sets us up for an easier merge someday down the road when we build the next super-distribution tool. The place I see this not being consistent with what hit does at the moment is that I don't think you guys always have all the parameters. If you implement this spec, so that people can customize it not he command line, each build needs to know the meaning of the various parameters. In Spack, every build has some sort of version associated with it (for repo checkouts we currently make them up but I'd like Spack to be smart enough to canonicalize a repo version to a git commit or svn revision, even if it is "named"). I get the impression that in hashdist a build might just have an implicit version, and that you don't always consider it to be parameterized. In that case I don't know what Same for compiler -- if you want Do you also plan to support architecture? That one currently uses Finally, what about the version range syntax? Spack has a fairly well fleshed out version class that supports ranges lists, intersections, etc: https://github.com/scalability-llnl/spack/blob/master/lib/spack/spack/version.py That is needed for concretization, when you apply all the different constraints to the package and settle on a set of build parameters. AFAIK hit has point versions and doesn't do any of that stuff -- are you supporting that syntax? |
|
@certik: one more thing -- you wrote |
|
Hi @tgamblin thanks for the input. Yes, we already support shorter hashes in the file system and we definitely want to allow that, just like git. I meant to write |
Hashes should use /, versions should use @.
This is achieved by using the 'hit' wrapper introduced in the previous commit.
Using "$@" avoids issues with quoting and spaces in paths.
|
Here is a bug that I found: I think the |
|
I extracted the |
In this PR I will be implementing CLI usage improvements. I will list below what you can do now.
TODO before merging
list-profilesto justprofileand make it behave just likegit branch, i.e. list all profiles with the currently enabled one highlighted@or/below as a separator between the package and a hash. Conclusion: use/.showandshow-profileinto one command. There is already ashowcommand inhit, so they all need to be merged.hit loadshould save the name (possibly link, whatever is needed) of the currently loaded profile into an environment variable, so thathit profilecan then access it to see which profile is active andhit unloadcould unload it. Alsohit loadshould unload any previously loaded profile. So a profile behaves like agit branch, only one (or none) active at a given time.Here is what it can do:
(In a terminal, it prints the hashes nicely in color.)
and just do what it says: