)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"change_message_id":"a15f87ae3ab28af8a1a84abb8b7cbc1eb0b4a6dc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":40,"id":"5b968e34_d98493f4","updated":"2021-04-18 13:02:31.000000000","message":"I feel like this stuff is just what `runExecline` was made for, esp. combined with iterating over lists of arguments via netstrings.","commit_id":"29416f053560a10a9995c910cd76bd7136044b8a"}],"nix/buildC/default.nix":[{"author":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"change_message_id":"a15f87ae3ab28af8a1a84abb8b7cbc1eb0b4a6dc","unresolved":true,"context_lines":[{"line_number":42,"context_line":"  includeFlags \u003d"},{"line_number":43,"context_line":"    builtins.map (drv: \"-I${lib.getDev drv}/include\");"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"  linkFlags \u003d static: deps: lib.concatLists"},{"line_number":46,"context_line":"    (builtins.map (l: ["},{"line_number":47,"context_line":"      \"-L${lib.getLib l}/lib\""},{"line_number":48,"context_line":"      \"-l${l.libName}\""},{"line_number":49,"context_line":"    ] ++ lib.optionals (!static) ["},{"line_number":50,"context_line":"      \"-rpath\u003d${lib.getLib l}/lib\""},{"line_number":51,"context_line":"    ]) deps);"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"  # For a given compiler, list of CFLAGS and a C source file,"},{"line_number":54,"context_line":"  # return a derivation that builds an object file from that."}],"source_content_type":"text/x-nix","patch_set":40,"id":"8101f2cb_a2498915","line":51,"range":{"start_line":45,"start_character":2,"end_line":51,"end_character":1},"updated":"2021-04-18 13:02:31.000000000","message":"maybe a comment about the flag ordering","commit_id":"29416f053560a10a9995c910cd76bd7136044b8a"},{"author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"change_message_id":"f152a9acf6a101cbfdf04ea27d897ab12e591501","unresolved":true,"context_lines":[{"line_number":42,"context_line":"  includeFlags \u003d"},{"line_number":43,"context_line":"    builtins.map (drv: \"-I${lib.getDev drv}/include\");"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"  linkFlags \u003d static: deps: lib.concatLists"},{"line_number":46,"context_line":"    (builtins.map (l: ["},{"line_number":47,"context_line":"      \"-L${lib.getLib l}/lib\""},{"line_number":48,"context_line":"      \"-l${l.libName}\""},{"line_number":49,"context_line":"    ] ++ lib.optionals (!static) ["},{"line_number":50,"context_line":"      \"-rpath\u003d${lib.getLib l}/lib\""},{"line_number":51,"context_line":"    ]) deps);"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"  # For a given compiler, list of CFLAGS and a C source file,"},{"line_number":54,"context_line":"  # return a derivation that builds an object file from that."}],"source_content_type":"text/x-nix","patch_set":40,"id":"ec8955a7_5d7798d4","line":51,"range":{"start_line":45,"start_character":2,"end_line":51,"end_character":1},"in_reply_to":"8101f2cb_a2498915","updated":"2021-04-20 10:17:25.000000000","message":"What do you mean exactly? I think it is only important that `-L` comes before `-l`.\n\nOr do you mean adding a note about what I explain below with `flattenDeps`? Probably a good idea, yeah.","commit_id":"29416f053560a10a9995c910cd76bd7136044b8a"},{"author":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"change_message_id":"a15f87ae3ab28af8a1a84abb8b7cbc1eb0b4a6dc","unresolved":true,"context_lines":[{"line_number":109,"context_line":"      #"},{"line_number":110,"context_line":"      # Valid settings are:"},{"line_number":111,"context_line":"      #"},{"line_number":112,"context_line":"      # * libc: derivation with extra meta information."},{"line_number":113,"context_line":"      #   buildC.musl and buildC.glibc are supported."},{"line_number":114,"context_line":"      # * compiler: special set describing compiler and bitools"},{"line_number":115,"context_line":"      #   to use. Valid choices are buildC.compilers.clang and"},{"line_number":116,"context_line":"      #   buildC.compilers.gcc."},{"line_number":117,"context_line":"      # * static: if true, link statically and build libraries"},{"line_number":118,"context_line":"      #   as object archives."},{"line_number":119,"context_line":"      # * commonFlags: CFLAGS to pass to every invocation of the"}],"source_content_type":"text/x-nix","patch_set":40,"id":"48ff6dcf_dda29708","line":116,"range":{"start_line":112,"start_character":1,"end_line":116,"end_character":31},"updated":"2021-04-18 13:02:31.000000000","message":"why buildC.musl but buildC.compilers.gcc? why not buildC.libcs.musl or something?","commit_id":"29416f053560a10a9995c910cd76bd7136044b8a"},{"author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"change_message_id":"f152a9acf6a101cbfdf04ea27d897ab12e591501","unresolved":true,"context_lines":[{"line_number":109,"context_line":"      #"},{"line_number":110,"context_line":"      # Valid settings are:"},{"line_number":111,"context_line":"      #"},{"line_number":112,"context_line":"      # * libc: derivation with extra meta information."},{"line_number":113,"context_line":"      #   buildC.musl and buildC.glibc are supported."},{"line_number":114,"context_line":"      # * compiler: special set describing compiler and bitools"},{"line_number":115,"context_line":"      #   to use. Valid choices are buildC.compilers.clang and"},{"line_number":116,"context_line":"      #   buildC.compilers.gcc."},{"line_number":117,"context_line":"      # * static: if true, link statically and build libraries"},{"line_number":118,"context_line":"      #   as object archives."},{"line_number":119,"context_line":"      # * commonFlags: CFLAGS to pass to every invocation of the"}],"source_content_type":"text/x-nix","patch_set":40,"id":"3ebf4742_9365908f","line":116,"range":{"start_line":112,"start_character":1,"end_line":116,"end_character":31},"in_reply_to":"48ff6dcf_dda29708","updated":"2021-04-20 10:17:25.000000000","message":"You\u0027re right. Not sure if I prefer prefixed or unprefixed for both though…","commit_id":"29416f053560a10a9995c910cd76bd7136044b8a"},{"author":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"change_message_id":"a15f87ae3ab28af8a1a84abb8b7cbc1eb0b4a6dc","unresolved":true,"context_lines":[{"line_number":121,"context_line":"      buildConf ? {}"},{"line_number":122,"context_line":"      # name of the resulting derivation"},{"line_number":123,"context_line":"    , name"},{"line_number":124,"context_line":"      # name of the library to build and install: libName should"},{"line_number":125,"context_line":"      # be the same as the argument passed to -l in order to link"},{"line_number":126,"context_line":"      # against this library, i. e. the resulting library is"},{"line_number":127,"context_line":"      # installed to $out/lib/lib${libName}.{a, so}"},{"line_number":128,"context_line":"    , libName ? name"},{"line_number":129,"context_line":"      # Header files to install to $out/include which are also"},{"line_number":130,"context_line":"      # made available with -I during compilation as paths or"}],"source_content_type":"text/x-nix","patch_set":40,"id":"a6ffc904_17294c57","line":127,"range":{"start_line":124,"start_character":3,"end_line":127,"end_character":51},"updated":"2021-04-18 13:02:31.000000000","message":"should? what happens if it’s not?","commit_id":"29416f053560a10a9995c910cd76bd7136044b8a"},{"author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"change_message_id":"f152a9acf6a101cbfdf04ea27d897ab12e591501","unresolved":false,"context_lines":[{"line_number":121,"context_line":"      buildConf ? {}"},{"line_number":122,"context_line":"      # name of the resulting derivation"},{"line_number":123,"context_line":"    , name"},{"line_number":124,"context_line":"      # name of the library to build and install: libName should"},{"line_number":125,"context_line":"      # be the same as the argument passed to -l in order to link"},{"line_number":126,"context_line":"      # against this library, i. e. the resulting library is"},{"line_number":127,"context_line":"      # installed to $out/lib/lib${libName}.{a, so}"},{"line_number":128,"context_line":"    , libName ? name"},{"line_number":129,"context_line":"      # Header files to install to $out/include which are also"},{"line_number":130,"context_line":"      # made available with -I during compilation as paths or"}],"source_content_type":"text/x-nix","patch_set":40,"id":"7c6fdda3_ccf8551c","line":127,"range":{"start_line":124,"start_character":3,"end_line":127,"end_character":51},"in_reply_to":"a6ffc904_17294c57","updated":"2021-04-20 10:17:25.000000000","message":"Clarified the documentation comment. `libName` is normative, not descriptive, so the wording here is inaccurate (for libraryFormDrv it\u0027s a different story of course).\n\nThe idea here is that you can have a differing `name` and `libName`: For `libschrift` which has `libschrift.a` in its `lib` dir, the (package) `name` would be libschrift (maybe `libschrift-0.10.0` even), but libName would be `schrift`.","commit_id":"29416f053560a10a9995c910cd76bd7136044b8a"},{"author":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"change_message_id":"a15f87ae3ab28af8a1a84abb8b7cbc1eb0b4a6dc","unresolved":true,"context_lines":[{"line_number":141,"context_line":"      # aggressive it means we don\u0027t have to specify or detect"},{"line_number":142,"context_line":"      # dependencies."},{"line_number":143,"context_line":"    , include ? []"},{"line_number":144,"context_line":"      # List of C source files to be compiled as paths or derivations."},{"line_number":145,"context_line":"    , srcs ? []"},{"line_number":146,"context_line":"      # Dependencies of this library. must be built with buildC.library"},{"line_number":147,"context_line":"      # or buildC.libraryFromDrv."}],"source_content_type":"text/x-nix","patch_set":40,"id":"11f4ffc3_19420c32","line":144,"range":{"start_line":144,"start_character":28,"end_line":144,"end_character":70},"updated":"2021-04-18 13:02:31.000000000","message":"compiled, as paths  (the comma changes meaning)","commit_id":"29416f053560a10a9995c910cd76bd7136044b8a"},{"author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"change_message_id":"f152a9acf6a101cbfdf04ea27d897ab12e591501","unresolved":false,"context_lines":[{"line_number":141,"context_line":"      # aggressive it means we don\u0027t have to specify or detect"},{"line_number":142,"context_line":"      # dependencies."},{"line_number":143,"context_line":"    , include ? []"},{"line_number":144,"context_line":"      # List of C source files to be compiled as paths or derivations."},{"line_number":145,"context_line":"    , srcs ? []"},{"line_number":146,"context_line":"      # Dependencies of this library. must be built with buildC.library"},{"line_number":147,"context_line":"      # or buildC.libraryFromDrv."}],"source_content_type":"text/x-nix","patch_set":40,"id":"ff10ae6b_d5854167","line":144,"range":{"start_line":144,"start_character":28,"end_line":144,"end_character":70},"in_reply_to":"11f4ffc3_19420c32","updated":"2021-04-20 10:17:25.000000000","message":"Done","commit_id":"29416f053560a10a9995c910cd76bd7136044b8a"},{"author":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"change_message_id":"a15f87ae3ab28af8a1a84abb8b7cbc1eb0b4a6dc","unresolved":true,"context_lines":[{"line_number":204,"context_line":"        includeDir \u003d runExecline \"${name}-include\" {} (["},{"line_number":205,"context_line":"          \"importas\" \"out\" \"out\""},{"line_number":206,"context_line":"          \"if\" [ bins.mkdir \"-p\" \"$out\" ]"},{"line_number":207,"context_line":"        ] ++ lib.concatMap (i:"},{"line_number":208,"context_line":"          let"},{"line_number":209,"context_line":"            targetName \u003d"},{"line_number":210,"context_line":"              if lib.isDerivation i"},{"line_number":211,"context_line":"              then i.name"},{"line_number":212,"context_line":"              else builtins.baseNameOf i;"},{"line_number":213,"context_line":"          in ["},{"line_number":214,"context_line":"          \"if\" [ bins.cp \"--reflink\u003dauto\" \"-rT\" i \"\\${out}/${targetName}\" ]"},{"line_number":215,"context_line":"        ]) include ++ ["},{"line_number":216,"context_line":"          \"exit\" \"0\""},{"line_number":217,"context_line":"        ]);"},{"line_number":218,"context_line":"        # deps, including libc if any"}],"source_content_type":"text/x-nix","patch_set":40,"id":"0319ecf9_6f2a061a","line":215,"range":{"start_line":207,"start_character":0,"end_line":215,"end_character":23},"updated":"2021-04-18 13:02:31.000000000","message":"instead of concating a (potentially too long argv) here, I’d construct a netencode list and pass it via the `stdin` argument of `runExecline`, then iterate over it via `forstdin -d \u0027\u0027` (empty string splits on netencode).\n\nsee https://code.tvl.fyi/tree/users/Profpatsch/netstring/default.nix?id\u003d10d8e1d66517d8e5ad86cec74e13f689e48a5efe#n3\nfor the functions and https://code.tvl.fyi/tree/tools/rust-crates-advisory/default.nix?id\u003d10d8e1d66517d8e5ad86cec74e13f689e48a5efe#n53 for an example.","commit_id":"29416f053560a10a9995c910cd76bd7136044b8a"},{"author":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"change_message_id":"a15f87ae3ab28af8a1a84abb8b7cbc1eb0b4a6dc","unresolved":true,"context_lines":[{"line_number":242,"context_line":"            \"importas\" \"out\" \"out\""},{"line_number":243,"context_line":"            \"if\" [ bins.mkdir \"-p\" \"\\${out}/lib\" ]"},{"line_number":244,"context_line":"            \"if\" [ bins.mkdir \"-p\" \"\\${out}/include\" ]"},{"line_number":245,"context_line":"            \"if\" [ bins.cp \"--reflink\u003dauto\" \"-rT\" includeDir \"\\${out}/include\" ]"},{"line_number":246,"context_line":"          ] ++ lib.optionals thisStatic ["},{"line_number":247,"context_line":"            \"if\" ([ compiler.ar \"rc\" \"${outLib}.a\" ] ++ objs)"},{"line_number":248,"context_line":"            \"if\" [ compiler.ranlib \"${outLib}.a\" ]"}],"source_content_type":"text/x-nix","patch_set":40,"id":"328c430f_c3994cb6","line":245,"range":{"start_line":245,"start_character":27,"end_line":245,"end_character":43},"updated":"2021-04-18 13:02:31.000000000","message":"nice","commit_id":"29416f053560a10a9995c910cd76bd7136044b8a"},{"author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"change_message_id":"f152a9acf6a101cbfdf04ea27d897ab12e591501","unresolved":false,"context_lines":[{"line_number":242,"context_line":"            \"importas\" \"out\" \"out\""},{"line_number":243,"context_line":"            \"if\" [ bins.mkdir \"-p\" \"\\${out}/lib\" ]"},{"line_number":244,"context_line":"            \"if\" [ bins.mkdir \"-p\" \"\\${out}/include\" ]"},{"line_number":245,"context_line":"            \"if\" [ bins.cp \"--reflink\u003dauto\" \"-rT\" includeDir \"\\${out}/include\" ]"},{"line_number":246,"context_line":"          ] ++ lib.optionals thisStatic ["},{"line_number":247,"context_line":"            \"if\" ([ compiler.ar \"rc\" \"${outLib}.a\" ] ++ objs)"},{"line_number":248,"context_line":"            \"if\" [ compiler.ranlib \"${outLib}.a\" ]"}],"source_content_type":"text/x-nix","patch_set":40,"id":"59d84861_9abc8195","line":245,"range":{"start_line":245,"start_character":27,"end_line":245,"end_character":43},"in_reply_to":"328c430f_c3994cb6","updated":"2021-04-20 10:17:25.000000000","message":"Ack","commit_id":"29416f053560a10a9995c910cd76bd7136044b8a"},{"author":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"change_message_id":"a15f87ae3ab28af8a1a84abb8b7cbc1eb0b4a6dc","unresolved":true,"context_lines":[{"line_number":254,"context_line":"              \"-o\" \"${outLib}.so\""},{"line_number":255,"context_line":"              \"${lib.getLib libc}/lib/crti.o\""},{"line_number":256,"context_line":"              \"${lib.getLib libc}/lib/crtn.o\""},{"line_number":257,"context_line":"            ] ++ objs ++ allLDFLAGS)"},{"line_number":258,"context_line":"          ]);"},{"line_number":259,"context_line":"        callTests \u003d ts: builtins.map"},{"line_number":260,"context_line":"          (t: let"}],"source_content_type":"text/x-nix","patch_set":40,"id":"f2af20f6_deda5712","line":257,"updated":"2021-04-18 13:02:31.000000000","message":"always keep in mind the argv exec limits for unbounded stuff.\n\nin `rules_haskell` we always sooner or later reach the limit for one or the other user. Some people have absurd closures, and especially for linker flags you need to pass transitively this quickly goes out of bounds.","commit_id":"29416f053560a10a9995c910cd76bd7136044b8a"},{"author":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"change_message_id":"a15f87ae3ab28af8a1a84abb8b7cbc1eb0b4a6dc","unresolved":true,"context_lines":[{"line_number":259,"context_line":"        callTests \u003d ts: builtins.map"},{"line_number":260,"context_line":"          (t: let"},{"line_number":261,"context_line":"            t\u0027 \u003d"},{"line_number":262,"context_line":"              if builtins.isFunction t"},{"line_number":263,"context_line":"              then t (buildConfOverrideable f buildConf)"},{"line_number":264,"context_line":"              else t;"},{"line_number":265,"context_line":"          in"}],"source_content_type":"text/x-nix","patch_set":40,"id":"d09dfce9_9b69ced7","line":262,"updated":"2021-04-18 13:02:31.000000000","message":"isFunction is a code smell imho, but could be valid here.","commit_id":"29416f053560a10a9995c910cd76bd7136044b8a"},{"author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"change_message_id":"f152a9acf6a101cbfdf04ea27d897ab12e591501","unresolved":true,"context_lines":[{"line_number":259,"context_line":"        callTests \u003d ts: builtins.map"},{"line_number":260,"context_line":"          (t: let"},{"line_number":261,"context_line":"            t\u0027 \u003d"},{"line_number":262,"context_line":"              if builtins.isFunction t"},{"line_number":263,"context_line":"              then t (buildConfOverrideable f buildConf)"},{"line_number":264,"context_line":"              else t;"},{"line_number":265,"context_line":"          in"}],"source_content_type":"text/x-nix","patch_set":40,"id":"e36b7fed_cbc965fb","line":262,"in_reply_to":"d09dfce9_9b69ced7","updated":"2021-04-20 10:17:25.000000000","message":"It is a convenience feature: I haven\u0027t really added an integrated test facility to buildC yet (like buildLisp has for example), so tests are just derivations built by buildC which depend on the actual library you are trying to build.\n\nIf you write your test as a function, you receive the “parent” derivation as an argument, so you don\u0027t have to have a lib.fix somewhere.\n\nThe whole test infrastructure could probably be improved, but my intention is currently to keep it as simple as possible, i. e. everything is a wrapper around buildC.library in the end.","commit_id":"29416f053560a10a9995c910cd76bd7136044b8a"},{"author":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"change_message_id":"a15f87ae3ab28af8a1a84abb8b7cbc1eb0b4a6dc","unresolved":true,"context_lines":[{"line_number":272,"context_line":"          inherit libName extra;"},{"line_number":273,"context_line":"          deps \u003d overriddenDeps;"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"          meta \u003d lib.optionalAttrs haveTests {"},{"line_number":276,"context_line":"            targets \u003d [ \"tests\" ];"},{"line_number":277,"context_line":"          } // meta;"},{"line_number":278,"context_line":"        } // lib.optionalAttrs haveTests {"},{"line_number":279,"context_line":"          tests \u003d runTests name (callTests tests);"},{"line_number":280,"context_line":"        };"}],"source_content_type":"text/x-nix","patch_set":40,"id":"247293ec_b07a35bf","line":277,"range":{"start_line":275,"start_character":0,"end_line":277,"end_character":20},"updated":"2021-04-18 13:02:31.000000000","message":"maybe add comment that this is for readTree discovery","commit_id":"29416f053560a10a9995c910cd76bd7136044b8a"},{"author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"change_message_id":"f152a9acf6a101cbfdf04ea27d897ab12e591501","unresolved":false,"context_lines":[{"line_number":272,"context_line":"          inherit libName extra;"},{"line_number":273,"context_line":"          deps \u003d overriddenDeps;"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"          meta \u003d lib.optionalAttrs haveTests {"},{"line_number":276,"context_line":"            targets \u003d [ \"tests\" ];"},{"line_number":277,"context_line":"          } // meta;"},{"line_number":278,"context_line":"        } // lib.optionalAttrs haveTests {"},{"line_number":279,"context_line":"          tests \u003d runTests name (callTests tests);"},{"line_number":280,"context_line":"        };"}],"source_content_type":"text/x-nix","patch_set":40,"id":"a860ed5a_0077e4f1","line":277,"range":{"start_line":275,"start_character":0,"end_line":277,"end_character":20},"in_reply_to":"247293ec_b07a35bf","updated":"2021-04-20 10:17:25.000000000","message":"Done","commit_id":"29416f053560a10a9995c910cd76bd7136044b8a"},{"author":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"change_message_id":"a15f87ae3ab28af8a1a84abb8b7cbc1eb0b4a6dc","unresolved":true,"context_lines":[{"line_number":369,"context_line":"    (lib.concatMap (t: ["},{"line_number":370,"context_line":"      # force tests to be built by referencing their outpath"},{"line_number":371,"context_line":"      \"if\" [ bins.test \"-e\" t ]"},{"line_number":372,"context_line":"    ]) tests ++ ["},{"line_number":373,"context_line":"      \"importas\" \"out\" \"out\""},{"line_number":374,"context_line":"      \"if\" [ bins.touch \"$out\" ]"},{"line_number":375,"context_line":"      \"exit\" \"0\""}],"source_content_type":"text/x-nix","patch_set":40,"id":"2c5cc23f_13fdedc0","line":372,"range":{"start_line":372,"start_character":4,"end_line":372,"end_character":17},"updated":"2021-04-18 13:02:31.000000000","message":"nit: whitespace binding rules confusing here","commit_id":"29416f053560a10a9995c910cd76bd7136044b8a"},{"author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"change_message_id":"f152a9acf6a101cbfdf04ea27d897ab12e591501","unresolved":true,"context_lines":[{"line_number":369,"context_line":"    (lib.concatMap (t: ["},{"line_number":370,"context_line":"      # force tests to be built by referencing their outpath"},{"line_number":371,"context_line":"      \"if\" [ bins.test \"-e\" t ]"},{"line_number":372,"context_line":"    ]) tests ++ ["},{"line_number":373,"context_line":"      \"importas\" \"out\" \"out\""},{"line_number":374,"context_line":"      \"if\" [ bins.touch \"$out\" ]"},{"line_number":375,"context_line":"      \"exit\" \"0\""}],"source_content_type":"text/x-nix","patch_set":40,"id":"7685bf12_e88b6096","line":372,"range":{"start_line":372,"start_character":4,"end_line":372,"end_character":17},"in_reply_to":"2c5cc23f_13fdedc0","updated":"2021-04-20 10:17:25.000000000","message":"Better now?","commit_id":"29416f053560a10a9995c910cd76bd7136044b8a"},{"author":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"change_message_id":"a15f87ae3ab28af8a1a84abb8b7cbc1eb0b4a6dc","unresolved":true,"context_lines":[{"line_number":450,"context_line":"          else builtins.throw \"${drv.name} doesn\u0027t support this buildConf: ${lib.generators.toPretty {} buildConf}\";"},{"line_number":451,"context_line":"      } // args);"},{"line_number":452,"context_line":""},{"line_number":453,"context_line":"  musl \u003d lib.fix (self:"},{"line_number":454,"context_line":"    libraryFromDrv pkgs.musl {"},{"line_number":455,"context_line":"      libName \u003d \"c\";"},{"line_number":456,"context_line":"      dynamic-linker \u003d \"${lib.getLib self}/lib/ld-musl-x86_64.so.1\";"}],"source_content_type":"text/x-nix","patch_set":40,"id":"832b9a7f_8ef18770","line":453,"range":{"start_line":453,"start_character":8,"end_line":453,"end_character":23},"updated":"2021-04-18 13:02:31.000000000","message":"ok wow lol","commit_id":"29416f053560a10a9995c910cd76bd7136044b8a"},{"author":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"change_message_id":"a15f87ae3ab28af8a1a84abb8b7cbc1eb0b4a6dc","unresolved":false,"context_lines":[{"line_number":462,"context_line":"      supportBuildConf \u003d { static, ... }: !static;"},{"line_number":463,"context_line":"      dynamic-linker \u003d \"${lib.getLib self}/lib/ld-linux-x86-64.so.2\";"},{"line_number":464,"context_line":""},{"line_number":465,"context_line":"      # A bit of a hack: we magically also link libm.so for glibc."},{"line_number":466,"context_line":"      # Rationale for this is to make the interface as compatible"},{"line_number":467,"context_line":"      # between musl and glibc as possible. Musl doesn\u0027t have the c/m"},{"line_number":468,"context_line":"      # split so a pseudo package for libm wouldn\u0027t make sense"},{"line_number":469,"context_line":"      # overall."},{"line_number":470,"context_line":"      extraLDFLAGS \u003d [ \"-lm\" ];"},{"line_number":471,"context_line":""},{"line_number":472,"context_line":"      # Alternative to this:"},{"line_number":473,"context_line":"      # math \u003d libraryFromDrv self {"}],"source_content_type":"text/x-nix","patch_set":40,"id":"5b3a806b_9a15bf96","line":470,"range":{"start_line":465,"start_character":0,"end_line":470,"end_character":31},"updated":"2021-04-18 13:02:31.000000000","message":"sounds reasonable to me","commit_id":"29416f053560a10a9995c910cd76bd7136044b8a"}],"nix/buildC/selfTests/freestanding.nix":[{"author":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"change_message_id":"a15f87ae3ab28af8a1a84abb8b7cbc1eb0b4a6dc","unresolved":true,"context_lines":[{"line_number":1,"context_line":"{ depot, pkgs, lib, ... }:"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Note: freestanding support is still very limited in buildC,"},{"line_number":4,"context_line":"# so this is a snapshot of what is working already."},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"let"},{"line_number":7,"context_line":"  inherit (depot.nix)"}],"source_content_type":"text/x-nix","patch_set":40,"id":"1950e68f_9165d6e8","line":4,"range":{"start_line":3,"start_character":0,"end_line":4,"end_character":51},"updated":"2021-04-18 13:02:31.000000000","message":"what’s a freestanding","commit_id":"29416f053560a10a9995c910cd76bd7136044b8a"},{"author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"change_message_id":"f152a9acf6a101cbfdf04ea27d897ab12e591501","unresolved":true,"context_lines":[{"line_number":1,"context_line":"{ depot, pkgs, lib, ... }:"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Note: freestanding support is still very limited in buildC,"},{"line_number":4,"context_line":"# so this is a snapshot of what is working already."},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"let"},{"line_number":7,"context_line":"  inherit (depot.nix)"}],"source_content_type":"text/x-nix","patch_set":40,"id":"28e8b00e_e2436722","line":4,"range":{"start_line":3,"start_character":0,"end_line":4,"end_character":51},"in_reply_to":"1950e68f_9165d6e8","updated":"2021-04-20 10:17:25.000000000","message":"something is freestanding if it doesn\u0027t depend on anything, i. e. not even libc (although you can still depend on the syscall interface I guess).\n\nI\u0027ll probably just throw this away since it isn\u0027t something I\u0027m interested in pursuing further.","commit_id":"29416f053560a10a9995c910cd76bd7136044b8a"}]}
