Solved make: don't know how to make gomod-vendor

I'm following the instruction on Porters Handbook to create a very simple port for a Go application at https://docs.freebsd.org/en/books/porters-handbook/book/#using-go. I'm stuck at the section where it says to run make gomod-vendor. It's failing, stating that it doesn't know how to do that.

Code:
make gomod-vendor
make: don't know how to make gomod-vendor. Stop

I have the proper entries in the Makefile (it's exactly a copy/paste from the documentation mentioned)

Code:
PORTNAME=       kaspad
DISTVERSIONPREFIX=    v
DISTVERSION=    0.12.17
CATEGORIES=     net-p2p

MAINTAINER=     ports@FreeBSD.org
COMMENT=        Reference full node Kaspa implementation written in Go
WWW=            https://github.com/kaspanet/kaspad/

LICENSE=        ISCL
LICENSE_FILE=   ${WRKSRC}/LICENSE

USES=           go:modules
GO_MODULE=        github.com/kaspanet/kaspad

PLIST_FILES=    bin/kaspad \
                bin/genkeypair \
                bin/kaspactl \
                bin/kaspaminer \
                bin/kaspawallet

.include <bsd.port.mk>

I also made sure I have ports-mgmt/modules2tuple installed.


pkg info -x modules2tuple
modules2tuple-2.2.4_14


This has worked for me in the past, but I don't know what's changed. I tried it on two systems, one that I've used for years to create ports, and a new fresh installation.
 
I tried commenting GO_MODULE and make gomod-vendor seem to run but there is issues fetching these programs so I think they are outdated or something.
 
from the porting manual: "If the "easy" way is not adequate or more control over dependencies is needed, the full porting process is described below."


what happens if you just do make ?
 
from the porting manual: "If the "easy" way is not adequate or more control over dependencies is needed, the full porting process is described below."


what happens if you just do make ?

If I run make as is , it fails:
Code:
~/Documents/Work/ports/Wallets/net-p2p/kaspa $ make
===>   NOTICE:

The kaspad port currently does not have a maintainer. As a result, it is
more likely to have unresolved issues, not be up-to-date, or even be removed in
the future. To volunteer to maintain this port, please create an issue at:

https://bugs.freebsd.org/bugzilla

More information about port maintainership is available at:

https://docs.freebsd.org/en/articles/contributing/#ports-contributing

===>  License ISCL accepted by the user
===>   kaspad-0.12.17 depends on file: /usr/local/sbin/pkg - found
===>   kaspad-0.12.17 depends on file: /usr/local/bin/go121 - found
===>   kaspad-0.12.17 depends on package: ca_root_nss>0 - found
===> Fetching all distfiles required by kaspad-0.12.17 for building
===> Fetching github.com/kaspanet/kaspad dependencies
# get https://proxy.golang.org/github.com/pkg/errors/@v/v0.9.1.mod
# get https://proxy.golang.org/github.com/golang/protobuf/@v/v1.5.2.mod
# get https://proxy.golang.org/github.com/golang/snappy/@v/v0.0.1.mod
# get https://proxy.golang.org/github.com/btcsuite/winsvc/@v/v1.0.0.mod
# get https://proxy.golang.org/github.com/jessevdk/go-flags/@v/v1.4.0.mod
... SNIP...
# get https://proxy.golang.org/golang.org/x/crypto/@v/v0.1.0.zip
# get https://proxy.golang.org/golang.org/x/oauth2/@v/v0.0.0-20180821212333-d2e6202438be.zip: 200 OK (0.054s)
# get https://proxy.golang.org/golang.org/x/tools/@v/v0.1.12.zip: 200 OK (0.154s)
# get https://proxy.golang.org/honnef.co/go/tools/@v/v0.0.0-20190523083050-ea95bdfd59fc.zip: 200 OK (0.094s)
# get https://proxy.golang.org/google.golang.org/genproto/@v/v0.0.0-20210604141403-392c879c8b08.zip: 200 OK (0.297s)
===>  Extracting for kaspad-0.12.17
=> SHA256 Checksum OK for go/net-p2p_kaspa/kaspad-v0.12.17/v0.12.17.mod.
=> SHA256 Checksum OK for go/net-p2p_kaspa/kaspad-v0.12.17/v0.12.17.zip.
===> Tidying github.com/kaspanet/kaspad dependencies
===> Vendoring github.com/kaspanet/kaspad dependencies
===>  Patching for kaspad-0.12.17
===>   kaspad-0.12.17 depends on file: /usr/local/bin/go121 - found
===>  Configuring for kaspad-0.12.17
===>  Building for kaspad-0.12.17
(cd /usr/home/daniel/Documents/Work/ports/Wallets/net-p2p/kaspa/work/github.com/kaspanet/kaspad@v0.12.17;  for t in kaspad; do  out=$(/usr/bin/basename $(echo ${t} |  /usr/bin/sed -Ee 's/^[^:]*:([^:]+).*$/\1/' -e 's/^\.$/kaspad/'));  pkg=$(echo ${t} |  /usr/bin/sed -Ee 's/^([^:]*).*$/\1/' -e 's/^kaspad$/./');  echo "===>  Building ${out} from ${pkg}";  /usr/bin/env -i HOME=/usr/home/daniel/Documents/Work/ports/Wallets/net-p2p/kaspa/work  PWD="${PWD}"  __MAKE_CONF=/nonexistent OSVERSION=1302001 PATH=/usr/home/daniel/Documents/Work/ports/Wallets/net-p2p/kaspa/work/.bin:/home/daniel/.nvm/versions/node/v18.20.3/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/home/daniel/bin TERM=xterm-256color XDG_DATA_HOME=/usr/home/daniel/Documents/Work/ports/Wallets/net-p2p/kaspa/work  XDG_CONFIG_HOME=/usr/home/daniel/Documents/Work/ports/Wallets/net-p2p/kaspa/work  XDG_CACHE_HOME=/usr/home/daniel/Documents/Work/ports/Wallets/net-p2p/kaspa/work/.cache  HOME=/usr/home/daniel/Documents/Work/ports/Wallets/net-p2p/kaspa/work PATH=/usr/home/daniel/Documents/Work/ports/Wallets/net-p2p/kaspa/work/.bin:/home/daniel/.nvm/versions/node/v18.20.3/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/home/daniel/bin PKG_CONFIG_LIBDIR=/usr/home/daniel/Documents/Work/ports/Wallets/net-p2p/kaspa/work/.pkgconfig:/usr/local/libdata/pkgconfig:/usr/local/share/pkgconfig:/usr/libdata/pkgconfig MK_DEBUG_FILES=no MK_KERNEL_SYMBOLS=no SHELL=/bin/sh NO_LINT=YES PREFIX=/usr/local  LOCALBASE=/usr/local  CC="cc" CFLAGS="-O2 -pipe -fstack-protector-strong -fno-strict-aliasing "  CPP="cpp" CPPFLAGS=""  LDFLAGS=" -fstack-protector-strong " LIBS=""  CXX="c++" CXXFLAGS="-O2 -pipe -fstack-protector-strong -fno-strict-aliasing " BSD_INSTALL_PROGRAM="install  -s -m 555"  BSD_INSTALL_LIB="install  -s -m 0644"  BSD_INSTALL_SCRIPT="install  -m 555"  BSD_INSTALL_DATA="install  -m 0644"  BSD_INSTALL_MAN="install  -m 444" CGO_ENABLED=1  CGO_CFLAGS="-I/usr/local/include"  CGO_LDFLAGS="-L/usr/local/lib"  GOAMD64=  GOARM=  GOTMPDIR="/usr/home/daniel/Documents/Work/ports/Wallets/net-p2p/kaspa/work" GOPATH="/usr/home/daniel/Documents/Work/ports/FreeBSD/distfiles/go/net-p2p_kaspa"  GOBIN="/usr/home/daniel/Documents/Work/ports/Wallets/net-p2p/kaspa/work/bin"  GO111MODULE=on  GOFLAGS=-modcacherw  GOSUMDB=sum.golang.org GOMAXPROCS=12 GOPROXY=off /usr/local/bin/go121 build -buildmode=exe -v -trimpath -ldflags=-s -buildvcs=false -mod=vendor  -o /usr/home/daniel/Documents/Work/ports/Wallets/net-p2p/kaspa/work/bin/${out}  ${pkg};  done)
===>  Building kaspad from .
internal/unsafeheader
internal/coverage/rtcov
internal/godebugs
internal/itoa
unicode/utf8
internal/race
internal/goarch
math/bits
internal/goos
internal/goexperiment
internal/cpu
runtime/internal/atomic
runtime/internal/math
sync/atomic
crypto/internal/alias
runtime/internal/sys
unicode
internal/nettrace
crypto/internal/boring/sig
crypto/subtle
encoding
unicode/utf16
golang.org/x/crypto/internal/alias
container/list
internal/abi
log/internal
vendor/golang.org/x/crypto/cryptobyte/asn1
vendor/golang.org/x/crypto/internal/alias
google.golang.org/protobuf/internal/flags
google.golang.org/protobuf/internal/set
google.golang.org/grpc/serviceconfig
github.com/kaspanet/kaspad/util/math
internal/bytealg
math
github.com/kaspanet/kaspad/domain/consensus/utils/constants
runtime
internal/reflectlite
sync
internal/singleflight
internal/testlog
google.golang.org/grpc/internal/grpcsync
internal/bisect
google.golang.org/protobuf/internal/pragma
google.golang.org/grpc/internal/buffer
errors
sort
runtime/cgo
internal/godebug
internal/oserror
internal/safefilepath
path
io
vendor/golang.org/x/net/dns/dnsmessage
strconv
crypto/internal/nistec/fiat
syscall
strings
hash
internal/intern
text/tabwriter
crypto/internal/randutil
bytes
math/rand
reflect
crypto/rc4
container/heap
github.com/kaspanet/kaspad/domain/consensus/utils/sorters
net/netip
crypto
hash/crc32
hash/fnv
google.golang.org/grpc/encoding
net/http/internal/ascii
regexp/syntax
html
bufio
golang.org/x/text/transform
vendor/golang.org/x/text/transform
github.com/syndtr/goleveldb/leveldb/comparer
regexp
internal/syscall/execenv
internal/syscall/unix
time
internal/fmtsort
encoding/binary
context
google.golang.org/grpc/backoff
io/fs
google.golang.org/grpc/internal/grpcrand
internal/poll
google.golang.org/grpc/keepalive
google.golang.org/grpc/internal/backoff
google.golang.org/grpc/tap
embed
encoding/base64
vendor/golang.org/x/crypto/internal/poly1305
crypto/md5
golang.org/x/crypto/sha3
crypto/cipher
github.com/golang/snappy
crypto/internal/edwards25519/field
encoding/pem
os
crypto/internal/boring
crypto/internal/nistec
golang.org/x/crypto/chacha20
crypto/des
vendor/golang.org/x/crypto/chacha20
crypto/aes
crypto/hmac
crypto/sha512
crypto/sha256
crypto/internal/edwards25519
crypto/sha1
vendor/golang.org/x/crypto/hkdf
google.golang.org/protobuf/internal/detrand
path/filepath
io/ioutil
golang.org/x/sys/cpu
google.golang.org/grpc/internal/envconfig
fmt
os/signal
vendor/golang.org/x/sys/cpu
vendor/golang.org/x/net/route
internal/lazyregexp
golang.org/x/crypto/blake2b
crypto/ecdh
os/exec
vendor/golang.org/x/crypto/chacha20poly1305
net
encoding/hex
github.com/kaspanet/kaspad/version
github.com/pkg/errors
runtime/debug
compress/flate
net/url
os/user
encoding/json
log
github.com/jessevdk/go-flags
math/big
text/template/parse
github.com/davecgh/go-spew/spew
github.com/kaspanet/kaspad/util/binaryserializer
github.com/kaspanet/kaspad/util/mstime
github.com/kaspanet/kaspad/util/bech32
vendor/golang.org/x/text/unicode/norm
compress/gzip
vendor/golang.org/x/net/http2/hpack
mime
github.com/jrick/logrotate/rotator
text/template
golang.org/x/net/internal/timeseries
github.com/kaspanet/kaspad/infrastructure/logger
vendor/golang.org/x/text/unicode/bidi
mime/quotedprintable
net/http/internal
google.golang.org/grpc/internal/grpclog
google.golang.org/protobuf/internal/errors
go/token
google.golang.org/protobuf/internal/version
google.golang.org/grpc/attributes
google.golang.org/protobuf/encoding/protowire
google.golang.org/grpc/grpclog
google.golang.org/grpc/metadata
google.golang.org/grpc/codes
golang.org/x/text/unicode/bidi
golang.org/x/text/unicode/norm
google.golang.org/grpc/internal/balancerload
vendor/golang.org/x/text/secure/bidirule
github.com/kaspanet/kaspad/domain/consensus/model/externalapi
github.com/kaspanet/kaspad/util/difficulty
crypto/rand
github.com/kaspanet/go-muhash
crypto/elliptic
crypto/internal/bigmod
github.com/kaspanet/kaspad/infrastructure/network/netadapter/id
crypto/internal/boring/bbig
encoding/asn1
github.com/kaspanet/kaspad/domain/consensus/utils/hashes
github.com/kaspanet/kaspad/domain/consensus/utils/serialization
github.com/kaspanet/kaspad/domain/consensus/utils/subnetworks
github.com/kaspanet/kaspad/domain/consensus/utils/transactionid
crypto/ed25519
crypto/rsa
crypto/dsa
github.com/kaspanet/kaspad/domain/consensus/utils/transactionhelper
vendor/golang.org/x/net/idna
html/template
google.golang.org/grpc/connectivity
google.golang.org/protobuf/reflect/protoreflect
github.com/kaspanet/kaspad/domain/consensus/utils/consensushashing
golang.org/x/text/secure/bidirule
golang.org/x/net/http2/hpack
github.com/kaspanet/kaspad/util/panics
github.com/kaspanet/kaspad/domain/consensus/utils/pow
github.com/kaspanet/kaspad/domain/consensus/utils/utxo
github.com/kaspanet/kaspad/domain/consensus/utils/blockheader
github.com/kaspanet/kaspad/domain/consensus/ruleerrors
google.golang.org/protobuf/internal/encoding/messageset
github.com/kaspanet/kaspad/app/protocol/protocolerrors
google.golang.org/protobuf/internal/strs
google.golang.org/protobuf/internal/order
google.golang.org/protobuf/internal/genid
vendor/golang.org/x/crypto/cryptobyte
crypto/x509/pkix
google.golang.org/protobuf/internal/encoding/text
google.golang.org/protobuf/reflect/protoregistry
google.golang.org/protobuf/runtime/protoiface
google.golang.org/protobuf/internal/descfmt
google.golang.org/protobuf/internal/descopts
google.golang.org/grpc/encoding/gzip
github.com/kaspanet/kaspad/domain/consensus/model
github.com/kaspanet/kaspad/infrastructure/db/database
github.com/kaspanet/kaspad/util
github.com/kaspanet/kaspad/domain/consensus/utils/lrucache
github.com/kaspanet/kaspad/domain/consensus/utils/lrucachehashandwindowsizetoblockghostdagdatahashpairs
github.com/kaspanet/kaspad/domain/consensus/utils/utxolrucache
github.com/kaspanet/kaspad/domain/consensus/database/binaryserialization
github.com/kaspanet/kaspad/domain/consensus/utils/lrucachehashpairtoblockghostdagdatahashpair
github.com/kaspanet/kaspad/domain/consensus/utils/lrucacheghostdagdata
google.golang.org/protobuf/proto
github.com/kaspanet/kaspad/domain/consensus/utils/lrucacheuint64tohash
github.com/kaspanet/kaspad/domain/consensus/utils/merkle
github.com/kaspanet/go-secp256k1
github.com/kaspanet/kaspad/util/txmass
github.com/kaspanet/kaspad/domain/consensus/utils/hashset
github.com/kaspanet/kaspad/domain/consensus/processes/blockprocessor/blocklogger
github.com/kaspanet/kaspad/domain/prefixmanager/prefix
crypto/ecdsa
# github.com/kaspanet/go-secp256k1
vendor/github.com/kaspanet/go-secp256k1/ecdsa_privkey.go:3:11: fatal error: './depend/secp256k1/include/secp256k1.h' file not found
 #include "./depend/secp256k1/include/secp256k1.h"
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
github.com/syndtr/goleveldb/leveldb/storage
github.com/syndtr/goleveldb/leveldb/util
github.com/kaspanet/kaspad/domain/consensusreference
github.com/kaspanet/kaspad/domain/miningmanager/model
github.com/kaspanet/kaspad/domain/miningmanager/mempool/model
github.com/kaspanet/kaspad/domain/prefixmanager
github.com/kaspanet/kaspad/domain/consensus/database
google.golang.org/protobuf/internal/encoding/defval
github.com/kaspanet/kaspad/domain/consensus/utils/multiset
github.com/kaspanet/kaspad/domain/consensus/utils/reachabilitydata
github.com/kaspanet/kaspad/domain/consensus/processes/blockparentbuilder
github.com/kaspanet/kaspad/util/staging
github.com/kaspanet/kaspad/domain/consensus/utils/virtual
github.com/kaspanet/kaspad/domain/consensus/processes/coinbasemanager
github.com/kaspanet/kaspad/domain/consensus/processes/dagtopologymanager
github.com/kaspanet/kaspad/domain/consensus/processes/dagtraversalmanager
github.com/kaspanet/kaspad/domain/consensus/processes/blockvalidator
github.com/kaspanet/kaspad/domain/consensus/processes/difficultymanager
github.com/kaspanet/kaspad/domain/consensus/processes/finalitymanager
github.com/kaspanet/kaspad/domain/consensus/datastructures/blockwindowheapslicestore
github.com/kaspanet/kaspad/domain/consensus/datastructures/daablocksstore
github.com/kaspanet/kaspad/domain/consensus/datastructures/finalitystore
github.com/kaspanet/kaspad/domain/consensus/datastructures/mergedepthrootstore
github.com/kaspanet/kaspad/domain/consensus/datastructures/headersselectedchainstore
github.com/kaspanet/kaspad/domain/consensus/processes/ghostdagmanager
github.com/kaspanet/kaspad/domain/consensus/processes/headersselectedtipmanager
github.com/kaspanet/kaspad/domain/consensus/processes/blockprocessor
github.com/kaspanet/kaspad/domain/consensus/processes/mergedepthmanager
github.com/kaspanet/kaspad/domain/consensus/processes/parentsmanager
github.com/kaspanet/kaspad/domain/consensus/processes/pastmediantimemanager
github.com/kaspanet/kaspad/domain/consensus/processes/pruningmanager
golang.org/x/net/idna
github.com/kaspanet/kaspad/domain/consensus/processes/syncmanager
github.com/syndtr/goleveldb/leveldb/cache
github.com/syndtr/goleveldb/leveldb/filter
google.golang.org/protobuf/encoding/prototext
google.golang.org/protobuf/internal/filedesc
github.com/syndtr/goleveldb/leveldb/errors
github.com/kaspanet/kaspad/domain/miningmanager/blocktemplatebuilder
github.com/kaspanet/kaspad/util/random
github.com/kaspanet/kaspad/infrastructure/os/limits
github.com/kaspanet/kaspad/infrastructure/os/signal
github.com/syndtr/goleveldb/leveldb/opt
internal/profile
# github.com/kaspanet/kaspad/infrastructure/os/limits
infrastructure/os/limits/limits_unix.go:25:18: invalid operation: rLimit.Cur > desiredLimits.FileLimitWant (mismatched types int64 and uint64)
infrastructure/os/limits/limits_unix.go:28:18: invalid operation: rLimit.Max < desiredLimits.FileLimitMin (mismatched types int64 and uint64)
infrastructure/os/limits/limits_unix.go:33:18: invalid operation: rLimit.Max < desiredLimits.FileLimitWant (mismatched types int64 and uint64)
infrastructure/os/limits/limits_unix.go:36:16: cannot use desiredLimits.FileLimitWant (variable of type uint64) as int64 value in assignment
infrastructure/os/limits/limits_unix.go:41:16: cannot use desiredLimits.FileLimitMin (variable of type uint64) as int64 value in assignment
runtime/pprof
github.com/syndtr/goleveldb/leveldb/iterator
github.com/syndtr/goleveldb/leveldb/journal
runtime/trace
github.com/syndtr/goleveldb/leveldb/memdb
github.com/syndtr/goleveldb/leveldb/table
github.com/syndtr/goleveldb/leveldb
google.golang.org/protobuf/internal/encoding/tag
google.golang.org/protobuf/internal/impl
github.com/kaspanet/kaspad/infrastructure/db/database/ldb
google.golang.org/grpc/internal/syscall
github.com/btcsuite/go-socks/socks
github.com/kaspanet/kaspad/util/network
vendor/golang.org/x/net/http/httpproxy
google.golang.org/grpc/stats
net/textproto
crypto/x509
github.com/kaspanet/kaspad/app/appmessage
vendor/golang.org/x/net/http/httpguts
mime/multipart
golang.org/x/net/http/httpguts
google.golang.org/protobuf/internal/filetype
github.com/kaspanet/kaspad/domain/dagconfig
github.com/kaspanet/kaspad/infrastructure/network/netadapter/router
google.golang.org/protobuf/runtime/protoimpl
crypto/tls
github.com/kaspanet/kaspad/infrastructure/config
google.golang.org/protobuf/types/known/anypb
google.golang.org/protobuf/types/known/timestamppb
google.golang.org/protobuf/types/known/durationpb
google.golang.org/protobuf/types/descriptorpb
github.com/kaspanet/kaspad/domain/consensus/database/serialization
github.com/golang/protobuf/ptypes/any
github.com/golang/protobuf/ptypes/timestamp
github.com/golang/protobuf/ptypes/duration
github.com/kaspanet/kaspad/infrastructure/os/winservice
github.com/kaspanet/kaspad/infrastructure/network/addressmanager
github.com/kaspanet/kaspad/infrastructure/network/netadapter/server
github.com/kaspanet/kaspad/app/protocol/flows/v5/rejects
github.com/kaspanet/kaspad/domain/consensus/datastructures/acceptancedatastore
google.golang.org/protobuf/reflect/protodesc
github.com/golang/protobuf/proto
google.golang.org/grpc/encoding/proto
github.com/kaspanet/kaspad/domain/consensus/datastructures/blockrelationstore
google.golang.org/genproto/googleapis/rpc/status
google.golang.org/grpc/binarylog/grpc_binarylog_v1
github.com/golang/protobuf/ptypes
github.com/kaspanet/kaspad/domain/consensus/datastructures/blockstatusstore
github.com/kaspanet/kaspad/domain/consensus/datastructures/blockheaderstore
github.com/kaspanet/kaspad/domain/consensus/datastructures/blockstore
github.com/kaspanet/kaspad/domain/consensus/datastructures/daawindowstore
github.com/kaspanet/kaspad/domain/consensus/datastructures/consensusstatestore
github.com/kaspanet/kaspad/domain/consensus/datastructures/ghostdagdatastore
github.com/kaspanet/kaspad/domain/consensus/datastructures/headersselectedtipstore
github.com/kaspanet/kaspad/domain/consensus/datastructures/multisetstore
github.com/kaspanet/kaspad/domain/consensus/datastructures/pruningstore
github.com/kaspanet/kaspad/domain/consensus/datastructures/reachabilitydatastore
github.com/kaspanet/kaspad/domain/consensus/datastructures/utxodiffstore
google.golang.org/grpc/internal/status
google.golang.org/grpc/status
net/http/httptrace
google.golang.org/grpc/internal/credentials
google.golang.org/grpc/credentials
net/http
google.golang.org/grpc/resolver
google.golang.org/grpc/peer
google.golang.org/grpc/internal/channelz
google.golang.org/grpc/internal/resolver/passthrough
google.golang.org/grpc/balancer/grpclb/state
google.golang.org/grpc/internal/transport/networktype
google.golang.org/grpc/internal/grpcutil
google.golang.org/grpc/internal/metadata
google.golang.org/grpc/internal
google.golang.org/grpc/internal/resolver/unix
google.golang.org/grpc/internal/binarylog
google.golang.org/grpc/internal/resolver/dns
google.golang.org/grpc/balancer
google.golang.org/grpc/balancer/base
google.golang.org/grpc/internal/serviceconfig
google.golang.org/grpc/internal/resolver
google.golang.org/grpc/balancer/roundrobin
golang.org/x/net/trace
net/http/pprof
net/http/httputil
golang.org/x/net/http2
github.com/kaspanet/kaspad/util/profiling
google.golang.org/grpc/internal/transport
google.golang.org/grpc
github.com/kaspanet/kaspad/infrastructure/network/dnsseed/pb
github.com/kaspanet/kaspad/infrastructure/network/netadapter/server/grpcserver/protowire
github.com/kaspanet/kaspad/infrastructure/network/dnsseed
github.com/kaspanet/kaspad/infrastructure/network/netadapter/server/grpcserver
github.com/kaspanet/kaspad/infrastructure/network/netadapter
github.com/kaspanet/kaspad/app/protocol/peer
github.com/kaspanet/kaspad/infrastructure/network/connmanager
github.com/kaspanet/kaspad/app/protocol/common
github.com/kaspanet/kaspad/app/protocol/flows/ready
github.com/kaspanet/kaspad/app/protocol/flows/v5/addressexchange
*** Error code 1

Stop.
make: stopped in ~/Documents/Work/ports/Wallets/net-p2p/kaspa
 
from the porting manual: "If the "easy" way is not adequate or more control over dependencies is needed, the full porting process is described below."


what happens if you just do make ?
Interesting, if I do it with the "full porting process", it does work:

Code:
PORTNAME=       kaspad
DISTVERSIONPREFIX=    v
DISTVERSION=    0.12.17
CATEGORIES=     net-p2p

MAINTAINER=     ports@FreeBSD.org
COMMENT=        Reference full node Kaspa implementation written in Go
WWW=            https://github.com/kaspanet/kaspad/

LICENSE=        ISCL
LICENSE_FILE=   ${WRKSRC}/LICENSE

USES=            go:modules pkgconfig
USE_GITHUB=        yes
GH_ACCOUNT=        kaspanet

PLIST_FILES=    bin/kaspad \
                bin/genkeypair \
                bin/kaspactl \
                bin/kaspaminer \
                bin/kaspawallet

.include <bsd.port.mk>

Code:
~/Documents/Work/ports/Wallets/net-p2p/kaspa $ make gomod-vendor
===>   NOTICE:

The kaspad port currently does not have a maintainer. As a result, it is
more likely to have unresolved issues, not be up-to-date, or even be removed in
the future. To volunteer to maintain this port, please create an issue at:

https://bugs.freebsd.org/bugzilla

More information about port maintainership is available at:

https://docs.freebsd.org/en/articles/contributing/#ports-contributing

===>  License ISCL accepted by the user
===>   kaspad-0.12.17 depends on file: /usr/local/sbin/pkg - found
===> Fetching all distfiles required by kaspad-0.12.17 for building
===>  Extracting for kaspad-0.12.17
=> SHA256 Checksum OK for kaspanet-kaspad-v0.12.17_GH0.tar.gz.
===>  Patching for kaspad-0.12.17
GH_TUPLE=    \
        btcsuite:btcutil:v1.0.2:btcsuite_btcutil/vendor/github.com/btcsuite/btcutil \
        btcsuite:go-socks:4720035b7bfd:btcsuite_go_socks/vendor/github.com/btcsuite/go-socks \
        btcsuite:winsvc:v1.0.0:btcsuite_winsvc/vendor/github.com/btcsuite/winsvc \
        davecgh:go-spew:v1.1.1:davecgh_go_spew/vendor/github.com/davecgh/go-spew \
        go-yaml:yaml:v2.3.0:go_yaml_yaml/vendor/gopkg.in/yaml.v2 \
        gofrs:flock:v0.8.1:gofrs_flock/vendor/github.com/gofrs/flock \
        golang:crypto:v0.1.0:golang_crypto/vendor/golang.org/x/crypto \
        golang:exp:bcd21879b8fd:golang_exp/vendor/golang.org/x/exp \
        golang:net:v0.7.0:golang_net/vendor/golang.org/x/net \
        golang:protobuf:v1.5.2:golang_protobuf/vendor/github.com/golang/protobuf \
        golang:snappy:v0.0.1:golang_snappy/vendor/github.com/golang/snappy \
        golang:sys:v0.5.0:golang_sys/vendor/golang.org/x/sys \
        golang:term:v0.5.0:golang_term/vendor/golang.org/x/term \
        golang:text:v0.7.0:golang_text/vendor/golang.org/x/text \
        google:go-genproto:392c879c8b08:google_go_genproto/vendor/google.golang.org/genproto \
        grpc:grpc-go:v1.38.0:grpc_grpc_go/vendor/google.golang.org/grpc \
        jessevdk:go-flags:v1.4.0:jessevdk_go_flags/vendor/github.com/jessevdk/go-flags \
        jrick:logrotate:v1.0.0:jrick_logrotate/vendor/github.com/jrick/logrotate \
        kaspanet:go-muhash:v0.0.4:kaspanet_go_muhash/vendor/github.com/kaspanet/go-muhash \
        kaspanet:go-secp256k1:v0.0.7:kaspanet_go_secp256k1/vendor/github.com/kaspanet/go-secp256k1 \
        pkg:errors:v0.9.1:pkg_errors/vendor/github.com/pkg/errors \
        protocolbuffers:protobuf-go:v1.28.1:protocolbuffers_protobuf_go/vendor/google.golang.org/protobuf \
        syndtr:goleveldb:758128399b1d:syndtr_goleveldb/vendor/github.com/syndtr/goleveldb \
        tyler-smith:go-bip39:v1.1.0:tyler_smith_go_bip39/vendor/github.com/tyler-smith/go-bip39

But it still fails to build anyway:

Code:
infrastructure/os/limits/limits_unix.go:25:18: invalid operation: rLimit.Cur > desiredLimits.FileLimitWant (mismatched types int64 and uint64)
infrastructure/os/limits/limits_unix.go:28:18: invalid operation: rLimit.Max < desiredLimits.FileLimitMin (mismatched types int64 and uint64)
infrastructure/os/limits/limits_unix.go:33:18: invalid operation: rLimit.Max < desiredLimits.FileLimitWant (mismatched types int64 and uint64)
infrastructure/os/limits/limits_unix.go:36:16: cannot use desiredLimits.FileLimitWant (variable of type uint64) as int64 value in assignment
infrastructure/os/limits/limits_unix.go:41:16: cannot use desiredLimits.FileLimitMin (variable of type uint64) as int64 value in assignment
 
Finally got it. I'm know very very litle about Go (and want to keep it that way since I have zero interest in that language, and dislike it a lot), but I did manage to conjure up a patch to make a functional port:

Code:
--- infrastructure/os/limits/limits_unix.go.orig    2024-05-09 15:53:21 UTC
+++ infrastructure/os/limits/limits_unix.go
@@ -22,23 +22,23 @@ func SetLimits(desiredLimits *DesiredLimits) error {
     if err != nil {
         return err
     }
-    if rLimit.Cur > desiredLimits.FileLimitWant {
+    if int64(rLimit.Cur) > int64(desiredLimits.FileLimitWant) {
         return nil
     }
-    if rLimit.Max < desiredLimits.FileLimitMin {
+    if int64(rLimit.Max) < int64(desiredLimits.FileLimitMin) {
         err = errors.Errorf("need at least %d file descriptors",
             desiredLimits.FileLimitMin)
         return err
     }
-    if rLimit.Max < desiredLimits.FileLimitWant {
+    if int64(rLimit.Max) < int64(desiredLimits.FileLimitWant) {
         rLimit.Cur = rLimit.Max
     } else {
-        rLimit.Cur = desiredLimits.FileLimitWant
+        rLimit.Cur = int64(desiredLimits.FileLimitWant)
     }
     err = syscall.Setrlimit(syscall.RLIMIT_NOFILE, &rLimit)
     if err != nil {
         // try min value
-        rLimit.Cur = desiredLimits.FileLimitMin
+        rLimit.Cur = int64(desiredLimits.FileLimitMin)
         err = syscall.Setrlimit(syscall.RLIMIT_NOFILE, &rLimit)
         if err != nil {
             return err

I'm not sure about the GO_TARGET piece, but it has the desired result. Next I'll work on an rc.d script, and then hopefully submit the new port.

Code:
PORTNAME=       kaspad
DISTVERSIONPREFIX=    v
DISTVERSION=    0.12.17
CATEGORIES=     net-p2p

MAINTAINER=     ports@FreeBSD.org
COMMENT=        Reference full node Kaspa implementation written in Go
WWW=            https://github.com/kaspanet/kaspad/

LICENSE=        ISCL
LICENSE_FILE=   ${WRKSRC}/LICENSE

USES=            go:modules
USE_GITHUB=        yes
GH_ACCOUNT=        kaspanet

GO_TARGET=        .:kaspad \
                ./cmd/genkeypair:genkeypair \
                ./cmd/kaspactl:kaspactl \
                ./cmd/kaspaminer:kaspaminer \
                ./cmd/kaspawallet:kaspawallet \

GH_TUPLE=    \
        btcsuite:btcutil:v1.0.2:btcsuite_btcutil/vendor/github.com/btcsuite/btcutil \
        btcsuite:go-socks:4720035b7bfd:btcsuite_go_socks/vendor/github.com/btcsuite/go-socks \
        btcsuite:winsvc:v1.0.0:btcsuite_winsvc/vendor/github.com/btcsuite/winsvc \
        davecgh:go-spew:v1.1.1:davecgh_go_spew/vendor/github.com/davecgh/go-spew \
        go-yaml:yaml:v2.3.0:go_yaml_yaml/vendor/gopkg.in/yaml.v2 \
        gofrs:flock:v0.8.1:gofrs_flock/vendor/github.com/gofrs/flock \
        golang:crypto:v0.1.0:golang_crypto/vendor/golang.org/x/crypto \
        golang:exp:bcd21879b8fd:golang_exp/vendor/golang.org/x/exp \
        golang:net:v0.7.0:golang_net/vendor/golang.org/x/net \
        golang:protobuf:v1.5.2:golang_protobuf/vendor/github.com/golang/protobuf \
        golang:snappy:v0.0.1:golang_snappy/vendor/github.com/golang/snappy \
        golang:sys:v0.5.0:golang_sys/vendor/golang.org/x/sys \
        golang:term:v0.5.0:golang_term/vendor/golang.org/x/term \
        golang:text:v0.7.0:golang_text/vendor/golang.org/x/text \
        google:go-genproto:392c879c8b08:google_go_genproto/vendor/google.golang.org/genproto \
        grpc:grpc-go:v1.38.0:grpc_grpc_go/vendor/google.golang.org/grpc \
        jessevdk:go-flags:v1.4.0:jessevdk_go_flags/vendor/github.com/jessevdk/go-flags \
        jrick:logrotate:v1.0.0:jrick_logrotate/vendor/github.com/jrick/logrotate \
        kaspanet:go-muhash:v0.0.4:kaspanet_go_muhash/vendor/github.com/kaspanet/go-muhash \
        kaspanet:go-secp256k1:v0.0.7:kaspanet_go_secp256k1/vendor/github.com/kaspanet/go-secp256k1 \
        pkg:errors:v0.9.1:pkg_errors/vendor/github.com/pkg/errors \
        protocolbuffers:protobuf-go:v1.28.1:protocolbuffers_protobuf_go/vendor/google.golang.org/protobuf \
        syndtr:goleveldb:758128399b1d:syndtr_goleveldb/vendor/github.com/syndtr/goleveldb \
        tyler-smith:go-bip39:v1.1.0:tyler_smith_go_bip39/vendor/github.com/tyler-smith/go-bip39

PLIST_FILES=    bin/kaspad \
                bin/genkeypair \
                bin/kaspactl \
                bin/kaspaminer \
                bin/kaspawallet

.include <bsd.port.mk>
 
Back
Top