| 30 Apr 2026 |
alexfmpe | * huh the fact it works on gcc might be a bug actually?
https://stackoverflow.com/questions/64610024/duplicate-symbols-with-global-template-variable-using-clang | 20:48:56 |
alexfmpe | are c-sources always exposed globally by GHC? can any two packages out there cause these collisions? | 20:51:31 |
alexfmpe | if so, should we, I dunno, patch the vincent package to rename the symbol? | 20:52:23 |
alexfmpe | In reply to @alexfmpe:matrix.org if so, should we, I dunno, patch the vincent package to rename the symbol? FWIW this worked locally | 22:18:17 |
winston | heya, I only just saw the recent-ish merge of the microhs changes, thanks for the work on that! ❤️
I think I've read up on the PR, but will hugs be the way microhs is getting build in the foreseeable future? I'm trying to add an override to get the mhseval binary to build, and was trying to understand the build process. Am I seeing this correctly that building with hugs currently closes off the possibility of building mhseval/mhseval.js?
https://github.com/augustss/MicroHs/blob/master/mhs/MhsEval.hs | 22:54:07 |
Alex | Yes, building with Hugs is currently the preferred way because it does not depend on any pre-generated code.
The stage 1 build uses a pre-existing mhs (usually runhugs wrapped mhs) with make.
The stage 2 build uses the stage 1 mhs with mcabal.
It's not immediately obvious to me how exactly mhseval.js is generated, but is there any reason you can't generate it using the stage 1 or stage 2 compiler? | 23:37:10 |
Alex | Since it seems to be a separate output, I would recommend using a different derivation instead of overriding the existing ones. | 23:39:01 |
winston | I was trying to get it to work via
mhseval = pkgs.haskell.compiler.microhs.overrideAttrs (prevAttrs: {
microhs-stage1 = prevAttrs.passthru.microhs-stage1.overrideAttrs {
nativeBuildInputs = [ pkgs.breakpointHook ];
postBuild = ''
make bin/mhseval
'';
postInstall = ''
cp bin/mhseval $out/bin/mhseval
'';
};
});
and didn't manage to get a useful output that way, I did try to copy it from stage1 to stage2 later, but I've changed a bunch of code around this
| 23:39:42 |
winston | currently I'm just doing a mkDerivation inheriting from src etc from pkgs.haskell.compiler.microhs, then postInstall'ing mhseval, so that works | 23:40:24 |
Alex | Is your ultimate desired hostPlatform one of the JS platforms? | 23:40:37 |
winston | not doing JS at the minute, so I haven't tried that yet, I just anticipate that there'll be some interest for that as well | 23:41:07 |
Alex | The other problem here is that mhseval is not in the Cabal file, so naturally the stage 2 build won't include it either. | 23:48:31 |
Alex | Unless JS is supported as a buildPlatform, I think it might be best to first make microhs compatible with cross.
I'm not sure what's missing for cross, but I suspect it has to do with the targetPlatform not being passed to the build. | 23:51:42 |
| 1 May 2026 |
Alex | Well, cross isn't terribly difficult. I've just gotten it working. | 00:46:32 |
| VegOwOtenks joined the room. | 14:58:29 |
VegOwOtenks | I'm starting out with nix and having trouble with system library fiddling. GHC cannot load the shared object for z3, though the C headers are found just fine.
This is my flake definition:
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, flake-utils }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs { inherit system; };
in {
devShells.default = with pkgs; mkShell
{
packages =
[ haskell.compiler.ghc914
z3
stack
libllvm
libclang
];
};
}
);
}
| 15:02:18 |
alexfmpe | I dunno about flakes, but nix-build -A haskellPackages.smtlib-backends-z3 on nixpkgs master works just fine on my macos | 15:04:23 |
alexfmpe | where hackage-packages.nix shows z3 on librarySystemDepends of smtlib-backends-z3 | 15:05:11 |
alexfmpe | ah, same for haskellPackages.z3 | 15:06:27 |
alexfmpe | huh, isn't packages for executables only? | 15:07:47 |
alexfmpe | https://nixos.org/manual/nixpkgs/stable/#sec-pkgs-mkShell | 15:07:48 |
alexfmpe | * https://nixos.org/manual/nixpkgs/stable/#sec-pkgs-mkShell-attributes | 15:07:56 |
alexfmpe | try inputsFrom | 15:08:04 |
VegOwOtenks | Thanks! I will try inputsFrom, I don't have any clue about the differences. | 15:12:54 |
alexfmpe | my link should explain it | 15:15:50 |
alexfmpe | * my link above explains them | 15:15:59 |
alexfmpe | you probably want the same for libllvm and libclang | 15:17:55 |
alexfmpe | can we improve the whole security_tool issue for mac builds?
https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/haskell-modules/configuration-darwin.nix is littered with
dontCheck that, well, makes us not run tests
substituteInPlace System/X509/MacOS.hs --replace-fail security /usr/bin/security that breaks sandbox builds
I also run into it for some packages on darwin pkgsStatic builds somehow due to the iserv-proxy thing
statistics> [33 of 51] Compiling Statistics.Types ( Statistics/Types.hs, dist/build/Statistics/Types.o )
statistics> iserv-proxy: Uncaught exception ghc-internal:GHC.Internal.IO.Exception.IOException:
statistics>
statistics> /homeless-shelter/Library/Frameworks/Security.framework/Security: withBinaryFile: does not exist (No such file or directory)
statistics>
statistics> HasCallStack backtrace:
statistics> ioError, called at libraries/ghc-internal/src/GHC/Internal/Foreign/C/Error.hs:291:5 in ghc-internal:GHC.Internal.Foreign.C.Error
statistics>
statistics> <no location info>: error: External interpreter terminated (1)
| 16:45:24 |
alexfmpe | * can we improve the whole security_tool issue for mac builds?
https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/haskell-modules/configuration-darwin.nix is littered with
dontCheck that, well, makes us not run tests
substituteInPlace System/X509/MacOS.hs --replace-fail security /usr/bin/security that breaks sandbox builds
I also run into it for some packages on darwin pkgsStatic.haskellPackages builds somehow via iserv-proxy
statistics> [33 of 51] Compiling Statistics.Types ( Statistics/Types.hs, dist/build/Statistics/Types.o )
statistics> iserv-proxy: Uncaught exception ghc-internal:GHC.Internal.IO.Exception.IOException:
statistics>
statistics> /homeless-shelter/Library/Frameworks/Security.framework/Security: withBinaryFile: does not exist (No such file or directory)
statistics>
statistics> HasCallStack backtrace:
statistics> ioError, called at libraries/ghc-internal/src/GHC/Internal/Foreign/C/Error.hs:291:5 in ghc-internal:GHC.Internal.Foreign.C.Error
statistics>
statistics> <no location info>: error: External interpreter terminated (1)
| 16:45:47 |
alexfmpe | huh, wait, maybe that's not the same "security" ? hard to tell with case insensitive system | 16:47:08 |