gomod2nix icon indicating copy to clipboard operation
gomod2nix copied to clipboard

error: unable to execute /nix/store/goo-bar-0.0.1/bin/foo No such file or directory

Open milosgajdos opened this issue 1 year ago • 5 comments

I have the following flake that attempts to use this module:

{
  description = "A basic gomod2nix flake";

  inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
  inputs.flake-utils.url = "github:numtide/flake-utils";
  inputs.gomod2nix.url = "github:nix-community/gomod2nix";
  inputs.gomod2nix.inputs.nixpkgs.follows = "nixpkgs";
  inputs.gomod2nix.inputs.flake-utils.follows = "flake-utils";

  outputs = { self, nixpkgs, flake-utils, gomod2nix }:
    (flake-utils.lib.eachDefaultSystem
      (system:
        let
          pkgs = nixpkgs.legacyPackages.${system};

          # The current default sdk for macOS fails to compile go projects, so we use a newer one for now.
          # This has no effect on other platforms.
          callPackage = pkgs.darwin.apple_sdk_11_0.callPackage or pkgs.callPackage;
        in
        {
          packages.default = callPackage ./. {
            inherit (gomod2nix.legacyPackages.${system}) buildGoApplication;
          };
          devShells.default = callPackage ./shell.nix {
            inherit (gomod2nix.legacyPackages.${system}) mkGoEnv gomod2nix;
          };
        })
    );
}

Here is the default.nix

{ pkgs ? (
    let
      inherit (builtins) fetchTree fromJSON readFile;
      inherit ((fromJSON (readFile ./flake.lock)).nodes) nixpkgs gomod2nix;
    in
    import (fetchTree nixpkgs.locked) {
      overlays = [
        (import "${fetchTree gomod2nix.locked}/overlay.nix")
      ];
    }
  )
, buildGoApplication ? pkgs.buildGoApplication
}:

buildGoApplication {
  pname = "foo";
  version = "0.0.1";
  pwd = ./.;
  src = ./.;
  modules = ./gomod2nix.toml;
  doCheck = false;
}

When I try to run nix run I get an error

$ nix run . -- -help
error: unable to execute '/nix/store/pypjdy02h7ydx9zsccng8a7vbay2j70y-foo-0.0.1/bin/foo': No such file or directory

Running nix develop and nix shell work fine. Equally I'd expect nix build to generate the binary but the result is linked to an empty directory. I'm sure I'm missing something but I'm not sure what.

This is a simple project that has main.go file in the root of it.

milosgajdos avatar Dec 24 '23 18:12 milosgajdos

What does your go.mod file look like, does it the module end in foo?

hmajid2301 avatar Feb 23 '24 17:02 hmajid2301

@hmajid2301 ah, sorry for the late reply -- I was away for a while and my GH notifications got outta control in the meantime. I'm only just getting through them now.

What does your go.mod file look like, does the module end in foo?

In this specific case, yes the module name did indeed end in foo, but I'm now not sure what was going on; my memory is fading. I'm now battling a different issue: how to build Go projects that embed static files 😓 (using this flake)

Log
$ nix run . -- -help
path '.../src/github.com/milosgajdos/embeviz/ui' does not contain a 'flake.nix', searching up
warning: Git tree '.../src/github.com/milosgajdos/embeviz' is dirty
error: builder for '/nix/store/iiivb74x8kp3s1zza2x6paqllrrqrclg-embeviz-0.0.1.drv' failed with exit code 1;
       last 9 log lines:
       > Running phase: unpackPhase
       > unpacking source archive /nix/store/sjvp7350vd8q962329q2w1b9h8w20skb-z8jqan9hfl6j19id7g7cl1gmpi1jmyw1-source
       > source root is z8jqan9hfl6j19id7g7cl1gmpi1jmyw1-source
       > Running phase: patchPhase
       > Running phase: updateAutotoolsGnuConfigScriptsPhase
       > Running phase: configurePhase
       > Running phase: buildPhase
       > Building subPackage .
       > main.go:40:12: pattern ui/dist/*: no matching files found
       For full logs, run 'nix log /nix/store/iiivb74x8kp3s1zza2x6paqllrrqrclg-embeviz-0.0.1.drv'.

But that's a whole another issue I concur!

milosgajdos avatar Apr 08 '24 17:04 milosgajdos

Yeh no idea about embedding static files :cry:. I had the same issue as you with the module name!

hmajid2301 avatar Apr 08 '24 17:04 hmajid2301

How did you resolve it? The original repo that led to this report is on a machine I no longer have access to

milosgajdos avatar Apr 08 '24 18:04 milosgajdos

I had to match the name here https://gitlab.com/hmajid2301/optinix/-/blob/main/default.nix?ref_type=heads#L16 to the one in go.mod that fixed what was causing your original issue.

hmajid2301 avatar Apr 08 '24 19:04 hmajid2301