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: Sun, 16 May 2021 10:09:07 +0100 Message-ID: References: <834kfmabvs.fsf@gnu.org> <83tunj651i.fsf@gnu.org> <83lf8u68bu.fsf@gnu.org> <83mtta4gtf.fsf@gnu.org> <83fsz24f2x.fsf@gnu.org> <83v97x2xum.fsf@gnu.org> <83bl9nevd3.fsf@gnu.org> <831rad5t18.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="5210"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 48137@debbugs.gnu.org, Stefan Monnier To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sun May 16 11:11:13 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 1liCnp-0001Cq-5k for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 16 May 2021 11:11:13 +0200 Original-Received: from localhost ([::1]:42010 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1liCnn-0007Km-9s for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 16 May 2021 05:11:11 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:36368) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1liCmi-0007Jp-J6 for bug-gnu-emacs@gnu.org; Sun, 16 May 2021 05:10:05 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:38166) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1liCmg-0000cG-Hb for bug-gnu-emacs@gnu.org; Sun, 16 May 2021 05:10:04 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1liCmg-0002gt-Ba for bug-gnu-emacs@gnu.org; Sun, 16 May 2021 05:10:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Ioannis Kappas Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 16 May 2021 09:10: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.162115616410287 (code B ref 48137); Sun, 16 May 2021 09:10:02 +0000 Original-Received: (at 48137) by debbugs.gnu.org; 16 May 2021 09:09:24 +0000 Original-Received: from localhost ([127.0.0.1]:49712 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1liCm3-0002fr-PM for submit@debbugs.gnu.org; Sun, 16 May 2021 05:09:24 -0400 Original-Received: from mail-oi1-f173.google.com ([209.85.167.173]:43696) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1liCm2-0002ff-LB for 48137@debbugs.gnu.org; Sun, 16 May 2021 05:09:22 -0400 Original-Received: by mail-oi1-f173.google.com with SMTP id j75so3777843oih.10 for <48137@debbugs.gnu.org>; Sun, 16 May 2021 02:09:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=zfJy1wXpAN+VPz7VBevxpFecUlNND/9FXkpmngbaIRM=; b=GVnNKlokosZkASaBnUGZ6LOzk/CiTcG7gQ6jGqolu5VaCiyNST/BnnfbeyAAGrX0cR VjmN5g0QsPbZTokfLS64D97eil0pIqWoFwdfDd9lfs1Lc6RZVyAh7VVcJIW+LcfS8tIO qewbmvcwl4XSVeZDuzYIg8/HXevMbxCZ5nS+eByO7BVM+o0ci8WyUWjNMCizoUpHYlEi KEzvX5ZBGpMQ0KoGo/5pdgPE5ZlObsggCpnoMPuqmd8ZEJ3FREibDeT55kY4xZGRz19y +3N6AtjsqDkzHxWrf0dSYepO/MXeqD1/bERV86hHjiWiaaNR0V8w4gc+QhhwK30iaXFZ KbOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=zfJy1wXpAN+VPz7VBevxpFecUlNND/9FXkpmngbaIRM=; b=JKdD3pLPonctHeccZfMLN7mQ90HFpq4YP4wN/hZ67O8VDqrCca8GUCxZjVCnVmWSTq B+i2b9kpsP4u3pMx6PRyIYtZ6QMHqYJhli77s5jO5LfT2DgpcsxZaTJSALG8Schv7xzl i5mm9yL/Qfv3A/VqScv8pxvNaZa8FvSWNDKrLMo+jf9sRXaLlKlB+G5QSH4kn+xJC/rp Hijmd2QYHf5VMm/IjW2mttT+zsT7sNpJd1CK/M3SBhgrM3sfWVvHV8pcRjAdpUOJQTd1 P6CNECUBuXaA5xKdPYSAB4UpUlCBG1PTe2I9SYrwi2LvHXv/me0idvisMHUJ18eHCFQX SPww== X-Gm-Message-State: AOAM530ZaEk7717Mg7xyJ+zewpygZyPohJdPukcbwE1EDOZ+xmdaf/p5 mRBesND3jufuXEH6wmkg/+9JjETzSOKgvnKfefM= X-Google-Smtp-Source: ABdhPJwMhiZ0TEmjO1NfsHI2EJKRdjzjYorvp0Qu2D88QjoVD+VhognnbVUCSju0blHY3j99+e3d6/L5qB5mO1aRApo= X-Received: by 2002:aca:30cc:: with SMTP id w195mr39501149oiw.78.1621156157085; Sun, 16 May 2021 02:09:17 -0700 (PDT) In-Reply-To: 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:206648 Archived-At: On Sat, May 15, 2021 at 2:52 PM Ioannis Kappas wrote: > I shall have a look next whether we could always load the package with > `insert-file-contents-literally' but parse headers with the correct > encoding (`find-operation-coding-system' looks like a promising fn > to determine the correct encoding from a literal file buffer). Please find below a patch to read package headers from a temporarily decoded buffer, while keeping the literal buffer (which will be used to install the package) intact. diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index ecb2573cab..a7a11bc6cc 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -2122,8 +2122,22 @@ package-install-from-buffer ((derived-mode-p 'tar-mode) (package-tar-file-info)) (t - (save-excursion - (package-buffer-info))))) + ;; Package headers should be parsed from decoded text + ;; (see Bug#48137) where possible. + (if (and (eq buffer-file-coding-system 'no-conversion) + buffer-file-name) + (let* ((package-buffer (current-buffer)) + (decoding-system + (car (find-operation-coding-system 'insert-file-contents + (cons buffer-file-name + package-buffer))))) + (with-temp-buffer + (insert-buffer-substring package-buffer) + (decode-coding-region (point-min) (point-max) decoding-system) + (package-buffer-info))) + + (save-excursion + (package-buffer-info)))))) (name (package-desc-name pkg-desc))) ;; Download and install the dependencies. (let* ((requires (package-desc-reqs pkg-desc)) @@ -2148,6 +2162,7 @@ package-install-file (setq default-directory file) (dired-mode)) (insert-file-contents-literally file) + (set-visited-file-name file) (when (string-match "\\.tar\\'" file) (tar-mode))) (package-install-from-buffer))) Notes: - The logic can be moved to `package-buffer-info'. - Ideally, I would have liked to only copy and header section to the temporary buffer for decoding, but the `(while (comment-forward))` trick that I've tried fails to move past the headers section in literal buffers with CRLF pairs. Perhaps it is better after all not to try and use any regex ops on a 'binary buffer? thanks