GNU bug report logs -
#30355
[PATCH] services: agetty: Make tty optional and add agetty instance to base services.
Previous Next
Full log
Message #14 received at 30355 <at> debbugs.gnu.org (full text, mbox):
Danny Milosavljevic <dannym <at> scratchpost.org> skribis:
>> Please make that a single ‘filter’ or ‘remove’ call, for clarity.
>
> OK!
>
>> Rather:
>>
>> (match (append agetty-specs console-specs)
>> (() #f)
>> ((spec _ ...)
>> (string-tokenize spec not-comma)))
>
> Crashes boot process with form error ().
>
> I can't get "match" to work at all in this location.
>
> It works fine when I start guile on a normally running system, but
> in this initrd guile thing, (use-modules (ice-9 match)) doesn't help
> either. What does help is (@ (ice-9 match) match). Why?
>
> (define (default-serial-port)
> "Return a gexp that determines a reasonable default serial port
> to use as the tty. This is primarily useful for headless systems."
> #~(begin
> ;; console=device,options
> ;; device: can be tty0, ttyS0, lp0, ttyUSB0 (serial).
> ;; options: BBBBPNF. P n|o|e, N number of bits,
> ;; F flow control (r RTS)
> (use-modules (gnu build linux-boot))
> (let* ((not-comma (char-set-complement (char-set #\,)))
> (command (linux-command-line))
> (agetty-specs (find-long-options "agetty.tty" command))
> (console-specs (filter (lambda (spec)
> (and (string-prefix? "tty" spec)
> (not (or
> (string-prefix? "tty0" spec)
> (string-prefix? "tty1" spec)
> (string-prefix? "tty2" spec)
> (string-prefix? "tty3" spec)
> (string-prefix? "tty4" spec)
> (string-prefix? "tty5" spec)
> (string-prefix? "tty6" spec)
> (string-prefix? "tty7" spec)
> (string-prefix? "tty8" spec)
> (string-prefix? "tty9" spec)))))
> (find-long-options "console" command)))
> (specs (append agetty-specs console-specs)))
> (use-modules (ice-9 match))
> (match specs
> (() #f) ; form error here
> ((spec _ ...) ; underscore is undefined
> ;; Extract device name from first spec.
> (match (string-tokenize spec not-comma)
> ((device-name _ ...) ; underscore is undefined
> device-name)))))))
Try moving the ‘use-modules’ form at the top so you have:
(use-modules (gnu build linux-boot) (ice-9 match))
The inner ‘use-modules’ you had cannot work because the expander doesn’t
“see” it when compiling, and thus the ‘match’ macro is missing at
expansion time (thus the compiler assumes that code is calling a ‘match’
procedure that’ll be define at run time.) However it can work when you
interpret it instead of compiling because the compiler will have
expansion and execution intermingled.
HTH,
Ludo’.
This bug report was last modified 6 years and 181 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.