mholt / caddy-dynamicdns

Caddy app that keeps your DNS records (A/AAAA) pointed at itself.
Apache License 2.0
220 stars 20 forks source link

Module not building with xcaddy #67

Open gonsalvesc opened 2 months ago

gonsalvesc commented 2 months ago

Recently tried to build Caddy with this module using xcaddy, and it gave a fatal error. I'm using Ubuntu 22.04

chris@Pluto:~/docker-compose-files/caddy$ xcaddy build --with github.com/mholt/caddy-dynamicdns
2024/04/12 00:40:38 [INFO] Temporary folder: /tmp/buildenv_2024-04-12-0040.4123730380
2024/04/12 00:40:38 [INFO] Writing main module: /tmp/buildenv_2024-04-12-0040.4123730380/main.go
package main

import (
    caddycmd "github.com/caddyserver/caddy/v2/cmd"

    // plug in Caddy modules here
    _ "github.com/caddyserver/caddy/v2/modules/standard"
    _ "github.com/mholt/caddy-dynamicdns"
)

func main() {
    caddycmd.Main()
}
2024/04/12 00:40:38 [INFO] Initializing Go module
2024/04/12 00:40:38 [INFO] exec (timeout=0s): /usr/local/go/bin/go mod init caddy 
go: creating new go.mod: module caddy
go: to add module requirements and sums:
    go mod tidy
2024/04/12 00:40:38 [INFO] Pinning versions
2024/04/12 00:40:38 [INFO] exec (timeout=0s): /usr/local/go/bin/go get -d -v github.com/caddyserver/caddy/v2 
go: added github.com/beorn7/perks v1.0.1
go: added github.com/caddyserver/caddy/v2 v2.7.6
go: added github.com/caddyserver/certmagic v0.20.0
go: added github.com/cespare/xxhash/v2 v2.2.0
go: added github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572
go: added github.com/golang/protobuf v1.5.3
go: added github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1
go: added github.com/google/uuid v1.3.1
go: added github.com/klauspost/cpuid/v2 v2.2.5
go: added github.com/libdns/libdns v0.2.1
go: added github.com/matttproud/golang_protobuf_extensions v1.0.4
go: added github.com/mholt/acmez v1.2.0
go: added github.com/miekg/dns v1.1.55
go: added github.com/onsi/ginkgo/v2 v2.9.5
go: added github.com/prometheus/client_golang v1.15.1
go: added github.com/prometheus/client_model v0.4.0
go: added github.com/prometheus/common v0.42.0
go: added github.com/prometheus/procfs v0.9.0
go: added github.com/quic-go/qpack v0.4.0
go: added github.com/quic-go/qtls-go1-20 v0.4.1
go: added github.com/quic-go/quic-go v0.40.0
go: added github.com/zeebo/blake3 v0.2.3
go: added go.uber.org/mock v0.3.0
go: added go.uber.org/multierr v1.11.0
go: added go.uber.org/zap v1.25.0
go: added golang.org/x/crypto v0.14.0
go: added golang.org/x/exp v0.0.0-20230310171629-522b1b587ee0
go: added golang.org/x/mod v0.11.0
go: added golang.org/x/net v0.17.0
go: added golang.org/x/sys v0.14.0
go: added golang.org/x/term v0.13.0
go: added golang.org/x/text v0.13.0
go: added golang.org/x/tools v0.10.0
go: added google.golang.org/protobuf v1.31.0
2024/04/12 00:40:40 [INFO] exec (timeout=0s): /usr/local/go/bin/go get -d -v github.com/mholt/caddy-dynamicdns github.com/caddyserver/caddy/v2 
go: accepting indirect upgrade from github.com/quic-go/quic-go@v0.40.0 to v0.42.0
go: accepting indirect upgrade from go.uber.org/mock@v0.3.0 to v0.4.0
go: accepting indirect upgrade from golang.org/x/crypto@v0.14.0 to v0.20.0
go: accepting indirect upgrade from golang.org/x/net@v0.17.0 to v0.21.0
go: accepting indirect upgrade from golang.org/x/sys@v0.14.0 to v0.17.0
go: accepting indirect upgrade from golang.org/x/term@v0.13.0 to v0.17.0
go: accepting indirect upgrade from golang.org/x/text@v0.13.0 to v0.14.0
go: downloading google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1
go: upgraded github.com/jackc/pgconn v1.14.0 => v1.14.3
go: upgraded github.com/jackc/pgproto3/v2 v2.3.2 => v2.3.3
go: upgraded github.com/jackc/pgx/v4 v4.18.0 => v4.18.2
go: added github.com/mholt/caddy-dynamicdns v0.0.0-20240411202905-a0a258134505
go: upgraded github.com/quic-go/quic-go v0.40.0 => v0.42.0
go: added gitlab.com/NebulousLabs/fastrand v0.0.0-20181126182046-603482d69e40
go: added gitlab.com/NebulousLabs/go-upnp v0.0.0-20211002182029-11da932010b6
go: upgraded go.uber.org/mock v0.3.0 => v0.4.0
go: upgraded golang.org/x/crypto v0.14.0 => v0.20.0
go: upgraded golang.org/x/net v0.17.0 => v0.21.0
go: upgraded golang.org/x/sys v0.14.0 => v0.17.0
go: upgraded golang.org/x/term v0.13.0 => v0.17.0
go: upgraded golang.org/x/text v0.13.0 => v0.14.0
2024/04/12 00:40:47 [INFO] exec (timeout=0s): /usr/local/go/bin/go get -d -v  
2024/04/12 00:40:50 [INFO] Build environment ready
2024/04/12 00:40:50 [INFO] Building Caddy
2024/04/12 00:40:50 [INFO] exec (timeout=0s): /usr/local/go/bin/go mod tidy -e 
2024/04/12 00:40:50 [INFO] exec (timeout=0s): /usr/local/go/bin/go build -o /home/chris/docker-compose-files/caddy/caddy -ldflags -w -s -trimpath 
# github.com/caddyserver/caddy/v2
/home/chris/go/pkg/mod/github.com/caddyserver/caddy/v2@v2.7.6/listeners.go:477:4: unknown field RequireAddressValidation in struct literal of type quic.Config
/home/chris/go/pkg/mod/github.com/caddyserver/caddy/v2@v2.7.6/listeners.go:516:4: unknown field RequireAddressValidation in struct literal of type quic.Config
2024/04/12 00:40:51 [INFO] Cleaning up temporary folder: /tmp/buildenv_2024-04-12-0040.4123730380
2024/04/12 00:40:51 [FATAL] exit status 1
francislavoie commented 2 months ago

What Go version are you using? Make sure you use the latest (not the one shipped by the OS packages).

eddiezab commented 2 months ago

I am getting the same issue, using go v1.22.2 downloaded from the golang site..

Works: xcaddy build

Throws error above: xcaddy build --with github.com/mholt/caddy-dynamicdns

mholt commented 2 months ago

xcaddy build master --with github.com/mholt/caddy-dynamicdns works. Not sure why at the moment.

andry-dev commented 2 months ago

I have the same problem when building the latest 2.7.6 with xcaddy inside a Dockerfile:

FROM caddy:2-builder AS builder

RUN xcaddy build \
    --with github.com/caddy-dns/linode \
    --with github.com/caddy-dns/porkbun \
    --with github.com/mholt/caddy-dynamicdns

Running podman build . -t my-caddy:2 fails with:

<...>
2024/04/12 21:24:57 [INFO] Skipping cleanup as requested; leaving folder intact: /tmp/buildenv_2024-04-12-2124.1954777655
2024/04/12 21:24:57 [FATAL] exit status 1
Error: building at STEP "RUN xcaddy build     --with github.com/caddy-dns/linode     --with github.com/caddy-dns/porkbun     --with github.com/mholt/caddy-dynamicdns": while running runtime: exit status 1

I guess that master and 2.7.6 diverge?

mholt commented 2 months ago

Not really; master is a continuation of 2.7.6, but we tried a new way of tagging 2.7.6 using a minor version branch (2.7) instead of tagging directly from master, which is why I think the Go module tooling is getting confused. (We'll be going back to our regular tagging approach for 2.8.)

My comment above shows a command that works in the meantime.

andry-dev commented 2 months ago

Understood, I avoided using xcaddy build master because I thought that the master branch was unstable. Thank you for the clarification.

mholt commented 2 months ago

It can be unstable, but typically only for brief periods.

hacel commented 2 months ago

https://github.com/mholt/caddy-dynamicdns/commit/a0a2581345050f0854626c89ab6d4690b6606dd4

My bad the problem is actually that caddy v2.7.6 uses quic 0.40 but caddy master uses quic 0.42. Go when not specifying a version when you go get, downloads caddy v2.7.6 because that's the latest tag, but it also downloads master caddy-dynamicdns. They are not compatible at the moment because of the quic version conflict. I did not want to use caddy master so what I did was pin caddy-dynamicdns to before the quic bump.

Dockerfile remedy:

FROM caddy:builder AS builder
WORKDIR /src
COPY main.go main.go
RUN go mod init caddy
RUN go get github.com/mholt/caddy-dynamicdns@f375a7248e67cf3e82b4f61f841424adb4ee958f
RUN go mod tidy
RUN go build -o /usr/bin/caddy .

FROM caddy
COPY --from=builder /usr/bin/caddy /usr/bin/caddy