gogo-modulessodium

Golang no packages found for open file sodium


I'm trying to use sodium library in golang, module github.com/jamesruan/sodium. After imported it I added it to go.work file, otherwise nothing works and I really can't understand why.

go.work: go 1.23.0

use (
    .
    ..\Users\t.piccinini\go\pkg\mod\github.com\jamesruan\sodium@v1.0.14
)

BUT, now I have the error

No packages found for open file :\Users\t.piccinini\go\pkg\mod\github.com\jamesruan\sodium@v1.0.14\box.go.
This file is ignored by your gopls build

in every file excluded sodium.go into sodium@v1.0.14 in which this file works fine. Maybe if I copy the library locally I can resolve the error, but I don't want cause I think it's a waste of time and memory cause I don't want modify packages.

I need to import box.go and any other file in sodium@v1.0.14 to use functions of encryption and decryption. Actually with that error VSCode doesn't recognized methods like SecretBox, exc... giving undefined

cyphertext := sodium.Bytes(plaintext).SecretBox(
    sodium.SecretBoxNonce{nonce},
    sodium.SecretBoxKey{k})

Where is the error? What am I doing wrong? Thanks you in advance

Here is my go.mod file

module GoPeerNodePubSubKDHT
go 1.23.0

require (
    github.com/ipfs/go-cid v0.4.1
    github.com/ipfs/go-datastore v0.6.0
    github.com/jamesruan/sodium v1.0.14
    github.com/joho/godotenv v1.5.1
    github.com/libp2p/go-libp2p v0.36.3
    github.com/libp2p/go-libp2p-kad-dht v0.26.1
    github.com/libp2p/go-libp2p-pubsub v0.12.0
    github.com/multiformats/go-multiaddr v0.13.0
    github.com/multiformats/go-multihash v0.2.3
)
require (
    github.com/benbjohnson/clock v1.3.5 // indirect
    github.com/beorn7/perks v1.0.1 // indirect
    github.com/cespare/xxhash/v2 v2.3.0 // indirect
    github.com/containerd/cgroups v1.1.0 // indirect
    github.com/coreos/go-systemd/v22 v22.5.0 // indirect
    github.com/davecgh/go-spew v1.1.1 // indirect
    github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect
    github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect
    github.com/docker/go-units v0.5.0 // indirect
    github.com/elastic/gosigar v0.14.3 // indirect
    github.com/flynn/noise v1.1.0 // indirect
    github.com/francoispqt/gojay v1.2.13 // indirect
    github.com/go-logr/logr v1.4.2 // indirect
    github.com/go-logr/stdr v1.2.2 // indirect
    github.com/go-task/slim-sprig/v3 v3.0.0 // indirect
    github.com/godbus/dbus/v5 v5.1.0 // indirect
    github.com/gogo/protobuf v1.3.2 // indirect
    github.com/google/gopacket v1.1.19 // indirect
    github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8 // indirect
    github.com/google/uuid v1.6.0 // indirect
    github.com/gorilla/websocket v1.5.3 // indirect
    github.com/hashicorp/errwrap v1.1.0 // indirect
    github.com/hashicorp/go-multierror v1.1.1 // indirect
    github.com/hashicorp/golang-lru v1.0.2 // indirect
    github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
    github.com/huin/goupnp v1.3.0 // indirect
    github.com/ipfs/boxo v0.21.0 // indirect
    github.com/ipfs/go-log v1.0.5 // indirect
    github.com/ipfs/go-log/v2 v2.5.1 // indirect
    github.com/ipld/go-ipld-prime v0.21.0 // indirect
    github.com/jackpal/go-nat-pmp v1.0.2 // indirect
    github.com/jbenet/go-temp-err-catcher v0.1.0 // indirect
    github.com/jbenet/goprocess v0.1.4 // indirect
    github.com/klauspost/compress v1.17.9 // indirect
    github.com/klauspost/cpuid/v2 v2.2.8 // indirect
    github.com/koron/go-ssdp v0.0.4 // indirect
    github.com/libp2p/go-buffer-pool v0.1.0 // indirect
    github.com/libp2p/go-cidranger v1.1.0 // indirect
    github.com/libp2p/go-flow-metrics v0.1.0 // indirect
    github.com/libp2p/go-libp2p-asn-util v0.4.1 // indirect
    github.com/libp2p/go-libp2p-kbucket v0.6.3 // indirect
    github.com/libp2p/go-libp2p-record v0.2.0 // indirect
    github.com/libp2p/go-libp2p-routing-helpers v0.7.4 // indirect
    github.com/libp2p/go-msgio v0.3.0 // indirect
    github.com/libp2p/go-nat v0.2.0 // indirect
    github.com/libp2p/go-netroute v0.2.1 // indirect
    github.com/libp2p/go-reuseport v0.4.0 // indirect
    github.com/libp2p/go-yamux/v4 v4.0.1 // indirect
    github.com/libp2p/zeroconf/v2 v2.2.0 // indirect
    github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd // indirect
    github.com/mattn/go-isatty v0.0.20 // indirect
    github.com/miekg/dns v1.1.62 // indirect
    github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b // indirect
    github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc // indirect
    github.com/minio/sha256-simd v1.0.1 // indirect
    github.com/mr-tron/base58 v1.2.0 // indirect
    github.com/multiformats/go-base32 v0.1.0 // indirect
    github.com/multiformats/go-base36 v0.2.0 // indirect
    github.com/multiformats/go-multiaddr-dns v0.3.1 // indirect
    github.com/multiformats/go-multiaddr-fmt v0.1.0 // indirect
    github.com/multiformats/go-multibase v0.2.0 // indirect
    github.com/multiformats/go-multicodec v0.9.0 // indirect
    github.com/multiformats/go-multistream v0.5.0 // indirect
    github.com/multiformats/go-varint v0.0.7 // indirect
    github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
    github.com/onsi/ginkgo/v2 v2.20.0 // indirect
    github.com/opencontainers/runtime-spec v1.2.0 // indirect
    github.com/opentracing/opentracing-go v1.2.0 // indirect
    github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 // indirect
    github.com/pion/datachannel v1.5.8 // indirect
    github.com/pion/dtls/v2 v2.2.12 // indirect
    github.com/pion/ice/v2 v2.3.34 // indirect
    github.com/pion/interceptor v0.1.30 // indirect
    github.com/pion/logging v0.2.2 // indirect
    github.com/pion/mdns v0.0.12 // indirect
    github.com/pion/randutil v0.1.0 // indirect
    github.com/pion/rtcp v1.2.14 // indirect
    github.com/pion/rtp v1.8.9 // indirect
    github.com/pion/sctp v1.8.33 // indirect
    github.com/pion/sdp/v3 v3.0.9 // indirect
    github.com/pion/srtp/v2 v2.0.20 // indirect
    github.com/pion/stun v0.6.1 // indirect
    github.com/pion/transport/v2 v2.2.10 // indirect
    github.com/pion/turn/v2 v2.1.6 // indirect
    github.com/pion/webrtc/v3 v3.3.0 // indirect
    github.com/pkg/errors v0.9.1 // indirect
    github.com/pmezard/go-difflib v1.0.0 // indirect
    github.com/polydawn/refmt v0.89.0 // indirect
    github.com/prometheus/client_golang v1.20.0 // indirect
    github.com/prometheus/client_model v0.6.1 // indirect
    github.com/prometheus/common v0.55.0 // indirect
    github.com/prometheus/procfs v0.15.1 // indirect
    github.com/quic-go/qpack v0.4.0 // indirect
    github.com/quic-go/quic-go v0.46.0 // indirect
    github.com/quic-go/webtransport-go v0.8.0 // indirect
    github.com/raulk/go-watchdog v1.3.0 // indirect
    github.com/sirupsen/logrus v1.9.3
    github.com/spaolacci/murmur3 v1.1.0 // indirect
    github.com/stretchr/testify v1.9.0 // indirect
    github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1 // indirect
    github.com/wlynxg/anet v0.0.4 // indirect
    go.opencensus.io v0.24.0 // indirect
    go.opentelemetry.io/otel v1.27.0 // indirect
    go.opentelemetry.io/otel/metric v1.27.0 // indirect
    go.opentelemetry.io/otel/trace v1.27.0 // indirect
    go.uber.org/dig v1.18.0 // indirect
    go.uber.org/fx v1.22.2 // indirect
    go.uber.org/mock v0.4.0 // indirect
    go.uber.org/multierr v1.11.0 // indirect
    go.uber.org/zap v1.27.0 // indirect
    golang.org/x/crypto v0.26.0 // indirect
    golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa // indirect
    golang.org/x/mod v0.20.0 // indirect
    golang.org/x/net v0.28.0 // indirect
    golang.org/x/sync v0.8.0 // indirect
    golang.org/x/sys v0.24.0 // indirect
    golang.org/x/text v0.17.0 // indirect
    golang.org/x/tools v0.24.0 // indirect
    gonum.org/v1/gonum v0.15.0 // indirect
    google.golang.org/protobuf v1.34.2
    gopkg.in/yaml.v3 v3.0.1 // indirect
    lukechampine.com/blake3 v1.3.0 // indirect
)

Solution

  • For all newcomers who will fall in the error.

    libsodium is a package contains C libraries. To make it fully works in go programs we need to install in windows MSYS2 and GCC following this guide https://www.msys2.org/

    Then we need to install pkg-config and libsodium under MSYS2 using these commands on MSYS2 cli

    pacman -S pkg-config
    pacman -S mingw-w64-x86_64-libsodium
    

    After that we have to add mingw64/bin and usr/bin in environment variable path, usually installed in these folders:

    C:\msys64\mingw64\bin
    C:\msys64\usr\bin
    

    And now all should works fine!