From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Ioannis Kappas Newsgroups: gmane.emacs.bugs Subject: bug#48137: 27.2; `package-install-file' fails when loading a package file with DOS line endings Date: Sat, 1 May 2021 12:48:06 +0100 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000e3480405c1434d4d" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="13847"; mail-complaints-to="usenet@ciao.gmane.io" To: 48137@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sat May 01 13:49:11 2021 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lco7S-0003Pt-94 for geb-bug-gnu-emacs@m.gmane-mx.org; Sat, 01 May 2021 13:49:10 +0200 Original-Received: from localhost ([::1]:55648 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lco7R-0004RX-1Q for geb-bug-gnu-emacs@m.gmane-mx.org; Sat, 01 May 2021 07:49:09 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:41176) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lco7K-0004RR-Jo for bug-gnu-emacs@gnu.org; Sat, 01 May 2021 07:49:02 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:52146) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lco7K-0004x4-CX for bug-gnu-emacs@gnu.org; Sat, 01 May 2021 07:49:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1lco7K-0003sZ-90 for bug-gnu-emacs@gnu.org; Sat, 01 May 2021 07:49:02 -0400 X-Loop: help-debbugs@gnu.org In-Reply-To: Resent-From: Ioannis Kappas Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 01 May 2021 11:49:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 48137 X-GNU-PR-Package: emacs Original-Received: via spool by 48137-submit@debbugs.gnu.org id=B48137.161986970414838 (code B ref 48137); Sat, 01 May 2021 11:49:02 +0000 Original-Received: (at 48137) by debbugs.gnu.org; 1 May 2021 11:48:24 +0000 Original-Received: from localhost ([127.0.0.1]:35450 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lco6i-0003rF-FD for submit@debbugs.gnu.org; Sat, 01 May 2021 07:48:24 -0400 Original-Received: from mail-oo1-f45.google.com ([209.85.161.45]:38731) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lco6h-0003r1-1e for 48137@debbugs.gnu.org; Sat, 01 May 2021 07:48:23 -0400 Original-Received: by mail-oo1-f45.google.com with SMTP id h9-20020a4a94090000b02901f9d4f64172so215543ooi.5 for <48137@debbugs.gnu.org>; Sat, 01 May 2021 04:48:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=d7c1LiokAfsLbHgZVLq4PjA/S+RDt+Ca8pCE7VeGmVY=; b=MxJtZkjhsuayDyvIT8Xw5KeZC8SUUnrfSblzxvJWjbSyNvv6ov9BlYSLCPsQQCheSV xyVkGCVd/7ZA9vpRsQK/3dcW+CshuGzLsc1rXbUAg5qFSme4ffxGF7MK8qOD0myo3TuC 5/bBcwHnP4iy2iAHvbT/CMSMzW4R0h8YPNWDUW31Lu3Jkqz8xAaAtIVwQb1mnR/4ckQ8 aq9aor4nfh+a6OmzNdqQats353SEEzixgbEqbvp2QbGzkjvC0Lbr+Cxk9QZL24nD7jvB 0kX4ObeyEWOmsdFMilri1mqox06lA5Yof/iMiQDevB2zIwI/oP9iSIKbQx+6TzUarx4N j9SQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=d7c1LiokAfsLbHgZVLq4PjA/S+RDt+Ca8pCE7VeGmVY=; b=KmG/6rvnbDD7AYaExQQgWGDs2D8VJUMowkW9uBfWpBd7KUqeLQ0iIQe4NObAYUKjKp 0Sf9R/SUF77Iqted5zGT8FgajT78AG4ZVnu2XyhZ/CpzFFwev1BvTwZDGygb71MuVAQJ DSshnF1w0bw1cnGUl90J3qHMsBpOLKp1QiojretA84HcE7yfhsKsXRXu2armAJrQsus6 BvLk9XCNYBWGJ94ZskMUsAkKqRuzwzdI4AtVpWuUMyzqB7jmkKoUCm298/hiOB6ZAC1V iILG3wTuxHxA2PodTMzbWQ3PC9qxtLO5uDU0z6Ckv+IcBD575tQ+qEN2HYZriv9Nad3t QmZQ== X-Gm-Message-State: AOAM533Jblz99y2TN1bHdUV6jTXANZOi5sTfaC1TbK9FI1VhC5eCk9iF vRJJRAO0qgyu9hNNZ68Q0q8IWcFTDp5Lus9j33eo8OOUXVg= X-Google-Smtp-Source: ABdhPJz7jfkCkr67FiAPcIHI7jcku245u0OK9oWEs4ezrIqjPGGJD0uQmo+oN+OEb7l2o1pA0glWtj82ndPllhffuXo= X-Received: by 2002:a4a:e692:: with SMTP id u18mr8268435oot.54.1619869697257; Sat, 01 May 2021 04:48:17 -0700 (PDT) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:205336 Archived-At: --000000000000e3480405c1434d4d Content-Type: text/plain; charset="UTF-8" The error appears to be a side effect of `package-install-file' loading the file literally with `insert-file-contents-literally' and thus setting the coding system to 'no-conversion (as reported by the `buffer-file-coding-system' variable ). This means that for a DOS encoded file the ?\r (Carriage Return) in the DOS line ending ?\r?\n will be treated as an independent control character rather than consumed as part of the line ending as far as Emacs is concerned. This extra control character in our case appears in the version number extracted with `lm-header' (.e.g. "0.1^M"), failing the `version-to-list' conversion in `package-buffer-info'->`package-strip-rcs-id', resulting to the error that it lacks a version header. It is not obvious why `package-install-file' loads package files literally at all times, `package--with-response-buffer-1' also does the same. If the reason turns out not to be important, then a possible solution could be to load package files metaphorically: diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index ecb2573cab..98d63f1aff 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -2147,8 +2147,11 @@ package-install-file (progn (setq default-directory file) (dired-mode)) - (insert-file-contents-literally file) - (when (string-match "\\.tar\\'" file) (tar-mode))) + (if (string-match "\\.tar\\'" file) + (progn + (insert-file-contents-literally file) + (tar-mode)) + (insert-file-contents file))) (package-install-from-buffer))) ;;;###autoload and perhaps the same can be extended to `package--with-response-buffer-1'. Another solution could be to upgrade the 'lisp-mnt package to ignore ?\r characters. Looking at the `lm-header' fn invoked by `package-buffer-info', it does have a list of characters to stop at when looking for a header, we can thus add the carriage return to the list: diff --git a/lisp/emacs-lisp/lisp-mnt.el b/lisp/emacs-lisp/lisp-mnt.el index 9cba232e16..3eb493d286 100644 --- a/lisp/emacs-lisp/lisp-mnt.el +++ b/lisp/emacs-lisp/lisp-mnt.el @@ -267,7 +267,7 @@ lm-header (if (save-excursion (skip-chars-backward "^$" (match-beginning 0)) (= (point) (match-beginning 0))) - "[^\n]+" "[^$\n]+"))) + "[^\n\r]+" "[^$\n\r]+"))) (match-string-no-properties 0)))) (defun lm-header-multiline (header) The attached issue-package-install-file-test-up1.el, is an updated ert including an additional `header' test for the above. Or is it perhaps that packages should only be written with Unix line endings and thus the solution is to update documentation and create more targeted error messages? I don't have a thorough understanding of 'package, so please feel free to scrutinize the above/suggest alternatives. Thanks --000000000000e3480405c1434d4d Content-Type: application/octet-stream; name="issue-package-install-file-test-up1.el" Content-Disposition: attachment; filename="issue-package-install-file-test-up1.el" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ko5ojm4l0 Ozs7IC0qLSBsZXhpY2FsLWJpbmRpbmc6IHQ7IC0qLQ0KKHJlcXVpcmUgJ2VydCkNCg0KKGRlZmNv bnN0IHRlc3QvcGFja2FnZSAiOzs7IHBhY2thZ2UtaW5zdGFsbC1maWxlLXRlc3Qtd2luLmVsIC0t LSB0ZXN0IGlzc3VlIA0KDQo7OyBWZXJzaW9uOiAwLjENCg0KKGRlZnVuIHBhY2thZ2UtaW5zdGFs bC1maWxlLXRlc3Qtd2luLzUgKCkgNSkNCg0KKHByb3ZpZGUgJ3BhY2thZ2UtaW5zdGFsbC1maWxl LXRlc3Qtd2luKQ0KDQo7OzsgcGFja2FnZS1pbnN0YWxsLWZpbGUtdGVzdC13aW4uZWwgZW5kcyBo ZXJlDQoiDQogICJNaW5pbWFsIHRlc3QgcGFja2FnZSBmaWxlIikNCg0KKGVydC1kZWZ0ZXN0IHBh Y2thZ2UtaW5zdGFsbC1maWxlICgpDQogICJUZXN0IHRoYXQgcGFja2FnZSBpbnN0YWxsIGZpbGUg d29ya3Mgb24gYSBtaW5pbWFsIHBhY2thZ2UgZmlsZQ0Kd3JpdHRlbiB0byBkaXNrIGJ5IEVtYWNz LiINCiAgKG1lc3NhZ2UgIjpzeXN0ZW0gJXMgOnZlcnNpb24gJXMiIHN5c3RlbS1jb25maWd1cmF0 aW9uIGVtYWNzLXZlcnNpb24pDQoNCiAgKGxldCogKCh0ZW1wLWRpciAobWFrZS10ZW1wLWZpbGUg InBhY2thZ2UtaW5zdGFsbC1maWxlLXRlc3Qtd2luIiB0KSkNCiAgICAgICAgIChwYWNrYWdlLXBh dGggKGV4cGFuZC1maWxlLW5hbWUNCiAgICAgICAgICAgICAgICAgICAgICAgICJwYWNrYWdlLWlu c3RhbGwtZmlsZS10ZXN0LXdpbi5lbCINCiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAtZGly KSkpDQogICAgOzsgd3JpdGUgZmlsZSBpbiB0aGUgZGVmYXVsdCBlbmNvZGluZw0KICAgICh3aXRo LXRlbXAtYnVmZmVyDQogICAgICAoaW5zZXJ0IHRlc3QvcGFja2FnZSkNCiAgICAgICh3cml0ZS1y ZWdpb24gKHBvaW50LW1pbikgKHBvaW50LW1heCkgcGFja2FnZS1wYXRoKSkNCiAgICAobWVzc2Fn ZSAiOnBhY2thZ2UtZmlsZS1jcmVhdGVkLWF0ICVzIiBwYWNrYWdlLXBhdGgpDQoNCiAgICA7OyBy ZXBvcnQgb24gZmlsZSBlbmNvZGluZw0KICAgICh3aXRoLXRlbXAtYnVmZmVyDQogICAgICAoaW5z ZXJ0LWZpbGUtY29udGVudHMgcGFja2FnZS1wYXRoKQ0KICAgICAgKGxldCogKChjb250ZW50cyAo YnVmZmVyLXN0cmluZykpKQ0KICAgICAgICAobWVzc2FnZSAiOnBhY2thZ2UtZmlsZS1jb2Rpbmct c3lzdGVtICVzIiBidWZmZXItZmlsZS1jb2Rpbmctc3lzdGVtKSkpDQoNCiAgICA7OyBpbnN0YWxs IHBhY2thZ2UNCiAgICAocGFja2FnZS1pbnN0YWxsLWZpbGUgcGFja2FnZS1wYXRoKQ0KICAgIChk ZWxldGUtZGlyZWN0b3J5IHRlbXAtZGlyIHQpDQoNCiAgICANCiAgICA7OyBjYWxsIGR1bW15IGZ1 bmN0aW9uDQogICAgKHJlcXVpcmUgJ3BhY2thZ2UtaW5zdGFsbC1maWxlLXRlc3Qtd2luKQ0KICAg IChzaG91bGQgKGVxdWFsIDUgKHBhY2thZ2UtaW5zdGFsbC1maWxlLXRlc3Qtd2luLzUpKSkNCg0K ICAgIDs7IHJlbW92ZSBwYWNrYWdlDQogICAgKHBhY2thZ2UtZGVsZXRlIChjYWRyIChhc3NxICdw YWNrYWdlLWluc3RhbGwtZmlsZS10ZXN0LXdpbiBwYWNrYWdlLWFsaXN0KSkpKSkNCg0KKHJlcXVp cmUgJ2xpc3AtbW50KQ0KKGVydC1kZWZ0ZXN0IGhlYWRlciAoKQ0KICAiVGVzdCB0aGF0IGxtLWhl YWRlciBjYW4gcmV0dXJuIHZlcnNpb24gaW5mb3JtYXRpb24gb24gYSBkb3MNCmNvZGVkIHBhY2th Z2VkIGZpbGUgbG9hZGVkIGxpdGVyYWxseSAobWltaWNraW5nICdwYWNrYWdlKSINCiAgKG1lc3Nh Z2UgIjpzeXN0ZW0gJXMgOnZlcnNpb24gJXMiIHN5c3RlbS1jb25maWd1cmF0aW9uIGVtYWNzLXZl cnNpb24pDQoNCiAgKGxldCogKCh0ZW1wLWRpciAobWFrZS10ZW1wLWZpbGUgInBhY2thZ2UtaW5z dGFsbC1maWxlLXRlc3Qtd2luIiB0KSkNCiAgICAgICAgIChwYWNrYWdlLXBhdGggKGV4cGFuZC1m aWxlLW5hbWUNCiAgICAgICAgICAgICAgICAgICAgICAgICJwYWNrYWdlLWluc3RhbGwtZmlsZS10 ZXN0LXdpbi5lbCINCiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAtZGlyKSkpDQogICAgOzsg d3JpdGUgd2l0aCBkb3MgbGluZSBlbmRpbmdzDQogICAgKHdpdGgtdGVtcC1idWZmZXINCiAgICAg IChpbnNlcnQgdGVzdC9wYWNrYWdlKQ0KICAgICAgKGxldCAoKGNvZGluZy1zeXN0ZW0tZm9yLXdy aXRlICdwcmVmZXItdXRmLTgtZG9zKSkNCiAgICAgICAgKHdyaXRlLXJlZ2lvbiAocG9pbnQtbWlu KSAocG9pbnQtbWF4KSBwYWNrYWdlLXBhdGgpKQ0KICAgICAgKG1lc3NhZ2UgIjpwYWNrYWdlLWZp bGUtY29kaW5nLXN5c3RlbSAlcyIgYnVmZmVyLWZpbGUtY29kaW5nLXN5c3RlbSkpDQogICAgDQog ICAgKG1lc3NhZ2UgIjpwYWNrYWdlLWZpbGUtY3JlYXRlZC1hdCAlcyIgcGFja2FnZS1wYXRoKQ0K ICAgIDs7IGxvYWQgbGl0ZXJhbGx5DQogICAgKHdpdGgtdGVtcC1idWZmZXINCiAgICAgIChpbnNl cnQtZmlsZS1jb250ZW50cy1saXRlcmFsbHkgcGFja2FnZS1wYXRoKQ0KICAgICAgKGdvdG8tY2hh ciAocG9pbnQtbWluKSkNCiAgICAgIChzaG91bGQgKHN0cmluZz0gIjAuMSIgKGxtLWhlYWRlciAi dmVyc2lvbiIpKSkpDQoNCiAgICAoZGVsZXRlLWRpcmVjdG9yeSB0ZW1wLWRpciB0KSkpDQo= --000000000000e3480405c1434d4d--