| 13 Jan 2024 |
samueldr | (ever heard of BTRON and B-right/V?) | 23:19:47 |
raitobezarius | (never) | 23:19:50 |
samueldr | (it's fascinating) | 23:19:59 |
raitobezarius | I think we have this switch case | 23:20:09 |
raitobezarius | libc =
/**/ if final.isDarwin then "libSystem"
else if final.isMinGW then "msvcrt"
else if final.isWasi then "wasilibc"
else if final.isRedox then "relibc"
else if final.isMusl then "musl"
else if final.isUClibc then "uclibc"
else if final.isAndroid then "bionic"
else if final.isLinux /* default */ then "glibc"
else if final.isFreeBSD then "fblibc"
else if final.isNetBSD then "nblibc"
else if final.isAvr then "avrlibc"
else if final.isGhcjs then null
else if final.isNone then "newlib"
# TODO(@Ericson2314) think more about other operating systems
else "native/impure";
| 23:20:11 |
samueldr | yes | 23:20:16 |
samueldr | with carefulling in an overlay this can be overriden outside of Nixpkgs | 23:20:27 |
raitobezarius | hmm; so what is the problem with the libc precisely? | 23:20:47 |
samueldr | libcCrossChooser =
name:
#if name == "3bv" then final.targetPackages.bvgsdk_libc or final.bvgsdk_libc
if name == "3bv" then final.buildPackages.bvgsdk_libc or final.buildPackages.bvgsdk_libc
else super.libcCrossChooser name
;
| 23:20:57 |
raitobezarius | like you want to be able to have a meaningful overlay of nixpkgs with your libc? | 23:20:58 |
raitobezarius | hm right the cross chooser | 23:21:14 |
samueldr | In reply to @samueldr:matrix.org so uh, I have a weird exotic thing I might need some hints or help, and there's enough gaps in my knowledge of cross in general that I'm not even sure where to start from (the trivial attempts failed for different reasons at different stages) I'm not exactly sure what even makes sense here | 23:21:21 |
samueldr | oh, there's also that libc one, didn't catch on the diff | 23:21:45 |
raitobezarius | yeah there's a whole machinery to slowly transform your thing into final packages and stdenvs | 23:22:10 |
raitobezarius | I don't think you can overlay the lib/systems ones though | 23:22:23 |
raitobezarius | I'm still not sure what to advise as I'm not sure what is your intent, if you don't want to bother nixpkgs with this platform… is your optimal goal to have an overlay somewhere where you can build things with it? | 23:22:58 |
samueldr | whatever mechanism to achieve my goal (editing Nixpkgs or not) is okay | 23:25:01 |
samueldr | I want to better understand the non-trivial cross-compilation | 23:25:13 |
samueldr | a precise goal would be to have an "hello" world C program cross-compiled through as much of stdenv.mkDerivation as feasible | 23:26:37 |
samueldr | (the GNU one most likely can't) | 23:26:49 |
| 14 Jan 2024 |
samueldr | oh, right, another thing I don't know what to do about: the quatuplet for config, since the (admiteddly old) SDK and all the few remnants of info only specify a triplet | 00:24:41 |
raitobezarius | (going to sleep for now but I have some ideas) | 03:52:06 |
raitobezarius | In reply to @samueldr:matrix.org oh, right, another thing I don't know what to do about: the quatuplet for config, since the (admiteddly old) SDK and all the few remnants of info only specify a triplet I think you can invent whatever you want and if you feel like it, you can even send it upstream to gnu-config | 17:05:24 |
raitobezarius | I think it would help a lot if you could share a repo or a branch of nixpkgs so that I can take a look at things | 17:05:42 |
raitobezarius | first step is that I would wire up the libc properly, create a lib/systems/examples.nix for your platform/target thingie, wire the libc in there, then I would add some inspection patterns for this platform, then I would look into stdenv/cross/default.nix and add the special cc for it | 17:07:27 |
raitobezarius | then… I'd take it for a run with pkgsCross.<my-config-name>.hello ? | 17:07:38 |
raitobezarius | * then… I'd take it for a run with pkgsCross.<my-example-name>.hello ? | 17:07:45 |
samueldr | okay, so papercut 1:
checking target system type... Invalid configuration 'i386-unknown-btron-gnu': Kernel 'btron' not known to work with OS 'gnu'.
| 21:25:49 |
samueldr | (I'm not done) | 21:26:09 |
samueldr | so uh, "OS 'gnu'... weird" | 21:26:19 |