Closed jgarte closed 3 years ago
Hi!
What version of Omni are you using?
Ah, found the mistake... It's a regression from a rework I did a couple of releases ago. Will fix it ASAP! Thanks :)
I have rebased the 0.4.0 release to the new commit. If you nimble uninstall omni
and nimble install omni
again you should get it!
It definitely was a silly mistake on my end :)
Hi!
What version of Omni are you using?
.nimble/bin/omni -v
Omni - version 0.4.0
(c) 2020-2021 Francesco Cameli
If you nimble uninstall omni and nimble install omni again you should get it!
I uninstalled and installed omni
but now I get the following error:
$ .nimble/bin/omni Sine.omni
sh: nm: command not found
ERROR: Undefined 'perform' or 'sample' blocks.
Is there something wrong with my input file or is it maybe something else?
$ cat Sine.omni
ins: 1
outs: 1
init:
phase = 0.0
sample:
incr = in1 / samplerate
out1 = sin(phase * TWOPI)
phase = (phase + incr) % 1.0
What Linux distribution are you using? It appears you don't have nm
installed (or not in your $PATH
), which is a standard gcc
utility.
I'm on NixOS on this machine that is having the issues.
I think I have to do some homework on how to set up a proper environment on NixOS for doing work with nim/omni.
Here are some issues regarding compiling packages with nim on NixOS in case you are interested:
https://discourse.nixos.org/t/unresolved-symbols-using-nim/11320/1 https://discourse.nixos.org/t/nix-flake-of-nim-lang-packages/5267 https://github.com/adamlwgriffiths/nix-nim
I tried on a 32 bit cpu that is running void and omni compiled the Sine.omni
file just fine.
I was able to inspect the libSine.so
with nm
.
I see! I have never used NixOS, but I am pretty sure the only problem in this case is to install nm
. Glad it worked on a 32bit CPU, which I actually never tested Omni on :)
I tried installing nm
by installing the binutils package which contains it .
$ whereis nm
nm: /nix/store/3xkamqvr4901xcwilzan3ijq29irpd8d-user-environment/bin/nm
$ which nm
/home/jgart/.nix-profile/bin/nm
This is the error I get now when I try to compile OmniSaw.omni
:
$ .nimble/bin/omni ~/.nimble/pkgs/omni-0.4.0/examples/OmniSaw.omni -o:./
/home/jgart/.nimble/pkgs/omni-0.4.0/examples/OmniSaw.omni(1, 1) template/generic instantiation of `params` from here
/home/jgart/.nimble/pkgs/omni_lang-0.4.0/omni_lang/core/lang/omni_io.nim(1872, 12) template/generic instantiation of `omni_params_inner` from here
/home/jgart/.nimble/pkgs/omni_lang-0.4.0/omni_lang/core/lang/omni_io.nim(1830, 41) Error: expression has no address
I get the same error for Sine.omni
:
$ .nimble/bin/omni Sine.omni
/home/jgart/Sine.omni(1, 1) template/generic instantiation of `ins` from here
/home/jgart/.nimble/pkgs/omni_lang-0.4.0/omni_lang/core/lang/omni_io.nim(761, 12) template/generic instantiation of `omni_ins_inner` from here
/home/jgart/.nimble/pkgs/omni_lang-0.4.0/omni_lang/core/lang/omni_io.nim(719, 41) Error: expression has no address
I also have gcc installed:
$ whereis gcc
gcc: /nix/store/3xkamqvr4901xcwilzan3ijq29irpd8d-user-environment/bin/gcc
Both examples compile for me...
Do they work on your other machine? This might be a problem with NixOS.
Both examples compile for me...
Do they work on your other machine? This might be a problem with NixOS.
Yes, both examples compile fine on the machine running void linux. I think this is a NixOS problem also.
I'll have to investigate what is the correct way to deal with this on NixOS. I'll ask in their discourse.
The author of flake-nimble wrote a blog post about nim that mentions in passing nim and NixOS issues:
I have made some effort at managing Nimble using Nix, but it's always been too fragile to work consistenly.
I see! Let me know about your findings :)
Hi Francesco,
I tried compiling the example in the README but I get the following error:
This is what my sine.omni file contains:
This is the version of nim that I am using:
Any ideas of how I can fix this? Should the README example be updated to reflect the current omni API or does the error lie elsewhere?