dimitri / el-get

Manage the external elisp bits and pieces upon which you depend!
http://tapoueh.org/emacs/el-get.html
1.64k stars 456 forks source link

install-info strangeness... #861

Closed Whil- closed 11 years ago

Whil- commented 12 years ago

The installation fails on windows due to paths not specified for the dir-file (?). This is the message I get in the Message buffer. It should explain the case:

Running commands synchronously: ((:command-name "c:/Cygwin/bin/install-info.exe" :buffer-name "*el-get-build: el-get*" :default-directory "c:/Users/Gustav/.emacs.d/plugins/el-get/." :shell t :sync t :program "c:/Cygwin/bin/install-info.exe" :args ("c:/Users/Gustav/.emacs.d/plugins/el-get/./el-get.info" "dir") :message "el-get-build el-get: c:/Cygwin/bin/install-info.exe c:/Users/Gustav/.emacs.d/plugins/el-get/./el-get.info dir ok." :error "el-get could not build el-get [c:/Cygwin/bin/install-info.exe c:/Users/Gustav/.emacs.d/plugins/el-get/./el-get.info dir]"))

el-get is waiting for "c:/Cygwin/bin/install-info.exe" to complete

"install-info: No such file or directory for /Users/Gustav/.emacs.d/plugins/el-get/./el-get.info

I suspect it id due to the path to "dir" is not specified but the path to el-get.info is specified (both resides in the same folder according to the files in this git-project).

Running install-info on the side with full pathnames works

driftcrow commented 11 years ago

I also meet this error,how to resolve it?

Debugger entered--Lisp error: (error "el-get: d:/Tools/msysgit/bin/install-info.exe el-get could not build el-get [d:/Tools/msysgit/bin/install-info.exe d:/home/.emacs.d/el-get/el-get/./el-get.info dir]")
  signal(error ("el-get: d:/Tools/msysgit/bin/install-info.exe el-get could not build el-get [d:/Tools/msysgit/bin/install-info.exe d:/home/.emacs.d/el-get/el-get/./el-get.info dir]"))
  error("el-get: %s %s" "d:/Tools/msysgit/bin/install-info.exe" "el-get could not build el-get [d:/Tools/msysgit/bin/install-info.exe d:/home/.emacs.d/el-get/el-get/./el-get.info dir]")
  (if (eq 0 status) (message "el-get: %s" message) (set-window-buffer (selected-window) cbuf) (error "el-get: %s %s" cname errorm))
  (let* ((startf (if shell (function call-process-shell-command) (function call-process))) (infile (when stdin (make-temp-file "el-get"))) (dummy (when infile (with-temp-file infile (insert (el-get-print-to-string stdin))))) (dummy (message "el-get is waiting for %S to complete" cname)) (status (apply startf program infile cbuf t args)) (message (plist-get c :message)) (errorm (plist-get c :error))) (when el-get-verbose (message "%S" (with-current-buffer cbuf (buffer-string)))) (if (eq 0 status) (message "el-get: %s" message) (set-window-buffer (selected-window) cbuf) (error "el-get: %s %s" cname errorm)) (when cbuf (kill-buffer cbuf)) (if next (let ((max-specpdl-size (+ 100 max-specpdl-size))) (el-get-start-process-list package next final-func)) (when (functionp final-func) (funcall final-func package))))
  (progn (el-get-verbose-message "Running commands synchronously: %S" commands) (let* ((startf (if shell (function call-process-shell-command) (function call-process))) (infile (when stdin (make-temp-file "el-get"))) (dummy (when infile (with-temp-file infile (insert (el-get-print-to-string stdin))))) (dummy (message "el-get is waiting for %S to complete" cname)) (status (apply startf program infile cbuf t args)) (message (plist-get c :message)) (errorm (plist-get c :error))) (when el-get-verbose (message "%S" (with-current-buffer cbuf (buffer-string)))) (if (eq 0 status) (message "el-get: %s" message) (set-window-buffer (selected-window) cbuf) (error "el-get: %s %s" cname errorm)) (when cbuf (kill-buffer cbuf)) (if next (let ((max-specpdl-size (+ 100 max-specpdl-size))) (el-get-start-process-list package next final-func)) (when (functionp final-func) (funcall final-func package)))))
  (if sync (progn (el-get-verbose-message "Running commands synchronously: %S" commands) (let* ((startf (if shell (function call-process-shell-command) (function call-process))) (infile (when stdin (make-temp-file "el-get"))) (dummy (when infile (with-temp-file infile (insert ...)))) (dummy (message "el-get is waiting for %S to complete" cname)) (status (apply startf program infile cbuf t args)) (message (plist-get c :message)) (errorm (plist-get c :error))) (when el-get-verbose (message "%S" (with-current-buffer cbuf (buffer-string)))) (if (eq 0 status) (message "el-get: %s" message) (set-window-buffer (selected-window) cbuf) (error "el-get: %s %s" cname errorm)) (when cbuf (kill-buffer cbuf)) (if next (let ((max-specpdl-size (+ 100 max-specpdl-size))) (el-get-start-process-list package next final-func)) (when (functionp final-func) (funcall final-func package))))) (el-get-verbose-message "Running commands asynchronously: %S" commands) (let* ((startf (if shell (function start-process-shell-command) (function start-process))) (process-connection-type nil) (proc (apply startf cname cbuf program args))) (mapc (lambda (x) (process-put proc x (plist-get c x))) c) (process-put proc :el-get-sources el-get-sources) (process-put proc :el-get-package package) (process-put proc :el-get-final-func final-func) (process-put proc :el-get-start-process-list next) (when stdin (process-send-string proc (el-get-print-to-string stdin)) (process-send-eof proc)) (set-process-sentinel proc (quote el-get-start-process-list-sentinel)) (when filter (set-process-filter proc filter))))
  (let* ((c (car commands)) (next (cdr commands)) (cdir (plist-get c :default-directory)) (cname (plist-get c :command-name)) (cbuf (plist-get c :buffer-name)) (killed (when (get-buffer cbuf) (kill-buffer cbuf))) (filter (plist-get c :process-filter)) (program (plist-get c :program)) (shell (plist-get c :shell)) (args (if shell (mapcar (function shell-quote-argument) (plist-get c :args)) (plist-get c :args))) (sync (el-get-plist-get-with-default c :sync el-get-default-process-sync)) (stdin (plist-get c :stdin)) (default-directory (if cdir (file-name-as-directory (expand-file-name cdir)) default-directory))) (if sync (progn (el-get-verbose-message "Running commands synchronously: %S" commands) (let* ((startf (if shell (function call-process-shell-command) (function call-process))) (infile (when stdin (make-temp-file "el-get"))) (dummy (when infile (with-temp-file infile ...))) (dummy (message "el-get is waiting for %S to complete" cname)) (status (apply startf program infile cbuf t args)) (message (plist-get c :message)) (errorm (plist-get c :error))) (when el-get-verbose (message "%S" (with-current-buffer cbuf (buffer-string)))) (if (eq 0 status) (message "el-get: %s" message) (set-window-buffer (selected-window) cbuf) (error "el-get: %s %s" cname errorm)) (when cbuf (kill-buffer cbuf)) (if next (let ((max-specpdl-size ...)) (el-get-start-process-list package next final-func)) (when (functionp final-func) (funcall final-func package))))) (el-get-verbose-message "Running commands asynchronously: %S" commands) (let* ((startf (if shell (function start-process-shell-command) (function start-process))) (process-connection-type nil) (proc (apply startf cname cbuf program args))) (mapc (lambda (x) (process-put proc x (plist-get c x))) c) (process-put proc :el-get-sources el-get-sources) (process-put proc :el-get-package package) (process-put proc :el-get-final-func final-func) (process-put proc :el-get-start-process-list next) (when stdin (process-send-string proc (el-get-print-to-string stdin)) (process-send-eof proc)) (set-process-sentinel proc (quote el-get-start-process-list-sentinel)) (when filter (set-process-filter proc filter)))))
  (if commands (let* ((c (car commands)) (next (cdr commands)) (cdir (plist-get c :default-directory)) (cname (plist-get c :command-name)) (cbuf (plist-get c :buffer-name)) (killed (when (get-buffer cbuf) (kill-buffer cbuf))) (filter (plist-get c :process-filter)) (program (plist-get c :program)) (shell (plist-get c :shell)) (args (if shell (mapcar (function shell-quote-argument) (plist-get c :args)) (plist-get c :args))) (sync (el-get-plist-get-with-default c :sync el-get-default-process-sync)) (stdin (plist-get c :stdin)) (default-directory (if cdir (file-name-as-directory (expand-file-name cdir)) default-directory))) (if sync (progn (el-get-verbose-message "Running commands synchronously: %S" commands) (let* ((startf (if shell ... ...)) (infile (when stdin ...)) (dummy (when infile ...)) (dummy (message "el-get is waiting for %S to complete" cname)) (status (apply startf program infile cbuf t args)) (message (plist-get c :message)) (errorm (plist-get c :error))) (when el-get-verbose (message "%S" (with-current-buffer cbuf ...))) (if (eq 0 status) (message "el-get: %s" message) (set-window-buffer (selected-window) cbuf) (error "el-get: %s %s" cname errorm)) (when cbuf (kill-buffer cbuf)) (if next (let (...) (el-get-start-process-list package next final-func)) (when (functionp final-func) (funcall final-func package))))) (el-get-verbose-message "Running commands asynchronously: %S" commands) (let* ((startf (if shell (function start-process-shell-command) (function start-process))) (process-connection-type nil) (proc (apply startf cname cbuf program args))) (mapc (lambda (x) (process-put proc x (plist-get c x))) c) (process-put proc :el-get-sources el-get-sources) (process-put proc :el-get-package package) (process-put proc :el-get-final-func final-func) (process-put proc :el-get-start-process-list next) (when stdin (process-send-string proc (el-get-print-to-string stdin)) (process-send-eof proc)) (set-process-sentinel proc (quote el-get-start-process-list-sentinel)) (when filter (set-process-filter proc filter))))) (when (functionp final-func) (funcall final-func package)))
  (condition-case err (if commands (let* ((c (car commands)) (next (cdr commands)) (cdir (plist-get c :default-directory)) (cname (plist-get c :command-name)) (cbuf (plist-get c :buffer-name)) (killed (when (get-buffer cbuf) (kill-buffer cbuf))) (filter (plist-get c :process-filter)) (program (plist-get c :program)) (shell (plist-get c :shell)) (args (if shell (mapcar (function shell-quote-argument) (plist-get c :args)) (plist-get c :args))) (sync (el-get-plist-get-with-default c :sync el-get-default-process-sync)) (stdin (plist-get c :stdin)) (default-directory (if cdir (file-name-as-directory (expand-file-name cdir)) default-directory))) (if sync (progn (el-get-verbose-message "Running commands synchronously: %S" commands) (let* ((startf ...) (infile ...) (dummy ...) (dummy ...) (status ...) (message ...) (errorm ...)) (when el-get-verbose (message "%S" ...)) (if (eq 0 status) (message "el-get: %s" message) (set-window-buffer ... cbuf) (error "el-get: %s %s" cname errorm)) (when cbuf (kill-buffer cbuf)) (if next (let ... ...) (when ... ...)))) (el-get-verbose-message "Running commands asynchronously: %S" commands) (let* ((startf (if shell ... ...)) (process-connection-type nil) (proc (apply startf cname cbuf program args))) (mapc (lambda (x) (process-put proc x ...)) c) (process-put proc :el-get-sources el-get-sources) (process-put proc :el-get-package package) (process-put proc :el-get-final-func final-func) (process-put proc :el-get-start-process-list next) (when stdin (process-send-string proc (el-get-print-to-string stdin)) (process-send-eof proc)) (set-process-sentinel proc (quote el-get-start-process-list-sentinel)) (when filter (set-process-filter proc filter))))) (when (functionp final-func) (funcall final-func package))) ((debug error) (el-get-installation-failed package err)))
  el-get-start-process-list("el-get" ((:command-name "d:/Tools/msysgit/bin/install-info.exe" :buffer-name "*el-get-build: el-get*" :default-directory "d:/home/.emacs.d/el-get/el-get/." :shell t :sync t :program "d:/Tools/msysgit/bin/install-info.exe" :args ("d:/home/.emacs.d/el-get/el-get/./el-get.info" "dir") :message "el-get-build el-get: d:/Tools/msysgit/bin/install-info.exe d:/home/.emacs.d/el-get/el-get/./el-get.info dir ok." :error "el-get could not build el-get [d:/Tools/msysgit/bin/install-info.exe d:/home/.emacs.d/el-get/el-get/./el-get.info dir]")) (lambda (package) (let ((bytecomp-files (when el-get-byte-compile (el-get-assemble-files-for-byte-compilation package)))) (el-get-start-process-list package (list (el-get-byte-compile-process package "*el-get-build: el-get*" "d:/home/.emacs.d/el-get/el-get/." t bytecomp-files)) (lambda (&rest args) nil)))))
  (let* ((pdir (el-get-package-directory package)) (wdir (if subdir (concat (file-name-as-directory pdir) subdir) pdir)) (buf (format "*el-get-build: %s*" package)) (default-directory (file-name-as-directory wdir)) (shell-file-name (or (and (eq system-type (quote windows-nt)) (executable-find "cmdproxy.exe")) shell-file-name)) (process-list (mapcar (lambda (c) (let* ((split ...) (c ...) (name ...) (program ...) (args ...)) (\` (:command-name ... :buffer-name ... :default-directory ... :shell t :sync ... :program ... :args ... :message ... :error ...)))) commands)) (post-build-fun (cond ((null post-build-fun) (lambda (&rest args) nil)) ((symbolp post-build-fun) (\` (lambda (&rest args) (apply ... args)))) (t (assert (functionp post-build-fun) (quote show-args)) post-build-fun))) (byte-compile-then-post-build-fun (\` (lambda (package) (let ((bytecomp-files ...)) (el-get-start-process-list package (list ...) (\, post-build-fun)))))) (build-info-then-post-build-fun (if installing-info byte-compile-then-post-build-fun (\` (lambda (package) (el-get-install-or-init-info package (quote build)) (funcall (\, byte-compile-then-post-build-fun) package)))))) (el-get-start-process-list package process-list build-info-then-post-build-fun))
  el-get-build("el-get" (("d:/Tools/msysgit/bin/install-info.exe" "d:/home/.emacs.d/el-get/el-get/./el-get.info" "dir")) "." t nil t)
  (progn (el-get-set-info-path package infodir-rel) (el-get-build package (list (list el-get-install-info (if (string= (substring infofile -5) ".info") infofile (concat infofile ".info")) "dir")) infodir-rel t nil t))
  (if (and infodir el-get-install-info (file-directory-p infodir-abs) (not (file-exists-p info-dir))) (progn (el-get-set-info-path package infodir-rel) (el-get-build package (list (list el-get-install-info (if (string= (substring infofile -5) ".info") infofile (concat infofile ".info")) "dir")) infodir-rel t nil t)))
  (when (and infodir el-get-install-info (file-directory-p infodir-abs) (not (file-exists-p info-dir))) (el-get-set-info-path package infodir-rel) (el-get-build package (list (list el-get-install-info (if (string= (substring infofile -5) ".info") infofile (concat infofile ".info")) "dir")) infodir-rel t nil t))
  (cond ((eq build-or-init (quote init)) (when (file-exists-p info-dir) (el-get-set-info-path package infodir-rel))) ((eq build-or-init (quote build)) (when (and infodir el-get-install-info (file-directory-p infodir-abs) (not (file-exists-p info-dir))) (el-get-set-info-path package infodir-rel) (el-get-build package (list (list el-get-install-info (if (string= ... ".info") infofile (concat infofile ".info")) "dir")) infodir-rel t nil t))) (t (error "el-get-install-or-init-info: %s not supported" build-or-init)))
  (let* ((infodir-abs-conf (concat pdir infodir)) (infodir-abs (file-name-as-directory (if (file-directory-p infodir-abs-conf) infodir-abs-conf (file-name-directory infodir-abs-conf)))) (infodir-rel (if (file-directory-p infodir-abs-conf) infodir (file-name-directory infodir))) (info-dir (concat infodir-abs "dir")) (infofile (if (and (file-exists-p infodir-abs-conf) (not (file-directory-p infodir-abs-conf))) infodir-abs-conf (concat infodir-abs pname)))) (cond ((eq build-or-init (quote init)) (when (file-exists-p info-dir) (el-get-set-info-path package infodir-rel))) ((eq build-or-init (quote build)) (when (and infodir el-get-install-info (file-directory-p infodir-abs) (not (file-exists-p info-dir))) (el-get-set-info-path package infodir-rel) (el-get-build package (list (list el-get-install-info (if ... infofile ...) "dir")) infodir-rel t nil t))) (t (error "el-get-install-or-init-info: %s not supported" build-or-init))))
  (if (member method (quote (elpa apt-get fink pacman))) nil (let* ((infodir-abs-conf (concat pdir infodir)) (infodir-abs (file-name-as-directory (if (file-directory-p infodir-abs-conf) infodir-abs-conf (file-name-directory infodir-abs-conf)))) (infodir-rel (if (file-directory-p infodir-abs-conf) infodir (file-name-directory infodir))) (info-dir (concat infodir-abs "dir")) (infofile (if (and (file-exists-p infodir-abs-conf) (not (file-directory-p infodir-abs-conf))) infodir-abs-conf (concat infodir-abs pname)))) (cond ((eq build-or-init (quote init)) (when (file-exists-p info-dir) (el-get-set-info-path package infodir-rel))) ((eq build-or-init (quote build)) (when (and infodir el-get-install-info (file-directory-p infodir-abs) (not (file-exists-p info-dir))) (el-get-set-info-path package infodir-rel) (el-get-build package (list (list el-get-install-info ... "dir")) infodir-rel t nil t))) (t (error "el-get-install-or-init-info: %s not supported" build-or-init)))))
  (unless (member method (quote (elpa apt-get fink pacman))) (let* ((infodir-abs-conf (concat pdir infodir)) (infodir-abs (file-name-as-directory (if (file-directory-p infodir-abs-conf) infodir-abs-conf (file-name-directory infodir-abs-conf)))) (infodir-rel (if (file-directory-p infodir-abs-conf) infodir (file-name-directory infodir))) (info-dir (concat infodir-abs "dir")) (infofile (if (and (file-exists-p infodir-abs-conf) (not (file-directory-p infodir-abs-conf))) infodir-abs-conf (concat infodir-abs pname)))) (cond ((eq build-or-init (quote init)) (when (file-exists-p info-dir) (el-get-set-info-path package infodir-rel))) ((eq build-or-init (quote build)) (when (and infodir el-get-install-info (file-directory-p infodir-abs) (not (file-exists-p info-dir))) (el-get-set-info-path package infodir-rel) (el-get-build package (list (list el-get-install-info ... "dir")) infodir-rel t nil t))) (t (error "el-get-install-or-init-info: %s not supported" build-or-init)))))
  (let* ((source (el-get-package-def package)) (method (el-get-package-method source)) (infodir (plist-get source :info)) (pname (el-get-as-string package)) (pdir (el-get-package-directory package))) (unless (member method (quote (elpa apt-get fink pacman))) (let* ((infodir-abs-conf (concat pdir infodir)) (infodir-abs (file-name-as-directory (if (file-directory-p infodir-abs-conf) infodir-abs-conf (file-name-directory infodir-abs-conf)))) (infodir-rel (if (file-directory-p infodir-abs-conf) infodir (file-name-directory infodir))) (info-dir (concat infodir-abs "dir")) (infofile (if (and (file-exists-p infodir-abs-conf) (not ...)) infodir-abs-conf (concat infodir-abs pname)))) (cond ((eq build-or-init (quote init)) (when (file-exists-p info-dir) (el-get-set-info-path package infodir-rel))) ((eq build-or-init (quote build)) (when (and infodir el-get-install-info (file-directory-p infodir-abs) (not ...)) (el-get-set-info-path package infodir-rel) (el-get-build package (list ...) infodir-rel t nil t))) (t (error "el-get-install-or-init-info: %s not supported" build-or-init))))))
  el-get-install-or-init-info("el-get" build)
  (lambda (package) (el-get-install-or-init-info package (quote build)) (funcall (lambda (package) (let ((bytecomp-files (when el-get-byte-compile (el-get-assemble-files-for-byte-compilation package)))) (el-get-start-process-list package (list (el-get-byte-compile-process package "*el-get-build: el-get*" "d:/home/.emacs.d/el-get/el-get/" t bytecomp-files)) (lambda (&rest args) (apply (lambda ... "Function to call after building the package while installing it." ... ... ... ...) args))))) package))("el-get")
  funcall((lambda (package) (el-get-install-or-init-info package (quote build)) (funcall (lambda (package) (let ((bytecomp-files (when el-get-byte-compile (el-get-assemble-files-for-byte-compilation package)))) (el-get-start-process-list package (list (el-get-byte-compile-process package "*el-get-build: el-get*" "d:/home/.emacs.d/el-get/el-get/" t bytecomp-files)) (lambda (&rest args) (apply (lambda ... "Function to call after building the package while installing it." ... ... ... ...) args))))) package)) "el-get")
  (progn (funcall final-func package))
  (if (functionp final-func) (progn (funcall final-func package)))
  (when (functionp final-func) (funcall final-func package))
  (if commands (let* ((c (car commands)) (next (cdr commands)) (cdir (plist-get c :default-directory)) (cname (plist-get c :command-name)) (cbuf (plist-get c :buffer-name)) (killed (when (get-buffer cbuf) (kill-buffer cbuf))) (filter (plist-get c :process-filter)) (program (plist-get c :program)) (shell (plist-get c :shell)) (args (if shell (mapcar (function shell-quote-argument) (plist-get c :args)) (plist-get c :args))) (sync (el-get-plist-get-with-default c :sync el-get-default-process-sync)) (stdin (plist-get c :stdin)) (default-directory (if cdir (file-name-as-directory (expand-file-name cdir)) default-directory))) (if sync (progn (el-get-verbose-message "Running commands synchronously: %S" commands) (let* ((startf (if shell ... ...)) (infile (when stdin ...)) (dummy (when infile ...)) (dummy (message "el-get is waiting for %S to complete" cname)) (status (apply startf program infile cbuf t args)) (message (plist-get c :message)) (errorm (plist-get c :error))) (when el-get-verbose (message "%S" (with-current-buffer cbuf ...))) (if (eq 0 status) (message "el-get: %s" message) (set-window-buffer (selected-window) cbuf) (error "el-get: %s %s" cname errorm)) (when cbuf (kill-buffer cbuf)) (if next (let (...) (el-get-start-process-list package next final-func)) (when (functionp final-func) (funcall final-func package))))) (el-get-verbose-message "Running commands asynchronously: %S" commands) (let* ((startf (if shell (function start-process-shell-command) (function start-process))) (process-connection-type nil) (proc (apply startf cname cbuf program args))) (mapc (lambda (x) (process-put proc x (plist-get c x))) c) (process-put proc :el-get-sources el-get-sources) (process-put proc :el-get-package package) (process-put proc :el-get-final-func final-func) (process-put proc :el-get-start-process-list next) (when stdin (process-send-string proc (el-get-print-to-string stdin)) (process-send-eof proc)) (set-process-sentinel proc (quote el-get-start-process-list-sentinel)) (when filter (set-process-filter proc filter))))) (when (functionp final-func) (funcall final-func package)))
  (condition-case err (if commands (let* ((c (car commands)) (next (cdr commands)) (cdir (plist-get c :default-directory)) (cname (plist-get c :command-name)) (cbuf (plist-get c :buffer-name)) (killed (when (get-buffer cbuf) (kill-buffer cbuf))) (filter (plist-get c :process-filter)) (program (plist-get c :program)) (shell (plist-get c :shell)) (args (if shell (mapcar (function shell-quote-argument) (plist-get c :args)) (plist-get c :args))) (sync (el-get-plist-get-with-default c :sync el-get-default-process-sync)) (stdin (plist-get c :stdin)) (default-directory (if cdir (file-name-as-directory (expand-file-name cdir)) default-directory))) (if sync (progn (el-get-verbose-message "Running commands synchronously: %S" commands) (let* ((startf ...) (infile ...) (dummy ...) (dummy ...) (status ...) (message ...) (errorm ...)) (when el-get-verbose (message "%S" ...)) (if (eq 0 status) (message "el-get: %s" message) (set-window-buffer ... cbuf) (error "el-get: %s %s" cname errorm)) (when cbuf (kill-buffer cbuf)) (if next (let ... ...) (when ... ...)))) (el-get-verbose-message "Running commands asynchronously: %S" commands) (let* ((startf (if shell ... ...)) (process-connection-type nil) (proc (apply startf cname cbuf program args))) (mapc (lambda (x) (process-put proc x ...)) c) (process-put proc :el-get-sources el-get-sources) (process-put proc :el-get-package package) (process-put proc :el-get-final-func final-func) (process-put proc :el-get-start-process-list next) (when stdin (process-send-string proc (el-get-print-to-string stdin)) (process-send-eof proc)) (set-process-sentinel proc (quote el-get-start-process-list-sentinel)) (when filter (set-process-filter proc filter))))) (when (functionp final-func) (funcall final-func package))) ((debug error) (el-get-installation-failed package err)))
  el-get-start-process-list("el-get" nil (lambda (package) (el-get-install-or-init-info package (quote build)) (funcall (lambda (package) (let ((bytecomp-files (when el-get-byte-compile (el-get-assemble-files-for-byte-compilation package)))) (el-get-start-process-list package (list (el-get-byte-compile-process package "*el-get-build: el-get*" "d:/home/.emacs.d/el-get/el-get/" t bytecomp-files)) (lambda (&rest args) (apply (lambda ... "Function to call after building the package while installing it." ... ... ... ...) args))))) package)))
  (let* ((pdir (el-get-package-directory package)) (wdir (if subdir (concat (file-name-as-directory pdir) subdir) pdir)) (buf (format "*el-get-build: %s*" package)) (default-directory (file-name-as-directory wdir)) (shell-file-name (or (and (eq system-type (quote windows-nt)) (executable-find "cmdproxy.exe")) shell-file-name)) (process-list (mapcar (lambda (c) (let* ((split ...) (c ...) (name ...) (program ...) (args ...)) (\` (:command-name ... :buffer-name ... :default-directory ... :shell t :sync ... :program ... :args ... :message ... :error ...)))) commands)) (post-build-fun (cond ((null post-build-fun) (lambda (&rest args) nil)) ((symbolp post-build-fun) (\` (lambda (&rest args) (apply ... args)))) (t (assert (functionp post-build-fun) (quote show-args)) post-build-fun))) (byte-compile-then-post-build-fun (\` (lambda (package) (let ((bytecomp-files ...)) (el-get-start-process-list package (list ...) (\, post-build-fun)))))) (build-info-then-post-build-fun (if installing-info byte-compile-then-post-build-fun (\` (lambda (package) (el-get-install-or-init-info package (quote build)) (funcall (\, byte-compile-then-post-build-fun) package)))))) (el-get-start-process-list package process-list build-info-then-post-build-fun))
  el-get-build("el-get" nil nil t el-get-post-install-build)
  (let* ((sync el-get-default-process-sync) (type (el-get-package-type package)) (hooks (el-get-method type :install-hook)) (commands (el-get-build-commands package)) (checksum (plist-get (el-get-package-def package) :checksum)) (compute-checksum (el-get-method type :compute-checksum))) (when (and checksum (not compute-checksum)) (error "Checksum verification of package %s is not supported with method %s." package type)) (when compute-checksum (let ((computed (funcall compute-checksum package))) (if checksum (if (equal computed (el-get-as-string checksum)) (el-get-verbose-message "el-get: package %s passed checksum with \"%s\"." package computed) (error "Checksum verification failed. Required: \"%s\", actual: \"%s\"." checksum computed)) (el-get-verbose-message "el-get: pakage %s checksum is %s." package computed)))) (run-hook-with-args hooks package) (el-get-build package commands nil sync (quote el-get-post-install-build)))
  el-get-post-install("el-get")
  (let ((el-get-default-process-sync t) (el-get-verbose t)) (el-get-post-install "el-get"))
  (let* ((package "el-get") (buf (switch-to-buffer "*el-get bootstrap*")) (pdir (file-name-as-directory (concat el-get-root package))) (git (or (executable-find "git") (error "Unable to find `git'"))) (url (or (bound-and-true-p el-get-git-install-url) "http://github.com/dimitri/el-get.git")) (default-directory el-get-root) (process-connection-type nil) (status (call-process git nil (\` ((\, buf) t)) t "--no-pager" "clone" "-v" url package))) (unless (zerop status) (error "Couldn't clone el-get from the Git repository: %s" url)) (let* ((branch (cond ((bound-and-true-p el-get-install-branch)) ((boundp (quote el-get-master-branch)) "master") ((plist-get (with-temp-buffer ... ...) :branch)) ("master"))) (remote-branch (format "origin/%s" branch)) (default-directory pdir) (bstatus (if (string-equal branch "master") 0 (call-process git nil (list buf t) t "checkout" "-t" remote-branch)))) (unless (zerop bstatus) (error "Couldn't `git checkout -t %s`" branch))) (add-to-list (quote load-path) pdir) (load package) (let ((el-get-default-process-sync t) (el-get-verbose t)) (el-get-post-install "el-get")) (unless (boundp (quote el-get-install-skip-emacswiki-recipes)) (el-get-emacswiki-build-local-recipes)) (with-current-buffer buf (goto-char (point-max)) (insert "\nCongrats, el-get is installed and ready to serve!")))
  (if (require (quote el-get) nil t) nil (unless (file-directory-p el-get-root) (make-directory el-get-root t)) (let* ((package "el-get") (buf (switch-to-buffer "*el-get bootstrap*")) (pdir (file-name-as-directory (concat el-get-root package))) (git (or (executable-find "git") (error "Unable to find `git'"))) (url (or (bound-and-true-p el-get-git-install-url) "http://github.com/dimitri/el-get.git")) (default-directory el-get-root) (process-connection-type nil) (status (call-process git nil (\` ((\, buf) t)) t "--no-pager" "clone" "-v" url package))) (unless (zerop status) (error "Couldn't clone el-get from the Git repository: %s" url)) (let* ((branch (cond ((bound-and-true-p el-get-install-branch)) ((boundp ...) "master") ((plist-get ... :branch)) ("master"))) (remote-branch (format "origin/%s" branch)) (default-directory pdir) (bstatus (if (string-equal branch "master") 0 (call-process git nil (list buf t) t "checkout" "-t" remote-branch)))) (unless (zerop bstatus) (error "Couldn't `git checkout -t %s`" branch))) (add-to-list (quote load-path) pdir) (load package) (let ((el-get-default-process-sync t) (el-get-verbose t)) (el-get-post-install "el-get")) (unless (boundp (quote el-get-install-skip-emacswiki-recipes)) (el-get-emacswiki-build-local-recipes)) (with-current-buffer buf (goto-char (point-max)) (insert "\nCongrats, el-get is installed and ready to serve!"))))
  (unless (require (quote el-get) nil t) (unless (file-directory-p el-get-root) (make-directory el-get-root t)) (let* ((package "el-get") (buf (switch-to-buffer "*el-get bootstrap*")) (pdir (file-name-as-directory (concat el-get-root package))) (git (or (executable-find "git") (error "Unable to find `git'"))) (url (or (bound-and-true-p el-get-git-install-url) "http://github.com/dimitri/el-get.git")) (default-directory el-get-root) (process-connection-type nil) (status (call-process git nil (\` ((\, buf) t)) t "--no-pager" "clone" "-v" url package))) (unless (zerop status) (error "Couldn't clone el-get from the Git repository: %s" url)) (let* ((branch (cond ((bound-and-true-p el-get-install-branch)) ((boundp ...) "master") ((plist-get ... :branch)) ("master"))) (remote-branch (format "origin/%s" branch)) (default-directory pdir) (bstatus (if (string-equal branch "master") 0 (call-process git nil (list buf t) t "checkout" "-t" remote-branch)))) (unless (zerop bstatus) (error "Couldn't `git checkout -t %s`" branch))) (add-to-list (quote load-path) pdir) (load package) (let ((el-get-default-process-sync t) (el-get-verbose t)) (el-get-post-install "el-get")) (unless (boundp (quote el-get-install-skip-emacswiki-recipes)) (el-get-emacswiki-build-local-recipes)) (with-current-buffer buf (goto-char (point-max)) (insert "\nCongrats, el-get is installed and ready to serve!"))))
  (let ((el-get-root (file-name-as-directory (or (bound-and-true-p el-get-dir) (concat (file-name-as-directory user-emacs-directory) "el-get"))))) (when (file-directory-p el-get-root) (add-to-list (quote load-path) el-get-root)) (unless (require (quote el-get) nil t) (unless (file-directory-p el-get-root) (make-directory el-get-root t)) (let* ((package "el-get") (buf (switch-to-buffer "*el-get bootstrap*")) (pdir (file-name-as-directory (concat el-get-root package))) (git (or (executable-find "git") (error "Unable to find `git'"))) (url (or (bound-and-true-p el-get-git-install-url) "http://github.com/dimitri/el-get.git")) (default-directory el-get-root) (process-connection-type nil) (status (call-process git nil (\` (... t)) t "--no-pager" "clone" "-v" url package))) (unless (zerop status) (error "Couldn't clone el-get from the Git repository: %s" url)) (let* ((branch (cond (...) (... "master") (...) ("master"))) (remote-branch (format "origin/%s" branch)) (default-directory pdir) (bstatus (if (string-equal branch "master") 0 (call-process git nil ... t "checkout" "-t" remote-branch)))) (unless (zerop bstatus) (error "Couldn't `git checkout -t %s`" branch))) (add-to-list (quote load-path) pdir) (load package) (let ((el-get-default-process-sync t) (el-get-verbose t)) (el-get-post-install "el-get")) (unless (boundp (quote el-get-install-skip-emacswiki-recipes)) (el-get-emacswiki-build-local-recipes)) (with-current-buffer buf (goto-char (point-max)) (insert "\nCongrats, el-get is installed and ready to serve!")))))
  eval((let ((el-get-root (file-name-as-directory (or (bound-and-true-p el-get-dir) (concat (file-name-as-directory user-emacs-directory) "el-get"))))) (when (file-directory-p el-get-root) (add-to-list (quote load-path) el-get-root)) (unless (require (quote el-get) nil t) (unless (file-directory-p el-get-root) (make-directory el-get-root t)) (let* ((package "el-get") (buf (switch-to-buffer "*el-get bootstrap*")) (pdir (file-name-as-directory (concat el-get-root package))) (git (or (executable-find "git") (error "Unable to find `git'"))) (url (or (bound-and-true-p el-get-git-install-url) "http://github.com/dimitri/el-get.git")) (default-directory el-get-root) (process-connection-type nil) (status (call-process git nil (\` (... t)) t "--no-pager" "clone" "-v" url package))) (unless (zerop status) (error "Couldn't clone el-get from the Git repository: %s" url)) (let* ((branch (cond (...) (... "master") (...) ("master"))) (remote-branch (format "origin/%s" branch)) (default-directory pdir) (bstatus (if (string-equal branch "master") 0 (call-process git nil ... t "checkout" "-t" remote-branch)))) (unless (zerop bstatus) (error "Couldn't `git checkout -t %s`" branch))) (add-to-list (quote load-path) pdir) (load package) (let ((el-get-default-process-sync t) (el-get-verbose t)) (el-get-post-install "el-get")) (unless (boundp (quote el-get-install-skip-emacswiki-recipes)) (el-get-emacswiki-build-local-recipes)) (with-current-buffer buf (goto-char (point-max)) (insert "\nCongrats, el-get is installed and ready to serve!"))))) nil)
  eval-last-sexp-1(t)
  eval-last-sexp(t)
  eval-print-last-sexp()
  (save-current-buffer (set-buffer (url-retrieve-synchronously "https://raw.github.com/dimitri/el-get/master/el-get-install.el")) (end-of-buffer) (previous-line) (unless (string= (current-word) "closed") (end-of-line)) (eval-print-last-sexp))
  (with-current-buffer (url-retrieve-synchronously "https://raw.github.com/dimitri/el-get/master/el-get-install.el") (end-of-buffer) (previous-line) (unless (string= (current-word) "closed") (end-of-line)) (eval-print-last-sexp))
  (if (require (quote el-get) nil t) nil (with-current-buffer (url-retrieve-synchronously "https://raw.github.com/dimitri/el-get/master/el-get-install.el") (end-of-buffer) (previous-line) (unless (string= (current-word) "closed") (end-of-line)) (eval-print-last-sexp)))
  (unless (require (quote el-get) nil t) (with-current-buffer (url-retrieve-synchronously "https://raw.github.com/dimitri/el-get/master/el-get-install.el") (end-of-buffer) (previous-line) (unless (string= (current-word) "closed") (end-of-line)) (eval-print-last-sexp)))
  eval-buffer(#<buffer  *load*<2>> nil "d:/home/.emacs.d/personal/10-el-get.el" nil t)  ; Reading at buffer position 590
  load-with-code-conversion("d:/home/.emacs.d/personal/10-el-get.el" "d:/home/.emacs.d/personal/10-el-get.el" nil nil)
  load("d:/home/.emacs.d/personal/10-el-get.el")
  mapc(load ("d:/home/.emacs.d/personal/0-double-type.el" "d:/home/.emacs.d/personal/08-defun.el" "d:/home/.emacs.d/personal/09-packages.el" "d:/home/.emacs.d/personal/10-el-get.el" "d:/home/.emacs.d/personal/15-base.el" "d:/home/.emacs.d/personal/15-osx.el" "d:/home/.emacs.d/personal/15-windows.el" "d:/home/.emacs.d/personal/20-misc.el" "d:/home/.emacs.d/personal/20-ui.el" "d:/home/.emacs.d/personal/30-editor.el" "d:/home/.emacs.d/personal/35-program.el" "d:/home/.emacs.d/personal/40-auto-complete.el" "d:/home/.emacs.d/personal/60-binding.el" "d:/home/.emacs.d/personal/90-twitter.el"))
  (progn (mapc (quote load) (directory-files prelude-personal-dir (quote t) "^[^#].*el$")))
  (if (file-exists-p prelude-personal-dir) (progn (mapc (quote load) (directory-files prelude-personal-dir (quote t) "^[^#].*el$"))))
  (when (file-exists-p prelude-personal-dir) (mapc (quote load) (directory-files prelude-personal-dir (quote t) "^[^#].*el$")))
  eval-buffer(#<buffer  *load*> nil "d:/home/.emacs.d/init.el" nil t)  ; Reading at buffer position 2986
  load-with-code-conversion("d:/home/.emacs.d/init.el" "d:/home/.emacs.d/init.el" t t)
  load("d:/home/.emacs.d/init" t t)
  #[0 "\205\262
MatthewDarling commented 11 years ago

So, I'm getting this when I try to install on Windows 7. My error is identical to the original poster's (just with my username instead).

I don't know much about elisp, but what I can say is that on my system, cygwin's bash can find the file "C:/Users/Matt/.emacs.d/el-get/el-get/./el-get.info" but not the file "/Users/Matt/.emacs.d/el-get/el-get/./el-get.info". So it seems like there's an issue with the drive letter being left out.

dimitri commented 11 years ago

On a quick glance over it looks like the drive letter is present in the command line (see the debug traces) but not in the install info provided error message. So the problem is elsewhere. Could you try running the command in your shell, either cmd.exe or cygwin's bash, and report any error or success?

MatthewDarling commented 11 years ago

It looks to me like the command being run is: install-info.exe C:/Users/Matt/.emacs.d/el-get/el-get.info dir

Is the literal quoted "dir" in the args list supposed to be a variable named dir?

When I run that command in cygwin's bash, it gives the exact same error: "install-info: No such file or directory for /Users/Matt/.emacs.d/el-get/el-get.info"

dimitri commented 11 years ago

The second argument is meant to be the literal "dir", that's the way install-info works. Is install info known to work at all on windows, is there an alternative (in elisp I would then guess) to use on that OS?

MatthewDarling commented 11 years ago

I ran the command again with a version of install-info from GnuWin32, and it worked fine. I'm not sure what el-get should do, though. But users can download texinfo (which contains install-info) here: http://gnuwin32.sourceforge.net/packages/texinfo.htm

If GnuWin32 is installed in the default location, the executable for install-info lands at: C:/Program Files (x86)/GnuWin32/bin/install-info.exe (or C:/Program Files on a 32 bit machine). Don't know if that's easier than asking people to install it and then place it in front of Cygwin's /bin in their PATH.

dimitri commented 11 years ago

If there's a way to tell which version of install-info you have and to assert that you have the one that doesn't work, we could try and do that automatically, raising a WARNING when it's the wrong version, with some instructions. We could improve the error message of the current install-info call when on windows, too, but that'd be too late. With the Assert idea we could transform the ERROR into a WARNING and avoid a failure (you'd just miss the Info book).

Want to try finding clues so that we can assert things?

MatthewDarling commented 11 years ago

The version that fails and the version that succeeds seem incredibly similar - they report the same version number and identical help text. It's not a problem with permissions, either, because I've run them both as administrator. Here's the logs for what I tested; long story short there's no difference except that one craps out and the other doesn't. The debug flag was no help, it just gives the same error.

At any rate, in the logs below, ./install-info.exe is the one I installed from GnuWin32's website and install-info.exe is the one included in Cygwin.

Working version from GnuWin32

MattAd@X230t /cygdrive/c/Program Files (x86)/GnuWin32/bin $ ./install-info.exe C:/Users/Matt/.emacs.d/el-get/el-get.info dir

MattAd@X230t /cygdrive/c/Program Files (x86)/GnuWin32/bin $ ./install-info.exe --version install-info (GNU texinfo) 4.13

Copyright (C) 2008 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

MattAd@X230t /cygdrive/c/Program Files (x86)/GnuWin32/bin $ ./install-info.exe --help Usage: install-info [OPTION]... [INFO-FILE [DIR-FILE]]

Add or remove entries in INFO-FILE from the Info directory DIR-FILE.

Options: --debug report what is being done. --delete delete existing entries for INFO-FILE from DIR-FILE; don't insert any new entries. --description=TEXT the description of the entry is TEXT; used with the --name option to become synonymous with the --entry option. --dir-file=NAME specify file name of Info directory file; equivalent to using the DIR-FILE argument. --dry-run same as --test. --entry=TEXT insert TEXT as an Info directory entry. TEXT is written as an Info menu item line followed by zero or more extra lines starting with whitespace. If you specify more than one entry, all are added. If you don't specify any entries, they are determined from information in the Info file itself. When removing, TEXT specifies the entry to remove. TEXT is only removed as a last resort, if the entry as determined from the Info file is not present, and the basename of the Info file isn't found either. --help display this help and exit. --info-dir=DIR same as --dir-file=DIR/dir. --info-file=FILE specify Info file to install in the directory; equivalent to using the INFO-FILE argument. --item=TEXT same as --entry=TEXT. --keep-old do not replace entries, or remove empty sections. --menuentry=TEXT same as --name=TEXT. --name=TEXT the name of the entry is TEXT; used with --description to become synonymous with the --entry option. --no-indent do not format new entries in the DIR file. --quiet suppress warnings. --regex=R put this file's entries in all sections that match the regular expression R (ignoring case). --remove same as --delete. --remove-exactly only remove if the info file name matches exactly; suffixes such as .info and .gz are not ignored. --section=SEC put entries in section SEC of the directory. If you specify more than one section, all the entries are added in each of the sections. If you don't specify any sections, they are determined from information in the Info file itself. --section R SEC equivalent to --regex=R --section=SEC --add-once. --silent suppress warnings. --test suppress updating of DIR-FILE. --version display version information and exit.

Email bug reports to bug-texinfo@gnu.org, general questions and discussion to help-texinfo@gnu.org. Texinfo home page: http://www.gnu.org/software/texinfo/

MattAd@X230t /cygdrive/c/Program Files (x86)/GnuWin32/bin $ ./install-info.exe --debug C:/Users/Matt/.emacs.d/el-get/el-get.info dir debug: reading dir file dir debug: reading input file /Users/Matt/.emacs.d/el-get/el-get.info debug: writing dir file dir

Non-Working version from Cygwin

MattAd@X230t /cygdrive/c/Program Files (x86)/GnuWin32/bin $ install-info.exe C:/Users/Matt/.emacs.d/el-get/el-get.info dir install-info: No such file or directory for /Users/Matt/.emacs.d/el-get/el-get.info

MattAd@X230t /cygdrive/c/Program Files (x86)/GnuWin32/bin $ install-info.exe --version install-info (GNU texinfo) 4.13

Copyright (C) 2008 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

MattAd@X230t /cygdrive/c/Program Files (x86)/GnuWin32/bin $ install-info.exe --help Usage: install-info [OPTION]... [INFO-FILE [DIR-FILE]]

Add or remove entries in INFO-FILE from the Info directory DIR-FILE.

Options: --debug report what is being done. --delete delete existing entries for INFO-FILE from DIR-FILE; don't insert any new entries. --description=TEXT the description of the entry is TEXT; used with the --name option to become synonymous with the --entry option. --dir-file=NAME specify file name of Info directory file; equivalent to using the DIR-FILE argument. --dry-run same as --test. --entry=TEXT insert TEXT as an Info directory entry. TEXT is written as an Info menu item line followed by zero or more extra lines starting with whitespace. If you specify more than one entry, all are added. If you don't specify any entries, they are determined from information in the Info file itself. When removing, TEXT specifies the entry to remove. TEXT is only removed as a last resort, if the entry as determined from the Info file is not present, and the basename of the Info file isn't found either. --help display this help and exit. --info-dir=DIR same as --dir-file=DIR/dir. --info-file=FILE specify Info file to install in the directory; equivalent to using the INFO-FILE argument. --item=TEXT same as --entry=TEXT. --keep-old do not replace entries, or remove empty sections. --menuentry=TEXT same as --name=TEXT. --name=TEXT the name of the entry is TEXT; used with --description to become synonymous with the --entry option. --no-indent do not format new entries in the DIR file. --quiet suppress warnings. --regex=R put this file's entries in all sections that match the regular expression R (ignoring case). --remove same as --delete. --remove-exactly only remove if the info file name matches exactly; suffixes such as .info and .gz are not ignored. --section=SEC put entries in section SEC of the directory. If you specify more than one section, all the entries are added in each of the sections. If you don't specify any sections, they are determined from information in the Info file itself. --section R SEC equivalent to --regex=R --section=SEC --add-once. --silent suppress warnings. --test suppress updating of DIR-FILE. --version display version information and exit.

Email bug reports to bug-texinfo@gnu.org, general questions and discussion to help-texinfo@gnu.org. Texinfo home page: http://www.gnu.org/software/texinfo/

MattAd@X230t /cygdrive/c/Program Files (x86)/GnuWin32/bin $ install-info.exe --debug C:/Users/Matt/.emacs.d/el-get/el-get.info dir debug: reading dir file dir debug: reading input file /Users/Matt/.emacs.d/el-get/el-get.info install-info: No such file or directory for /Users/Matt/.emacs.d/el-get/el-get.info

DarwinAwardWinner commented 11 years ago

A thought: maybe the cygwin version expects a unix-style path like install-info.exe --debug /cygdrive/c/Users/Matt/.emacs.d/el-get/el-get.info dir?

MatthewDarling commented 11 years ago

Ah! That did it. I never use the /cygdrive/c/ style path, and it's never been an issue for me before (that I know of).

On Tue, Dec 11, 2012 at 5:04 AM, Ryan Thompson notifications@github.comwrote:

A thought: maybe the cygwin version expects a unix-style path like install-info.exe --debug /cygdrive/c/Users/Matt/.emacs.d/el-get/el-get.info dir?

— Reply to this email directly or view it on GitHubhttps://github.com/dimitri/el-get/issues/861#issuecomment-11237814.

dimitri commented 11 years ago

Does the unix style path work with both versions? How do we know that we have to expand into that format and what the prefix is? Are there cases where expanding to that format could actually break situations that work now, in case we would want to make it more general than just install-info.exe?

DarwinAwardWinner commented 11 years ago

I think the answer is that cygwin utils are not meant to be used outside of cygwin, so adding them to your windows path is just going to break things.

MatthewDarling commented 11 years ago

Just tested: the Unix-style path doesn't work with the GnuWin32 version. As for making the conversion, I Googled around and found out about cygpath, a utility that's installed by default with Cygwin, which can be run as: cygpath --unix C:/Users/Matt/.emacs.d/el-get/el-get.info to produce the output /cygdrive/c/Users/Matt/.emacs.d/el-get/el-get.info. The Cygwin version, which requires the modified path, is going to be the default for the most users - but for everyone on Windows who was able to run the install script in the past, it's going to break.

Is it reasonable to run cygpath on the path by default? There's no real way of knowing that the conversion is needed unless you get an error on the "C:/Users/Matt..." version, but most users are going to get that error on Windows. Perhaps if an error occurs, the command could be run again without the `cygpath`` conversion.

As far as I understand, all Cygwin utilities should be able to understand Unix-style paths. Nothing should break that currently works for Cygwin users, if you were to start using the cygpath conversion elsewhere. But, if there are non-Cygwin users who have native versions of all the required utilities, they might have issues.

Re: DarwinAwardWinner, el-get already relies on a lot of Unix utilities that are easiest to get through Cygwin. Here's the instructions that I had to follow in order to discover the install-info.exe crash: http://gelvaos.blogspot.ca/2011/03/emacs-el-get-on-windows.html

Native versions of all those tools might be available elsewhere, but I think Cygwin is the path most people take.

DarwinAwardWinner commented 11 years ago

I thought that with cygwin, you also have to use the cygwin version of emacs as well, in which case everything is just unix and there's no problem. Or am I wrong?

dimitri commented 11 years ago

I did setup el-get once with some recipes that needs make, autoconf, instal-info and the like, and I remember having installed Portable version of all those tools from GnuWin32. I'm not eager to do that again anytime soon, but it worked well in the end and I have an USB drive with a Portable Emacs And Tools that I can use as a survival kit.

So I think that @DarwinAwardWinner is right to advice using the cygwin Emacs when using the cygwin tools in the path. Also I note that we have;

  `gnu'          compiled for a GNU Hurd system.
  `gnu/linux'    compiled for a GNU/Linux system.
  `gnu/kfreebsd' compiled for a GNU system with a FreeBSD kernel.
  `darwin'       compiled for Darwin (GNU-Darwin, Mac OS X, ...).
  `ms-dos'       compiled as an MS-DOS application.
  `windows-nt'   compiled as a native W32 application.
  `cygwin'       compiled using the Cygwin library.
Anything else (in Emacs 24.1, the possibilities are: aix, berkeley-unix,
hpux, irix, usg-unix-v) indicates some sort of Unix system.

So it should be possible to have cygwin specific variants of build commands in the recipes and in the way we call install-info.

MatthewDarling commented 11 years ago

Well, I use the GNU binary of Emacs, and have Cygwin providing various utilities like diff without any trouble. So my system (and the few other people who have reported this problem) would show up as windows-nt, even though we have a Cygwin install-info.exe. But I'm willing to accept that I'm in the wrong and that life would be easier if I stayed within Cygwin :)

Also, I should note that I've been using el-get for days now simply by cloning the repository. So if the install script doesn't work for some users, it's not the end of the world - they just need to clone the repository instead.

dimitri commented 11 years ago

For a moment I did forget that installing el-get itself will call into install-info. I think we might need some words about that that in the README now, along the lines of:

Installing El-Get depends on a working install-info command, please make sure you have one in your PATH. When using windows, take into account that the way Emacs calls external programs is not the same for native builds and cygwin, so make sure you don't mix and match them at least for install-info (e.g. cygwin version of install-info will error out when called by el-get from a windows-nt Emacs, see system-type).

Does that manage to describe the situation correctly?

MatthewDarling commented 11 years ago

Yeah, that's perfect. Is it worth putting in a link to the GnuWin32 version as at least one option for windows-nt users?

On Wed, Dec 12, 2012 at 9:19 AM, Dimitri Fontaine notifications@github.comwrote:

For a moment I did forget that installing el-get itself will call into install-info. I think we might need some words about that that in the README now, along the lines of:

Installing El-Get depends on a working install-info command, please make sure you have one in your PATH. When using windows, take into account that the way Emacs calls external programs is not the same for native builds and cygwin, so make sure you don't mix and match them at least for install-info (e.g. cygwin version of install-info will error out when called by el-get from a windows-nt Emacs, see system-type).

Does that manage to describe the situation correctly?

— Reply to this email directly or view it on GitHubhttps://github.com/dimitri/el-get/issues/861#issuecomment-11290243.

dimitri commented 11 years ago

Fixed in 6f9f14c4b8d9fd92c17a138cfa033e0a4e10ad26.