Hi, Ludovic Courtès <l...@gnu.org> writes:
> Hello, > > Edouard Klein <edouardkl...@gmail.com> writes: > >> Now run guix time-machine --channels=/tmp/first-bad.scm -- system image -t >> qcow2 -e '(use-modules (beaver system)) (minimal-ovh)' >> >> and you'll get "In procedure struct-vtable: Wrong type argument in >> position 1 (expecting struct): #<syntax-transformer >> dhcp-client-service-type>" > > The ‘define-deprecated’ macro turns the given symbol into a macro; that > macro raises a warning a compile time (in a way, this is similar to the > ‘deprecated’ attribute in GCC). > > Since this is a macro, it must be in scope for any user that references > it. Likewise, any file built against the previous definition (where > ‘dhcp-client-service-type’ was *not* a macro) must be rebuilt against > the new one; otherwise, you get the error above where the user expected > ‘dhcp-client-service-type’ to resolve to a struct and now it resolves to > a macro (aka. “syntax transformer”). Thanks for the clear explanation, it helps! So it has nothing with requiring byte-compiling, rather it has to do with ensuring all byte-compiled objects are rebuilt when used references such as syntax objects change, right? -- Thanks, Maxim