Skip to content

Support for Linux aarch64 #287

@amiorin

Description

@amiorin

I use Emacs inside docker in macos and I get this error (see below). My root cause analysis is that tsc-dyn.so is the wrong architecture. I fixed the problem by recompiling tsc-dyn.so manually.

I was wondering if someone can add support for Linux aarch64.

❯ file /home/vscode/.emacs.d/.local/straight/build-29.4/tsc/tsc-dyn.so
/home/vscode/.emacs.d/.local/straight/build-29.4/tsc/tsc-dyn.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=15ed034f4aff2ead184f525693f576eaa34ab9f6, with debug_info, not stripped
Debugger entered--Lisp error: (module-open-failed "/home/vscode/.emacs.d/.local/straight/build-29.4/tsc/tsc-dyn.so" "/home/vscode/.emacs.d/.local/straight/build-29.4/tsc/tsc-dyn.so: cannot open shared object file: No such file or directory")
  require(tsc-dyn nil :noerror)
  tsc-dyn--try-load()
  tsc-dyn-get-ensure("0.18.0")
  (progn (defconst tsc--dyn-version "0.18.0" "Required version of the dynamic module `tsc-dyn'.") (require 'tsc-dyn-get) (tsc-dyn-get-ensure tsc--dyn-version))
  eval((progn (defconst tsc--dyn-version "0.18.0" "Required version of the dynamic module `tsc-dyn'.") (require 'tsc-dyn-get) (tsc-dyn-get-ensure tsc--dyn-version)) t)
  #f(compiled-function (&rest body) "Like `progn', but evaluates the body at compile time and at load time.\nIn interpreted code, this is entirely equivalent to `progn',\nexcept that the value of the expression may be (but is not\nnecessarily) computed at load time if eager macro expansion is\nenabled." #<bytecode -0x94abcbe32b39d6a>)((defconst tsc--dyn-version "0.18.0" "Required version of the dynamic module `tsc-dyn'.") (require 'tsc-dyn-get) (tsc-dyn-get-ensure tsc--dyn-version))
  macroexpand((eval-and-compile (defconst tsc--dyn-version "0.18.0" "Required version of the dynamic module `tsc-dyn'.") (require 'tsc-dyn-get) (tsc-dyn-get-ensure tsc--dyn-version)))
  internal-macroexpand-for-load((eval-and-compile (defconst tsc--dyn-version "0.18.0" "Required version of the dynamic module `tsc-dyn'.") (require 'tsc-dyn-get) (tsc-dyn-get-ensure tsc--dyn-version)) nil)
  load-with-code-conversion("/home/vscode/.emacs.d/.local/straight/build-29.4/tsc/tsc.el" "/home/vscode/.emacs.d/.local/straight/build-29.4/tsc/tsc.el" nil t)
  require(tsc)
  load-with-code-conversion("/home/vscode/.emacs.d/.local/straight/build-29.4/tree-sitter/tree-sitter.el" "/home/vscode/.emacs.d/.local/straight/build-29.4/tree-sitter/tree-sitter.el" nil t)
  (turn-on-tree-sitter-mode)
  tree-sitter!()
  funcall(tree-sitter!)
  (condition-case e (funcall hook) ((debug error) (signal 'doom-hook-error (list hook e))))
  doom-run-hook(tree-sitter!)
  run-hook-wrapped(doom-run-hook tree-sitter!)
  (let ((doom--hook hook)) (run-hook-wrapped hook #'doom-run-hook))
  (condition-case e (let ((doom--hook hook)) (run-hook-wrapped hook #'doom-run-hook)) ((debug doom-hook-error) (if debug-on-error nil (lwarn hook :error "Error running hook %S because: %s" (if (symbolp (car (cdr e))) (symbol-name (car (cdr e))) (car (cdr e))) (car (cdr (cdr e))))) (signal 'doom-hook-error (cons hook (cdr e)))))
  (let ((hook (car tail))) (condition-case e (let ((doom--hook hook)) (run-hook-wrapped hook #'doom-run-hook)) ((debug doom-hook-error) (if debug-on-error nil (lwarn hook :error "Error running hook %S because: %s" (if (symbolp (car ...)) (symbol-name (car ...)) (car (cdr e))) (car (cdr (cdr e))))) (signal 'doom-hook-error (cons hook (cdr e))))) (setq tail (cdr tail)))
  (while tail (let ((hook (car tail))) (condition-case e (let ((doom--hook hook)) (run-hook-wrapped hook #'doom-run-hook)) ((debug doom-hook-error) (if debug-on-error nil (lwarn hook :error "Error running hook %S because: %s" (if (symbolp ...) (symbol-name ...) (car ...)) (car (cdr ...)))) (signal 'doom-hook-error (cons hook (cdr e))))) (setq tail (cdr tail))))
  (let ((tail hooks)) (while tail (let ((hook (car tail))) (condition-case e (let ((doom--hook hook)) (run-hook-wrapped hook #'doom-run-hook)) ((debug doom-hook-error) (if debug-on-error nil (lwarn hook :error "Error running hook %S because: %s" (if ... ... ...) (car ...))) (signal 'doom-hook-error (cons hook (cdr e))))) (setq tail (cdr tail)))))
  doom-run-hooks(clojure-mode-local-vars-hook)
  (if (or doom-inhibit-local-var-hooks delay-mode-hooks (string-prefix-p " " (buffer-name (or (buffer-base-buffer) (current-buffer))))) nil (set (make-local-variable 'doom-inhibit-local-var-hooks) t) (doom-run-hooks (intern-soft (format "%s-local-vars-hook" major-mode))))
  doom-run-local-var-hooks-h()
  hack-local-variables-apply()
  #<subr hack-local-variables>(no-mode)
  so-long--hack-local-variables(#<subr hack-local-variables> no-mode)
  apply(so-long--hack-local-variables #<subr hack-local-variables> no-mode)
  hack-local-variables(no-mode)
  run-mode-hooks(clojure-mode-hook)
  clojure-mode()
  set-auto-mode-0(clojure-mode nil)
  set-auto-mode--apply-alist((("Procfile\\'" . yaml-mode) ("/bspwmrc\\'" . sh-mode) ("\\.\\(?:zunit\\|env\\)\\'" . sh-mode) ("\\.bats\\'" . sh-mode) ("/Pipfile\\'" . conf-mode) ("[./]flake8\\'" . conf-mode) ("/README\\(?:\\.md\\)?\\'" . gfm-mode) ("\\.Cask\\'" . emacs-lisp-mode) ("/git/ignore\\'" . gitignore-mode) ("/info/exclude\\'" . gitignore-mode) ("/\\.gitignore\\'" . gitignore-mode) ("/etc/gitconfig\\'" . gitconfig-mode) ("/\\.gitmodules\\'" . gitconfig-mode) ("/git/config\\'" . gitconfig-mode) ("/modules/.*/config\\'" . gitconfig-mode) ("/\\.git/config\\'" . gitconfig-mode) ("/\\.gitconfig\\'" . gitconfig-mode) ("/git/attributes\\'" . gitattributes-mode) ("/info/attributes\\'" . gitattributes-mode) ("/\\.gitattributes\\'" . gitattributes-mode) ("\\.dockerfile\\'" . dockerfile-mode) ("[/\\]\\(?:Containerfile\\|Dockerfile\\)\\(?:\\.[^/\\]*\\)?..." . dockerfile-mode) ("\\.tf\\(vars\\)?\\'" . terraform-mode) ("\\.nomad\\'" . hcl-mode) ("\\.hcl\\'" . hcl-mode) ("/git-rebase-todo\\'" . git-rebase-mode) ("\\(?:build\\|profile\\)\\.boot\\'" . clojure-mode) ("\\.cljs\\'" . clojurescript-mode) ("\\.cljc\\'" . clojurec-mode) ("\\.\\(clj\\|cljd\\|dtm\\|edn\\|lpy\\)\\'" . clojure-mode) ("requirements\\.in" . pip-requirements-mode) ("requirements[^z-a]*\\.txt\\'" . pip-requirements-mode) ("\\.pip\\'" . pip-requirements-mode) ("\\.\\(?:md\\|markdown\\|mkd\\|mdown\\|mkdn\\|mdwn\\)\\'" . markdown-mode) ("\\.\\(e?ya?\\|ra\\)ml\\'" . yaml-mode) ("\\.gpg\\(~\\|\\.~[0-9]+~\\)?\\'" nil epa-file) ("\\.elc\\'" . elisp-byte-code-mode) ("\\.zst\\'" nil jka-compr) ("\\.dz\\'" nil jka-compr) ("\\.xz\\'" nil jka-compr) ("\\.lzma\\'" nil jka-compr) ("\\.lz\\'" nil jka-compr) ("\\.g?z\\'" nil jka-compr) ("\\.bz2\\'" nil jka-compr) ("\\.Z\\'" nil jka-compr) ("\\.vr[hi]?\\'" . vera-mode) ("\\(?:\\.\\(?:rbw?\\|ru\\|rake\\|thor\\|jbuilder\\|rabl\\|ge..." . ruby-mode) ("\\.re?st\\'" . rst-mode) ("\\.py[iw]?\\'" . python-mode) ("\\.m\\'" . octave-maybe-mode) ...) nil nil)
  #<subr set-auto-mode>()
  apply(#<subr set-auto-mode> nil)
  #f(advice auto-minor-mode-set :after #<subr set-auto-mode>)()
  apply(#f(advice auto-minor-mode-set :after #<subr set-auto-mode>) nil)
  (progn (apply fn args))
  (unwind-protect (progn (apply fn args)) (when (buffer-live-p buf) (with-current-buffer buf (evil-change-state old-state))))
  (let ((evil-state evil-state) (evil-previous-state evil-previous-state) (evil-previous-state-alist (copy-tree evil-previous-state-alist)) (evil-next-state evil-next-state) (old-state evil-state) (inhibit-quit t) (buf (current-buffer))) (unwind-protect (progn (apply fn args)) (when (buffer-live-p buf) (with-current-buffer buf (evil-change-state old-state)))))
  (evil-save-state (apply fn args))
  (if evil-state (evil-save-state (apply fn args)) (apply fn args))
  +evil--persist-state-a(#f(advice auto-minor-mode-set :after #<subr set-auto-mode>))
  apply(+evil--persist-state-a #f(advice auto-minor-mode-set :after #<subr set-auto-mode>) nil)
  #f(advice +evil--persist-state-a :around #f(advice auto-minor-mode-set :after #<subr set-auto-mode>))()
  so-long--set-auto-mode(#f(advice +evil--persist-state-a :around #f(advice auto-minor-mode-set :after #<subr set-auto-mode>)))
  apply(so-long--set-auto-mode #f(advice +evil--persist-state-a :around #f(advice auto-minor-mode-set :after #<subr set-auto-mode>)) nil)
  set-auto-mode()
  normal-mode(t)
  #<subr after-find-file>(nil t nil nil nil)
  apply(#<subr after-find-file> (nil t))
  (progn (fset #'sit-for #'ignore) (apply fn args))
  (unwind-protect (progn (fset #'sit-for #'ignore) (apply fn args)) (fset #'sit-for old))
  (let* ((old (symbol-function #'sit-for))) (unwind-protect (progn (fset #'sit-for #'ignore) (apply fn args)) (fset #'sit-for old)))
  doom--shut-up-autosave-a(#<subr after-find-file> nil t)
  apply(doom--shut-up-autosave-a #<subr after-find-file> (nil t))
  #f(advice doom--shut-up-autosave-a :around #<subr after-find-file>)(nil t)
  apply(#f(advice doom--shut-up-autosave-a :around #<subr after-find-file>) (nil t))
  #f(advice chain-doom-first-buffer-hook-to-find-file-hook-h :before #f(advice doom--shut-up-autosave-a :around #<subr after-find-file>) ((depth . -101)))(nil t)
  apply(#f(advice chain-doom-first-buffer-hook-to-find-file-hook-h :before #f(advice doom--shut-up-autosave-a :around #<subr after-find-file>) ((depth . -101))) (nil t))
  after-find-file(nil t)
  find-file-noselect-1(#<buffer build.clj> "~/workspace/of/cdp-api/build.clj" nil nil "~/workspace/of/cdp-api/build.clj" (48 36))
  find-file-noselect("/home/vscode/workspace/of/cdp-api/build.clj" nil nil nil)
  find-file("/home/vscode/workspace/of/cdp-api/build.clj")
  ranger-find-file()
  funcall-interactively(ranger-find-file)
  command-execute(ranger-find-file)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions