Bug#1105669: xelb: FTBFS with make --shuffle=reverse: Debugger entered--Lisp error: (file-missing "Cannot open load file" "No such file or directory" "xcb-xproto")
Source: xelb
Version: 0.20-1
Severity: minor
Tags: trixie sid ftbfs
User: lucas@debian.org
Usertags: ftbfs-shuffle
Hi,
GNU Make now has a --shuffle option that simulates non-deterministic ordering
of target prerequisites. See
https://trofi.github.io/posts/238-new-make-shuffle-mode.html and also previous
work in Debian by Santiago Vila:
https://people.debian.org/~sanvila/make-shuffle/
This package fails to build with make --shuffle=reverse.
This is likely to be caused by a missing dependency in
debian/rules or an upstream Makefile.
More information about this mass bug filing is available at
https://wiki.debian.org/qa.debian.org/FTBFS/Shuffle
Relevant part (hopefully):
> make[1]: Entering directory '/build/reproducible-path/xelb-0.20'
> Makefile:13: update target 'xcb-xproto.el' due to: target does not exist
> echo -n "\n"Generating xcb-xproto.el...
>
> Generating xcb-xproto.el..../xelb-gen /usr/share/xcb/xproto.xml > xcb-xproto.el
> Makefile:30: update target 'clean' due to: target is .PHONY
> rm -vf xcb-xproto.el xcb-bigreq.el xcb-composite.el xcb-damage.el xcb-dbe.el xcb-dpms.el xcb-dri2.el xcb-dri3.el xcb-ge.el xcb-glx.el xcb-present.el xcb-randr.el xcb-record.el xcb-render.el xcb-res.el xcb-screensaver.el xcb-shape.el xcb-shm.el xcb-sync.el xcb-xc_misc.el xcb-xevie.el xcb-xf86dri.el xcb-xf86vidmode.el xcb-xfixes.el xcb-xinerama.el xcb-xinput.el xcb-xkb.el xcb-xprint.el xcb-xselinux.el xcb-xtest.el xcb-xvmc.el xcb-xv.el
> removed 'xcb-xproto.el'
> Loading /etc/emacs/site-start.d/00debian.el (source)...
> Loading /etc/emacs/site-start.d/50autoconf.el (source)...
>
> Using vacuous schema
> Makefile:13: update target 'xcb-shm.el' due to: target does not exist
> echo -n "\n"Generating xcb-shm.el...
> Makefile:13: update target 'xcb-xtest.el' due to: target does not exist
> echo -n "\n"Generating xcb-xtest.el...
> Makefile:13: update target 'xcb-xselinux.el' due to: target does not exist
> echo -n "\n"Generating xcb-xselinux.el...
> Makefile:13: update target 'xcb-xprint.el' due to: target does not exist
> echo -n "\n"Generating xcb-xprint.el...
>
> Generating xcb-shm.el..../xelb-gen /usr/share/xcb/shm.xml > xcb-shm.el
>
> Generating xcb-xtest.el...Makefile:13: update target 'xcb-xkb.el' due to: target does not exist
> echo -n "\n"Generating xcb-xkb.el...
>
> Generating xcb-xselinux.el..../xelb-gen /usr/share/xcb/xtest.xml > xcb-xtest.el
>
> Generating xcb-xprint.el..../xelb-gen /usr/share/xcb/xselinux.xml > xcb-xselinux.el
> ./xelb-gen /usr/share/xcb/xprint.xml > xcb-xprint.el
> Makefile:13: update target 'xcb-shape.el' due to: target does not exist
> echo -n "\n"Generating xcb-shape.el...
>
> Generating xcb-xkb.el..../xelb-gen /usr/share/xcb/xkb.xml > xcb-xkb.el
> Makefile:13: update target 'xcb-render.el' due to: target does not exist
> echo -n "\n"Generating xcb-render.el...
>
> Generating xcb-shape.el..../xelb-gen /usr/share/xcb/shape.xml > xcb-shape.el
> Makefile:13: update target 'xcb-xinerama.el' due to: target does not exist
> echo -n "\n"Generating xcb-xinerama.el...
>
> Generating xcb-render.el..../xelb-gen /usr/share/xcb/render.xml > xcb-render.el
>
> Generating xcb-xinerama.el..../xelb-gen /usr/share/xcb/xinerama.xml > xcb-xinerama.el
> Loading /etc/emacs/site-start.d/00debian.el (source)...
> Loading /etc/emacs/site-start.d/00debian.el (source)...
> Loading /etc/emacs/site-start.d/00debian.el (source)...
> Loading /etc/emacs/site-start.d/00debian.el (source)...
> Loading /etc/emacs/site-start.d/00debian.el (source)...
> Loading /etc/emacs/site-start.d/00debian.el (source)...
> Loading /etc/emacs/site-start.d/00debian.el (source)...
> Loading /etc/emacs/site-start.d/00debian.el (source)...
> Loading /etc/emacs/site-start.d/50autoconf.el (source)...
> Loading /etc/emacs/site-start.d/50autoconf.el (source)...
> Loading /etc/emacs/site-start.d/50autoconf.el (source)...
> Loading /etc/emacs/site-start.d/50autoconf.el (source)...
> Loading /etc/emacs/site-start.d/50autoconf.el (source)...
> Loading /etc/emacs/site-start.d/50autoconf.el (source)...
> Loading /etc/emacs/site-start.d/50autoconf.el (source)...
> Loading /etc/emacs/site-start.d/50autoconf.el (source)...
>
> Debugger entered--Lisp error: (file-missing "Cannot open load file" "No such file or directory" "xcb-xproto")
> require(xcb-xproto)
> (let* ((name (xelb-node-subnode node)) (header (intern (concat "xcb-" name)))) (require header) (setq xelb-imports (cons (concat "xcb:" name ":") xelb-imports)) (list (list 'require (list 'quote header))))
> xelb-parse-import((import nil "xproto"))
> (let nil (xelb-parse-import node))
> (cond ((eq val 'import) (let nil (xelb-parse-import node))) ((eq val 'struct) (let nil (xelb-parse-struct node))) ((eq val 'union) (let nil (xelb-parse-union node))) ((memq val '(xidunion xidtype)) (let nil (xelb-parse-xidtype node))) ((eq val 'enum) (let nil (xelb-parse-enum node))) ((eq val 'typedef) (let nil (xelb-parse-typedef node))) ((eq val 'request) (let nil (xelb-parse-request node))) ((eq val 'event) (let nil (xelb-parse-event node))) ((eq val 'error) (let nil (xelb-parse-error node))) ((eq val 'eventcopy) (let nil (xelb-parse-eventcopy node))) ((eq val 'errorcopy) (let nil (xelb-parse-errorcopy node))) ((eq val 'eventstruct) (let nil (xelb-parse-eventstruct node))) ((memq val '(doc comment)) 'nil) (t (let ((x val)) (error "Unsupported top-level element: <%s>" x))))
> (let* ((val (xelb-node-name node))) (cond ((eq val 'import) (let nil (xelb-parse-import node))) ((eq val 'struct) (let nil (xelb-parse-struct node))) ((eq val 'union) (let nil (xelb-parse-union node))) ((memq val '(xidunion xidtype)) (let nil (xelb-parse-xidtype node))) ((eq val 'enum) (let nil (xelb-parse-enum node))) ((eq val 'typedef) (let nil (xelb-parse-typedef node))) ((eq val 'request) (let nil (xelb-parse-request node))) ((eq val 'event) (let nil (xelb-parse-event node))) ((eq val 'error) (let nil (xelb-parse-error node))) ((eq val 'eventcopy) (let nil (xelb-parse-eventcopy node))) ((eq val 'errorcopy) (let nil (xelb-parse-errorcopy node))) ((eq val 'eventstruct) (let nil (xelb-parse-eventstruct node))) ((memq val '(doc comment)) 'nil) (t (let ((x val)) (error "Unsupported top-level element: <%s>" x)))))
> xelb-parse-top-level-element((import nil "xproto"))
> (let ((result (xelb-parse-top-level-element i))) (if result (progn (let ((tail result)) (while tail (let ((j ...)) (eval j) (pp j) (setq tail (cdr tail))))) (princ "\n"))))
> (let ((i (car tail))) (let ((result (xelb-parse-top-level-element i))) (if result (progn (let ((tail result)) (while tail (let (...) (eval j) (pp j) (setq tail ...)))) (princ "\n")))) (setq tail (cdr tail)))
> (while tail (let ((i (car tail))) (let ((result (xelb-parse-top-level-element i))) (if result (progn (let ((tail result)) (while tail (let ... ... ... ...))) (princ "\n")))) (setq tail (cdr tail))))
> (let ((tail (xelb-node-subnodes result))) (while tail (let ((i (car tail))) (let ((result (xelb-parse-top-level-element i))) (if result (progn (let (...) (while tail ...)) (princ "\n")))) (setq tail (cdr tail)))))
> (progn (insert-file-contents file) (setq result (libxml-parse-xml-region (point-min) (point-max))) (if (eq 'xcb (xelb-node-name result)) nil (setq result (xelb-node-subnode result))) (progn (or (eq 'xcb (xelb-node-name result)) (cl--assertion-failed '(eq 'xcb (xelb-node-name result)))) nil) (setq header (xelb-node-attr result 'header)) (if (string= header "xproto") nil (setq xelb-prefix (concat xelb-prefix header ":"))) (princ (format ";;; xcb-%s.el --- X11 %s -*- lexical-binding: t -*-\n\n;; Copyright (C) 2015-2024 Free Software Foundation, Inc.\n\n;; This file is part of GNU Emacs.\n\n;; GNU Emacs is free software: you can redistribute it and/or modify\n;; it under the terms of the GNU General Public License as published by\n;; the Free Software Foundation, either version 3 of the License, or\n;; (at your option) any later version.\n\n;; GNU Emacs is distributed in the hope that it will be useful,\n;; but WITHOUT ANY WARRANTY; without even the implied warranty of\n;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n;; GNU General Public License for more details.\n\n;; You should have received a copy of the GNU General Public License\n;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.\n\n;;; Commentary:\n\n;; This file was generated by 'xelb-gen' from '%s',\n;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.\n\n;;; Code:\n\n(require 'xcb-types)\n\n" header (let ((extension-name (xelb-node-attr result 'extension-name))) (if extension-name (concat extension-name " extension") "core protocol")) (file-name-nondirectory file))) (let ((extension-xname (xelb-node-attr result 'extension-xname)) (extension-name (xelb-node-attr result 'extension-name)) (major-version (xelb-node-attr result 'major-version)) (minor-version (xelb-node-attr result 'minor-version))) (if extension-xname (progn (pp (list 'defconst (intern (concat xelb-prefix "-extension-xname")) extension-xname)))) (if extension-name (progn (pp (list 'defconst (intern (concat xelb-prefix "-extension-name")) extension-name)))) (if major-version (progn (pp (list 'defconst (intern (concat xelb-prefix "-major-version")) (string-to-number major-version))))) (if minor-version (progn (pp (list 'defconst (intern (concat xelb-prefix "-minor-version")) (string-to-number minor-version))))) (if (or extension-xname extension-name major-version minor-version) (progn (princ "\n")))) (let ((tail (xelb-node-subnodes result))) (while tail (let ((i (car tail))) (let ((result (xelb-parse-top-level-element i))) (if result (progn (let ... ...) (princ "\n")))) (setq tail (cdr tail))))) (if xelb-error-alist (progn (pp (cons 'defconst (cons (intern (concat xelb-prefix "error-number-class-alist")) (cons (list ... xelb-error-alist) '...)))) (princ "\n"))) (if xelb-event-alist (progn (pp (cons 'defconst (cons (intern (concat xelb-prefix "event-number-class-alist")) (cons (list ... xelb-event-alist) '...)))) (princ "\n"))) (if xelb-xge-alist (progn (pp (cons 'defconst (cons (intern (concat xelb-prefix "xge-number-class-alist")) (cons (list ... xelb-xge-alist) '...)))) (princ "\n"))) (princ (format "\f\n\n(provide 'xcb-%s)\n\n;;; xcb-%s.el ends here\n" header header)))
> (unwind-protect (progn (insert-file-contents file) (setq result (libxml-parse-xml-region (point-min) (point-max))) (if (eq 'xcb (xelb-node-name result)) nil (setq result (xelb-node-subnode result))) (progn (or (eq 'xcb (xelb-node-name result)) (cl--assertion-failed '(eq 'xcb (xelb-node-name result)))) nil) (setq header (xelb-node-attr result 'header)) (if (string= header "xproto") nil (setq xelb-prefix (concat xelb-prefix header ":"))) (princ (format ";;; xcb-%s.el --- X11 %s -*- lexical-binding: t -*-\n\n;; Copyright (C) 2015-2024 Free Software Foundation, Inc.\n\n;; This file is part of GNU Emacs.\n\n;; GNU Emacs is free software: you can redistribute it and/or modify\n;; it under the terms of the GNU General Public License as published by\n;; the Free Software Foundation, either version 3 of the License, or\n;; (at your option) any later version.\n\n;; GNU Emacs is distributed in the hope that it will be useful,\n;; but WITHOUT ANY WARRANTY; without even the implied warranty of\n;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n;; GNU General Public License for more details.\n\n;; You should have received a copy of the GNU General Public License\n;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.\n\n;;; Commentary:\n\n;; This file was generated by 'xelb-gen' from '%s',\n;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.\n\n;;; Code:\n\n(require 'xcb-types)\n\n" header (let ((extension-name (xelb-node-attr result ...))) (if extension-name (concat extension-name " extension") "core protocol")) (file-name-nondirectory file))) (let ((extension-xname (xelb-node-attr result 'extension-xname)) (extension-name (xelb-node-attr result 'extension-name)) (major-version (xelb-node-attr result 'major-version)) (minor-version (xelb-node-attr result 'minor-version))) (if extension-xname (progn (pp (list 'defconst (intern ...) extension-xname)))) (if extension-name (progn (pp (list 'defconst (intern ...) extension-name)))) (if major-version (progn (pp (list 'defconst (intern ...) (string-to-number major-version))))) (if minor-version (progn (pp (list 'defconst (intern ...) (string-to-number minor-version))))) (if (or extension-xname extension-name major-version minor-version) (progn (princ "\n")))) (let ((tail (xelb-node-subnodes result))) (while tail (let ((i (car tail))) (let ((result ...)) (if result (progn ... ...))) (setq tail (cdr tail))))) (if xelb-error-alist (progn (pp (cons 'defconst (cons (intern ...) (cons ... ...)))) (princ "\n"))) (if xelb-event-alist (progn (pp (cons 'defconst (cons (intern ...) (cons ... ...)))) (princ "\n"))) (if xelb-xge-alist (progn (pp (cons 'defconst (cons (intern ...) (cons ... ...)))) (princ "\n"))) (princ (format "\f\n\n(provide 'xcb-%s)\n\n;;; xcb-%s.el ends here\n" header header))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))
> (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (insert-file-contents file) (setq result (libxml-parse-xml-region (point-min) (point-max))) (if (eq 'xcb (xelb-node-name result)) nil (setq result (xelb-node-subnode result))) (progn (or (eq 'xcb (xelb-node-name result)) (cl--assertion-failed '(eq ... ...))) nil) (setq header (xelb-node-attr result 'header)) (if (string= header "xproto") nil (setq xelb-prefix (concat xelb-prefix header ":"))) (princ (format ";;; xcb-%s.el --- X11 %s -*- lexical-binding: t -*-\n\n;; Copyright (C) 2015-2024 Free Software Foundation, Inc.\n\n;; This file is part of GNU Emacs.\n\n;; GNU Emacs is free software: you can redistribute it and/or modify\n;; it under the terms of the GNU General Public License as published by\n;; the Free Software Foundation, either version 3 of the License, or\n;; (at your option) any later version.\n\n;; GNU Emacs is distributed in the hope that it will be useful,\n;; but WITHOUT ANY WARRANTY; without even the implied warranty of\n;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n;; GNU General Public License for more details.\n\n;; You should have received a copy of the GNU General Public License\n;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.\n\n;;; Commentary:\n\n;; This file was generated by 'xelb-gen' from '%s',\n;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.\n\n;;; Code:\n\n(require 'xcb-types)\n\n" header (let ((extension-name ...)) (if extension-name (concat extension-name " extension") "core protocol")) (file-name-nondirectory file))) (let ((extension-xname (xelb-node-attr result 'extension-xname)) (extension-name (xelb-node-attr result 'extension-name)) (major-version (xelb-node-attr result 'major-version)) (minor-version (xelb-node-attr result 'minor-version))) (if extension-xname (progn (pp (list ... ... extension-xname)))) (if extension-name (progn (pp (list ... ... extension-name)))) (if major-version (progn (pp (list ... ... ...)))) (if minor-version (progn (pp (list ... ... ...)))) (if (or extension-xname extension-name major-version minor-version) (progn (princ "\n")))) (let ((tail (xelb-node-subnodes result))) (while tail (let ((i ...)) (let (...) (if result ...)) (setq tail (cdr tail))))) (if xelb-error-alist (progn (pp (cons 'defconst (cons ... ...))) (princ "\n"))) (if xelb-event-alist (progn (pp (cons 'defconst (cons ... ...))) (princ "\n"))) (if xelb-xge-alist (progn (pp (cons 'defconst (cons ... ...))) (princ "\n"))) (princ (format "\f\n\n(provide 'xcb-%s)\n\n;;; xcb-%s.el ends here\n" header header))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))
> (let ((temp-buffer (generate-new-buffer " *temp*" t))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (insert-file-contents file) (setq result (libxml-parse-xml-region (point-min) (point-max))) (if (eq 'xcb (xelb-node-name result)) nil (setq result (xelb-node-subnode result))) (progn (or (eq 'xcb (xelb-node-name result)) (cl--assertion-failed '...)) nil) (setq header (xelb-node-attr result 'header)) (if (string= header "xproto") nil (setq xelb-prefix (concat xelb-prefix header ":"))) (princ (format ";;; xcb-%s.el --- X11 %s -*- lexical-binding: t -*-\n\n;; Copyright (C) 2015-2024 Free Software Foundation, Inc.\n\n;; This file is part of GNU Emacs.\n\n;; GNU Emacs is free software: you can redistribute it and/or modify\n;; it under the terms of the GNU General Public License as published by\n;; the Free Software Foundation, either version 3 of the License, or\n;; (at your option) any later version.\n\n;; GNU Emacs is distributed in the hope that it will be useful,\n;; but WITHOUT ANY WARRANTY; without even the implied warranty of\n;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n;; GNU General Public License for more details.\n\n;; You should have received a copy of the GNU General Public License\n;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.\n\n;;; Commentary:\n\n;; This file was generated by 'xelb-gen' from '%s',\n;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.\n\n;;; Code:\n\n(require 'xcb-types)\n\n" header (let (...) (if extension-name ... "core protocol")) (file-name-nondirectory file))) (let ((extension-xname (xelb-node-attr result ...)) (extension-name (xelb-node-attr result ...)) (major-version (xelb-node-attr result ...)) (minor-version (xelb-node-attr result ...))) (if extension-xname (progn (pp ...))) (if extension-name (progn (pp ...))) (if major-version (progn (pp ...))) (if minor-version (progn (pp ...))) (if (or extension-xname extension-name major-version minor-version) (progn (princ "\n")))) (let ((tail (xelb-node-subnodes result))) (while tail (let (...) (let ... ...) (setq tail ...)))) (if xelb-error-alist (progn (pp (cons ... ...)) (princ "\n"))) (if xelb-event-alist (progn (pp (cons ... ...)) (princ "\n"))) (if xelb-xge-alist (progn (pp (cons ... ...)) (princ "\n"))) (princ (format "\f\n\n(provide 'xcb-%s)\n\n;;; xcb-%s.el ends here\n" header header))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))))
> (let ((pp-escape-newlines nil) (pp-default-function 'pp-28) result header) (let ((temp-buffer (generate-new-buffer " *temp*" t))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (insert-file-contents file) (setq result (libxml-parse-xml-region (point-min) (point-max))) (if (eq 'xcb (xelb-node-name result)) nil (setq result (xelb-node-subnode result))) (progn (or (eq ... ...) (cl--assertion-failed ...)) nil) (setq header (xelb-node-attr result 'header)) (if (string= header "xproto") nil (setq xelb-prefix (concat xelb-prefix header ":"))) (princ (format ";;; xcb-%s.el --- X11 %s -*- lexical-binding: t -*-\n\n;; Copyright (C) 2015-2024 Free Software Foundation, Inc.\n\n;; This file is part of GNU Emacs.\n\n;; GNU Emacs is free software: you can redistribute it and/or modify\n;; it under the terms of the GNU General Public License as published by\n;; the Free Software Foundation, either version 3 of the License, or\n;; (at your option) any later version.\n\n;; GNU Emacs is distributed in the hope that it will be useful,\n;; but WITHOUT ANY WARRANTY; without even the implied warranty of\n;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n;; GNU General Public License for more details.\n\n;; You should have received a copy of the GNU General Public License\n;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.\n\n;;; Commentary:\n\n;; This file was generated by 'xelb-gen' from '%s',\n;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.\n\n;;; Code:\n\n(require 'xcb-types)\n\n" header (let ... ...) (file-name-nondirectory file))) (let ((extension-xname ...) (extension-name ...) (major-version ...) (minor-version ...)) (if extension-xname (progn ...)) (if extension-name (progn ...)) (if major-version (progn ...)) (if minor-version (progn ...)) (if (or extension-xname extension-name major-version minor-version) (progn ...))) (let ((tail ...)) (while tail (let ... ... ...))) (if xelb-error-alist (progn (pp ...) (princ "\n"))) (if xelb-event-alist (progn (pp ...) (princ "\n"))) (if xelb-xge-alist (progn (pp ...) (princ "\n"))) (princ (format "\f\n\n(provide 'xcb-%s)\n\n;;; xcb-%s.el ends here\n" header header))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))))
> xelb-parse("/usr/share/xcb/xprint.xml")
> (if (not argv) (error "Usage: xelb-gen <protocol.xml> [additional_load_paths]") (add-to-list 'load-path default-directory) (let ((tail (cdr argv))) (while tail (let ((i (car tail))) (add-to-list 'load-path i) (setq tail (cdr tail))))) (require 'xcb-types) (xelb-parse (car argv)))
> #<subr F616e6f6e796d6f75732d6c616d626461_anonymous_lambda_101>(#<buffer *load*> "/build/reproducible-path/xelb-0.20/xelb-gen")
> load-with-code-conversion("/build/reproducible-path/xelb-0.20/xelb-gen" "/build/reproducible-path/xelb-0.20/xelb-gen" nil t #<subr F616e6f6e796d6f75732d6c616d626461_anonymous_lambda_101>)
> command-line--load-script("/build/reproducible-path/xelb-0.20/xelb-gen")
> command-line-1(("--no-splash" "-scriptload" "./xelb-gen" "/usr/share/xcb/xprint.xml"))
> command-line()
> normal-top-level()
>
>
> Debugger entered--Lisp error: (file-missing "Cannot open load file" "No such file or directory" "xcb-xproto")
> require(xcb-xproto)
> (let* ((name (xelb-node-subnode node)) (header (intern (concat "xcb-" name)))) (require header) (setq xelb-imports (cons (concat "xcb:" name ":") xelb-imports)) (list (list 'require (list 'quote header))))
> xelb-parse-import((import nil "xproto"))
> (let nil (xelb-parse-import node))
> (cond ((eq val 'import) (let nil (xelb-parse-import node))) ((eq val 'struct) (let nil (xelb-parse-struct node))) ((eq val 'union) (let nil (xelb-parse-union node))) ((memq val '(xidunion xidtype)) (let nil (xelb-parse-xidtype node))) ((eq val 'enum) (let nil (xelb-parse-enum node))) ((eq val 'typedef) (let nil (xelb-parse-typedef node))) ((eq val 'request) (let nil (xelb-parse-request node))) ((eq val 'event) (let nil (xelb-parse-event node))) ((eq val 'error) (let nil (xelb-parse-error node))) ((eq val 'eventcopy) (let nil (xelb-parse-eventcopy node))) ((eq val 'errorcopy) (let nil (xelb-parse-errorcopy node))) ((eq val 'eventstruct) (let nil (xelb-parse-eventstruct node))) ((memq val '(doc comment)) 'nil) (t (let ((x val)) (error "Unsupported top-level element: <%s>" x))))
> (let* ((val (xelb-node-name node))) (cond ((eq val 'import) (let nil (xelb-parse-import node))) ((eq val 'struct) (let nil (xelb-parse-struct node))) ((eq val 'union) (let nil (xelb-parse-union node))) ((memq val '(xidunion xidtype)) (let nil (xelb-parse-xidtype node))) ((eq val 'enum) (let nil (xelb-parse-enum node))) ((eq val 'typedef) (let nil (xelb-parse-typedef node))) ((eq val 'request) (let nil (xelb-parse-request node))) ((eq val 'event) (let nil (xelb-parse-event node))) ((eq val 'error) (let nil (xelb-parse-error node))) ((eq val 'eventcopy) (let nil (xelb-parse-eventcopy node))) ((eq val 'errorcopy) (let nil (xelb-parse-errorcopy node))) ((eq val 'eventstruct) (let nil (xelb-parse-eventstruct node))) ((memq val '(doc comment)) 'nil) (t (let ((x val)) (error "Unsupported top-level element: <%s>" x)))))
> xelb-parse-top-level-element((import nil "xproto"))
> (let ((result (xelb-parse-top-level-element i))) (if result (progn (let ((tail result)) (while tail (let ((j ...)) (eval j) (pp j) (setq tail (cdr tail))))) (princ "\n"))))
> (let ((i (car tail))) (let ((result (xelb-parse-top-level-element i))) (if result (progn (let ((tail result)) (while tail (let (...) (eval j) (pp j) (setq tail ...)))) (princ "\n")))) (setq tail (cdr tail)))
> (while tail (let ((i (car tail))) (let ((result (xelb-parse-top-level-element i))) (if result (progn (let ((tail result)) (while tail (let ... ... ... ...))) (princ "\n")))) (setq tail (cdr tail))))
> (let ((tail (xelb-node-subnodes result))) (while tail (let ((i (car tail))) (let ((result (xelb-parse-top-level-element i))) (if result (progn (let (...) (while tail ...)) (princ "\n")))) (setq tail (cdr tail)))))
> (progn (insert-file-contents file) (setq result (libxml-parse-xml-region (point-min) (point-max))) (if (eq 'xcb (xelb-node-name result)) nil (setq result (xelb-node-subnode result))) (progn (or (eq 'xcb (xelb-node-name result)) (cl--assertion-failed '(eq 'xcb (xelb-node-name result)))) nil) (setq header (xelb-node-attr result 'header)) (if (string= header "xproto") nil (setq xelb-prefix (concat xelb-prefix header ":"))) (princ (format ";;; xcb-%s.el --- X11 %s -*- lexical-binding: t -*-\n\n;; Copyright (C) 2015-2024 Free Software Foundation, Inc.\n\n;; This file is part of GNU Emacs.\n\n;; GNU Emacs is free software: you can redistribute it and/or modify\n;; it under the terms of the GNU General Public License as published by\n;; the Free Software Foundation, either version 3 of the License, or\n;; (at your option) any later version.\n\n;; GNU Emacs is distributed in the hope that it will be useful,\n;; but WITHOUT ANY WARRANTY; without even the implied warranty of\n;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n;; GNU General Public License for more details.\n\n;; You should have received a copy of the GNU General Public License\n;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.\n\n;;; Commentary:\n\n;; This file was generated by 'xelb-gen' from '%s',\n;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.\n\n;;; Code:\n\n(require 'xcb-types)\n\n" header (let ((extension-name (xelb-node-attr result 'extension-name))) (if extension-name (concat extension-name " extension") "core protocol")) (file-name-nondirectory file))) (let ((extension-xname (xelb-node-attr result 'extension-xname)) (extension-name (xelb-node-attr result 'extension-name)) (major-version (xelb-node-attr result 'major-version)) (minor-version (xelb-node-attr result 'minor-version))) (if extension-xname (progn (pp (list 'defconst (intern (concat xelb-prefix "-extension-xname")) extension-xname)))) (if extension-name (progn (pp (list 'defconst (intern (concat xelb-prefix "-extension-name")) extension-name)))) (if major-version (progn (pp (list 'defconst (intern (concat xelb-prefix "-major-version")) (string-to-number major-version))))) (if minor-version (progn (pp (list 'defconst (intern (concat xelb-prefix "-minor-version")) (string-to-number minor-version))))) (if (or extension-xname extension-name major-version minor-version) (progn (princ "\n")))) (let ((tail (xelb-node-subnodes result))) (while tail (let ((i (car tail))) (let ((result (xelb-parse-top-level-element i))) (if result (progn (let ... ...) (princ "\n")))) (setq tail (cdr tail))))) (if xelb-error-alist (progn (pp (cons 'defconst (cons (intern (concat xelb-prefix "error-number-class-alist")) (cons (list ... xelb-error-alist) '...)))) (princ "\n"))) (if xelb-event-alist (progn (pp (cons 'defconst (cons (intern (concat xelb-prefix "event-number-class-alist")) (cons (list ... xelb-event-alist) '...)))) (princ "\n"))) (if xelb-xge-alist (progn (pp (cons 'defconst (cons (intern (concat xelb-prefix "xge-number-class-alist")) (cons (list ... xelb-xge-alist) '...)))) (princ "\n"))) (princ (format "\f\n\n(provide 'xcb-%s)\n\n;;; xcb-%s.el ends here\n" header header)))
> (unwind-protect (progn (insert-file-contents file) (setq result (libxml-parse-xml-region (point-min) (point-max))) (if (eq 'xcb (xelb-node-name result)) nil (setq result (xelb-node-subnode result))) (progn (or (eq 'xcb (xelb-node-name result)) (cl--assertion-failed '(eq 'xcb (xelb-node-name result)))) nil) (setq header (xelb-node-attr result 'header)) (if (string= header "xproto") nil (setq xelb-prefix (concat xelb-prefix header ":"))) (princ (format ";;; xcb-%s.el --- X11 %s -*- lexical-binding: t -*-\n\n;; Copyright (C) 2015-2024 Free Software Foundation, Inc.\n\n;; This file is part of GNU Emacs.\n\n;; GNU Emacs is free software: you can redistribute it and/or modify\n;; it under the terms of the GNU General Public License as published by\n;; the Free Software Foundation, either version 3 of the License, or\n;; (at your option) any later version.\n\n;; GNU Emacs is distributed in the hope that it will be useful,\n;; but WITHOUT ANY WARRANTY; without even the implied warranty of\n;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n;; GNU General Public License for more details.\n\n;; You should have received a copy of the GNU General Public License\n;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.\n\n;;; Commentary:\n\n;; This file was generated by 'xelb-gen' from '%s',\n;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.\n\n;;; Code:\n\n(require 'xcb-types)\n\n" header (let ((extension-name (xelb-node-attr result ...))) (if extension-name (concat extension-name " extension") "core protocol")) (file-name-nondirectory file))) (let ((extension-xname (xelb-node-attr result 'extension-xname)) (extension-name (xelb-node-attr result 'extension-name)) (major-version (xelb-node-attr result 'major-version)) (minor-version (xelb-node-attr result 'minor-version))) (if extension-xname (progn (pp (list 'defconst (intern ...) extension-xname)))) (if extension-name (progn (pp (list 'defconst (intern ...) extension-name)))) (if major-version (progn (pp (list 'defconst (intern ...) (string-to-number major-version))))) (if minor-version (progn (pp (list 'defconst (intern ...) (string-to-number minor-version))))) (if (or extension-xname extension-name major-version minor-version) (progn (princ "\n")))) (let ((tail (xelb-node-subnodes result))) (while tail (let ((i (car tail))) (let ((result ...)) (if result (progn ... ...))) (setq tail (cdr tail))))) (if xelb-error-alist (progn (pp (cons 'defconst (cons (intern ...) (cons ... ...)))) (princ "\n"))) (if xelb-event-alist (progn (pp (cons 'defconst (cons (intern ...) (cons ... ...)))) (princ "\n"))) (if xelb-xge-alist (progn (pp (cons 'defconst (cons (intern ...) (cons ... ...)))) (princ "\n"))) (princ (format "\f\n\n(provide 'xcb-%s)\n\n;;; xcb-%s.el ends here\n" header header))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))
> (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (insert-file-contents file) (setq result (libxml-parse-xml-region (point-min) (point-max))) (if (eq 'xcb (xelb-node-name result)) nil (setq result (xelb-node-subnode result))) (progn (or (eq 'xcb (xelb-node-name result)) (cl--assertion-failed '(eq ... ...))) nil) (setq header (xelb-node-attr result 'header)) (if (string= header "xproto") nil (setq xelb-prefix (concat xelb-prefix header ":"))) (princ (format ";;; xcb-%s.el --- X11 %s -*- lexical-binding: t -*-\n\n;; Copyright (C) 2015-2024 Free Software Foundation, Inc.\n\n;; This file is part of GNU Emacs.\n\n;; GNU Emacs is free software: you can redistribute it and/or modify\n;; it under the terms of the GNU General Public License as published by\n;; the Free Software Foundation, either version 3 of the License, or\n;; (at your option) any later version.\n\n;; GNU Emacs is distributed in the hope that it will be useful,\n;; but WITHOUT ANY WARRANTY; without even the implied warranty of\n;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n;; GNU General Public License for more details.\n\n;; You should have received a copy of the GNU General Public License\n;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.\n\n;;; Commentary:\n\n;; This file was generated by 'xelb-gen' from '%s',\n;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.\n\n;;; Code:\n\n(require 'xcb-types)\n\n" header (let ((extension-name ...)) (if extension-name (concat extension-name " extension") "core protocol")) (file-name-nondirectory file))) (let ((extension-xname (xelb-node-attr result 'extension-xname)) (extension-name (xelb-node-attr result 'extension-name)) (major-version (xelb-node-attr result 'major-version)) (minor-version (xelb-node-attr result 'minor-version))) (if extension-xname (progn (pp (list ... ... extension-xname)))) (if extension-name (progn (pp (list ... ... extension-name)))) (if major-version (progn (pp (list ... ... ...)))) (if minor-version (progn (pp (list ... ... ...)))) (if (or extension-xname extension-name major-version minor-version) (progn (princ "\n")))) (let ((tail (xelb-node-subnodes result))) (while tail (let ((i ...)) (let (...) (if result ...)) (setq tail (cdr tail))))) (if xelb-error-alist (progn (pp (cons 'defconst (cons ... ...))) (princ "\n"))) (if xelb-event-alist (progn (pp (cons 'defconst (cons ... ...))) (princ "\n"))) (if xelb-xge-alist (progn (pp (cons 'defconst (cons ... ...))) (princ "\n"))) (princ (format "\f\n\n(provide 'xcb-%s)\n\n;;; xcb-%s.el ends here\n" header header))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))
> (let ((temp-buffer (generate-new-buffer " *temp*" t))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (insert-file-contents file) (setq result (libxml-parse-xml-region (point-min) (point-max))) (if (eq 'xcb (xelb-node-name result)) nil (setq result (xelb-node-subnode result))) (progn (or (eq 'xcb (xelb-node-name result)) (cl--assertion-failed '...)) nil) (setq header (xelb-node-attr result 'header)) (if (string= header "xproto") nil (setq xelb-prefix (concat xelb-prefix header ":"))) (princ (format ";;; xcb-%s.el --- X11 %s -*- lexical-binding: t -*-\n\n;; Copyright (C) 2015-2024 Free Software Foundation, Inc.\n\n;; This file is part of GNU Emacs.\n\n;; GNU Emacs is free software: you can redistribute it and/or modify\n;; it under the terms of the GNU General Public License as published by\n;; the Free Software Foundation, either version 3 of the License, or\n;; (at your option) any later version.\n\n;; GNU Emacs is distributed in the hope that it will be useful,\n;; but WITHOUT ANY WARRANTY; without even the implied warranty of\n;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n;; GNU General Public License for more details.\n\n;; You should have received a copy of the GNU General Public License\n;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.\n\n;;; Commentary:\n\n;; This file was generated by 'xelb-gen' from '%s',\n;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.\n\n;;; Code:\n\n(require 'xcb-types)\n\n" header (let (...) (if extension-name ... "core protocol")) (file-name-nondirectory file))) (let ((extension-xname (xelb-node-attr result ...)) (extension-name (xelb-node-attr result ...)) (major-version (xelb-node-attr result ...)) (minor-version (xelb-node-attr result ...))) (if extension-xname (progn (pp ...))) (if extension-name (progn (pp ...))) (if major-version (progn (pp ...))) (if minor-version (progn (pp ...))) (if (or extension-xname extension-name major-version minor-version) (progn (princ "\n")))) (let ((tail (xelb-node-subnodes result))) (while tail (let (...) (let ... ...) (setq tail ...)))) (if xelb-error-alist (progn (pp (cons ... ...)) (princ "\n"))) (if xelb-event-alist (progn (pp (cons ... ...)) (princ "\n"))) (if xelb-xge-alist (progn (pp (cons ... ...)) (princ "\n"))) (princ (format "\f\n\n(provide 'xcb-%s)\n\n;;; xcb-%s.el ends here\n" header header))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))))
> (let ((pp-escape-newlines nil) (pp-default-function 'pp-28) result header) (let ((temp-buffer (generate-new-buffer " *temp*" t))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (insert-file-contents file) (setq result (libxml-parse-xml-region (point-min) (point-max))) (if (eq 'xcb (xelb-node-name result)) nil (setq result (xelb-node-subnode result))) (progn (or (eq ... ...) (cl--assertion-failed ...)) nil) (setq header (xelb-node-attr result 'header)) (if (string= header "xproto") nil (setq xelb-prefix (concat xelb-prefix header ":"))) (princ (format ";;; xcb-%s.el --- X11 %s -*- lexical-binding: t -*-\n\n;; Copyright (C) 2015-2024 Free Software Foundation, Inc.\n\n;; This file is part of GNU Emacs.\n\n;; GNU Emacs is free software: you can redistribute it and/or modify\n;; it under the terms of the GNU General Public License as published by\n;; the Free Software Foundation, either version 3 of the License, or\n;; (at your option) any later version.\n\n;; GNU Emacs is distributed in the hope that it will be useful,\n;; but WITHOUT ANY WARRANTY; without even the implied warranty of\n;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n;; GNU General Public License for more details.\n\n;; You should have received a copy of the GNU General Public License\n;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.\n\n;;; Commentary:\n\n;; This file was generated by 'xelb-gen' from '%s',\n;; which you can retrieve from <git://anongit.freedesktop.org/xcb/proto>.\n\n;;; Code:\n\n(require 'xcb-types)\n\n" header (let ... ...) (file-name-nondirectory file))) (let ((extension-xname ...) (extension-name ...) (major-version ...) (minor-version ...)) (if extension-xname (progn ...)) (if extension-name (progn ...)) (if major-version (progn ...)) (if minor-version (progn ...)) (if (or extension-xname extension-name major-version minor-version) (progn ...))) (let ((tail ...)) (while tail (let ... ... ...))) (if xelb-error-alist (progn (pp ...) (princ "\n"))) (if xelb-event-alist (progn (pp ...) (princ "\n"))) (if xelb-xge-alist (progn (pp ...) (princ "\n"))) (princ (format "\f\n\n(provide 'xcb-%s)\n\n;;; xcb-%s.el ends here\n" header header))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))))
> xelb-parse("/usr/share/xcb/render.xml")
> (if (not argv) (error "Usage: xelb-gen <protocol.xml> [additional_load_paths]") (add-to-list 'load-path default-directory) (let ((tail (cdr argv))) (while tail (let ((i (car tail))) (add-to-list 'load-path i) (setq tail (cdr tail))))) (require 'xcb-types) (xelb-parse (car argv)))
> #<subr F616e6f6e796d6f75732d6c616d626461_anonymous_lambda_101>(#<buffer *load*> "/build/reproducible-path/xelb-0.20/xelb-gen")
> load-with-code-conversion("/build/reproducible-path/xelb-0.20/xelb-gen" "/build/reproducible-path/xelb-0.20/xelb-gen" nil t #<subr F616e6f6e796d6f75732d6c616d626461_anonymous_lambda_101>)
> command-line--load-script("/build/reproducible-path/xelb-0.20/xelb-gen")
> command-line-1(("--no-splash" "-scriptload" "./xelb-gen" "/usr/share/xcb/render.xml"))
> command-line()
> normal-top-level()
>
> make[1]: *** [Makefile:13: xcb-xprint.el] Error 255 shuffle=reverse
The full build log is available from:
http://qa-logs.debian.net/2025/05/05/shuffle/reverse/xelb_0.20-1_unstable_reverse.log
If you reassign this bug to another package, please mark it as 'affects'-ing
this package. See https://www.debian.org/Bugs/server-control#affects
Reply to: