Subject: bug#59081: 28.2; Lisp Error:Invalid image type: 'svg'

From: Po Lu <[email-masked]>
Date: Mon, 07 Nov 2022 08:25:33 +0800

Thomas Bumbera <[email-masked]> writes:

> To Whom it May Concern,
>
>
> emacs-debug-on-error:
>
> clicked on emacs icon to start emacs.
> emacs starts with error: in invalid image type:'svg'
>
> Note: Original configuration was error free using Apple MacOS Monterey 12.
>       Error showed - up after upgrade to Apple MacOS Ventura 13.
>
> Debugger entered--Lisp error: (error "Invalid image type ‘svg’")
>   signal(error ("Invalid image type ‘svg’"))
>   error("Invalid image type `%s'" svg)
>   image-type("splash.svg" nil nil)
>   create-image("splash.svg")
>   use-fancy-splash-screens-p()
>   about-emacs()
>   funcall-interactively(about-emacs)
>   call-interactively(about-emacs nil nil)
>   command-execute(about-emacs)
>   read-from-minibuffer("M-x " nil (keymap (10 . minibuffer-complete-and-exit) (13 . minibuffer-complete-and-exit) keymap (menu-bar keymap (minibuf "Minibuf" keymap (tab menu-item "Complete" minibuffer-complete :help "Complete as far as possible") (space menu-item "Complete Word" minibuffer-complete-word :help "Complete at most one word") (63 menu-item "List Completions" minibuffer-completion-help :help "Display all possible completions") "Minibuf")) (27 keymap (103 keymap (27 keymap (99 . switch-to-completions))) (118 . switch-to-completions)) (prior . switch-to-completions) (63 . minibuffer-completion-help) (32 . minibuffer-complete-word) (9 . minibuffer-complete) keymap (menu-bar keymap (minibuf "Minibuf" keymap (previous menu-item "Previous History Item" previous-history-element :help "Put previous minibuffer history element in the min...") (next menu-item "Next History Item" next-history-element :help "Put next minibuffer history element in the minibuf...") (isearch-backward menu-item "Isearch History Backward" isearch-backward :help "Incrementally search minibuffer history backward") (isearch-forward menu-item "Isearch History Forward" isearch-forward :help "Incrementally search minibuffer history forward") (return menu-item "Enter" exit-minibuffer :key-sequence "\15" :help "Terminate input and exit minibuffer") (quit menu-item "Quit" abort-recursive-edit :help "Abort input and exit minibuffer") "Minibuf")) (13 . exit-minibuffer) (10 . exit-minibuffer) (7 . abort-minibuffers) (C-tab . file-cache-minibuffer-complete) (9 . self-insert-command) (XF86Back . previous-history-element) (up . previous-line-or-history-element) (prior . previous-history-element) (XF86Forward . next-history-element) (down . next-line-or-history-element) (next . next-history-element) (27 keymap (60 . minibuffer-beginning-of-buffer) (114 . previous-matching-history-element) (115 . next-matching-history-element) (112 . previous-history-element) (110 . next-history-element))) nil extended-command-history nil nil)
>   completing-read-default("M-x " #f(compiled-function (string pred action) #<bytecode -0x7e433f61ccf7cd9>) #f(compiled-function (sym) #<bytecode 0x131547103b642ea9>) t nil extended-command-history nil nil)
>   completing-read("M-x " #f(compiled-function (string pred action) #<bytecode -0x7e433f61ccf7cd9>) #f(compiled-function (sym) #<bytecode 0x131547103b642ea9>) t nil extended-command-history)
>   read-extended-command()
>   byte-code("\302\30\11\303 \10E)\207" [execute-extended-command--last-typed current-prefix-arg nil read-extended-command] 3)
>   call-interactively(execute-extended-command nil nil)
>   command-execute(execute-extended-command)
>

Thanks.  I had a chance to investigate this problem yesterday, as a
colleague ran into the same problem.

The problem is Mac OS native image APIs gained the ability to display
SVG images in version 13, but the code to use them in Emacs was never
finished.

So if you built without librsvg, SVG images will not work (from the POV
of create-image), but the splash screen code will think they are
supported.

This has already been fixed in Emacs 29.  If you cherry-pick
5f8c655a44a0e7ad1fe6f8b23acb4e6c93dc72a6 and the immediately subsequent
commit, it should start working again in Emacs 28.