Age | Commit message (Collapse) | Author |
|
|
|
|
|
I had to redo some of my python overrides and crib the bitsandbytes.nix
from upstream.
Ava is failing because:
ValueError: Tokenizer class LlamaTokenizer does not exist or is not
currently imported.
I think this means I need to update my nixpkgs pin, so I'm gonna
snapshot my work in git, do the update, and that might obviate the local
bitsandbytes.nix anyway.
|
|
This represents quite a few evenings of hacking. It doesn't build all of my
Python code, because my Python code is not up to snuff, but it builds the
examples and pulls in third party dependencies.
Some design points:
- I'm using buildPythonApplication in Builder.nix because it was getting way too
annoying to wrap the Python script and set PYTHONPATH myself. Easier and more
robust to just use the upstream nix builder
- Because of this, I had to generate a setup.py. Maybe switch to pyproject.toml
in the future, whatever.
- Also because of this, Target.wrapper is becoming redundant. I'll just remove
it when I get Guile built in nix.
- Biz/Bild.nix is getting messy and could use a refactor.
- In Builder.nix, I worked around the empty directories bug by just finding and
deleting empty directories after unpacking. If its stupid but works it ain't
stupid!
- I had to touch __init__.py files in all directories before building. Annoying!
- `repl` just works, which is awesome
- To ensure good Python code, I moved lints and added type checking to the
build. So I can't build anything unless it passes those checks. This seems
restrictive, but if I want to run some non-passing code, I can still use
`repl`, so it's actually not inhibitory.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This also fixed a bug where every dependency would get pulled into the Haskell
target while searching for transitive dependencies.
|
|
This is prototype quality. For some reason I think it breaks when doing
`build **/*.hs`, which isn't good. But also it's working, and the code feels
good. Next I'd like to get Python builds working, as hopefully that will force
me to improve the existing code to support a second language.
|
|
|
|
Only fully implemented for Haskell at the moment but that is okay.
|
|
There are some limitations to this implementation:
1. Using `runCommand` means this will re-run any time anything changes in the
repo. The solution is to use the existing import detection to make a list of
source files, and put that into a `stdenv.mkDerivation`, which I'll do next.
2. The `NeatInterpolation` usage is ugly. The templated nix code should be
extracted into its own file, such as `Biz/Bild/Builder.nix`.
3. I'm not actually calling it yet. The ideal thing would be to call
`nix-instantiate`, get the output drv path, and then call `nix-store --realise`
on that. To do that I need to refactor my `proc` function to return stdout to
the calling function, and I should probably just make helper functions like
`nixInstatiate :: Target -> IO DrvPath` and `nixStoreRealise :: DrvPath ->
NixStorePath`, or something like that.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Without this, Guile libraries like SDL2 will use Guile 2.0 instead.
|
|
|
|
|
|
|
|
|
|
|
|
I need to guard on the existence of `out`. This should properly be a `Maybe
FilePath`, but to make that change requires a lot of refactoring that I don't
want to do right now. Instead, I added it to my todo list for later.
|
|
At least one namespace (Biz/Dragons/Analysis.nix) needs this.
|
|
I need to use the absPath, and the `makeAbsolute` function doesn't actually
verify that the path is correct, it just prepends the CWD to the given path.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Redis was failing a test on the previous version.
|
|
Mostly thid required packaging up some deps, but also had to recompile
stuff with cuda support.
|
|
|
|
This way I am more likely to hit the cache and not have to build
everything all the time.
|
|
|