unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#67949: 29.1; package-vc-{install,upgrade} modifies tracked files
@ 2023-12-21  6:52 Sean Allred
  2023-12-25 20:11 ` Philip Kaludercic
  0 siblings, 1 reply; 6+ messages in thread
From: Sean Allred @ 2023-12-21  6:52 UTC (permalink / raw)
  To: 67949


Run the following from `emacs -Q`:

    (package-vc-install
     '(bugreport :url "git@github.com:vermiculus/bugreport-20231221.git"))
    (package-vc-upgrade (cadr (assq 'bugreport package-alist)))

forking/modifying the above as you please.

On upgrade, this complains that

    Running "git pull --stat"...
    error: cannot pull with rebase: You have unstaged changes.
    error: Please commit or stash them.

git-diff reveals the culprit:

    diff --git a/bugreport-pkg.el b/bugreport-pkg.el
    index df8438a..e8947d3 100644
    --- a/bugreport-pkg.el
    +++ b/bugreport-pkg.el
    @@ -1,4 +1,2 @@
    -(define-package
    -  "bugreport20231221"
    -  "0.1"
    -  "Bug report on 2023-12-21")
    +;;; Generated package description from bugreport.el  -*- no-byte-compile: t -*-
    +(define-package "bugreport" "0" "No description available." 'nil :kind vc)

and that 'Generated package description' language seems to be coming
from `package-vc--generate-description-file`:

    (write-region (concat ";;; Generated package description from " (replace-regexp-in-string "-pkg\\.el\\'" ".el" (file-name-nondirectory pkg-file)) "  -*- no-byte-compile: t -*-\n" (prin1-to-string (nconc (list 'define-package (symbol-name name) (package-vc--version pkg-desc) (let ((cl-x pkg-desc)) (progn (or ... ...) (aref cl-x 3))) (let ((requires ...)) (list 'quote (mapcar ... requires)))) (list :kind 'vc) (package--alist-to-plist-args (let ((cl-x pkg-desc)) (progn (or ... ...) (aref cl-x 8)))))) "\n") nil pkg-file nil 'silent)
    (let ((print-level nil) (print-quoted t) (print-length nil)) (write-region (concat ";;; Generated package description from " (replace-regexp-in-string "-pkg\\.el\\'" ".el" (file-name-nondirectory pkg-file)) "  -*- no-byte-compile: t -*-\n" (prin1-to-string (nconc (list 'define-package (symbol-name name) (package-vc--version pkg-desc) (let (...) (progn ... ...)) (let (...) (list ... ...))) (list :kind 'vc) (package--alist-to-plist-args (let (...) (progn ... ...))))) "\n") nil pkg-file nil 'silent))
    (let ((name (let ((cl-x pkg-desc)) (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... cl-x))) (aref cl-x 1))))) (if (let ((cl-x pkg-desc)) (progn (or (progn (and (memq ... cl-struct-package-desc-tags) t)) (signal 'wrong-type-argument (list 'package-desc cl-x))) (aref cl-x 3))) nil (let ((cl-x pkg-desc)) (or (progn (and (memq (type-of cl-x) cl-struct-package-desc-tags) t)) (signal 'wrong-type-argument (list 'package-desc cl-x))) (let* ((v cl-x)) (aset v 3 (let ((main-file ...)) (or (let ... ...) (let* ... ...) (and main-file ... ...) package--default-summary)))))) (let ((print-level nil) (print-quoted t) (print-length nil)) (write-region (concat ";;; Generated package description from " (replace-regexp-in-string "-pkg\\.el\\'" ".el" (file-name-nondirectory pkg-file)) "  -*- no-byte-compile: t -*-\n" (prin1-to-string (nconc (list 'define-package (symbol-name name) (package-vc--version pkg-desc) (let ... ...) (let ... ...)) (list :kind 'vc) (package--alist-to-plist-args (let ... ...)))) "\n") nil pkg-file nil 'silent)))
    package-vc--generate-description-file(#s(package-desc :name bugreport-20231221 :version nil :summary "No description available." :reqs nil :kind vc :archive nil :dir "/Users/sallred/.emacs.d/elpa/bugreport-20231221/" :extras nil :signed nil) "/Users/sallred/.emacs.d/elpa/bugreport-20231221/bu...")
    package-vc--unpack-1(#s(package-desc :name bugreport-20231221 :version nil :summary "No description available." :reqs nil :kind vc :archive nil :dir "/Users/sallred/.emacs.d/elpa/bugreport-20231221/" :extras nil :signed nil) "/Users/sallred/.emacs.d/elpa/bugreport-20231221/")
    (progn (if (string-empty-p name) (progn (user-error "Empty package name"))) (progn (or (progn (and (memq (type-of pkg-desc) cl-struct-package-desc-tags) t)) (signal 'wrong-type-argument (list 'package-desc pkg-desc))) (let* ((v pkg-desc)) (aset v 7 pkg-dir))) (if (file-exists-p pkg-dir) (progn (if (yes-or-no-p (format "Overwrite previous checkout for package `%s'?" name)) (package--delete-directory pkg-dir) (error "There already exists a checkout for %s" name)))) (package-vc--clone pkg-desc pkg-spec pkg-dir rev) (if (directory-empty-p pkg-dir) (progn (delete-directory pkg-dir) (error "Empty checkout for %s" name))) (if (seq-remove #'(lambda (file) (member (file-name-nondirectory file) package-vc-non-code-file-names)) (directory-files-recursively pkg-dir "\\.el\\'" nil)) nil (if (yes-or-no-p (format "No Emacs Lisp files found when fetching \"%s\", abor..." name)) (progn (delete-directory pkg-dir t) (user-error "Installation aborted")))) (catch 'done (let ((tail '("lisp" "src"))) (while tail (let ((name (car tail))) (let* ((s ...) (dir ...) (s ...) (s ...)) (if s (throw ... ...))) (setq tail (cdr tail)))))) (if (seq-some #'(lambda (alist) (equal (alist-get name (cdr alist)) pkg-spec)) package-vc--archive-spec-alists) nil (customize-save-variable 'package-vc-selected-packages (cons (cons name pkg-spec) (seq-remove #'(lambda (spec) (string= name ...)) package-vc-selected-packages)))) (package-vc--unpack-1 pkg-desc pkg-dir))
    (let* ((name (progn (or (progn (and (memq ... cl-struct-package-desc-tags) t)) (signal 'wrong-type-argument (list 'package-desc pkg-desc))) (aref pkg-desc 1))) (dirname (package-desc-full-name pkg-desc)) (pkg-dir (file-name-as-directory (expand-file-name dirname package-user-dir)))) (progn (if (string-empty-p name) (progn (user-error "Empty package name"))) (progn (or (progn (and (memq (type-of pkg-desc) cl-struct-package-desc-tags) t)) (signal 'wrong-type-argument (list 'package-desc pkg-desc))) (let* ((v pkg-desc)) (aset v 7 pkg-dir))) (if (file-exists-p pkg-dir) (progn (if (yes-or-no-p (format "Overwrite previous checkout for package `%s'?" name)) (package--delete-directory pkg-dir) (error "There already exists a checkout for %s" name)))) (package-vc--clone pkg-desc pkg-spec pkg-dir rev) (if (directory-empty-p pkg-dir) (progn (delete-directory pkg-dir) (error "Empty checkout for %s" name))) (if (seq-remove #'(lambda (file) (member (file-name-nondirectory file) package-vc-non-code-file-names)) (directory-files-recursively pkg-dir "\\.el\\'" nil)) nil (if (yes-or-no-p (format "No Emacs Lisp files found when fetching \"%s\", abor..." name)) (progn (delete-directory pkg-dir t) (user-error "Installation aborted")))) (catch 'done (let ((tail '("lisp" "src"))) (while tail (let ((name ...)) (let* (... ... ... ...) (if s ...)) (setq tail (cdr tail)))))) (if (seq-some #'(lambda (alist) (equal (alist-get name ...) pkg-spec)) package-vc--archive-spec-alists) nil (customize-save-variable 'package-vc-selected-packages (cons (cons name pkg-spec) (seq-remove #'(lambda ... ...) package-vc-selected-packages)))) (package-vc--unpack-1 pkg-desc pkg-dir)))
    (let ((lisp-dir x285)) (let* ((name (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... pkg-desc))) (aref pkg-desc 1))) (dirname (package-desc-full-name pkg-desc)) (pkg-dir (file-name-as-directory (expand-file-name dirname package-user-dir)))) (progn (if (string-empty-p name) (progn (user-error "Empty package name"))) (progn (or (progn (and (memq ... cl-struct-package-desc-tags) t)) (signal 'wrong-type-argument (list 'package-desc pkg-desc))) (let* ((v pkg-desc)) (aset v 7 pkg-dir))) (if (file-exists-p pkg-dir) (progn (if (yes-or-no-p (format "Overwrite previous checkout for package `%s'?" name)) (package--delete-directory pkg-dir) (error "There already exists a checkout for %s" name)))) (package-vc--clone pkg-desc pkg-spec pkg-dir rev) (if (directory-empty-p pkg-dir) (progn (delete-directory pkg-dir) (error "Empty checkout for %s" name))) (if (seq-remove #'(lambda (file) (member ... package-vc-non-code-file-names)) (directory-files-recursively pkg-dir "\\.el\\'" nil)) nil (if (yes-or-no-p (format "No Emacs Lisp files found when fetching \"%s\", abor..." name)) (progn (delete-directory pkg-dir t) (user-error "Installation aborted")))) (catch 'done (let ((tail '...)) (while tail (let (...) (let* ... ...) (setq tail ...))))) (if (seq-some #'(lambda (alist) (equal ... pkg-spec)) package-vc--archive-spec-alists) nil (customize-save-variable 'package-vc-selected-packages (cons (cons name pkg-spec) (seq-remove #'... package-vc-selected-packages)))) (package-vc--unpack-1 pkg-desc pkg-dir))))
    (let* ((x285 (map-elt pkg-spec :lisp-dir))) (let ((lisp-dir x285)) (let* ((name (progn (or (progn ...) (signal ... ...)) (aref pkg-desc 1))) (dirname (package-desc-full-name pkg-desc)) (pkg-dir (file-name-as-directory (expand-file-name dirname package-user-dir)))) (progn (if (string-empty-p name) (progn (user-error "Empty package name"))) (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... pkg-desc))) (let* ((v pkg-desc)) (aset v 7 pkg-dir))) (if (file-exists-p pkg-dir) (progn (if (yes-or-no-p ...) (package--delete-directory pkg-dir) (error "There already exists a checkout for %s" name)))) (package-vc--clone pkg-desc pkg-spec pkg-dir rev) (if (directory-empty-p pkg-dir) (progn (delete-directory pkg-dir) (error "Empty checkout for %s" name))) (if (seq-remove #'(lambda ... ...) (directory-files-recursively pkg-dir "\\.el\\'" nil)) nil (if (yes-or-no-p (format "No Emacs Lisp files found when fetching \"%s\", abor..." name)) (progn (delete-directory pkg-dir t) (user-error "Installation aborted")))) (catch 'done (let ((tail ...)) (while tail (let ... ... ...)))) (if (seq-some #'(lambda ... ...) package-vc--archive-spec-alists) nil (customize-save-variable 'package-vc-selected-packages (cons (cons name pkg-spec) (seq-remove ... package-vc-selected-packages)))) (package-vc--unpack-1 pkg-desc pkg-dir)))))
    (progn (ignore (mapp pkg-spec)) (let* ((x285 (map-elt pkg-spec :lisp-dir))) (let ((lisp-dir x285)) (let* ((name (progn (or ... ...) (aref pkg-desc 1))) (dirname (package-desc-full-name pkg-desc)) (pkg-dir (file-name-as-directory (expand-file-name dirname package-user-dir)))) (progn (if (string-empty-p name) (progn (user-error "Empty package name"))) (progn (or (progn ...) (signal ... ...)) (let* (...) (aset v 7 pkg-dir))) (if (file-exists-p pkg-dir) (progn (if ... ... ...))) (package-vc--clone pkg-desc pkg-spec pkg-dir rev) (if (directory-empty-p pkg-dir) (progn (delete-directory pkg-dir) (error "Empty checkout for %s" name))) (if (seq-remove #'... (directory-files-recursively pkg-dir "\\.el\\'" nil)) nil (if (yes-or-no-p ...) (progn ... ...))) (catch 'done (let (...) (while tail ...))) (if (seq-some #'... package-vc--archive-spec-alists) nil (customize-save-variable 'package-vc-selected-packages (cons ... ...))) (package-vc--unpack-1 pkg-desc pkg-dir))))))
    package-vc--unpack(#s(package-desc :name bugreport-20231221 :version nil :summary "No description available." :reqs nil :kind vc :archive nil :dir "/Users/sallred/.emacs.d/elpa/bugreport-20231221/" :extras nil :signed nil) (:url "git@github.com:vermiculus/bugreport-20231221.git") nil)
    package-vc-install((bugreport-20231221 :url "git@github.com:vermiculus/bugreport-20231221.git"))


In GNU Emacs 29.1 (build 1, aarch64-apple-darwin21.6.0, NS
 appkit-2113.60 Version 12.6.6 (Build 21G646)) of 2023-07-30 built on
 armbob.lan
Windowing system distributor 'Apple', version 10.3.2299
System Description:  macOS 13.6.1

Configured using:
 'configure --with-ns '--enable-locallisppath=/Library/Application
 Support/Emacs/${version}/site-lisp:/Library/Application
 Support/Emacs/site-lisp' --with-modules 'CFLAGS=-DFD_SETSIZE=10000
 -DDARWIN_UNLIMITED_SELECT' --with-x-toolkit=no'

Configured features:
ACL GLIB GMP GNUTLS JPEG JSON LIBXML2 MODULES NOTIFY KQUEUE NS PDUMPER
PNG RSVG THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER ZLIB

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Compilation

Minor modes in effect:
  mu4e-modeline-mode: t
  global-git-commit-mode: t
  magit-auto-revert-mode: t
  server-mode: t
  global-treesit-auto-mode: t
  TeX-PDF-mode: t
  editorconfig-mode: t
  yas-global-mode: t
  yas-minor-mode: t
  which-key-mode: t
  org-roam-db-autosync-mode: t
  shell-dirtrack-mode: t
  savehist-mode: t
  corfu-popupinfo-mode: t
  marginalia-mode: t
  vertico-multiform-mode: t
  vertico-mode: t
  pixel-scroll-precision-mode: t
  override-global-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  buffer-read-only: t
  line-number-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
/Users/sallred/.emacs.d/elpa/bugreport/bugreport-pkg hides /Users/sallred/.emacs.d/elpa/bugreport-20231221/bugreport-pkg
/Users/sallred/.emacs.d/elpa/bugreport/bugreport hides /Users/sallred/.emacs.d/elpa/bugreport-20231221/bugreport
/Users/sallred/.emacs.d/elpa/emc2/emc2 hides ~/git/gitlab.epic.com/sallred/emc2.el/emc2
/Users/sallred/.emacs.d/elpa/emc2/emc2-pkg hides ~/git/gitlab.epic.com/sallred/emc2.el/emc2-pkg
/Users/sallred/.emacs.d/elpa/emc2/emc2-summary hides ~/git/gitlab.epic.com/sallred/emc2.el/emc2-summary
/Users/sallred/.emacs.d/elpa/emc2/emc2-magit-checkout hides ~/git/gitlab.epic.com/sallred/emc2.el/emc2-magit-checkout
/Users/sallred/.emacs.d/elpa/emc2/emc2-delorean hides ~/git/gitlab.epic.com/sallred/emc2.el/emc2-delorean
/Users/sallred/.emacs.d/elpa/emc2/emc2-org-tlg hides ~/git/gitlab.epic.com/sallred/emc2.el/emc2-org-tlg
/Users/sallred/.emacs.d/elpa/emc2/emc2-magit-pull-request hides ~/git/gitlab.epic.com/sallred/emc2.el/emc2-magit-pull-request
/Users/sallred/.emacs.d/elpa/emc2/emc2-org hides ~/git/gitlab.epic.com/sallred/emc2.el/emc2-org
/Users/sallred/.emacs.d/elpa/emc2/emc2-workplan hides ~/git/gitlab.epic.com/sallred/emc2.el/emc2-workplan
/Users/sallred/.emacs.d/elpa/emc2/emc2-magit hides ~/git/gitlab.epic.com/sallred/emc2.el/emc2-magit
/Users/sallred/.emacs.d/elpa/emc2/emc2-org-gitlab hides ~/git/gitlab.epic.com/sallred/emc2.el/emc2-org-gitlab
/Users/sallred/.emacs.d/elpa/emc2/emc2-org-workplan hides ~/git/gitlab.epic.com/sallred/emc2.el/emc2-org-workplan
/Users/sallred/.emacs.d/elpa/emc2/emc2-ts hides ~/git/gitlab.epic.com/sallred/emc2.el/emc2-ts
/Users/sallred/.emacs.d/elpa/emc2/emc2-magit-cherry-pick hides ~/git/gitlab.epic.com/sallred/emc2.el/emc2-magit-cherry-pick
/Users/sallred/.emacs.d/elpa/transient-20231129.1714/transient hides /Applications/Emacs.app/Contents/Resources/lisp/transient
/Users/sallred/.emacs.d/elpa/use-package-20230203.2004/use-package-jump hides /Applications/Emacs.app/Contents/Resources/lisp/use-package/use-package-jump
/Users/sallred/.emacs.d/elpa/use-package-20230203.2004/use-package-ensure hides /Applications/Emacs.app/Contents/Resources/lisp/use-package/use-package-ensure
/Users/sallred/.emacs.d/elpa/use-package-20230203.2004/use-package-core hides /Applications/Emacs.app/Contents/Resources/lisp/use-package/use-package-core
/Users/sallred/.emacs.d/elpa/use-package-20230203.2004/use-package-delight hides /Applications/Emacs.app/Contents/Resources/lisp/use-package/use-package-delight
/Users/sallred/.emacs.d/elpa/use-package-20230203.2004/use-package-diminish hides /Applications/Emacs.app/Contents/Resources/lisp/use-package/use-package-diminish
/Users/sallred/.emacs.d/elpa/use-package-20230203.2004/use-package hides /Applications/Emacs.app/Contents/Resources/lisp/use-package/use-package
/Users/sallred/.emacs.d/elpa/use-package-20230203.2004/use-package-bind-key hides /Applications/Emacs.app/Contents/Resources/lisp/use-package/use-package-bind-key
/Users/sallred/.emacs.d/elpa/use-package-20230203.2004/use-package-lint hides /Applications/Emacs.app/Contents/Resources/lisp/use-package/use-package-lint
/Users/sallred/.emacs.d/elpa/seq-2.24/seq hides /Applications/Emacs.app/Contents/Resources/lisp/emacs-lisp/seq

Features:
(bugreport-autoloads bugreport20231221-autoloads wdired
bugreport-20231221-autoloads finder skeleton autoinsert shadow emacsbug
smiley gnus-cite qp textsec uni-scripts idna-mapping uni-confusable
textsec-check mu4e mu4e-org mu4e-notification mu4e-main mu4e-view
mu4e-headers mu4e-compose mu4e-draft mu4e-actions smtpmail mu4e-search
mu4e-lists mu4e-bookmarks mu4e-mark mu4e-message flow-fill mu4e-contacts
mu4e-update mu4e-folders mu4e-context mu4e-query-items mu4e-server
mu4e-modeline mu4e-vars mu4e-helpers mu4e-config mu4e-window ido
mu4e-obsolete mail-extr emc2-workplan emc2-magit loaddefs-gen shortdoc
pulse cl-print cus-start mm-archive package-vc lisp-mnt helpful trace
edebug debug backtrace info-look help-fns radix-tree elisp-refs
goto-addr vc-hg vc-bzr vc-src vc-sccs vc-svn vc-cvs vc-rcs log-view
rust-ts-mode rust-utils rust-mode rust-rustfmt rust-playpen rust-compile
rust-cargo mc-hide-unmatched-lines-mode mc-mark-more mc-cycle-cursors
multiple-cursors-core rect consult-org sort org-archive cal-move
epa-file network-stream url-cache python csharp-mode c-ts-common
cc-langs json-ts-mode vertico-buffer emacsql-sqlite-module sqlite3
sqlite3-api magit-extras forge-list forge-commands forge-semi
forge-bitbucket buck forge-gogs gogs forge-gitea gtea forge-gitlab
forge-github forge-notify forge-revnote forge-pullreq forge-issue
forge-topic yaml forge-post forge-repo forge forge-core forge-db closql
eieio-base magit-bookmark magit-submodule magit-blame magit-stash
magit-reflog magit-bisect magit-push magit-pull magit-fetch magit-clone
magit-remote magit-commit magit-sequence magit-notes magit-worktree
magit-tag magit-merge magit-branch magit-reset magit-files magit-refs
magit-status magit magit-repos magit-apply magit-wip magit-log
which-func imenu magit-diff smerge-mode diff git-commit log-edit
pcvs-util add-log magit-core magit-autorevert autorevert magit-margin
magit-transient magit-process with-editor server magit-mode magit-git
magit-base tramp tramp-loaddefs trampver tramp-integration tramp-compat
embark-consult consult bookmark view cal-china lunar solar cal-dst
cal-bahai cal-islam cal-hebrew holidays holiday-loaddefs diary-lib
diary-loaddefs cal-iso face-remap vertico-repeat vertico-reverse
org-mru-clock embark-org embark aggressive-indent vc-git diff-mode
org-eldoc display-line-numbers flyspell ispell oc-basic disp-table
ol-eww eww url-queue mm-url ol-rmail ol-mhe ol-irc ol-info ol-gnus
nnselect gnus-art mm-uu mml2015 mm-view mml-smime smime dig gnus-sum
gnus-group gnus-undo gnus-start gnus-dbus gnus-cloud nnimap nnmail
mail-source utf7 nnoo parse-time gnus-spec gnus-int gnus-range message
sendmail yank-media rfc822 mml mml-sec mm-decode mm-bodies mm-encode
mailabbrev gmm-utils gnus-win gnus nnheader gnus-util range ol-docview
doc-view filenotify jka-compr image-mode exif ol-bibtex bibtex iso8601
ol-bbdb ol-w3m ol-doi org-link-doi time treesit-auto tex crm texmathp
go-mode find-file etags fileloop xref hydra lv powershell
flymake-shellcheck flymake-proc flymake project basic-mode graphql
graphql-mode yaml-mode rg files-x rg-info-hack advice rg-menu transient
rg-ibuffer rg-result wgrep-rg wgrep rg-history rg-header ibuf-ext
ibuffer ibuffer-loaddefs grep cus-edit htmlize tree-sitter-langs
tree-sitter-langs-build tar-mode arc-mode archive-mode pp tree-sitter-hl
tree-sitter-indent tree-sitter tree-sitter-load tree-sitter-cli tsc
tsc-dyn tsc-dyn-get dired-aux tsc-obsolete dockerfile-mode sh-script
smie treesit executable git-modes gitignore-mode gitconfig-mode
conf-mode gitattributes-mode org-contrib tj3-mode mermaid-mode
org-bullets ox-gfm ox-md ox-odt rng-loc rng-uri rng-parse rng-match
rng-dt rng-util rng-pttrn nxml-parse nxml-ns nxml-enc xmltok nxml-util
ox-latex ox-icalendar ox-html table ox-ascii ox-publish ox dart-mode
editorconfig editorconfig-core editorconfig-core-handle
editorconfig-fnmatch alert log4e notifications dbus gntp typescript-mode
cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine
cc-vars cc-defs compile vc vc-dispatcher dashboard dashboard-widgets
recentf tree-widget wid-edit ffap warnings emc2-org-gitlab emc2
bug-reference glab ghub-graphql treepy gsexp ghub gnutls emc2-org-tlg
emc2-delorean let-alist url-http-ntlm ntlm hmac-md5 hex-util md4
url-http mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums
mail-prsvr url-gw nsm emc2-ts hl-line org-clock emc2-org apiwrap apropos
mastodon mastodon-search mastodon-toot facemenu mastodon-iso persist
mastodon-http shr text-property-search pixel-fill kinsoku url-file puny
svg xml dom request mailheader mail-utils all-the-icons
all-the-icons-faces data-material data-weathericons data-octicons
data-fileicons data-faicons data-alltheicons yasnippet paredit which-key
exec-path-from-shell org-roam-dailies org-roam-migrate org-roam-log
org-roam-mode org-roam-capture org-roam-id org-roam-node org-roam-db
emacsql-sqlite-builtin sqlite org-roam-utils org-roam-compat org-roam
org-capture org-attach emacsql-sqlite emacsql-sqlite-common emacsql
emacsql-compiler magit-section cursor-sensor org-ql peg ts org-habit
org-agenda org-element org-persist xdg org-id org-refile avl-tree
generator org-duration org-tempo tempo org org-macro org-pcomplete
org-list org-footnote org-faces org-entities time-date ob-shell shell
pcomplete ob ob-tangle org-src ob-ref ob-lob ob-table ob-exp ob-comint
comint ansi-osc ansi-color ob-emacs-lisp ob-core ob-eval org-cycle
org-table ol org-fold org-fold-core org-keys oc org-loaddefs find-func
cal-menu calendar cal-loaddefs org-version org-compat org-macs
format-spec markdown-mode edit-indirect color thingatpt noutline outline
icons savehist corfu-popupinfo corfu orderless marginalia
vertico-directory vertico-multiform vertico compat diminish epa derived
epg rfc6068 epg-config pixel-scroll cua-base ring help-at-pt cus-load
dired dired-loaddefs rx ample-theme f f-shortdoc dash s cl-extra
help-mode edmacro kmacro use-package use-package-ensure
use-package-delight use-package-diminish use-package-bind-key bind-key
easy-mmode use-package-core alert-autoloads all-the-icons-autoloads
ample-theme-autoloads apiwrap-autoloads auctex-autoloads tex-site
basic-mode-autoloads corfu-autoloads dart-mode-autoloads
dashboard-autoloads diminish-autoloads dockerfile-mode-autoloads
edit-indirect-autoloads embark-consult-autoloads consult-autoloads
embark-autoloads emc2-autoloads exec-path-from-shell-autoloads
flycheck-autoloads flymake-shellcheck-autoloads forge-autoloads
closql-autoloads ghub-autoloads git-modes-autoloads gntp-autoloads
go-mode-autoloads graphql-autoloads graphql-mode-autoloads
helpful-autoloads elisp-refs-autoloads htmlize-autoloads hydra-autoloads
log4e-autoloads lv-autoloads magit-autoloads pcase git-commit-autoloads
marginalia-autoloads markdown-mode-autoloads mastodon-autoloads
mermaid-mode-autoloads multiple-cursors-autoloads orderless-autoloads
org-bullets-autoloads org-contrib-autoloads org-mru-clock-autoloads
org-ql-autoloads org-roam-autoloads magit-section-autoloads
emacsql-autoloads org-super-agenda-autoloads ht-autoloads
org-tree-slide-autoloads ov-autoloads ox-gfm-autoloads peg-autoloads
persist-autoloads pkg-info-autoloads epl-autoloads powershell-autoloads
prettier-autoloads editorconfig-autoloads nvm-autoloads f-autoloads
iter2-autoloads request-autoloads rg-autoloads rust-mode-autoloads
sqlite3-autoloads tj3-mode-autoloads transient-autoloads
tree-sitter-indent-autoloads tree-sitter-autoloads finder-inf
treesit-auto-autoloads dash-autoloads tsc-autoloads
typescript-mode-autoloads url-auth vertico-autoloads wgrep-autoloads
which-key-autoloads with-editor-autoloads info compat-autoloads
seq-autoloads package browse-url url url-proxy url-privacy url-expand
url-methods url-history url-cookie generate-lisp-file url-domsuf
url-util mailcap url-handlers url-parse auth-source cl-seq eieio
eieio-core cl-macs password-cache json subr-x map byte-opt gv bytecomp
byte-compile url-vars cl-loaddefs cl-lib rmc iso-transl tooltip cconv
eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type
elisp-mode mwheel term/ns-win ns-win ucs-normalize mule-util
term/common-win tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode lisp-mode prog-mode register
page tab-bar menu-bar rfn-eshadow isearch easymenu timer select
scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors
frame minibuffer nadvice seq simple cl-generic indonesian philippine
cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese composite emoji-zwj charscript
charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure
cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp
files window text-properties overlay sha1 md5 base64 format env
code-pages mule custom widget keymap hashtable-print-readable backquote
threads kqueue cocoa ns multi-tty make-network-process emacs)

Memory information:
((conses 16 2559529 322683)
 (symbols 48 65117 98)
 (strings 32 461753 41439)
 (string-bytes 1 15812751)
 (vectors 16 154942)
 (vector-slots 8 2726143 179725)
 (floats 8 1786 1057)
 (intervals 56 221145 24719)
 (buffers 984 154))

-- 
Sean Allred





^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#67949: 29.1; package-vc-{install,upgrade} modifies tracked files
  2023-12-21  6:52 bug#67949: 29.1; package-vc-{install,upgrade} modifies tracked files Sean Allred
@ 2023-12-25 20:11 ` Philip Kaludercic
  2023-12-28 21:16   ` Sean Allred
  0 siblings, 1 reply; 6+ messages in thread
From: Philip Kaludercic @ 2023-12-25 20:11 UTC (permalink / raw)
  To: Sean Allred; +Cc: 67949

Sean Allred <allred.sean@gmail.com> writes:

> Run the following from `emacs -Q`:
>
>     (package-vc-install
>      '(bugreport :url "git@github.com:vermiculus/bugreport-20231221.git"))
>     (package-vc-upgrade (cadr (assq 'bugreport package-alist)))
>
> forking/modifying the above as you please.
>
> On upgrade, this complains that
>
>     Running "git pull --stat"...
>     error: cannot pull with rebase: You have unstaged changes.
>     error: Please commit or stash them.
>
> git-diff reveals the culprit:
>
>     diff --git a/bugreport-pkg.el b/bugreport-pkg.el
>     index df8438a..e8947d3 100644
>     --- a/bugreport-pkg.el
>     +++ b/bugreport-pkg.el
>     @@ -1,4 +1,2 @@
>     -(define-package
>     -  "bugreport20231221"
>     -  "0.1"
>     -  "Bug report on 2023-12-21")
>     +;;; Generated package description from bugreport.el  -*- no-byte-compile: t -*-
>     +(define-package "bugreport" "0" "No description available." 'nil :kind vc)
>
> and that 'Generated package description' language seems to be coming
> from `package-vc--generate-description-file`:

This is intentional, the -pkg.el file shouldn't be tracked in the
repository, as this is a file that should be generated.  When a package
is distributed on ELPA, it is generated before the tarball is created,
and the same logic is applied locally here as well.

That being said, it would be nice if we could be more robust here, as
many packages sadly continue to make the mistake of beliving the -pkg.el
file is an authoritative source of information.  My guess is that the
tricky part will be to ensure that this can be done, independently of
the involved VC backend...

>     (write-region (concat ";;; Generated package description from " (replace-regexp-in-string "-pkg\\.el\\'" ".el" (file-name-nondirectory pkg-file)) "  -*- no-byte-compile: t -*-\n" (prin1-to-string (nconc (list 'define-package (symbol-name name) (package-vc--version pkg-desc) (let ((cl-x pkg-desc)) (progn (or ... ...) (aref cl-x 3))) (let ((requires ...)) (list 'quote (mapcar ... requires)))) (list :kind 'vc) (package--alist-to-plist-args (let ((cl-x pkg-desc)) (progn (or ... ...) (aref cl-x 8)))))) "\n") nil pkg-file nil 'silent)
>     (let ((print-level nil) (print-quoted t) (print-length nil)) (write-region (concat ";;; Generated package description from " (replace-regexp-in-string "-pkg\\.el\\'" ".el" (file-name-nondirectory pkg-file)) "  -*- no-byte-compile: t -*-\n" (prin1-to-string (nconc (list 'define-package (symbol-name name) (package-vc--version pkg-desc) (let (...) (progn ... ...)) (let (...) (list ... ...))) (list :kind 'vc) (package--alist-to-plist-args (let (...) (progn ... ...))))) "\n") nil pkg-file nil 'silent))
>     (let ((name (let ((cl-x pkg-desc)) (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... cl-x))) (aref cl-x 1))))) (if (let ((cl-x pkg-desc)) (progn (or (progn (and (memq ... cl-struct-package-desc-tags) t)) (signal 'wrong-type-argument (list 'package-desc cl-x))) (aref cl-x 3))) nil (let ((cl-x pkg-desc)) (or (progn (and (memq (type-of cl-x) cl-struct-package-desc-tags) t)) (signal 'wrong-type-argument (list 'package-desc cl-x))) (let* ((v cl-x)) (aset v 3 (let ((main-file ...)) (or (let ... ...) (let* ... ...) (and main-file ... ...) package--default-summary)))))) (let ((print-level nil) (print-quoted t) (print-length nil)) (write-region (concat ";;; Generated package description from " (replace-regexp-in-string "-pkg\\.el\\'" ".el" (file-name-nondirectory pkg-file)) "  -*- no-byte-compile: t -*-\n" (prin1-to-string (nconc (list 'define-package (symbol-name name) (package-vc--version pkg-desc) (let ... ...) (let ... ...)) (list :kind 'vc) (package--alist-to-plist-args (let ... ...)))) "\n") nil pkg-file nil 'silent)))
>     package-vc--generate-description-file(#s(package-desc :name bugreport-20231221 :version nil :summary "No description available." :reqs nil :kind vc :archive nil :dir "/Users/sallred/.emacs.d/elpa/bugreport-20231221/" :extras nil :signed nil) "/Users/sallred/.emacs.d/elpa/bugreport-20231221/bu...")
>     package-vc--unpack-1(#s(package-desc :name bugreport-20231221 :version nil :summary "No description available." :reqs nil :kind vc :archive nil :dir "/Users/sallred/.emacs.d/elpa/bugreport-20231221/" :extras nil :signed nil) "/Users/sallred/.emacs.d/elpa/bugreport-20231221/")
>     (progn (if (string-empty-p name) (progn (user-error "Empty package name"))) (progn (or (progn (and (memq (type-of pkg-desc) cl-struct-package-desc-tags) t)) (signal 'wrong-type-argument (list 'package-desc pkg-desc))) (let* ((v pkg-desc)) (aset v 7 pkg-dir))) (if (file-exists-p pkg-dir) (progn (if (yes-or-no-p (format "Overwrite previous checkout for package `%s'?" name)) (package--delete-directory pkg-dir) (error "There already exists a checkout for %s" name)))) (package-vc--clone pkg-desc pkg-spec pkg-dir rev) (if (directory-empty-p pkg-dir) (progn (delete-directory pkg-dir) (error "Empty checkout for %s" name))) (if (seq-remove #'(lambda (file) (member (file-name-nondirectory file) package-vc-non-code-file-names)) (directory-files-recursively pkg-dir "\\.el\\'" nil)) nil (if (yes-or-no-p (format "No Emacs Lisp files found when fetching \"%s\", abor..." name)) (progn (delete-directory pkg-dir t) (user-error "Installation aborted")))) (catch 'done (let ((tail '("lisp" "src"))) (while tail (let ((name (car tail))) (let* ((s ...) (dir ...) (s ...) (s ...)) (if s (throw ... ...))) (setq tail (cdr tail)))))) (if (seq-some #'(lambda (alist) (equal (alist-get name (cdr alist)) pkg-spec)) package-vc--archive-spec-alists) nil (customize-save-variable 'package-vc-selected-packages (cons (cons name pkg-spec) (seq-remove #'(lambda (spec) (string= name ...)) package-vc-selected-packages)))) (package-vc--unpack-1 pkg-desc pkg-dir))
>     (let* ((name (progn (or (progn (and (memq ... cl-struct-package-desc-tags) t)) (signal 'wrong-type-argument (list 'package-desc pkg-desc))) (aref pkg-desc 1))) (dirname (package-desc-full-name pkg-desc)) (pkg-dir (file-name-as-directory (expand-file-name dirname package-user-dir)))) (progn (if (string-empty-p name) (progn (user-error "Empty package name"))) (progn (or (progn (and (memq (type-of pkg-desc) cl-struct-package-desc-tags) t)) (signal 'wrong-type-argument (list 'package-desc pkg-desc))) (let* ((v pkg-desc)) (aset v 7 pkg-dir))) (if (file-exists-p pkg-dir) (progn (if (yes-or-no-p (format "Overwrite previous checkout for package `%s'?" name)) (package--delete-directory pkg-dir) (error "There already exists a checkout for %s" name)))) (package-vc--clone pkg-desc pkg-spec pkg-dir rev) (if (directory-empty-p pkg-dir) (progn (delete-directory pkg-dir) (error "Empty checkout for %s" name))) (if (seq-remove #'(lambda (file) (member (file-name-nondirectory file) package-vc-non-code-file-names)) (directory-files-recursively pkg-dir "\\.el\\'" nil)) nil (if (yes-or-no-p (format "No Emacs Lisp files found when fetching \"%s\", abor..." name)) (progn (delete-directory pkg-dir t) (user-error "Installation aborted")))) (catch 'done (let ((tail '("lisp" "src"))) (while tail (let ((name ...)) (let* (... ... ... ...) (if s ...)) (setq tail (cdr tail)))))) (if (seq-some #'(lambda (alist) (equal (alist-get name ...) pkg-spec)) package-vc--archive-spec-alists) nil (customize-save-variable 'package-vc-selected-packages (cons (cons name pkg-spec) (seq-remove #'(lambda ... ...) package-vc-selected-packages)))) (package-vc--unpack-1 pkg-desc pkg-dir)))
>     (let ((lisp-dir x285)) (let* ((name (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... pkg-desc))) (aref pkg-desc 1))) (dirname (package-desc-full-name pkg-desc)) (pkg-dir (file-name-as-directory (expand-file-name dirname package-user-dir)))) (progn (if (string-empty-p name) (progn (user-error "Empty package name"))) (progn (or (progn (and (memq ... cl-struct-package-desc-tags) t)) (signal 'wrong-type-argument (list 'package-desc pkg-desc))) (let* ((v pkg-desc)) (aset v 7 pkg-dir))) (if (file-exists-p pkg-dir) (progn (if (yes-or-no-p (format "Overwrite previous checkout for package `%s'?" name)) (package--delete-directory pkg-dir) (error "There already exists a checkout for %s" name)))) (package-vc--clone pkg-desc pkg-spec pkg-dir rev) (if (directory-empty-p pkg-dir) (progn (delete-directory pkg-dir) (error "Empty checkout for %s" name))) (if (seq-remove #'(lambda (file) (member ... package-vc-non-code-file-names)) (directory-files-recursively pkg-dir "\\.el\\'" nil)) nil (if (yes-or-no-p (format "No Emacs Lisp files found when fetching \"%s\", abor..." name)) (progn (delete-directory pkg-dir t) (user-error "Installation aborted")))) (catch 'done (let ((tail '...)) (while tail (let (...) (let* ... ...) (setq tail ...))))) (if (seq-some #'(lambda (alist) (equal ... pkg-spec)) package-vc--archive-spec-alists) nil (customize-save-variable 'package-vc-selected-packages (cons (cons name pkg-spec) (seq-remove #'... package-vc-selected-packages)))) (package-vc--unpack-1 pkg-desc pkg-dir))))
>     (let* ((x285 (map-elt pkg-spec :lisp-dir))) (let ((lisp-dir x285)) (let* ((name (progn (or (progn ...) (signal ... ...)) (aref pkg-desc 1))) (dirname (package-desc-full-name pkg-desc)) (pkg-dir (file-name-as-directory (expand-file-name dirname package-user-dir)))) (progn (if (string-empty-p name) (progn (user-error "Empty package name"))) (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... pkg-desc))) (let* ((v pkg-desc)) (aset v 7 pkg-dir))) (if (file-exists-p pkg-dir) (progn (if (yes-or-no-p ...) (package--delete-directory pkg-dir) (error "There already exists a checkout for %s" name)))) (package-vc--clone pkg-desc pkg-spec pkg-dir rev) (if (directory-empty-p pkg-dir) (progn (delete-directory pkg-dir) (error "Empty checkout for %s" name))) (if (seq-remove #'(lambda ... ...) (directory-files-recursively pkg-dir "\\.el\\'" nil)) nil (if (yes-or-no-p (format "No Emacs Lisp files found when fetching \"%s\", abor..." name)) (progn (delete-directory pkg-dir t) (user-error "Installation aborted")))) (catch 'done (let ((tail ...)) (while tail (let ... ... ...)))) (if (seq-some #'(lambda ... ...) package-vc--archive-spec-alists) nil (customize-save-variable 'package-vc-selected-packages (cons (cons name pkg-spec) (seq-remove ... package-vc-selected-packages)))) (package-vc--unpack-1 pkg-desc pkg-dir)))))
>     (progn (ignore (mapp pkg-spec)) (let* ((x285 (map-elt pkg-spec :lisp-dir))) (let ((lisp-dir x285)) (let* ((name (progn (or ... ...) (aref pkg-desc 1))) (dirname (package-desc-full-name pkg-desc)) (pkg-dir (file-name-as-directory (expand-file-name dirname package-user-dir)))) (progn (if (string-empty-p name) (progn (user-error "Empty package name"))) (progn (or (progn ...) (signal ... ...)) (let* (...) (aset v 7 pkg-dir))) (if (file-exists-p pkg-dir) (progn (if ... ... ...))) (package-vc--clone pkg-desc pkg-spec pkg-dir rev) (if (directory-empty-p pkg-dir) (progn (delete-directory pkg-dir) (error "Empty checkout for %s" name))) (if (seq-remove #'... (directory-files-recursively pkg-dir "\\.el\\'" nil)) nil (if (yes-or-no-p ...) (progn ... ...))) (catch 'done (let (...) (while tail ...))) (if (seq-some #'... package-vc--archive-spec-alists) nil (customize-save-variable 'package-vc-selected-packages (cons ... ...))) (package-vc--unpack-1 pkg-desc pkg-dir))))))
>     package-vc--unpack(#s(package-desc :name bugreport-20231221 :version nil :summary "No description available." :reqs nil :kind vc :archive nil :dir "/Users/sallred/.emacs.d/elpa/bugreport-20231221/" :extras nil :signed nil) (:url "git@github.com:vermiculus/bugreport-20231221.git") nil)
>     package-vc-install((bugreport-20231221 :url "git@github.com:vermiculus/bugreport-20231221.git"))
>
>
> In GNU Emacs 29.1 (build 1, aarch64-apple-darwin21.6.0, NS
>  appkit-2113.60 Version 12.6.6 (Build 21G646)) of 2023-07-30 built on
>  armbob.lan
> Windowing system distributor 'Apple', version 10.3.2299
> System Description:  macOS 13.6.1
>
> Configured using:
>  'configure --with-ns '--enable-locallisppath=/Library/Application
>  Support/Emacs/${version}/site-lisp:/Library/Application
>  Support/Emacs/site-lisp' --with-modules 'CFLAGS=-DFD_SETSIZE=10000
>  -DDARWIN_UNLIMITED_SELECT' --with-x-toolkit=no'
>
> Configured features:
> ACL GLIB GMP GNUTLS JPEG JSON LIBXML2 MODULES NOTIFY KQUEUE NS PDUMPER
> PNG RSVG THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER ZLIB
>
> Important settings:
>   value of $LANG: en_US.UTF-8
>   locale-coding-system: utf-8-unix
>
> Major mode: Compilation
>
> Minor modes in effect:
>   mu4e-modeline-mode: t
>   global-git-commit-mode: t
>   magit-auto-revert-mode: t
>   server-mode: t
>   global-treesit-auto-mode: t
>   TeX-PDF-mode: t
>   editorconfig-mode: t
>   yas-global-mode: t
>   yas-minor-mode: t
>   which-key-mode: t
>   org-roam-db-autosync-mode: t
>   shell-dirtrack-mode: t
>   savehist-mode: t
>   corfu-popupinfo-mode: t
>   marginalia-mode: t
>   vertico-multiform-mode: t
>   vertico-mode: t
>   pixel-scroll-precision-mode: t
>   override-global-mode: t
>   tooltip-mode: t
>   global-eldoc-mode: t
>   eldoc-mode: t
>   show-paren-mode: t
>   electric-indent-mode: t
>   mouse-wheel-mode: t
>   menu-bar-mode: t
>   file-name-shadow-mode: t
>   global-font-lock-mode: t
>   font-lock-mode: t
>   blink-cursor-mode: t
>   buffer-read-only: t
>   line-number-mode: t
>   transient-mark-mode: t
>   auto-composition-mode: t
>   auto-encryption-mode: t
>   auto-compression-mode: t
>
> Load-path shadows:
> /Users/sallred/.emacs.d/elpa/bugreport/bugreport-pkg hides /Users/sallred/.emacs.d/elpa/bugreport-20231221/bugreport-pkg
> /Users/sallred/.emacs.d/elpa/bugreport/bugreport hides /Users/sallred/.emacs.d/elpa/bugreport-20231221/bugreport
> /Users/sallred/.emacs.d/elpa/emc2/emc2 hides ~/git/gitlab.epic.com/sallred/emc2.el/emc2
> /Users/sallred/.emacs.d/elpa/emc2/emc2-pkg hides ~/git/gitlab.epic.com/sallred/emc2.el/emc2-pkg
> /Users/sallred/.emacs.d/elpa/emc2/emc2-summary hides ~/git/gitlab.epic.com/sallred/emc2.el/emc2-summary
> /Users/sallred/.emacs.d/elpa/emc2/emc2-magit-checkout hides ~/git/gitlab.epic.com/sallred/emc2.el/emc2-magit-checkout
> /Users/sallred/.emacs.d/elpa/emc2/emc2-delorean hides ~/git/gitlab.epic.com/sallred/emc2.el/emc2-delorean
> /Users/sallred/.emacs.d/elpa/emc2/emc2-org-tlg hides ~/git/gitlab.epic.com/sallred/emc2.el/emc2-org-tlg
> /Users/sallred/.emacs.d/elpa/emc2/emc2-magit-pull-request hides ~/git/gitlab.epic.com/sallred/emc2.el/emc2-magit-pull-request
> /Users/sallred/.emacs.d/elpa/emc2/emc2-org hides ~/git/gitlab.epic.com/sallred/emc2.el/emc2-org
> /Users/sallred/.emacs.d/elpa/emc2/emc2-workplan hides ~/git/gitlab.epic.com/sallred/emc2.el/emc2-workplan
> /Users/sallred/.emacs.d/elpa/emc2/emc2-magit hides ~/git/gitlab.epic.com/sallred/emc2.el/emc2-magit
> /Users/sallred/.emacs.d/elpa/emc2/emc2-org-gitlab hides ~/git/gitlab.epic.com/sallred/emc2.el/emc2-org-gitlab
> /Users/sallred/.emacs.d/elpa/emc2/emc2-org-workplan hides ~/git/gitlab.epic.com/sallred/emc2.el/emc2-org-workplan
> /Users/sallred/.emacs.d/elpa/emc2/emc2-ts hides ~/git/gitlab.epic.com/sallred/emc2.el/emc2-ts
> /Users/sallred/.emacs.d/elpa/emc2/emc2-magit-cherry-pick hides ~/git/gitlab.epic.com/sallred/emc2.el/emc2-magit-cherry-pick
> /Users/sallred/.emacs.d/elpa/transient-20231129.1714/transient hides /Applications/Emacs.app/Contents/Resources/lisp/transient
> /Users/sallred/.emacs.d/elpa/use-package-20230203.2004/use-package-jump hides /Applications/Emacs.app/Contents/Resources/lisp/use-package/use-package-jump
> /Users/sallred/.emacs.d/elpa/use-package-20230203.2004/use-package-ensure hides /Applications/Emacs.app/Contents/Resources/lisp/use-package/use-package-ensure
> /Users/sallred/.emacs.d/elpa/use-package-20230203.2004/use-package-core hides /Applications/Emacs.app/Contents/Resources/lisp/use-package/use-package-core
> /Users/sallred/.emacs.d/elpa/use-package-20230203.2004/use-package-delight hides /Applications/Emacs.app/Contents/Resources/lisp/use-package/use-package-delight
> /Users/sallred/.emacs.d/elpa/use-package-20230203.2004/use-package-diminish hides /Applications/Emacs.app/Contents/Resources/lisp/use-package/use-package-diminish
> /Users/sallred/.emacs.d/elpa/use-package-20230203.2004/use-package hides /Applications/Emacs.app/Contents/Resources/lisp/use-package/use-package
> /Users/sallred/.emacs.d/elpa/use-package-20230203.2004/use-package-bind-key hides /Applications/Emacs.app/Contents/Resources/lisp/use-package/use-package-bind-key
> /Users/sallred/.emacs.d/elpa/use-package-20230203.2004/use-package-lint hides /Applications/Emacs.app/Contents/Resources/lisp/use-package/use-package-lint
> /Users/sallred/.emacs.d/elpa/seq-2.24/seq hides /Applications/Emacs.app/Contents/Resources/lisp/emacs-lisp/seq
>
> Features:
> (bugreport-autoloads bugreport20231221-autoloads wdired
> bugreport-20231221-autoloads finder skeleton autoinsert shadow emacsbug
> smiley gnus-cite qp textsec uni-scripts idna-mapping uni-confusable
> textsec-check mu4e mu4e-org mu4e-notification mu4e-main mu4e-view
> mu4e-headers mu4e-compose mu4e-draft mu4e-actions smtpmail mu4e-search
> mu4e-lists mu4e-bookmarks mu4e-mark mu4e-message flow-fill mu4e-contacts
> mu4e-update mu4e-folders mu4e-context mu4e-query-items mu4e-server
> mu4e-modeline mu4e-vars mu4e-helpers mu4e-config mu4e-window ido
> mu4e-obsolete mail-extr emc2-workplan emc2-magit loaddefs-gen shortdoc
> pulse cl-print cus-start mm-archive package-vc lisp-mnt helpful trace
> edebug debug backtrace info-look help-fns radix-tree elisp-refs
> goto-addr vc-hg vc-bzr vc-src vc-sccs vc-svn vc-cvs vc-rcs log-view
> rust-ts-mode rust-utils rust-mode rust-rustfmt rust-playpen rust-compile
> rust-cargo mc-hide-unmatched-lines-mode mc-mark-more mc-cycle-cursors
> multiple-cursors-core rect consult-org sort org-archive cal-move
> epa-file network-stream url-cache python csharp-mode c-ts-common
> cc-langs json-ts-mode vertico-buffer emacsql-sqlite-module sqlite3
> sqlite3-api magit-extras forge-list forge-commands forge-semi
> forge-bitbucket buck forge-gogs gogs forge-gitea gtea forge-gitlab
> forge-github forge-notify forge-revnote forge-pullreq forge-issue
> forge-topic yaml forge-post forge-repo forge forge-core forge-db closql
> eieio-base magit-bookmark magit-submodule magit-blame magit-stash
> magit-reflog magit-bisect magit-push magit-pull magit-fetch magit-clone
> magit-remote magit-commit magit-sequence magit-notes magit-worktree
> magit-tag magit-merge magit-branch magit-reset magit-files magit-refs
> magit-status magit magit-repos magit-apply magit-wip magit-log
> which-func imenu magit-diff smerge-mode diff git-commit log-edit
> pcvs-util add-log magit-core magit-autorevert autorevert magit-margin
> magit-transient magit-process with-editor server magit-mode magit-git
> magit-base tramp tramp-loaddefs trampver tramp-integration tramp-compat
> embark-consult consult bookmark view cal-china lunar solar cal-dst
> cal-bahai cal-islam cal-hebrew holidays holiday-loaddefs diary-lib
> diary-loaddefs cal-iso face-remap vertico-repeat vertico-reverse
> org-mru-clock embark-org embark aggressive-indent vc-git diff-mode
> org-eldoc display-line-numbers flyspell ispell oc-basic disp-table
> ol-eww eww url-queue mm-url ol-rmail ol-mhe ol-irc ol-info ol-gnus
> nnselect gnus-art mm-uu mml2015 mm-view mml-smime smime dig gnus-sum
> gnus-group gnus-undo gnus-start gnus-dbus gnus-cloud nnimap nnmail
> mail-source utf7 nnoo parse-time gnus-spec gnus-int gnus-range message
> sendmail yank-media rfc822 mml mml-sec mm-decode mm-bodies mm-encode
> mailabbrev gmm-utils gnus-win gnus nnheader gnus-util range ol-docview
> doc-view filenotify jka-compr image-mode exif ol-bibtex bibtex iso8601
> ol-bbdb ol-w3m ol-doi org-link-doi time treesit-auto tex crm texmathp
> go-mode find-file etags fileloop xref hydra lv powershell
> flymake-shellcheck flymake-proc flymake project basic-mode graphql
> graphql-mode yaml-mode rg files-x rg-info-hack advice rg-menu transient
> rg-ibuffer rg-result wgrep-rg wgrep rg-history rg-header ibuf-ext
> ibuffer ibuffer-loaddefs grep cus-edit htmlize tree-sitter-langs
> tree-sitter-langs-build tar-mode arc-mode archive-mode pp tree-sitter-hl
> tree-sitter-indent tree-sitter tree-sitter-load tree-sitter-cli tsc
> tsc-dyn tsc-dyn-get dired-aux tsc-obsolete dockerfile-mode sh-script
> smie treesit executable git-modes gitignore-mode gitconfig-mode
> conf-mode gitattributes-mode org-contrib tj3-mode mermaid-mode
> org-bullets ox-gfm ox-md ox-odt rng-loc rng-uri rng-parse rng-match
> rng-dt rng-util rng-pttrn nxml-parse nxml-ns nxml-enc xmltok nxml-util
> ox-latex ox-icalendar ox-html table ox-ascii ox-publish ox dart-mode
> editorconfig editorconfig-core editorconfig-core-handle
> editorconfig-fnmatch alert log4e notifications dbus gntp typescript-mode
> cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine
> cc-vars cc-defs compile vc vc-dispatcher dashboard dashboard-widgets
> recentf tree-widget wid-edit ffap warnings emc2-org-gitlab emc2
> bug-reference glab ghub-graphql treepy gsexp ghub gnutls emc2-org-tlg
> emc2-delorean let-alist url-http-ntlm ntlm hmac-md5 hex-util md4
> url-http mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums
> mail-prsvr url-gw nsm emc2-ts hl-line org-clock emc2-org apiwrap apropos
> mastodon mastodon-search mastodon-toot facemenu mastodon-iso persist
> mastodon-http shr text-property-search pixel-fill kinsoku url-file puny
> svg xml dom request mailheader mail-utils all-the-icons
> all-the-icons-faces data-material data-weathericons data-octicons
> data-fileicons data-faicons data-alltheicons yasnippet paredit which-key
> exec-path-from-shell org-roam-dailies org-roam-migrate org-roam-log
> org-roam-mode org-roam-capture org-roam-id org-roam-node org-roam-db
> emacsql-sqlite-builtin sqlite org-roam-utils org-roam-compat org-roam
> org-capture org-attach emacsql-sqlite emacsql-sqlite-common emacsql
> emacsql-compiler magit-section cursor-sensor org-ql peg ts org-habit
> org-agenda org-element org-persist xdg org-id org-refile avl-tree
> generator org-duration org-tempo tempo org org-macro org-pcomplete
> org-list org-footnote org-faces org-entities time-date ob-shell shell
> pcomplete ob ob-tangle org-src ob-ref ob-lob ob-table ob-exp ob-comint
> comint ansi-osc ansi-color ob-emacs-lisp ob-core ob-eval org-cycle
> org-table ol org-fold org-fold-core org-keys oc org-loaddefs find-func
> cal-menu calendar cal-loaddefs org-version org-compat org-macs
> format-spec markdown-mode edit-indirect color thingatpt noutline outline
> icons savehist corfu-popupinfo corfu orderless marginalia
> vertico-directory vertico-multiform vertico compat diminish epa derived
> epg rfc6068 epg-config pixel-scroll cua-base ring help-at-pt cus-load
> dired dired-loaddefs rx ample-theme f f-shortdoc dash s cl-extra
> help-mode edmacro kmacro use-package use-package-ensure
> use-package-delight use-package-diminish use-package-bind-key bind-key
> easy-mmode use-package-core alert-autoloads all-the-icons-autoloads
> ample-theme-autoloads apiwrap-autoloads auctex-autoloads tex-site
> basic-mode-autoloads corfu-autoloads dart-mode-autoloads
> dashboard-autoloads diminish-autoloads dockerfile-mode-autoloads
> edit-indirect-autoloads embark-consult-autoloads consult-autoloads
> embark-autoloads emc2-autoloads exec-path-from-shell-autoloads
> flycheck-autoloads flymake-shellcheck-autoloads forge-autoloads
> closql-autoloads ghub-autoloads git-modes-autoloads gntp-autoloads
> go-mode-autoloads graphql-autoloads graphql-mode-autoloads
> helpful-autoloads elisp-refs-autoloads htmlize-autoloads hydra-autoloads
> log4e-autoloads lv-autoloads magit-autoloads pcase git-commit-autoloads
> marginalia-autoloads markdown-mode-autoloads mastodon-autoloads
> mermaid-mode-autoloads multiple-cursors-autoloads orderless-autoloads
> org-bullets-autoloads org-contrib-autoloads org-mru-clock-autoloads
> org-ql-autoloads org-roam-autoloads magit-section-autoloads
> emacsql-autoloads org-super-agenda-autoloads ht-autoloads
> org-tree-slide-autoloads ov-autoloads ox-gfm-autoloads peg-autoloads
> persist-autoloads pkg-info-autoloads epl-autoloads powershell-autoloads
> prettier-autoloads editorconfig-autoloads nvm-autoloads f-autoloads
> iter2-autoloads request-autoloads rg-autoloads rust-mode-autoloads
> sqlite3-autoloads tj3-mode-autoloads transient-autoloads
> tree-sitter-indent-autoloads tree-sitter-autoloads finder-inf
> treesit-auto-autoloads dash-autoloads tsc-autoloads
> typescript-mode-autoloads url-auth vertico-autoloads wgrep-autoloads
> which-key-autoloads with-editor-autoloads info compat-autoloads
> seq-autoloads package browse-url url url-proxy url-privacy url-expand
> url-methods url-history url-cookie generate-lisp-file url-domsuf
> url-util mailcap url-handlers url-parse auth-source cl-seq eieio
> eieio-core cl-macs password-cache json subr-x map byte-opt gv bytecomp
> byte-compile url-vars cl-loaddefs cl-lib rmc iso-transl tooltip cconv
> eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type
> elisp-mode mwheel term/ns-win ns-win ucs-normalize mule-util
> term/common-win tool-bar dnd fontset image regexp-opt fringe
> tabulated-list replace newcomment text-mode lisp-mode prog-mode register
> page tab-bar menu-bar rfn-eshadow isearch easymenu timer select
> scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors
> frame minibuffer nadvice seq simple cl-generic indonesian philippine
> cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
> korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech
> european ethiopic indian cyrillic chinese composite emoji-zwj charscript
> charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure
> cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp
> files window text-properties overlay sha1 md5 base64 format env
> code-pages mule custom widget keymap hashtable-print-readable backquote
> threads kqueue cocoa ns multi-tty make-network-process emacs)
>
> Memory information:
> ((conses 16 2559529 322683)
>  (symbols 48 65117 98)
>  (strings 32 461753 41439)
>  (string-bytes 1 15812751)
>  (vectors 16 154942)
>  (vector-slots 8 2726143 179725)
>  (floats 8 1786 1057)
>  (intervals 56 221145 24719)
>  (buffers 984 154))





^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#67949: 29.1; package-vc-{install,upgrade} modifies tracked files
  2023-12-25 20:11 ` Philip Kaludercic
@ 2023-12-28 21:16   ` Sean Allred
  2023-12-29 14:34     ` Philip Kaludercic
  0 siblings, 1 reply; 6+ messages in thread
From: Sean Allred @ 2023-12-28 21:16 UTC (permalink / raw)
  To: Philip Kaludercic; +Cc: Sean Allred, 67949


Philip Kaludercic <philipk@posteo.net> writes:

> This is intentional, the -pkg.el file shouldn't be tracked in the
> repository, as this is a file that should be generated.  When a package
> is distributed on ELPA, it is generated before the tarball is created,
> and the same logic is applied locally here as well.
>
> That being said, it would be nice if we could be more robust here, as
> many packages sadly continue to make the mistake of beliving the -pkg.el
> file is an authoritative source of information.  My guess is that the
> tricky part will be to ensure that this can be done, independently of
> the involved VC backend...

Ah, I see. I suppose the package headers are the authoritative source?

Even after years of elisp work, I guess I just don't distribute new
packages often enough to remember this :-)

Seems this is discussed in Info node "(elisp) Library Headers".

--
Sean Allred





^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#67949: 29.1; package-vc-{install,upgrade} modifies tracked files
  2023-12-28 21:16   ` Sean Allred
@ 2023-12-29 14:34     ` Philip Kaludercic
  2023-12-29 15:25       ` Sean Allred
  0 siblings, 1 reply; 6+ messages in thread
From: Philip Kaludercic @ 2023-12-29 14:34 UTC (permalink / raw)
  To: Sean Allred; +Cc: 67949

Sean Allred <allred.sean@gmail.com> writes:

> Philip Kaludercic <philipk@posteo.net> writes:
>
>> This is intentional, the -pkg.el file shouldn't be tracked in the
>> repository, as this is a file that should be generated.  When a package
>> is distributed on ELPA, it is generated before the tarball is created,
>> and the same logic is applied locally here as well.
>>
>> That being said, it would be nice if we could be more robust here, as
>> many packages sadly continue to make the mistake of beliving the -pkg.el
>> file is an authoritative source of information.  My guess is that the
>> tricky part will be to ensure that this can be done, independently of
>> the involved VC backend...
>
> Ah, I see. I suppose the package headers are the authoritative source?

Right.

> Even after years of elisp work, I guess I just don't distribute new
> packages often enough to remember this :-)
>
> Seems this is discussed in Info node "(elisp) Library Headers".

So what do you say, is this something where we should try and "do at
least something", or just refer to the Elisp manual and close this
report?

> --
> Sean Allred





^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#67949: 29.1; package-vc-{install,upgrade} modifies tracked files
  2023-12-29 14:34     ` Philip Kaludercic
@ 2023-12-29 15:25       ` Sean Allred
  2023-12-29 17:08         ` Philip Kaludercic
  0 siblings, 1 reply; 6+ messages in thread
From: Sean Allred @ 2023-12-29 15:25 UTC (permalink / raw)
  To: Philip Kaludercic; +Cc: Sean Allred, 67949


Philip Kaludercic <philipk@posteo.net> writes:
> Sean Allred <allred.sean@gmail.com> writes:
>> Even after years of elisp work, I guess I just don't distribute new
>> packages often enough to remember this :-)
>>
>> Seems this is discussed in Info node "(elisp) Library Headers".
>
> So what do you say, is this something where we should try and "do at
> least something", or just refer to the Elisp manual and close this
> report?

Sorry, I could've been more explicit :-) This bug report can be closed.
As you noted, it's intended behavior, and the correct way to do it is
already discussed in the manual.

The only improvement / follow-up I can see would be a note about
`*-pkg.el` files being 'reserved', but I'll leave that to a normal patch
submission.

Thanks for your help :-)

--
Sean Allred





^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#67949: 29.1; package-vc-{install,upgrade} modifies tracked files
  2023-12-29 15:25       ` Sean Allred
@ 2023-12-29 17:08         ` Philip Kaludercic
  0 siblings, 0 replies; 6+ messages in thread
From: Philip Kaludercic @ 2023-12-29 17:08 UTC (permalink / raw)
  To: Sean Allred; +Cc: 67949-done

Sean Allred <allred.sean@gmail.com> writes:

> Philip Kaludercic <philipk@posteo.net> writes:
>> Sean Allred <allred.sean@gmail.com> writes:
>>> Even after years of elisp work, I guess I just don't distribute new
>>> packages often enough to remember this :-)
>>>
>>> Seems this is discussed in Info node "(elisp) Library Headers".
>>
>> So what do you say, is this something where we should try and "do at
>> least something", or just refer to the Elisp manual and close this
>> report?
>
> Sorry, I could've been more explicit :-) This bug report can be closed.
> As you noted, it's intended behavior, and the correct way to do it is
> already discussed in the manual.
>
> The only improvement / follow-up I can see would be a note about
> `*-pkg.el` files being 'reserved', but I'll leave that to a normal patch
> submission.
>
> Thanks for your help :-)

OK, I'll close the bug report then.  Thanks :)

> --
> Sean Allred





^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2023-12-29 17:08 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-12-21  6:52 bug#67949: 29.1; package-vc-{install,upgrade} modifies tracked files Sean Allred
2023-12-25 20:11 ` Philip Kaludercic
2023-12-28 21:16   ` Sean Allred
2023-12-29 14:34     ` Philip Kaludercic
2023-12-29 15:25       ` Sean Allred
2023-12-29 17:08         ` Philip Kaludercic

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).