| 5 Jan 2024 |
@qbit:tapenet.org | like when building a derivation? | 15:12:29 |
Vladislav Vasilev | Originally, GOPROXY was off, but I setted it to export GOPROXY=proxy.golang.org | 15:12:36 |
Vladislav Vasilev | In reply to @qbit:tapenet.org like when building a derivation? yep | 15:12:41 |
@qbit:tapenet.org | builds happen sandboxed - so no network | 15:12:42 |
Vladislav Vasilev | I turned off sandbox | 15:12:55 |
@qbit:tapenet.org | i think it's more than the sandbox that blocks the network | 15:13:20 |
Vladislav Vasilev | Or | 15:13:23 |
@qbit:tapenet.org | you don't want network access at all | 15:13:25 |
Vladislav Vasilev | One moment | 15:13:28 |
Vladislav Vasilev | Probably you are right | 15:13:38 |
@qbit:tapenet.org | because it can result in non-reproducible things | 15:13:42 |
Vladislav Vasilev | So, go retrieving go modules from the internet. I always thought that sometimes it's necessary to have an access to internet | 15:14:59 |
@qbit:tapenet.org | the way the buildGoModule stuff works is it first builds a list of vendor'd deps, (vendorHash) then you supply that hash to your buildGoModule derivation | 15:15:48 |
Vladislav Vasilev | But, if I want to add it to nixpkgs repo, I should solve it anyway. I need to prefetch some packages or what? | 15:16:24 |
Vladislav Vasilev | Hm | 15:16:32 |
@qbit:tapenet.org | what i am describing does the "pre-fetch" so to speak | 15:16:42 |
Vladislav Vasilev | Here is a strange package btw | 15:16:42 |
@qbit:tapenet.org | how so? | 15:17:04 |
Vladislav Vasilev | For example, first trouble that I got was hard coded go version | 15:17:47 |
Vladislav Vasilev | So, buildGo120Module using 1.20.12 version, but package requiring from Makefile exactly 1.20 version | 15:18:17 |
@qbit:tapenet.org | you shouldn't need to use the makefile | 15:18:37 |
@qbit:tapenet.org | link to the repo in question? | 15:18:50 |
Vladislav Vasilev | Probably, you can quickly help me, because I spent a lot of time with that
I have this default.nix config:
{ stdenv
, pkgs
, lib
}: pkgs.buildGoModule rec {
name = "neutrond";
version = "v2.0.0";
src = (fetchTarball {
url = "https://github.com/neutron-org/neutron/archive/refs/tags/v2.0.0.tar.gz";
sha256 = "sha256:04na3ympacdqhk8wbfcq2hk5i2d905ac4fzhgzvf4192nyb0xsin";
});
vendorHash = "sha256-uLInKbuL886cfXCyQvIDZJHUC8AK9fR39yNBHDO+Qzc=";
# vendorHash = lib.fakeSha256;
doCheck = false;
meta = with lib; {
description = "Neutron node";
longDescription = ''
Neutron node to interact with neutron blockchain
'';
homepage = "https://github.com/neutron-org/neutron";
license = licenses.asl20; # Apache license
maintainers = with maintainers; [
pr0n00gler
foxpy
];
platforms = platforms.all;
};
nativeBuildInputs = with pkgs; [
patchelf
git
which
gnumake
];
installPhase = ''
mkdir -p $out/bin
go build -mod=readonly -o $out/bin/neutrond ./cmd/neutrond
'';
}
So, repo https://github.com/neutron-org/neutron/ have a go.mod, which have listed go modules to prefetch. All that stuff we need to build cmd/neutrond dir. But, inside of main.go here we have module that we should fetch again. So, I have troubles with that "post-fetch" during building
| 15:23:07 |
Vladislav Vasilev | * Probably, you can quickly help me, because I spent a lot of time with that
I have this default.nix config:
{ stdenv
, pkgs
, lib
}: pkgs.buildGoModule rec {
name = "neutrond";
version = "v2.0.0";
src = (fetchTarball {
url = "https://github.com/neutron-org/neutron/archive/refs/tags/v2.0.0.tar.gz";
sha256 = "sha256:04na3ympacdqhk8wbfcq2hk5i2d905ac4fzhgzvf4192nyb0xsin";
});
vendorHash = "sha256-uLInKbuL886cfXCyQvIDZJHUC8AK9fR39yNBHDO+Qzc=";
# vendorHash = lib.fakeSha256;
doCheck = false;
meta = with lib; {
description = "Neutron node";
longDescription = ''
Neutron node to interact with neutron blockchain
'';
homepage = "https://github.com/neutron-org/neutron";
license = licenses.asl20; # Apache license
maintainers = with maintainers; [
pr0n00gler
foxpy
];
platforms = platforms.all;
};
nativeBuildInputs = with pkgs; [
patchelf
git
which
gnumake
];
installPhase = ''
mkdir -p $out/bin
go build -mod=readonly -o $out/bin/neutrond ./cmd/neutrond
'';
}
So, repo https://github.com/neutron-org/neutron/ have a go.mod, which have listed go modules to prefetch. All that stuff we need to build cmd/neutrond dir. But, inside of main.go here we have module that forcing us to fetch other modules during build. So, I have troubles with that "post-fetch" during building
| 15:24:15 |
Vladislav Vasilev | Of course, if I need to skip post fetching and skip that needness of fetching additional packages, I should list all deps in go.mod, as I suppose | 15:26:07 |
Vladislav Vasilev | Smells like this repo need cleaning | 15:26:43 |
@qbit:tapenet.org | so your vendorHash means you are already getting the deps | 15:26:51 |
@qbit:tapenet.org | you shouldn't need to specify an installPhase | 15:27:02 |
Vladislav Vasilev | nativeBuildInputs, as I suppose, also | 15:27:27 |
Vladislav Vasilev | What is a vendor hash at all ? It's nix-hash for src + fetched content aka go modules ? | 15:28:15 |