From: Benjamin Orthen <benjamin@orthen.net>
To: Stefan Monnier <monnier@iro.umontreal.ca>
Cc: Philip Kaludercic <philipk@posteo.net>, 63916@debbugs.gnu.org
Subject: bug#63916: 30.0.50; use-package: changes do not propagate to elpa-devel
Date: Mon, 11 Sep 2023 11:58:45 +0200 [thread overview]
Message-ID: <647c4e7a08e8a4b048b3fe386ac67604d79198c2.camel@orthen.net> (raw)
In-Reply-To: <jwvil8kbhm6.fsf-monnier+emacs@gnu.org>
[-- Attachment #1.1: Type: text/plain, Size: 3869 bytes --]
Hi,
I've sent the mail to assign@gnu.org and request the assignment form.
I modified the changes according to your and Philip's remarks.
On Fri, 2023-09-08 at 15:35 -0400, Stefan Monnier wrote:
> Hi,
>
> > Instead of looking only at the git log of the main package file, we
> > look instead at the git log of all files of the core package.
> > This way, a new devel version is created when any other package
> > file is
> > changed, not just the main file.
>
> It has a minor downside which is that it slows down the overwhelming
> cases (where there are no changes), but it's probably lost in the
> noise,
> so it sounds like a very good idea, thank you.
>
> > Is this the right mailing list to send the patch?
>
> Yes.
>
> [ BTW, Philip's `list-ensure` is called `ensure-list` :-)
> And yes, I think it's OK to use functionality from Emacs-28. ]
>
> > + (when-let
> > + ((core (elpaa--spec-get pkg-spec :core)))
>
> AFAICT this code is only used when `:core` is non-nil, so better
> either
> not test for it redundantly, or do it via `cl-assert`.
Done
>
> > + (unless (member item excludes)
>
> The code looks generally good, but I'm not sure about the one line
> above:
> - I know it won't do the right thing for ERC's "lisp/erc/ChangeLog.*"
> but it's probably harmless (those files basically never change
> anyway).
> - I have the impression that it won't do the right thing for
> `use-package`'s "bind-key.el"
I changed the code to ignore files using the wildcards in :excludes.
This still does not work for "bind-key.el", but IMO this can and should
be solved by changing it to "lisp/use-package/bind-key.el",
similar to how erc is doing it ("lisp/erc/erc-loaddefs.el" ).
(The commentary says: ";; Exclude matches must be against the full
file-name, substring matches don't
;; work unless wildcards are used (e.g. use "etc/*" instead of
"etc/").")
>
> Also, I see you do (concat item file) but you only know that `item`
> is
> a directory, not that it ends with a `/`. Better use `file-name-
> concat`.
With `directory-files-recursively` this has resolved itself.
>
> Last but not least: I think this doesn't quite qualify as "trivial"
> so
> we'd need you to sign the copyright paperwork (well, maybe with some
> of
> the suggested simplifications, it could qualify as "trivial", but
> it's
> easier if you sign the paperwork so we don't have to worry about it,
> especially if you ever submit more code, which I hope you will).
> To that end, please fill the form below and email it to the FSF as
> instructed so they can send you the appropriate paperwork to sign.
>
>
> Stefan
>
>
> Please email the following information to assign@gnu.org, and we
> will send you the assignment form for your past and future changes.
>
> Please use your full legal name (in ASCII characters) as the subject
> line of the message.
> ----------------------------------------------------------------------
> REQUEST: SEND FORM FOR PAST AND FUTURE CHANGES
>
> [What is the name of the program or package you're contributing to?]
> Emacs
>
> [Did you copy any files or text written by someone else in these
> changes?
> Even if that material is free software, we need to know about it.]
>
>
> [Do you have an employer who might have a basis to claim to own
> your changes? Do you attend a school which might make such a claim?]
>
>
> [For the copyright registration, what country are you a citizen of?]
>
>
> [What year were you born?]
>
>
> [Please write your email address here.]
>
>
> [Please write your postal address here.]
>
>
>
>
>
> [Which files have you changed so far, and which new files have you
> written
> so far?]
>
[-- Attachment #1.2: Type: text/html, Size: 6408 bytes --]
[-- Attachment #2: 0001-Add-elpa-core-files-to-get-more-exact-devel-versions.patch --]
[-- Type: text/x-patch, Size: 3624 bytes --]
From 0290e2f2e9bc5a3615dde54c142ae3cb54dc2274 Mon Sep 17 00:00:00 2001
From: Benjamin Orthen <git@orthen.net>
Date: Fri, 8 Sep 2023 12:05:14 +0200
Subject: [PATCH] Add elpa--core-files to get more exact devel-versions for
core packages
---
elpa-admin.el | 54 ++++++++++++++++++++++++++++++++++++++++-----------
1 file changed, 43 insertions(+), 11 deletions(-)
diff --git a/elpa-admin.el b/elpa-admin.el
index 2c2d2aeab7..d9a22b0055 100644
--- a/elpa-admin.el
+++ b/elpa-admin.el
@@ -908,20 +908,52 @@ of the current `process-environment'. Return the modified copy."
0)))
(encode-time (list s mi h d mo y nil nil zs))))
+(defun elpaa--core-files (pkg-spec)
+ "Get a list of core files (and only files) for PKG-SPEC.
+Core folders are recursively searched, excluded files are ignored."
+ (let* ((file-patterns (ensure-list (elpaa--spec-get pkg-spec :core)))
+ (excludes (elpaa--spec-get pkg-spec :excludes))
+ (emacs-repo-root (expand-file-name "emacs"))
+ (default-directory emacs-repo-root)
+ (core-files nil))
+
+ ;; ensure we look at files from a core package
+ (cl-assert file-patterns)
+
+ ;; we look at each file or files in folder and add them
+ ;; to core-files
+ (dolist (item file-patterns)
+ (if (file-directory-p item)
+ (setq core-files (append core-files (directory-files-recursively item ".*")))
+ (push item core-files)))
+
+ ;; remove all files which match a wildcard in the excludes
+ (setq core-files (cl-remove-if
+ (lambda (file-name)
+ (seq-some
+ (lambda (wildcard)
+ (string-match-p (wildcard-to-regexp wildcard) file-name))
+ excludes))
+ core-files))
+ core-files))
+
(defun elpaa--get-devel-version (dir pkg-spec)
"Compute the date-based pseudo-version used for devel builds."
- (let* ((ftn (file-truename ;; Follow symlinks!
- (expand-file-name (elpaa--main-file pkg-spec) dir)))
- (default-directory (file-name-directory ftn))
- (gitdate
+ (let* ((gitdate
(with-temp-buffer
- (if (plist-get (cdr pkg-spec) :core)
- ;; For core packages, don't use the date of the last
- ;; commit to the branch, but that of the last commit
- ;; to the main file.
- (elpaa--call t "git" "log" "--pretty=format:%cI" "--no-patch"
- "-1" "--" (file-name-nondirectory ftn))
- (elpaa--call t "git" "show" "--pretty=format:%cI" "--no-patch"))
+ (if (plist-get (cdr pkg-spec) :core)
+ (let
+ ((core-files (elpaa--core-files pkg-spec))
+ (default-directory (expand-file-name "emacs")))
+ ;; For core packages, don't use the date of the last
+ ;; commit to the branch, but that of the last commit
+ ;; to the core files.
+ (apply #'elpaa--call t "git" "log" "--pretty=format:%cI" "--no-patch"
+ "-1" "--" core-files))
+ (let* ((ftn (file-truename ;; Follow symlinks!
+ (expand-file-name (elpaa--main-file pkg-spec) dir)))
+ (default-directory (file-name-directory ftn)))
+ (elpaa--call t "git" "show" "--pretty=format:%cI" "--no-patch")))
(buffer-string)))
(verdate
;; Convert Git's date into something that looks like a version number.
--
2.41.0
next prev parent reply other threads:[~2023-09-11 9:58 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-05 21:21 bug#63916: 30.0.50; use-package: changes do not propagate to elpa-devel Benjamin Orthen
2023-06-10 9:03 ` Philip Kaludercic
2023-06-10 16:01 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-06-11 10:34 ` Philip Kaludercic
2023-06-11 15:55 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-06-11 16:37 ` Philip Kaludercic
2023-06-11 16:55 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-06-11 17:32 ` Benjamin Orthen
2023-09-08 10:55 ` Benjamin Orthen
2023-09-08 17:14 ` Philip Kaludercic
2023-09-08 19:35 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-09-11 9:58 ` Benjamin Orthen [this message]
2023-09-27 10:53 ` Benjamin Orthen
2023-09-28 19:52 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=647c4e7a08e8a4b048b3fe386ac67604d79198c2.camel@orthen.net \
--to=benjamin@orthen.net \
--cc=63916@debbugs.gnu.org \
--cc=monnier@iro.umontreal.ca \
--cc=philipk@posteo.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.