Siddarth Kumar 7613de74ae
Fix integration tests for MacOS (#20248)
With go 1.20 its necessary to pass `lresolv` flag when building c-archives and `netgo` for networking on MacOS.
This was the primary reason why integration tests were failing.
ref 
-> https://github.com/golang/go/issues/58416
-> https://github.com/golang/go/issues/58159

This commit adds those flags to the derivation which builds status-go-library for integration tests and fixes the missing symbol crash.
2024-05-29 21:23:24 +05:30

38 lines
1.1 KiB
Nix

{ lib, stdenv, meta, source, buildGoPackage }:
buildGoPackage {
pname = source.repo;
version = "${source.cleanVersion}-${source.shortRev}";
inherit meta;
inherit (source) src goPackagePath;
phases = ["unpackPhase" "configurePhase" "buildPhase"];
# https://pkg.go.dev/net#hdr-Name_Resolution
# https://github.com/status-im/status-mobile/issues/19736
# https://github.com/status-im/status-mobile/issues/19581
# TODO: try removing when go is upgraded to 1.22
GODEBUG = "netdns=cgo+2";
preBuild = ''
pushd go/src/$goPackagePath
go run cmd/library/*.go > $NIX_BUILD_TOP/main.go
popd
'';
# Build the Go library
# ld flags and netgo tag are necessary for integration tests to work on MacOS
# https://github.com/status-im/status-mobile/issues/20135
buildPhase = ''
runHook preBuild
go build \
-buildmode='c-archive' \
${lib.optionalString stdenv.isDarwin "-ldflags=-extldflags=-lresolv"} \
-tags='gowaku_skip_migrations gowaku_no_rln ${lib.optionalString stdenv.isDarwin "netgo"}' \
-o "$out/libstatus.a" \
$NIX_BUILD_TOP/main.go
runHook postBuild
'';
}